From 768fb8b49eca2b4840463fc54011d6d327d36ed7 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 00:29:11 +0100 Subject: [PATCH 1/4] Remove bison binaries see issue #103 --- tools/bison.exe | Bin 513536 -> 0 bytes tools/data/Makefile.am | 30 - tools/data/Makefile.in | 1639 ---------------- tools/data/README | 70 - tools/data/bison.m4 | 610 ------ tools/data/c++-skel.m4 | 26 - tools/data/c++.m4 | 205 -- tools/data/c-like.m4 | 44 - tools/data/c-skel.m4 | 26 - tools/data/c.m4 | 722 ------- tools/data/glr.c | 2589 -------------------------- tools/data/glr.cc | 346 ---- tools/data/java-skel.m4 | 26 - tools/data/java.m4 | 304 --- tools/data/lalr1.cc | 1143 ------------ tools/data/lalr1.java | 927 --------- tools/data/location.cc | 299 --- tools/data/m4sugar/foreach.m4 | 362 ---- tools/data/m4sugar/m4sugar.m4 | 3301 --------------------------------- tools/data/stack.hh | 121 -- tools/data/xslt/bison.xsl | 105 -- tools/data/xslt/xml2dot.xsl | 397 ---- tools/data/xslt/xml2text.xsl | 569 ------ tools/data/xslt/xml2xhtml.xsl | 745 -------- tools/data/yacc.c | 2065 --------------------- 25 files changed, 16671 deletions(-) delete mode 100755 tools/bison.exe delete mode 100644 tools/data/Makefile.am delete mode 100644 tools/data/Makefile.in delete mode 100644 tools/data/README delete mode 100644 tools/data/bison.m4 delete mode 100644 tools/data/c++-skel.m4 delete mode 100644 tools/data/c++.m4 delete mode 100644 tools/data/c-like.m4 delete mode 100644 tools/data/c-skel.m4 delete mode 100644 tools/data/c.m4 delete mode 100644 tools/data/glr.c delete mode 100644 tools/data/glr.cc delete mode 100644 tools/data/java-skel.m4 delete mode 100644 tools/data/java.m4 delete mode 100644 tools/data/lalr1.cc delete mode 100644 tools/data/lalr1.java delete mode 100644 tools/data/location.cc delete mode 100644 tools/data/m4sugar/foreach.m4 delete mode 100644 tools/data/m4sugar/m4sugar.m4 delete mode 100644 tools/data/stack.hh delete mode 100644 tools/data/xslt/bison.xsl delete mode 100644 tools/data/xslt/xml2dot.xsl delete mode 100644 tools/data/xslt/xml2text.xsl delete mode 100644 tools/data/xslt/xml2xhtml.xsl delete mode 100644 tools/data/yacc.c diff --git a/tools/bison.exe b/tools/bison.exe deleted file mode 100755 index bdc1101efbbda2be1841ae9b2d4bd52a711d49e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513536 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

m0}_q170Mj)^_bN+92aGX^@N3Ed8v8)rXPS69X( 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 diff --git a/tools/data/Makefile.am b/tools/data/Makefile.am deleted file mode 100644 index e209325c..00000000 --- a/tools/data/Makefile.am +++ /dev/null @@ -1,30 +0,0 @@ -## Copyright (C) 2002, 2005-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -dist_pkgdata_DATA = README bison.m4 \ - c-like.m4 \ - c-skel.m4 c.m4 yacc.c glr.c \ - c++-skel.m4 c++.m4 location.cc lalr1.cc glr.cc stack.hh \ - java-skel.m4 java.m4 lalr1.java - -m4sugardir = $(pkgdatadir)/m4sugar -dist_m4sugar_DATA = m4sugar/m4sugar.m4 m4sugar/foreach.m4 - -xsltdir = $(pkgdatadir)/xslt -dist_xslt_DATA = \ - xslt/bison.xsl \ - xslt/xml2dot.xsl \ - xslt/xml2text.xsl \ - xslt/xml2xhtml.xsl diff --git a/tools/data/Makefile.in b/tools/data/Makefile.in deleted file mode 100644 index a15e670b..00000000 --- a/tools/data/Makefile.in +++ /dev/null @@ -1,1639 +0,0 @@ -# Makefile.in generated by automake 1.12.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2012 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = data -DIST_COMMON = README $(dist_m4sugar_DATA) $(dist_pkgdata_DATA) \ - $(dist_xslt_DATA) $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ - $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/asm-underscore.m4 \ - $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/bison-i18n.m4 \ - $(top_srcdir)/m4/c-working.m4 $(top_srcdir)/m4/calloc.m4 \ - $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \ - $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \ - $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \ - $(top_srcdir)/m4/cxx.m4 $(top_srcdir)/m4/dirname.m4 \ - $(top_srcdir)/m4/dmalloc.m4 \ - $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ - $(top_srcdir)/m4/environ.m4 $(top_srcdir)/m4/errno_h.m4 \ - $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \ - $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \ - $(top_srcdir)/m4/extensions.m4 \ - $(top_srcdir)/m4/extern-inline.m4 \ - $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \ - $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ - $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \ - $(top_srcdir)/m4/fopen.m4 $(top_srcdir)/m4/fpending.m4 \ - $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \ - $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \ - $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \ - $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \ - $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ - $(top_srcdir)/m4/gnulib-common.m4 \ - $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \ - $(top_srcdir)/m4/include_next.m4 \ - $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ - $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \ - $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \ - $(top_srcdir)/m4/isnand.m4 $(top_srcdir)/m4/isnanf.m4 \ - $(top_srcdir)/m4/isnanl.m4 $(top_srcdir)/m4/iswblank.m4 \ - $(top_srcdir)/m4/javacomp.m4 $(top_srcdir)/m4/javaexec.m4 \ - $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexp.m4 \ - $(top_srcdir)/m4/ldexpl.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libunistring-base.m4 \ - $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \ - $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \ - $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/m4.m4 $(top_srcdir)/m4/malloc.m4 \ - $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbchar.m4 \ - $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \ - $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ - $(top_srcdir)/m4/mbswidth.m4 $(top_srcdir)/m4/memchr.m4 \ - $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/mode_t.m4 \ - $(top_srcdir)/m4/msvc-inval.m4 \ - $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ - $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \ - $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \ - $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \ - $(top_srcdir)/m4/printf-frexp.m4 \ - $(top_srcdir)/m4/printf-frexpl.m4 \ - $(top_srcdir)/m4/printf-posix-rpl.m4 \ - $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \ - $(top_srcdir)/m4/raise.m4 $(top_srcdir)/m4/rawmemchr.m4 \ - $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/sched_h.m4 \ - $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ - $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ - $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ - $(top_srcdir)/m4/size_max.m4 \ - $(top_srcdir)/m4/snprintf-posix.m4 \ - $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/spawn-pipe.m4 \ - $(top_srcdir)/m4/spawn_h.m4 $(top_srcdir)/m4/sprintf-posix.m4 \ - $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat.m4 \ - $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \ - $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ - $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ - $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strchrnul.m4 \ - $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \ - $(top_srcdir)/m4/strerror_r.m4 $(top_srcdir)/m4/string_h.m4 \ - $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ - $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strverscmp.m4 \ - $(top_srcdir)/m4/sys_socket_h.m4 \ - $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ - $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/threadlib.m4 \ - $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/timevar.m4 \ - $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \ - $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/vasnprintf.m4 \ - $(top_srcdir)/m4/vfprintf-posix.m4 \ - $(top_srcdir)/m4/vsnprintf-posix.m4 \ - $(top_srcdir)/m4/vsnprintf.m4 \ - $(top_srcdir)/m4/vsprintf-posix.m4 \ - $(top_srcdir)/m4/wait-process.m4 $(top_srcdir)/m4/waitpid.m4 \ - $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ - $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ - $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \ - $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \ - $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrndup.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(m4sugardir)" "$(DESTDIR)$(pkgdatadir)" \ - "$(DESTDIR)$(xsltdir)" -DATA = $(dist_m4sugar_DATA) $(dist_pkgdata_DATA) $(dist_xslt_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkglibexecdir = @pkglibexecdir@ -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -ALLOCA_H = @ALLOCA_H@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ -AR = @AR@ -ARFLAGS = @ARFLAGS@ -ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOM4TE = @AUTOM4TE@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BISON_CXX_WORKS = @BISON_CXX_WORKS@ -BISON_C_WORKS = @BISON_C_WORKS@ -BISON_LOCALEDIR = @BISON_LOCALEDIR@ -BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ -BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ -BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ -BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ -BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CLASSPATH = @CLASSPATH@ -CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@ -CONFIG_INCLUDE = @CONFIG_INCLUDE@ -CONF_JAVA = @CONF_JAVA@ -CONF_JAVAC = @CONF_JAVAC@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@ -CYGPATH_W = @CYGPATH_W@ -C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DOT = @DOT@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ -EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ -ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ -ENOLINK_VALUE = @ENOLINK_VALUE@ -EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ -EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ -ERRNO_H = @ERRNO_H@ -EXEEXT = @EXEEXT@ -FLOAT_H = @FLOAT_H@ -GCC = @GCC@ -GETOPT_H = @GETOPT_H@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GNULIB_ACOSF = @GNULIB_ACOSF@ -GNULIB_ACOSL = @GNULIB_ACOSL@ -GNULIB_ASINF = @GNULIB_ASINF@ -GNULIB_ASINL = @GNULIB_ASINL@ -GNULIB_ATAN2F = @GNULIB_ATAN2F@ -GNULIB_ATANF = @GNULIB_ATANF@ -GNULIB_ATANL = @GNULIB_ATANL@ -GNULIB_ATOLL = @GNULIB_ATOLL@ -GNULIB_BTOWC = @GNULIB_BTOWC@ -GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ -GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ -GNULIB_CBRT = @GNULIB_CBRT@ -GNULIB_CBRTF = @GNULIB_CBRTF@ -GNULIB_CBRTL = @GNULIB_CBRTL@ -GNULIB_CEIL = @GNULIB_CEIL@ -GNULIB_CEILF = @GNULIB_CEILF@ -GNULIB_CEILL = @GNULIB_CEILL@ -GNULIB_CHDIR = @GNULIB_CHDIR@ -GNULIB_CHOWN = @GNULIB_CHOWN@ -GNULIB_CLOSE = @GNULIB_CLOSE@ -GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ -GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ -GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ -GNULIB_COSF = @GNULIB_COSF@ -GNULIB_COSHF = @GNULIB_COSHF@ -GNULIB_COSL = @GNULIB_COSL@ -GNULIB_DPRINTF = @GNULIB_DPRINTF@ -GNULIB_DUP = @GNULIB_DUP@ -GNULIB_DUP2 = @GNULIB_DUP2@ -GNULIB_DUP3 = @GNULIB_DUP3@ -GNULIB_ENVIRON = @GNULIB_ENVIRON@ -GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ -GNULIB_EXP2 = @GNULIB_EXP2@ -GNULIB_EXP2F = @GNULIB_EXP2F@ -GNULIB_EXP2L = @GNULIB_EXP2L@ -GNULIB_EXPF = @GNULIB_EXPF@ -GNULIB_EXPL = @GNULIB_EXPL@ -GNULIB_EXPM1 = @GNULIB_EXPM1@ -GNULIB_EXPM1F = @GNULIB_EXPM1F@ -GNULIB_EXPM1L = @GNULIB_EXPM1L@ -GNULIB_FABSF = @GNULIB_FABSF@ -GNULIB_FABSL = @GNULIB_FABSL@ -GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ -GNULIB_FCHDIR = @GNULIB_FCHDIR@ -GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ -GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ -GNULIB_FCLOSE = @GNULIB_FCLOSE@ -GNULIB_FCNTL = @GNULIB_FCNTL@ -GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ -GNULIB_FDOPEN = @GNULIB_FDOPEN@ -GNULIB_FFLUSH = @GNULIB_FFLUSH@ -GNULIB_FFSL = @GNULIB_FFSL@ -GNULIB_FFSLL = @GNULIB_FFSLL@ -GNULIB_FGETC = @GNULIB_FGETC@ -GNULIB_FGETS = @GNULIB_FGETS@ -GNULIB_FLOOR = @GNULIB_FLOOR@ -GNULIB_FLOORF = @GNULIB_FLOORF@ -GNULIB_FLOORL = @GNULIB_FLOORL@ -GNULIB_FMA = @GNULIB_FMA@ -GNULIB_FMAF = @GNULIB_FMAF@ -GNULIB_FMAL = @GNULIB_FMAL@ -GNULIB_FMOD = @GNULIB_FMOD@ -GNULIB_FMODF = @GNULIB_FMODF@ -GNULIB_FMODL = @GNULIB_FMODL@ -GNULIB_FOPEN = @GNULIB_FOPEN@ -GNULIB_FPRINTF = @GNULIB_FPRINTF@ -GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ -GNULIB_FPURGE = @GNULIB_FPURGE@ -GNULIB_FPUTC = @GNULIB_FPUTC@ -GNULIB_FPUTS = @GNULIB_FPUTS@ -GNULIB_FREAD = @GNULIB_FREAD@ -GNULIB_FREOPEN = @GNULIB_FREOPEN@ -GNULIB_FREXP = @GNULIB_FREXP@ -GNULIB_FREXPF = @GNULIB_FREXPF@ -GNULIB_FREXPL = @GNULIB_FREXPL@ -GNULIB_FSCANF = @GNULIB_FSCANF@ -GNULIB_FSEEK = @GNULIB_FSEEK@ -GNULIB_FSEEKO = @GNULIB_FSEEKO@ -GNULIB_FSTAT = @GNULIB_FSTAT@ -GNULIB_FSTATAT = @GNULIB_FSTATAT@ -GNULIB_FSYNC = @GNULIB_FSYNC@ -GNULIB_FTELL = @GNULIB_FTELL@ -GNULIB_FTELLO = @GNULIB_FTELLO@ -GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ -GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ -GNULIB_FWRITE = @GNULIB_FWRITE@ -GNULIB_GETC = @GNULIB_GETC@ -GNULIB_GETCHAR = @GNULIB_GETCHAR@ -GNULIB_GETCWD = @GNULIB_GETCWD@ -GNULIB_GETDELIM = @GNULIB_GETDELIM@ -GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ -GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ -GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ -GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ -GNULIB_GETLINE = @GNULIB_GETLINE@ -GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ -GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ -GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ -GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ -GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ -GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ -GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ -GNULIB_GRANTPT = @GNULIB_GRANTPT@ -GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ -GNULIB_HYPOT = @GNULIB_HYPOT@ -GNULIB_HYPOTF = @GNULIB_HYPOTF@ -GNULIB_HYPOTL = @GNULIB_HYPOTL@ -GNULIB_ILOGB = @GNULIB_ILOGB@ -GNULIB_ILOGBF = @GNULIB_ILOGBF@ -GNULIB_ILOGBL = @GNULIB_ILOGBL@ -GNULIB_IMAXABS = @GNULIB_IMAXABS@ -GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ -GNULIB_ISATTY = @GNULIB_ISATTY@ -GNULIB_ISFINITE = @GNULIB_ISFINITE@ -GNULIB_ISINF = @GNULIB_ISINF@ -GNULIB_ISNAN = @GNULIB_ISNAN@ -GNULIB_ISNAND = @GNULIB_ISNAND@ -GNULIB_ISNANF = @GNULIB_ISNANF@ -GNULIB_ISNANL = @GNULIB_ISNANL@ -GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ -GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ -GNULIB_LCHMOD = @GNULIB_LCHMOD@ -GNULIB_LCHOWN = @GNULIB_LCHOWN@ -GNULIB_LDEXPF = @GNULIB_LDEXPF@ -GNULIB_LDEXPL = @GNULIB_LDEXPL@ -GNULIB_LINK = @GNULIB_LINK@ -GNULIB_LINKAT = @GNULIB_LINKAT@ -GNULIB_LOG = @GNULIB_LOG@ -GNULIB_LOG10 = @GNULIB_LOG10@ -GNULIB_LOG10F = @GNULIB_LOG10F@ -GNULIB_LOG10L = @GNULIB_LOG10L@ -GNULIB_LOG1P = @GNULIB_LOG1P@ -GNULIB_LOG1PF = @GNULIB_LOG1PF@ -GNULIB_LOG1PL = @GNULIB_LOG1PL@ -GNULIB_LOG2 = @GNULIB_LOG2@ -GNULIB_LOG2F = @GNULIB_LOG2F@ -GNULIB_LOG2L = @GNULIB_LOG2L@ -GNULIB_LOGB = @GNULIB_LOGB@ -GNULIB_LOGBF = @GNULIB_LOGBF@ -GNULIB_LOGBL = @GNULIB_LOGBL@ -GNULIB_LOGF = @GNULIB_LOGF@ -GNULIB_LOGL = @GNULIB_LOGL@ -GNULIB_LSEEK = @GNULIB_LSEEK@ -GNULIB_LSTAT = @GNULIB_LSTAT@ -GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ -GNULIB_MBRLEN = @GNULIB_MBRLEN@ -GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ -GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ -GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ -GNULIB_MBSCHR = @GNULIB_MBSCHR@ -GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ -GNULIB_MBSINIT = @GNULIB_MBSINIT@ -GNULIB_MBSLEN = @GNULIB_MBSLEN@ -GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ -GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ -GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ -GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ -GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ -GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ -GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ -GNULIB_MBSSEP = @GNULIB_MBSSEP@ -GNULIB_MBSSPN = @GNULIB_MBSSPN@ -GNULIB_MBSSTR = @GNULIB_MBSSTR@ -GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ -GNULIB_MBTOWC = @GNULIB_MBTOWC@ -GNULIB_MEMCHR = @GNULIB_MEMCHR@ -GNULIB_MEMMEM = @GNULIB_MEMMEM@ -GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ -GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ -GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ -GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ -GNULIB_MKFIFO = @GNULIB_MKFIFO@ -GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ -GNULIB_MKNOD = @GNULIB_MKNOD@ -GNULIB_MKNODAT = @GNULIB_MKNODAT@ -GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ -GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ -GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ -GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ -GNULIB_MKTIME = @GNULIB_MKTIME@ -GNULIB_MODF = @GNULIB_MODF@ -GNULIB_MODFF = @GNULIB_MODFF@ -GNULIB_MODFL = @GNULIB_MODFL@ -GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ -GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ -GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ -GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ -GNULIB_OPEN = @GNULIB_OPEN@ -GNULIB_OPENAT = @GNULIB_OPENAT@ -GNULIB_PCLOSE = @GNULIB_PCLOSE@ -GNULIB_PERROR = @GNULIB_PERROR@ -GNULIB_PIPE = @GNULIB_PIPE@ -GNULIB_PIPE2 = @GNULIB_PIPE2@ -GNULIB_POPEN = @GNULIB_POPEN@ -GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ -GNULIB_POSIX_SPAWN = @GNULIB_POSIX_SPAWN@ -GNULIB_POSIX_SPAWNATTR_DESTROY = @GNULIB_POSIX_SPAWNATTR_DESTROY@ -GNULIB_POSIX_SPAWNATTR_GETFLAGS = @GNULIB_POSIX_SPAWNATTR_GETFLAGS@ -GNULIB_POSIX_SPAWNATTR_GETPGROUP = @GNULIB_POSIX_SPAWNATTR_GETPGROUP@ -GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM@ -GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY@ -GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT@ -GNULIB_POSIX_SPAWNATTR_GETSIGMASK = @GNULIB_POSIX_SPAWNATTR_GETSIGMASK@ -GNULIB_POSIX_SPAWNATTR_INIT = @GNULIB_POSIX_SPAWNATTR_INIT@ -GNULIB_POSIX_SPAWNATTR_SETFLAGS = @GNULIB_POSIX_SPAWNATTR_SETFLAGS@ -GNULIB_POSIX_SPAWNATTR_SETPGROUP = @GNULIB_POSIX_SPAWNATTR_SETPGROUP@ -GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM@ -GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY@ -GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT@ -GNULIB_POSIX_SPAWNATTR_SETSIGMASK = @GNULIB_POSIX_SPAWNATTR_SETSIGMASK@ -GNULIB_POSIX_SPAWNP = @GNULIB_POSIX_SPAWNP@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ -GNULIB_POWF = @GNULIB_POWF@ -GNULIB_PREAD = @GNULIB_PREAD@ -GNULIB_PRINTF = @GNULIB_PRINTF@ -GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ -GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@ -GNULIB_PTSNAME = @GNULIB_PTSNAME@ -GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ -GNULIB_PUTC = @GNULIB_PUTC@ -GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ -GNULIB_PUTENV = @GNULIB_PUTENV@ -GNULIB_PUTS = @GNULIB_PUTS@ -GNULIB_PWRITE = @GNULIB_PWRITE@ -GNULIB_RAISE = @GNULIB_RAISE@ -GNULIB_RANDOM = @GNULIB_RANDOM@ -GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ -GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ -GNULIB_READ = @GNULIB_READ@ -GNULIB_READLINK = @GNULIB_READLINK@ -GNULIB_READLINKAT = @GNULIB_READLINKAT@ -GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ -GNULIB_REALPATH = @GNULIB_REALPATH@ -GNULIB_REMAINDER = @GNULIB_REMAINDER@ -GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ -GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ -GNULIB_REMOVE = @GNULIB_REMOVE@ -GNULIB_RENAME = @GNULIB_RENAME@ -GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ -GNULIB_RINT = @GNULIB_RINT@ -GNULIB_RINTF = @GNULIB_RINTF@ -GNULIB_RINTL = @GNULIB_RINTL@ -GNULIB_RMDIR = @GNULIB_RMDIR@ -GNULIB_ROUND = @GNULIB_ROUND@ -GNULIB_ROUNDF = @GNULIB_ROUNDF@ -GNULIB_ROUNDL = @GNULIB_ROUNDL@ -GNULIB_RPMATCH = @GNULIB_RPMATCH@ -GNULIB_SCANF = @GNULIB_SCANF@ -GNULIB_SETENV = @GNULIB_SETENV@ -GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ -GNULIB_SIGACTION = @GNULIB_SIGACTION@ -GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ -GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ -GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ -GNULIB_SINF = @GNULIB_SINF@ -GNULIB_SINHF = @GNULIB_SINHF@ -GNULIB_SINL = @GNULIB_SINL@ -GNULIB_SLEEP = @GNULIB_SLEEP@ -GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ -GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ -GNULIB_SQRTF = @GNULIB_SQRTF@ -GNULIB_SQRTL = @GNULIB_SQRTL@ -GNULIB_STAT = @GNULIB_STAT@ -GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ -GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ -GNULIB_STPCPY = @GNULIB_STPCPY@ -GNULIB_STPNCPY = @GNULIB_STPNCPY@ -GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ -GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ -GNULIB_STRDUP = @GNULIB_STRDUP@ -GNULIB_STRERROR = @GNULIB_STRERROR@ -GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ -GNULIB_STRNCAT = @GNULIB_STRNCAT@ -GNULIB_STRNDUP = @GNULIB_STRNDUP@ -GNULIB_STRNLEN = @GNULIB_STRNLEN@ -GNULIB_STRPBRK = @GNULIB_STRPBRK@ -GNULIB_STRPTIME = @GNULIB_STRPTIME@ -GNULIB_STRSEP = @GNULIB_STRSEP@ -GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ -GNULIB_STRSTR = @GNULIB_STRSTR@ -GNULIB_STRTOD = @GNULIB_STRTOD@ -GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ -GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ -GNULIB_STRTOLL = @GNULIB_STRTOLL@ -GNULIB_STRTOULL = @GNULIB_STRTOULL@ -GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ -GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ -GNULIB_SYMLINK = @GNULIB_SYMLINK@ -GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ -GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ -GNULIB_TANF = @GNULIB_TANF@ -GNULIB_TANHF = @GNULIB_TANHF@ -GNULIB_TANL = @GNULIB_TANL@ -GNULIB_TIMEGM = @GNULIB_TIMEGM@ -GNULIB_TIME_R = @GNULIB_TIME_R@ -GNULIB_TMPFILE = @GNULIB_TMPFILE@ -GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ -GNULIB_TRUNC = @GNULIB_TRUNC@ -GNULIB_TRUNCF = @GNULIB_TRUNCF@ -GNULIB_TRUNCL = @GNULIB_TRUNCL@ -GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ -GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ -GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ -GNULIB_UNLINK = @GNULIB_UNLINK@ -GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ -GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ -GNULIB_UNSETENV = @GNULIB_UNSETENV@ -GNULIB_USLEEP = @GNULIB_USLEEP@ -GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ -GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ -GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ -GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ -GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ -GNULIB_VFSCANF = @GNULIB_VFSCANF@ -GNULIB_VPRINTF = @GNULIB_VPRINTF@ -GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ -GNULIB_VSCANF = @GNULIB_VSCANF@ -GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ -GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ -GNULIB_WAITPID = @GNULIB_WAITPID@ -GNULIB_WCPCPY = @GNULIB_WCPCPY@ -GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ -GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ -GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ -GNULIB_WCSCAT = @GNULIB_WCSCAT@ -GNULIB_WCSCHR = @GNULIB_WCSCHR@ -GNULIB_WCSCMP = @GNULIB_WCSCMP@ -GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ -GNULIB_WCSCPY = @GNULIB_WCSCPY@ -GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ -GNULIB_WCSDUP = @GNULIB_WCSDUP@ -GNULIB_WCSLEN = @GNULIB_WCSLEN@ -GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ -GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ -GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ -GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ -GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ -GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ -GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ -GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ -GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ -GNULIB_WCSSPN = @GNULIB_WCSSPN@ -GNULIB_WCSSTR = @GNULIB_WCSSTR@ -GNULIB_WCSTOK = @GNULIB_WCSTOK@ -GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ -GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ -GNULIB_WCTOB = @GNULIB_WCTOB@ -GNULIB_WCTOMB = @GNULIB_WCTOMB@ -GNULIB_WCTRANS = @GNULIB_WCTRANS@ -GNULIB_WCTYPE = @GNULIB_WCTYPE@ -GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ -GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ -GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ -GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ -GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ -GNULIB_WMEMSET = @GNULIB_WMEMSET@ -GNULIB_WRITE = @GNULIB_WRITE@ -GNULIB__EXIT = @GNULIB__EXIT@ -GREP = @GREP@ -HAVE_ACOSF = @HAVE_ACOSF@ -HAVE_ACOSL = @HAVE_ACOSL@ -HAVE_ASINF = @HAVE_ASINF@ -HAVE_ASINL = @HAVE_ASINL@ -HAVE_ATAN2F = @HAVE_ATAN2F@ -HAVE_ATANF = @HAVE_ATANF@ -HAVE_ATANL = @HAVE_ATANL@ -HAVE_ATOLL = @HAVE_ATOLL@ -HAVE_BTOWC = @HAVE_BTOWC@ -HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ -HAVE_CBRT = @HAVE_CBRT@ -HAVE_CBRTF = @HAVE_CBRTF@ -HAVE_CBRTL = @HAVE_CBRTL@ -HAVE_CHOWN = @HAVE_CHOWN@ -HAVE_COPYSIGN = @HAVE_COPYSIGN@ -HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ -HAVE_COSF = @HAVE_COSF@ -HAVE_COSHF = @HAVE_COSHF@ -HAVE_COSL = @HAVE_COSL@ -HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ -HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ -HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ -HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ -HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ -HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ -HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ -HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ -HAVE_DECL_COSL = @HAVE_DECL_COSL@ -HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ -HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ -HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ -HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ -HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ -HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ -HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ -HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ -HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ -HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ -HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ -HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ -HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ -HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ -HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ -HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ -HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ -HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ -HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ -HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ -HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ -HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ -HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ -HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ -HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ -HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ -HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ -HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ -HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ -HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ -HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ -HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ -HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ -HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ -HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ -HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ -HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ -HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ -HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ -HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ -HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ -HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ -HAVE_DECL_SINL = @HAVE_DECL_SINL@ -HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ -HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ -HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ -HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ -HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ -HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ -HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ -HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ -HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ -HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ -HAVE_DECL_TANL = @HAVE_DECL_TANL@ -HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ -HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ -HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ -HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ -HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ -HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ -HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ -HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ -HAVE_DPRINTF = @HAVE_DPRINTF@ -HAVE_DUP2 = @HAVE_DUP2@ -HAVE_DUP3 = @HAVE_DUP3@ -HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ -HAVE_EXPF = @HAVE_EXPF@ -HAVE_EXPL = @HAVE_EXPL@ -HAVE_EXPM1 = @HAVE_EXPM1@ -HAVE_EXPM1F = @HAVE_EXPM1F@ -HAVE_FABSF = @HAVE_FABSF@ -HAVE_FABSL = @HAVE_FABSL@ -HAVE_FACCESSAT = @HAVE_FACCESSAT@ -HAVE_FCHDIR = @HAVE_FCHDIR@ -HAVE_FCHMODAT = @HAVE_FCHMODAT@ -HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ -HAVE_FCNTL = @HAVE_FCNTL@ -HAVE_FDATASYNC = @HAVE_FDATASYNC@ -HAVE_FEATURES_H = @HAVE_FEATURES_H@ -HAVE_FFSL = @HAVE_FFSL@ -HAVE_FFSLL = @HAVE_FFSLL@ -HAVE_FMA = @HAVE_FMA@ -HAVE_FMAF = @HAVE_FMAF@ -HAVE_FMAL = @HAVE_FMAL@ -HAVE_FMODF = @HAVE_FMODF@ -HAVE_FMODL = @HAVE_FMODL@ -HAVE_FREXPF = @HAVE_FREXPF@ -HAVE_FSEEKO = @HAVE_FSEEKO@ -HAVE_FSTATAT = @HAVE_FSTATAT@ -HAVE_FSYNC = @HAVE_FSYNC@ -HAVE_FTELLO = @HAVE_FTELLO@ -HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ -HAVE_FUTIMENS = @HAVE_FUTIMENS@ -HAVE_GCJ_C = @HAVE_GCJ_C@ -HAVE_GCJ_IN_PATH = @HAVE_GCJ_IN_PATH@ -HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ -HAVE_GETGROUPS = @HAVE_GETGROUPS@ -HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ -HAVE_GETLOGIN = @HAVE_GETLOGIN@ -HAVE_GETOPT_H = @HAVE_GETOPT_H@ -HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ -HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ -HAVE_GIJ = @HAVE_GIJ@ -HAVE_GIJ_IN_PATH = @HAVE_GIJ_IN_PATH@ -HAVE_GRANTPT = @HAVE_GRANTPT@ -HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ -HAVE_HYPOTF = @HAVE_HYPOTF@ -HAVE_HYPOTL = @HAVE_HYPOTL@ -HAVE_ILOGB = @HAVE_ILOGB@ -HAVE_ILOGBF = @HAVE_ILOGBF@ -HAVE_ILOGBL = @HAVE_ILOGBL@ -HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ -HAVE_ISNAND = @HAVE_ISNAND@ -HAVE_ISNANF = @HAVE_ISNANF@ -HAVE_ISNANL = @HAVE_ISNANL@ -HAVE_ISWBLANK = @HAVE_ISWBLANK@ -HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ -HAVE_JAVA = @HAVE_JAVA@ -HAVE_JAVAC = @HAVE_JAVAC@ -HAVE_JAVAC_ENVVAR = @HAVE_JAVAC_ENVVAR@ -HAVE_JAVAC_IN_PATH = @HAVE_JAVAC_IN_PATH@ -HAVE_JAVA_ENVVAR = @HAVE_JAVA_ENVVAR@ -HAVE_JAVA_IN_PATH = @HAVE_JAVA_IN_PATH@ -HAVE_JIKES = @HAVE_JIKES@ -HAVE_JIKES_IN_PATH = @HAVE_JIKES_IN_PATH@ -HAVE_JRE = @HAVE_JRE@ -HAVE_JRE_IN_PATH = @HAVE_JRE_IN_PATH@ -HAVE_JVIEW = @HAVE_JVIEW@ -HAVE_JVIEW_IN_PATH = @HAVE_JVIEW_IN_PATH@ -HAVE_LCHMOD = @HAVE_LCHMOD@ -HAVE_LCHOWN = @HAVE_LCHOWN@ -HAVE_LDEXPF = @HAVE_LDEXPF@ -HAVE_LINK = @HAVE_LINK@ -HAVE_LINKAT = @HAVE_LINKAT@ -HAVE_LOG10F = @HAVE_LOG10F@ -HAVE_LOG10L = @HAVE_LOG10L@ -HAVE_LOG1P = @HAVE_LOG1P@ -HAVE_LOG1PF = @HAVE_LOG1PF@ -HAVE_LOG1PL = @HAVE_LOG1PL@ -HAVE_LOGBF = @HAVE_LOGBF@ -HAVE_LOGBL = @HAVE_LOGBL@ -HAVE_LOGF = @HAVE_LOGF@ -HAVE_LOGL = @HAVE_LOGL@ -HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ -HAVE_LSTAT = @HAVE_LSTAT@ -HAVE_MBRLEN = @HAVE_MBRLEN@ -HAVE_MBRTOWC = @HAVE_MBRTOWC@ -HAVE_MBSINIT = @HAVE_MBSINIT@ -HAVE_MBSLEN = @HAVE_MBSLEN@ -HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ -HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ -HAVE_MEMCHR = @HAVE_MEMCHR@ -HAVE_MEMPCPY = @HAVE_MEMPCPY@ -HAVE_MKDIRAT = @HAVE_MKDIRAT@ -HAVE_MKDTEMP = @HAVE_MKDTEMP@ -HAVE_MKFIFO = @HAVE_MKFIFO@ -HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ -HAVE_MKNOD = @HAVE_MKNOD@ -HAVE_MKNODAT = @HAVE_MKNODAT@ -HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ -HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ -HAVE_MKSTEMP = @HAVE_MKSTEMP@ -HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ -HAVE_MODFF = @HAVE_MODFF@ -HAVE_MODFL = @HAVE_MODFL@ -HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ -HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ -HAVE_OPENAT = @HAVE_OPENAT@ -HAVE_OS_H = @HAVE_OS_H@ -HAVE_PCLOSE = @HAVE_PCLOSE@ -HAVE_PIPE = @HAVE_PIPE@ -HAVE_PIPE2 = @HAVE_PIPE2@ -HAVE_POPEN = @HAVE_POPEN@ -HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ -HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ -HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ -HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ -HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ -HAVE_POWF = @HAVE_POWF@ -HAVE_PREAD = @HAVE_PREAD@ -HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ -HAVE_PTSNAME = @HAVE_PTSNAME@ -HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ -HAVE_PWRITE = @HAVE_PWRITE@ -HAVE_RAISE = @HAVE_RAISE@ -HAVE_RANDOM = @HAVE_RANDOM@ -HAVE_RANDOM_H = @HAVE_RANDOM_H@ -HAVE_RANDOM_R = @HAVE_RANDOM_R@ -HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ -HAVE_READLINK = @HAVE_READLINK@ -HAVE_READLINKAT = @HAVE_READLINKAT@ -HAVE_REALPATH = @HAVE_REALPATH@ -HAVE_REMAINDER = @HAVE_REMAINDER@ -HAVE_REMAINDERF = @HAVE_REMAINDERF@ -HAVE_RENAMEAT = @HAVE_RENAMEAT@ -HAVE_RINT = @HAVE_RINT@ -HAVE_RINTL = @HAVE_RINTL@ -HAVE_RPMATCH = @HAVE_RPMATCH@ -HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ -HAVE_SCHED_H = @HAVE_SCHED_H@ -HAVE_SETENV = @HAVE_SETENV@ -HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ -HAVE_SIGACTION = @HAVE_SIGACTION@ -HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ -HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ -HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ -HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ -HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ -HAVE_SIGSET_T = @HAVE_SIGSET_T@ -HAVE_SINF = @HAVE_SINF@ -HAVE_SINHF = @HAVE_SINHF@ -HAVE_SINL = @HAVE_SINL@ -HAVE_SLEEP = @HAVE_SLEEP@ -HAVE_SPAWN_H = @HAVE_SPAWN_H@ -HAVE_SQRTF = @HAVE_SQRTF@ -HAVE_SQRTL = @HAVE_SQRTL@ -HAVE_STDINT_H = @HAVE_STDINT_H@ -HAVE_STPCPY = @HAVE_STPCPY@ -HAVE_STPNCPY = @HAVE_STPNCPY@ -HAVE_STRCASESTR = @HAVE_STRCASESTR@ -HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ -HAVE_STRPBRK = @HAVE_STRPBRK@ -HAVE_STRPTIME = @HAVE_STRPTIME@ -HAVE_STRSEP = @HAVE_STRSEP@ -HAVE_STRTOD = @HAVE_STRTOD@ -HAVE_STRTOLL = @HAVE_STRTOLL@ -HAVE_STRTOULL = @HAVE_STRTOULL@ -HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ -HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@ -HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ -HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ -HAVE_SYMLINK = @HAVE_SYMLINK@ -HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ -HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ -HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ -HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ -HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ -HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ -HAVE_TANF = @HAVE_TANF@ -HAVE_TANHF = @HAVE_TANHF@ -HAVE_TANL = @HAVE_TANL@ -HAVE_TIMEGM = @HAVE_TIMEGM@ -HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ -HAVE_UNISTD_H = @HAVE_UNISTD_H@ -HAVE_UNLINKAT = @HAVE_UNLINKAT@ -HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ -HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ -HAVE_USLEEP = @HAVE_USLEEP@ -HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ -HAVE_VASPRINTF = @HAVE_VASPRINTF@ -HAVE_VDPRINTF = @HAVE_VDPRINTF@ -HAVE_WCHAR_H = @HAVE_WCHAR_H@ -HAVE_WCHAR_T = @HAVE_WCHAR_T@ -HAVE_WCPCPY = @HAVE_WCPCPY@ -HAVE_WCPNCPY = @HAVE_WCPNCPY@ -HAVE_WCRTOMB = @HAVE_WCRTOMB@ -HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ -HAVE_WCSCAT = @HAVE_WCSCAT@ -HAVE_WCSCHR = @HAVE_WCSCHR@ -HAVE_WCSCMP = @HAVE_WCSCMP@ -HAVE_WCSCOLL = @HAVE_WCSCOLL@ -HAVE_WCSCPY = @HAVE_WCSCPY@ -HAVE_WCSCSPN = @HAVE_WCSCSPN@ -HAVE_WCSDUP = @HAVE_WCSDUP@ -HAVE_WCSLEN = @HAVE_WCSLEN@ -HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ -HAVE_WCSNCAT = @HAVE_WCSNCAT@ -HAVE_WCSNCMP = @HAVE_WCSNCMP@ -HAVE_WCSNCPY = @HAVE_WCSNCPY@ -HAVE_WCSNLEN = @HAVE_WCSNLEN@ -HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ -HAVE_WCSPBRK = @HAVE_WCSPBRK@ -HAVE_WCSRCHR = @HAVE_WCSRCHR@ -HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ -HAVE_WCSSPN = @HAVE_WCSSPN@ -HAVE_WCSSTR = @HAVE_WCSSTR@ -HAVE_WCSTOK = @HAVE_WCSTOK@ -HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ -HAVE_WCSXFRM = @HAVE_WCSXFRM@ -HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ -HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ -HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ -HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ -HAVE_WINT_T = @HAVE_WINT_T@ -HAVE_WMEMCHR = @HAVE_WMEMCHR@ -HAVE_WMEMCMP = @HAVE_WMEMCMP@ -HAVE_WMEMCPY = @HAVE_WMEMCPY@ -HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ -HAVE_WMEMSET = @HAVE_WMEMSET@ -HAVE__BOOL = @HAVE__BOOL@ -HAVE__EXIT = @HAVE__EXIT@ -HELP2MAN = @HELP2MAN@ -INCLUDE_NEXT = @INCLUDE_NEXT@ -INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ -INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ -INTLLIBS = @INTLLIBS@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -ISNAND_LIBM = @ISNAND_LIBM@ -ISNANF_LIBM = @ISNANF_LIBM@ -ISNANL_LIBM = @ISNANL_LIBM@ -ISNAN_LIBM = @ISNAN_LIBM@ -LDEXPL_LIBM = @LDEXPL_LIBM@ -LDEXP_LIBM = @LDEXP_LIBM@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_IS_FLEX = @LEX_IS_FLEX@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBBISON_LIBDEPS = @LIBBISON_LIBDEPS@ -LIBBISON_LTLIBDEPS = @LIBBISON_LTLIBDEPS@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBMULTITHREAD = @LIBMULTITHREAD@ -LIBOBJS = @LIBOBJS@ -LIBPTH = @LIBPTH@ -LIBPTH_PREFIX = @LIBPTH_PREFIX@ -LIBS = @LIBS@ -LIBTHREAD = @LIBTHREAD@ -LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ -LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@ -LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ -LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ -LOCALE_JA = @LOCALE_JA@ -LOCALE_ZH_CN = @LOCALE_ZH_CN@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ -LTLIBOBJS = @LTLIBOBJS@ -LTLIBPTH = @LTLIBPTH@ -LTLIBTHREAD = @LTLIBTHREAD@ -M4 = @M4@ -M4_DEBUGFILE = @M4_DEBUGFILE@ -M4_GNU = @M4_GNU@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ -MSGMERGE = @MSGMERGE@ -NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ -NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ -NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ -NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ -NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ -NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ -NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ -NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ -NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ -NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ -NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ -NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ -NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ -NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ -NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ -NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ -NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ -NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ -NEXT_ERRNO_H = @NEXT_ERRNO_H@ -NEXT_FCNTL_H = @NEXT_FCNTL_H@ -NEXT_FLOAT_H = @NEXT_FLOAT_H@ -NEXT_GETOPT_H = @NEXT_GETOPT_H@ -NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ -NEXT_MATH_H = @NEXT_MATH_H@ -NEXT_SCHED_H = @NEXT_SCHED_H@ -NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ -NEXT_SPAWN_H = @NEXT_SPAWN_H@ -NEXT_STDDEF_H = @NEXT_STDDEF_H@ -NEXT_STDINT_H = @NEXT_STDINT_H@ -NEXT_STDIO_H = @NEXT_STDIO_H@ -NEXT_STDLIB_H = @NEXT_STDLIB_H@ -NEXT_STRING_H = @NEXT_STRING_H@ -NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ -NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ -NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ -NEXT_TIME_H = @NEXT_TIME_H@ -NEXT_UNISTD_H = @NEXT_UNISTD_H@ -NEXT_WCHAR_H = @NEXT_WCHAR_H@ -NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_COPYRIGHT_YEAR = @PACKAGE_COPYRIGHT_YEAR@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -POSUB = @POSUB@ -PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ -PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ -PRIPTR_PREFIX = @PRIPTR_PREFIX@ -PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ -PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ -PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ -RANLIB = @RANLIB@ -REPLACE_BTOWC = @REPLACE_BTOWC@ -REPLACE_CALLOC = @REPLACE_CALLOC@ -REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ -REPLACE_CBRTF = @REPLACE_CBRTF@ -REPLACE_CBRTL = @REPLACE_CBRTL@ -REPLACE_CEIL = @REPLACE_CEIL@ -REPLACE_CEILF = @REPLACE_CEILF@ -REPLACE_CEILL = @REPLACE_CEILL@ -REPLACE_CHOWN = @REPLACE_CHOWN@ -REPLACE_CLOSE = @REPLACE_CLOSE@ -REPLACE_DPRINTF = @REPLACE_DPRINTF@ -REPLACE_DUP = @REPLACE_DUP@ -REPLACE_DUP2 = @REPLACE_DUP2@ -REPLACE_EXP2 = @REPLACE_EXP2@ -REPLACE_EXP2L = @REPLACE_EXP2L@ -REPLACE_EXPM1 = @REPLACE_EXPM1@ -REPLACE_EXPM1F = @REPLACE_EXPM1F@ -REPLACE_FABSL = @REPLACE_FABSL@ -REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ -REPLACE_FCLOSE = @REPLACE_FCLOSE@ -REPLACE_FCNTL = @REPLACE_FCNTL@ -REPLACE_FDOPEN = @REPLACE_FDOPEN@ -REPLACE_FFLUSH = @REPLACE_FFLUSH@ -REPLACE_FLOOR = @REPLACE_FLOOR@ -REPLACE_FLOORF = @REPLACE_FLOORF@ -REPLACE_FLOORL = @REPLACE_FLOORL@ -REPLACE_FMA = @REPLACE_FMA@ -REPLACE_FMAF = @REPLACE_FMAF@ -REPLACE_FMAL = @REPLACE_FMAL@ -REPLACE_FMOD = @REPLACE_FMOD@ -REPLACE_FMODF = @REPLACE_FMODF@ -REPLACE_FMODL = @REPLACE_FMODL@ -REPLACE_FOPEN = @REPLACE_FOPEN@ -REPLACE_FPRINTF = @REPLACE_FPRINTF@ -REPLACE_FPURGE = @REPLACE_FPURGE@ -REPLACE_FREOPEN = @REPLACE_FREOPEN@ -REPLACE_FREXP = @REPLACE_FREXP@ -REPLACE_FREXPF = @REPLACE_FREXPF@ -REPLACE_FREXPL = @REPLACE_FREXPL@ -REPLACE_FSEEK = @REPLACE_FSEEK@ -REPLACE_FSEEKO = @REPLACE_FSEEKO@ -REPLACE_FSTAT = @REPLACE_FSTAT@ -REPLACE_FSTATAT = @REPLACE_FSTATAT@ -REPLACE_FTELL = @REPLACE_FTELL@ -REPLACE_FTELLO = @REPLACE_FTELLO@ -REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ -REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ -REPLACE_GETCWD = @REPLACE_GETCWD@ -REPLACE_GETDELIM = @REPLACE_GETDELIM@ -REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ -REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ -REPLACE_GETLINE = @REPLACE_GETLINE@ -REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ -REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ -REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ -REPLACE_HYPOT = @REPLACE_HYPOT@ -REPLACE_HYPOTF = @REPLACE_HYPOTF@ -REPLACE_HYPOTL = @REPLACE_HYPOTL@ -REPLACE_ILOGB = @REPLACE_ILOGB@ -REPLACE_ILOGBF = @REPLACE_ILOGBF@ -REPLACE_ISATTY = @REPLACE_ISATTY@ -REPLACE_ISFINITE = @REPLACE_ISFINITE@ -REPLACE_ISINF = @REPLACE_ISINF@ -REPLACE_ISNAN = @REPLACE_ISNAN@ -REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ -REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ -REPLACE_ITOLD = @REPLACE_ITOLD@ -REPLACE_LCHOWN = @REPLACE_LCHOWN@ -REPLACE_LDEXPL = @REPLACE_LDEXPL@ -REPLACE_LINK = @REPLACE_LINK@ -REPLACE_LINKAT = @REPLACE_LINKAT@ -REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ -REPLACE_LOG = @REPLACE_LOG@ -REPLACE_LOG10 = @REPLACE_LOG10@ -REPLACE_LOG10F = @REPLACE_LOG10F@ -REPLACE_LOG10L = @REPLACE_LOG10L@ -REPLACE_LOG1P = @REPLACE_LOG1P@ -REPLACE_LOG1PF = @REPLACE_LOG1PF@ -REPLACE_LOG1PL = @REPLACE_LOG1PL@ -REPLACE_LOG2 = @REPLACE_LOG2@ -REPLACE_LOG2F = @REPLACE_LOG2F@ -REPLACE_LOG2L = @REPLACE_LOG2L@ -REPLACE_LOGB = @REPLACE_LOGB@ -REPLACE_LOGBF = @REPLACE_LOGBF@ -REPLACE_LOGBL = @REPLACE_LOGBL@ -REPLACE_LOGF = @REPLACE_LOGF@ -REPLACE_LOGL = @REPLACE_LOGL@ -REPLACE_LSEEK = @REPLACE_LSEEK@ -REPLACE_LSTAT = @REPLACE_LSTAT@ -REPLACE_MALLOC = @REPLACE_MALLOC@ -REPLACE_MBRLEN = @REPLACE_MBRLEN@ -REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ -REPLACE_MBSINIT = @REPLACE_MBSINIT@ -REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ -REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ -REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ -REPLACE_MBTOWC = @REPLACE_MBTOWC@ -REPLACE_MEMCHR = @REPLACE_MEMCHR@ -REPLACE_MEMMEM = @REPLACE_MEMMEM@ -REPLACE_MKDIR = @REPLACE_MKDIR@ -REPLACE_MKFIFO = @REPLACE_MKFIFO@ -REPLACE_MKNOD = @REPLACE_MKNOD@ -REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ -REPLACE_MKTIME = @REPLACE_MKTIME@ -REPLACE_MODF = @REPLACE_MODF@ -REPLACE_MODFF = @REPLACE_MODFF@ -REPLACE_MODFL = @REPLACE_MODFL@ -REPLACE_NAN = @REPLACE_NAN@ -REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ -REPLACE_NULL = @REPLACE_NULL@ -REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ -REPLACE_OPEN = @REPLACE_OPEN@ -REPLACE_OPENAT = @REPLACE_OPENAT@ -REPLACE_PERROR = @REPLACE_PERROR@ -REPLACE_POPEN = @REPLACE_POPEN@ -REPLACE_POSIX_SPAWN = @REPLACE_POSIX_SPAWN@ -REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ -REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ -REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ -REPLACE_PREAD = @REPLACE_PREAD@ -REPLACE_PRINTF = @REPLACE_PRINTF@ -REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ -REPLACE_PTSNAME = @REPLACE_PTSNAME@ -REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ -REPLACE_PUTENV = @REPLACE_PUTENV@ -REPLACE_PWRITE = @REPLACE_PWRITE@ -REPLACE_RAISE = @REPLACE_RAISE@ -REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ -REPLACE_READ = @REPLACE_READ@ -REPLACE_READLINK = @REPLACE_READLINK@ -REPLACE_REALLOC = @REPLACE_REALLOC@ -REPLACE_REALPATH = @REPLACE_REALPATH@ -REPLACE_REMAINDER = @REPLACE_REMAINDER@ -REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ -REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ -REPLACE_REMOVE = @REPLACE_REMOVE@ -REPLACE_RENAME = @REPLACE_RENAME@ -REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ -REPLACE_RMDIR = @REPLACE_RMDIR@ -REPLACE_ROUND = @REPLACE_ROUND@ -REPLACE_ROUNDF = @REPLACE_ROUNDF@ -REPLACE_ROUNDL = @REPLACE_ROUNDL@ -REPLACE_SETENV = @REPLACE_SETENV@ -REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ -REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ -REPLACE_SLEEP = @REPLACE_SLEEP@ -REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ -REPLACE_SPRINTF = @REPLACE_SPRINTF@ -REPLACE_SQRTL = @REPLACE_SQRTL@ -REPLACE_STAT = @REPLACE_STAT@ -REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ -REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ -REPLACE_STPNCPY = @REPLACE_STPNCPY@ -REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ -REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ -REPLACE_STRDUP = @REPLACE_STRDUP@ -REPLACE_STRERROR = @REPLACE_STRERROR@ -REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ -REPLACE_STRNCAT = @REPLACE_STRNCAT@ -REPLACE_STRNDUP = @REPLACE_STRNDUP@ -REPLACE_STRNLEN = @REPLACE_STRNLEN@ -REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ -REPLACE_STRSTR = @REPLACE_STRSTR@ -REPLACE_STRTOD = @REPLACE_STRTOD@ -REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ -REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ -REPLACE_SYMLINK = @REPLACE_SYMLINK@ -REPLACE_TIMEGM = @REPLACE_TIMEGM@ -REPLACE_TMPFILE = @REPLACE_TMPFILE@ -REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ -REPLACE_TRUNC = @REPLACE_TRUNC@ -REPLACE_TRUNCF = @REPLACE_TRUNCF@ -REPLACE_TRUNCL = @REPLACE_TRUNCL@ -REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ -REPLACE_UNLINK = @REPLACE_UNLINK@ -REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ -REPLACE_UNSETENV = @REPLACE_UNSETENV@ -REPLACE_USLEEP = @REPLACE_USLEEP@ -REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ -REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ -REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ -REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ -REPLACE_VPRINTF = @REPLACE_VPRINTF@ -REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ -REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ -REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ -REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ -REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ -REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ -REPLACE_WCTOB = @REPLACE_WCTOB@ -REPLACE_WCTOMB = @REPLACE_WCTOMB@ -REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ -REPLACE_WRITE = @REPLACE_WRITE@ -SCHED_H = @SCHED_H@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ -SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ -STDBOOL_H = @STDBOOL_H@ -STDDEF_H = @STDDEF_H@ -STDINT_H = @STDINT_H@ -STRIP = @STRIP@ -SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ -TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ -UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ -UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ -UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ -UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ -UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ -USE_NLS = @USE_NLS@ -VALGRIND = @VALGRIND@ -VALGRIND_PREBISON = @VALGRIND_PREBISON@ -VERSION = @VERSION@ -WARN_CFLAGS = @WARN_CFLAGS@ -WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@ -WARN_CXXFLAGS = @WARN_CXXFLAGS@ -WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@ -WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -WERROR_CXXFLAGS = @WERROR_CXXFLAGS@ -WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ -WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ -WINT_T_SUFFIX = @WINT_T_SUFFIX@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -XSLTPROC = @XSLTPROC@ -YACC = @YACC@ -YACC_LIBRARY = @YACC_LIBRARY@ -YACC_SCRIPT = @YACC_SCRIPT@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -aclocaldir = @aclocaldir@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -gl_LIBOBJS = @gl_LIBOBJS@ -gl_LTLIBOBJS = @gl_LTLIBOBJS@ -gltests_LIBOBJS = @gltests_LIBOBJS@ -gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ -gltests_WITNESS = @gltests_WITNESS@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -lispdir = @lispdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -dist_pkgdata_DATA = README bison.m4 \ - c-like.m4 \ - c-skel.m4 c.m4 yacc.c glr.c \ - c++-skel.m4 c++.m4 location.cc lalr1.cc glr.cc stack.hh \ - java-skel.m4 java.m4 lalr1.java - -m4sugardir = $(pkgdatadir)/m4sugar -dist_m4sugar_DATA = m4sugar/m4sugar.m4 m4sugar/foreach.m4 -xsltdir = $(pkgdatadir)/xslt -dist_xslt_DATA = \ - xslt/bison.xsl \ - xslt/xml2dot.xsl \ - xslt/xml2text.xsl \ - xslt/xml2xhtml.xsl - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits data/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnits data/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-dist_m4sugarDATA: $(dist_m4sugar_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_m4sugar_DATA)'; test -n "$(m4sugardir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(m4sugardir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(m4sugardir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4sugardir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(m4sugardir)" || exit $$?; \ - done - -uninstall-dist_m4sugarDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_m4sugar_DATA)'; test -n "$(m4sugardir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(m4sugardir)'; $(am__uninstall_files_from_dir) -install-dist_pkgdataDATA: $(dist_pkgdata_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ - done - -uninstall-dist_pkgdataDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) -install-dist_xsltDATA: $(dist_xslt_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_xslt_DATA)'; test -n "$(xsltdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(xsltdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(xsltdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(xsltdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(xsltdir)" || exit $$?; \ - done - -uninstall-dist_xsltDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_xslt_DATA)'; test -n "$(xsltdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(xsltdir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - -cscope cscopelist: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(DATA) -installdirs: - for dir in "$(DESTDIR)$(m4sugardir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(xsltdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-dist_m4sugarDATA install-dist_pkgdataDATA \ - install-dist_xsltDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-dist_m4sugarDATA uninstall-dist_pkgdataDATA \ - uninstall-dist_xsltDATA - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-dist_m4sugarDATA install-dist_pkgdataDATA \ - install-dist_xsltDATA install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am uninstall uninstall-am \ - uninstall-dist_m4sugarDATA uninstall-dist_pkgdataDATA \ - uninstall-dist_xsltDATA - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/data/README b/tools/data/README deleted file mode 100644 index d88e5aa9..00000000 --- a/tools/data/README +++ /dev/null @@ -1,70 +0,0 @@ --*- outline -*- - -This directory contains data needed by Bison. - -* Skeletons -Bison skeletons: the general shapes of the different parser kinds, -that are specialized for specific grammars by the bison program. - -Currently, the supported skeletons are: - -- yacc.c - It used to be named bison.simple: it corresponds to C Yacc - compatible LALR(1) parsers. - -- lalr1.cc - Produces a C++ parser class. - -- lalr1.java - Produces a Java parser class. - -- glr.c - A Generalized LR C parser based on Bison's LALR(1) tables. - -- glr.cc - A Generalized LR C++ parser. Actually a C++ wrapper around glr.c. - -These skeletons are the only ones supported by the Bison team. -Because the interface between skeletons and the bison program is not -finished, *we are not bound to it*. In particular, Bison is not -mature enough for us to consider that ``foreign skeletons'' are -supported. - -* m4sugar -This directory contains M4sugar, sort of an extended library for M4, -which is used by Bison to instantiate the skeletons. - -* xslt -This directory contains XSLT programs that transform Bison's XML output -into various formats. - -- bison.xsl - A library of routines used by the other XSLT programs. - -- xml2dot.xsl - Conversion into GraphViz's dot format. - -- xml2text.xsl - Conversion into text. - -- xml2xhtml.xsl - Conversion into XHTML. - ------ - -Copyright (C) 2002, 2008-2012 Free Software Foundation, Inc. - -This file is part of GNU Bison. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/tools/data/bison.m4 b/tools/data/bison.m4 deleted file mode 100644 index 102d5fbd..00000000 --- a/tools/data/bison.m4 +++ /dev/null @@ -1,610 +0,0 @@ - -*- Autoconf -*- - -# Language-independent M4 Macros for Bison. - -# Copyright (C) 2002, 2004-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -## ---------------- ## -## Identification. ## -## ---------------- ## - -# b4_copyright(TITLE, YEARS) -# -------------------------- -m4_define([b4_copyright], -[b4_comment([A Bison parser, made by GNU Bison b4_version.]) - -b4_comment([$1 - -m4_text_wrap([Copyright (C) $2 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 -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see .]) - -b4_comment([As a special exception, you may create a larger work that contains -part or all of the Bison parser skeleton and distribute that work -under terms of your choice, so long as that work isn't itself a -parser generator using the skeleton or a modified version thereof -as a parser skeleton. Alternatively, if you modify or redistribute -the parser skeleton itself, you may (at your option) remove this -special exception, which will cause the skeleton and the resulting -Bison output files to be licensed under the GNU General Public -License without this special exception. - -This special exception was added by the Free Software Foundation in -version 2.2 of Bison.])]) - - -## -------- ## -## Output. ## -## -------- ## - -# b4_output_begin(FILE) -# --------------------- -# Enable output, i.e., send to diversion 0, expand after "#", and -# generate the tag to output into FILE. Must be followed by EOL. -m4_define([b4_output_begin], -[m4_changecom() -m4_divert_push(0)dnl -@output(m4_unquote([$1])@)@dnl -]) - - -# b4_output_end() -# --------------- -# Output nothing, restore # as comment character (no expansions after #). -m4_define([b4_output_end], -[m4_divert_pop(0) -m4_changecom([#]) -]) - - -## ---------------- ## -## Error handling. ## -## ---------------- ## - -# The following error handling macros print error directives that should not -# become arguments of other macro invocations since they would likely then be -# mangled. Thus, they print to stdout directly. - -# b4_cat(TEXT) -# ------------ -# Write TEXT to stdout. Precede the final newline with an @ so that it's -# escaped. For example: -# -# b4_cat([[@complain(invalid input@)]]) -m4_define([b4_cat], -[m4_syscmd([cat <<'_m4eof' -]m4_bpatsubst(m4_dquote($1), [_m4eof], [_m4@`eof])[@ -_m4eof -])dnl -m4_if(m4_sysval, [0], [], [m4_fatal([$0: cannot write to stdout])])]) - -# b4_error(KIND, FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------------- -# Write @KIND(FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_error([[warn]], [[invalid value for '%s': %s]], [[foo]], [[3]]) -m4_define([b4_error], -[b4_cat([[@]$1[(]$2[]]dnl -[m4_if([$#], [2], [], - [m4_foreach([b4_arg], - m4_dquote(m4_shift(m4_shift($@))), - [[@,]b4_arg])])[@)]])]) - -# b4_error_at(KIND, START, END, FORMAT, [ARG1], [ARG2], ...) -# ---------------------------------------------------------- -# Write @KIND_at(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_error_at([[complain]], [[input.y:2.3]], [[input.y:5.4]], -# [[invalid %s]], [[foo]]) -m4_define([b4_error_at], -[b4_cat([[@]$1[_at(]$2[@,]$3[@,]$4[]]dnl -[m4_if([$#], [4], [], - [m4_foreach([b4_arg], - m4_dquote(m4_shift(m4_shift(m4_shift(m4_shift($@))))), - [[@,]b4_arg])])[@)]])]) - -# b4_warn(FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------ -# Write @warn(FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_warn([[invalid value for '%s': %s]], [[foo]], [[3]]) -# -# As a simple test suite, this: -# -# m4_divert(-1) -# m4_define([asdf], [ASDF]) -# m4_define([fsa], [FSA]) -# m4_define([fdsa], [FDSA]) -# b4_warn([[[asdf), asdf]]], [[[fsa), fsa]]], [[[fdsa), fdsa]]]) -# b4_warn([[asdf), asdf]], [[fsa), fsa]], [[fdsa), fdsa]]) -# b4_warn() -# b4_warn(1) -# b4_warn(1, 2) -# -# Should produce this without newlines: -# -# @warn([asdf), asdf]@,[fsa), fsa]@,[fdsa), fdsa]@) -# @warn(asdf), asdf@,fsa), fsa@,fdsa), fdsa@) -# @warn(@) -# @warn(1@) -# @warn(1@,2@) -m4_define([b4_warn], -[b4_error([[warn]], $@)]) - -# b4_warn_at(START, END, FORMAT, [ARG1], [ARG2], ...) -# --------------------------------------------------- -# Write @warn(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_warn_at([[input.y:2.3]], [[input.y:5.4]], [[invalid %s]], [[foo]]) -m4_define([b4_warn_at], -[b4_error_at([[warn]], $@)]) - -# b4_complain(FORMAT, [ARG1], [ARG2], ...) -# ---------------------------------------- -# Write @complain(FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# See b4_warn example. -m4_define([b4_complain], -[b4_error([[complain]], $@)]) - -# b4_complain_at(START, END, FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------------------------- -# Write @complain(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# See b4_warn_at example. -m4_define([b4_complain_at], -[b4_error_at([[complain]], $@)]) - -# b4_fatal(FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------- -# Write @fatal(FORMAT@,ARG1@,ARG2@,...@) to stdout and exit. -# -# See b4_warn example. -m4_define([b4_fatal], -[b4_error([[fatal]], $@)dnl -m4_exit(1)]) - -# b4_fatal_at(START, END, FORMAT, [ARG1], [ARG2], ...) -# ---------------------------------------------------- -# Write @fatal(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout and exit. -# -# See b4_warn_at example. -m4_define([b4_fatal_at], -[b4_error_at([[fatal]], $@)dnl -m4_exit(1)]) - - -## ------------ ## -## Data Types. ## -## ------------ ## - -# b4_ints_in(INT1, INT2, LOW, HIGH) -# --------------------------------- -# Return 1 iff both INT1 and INT2 are in [LOW, HIGH], 0 otherwise. -m4_define([b4_ints_in], -[m4_eval([$3 <= $1 && $1 <= $4 && $3 <= $2 && $2 <= $4])]) - - - -## ------------------ ## -## Decoding options. ## -## ------------------ ## - -# b4_flag_if(FLAG, IF-TRUE, IF-FALSE) -# ----------------------------------- -# Run IF-TRUE if b4_FLAG_flag is 1, IF-FALSE if FLAG is 0, otherwise fail. -m4_define([b4_flag_if], -[m4_case(b4_$1_flag, - [0], [$3], - [1], [$2], - [m4_fatal([invalid $1 value: ]$1)])]) - - -# b4_define_flag_if(FLAG) -# ----------------------- -# Define "b4_FLAG_if(IF-TRUE, IF-FALSE)" that depends on the -# value of the Boolean FLAG. -m4_define([b4_define_flag_if], -[_b4_define_flag_if($[1], $[2], [$1])]) - -# _b4_define_flag_if($1, $2, FLAG) -# -------------------------------- -# Work around the impossibility to define macros inside macros, -# because issuing `[$1]' is not possible in M4. GNU M4 should provide -# $$1 a la M5/TeX. -m4_define([_b4_define_flag_if], -[m4_if([$1$2], $[1]$[2], [], - [m4_fatal([$0: Invalid arguments: $@])])dnl -m4_define([b4_$3_if], - [b4_flag_if([$3], [$1], [$2])])]) - - -# b4_FLAG_if(IF-TRUE, IF-FALSE) -# ----------------------------- -# Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise. -b4_define_flag_if([defines]) # Whether headers are requested. -b4_define_flag_if([error_verbose]) # Whether error are verbose. -b4_define_flag_if([glr]) # Whether a GLR parser is requested. -b4_define_flag_if([locations]) # Whether locations are tracked. -b4_define_flag_if([nondeterministic]) # Whether conflicts should be handled. -b4_define_flag_if([token_table]) # Whether yytoken_table is demanded. -b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated. - -# yytoken_table is needed to support verbose errors. -b4_error_verbose_if([m4_define([b4_token_table_flag], [1])]) - - - -## ----------- ## -## Synclines. ## -## ----------- ## - -# b4_basename(NAME) -# ----------------- -# Similar to POSIX basename; the differences don't matter here. -# Beware that NAME is not evaluated. -m4_define([b4_basename], -[m4_bpatsubst([$1], [^.*/\([^/]+\)/*$], [\1])]) - - -# b4_syncline(LINE, FILE) -# ----------------------- -m4_define([b4_syncline], -[b4_flag_if([synclines], -[b4_sync_end([__line__], [b4_basename(m4_quote(__file__))]) -b4_sync_start([$1], [$2])])]) - -m4_define([b4_sync_end], [b4_comment([Line $1 of $2])]) -m4_define([b4_sync_start], [b4_comment([Line $1 of $2])]) - -# b4_user_code(USER-CODE) -# ----------------------- -# Emit code from the user, ending it with synclines. -m4_define([b4_user_code], -[$1 -b4_syncline([@oline@], [@ofile@])]) - - -# b4_define_user_code(MACRO) -# -------------------------- -# From b4_MACRO, build b4_user_MACRO that includes the synclines. -m4_define([b4_define_user_code], -[m4_define([b4_user_$1], -[b4_user_code([b4_$1])])]) - - -# b4_user_actions -# b4_user_initial_action -# b4_user_post_prologue -# b4_user_pre_prologue -# b4_user_stype -# ---------------------- -# Macros that issue user code, ending with synclines. -b4_define_user_code([actions]) -b4_define_user_code([initial_action]) -b4_define_user_code([post_prologue]) -b4_define_user_code([pre_prologue]) -b4_define_user_code([stype]) - - -# b4_check_user_names(WHAT, USER-LIST, BISON-NAMESPACE) -# ----------------------------------------------------- -# Complain if any name of type WHAT is used by the user (as recorded in -# USER-LIST) but is not used by Bison (as recorded by macros in the -# namespace BISON-NAMESPACE). -# -# USER-LIST must expand to a list specifying all user occurrences of all names -# of type WHAT. Each item in the list must be a triplet specifying one -# occurrence: name, start boundary, and end boundary. Empty string names are -# fine. An empty list is fine. -# -# For example, to define b4_foo_user_names to be used for USER-LIST with three -# name occurrences and with correct quoting: -# -# m4_define([b4_foo_user_names], -# [[[[[[bar]], [[parser.y:1.7]], [[parser.y:1.16]]]], -# [[[[bar]], [[parser.y:5.7]], [[parser.y:5.16]]]], -# [[[[baz]], [[parser.y:8.7]], [[parser.y:8.16]]]]]]) -# -# The macro BISON-NAMESPACE(bar) must be defined iff the name bar of type WHAT -# is used by Bison (in the front-end or in the skeleton). Empty string names -# are fine, but it would be ugly for Bison to actually use one. -# -# For example, to use b4_foo_bison_names for BISON-NAMESPACE and define that -# the names bar and baz are used by Bison: -# -# m4_define([b4_foo_bison_names(bar)]) -# m4_define([b4_foo_bison_names(baz)]) -# -# To invoke b4_check_user_names with TYPE foo, with USER-LIST -# b4_foo_user_names, with BISON-NAMESPACE b4_foo_bison_names, and with correct -# quoting: -# -# b4_check_user_names([[foo]], [b4_foo_user_names], -# [[b4_foo_bison_names]]) -m4_define([b4_check_user_names], -[m4_foreach([b4_occurrence], $2, -[m4_pushdef([b4_occurrence], b4_occurrence)dnl -m4_pushdef([b4_user_name], m4_car(b4_occurrence))dnl -m4_pushdef([b4_start], m4_car(m4_shift(b4_occurrence)))dnl -m4_pushdef([b4_end], m4_shift(m4_shift(b4_occurrence)))dnl -m4_ifndef($3[(]m4_quote(b4_user_name)[)], - [b4_complain_at([b4_start], [b4_end], - [[%s '%s' is not used]], - [$1], [b4_user_name])])[]dnl -m4_popdef([b4_occurrence])dnl -m4_popdef([b4_user_name])dnl -m4_popdef([b4_start])dnl -m4_popdef([b4_end])dnl -])]) - - - - -## --------------------- ## -## b4_percent_define_*. ## -## --------------------- ## - - -# b4_percent_define_use(VARIABLE) -# ------------------------------- -# Declare that VARIABLE was used. -m4_define([b4_percent_define_use], -[m4_define([b4_percent_define_bison_variables(]$1[)])dnl -]) - -# b4_percent_define_get(VARIABLE, [DEFAULT]) -# ------------------------------------------ -# Mimic muscle_percent_define_get in ../src/muscle-tab.h. That is, if -# the %define variable VARIABLE is defined, emit its value. Contrary -# to its C counterpart, return DEFAULT otherwise. Also, record -# Bison's usage of VARIABLE by defining -# b4_percent_define_bison_variables(VARIABLE). -# -# For example: -# -# b4_percent_define_get([[foo]]) -m4_define([b4_percent_define_get], -[b4_percent_define_use([$1])dnl -m4_ifdef([b4_percent_define(]$1[)], - [m4_indir([b4_percent_define(]$1[)])], - [$2])]) - - -# b4_percent_define_get_loc(VARIABLE) -# ----------------------------------- -# Mimic muscle_percent_define_get_loc in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is undefined, complain fatally since that's -# a Bison or skeleton error. Otherwise, return its definition location in a -# form approriate for the first two arguments of b4_warn_at, b4_complain_at, or -# b4_fatal_at. Don't record this as a Bison usage of VARIABLE as there's no -# reason to suspect that the user-supplied value has yet influenced the output. -# -# For example: -# -# b4_complain_at(b4_percent_define_get_loc([[foo]]), [[invalid foo]]) -m4_define([b4_percent_define_get_loc], -[m4_ifdef([b4_percent_define_loc(]$1[)], - [m4_pushdef([b4_loc], m4_indir([b4_percent_define_loc(]$1[)]))dnl -b4_loc[]dnl -m4_popdef([b4_loc])], - [b4_fatal([[b4_percent_define_get_loc: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_define_get_syncline(VARIABLE) -# ---------------------------------------- -# Mimic muscle_percent_define_get_syncline in ../src/muscle-tab.h exactly. -# That is, if the %define variable VARIABLE is undefined, complain fatally -# since that's a Bison or skeleton error. Otherwise, return its definition -# location as a b4_syncline invocation. Don't record this as a Bison usage of -# VARIABLE as there's no reason to suspect that the user-supplied value has yet -# influenced the output. -# -# For example: -# -# b4_percent_define_get_syncline([[foo]]) -m4_define([b4_percent_define_get_syncline], -[m4_ifdef([b4_percent_define_syncline(]$1[)], - [m4_indir([b4_percent_define_syncline(]$1[)])], - [b4_fatal([[b4_percent_define_get_syncline: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_define_ifdef(VARIABLE, IF-TRUE, [IF-FALSE]) -# ------------------------------------------------------ -# Mimic muscle_percent_define_ifdef in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is defined, expand IF-TRUE, else expand -# IF-FALSE. Also, record Bison's usage of VARIABLE by defining -# b4_percent_define_bison_variables(VARIABLE). -# -# For example: -# -# b4_percent_define_ifdef([[foo]], [[it's defined]], [[it's undefined]]) -m4_define([b4_percent_define_ifdef], -[m4_ifdef([b4_percent_define(]$1[)], - [m4_define([b4_percent_define_bison_variables(]$1[)])$2], - [$3])]) - -# b4_percent_define_flag_if(VARIABLE, IF-TRUE, [IF-FALSE]) -# -------------------------------------------------------- -# Mimic muscle_percent_define_flag_if in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is defined to "" or "true", expand IF-TRUE. -# If it is defined to "false", expand IF-FALSE. Complain if it is undefined -# (a Bison or skeleton error since the default value should have been set -# already) or defined to any other value (possibly a user error). Also, record -# Bison's usage of VARIABLE by defining -# b4_percent_define_bison_variables(VARIABLE). -# -# For example: -# -# b4_percent_define_flag_if([[foo]], [[it's true]], [[it's false]]) -m4_define([b4_percent_define_flag_if], -[b4_percent_define_ifdef([$1], - [m4_case(b4_percent_define_get([$1]), - [], [$2], [true], [$2], [false], [$3], - [m4_expand_once([b4_complain_at(b4_percent_define_get_loc([$1]), - [[invalid value for %%define Boolean variable '%s']], - [$1])], - [[b4_percent_define_flag_if($1)]])])], - [b4_fatal([[b4_percent_define_flag_if: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_define_default(VARIABLE, DEFAULT) -# -------------------------------------------- -# Mimic muscle_percent_define_default in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is undefined, set its value to DEFAULT. -# Don't record this as a Bison usage of VARIABLE as there's no reason to -# suspect that the value has yet influenced the output. -# -# For example: -# -# b4_percent_define_default([[foo]], [[default value]]) -m4_define([b4_percent_define_default], -[m4_ifndef([b4_percent_define(]$1[)], - [m4_define([b4_percent_define(]$1[)], [$2])dnl - m4_define([b4_percent_define_loc(]$1[)], - [[[[:-1.-1]], - [[:-1.-1]]]])dnl - m4_define([b4_percent_define_syncline(]$1[)], [[]])])]) - -# b4_percent_define_check_values(VALUES) -# -------------------------------------- -# Mimic muscle_percent_define_check_values in ../src/muscle-tab.h exactly -# except that the VALUES structure is more appropriate for M4. That is, VALUES -# is a list of sublists of strings. For each sublist, the first string is the -# name of a %define variable, and all remaining strings in that sublist are the -# valid values for that variable. Complain if such a variable is undefined (a -# Bison error since the default value should have been set already) or defined -# to any other value (possibly a user error). Don't record this as a Bison -# usage of the variable as there's no reason to suspect that the value has yet -# influenced the output. -# -# For example: -# -# b4_percent_define_check_values([[[[foo]], [[foo-value1]], [[foo-value2]]]], -# [[[[bar]], [[bar-value1]]]]) -m4_define([b4_percent_define_check_values], -[m4_foreach([b4_sublist], m4_quote($@), - [_b4_percent_define_check_values(b4_sublist)])]) - -m4_define([_b4_percent_define_check_values], -[m4_ifdef([b4_percent_define(]$1[)], - [m4_pushdef([b4_good_value], [0])dnl - m4_if($#, 1, [], - [m4_foreach([b4_value], m4_dquote(m4_shift($@)), - [m4_if(m4_indir([b4_percent_define(]$1[)]), b4_value, - [m4_define([b4_good_value], [1])])])])dnl - m4_if(b4_good_value, [0], - [b4_complain_at(b4_percent_define_get_loc([$1]), - [[invalid value for %%define variable '%s': '%s']], - [$1], - m4_dquote(m4_indir([b4_percent_define(]$1[)]))) - m4_foreach([b4_value], m4_dquote(m4_shift($@)), - [b4_complain_at(b4_percent_define_get_loc([$1]), - [[accepted value: '%s']], - m4_dquote(b4_value))])])dnl - m4_popdef([b4_good_value])], - [b4_fatal([[b4_percent_define_check_values: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_code_get([QUALIFIER]) -# -------------------------------- -# If any %code blocks for QUALIFIER are defined, emit them beginning with a -# comment and ending with synclines and a newline. If QUALIFIER is not -# specified or empty, do this for the unqualified %code blocks. Also, record -# Bison's usage of QUALIFIER (if specified) by defining -# b4_percent_code_bison_qualifiers(QUALIFIER). -# -# For example, to emit any unqualified %code blocks followed by any %code -# blocks for the qualifier foo: -# -# b4_percent_code_get -# b4_percent_code_get([[foo]]) -m4_define([b4_percent_code_get], -[m4_pushdef([b4_macro_name], [[b4_percent_code(]$1[)]])dnl -m4_ifval([$1], [m4_define([b4_percent_code_bison_qualifiers(]$1[)])])dnl -m4_ifdef(b4_macro_name, -[b4_comment([m4_if([$#], [0], [[Unqualified %code]], - [["%code ]$1["]])[ blocks.]]) -b4_user_code([m4_indir(b4_macro_name)]) -])dnl -m4_popdef([b4_macro_name])]) - -# b4_percent_code_ifdef(QUALIFIER, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------- -# If any %code blocks for QUALIFIER (or unqualified %code blocks if -# QUALIFIER is empty) are defined, expand IF-TRUE, else expand IF-FALSE. -# Also, record Bison's usage of QUALIFIER (if specified) by defining -# b4_percent_code_bison_qualifiers(QUALIFIER). -m4_define([b4_percent_code_ifdef], -[m4_ifdef([b4_percent_code(]$1[)], - [m4_ifval([$1], [m4_define([b4_percent_code_bison_qualifiers(]$1[)])])$2], - [$3])]) - - -## ----------------------------------------------------------- ## -## After processing the skeletons, check that all the user's ## -## %define variables and %code qualifiers were used by Bison. ## -## ----------------------------------------------------------- ## - -m4_define([b4_check_user_names_wrap], -[m4_ifdef([b4_percent_]$1[_user_]$2[s], - [b4_check_user_names([[%]$1 $2], - [b4_percent_]$1[_user_]$2[s], - [[b4_percent_]$1[_bison_]$2[s]])])]) - -m4_wrap_lifo([ -b4_check_user_names_wrap([[define]], [[variable]]) -b4_check_user_names_wrap([[code]], [[qualifier]]) -]) - - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# m4_define_default([b4_lex_param], []) dnl breaks other skeletons -m4_define_default([b4_pre_prologue], []) -m4_define_default([b4_post_prologue], []) -m4_define_default([b4_epilogue], []) -m4_define_default([b4_parse_param], []) - -# The initial column and line. -m4_define_default([b4_location_initial_column], [1]) -m4_define_default([b4_location_initial_line], [1]) - -# Sanity checks. -b4_percent_define_ifdef([api.prefix], -[m4_ifdef([b4_prefix], -[b4_complain_at(b4_percent_define_get_loc([api.prefix]), - [['%s' and '%s' cannot be used together]], - [%name-prefix], - [%define api.prefix])])]) diff --git a/tools/data/c++-skel.m4 b/tools/data/c++-skel.m4 deleted file mode 100644 index 149e4300..00000000 --- a/tools/data/c++-skel.m4 +++ /dev/null @@ -1,26 +0,0 @@ - -*- Autoconf -*- - -# C++ skeleton dispatching for Bison. - -# Copyright (C) 2006-2007, 2009-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])]) -b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])]) - -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.cc]]) -m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) - -m4_include(b4_used_skeleton) diff --git a/tools/data/c++.m4 b/tools/data/c++.m4 deleted file mode 100644 index eac88a78..00000000 --- a/tools/data/c++.m4 +++ /dev/null @@ -1,205 +0,0 @@ - -*- Autoconf -*- - -# C++ skeleton for Bison - -# Copyright (C) 2002-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c.m4]) - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# Default parser class name. -b4_percent_define_default([[parser_class_name]], [[parser]]) - -# Don't do that so that we remember whether we're using a user -# request, or the default value. -# -# b4_percent_define_default([[api.location.type]], [[location]]) - -b4_percent_define_default([[filename_type]], [[std::string]]) -b4_percent_define_default([[namespace]], m4_defn([b4_prefix])) -b4_percent_define_default([[global_tokens_and_yystype]], [[false]]) -b4_percent_define_default([[define_location_comparison]], - [m4_if(b4_percent_define_get([[filename_type]]), - [std::string], [[true]], [[false]])]) - - -## ----------- ## -## Namespace. ## -## ----------- ## - -m4_define([b4_namespace_ref], [b4_percent_define_get([[namespace]])]) - -# Don't permit an empty b4_namespace_ref. Any `::parser::foo' appended to it -# would compile as an absolute reference with `parser' in the global namespace. -# b4_namespace_open would open an anonymous namespace and thus establish -# internal linkage. This would compile. However, it's cryptic, and internal -# linkage for the parser would be specified in all translation units that -# include the header, which is always generated. If we ever need to permit -# internal linkage somehow, surely we can find a cleaner approach. -m4_if(m4_bregexp(b4_namespace_ref, [^[ ]*$]), [-1], [], -[b4_complain_at(b4_percent_define_get_loc([[namespace]]), - [[namespace reference is empty]])]) - -# Instead of assuming the C++ compiler will do it, Bison should reject any -# invalid b4_namepsace_ref that would be converted to a valid -# b4_namespace_open. The problem is that Bison doesn't always output -# b4_namespace_ref to uncommented code but should reserve the ability to do so -# in future releases without risking breaking any existing user grammars. -# Specifically, don't allow empty names as b4_namespace_open would just convert -# those into anonymous namespaces, and that might tempt some users. -m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*::]), [-1], [], -[b4_complain_at(b4_percent_define_get_loc([[namespace]]), - [[namespace reference has consecutive "::"]])]) -m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*$]), [-1], [], -[b4_complain_at(b4_percent_define_get_loc([[namespace]]), - [[namespace reference has a trailing "::"]])]) - -m4_define([b4_namespace_open], -[b4_user_code([b4_percent_define_get_syncline([[namespace]]) -[namespace ]m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref), - [^\(.\)[ ]*::], [\1])), - [::], [ { namespace ])[ {]])]) - -m4_define([b4_namespace_close], -[b4_user_code([b4_percent_define_get_syncline([[namespace]]) -m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]), - [^\(.\)[ ]*\(::\)?\([^][:]\|:[^:]\)*], - [\1])), - [::\([^][:]\|:[^:]\)*], [} ])[} // ]b4_namespace_ref])]) - - -# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ----------------------------------------------------- -# Output the definition of the tokens as enums. -m4_define([b4_token_enums], -[/* Tokens. */ - enum yytokentype { -m4_map_sep([ b4_token_enum], [, -], - [$@]) - }; -]) - - - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], -[(yyval[]m4_ifval([$1], [.$1]))]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -m4_define([b4_rhs_value], -[(yysemantic_stack_@{($1) - ($2)@}m4_ifval([$3], [.$3]))]) - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(yyloc)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[(yylocation_stack_@{($1) - ($2)@})]) - - -# b4_parse_param_decl -# ------------------- -# Extra formal arguments of the constructor. -# Change the parameter names from "foo" into "foo_yyarg", so that -# there is no collision bw the user chosen attribute name, and the -# argument name in the constructor. -m4_define([b4_parse_param_decl], -[m4_ifset([b4_parse_param], - [m4_map_sep([b4_parse_param_decl_1], [, ], [b4_parse_param])])]) - -m4_define([b4_parse_param_decl_1], -[$1_yyarg]) - - - -# b4_parse_param_cons -# ------------------- -# Extra initialisations of the constructor. -m4_define([b4_parse_param_cons], - [m4_ifset([b4_parse_param], - [ - b4_cc_constructor_calls(b4_parse_param)])]) -m4_define([b4_cc_constructor_calls], - [m4_map_sep([b4_cc_constructor_call], [, - ], [$@])]) -m4_define([b4_cc_constructor_call], - [$2 ($2_yyarg)]) - -# b4_parse_param_vars -# ------------------- -# Extra instance variables. -m4_define([b4_parse_param_vars], - [m4_ifset([b4_parse_param], - [ - /* User arguments. */ -b4_cc_var_decls(b4_parse_param)])]) -m4_define([b4_cc_var_decls], - [m4_map_sep([b4_cc_var_decl], [ -], [$@])]) -m4_define([b4_cc_var_decl], - [ $1;]) - - -## ---------## -## Values. ## -## ---------## - -# b4_yylloc_default_define -# ------------------------ -# Define YYLLOC_DEFAULT. -m4_define([b4_yylloc_default_define], -[[/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -# ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (N) \ - { \ - (Current).begin = YYRHSLOC (Rhs, 1).begin; \ - (Current).end = YYRHSLOC (Rhs, N).end; \ - } \ - else \ - { \ - (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ - } \ - while (/*CONSTCOND*/ false) -# endif -]]) diff --git a/tools/data/c-like.m4 b/tools/data/c-like.m4 deleted file mode 100644 index 5b96fbaf..00000000 --- a/tools/data/c-like.m4 +++ /dev/null @@ -1,44 +0,0 @@ - -*- Autoconf -*- - -# Common code for C-like languages (C, C++, Java, etc.) - -# Copyright (C) 2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# b4_dollar_dollar_(VALUE, FIELD, DEFAULT-FIELD) -# ---------------------------------------------- -# If FIELD (or DEFAULT-FIELD) is non-null, return "VALUE.FIELD", -# otherwise just VALUE. Be sure to pass "(VALUE)" is VALUE is a -# pointer. -m4_define([b4_dollar_dollar_], -[m4_if([$2], [[]], - [m4_ifval([$3], [($1.$3)], - [$1])], - [($1.$2)])]) - -# b4_dollar_pushdef(VALUE-POINTER, DEFAULT-FIELD, LOCATION) -# b4_dollar_popdef -# --------------------------------------------------------- -# Define b4_dollar_dollar for VALUE and DEFAULT-FIELD, -# and b4_at_dollar for LOCATION. -m4_define([b4_dollar_pushdef], -[m4_pushdef([b4_dollar_dollar], - [b4_dollar_dollar_([$1], m4_dquote($][1), [$2])])dnl -m4_pushdef([b4_at_dollar], [$3])dnl -]) -m4_define([b4_dollar_popdef], -[m4_popdef([b4_at_dollar])dnl -m4_popdef([b4_dollar_dollar])dnl -]) diff --git a/tools/data/c-skel.m4 b/tools/data/c-skel.m4 deleted file mode 100644 index ccd4ae16..00000000 --- a/tools/data/c-skel.m4 +++ /dev/null @@ -1,26 +0,0 @@ - -*- Autoconf -*- - -# C skeleton dispatching for Bison. - -# Copyright (C) 2006-2007, 2009-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])]) -b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])]) - -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[yacc.c]]) -m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) - -m4_include(b4_used_skeleton) diff --git a/tools/data/c.m4 b/tools/data/c.m4 deleted file mode 100644 index b6646062..00000000 --- a/tools/data/c.m4 +++ /dev/null @@ -1,722 +0,0 @@ - -*- Autoconf -*- - -# C M4 Macros for Bison. - -# Copyright (C) 2002, 2004-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c-like.m4]) - -# b4_tocpp(STRING) -# ---------------- -# Convert STRING into a valid C macro name. -m4_define([b4_tocpp], -[m4_toupper(m4_bpatsubst(m4_quote($1), [[^a-zA-Z0-9]+], [_]))]) - - -# b4_cpp_guard(FILE) -# ------------------ -# A valid C macro name to use as a CPP header guard for FILE. -m4_define([b4_cpp_guard], -[[YY_]b4_tocpp(m4_defn([b4_prefix])/[$1])[_INCLUDED]]) - - -# b4_cpp_guard_open(FILE) -# b4_cpp_guard_close(FILE) -# ------------------------ -# If FILE does not expand to nothing, open/close CPP inclusion guards for FILE. -m4_define([b4_cpp_guard_open], -[m4_ifval(m4_quote($1), -[#ifndef b4_cpp_guard([$1]) -# define b4_cpp_guard([$1])])]) - -m4_define([b4_cpp_guard_close], -[m4_ifval(m4_quote($1), -[#endif b4_comment([!b4_cpp_guard([$1])])])]) - - -## ---------------- ## -## Identification. ## -## ---------------- ## - -# b4_comment(TEXT) -# ---------------- -m4_define([b4_comment], [/* m4_bpatsubst([$1], [ -], [ - ]) */]) - -# b4_identification -# ----------------- -# Depends on individual skeletons to define b4_pure_flag, b4_push_flag, or -# b4_pull_flag if they use the values of the %define variables api.pure or -# api.push-pull. -m4_define([b4_identification], -[[/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "]b4_version[" - -/* Skeleton name. */ -#define YYSKELETON_NAME ]b4_skeleton[]m4_ifdef([b4_pure_flag], [[ - -/* Pure parsers. */ -#define YYPURE ]b4_pure_flag])[]m4_ifdef([b4_push_flag], [[ - -/* Push parsers. */ -#define YYPUSH ]b4_push_flag])[]m4_ifdef([b4_pull_flag], [[ - -/* Pull parsers. */ -#define YYPULL ]b4_pull_flag])[ -]]) - - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# b4_api_prefix, b4_api_PREFIX -# ---------------------------- -# Corresponds to %define api.prefix -b4_percent_define_default([[api.prefix]], [[yy]]) -m4_define([b4_api_prefix], -[b4_percent_define_get([[api.prefix]])]) -m4_define([b4_api_PREFIX], -[m4_toupper(b4_api_prefix)]) - - -# b4_prefix -# --------- -# If the %name-prefix is not given, it is api.prefix. -m4_define_default([b4_prefix], [b4_api_prefix]) - -# If the %union is not named, its name is YYSTYPE. -m4_define_default([b4_union_name], [b4_api_PREFIX[]STYPE]) - - -## ------------------------ ## -## Pure/impure interfaces. ## -## ------------------------ ## - -# b4_user_args -# ------------ -m4_define([b4_user_args], -[m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])]) - - -# b4_parse_param -# -------------- -# If defined, b4_parse_param arrives double quoted, but below we prefer -# it to be single quoted. -m4_define([b4_parse_param], -b4_parse_param) - - -# b4_parse_param_for(DECL, FORMAL, BODY) -# --------------------------------------- -# Iterate over the user parameters, binding the declaration to DECL, -# the formal name to FORMAL, and evaluating the BODY. -m4_define([b4_parse_param_for], -[m4_foreach([$1_$2], m4_defn([b4_parse_param]), -[m4_pushdef([$1], m4_unquote(m4_car($1_$2)))dnl -m4_pushdef([$2], m4_shift($1_$2))dnl -$3[]dnl -m4_popdef([$2])dnl -m4_popdef([$1])dnl -])]) - -# b4_parse_param_use -# ------------------ -# `YYUSE' all the parse-params. -m4_define([b4_parse_param_use], -[b4_parse_param_for([Decl], [Formal], [ YYUSE (Formal); -])dnl -]) - - -## ------------ ## -## Data Types. ## -## ------------ ## - -# b4_int_type(MIN, MAX) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# MIN to MAX (included). -m4_define([b4_int_type], -[m4_if(b4_ints_in($@, [0], [255]), [1], [unsigned char], - b4_ints_in($@, [-128], [127]), [1], [signed char], - - b4_ints_in($@, [0], [65535]), [1], [unsigned short int], - b4_ints_in($@, [-32768], [32767]), [1], [short int], - - m4_eval([0 <= $1]), [1], [unsigned int], - - [int])]) - - -# b4_int_type_for(NAME) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# `NAME_min' to `NAME_max' (included). -m4_define([b4_int_type_for], -[b4_int_type($1_min, $1_max)]) - - -# b4_table_value_equals(TABLE, VALUE, LITERAL) -# -------------------------------------------- -# Without inducing a comparison warning from the compiler, check if the -# literal value LITERAL equals VALUE from table TABLE, which must have -# TABLE_min and TABLE_max defined. YYID must be defined as an identity -# function that suppresses warnings about constant conditions. -m4_define([b4_table_value_equals], -[m4_if(m4_eval($3 < m4_indir([b4_]$1[_min]) - || m4_indir([b4_]$1[_max]) < $3), [1], - [[YYID (0)]], - [(!!(($2) == ($3)))])]) - - -## ---------## -## Values. ## -## ---------## - - -# b4_null_define -# -------------- -# Portability issues: define a YY_NULL appropriate for the current -# language (C, C++98, or C++11). -m4_define([b4_null_define], -[# ifndef YY_NULL -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr -# else -# define YY_NULL 0 -# endif -# endif[]dnl -]) - - -# b4_null -# ------- -# Return a null pointer constant. -m4_define([b4_null], [YY_NULL]) - - - -## ------------------------- ## -## Assigning token numbers. ## -## ------------------------- ## - -# b4_token_define(TOKEN-NAME, TOKEN-NUMBER) -# ----------------------------------------- -# Output the definition of this token as #define. -m4_define([b4_token_define], -[#define $1 $2 -]) - - -# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ------------------------------------------------------- -# Output the definition of the tokens (if there are) as #defines. -m4_define([b4_token_defines], -[m4_if([$#$1], [1], [], -[/* Tokens. */ -m4_map([b4_token_define], [$@])]) -]) - - -# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER) -# --------------------------------------- -# Output the definition of this token as an enum. -m4_define([b4_token_enum], -[$1 = $2]) - - -# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ----------------------------------------------------- -# Output the definition of the tokens (if there are) as enums. -m4_define([b4_token_enums], -[m4_if([$#$1], [1], [], -[[/* Tokens. */ -#ifndef ]b4_api_PREFIX[TOKENTYPE -# define ]b4_api_PREFIX[TOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum ]b4_api_prefix[tokentype { -]m4_map_sep([ b4_token_enum], [, -], - [$@])[ - }; -#endif -]])]) - - -# b4_token_enums_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ------------------------------------------------------------- -# Output the definition of the tokens (if there are any) as enums and, if POSIX -# Yacc is enabled, as #defines. -m4_define([b4_token_enums_defines], -[b4_token_enums($@)b4_yacc_if([b4_token_defines($@)], []) -]) - - - -## --------------------------------------------- ## -## Defining C functions in both K&R and ANSI-C. ## -## --------------------------------------------- ## - - -# b4_modern_c -# ----------- -# A predicate useful in #if to determine whether C is ancient or modern. -# -# If __STDC__ is defined, the compiler is modern. IBM xlc 7.0 when run -# as 'cc' doesn't define __STDC__ (or __STDC_VERSION__) for pedantic -# reasons, but it defines __C99__FUNC__ so check that as well. -# Microsoft C normally doesn't define these macros, but it defines _MSC_VER. -# Consider a C++ compiler to be modern if it defines __cplusplus. -# -m4_define([b4_c_modern], - [[(defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER)]]) - -# b4_c_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ---------------------------------------------------------- -# Declare the function NAME. -m4_define([b4_c_function_def], -[#if b4_c_modern -b4_c_ansi_function_def($@) -#else -$2 -$1 (b4_c_knr_formal_names(m4_shift2($@))) -b4_c_knr_formal_decls(m4_shift2($@)) -#endif[]dnl -]) - - -# b4_c_ansi_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# --------------------------------------------------------------- -# Declare the function NAME in ANSI. -m4_define([b4_c_ansi_function_def], -[$2 -$1 (b4_c_ansi_formals(m4_shift2($@)))[]dnl -]) - - -# b4_c_ansi_formals([DECL1, NAME1], ...) -# -------------------------------------- -# Output the arguments ANSI-C definition. -m4_define([b4_c_ansi_formals], -[m4_if([$#], [0], [void], - [$#$1], [1], [void], - [m4_map_sep([b4_c_ansi_formal], [, ], [$@])])]) - -m4_define([b4_c_ansi_formal], -[$1]) - - -# b4_c_knr_formal_names([DECL1, NAME1], ...) -# ------------------------------------------ -# Output the argument names. -m4_define([b4_c_knr_formal_names], -[m4_map_sep([b4_c_knr_formal_name], [, ], [$@])]) - -m4_define([b4_c_knr_formal_name], -[$2]) - - -# b4_c_knr_formal_decls([DECL1, NAME1], ...) -# ------------------------------------------ -# Output the K&R argument declarations. -m4_define([b4_c_knr_formal_decls], -[m4_map_sep([b4_c_knr_formal_decl], - [ -], - [$@])]) - -m4_define([b4_c_knr_formal_decl], -[ $1;]) - - - -## ------------------------------------------------------------ ## -## Declaring (prototyping) C functions in both K&R and ANSI-C. ## -## ------------------------------------------------------------ ## - - -# b4_c_ansi_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ---------------------------------------------------------------- -# Declare the function NAME ANSI C style. -m4_define([b4_c_ansi_function_decl], -[$2 $1 (b4_c_ansi_formals(m4_shift2($@)));[]dnl -]) - - - -# b4_c_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ----------------------------------------------------------- -# Declare the function NAME in both K&R and ANSI C. -m4_define([b4_c_function_decl], -[#if defined __STDC__ || defined __cplusplus -b4_c_ansi_function_decl($@) -#else -$2 $1 (); -#endif[]dnl -]) - - - -## --------------------- ## -## Calling C functions. ## -## --------------------- ## - - -# b4_c_function_call(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ----------------------------------------------------------- -# Call the function NAME with arguments NAME1, NAME2 etc. -m4_define([b4_c_function_call], -[$1 (b4_c_args(m4_shift2($@)))[]dnl -]) - - -# b4_c_args([DECL1, NAME1], ...) -# ------------------------------ -# Output the arguments NAME1, NAME2... -m4_define([b4_c_args], -[m4_map_sep([b4_c_arg], [, ], [$@])]) - -m4_define([b4_c_arg], -[$2]) - - -## ----------- ## -## Synclines. ## -## ----------- ## - -# b4_sync_start(LINE, FILE) -# ----------------------- -m4_define([b4_sync_start], [[#]line $1 $2]) - - -## -------------- ## -## User actions. ## -## -------------- ## - -# b4_case(LABEL, STATEMENTS) -# -------------------------- -m4_define([b4_case], -[ case $1: -$2 - break;]) - -# b4_symbol_actions(FILENAME, LINENO, -# SYMBOL-TAG, SYMBOL-NUM, -# SYMBOL-ACTION, SYMBOL-TYPENAME) -# ------------------------------------------------- -# Issue the code for a symbol action (e.g., %printer). -# -# Define b4_dollar_dollar([TYPE-NAME]), and b4_at_dollar, which are -# invoked where $$ and @$ were specified by the user. -m4_define([b4_symbol_actions], -[b4_dollar_pushdef([(*yyvaluep)], [$6], [(*yylocationp)])dnl - case $4: /* $3 */ -b4_syncline([$2], [$1]) - $5; -b4_syncline([@oline@], [@ofile@]) - break; -b4_dollar_popdef[]dnl -]) - - -# b4_yydestruct_generate(FUNCTION-DECLARATOR) -# ------------------------------------------- -# Generate the "yydestruct" function, which declaration is issued using -# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C -# or "b4_c_function_def" for K&R. -m4_define_default([b4_yydestruct_generate], -[[/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -/*ARGSUSED*/ -]$1([yydestruct], - [static void], - [[const char *yymsg], [yymsg]], - [[int yytype], [yytype]], - [[YYSTYPE *yyvaluep], [yyvaluep]][]dnl -b4_locations_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl -m4_ifset([b4_parse_param], [, b4_parse_param]))[ -{ - YYUSE (yyvaluep); -]b4_locations_if([ YYUSE (yylocationp); -])dnl -b4_parse_param_use[]dnl -[ - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { -]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[ - default: - break; - } -}]dnl -]) - - -# b4_yy_symbol_print_generate(FUNCTION-DECLARATOR) -# ------------------------------------------------ -# Generate the "yy_symbol_print" function, which declaration is issued using -# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C -# or "b4_c_function_def" for K&R. -m4_define_default([b4_yy_symbol_print_generate], -[[ -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -]$1([yy_symbol_value_print], - [static void], - [[FILE *yyoutput], [yyoutput]], - [[int yytype], [yytype]], - [[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl -b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl -m4_ifset([b4_parse_param], [, b4_parse_param]))[ -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; -]b4_locations_if([ YYUSE (yylocationp); -])dnl -b4_parse_param_use[]dnl -[# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); -# endif - switch (yytype) - { -]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl -[ default: - break; - } -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -]$1([yy_symbol_print], - [static void], - [[FILE *yyoutput], [yyoutput]], - [[int yytype], [yytype]], - [[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl -b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl -m4_ifset([b4_parse_param], [, b4_parse_param]))[ -{ - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - -]b4_locations_if([ YY_LOCATION_PRINT (yyoutput, *yylocationp); - YYFPRINTF (yyoutput, ": "); -])dnl -[ yy_symbol_value_print (yyoutput, yytype, yyvaluep]dnl -b4_locations_if([, yylocationp])[]b4_user_args[); - YYFPRINTF (yyoutput, ")"); -}]dnl -]) - -## -------------- ## -## Declarations. ## -## -------------- ## - -# b4_declare_yylstype -# ------------------- -# Declarations that might either go into the header (if --defines) or -# in the parser body. Declare YYSTYPE/YYLTYPE, and yylval/yylloc. -m4_define([b4_declare_yylstype], -[[#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED -]m4_ifdef([b4_stype], -[[typedef union ]b4_union_name[ -{ -]b4_user_stype[ -} ]b4_api_PREFIX[STYPE; -# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]], -[m4_if(b4_tag_seen_flag, 0, -[[typedef int ]b4_api_PREFIX[STYPE; -# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]])])[ -# define ]b4_api_prefix[stype ]b4_api_PREFIX[STYPE /* obsolescent; will be withdrawn */ -# define ]b4_api_PREFIX[STYPE_IS_DECLARED 1 -#endif]b4_locations_if([[ - -#if ! defined ]b4_api_PREFIX[LTYPE && ! defined ]b4_api_PREFIX[LTYPE_IS_DECLARED -typedef struct ]b4_api_PREFIX[LTYPE -{ - int first_line; - int first_column; - int last_line; - int last_column; -} ]b4_api_PREFIX[LTYPE; -# define ]b4_api_prefix[ltype ]b4_api_PREFIX[LTYPE /* obsolescent; will be withdrawn */ -# define ]b4_api_PREFIX[LTYPE_IS_DECLARED 1 -# define ]b4_api_PREFIX[LTYPE_IS_TRIVIAL 1 -#endif]]) - -b4_pure_if([], [[extern ]b4_api_PREFIX[STYPE ]b4_prefix[lval; -]b4_locations_if([[extern ]b4_api_PREFIX[LTYPE ]b4_prefix[lloc;]])])[]dnl -]) - -# b4_YYDEBUG_define -# ------------------ -m4_define([b4_YYDEBUG_define], -[[/* Enabling traces. */ -]m4_if(b4_api_prefix, [yy], -[[#ifndef YYDEBUG -# define YYDEBUG ]b4_debug_flag[ -#endif]], -[[#ifndef ]b4_api_PREFIX[DEBUG -# if defined YYDEBUG -# if YYDEBUG -# define ]b4_api_PREFIX[DEBUG 1 -# else -# define ]b4_api_PREFIX[DEBUG 0 -# endif -# else /* ! defined YYDEBUG */ -# define ]b4_api_PREFIX[DEBUG ]b4_debug_flag[ -# endif /* ! defined YYDEBUG */ -#endif /* ! defined ]b4_api_PREFIX[DEBUG */]])[]dnl -]) - -# b4_declare_yydebug -# ------------------ -m4_define([b4_declare_yydebug], -[b4_YYDEBUG_define[ -#if ]b4_api_PREFIX[DEBUG -extern int ]b4_prefix[debug; -#endif][]dnl -]) - -# b4_yylloc_default_define -# ------------------------ -# Define YYLLOC_DEFAULT. -m4_define([b4_yylloc_default_define], -[[/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif -]]) - -# b4_yy_location_print_define -# --------------------------- -# Define YY_LOCATION_PRINT. -m4_define([b4_yy_location_print_define], -[b4_locations_if([[ -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ -# endif -#endif - -#ifndef YY_LOCATION_PRINT -# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL - -/* Print *YYLOCP on YYO. Private, do not rely on its existence. */ - -__attribute__((__unused__)) -]b4_c_function_def([yy_location_print_], - [static unsigned], - [[FILE *yyo], [yyo]], - [[YYLTYPE const * const yylocp], [yylocp]])[ -{ - unsigned res = 0; - int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; - if (0 <= yylocp->first_line) - { - res += fprintf (yyo, "%d", yylocp->first_line); - if (0 <= yylocp->first_column) - res += fprintf (yyo, ".%d", yylocp->first_column); - } - if (0 <= yylocp->last_line) - { - if (yylocp->first_line < yylocp->last_line) - { - res += fprintf (yyo, "-%d", yylocp->last_line); - if (0 <= end_col) - res += fprintf (yyo, ".%d", end_col); - } - else if (0 <= end_col && yylocp->first_column < end_col) - res += fprintf (yyo, "-%d", end_col); - } - return res; - } - -# define YY_LOCATION_PRINT(File, Loc) \ - yy_location_print_ (File, &(Loc)) - -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif]], -[[/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif]]) -]) - -# b4_yyloc_default -# ---------------- -# Expand to a possible default value for yylloc. -m4_define([b4_yyloc_default], -[[ -# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL - = { ]m4_join([, ], - m4_defn([b4_location_initial_line]), - m4_defn([b4_location_initial_column]), - m4_defn([b4_location_initial_line]), - m4_defn([b4_location_initial_column]))[ } -# endif -]]) diff --git a/tools/data/glr.c b/tools/data/glr.c deleted file mode 100644 index 02a76c21..00000000 --- a/tools/data/glr.c +++ /dev/null @@ -1,2589 +0,0 @@ - -*- C -*- - -# GLR skeleton for Bison - -# Copyright (C) 2002-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# If we are loaded by glr.cc, do not override c++.m4 definitions by -# those of c.m4. -m4_if(b4_skeleton, ["glr.c"], - [m4_include(b4_pkgdatadir/[c.m4])]) - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# Stack parameters. -m4_define_default([b4_stack_depth_max], [10000]) -m4_define_default([b4_stack_depth_init], [200]) - - - -## ------------------------ ## -## Pure/impure interfaces. ## -## ------------------------ ## - -b4_define_flag_if([pure]) -# If glr.cc is including this file and thus has already set b4_pure_flag, -# do not change the value of b4_pure_flag, and do not record a use of api.pure. -m4_ifndef([b4_pure_flag], -[b4_percent_define_default([[api.pure]], [[false]]) - m4_define([b4_pure_flag], - [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])]) - -# b4_user_formals -# --------------- -# The possible parse-params formal arguments preceded by a comma. -# -# This is not shared with yacc.c in c.m4 because GLR relies on ISO C -# formal argument declarations. -m4_define([b4_user_formals], -[m4_ifset([b4_parse_param], [, b4_c_ansi_formals(b4_parse_param)])]) - - -# b4_lex_param -# ------------ -# Accumule in b4_lex_param all the yylex arguments. -# Yes, this is quite ugly... -m4_define([b4_lex_param], -m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl -b4_locations_if([, [[YYLTYPE *], [&yylloc]]])])dnl -m4_ifdef([b4_lex_param], [, ]b4_lex_param))) - - -# b4_yyerror_args -# --------------- -# Optional effective arguments passed to yyerror: user args plus yylloc, and -# a trailing comma. -m4_define([b4_yyerror_args], -[b4_pure_if([b4_locations_if([yylocp, ])])dnl -m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) - - -# b4_lyyerror_args -# ---------------- -# Same as above, but on the lookahead, hence &yylloc instead of yylocp. -m4_define([b4_lyyerror_args], -[b4_pure_if([b4_locations_if([&yylloc, ])])dnl -m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) - - -# b4_pure_args -# ------------ -# Same as b4_yyerror_args, but with a leading comma. -m4_define([b4_pure_args], -[b4_pure_if([b4_locations_if([, yylocp])])[]b4_user_args]) - - -# b4_lpure_args -# ------------- -# Same as above, but on the lookahead, hence &yylloc instead of yylocp. -m4_define([b4_lpure_args], -[b4_pure_if([b4_locations_if([, &yylloc])])[]b4_user_args]) - - - -# b4_pure_formals -# --------------- -# Arguments passed to yyerror: user formals plus yylocp with leading comma. -m4_define([b4_pure_formals], -[b4_pure_if([b4_locations_if([, YYLTYPE *yylocp])])[]b4_user_formals]) - - -# b4_locuser_formals(LOC = yylocp) -# -------------------------------- -m4_define([b4_locuser_formals], -[b4_locations_if([, YYLTYPE *m4_default([$1], [yylocp])])[]b4_user_formals]) - - -# b4_locuser_args(LOC = yylocp) -# ----------------------------- -m4_define([b4_locuser_args], -[b4_locations_if([, m4_default([$1], [yylocp])])[]b4_user_args]) - - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], -[((*yyvalp)[]m4_ifval([$1], [.$1]))]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -m4_define([b4_rhs_value], -[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3]))]) - - - -## ----------- ## -## Locations. ## -## ----------- ## - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(*yylocp)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yyloc)]) - - -## -------------- ## -## Declarations. ## -## -------------- ## - -# b4_shared_declarations -# ---------------------- -# Declaration that might either go into the header (if --defines) -# or open coded in the parser body. -m4_define([b4_shared_declarations], -[b4_declare_yydebug[ -]b4_percent_code_get([[requires]])[ -]b4_token_enums(b4_tokens)[ -]b4_declare_yylstype[ -]b4_c_ansi_function_decl(b4_prefix[parse], [int], b4_parse_param)[ -]b4_percent_code_get([[provides]])[]dnl -]) - - -## -------------- ## -## Output files. ## -## -------------- ## - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Skeleton implementation for Bison GLR parsers in C], - [2002-2012])[ - -/* C GLR parser skeleton written by Paul Hilfinger. */ - -]b4_identification - -b4_percent_code_get([[top]])[ -]m4_if(b4_api_prefix, [yy], [], -[[/* Substitute the type names. */ -#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[ -#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[ -]m4_if(b4_prefix, [yy], [], -[[/* Substitute the variable and function names. */ -#define yyparse ]b4_prefix[parse -#define yylex ]b4_prefix[lex -#define yyerror ]b4_prefix[error -#define yylval ]b4_prefix[lval -#define yychar ]b4_prefix[char -#define yydebug ]b4_prefix[debug -#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[ -#define yylloc ]b4_prefix[lloc]])])[ - -/* Copy the first part of user declarations. */ -]b4_user_pre_prologue[ - -]b4_null_define[ - -]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]], - [b4_shared_declarations])[ - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ -#endif - -/* Default (constant) value used for initialization for null - right-hand sides. Unlike the standard yacc.c template, here we set - the default value of $$ to a zeroed-out value. Since the default - value is undefined, this behavior is technically correct. */ -static YYSTYPE yyval_default;]b4_locations_if([[ -static YYLTYPE yyloc_default][]b4_yyloc_default;])[ - -/* Copy the second part of user declarations. */ -]b4_user_post_prologue -b4_percent_code_get[]dnl - -[#include -#include -#include - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -]b4_c_function_def([YYID], [static int], [[int i], [i]])[ -{ - return i; -} -#endif - -#ifndef YYFREE -# define YYFREE free -#endif -#ifndef YYMALLOC -# define YYMALLOC malloc -#endif -#ifndef YYREALLOC -# define YYREALLOC realloc -#endif - -#define YYSIZEMAX ((size_t) -1) - -#ifdef __cplusplus - typedef bool yybool; -#else - typedef unsigned char yybool; -#endif -#define yytrue 1 -#define yyfalse 0 - -#ifndef YYSETJMP -# include -# define YYJMP_BUF jmp_buf -# define YYSETJMP(Env) setjmp (Env) -/* Pacify clang. */ -# define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0)) -#endif - -/*-----------------. -| GCC extensions. | -`-----------------*/ - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ -# endif -#endif - -#ifndef YYASSERT -# define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0))) -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL ]b4_final_state_number[ -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST ]b4_last[ - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS ]b4_tokens_number[ -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS ]b4_nterms_number[ -/* YYNRULES -- Number of rules. */ -#define YYNRULES ]b4_rules_number[ -/* YYNRULES -- Number of states. */ -#define YYNSTATES ]b4_states_number[ -/* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */ -#define YYMAXRHS ]b4_r2_max[ -/* YYMAXLEFT -- Maximum number of symbols to the left of a handle - accessed by $0, $-1, etc., in any rule. */ -#define YYMAXLEFT ]b4_max_left_semantic_context[ - -/* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */ -#define YYUNDEFTOK ]b4_undef_token_number[ -#define YYMAXUTOK ]b4_user_token_number_max[ - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const ]b4_int_type_for([b4_translate])[ yytranslate[] = -{ - ]b4_translate[ -}; - -#if ]b4_api_PREFIX[DEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const ]b4_int_type_for([b4_prhs])[ yyprhs[] = -{ - ]b4_prhs[ -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const ]b4_int_type_for([b4_rhs])[ yyrhs[] = -{ - ]b4_rhs[ -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const ]b4_int_type_for([b4_rline])[ yyrline[] = -{ - ]b4_rline[ -}; -#endif - -#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[ -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - ]b4_tname[ -}; -#endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const ]b4_int_type_for([b4_r1])[ yyr1[] = -{ - ]b4_r1[ -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const ]b4_int_type_for([b4_r2])[ yyr2[] = -{ - ]b4_r2[ -}; - -/* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ -static const ]b4_int_type_for([b4_dprec])[ yydprec[] = -{ - ]b4_dprec[ -}; - -/* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ -static const ]b4_int_type_for([b4_merger])[ yymerger[] = -{ - ]b4_merger[ -}; - -/* YYDEFACT[S] -- default reduction number in state S. Performed when - YYTABLE doesn't specify something else to do. Zero means the default - is an error. */ -static const ]b4_int_type_for([b4_defact])[ yydefact[] = -{ - ]b4_defact[ -}; - -/* YYPDEFGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] = -{ - ]b4_defgoto[ -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF ]b4_pact_ninf[ -static const ]b4_int_type_for([b4_pact])[ yypact[] = -{ - ]b4_pact[ -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] = -{ - ]b4_pgoto[ -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF ]b4_table_ninf[ -static const ]b4_int_type_for([b4_table])[ yytable[] = -{ - ]b4_table[ -}; - -/* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of - list of conflicting reductions corresponding to action entry for - state STATE-NUM in yytable. 0 means no conflicts. The list in - yyconfl is terminated by a rule number of 0. */ -static const ]b4_int_type_for([b4_conflict_list_heads])[ yyconflp[] = -{ - ]b4_conflict_list_heads[ -}; - -/* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by - 0, pointed into by YYCONFLP. */ -]dnl Do not use b4_int_type_for here, since there are places where -dnl pointers onto yyconfl are taken, which type is "short int *". -dnl We probably ought to introduce a type for confl. -[static const short int yyconfl[] = -{ - ]b4_conflicting_rules[ -}; - -static const ]b4_int_type_for([b4_check])[ yycheck[] = -{ - ]b4_check[ -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const ]b4_int_type_for([b4_stos])[ yystos[] = -{ - ]b4_stos[ -}; - -/* Error token number */ -#define YYTERROR 1 - -]b4_locations_if([[ -]b4_yylloc_default_define[ -# define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) -]])[ -]b4_yy_location_print_define[ - -/* YYLEX -- calling `yylex' with the right arguments. */ -#define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ - -]b4_pure_if( -[ -#undef yynerrs -#define yynerrs (yystackp->yyerrcnt) -#undef yychar -#define yychar (yystackp->yyrawchar) -#undef yylval -#define yylval (yystackp->yyval) -#undef yylloc -#define yylloc (yystackp->yyloc) -m4_if(b4_prefix[], [yy], [], -[#define b4_prefix[]nerrs yynerrs -#define b4_prefix[]char yychar -#define b4_prefix[]lval yylval -#define b4_prefix[]lloc yylloc])], -[YYSTYPE yylval;]b4_locations_if([[ -YYLTYPE yylloc;]])[ - -int yynerrs; -int yychar;])[ - -static const int YYEOF = 0; -static const int YYEMPTY = -2; - -typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; - -#define YYCHK(YYE) \ - do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \ - while (YYID (0)) - -#if ]b4_api_PREFIX[DEBUG - -# ifndef YYFPRINTF -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -]b4_yy_symbol_print_generate([b4_c_ansi_function_def])[ - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, Type, Value]b4_locuser_args([Location])[); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; - -#else /* !]b4_api_PREFIX[DEBUG */ - -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) - -#endif /* !]b4_api_PREFIX[DEBUG */ - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH ]b4_stack_depth_init[ -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH ]b4_stack_depth_max[ -#endif - -/* Minimum number of free items on the stack allowed after an - allocation. This is to allow allocation and initialization - to be completed by functions that call yyexpandGLRStack before the - stack is expanded, thus insuring that all necessary pointers get - properly redirected to new data. */ -#define YYHEADROOM 2 - -#ifndef YYSTACKEXPANDABLE -# if (! defined __cplusplus \ - || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \ - && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL)) -# define YYSTACKEXPANDABLE 1 -# else -# define YYSTACKEXPANDABLE 0 -# endif -#endif - -#if YYSTACKEXPANDABLE -# define YY_RESERVE_GLRSTACK(Yystack) \ - do { \ - if (Yystack->yyspaceLeft < YYHEADROOM) \ - yyexpandGLRStack (Yystack); \ - } while (YYID (0)) -#else -# define YY_RESERVE_GLRSTACK(Yystack) \ - do { \ - if (Yystack->yyspaceLeft < YYHEADROOM) \ - yyMemoryExhausted (Yystack); \ - } while (YYID (0)) -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static size_t -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - size_t yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return strlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -#endif /* !YYERROR_VERBOSE */ - -/** State numbers, as in LALR(1) machine */ -typedef int yyStateNum; - -/** Rule numbers, as in LALR(1) machine */ -typedef int yyRuleNum; - -/** Grammar symbol */ -typedef short int yySymbol; - -/** Item references, as in LALR(1) machine */ -typedef short int yyItemNum; - -typedef struct yyGLRState yyGLRState; -typedef struct yyGLRStateSet yyGLRStateSet; -typedef struct yySemanticOption yySemanticOption; -typedef union yyGLRStackItem yyGLRStackItem; -typedef struct yyGLRStack yyGLRStack; - -struct yyGLRState { - /** Type tag: always true. */ - yybool yyisState; - /** Type tag for yysemantics. If true, yysval applies, otherwise - * yyfirstVal applies. */ - yybool yyresolved; - /** Number of corresponding LALR(1) machine state. */ - yyStateNum yylrState; - /** Preceding state in this stack */ - yyGLRState* yypred; - /** Source position of the first token produced by my symbol */ - size_t yyposn; - union { - /** First in a chain of alternative reductions producing the - * non-terminal corresponding to this state, threaded through - * yynext. */ - yySemanticOption* yyfirstVal; - /** Semantic value for this state. */ - YYSTYPE yysval; - } yysemantics;]b4_locations_if([[ - /** Source location for this state. */ - YYLTYPE yyloc;]])[ -}; - -struct yyGLRStateSet { - yyGLRState** yystates; - /** During nondeterministic operation, yylookaheadNeeds tracks which - * stacks have actually needed the current lookahead. During deterministic - * operation, yylookaheadNeeds[0] is not maintained since it would merely - * duplicate yychar != YYEMPTY. */ - yybool* yylookaheadNeeds; - size_t yysize, yycapacity; -}; - -struct yySemanticOption { - /** Type tag: always false. */ - yybool yyisState; - /** Rule number for this reduction */ - yyRuleNum yyrule; - /** The last RHS state in the list of states to be reduced. */ - yyGLRState* yystate; - /** The lookahead for this reduction. */ - int yyrawchar; - YYSTYPE yyval;]b4_locations_if([[ - YYLTYPE yyloc;]])[ - /** Next sibling in chain of options. To facilitate merging, - * options are chained in decreasing order by address. */ - yySemanticOption* yynext; -}; - -/** Type of the items in the GLR stack. The yyisState field - * indicates which item of the union is valid. */ -union yyGLRStackItem { - yyGLRState yystate; - yySemanticOption yyoption; -}; - -struct yyGLRStack { - int yyerrState; -]b4_locations_if([[ /* To compute the location of the error token. */ - yyGLRStackItem yyerror_range[3];]])[ -]b4_pure_if( -[ - int yyerrcnt; - int yyrawchar; - YYSTYPE yyval;]b4_locations_if([[ - YYLTYPE yyloc;]])[ -])[ - YYJMP_BUF yyexception_buffer; - yyGLRStackItem* yyitems; - yyGLRStackItem* yynextFree; - size_t yyspaceLeft; - yyGLRState* yysplitPoint; - yyGLRState* yylastDeleted; - yyGLRStateSet yytops; -}; - -#if YYSTACKEXPANDABLE -static void yyexpandGLRStack (yyGLRStack* yystackp); -#endif - -static void yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) - __attribute__ ((__noreturn__)); -static void -yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) -{ - if (yymsg != YY_NULL) - yyerror (]b4_yyerror_args[yymsg); - YYLONGJMP (yystackp->yyexception_buffer, 1); -} - -static void yyMemoryExhausted (yyGLRStack* yystackp) - __attribute__ ((__noreturn__)); -static void -yyMemoryExhausted (yyGLRStack* yystackp) -{ - YYLONGJMP (yystackp->yyexception_buffer, 2); -} - -#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE -/** A printable representation of TOKEN. */ -static inline const char* -yytokenName (yySymbol yytoken) -{ - if (yytoken == YYEMPTY) - return ""; - - return yytname[yytoken]; -} -#endif - -/** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting - * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred - * containing the pointer to the next state in the chain. */ -static void yyfillin (yyGLRStackItem *, int, int) __attribute__ ((__unused__)); -static void -yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1) -{ - int i; - yyGLRState *s = yyvsp[yylow0].yystate.yypred; - for (i = yylow0-1; i >= yylow1; i -= 1) - { - YYASSERT (s->yyresolved); - yyvsp[i].yystate.yyresolved = yytrue; - yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;]b4_locations_if([[ - yyvsp[i].yystate.yyloc = s->yyloc;]])[ - s = yyvsp[i].yystate.yypred = s->yypred; - } -} - -/* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in - * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. - * For convenience, always return YYLOW1. */ -static inline int yyfill (yyGLRStackItem *, int *, int, yybool) - __attribute__ ((__unused__)); -static inline int -yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal) -{ - if (!yynormal && yylow1 < *yylow) - { - yyfillin (yyvsp, *yylow, yylow1); - *yylow = yylow1; - } - return yylow1; -} - -/** Perform user action for rule number YYN, with RHS length YYRHSLEN, - * and top stack item YYVSP. YYLVALP points to place to put semantic - * value ($$), and yylocp points to place for location information - * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT, - * yyerr for YYERROR, yyabort for YYABORT. */ -/*ARGSUSED*/ static YYRESULTTAG -yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, - yyGLRStack* yystackp, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - yybool yynormal __attribute__ ((__unused__)) = - (yystackp->yysplitPoint == YY_NULL); - int yylow; -]b4_parse_param_use[]dnl -[# undef yyerrok -# define yyerrok (yystackp->yyerrState = 0) -# undef YYACCEPT -# define YYACCEPT return yyaccept -# undef YYABORT -# define YYABORT return yyabort -# undef YYERROR -# define YYERROR return yyerrok, yyerr -# undef YYRECOVERING -# define YYRECOVERING() (yystackp->yyerrState != 0) -# undef yyclearin -# define yyclearin (yychar = YYEMPTY) -# undef YYFILL -# define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) -# undef YYBACKUP -# define YYBACKUP(Token, Value) \ - return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \ - yyerrok, yyerr - - yylow = 1; - if (yyrhslen == 0) - *yyvalp = yyval_default; - else - *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;]b4_locations_if([[ - YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen); - yystackp->yyerror_range[1].yystate.yyloc = *yylocp; -]])[ - switch (yyn) - { - ]b4_user_actions[ - default: break; - } - - return yyok; -# undef yyerrok -# undef YYABORT -# undef YYACCEPT -# undef YYERROR -# undef YYBACKUP -# undef yyclearin -# undef YYRECOVERING -} - - -/*ARGSUSED*/ static void -yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1) -{ - YYUSE (yy0); - YYUSE (yy1); - - switch (yyn) - { - ]b4_mergers[ - default: break; - } -} - - /* Bison grammar-table manipulation. */ - -]b4_yydestruct_generate([b4_c_ansi_function_def])[ - -/** Number of symbols composing the right hand side of rule #RULE. */ -static inline int -yyrhsLength (yyRuleNum yyrule) -{ - return yyr2[yyrule]; -} - -static void -yydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[) -{ - if (yys->yyresolved) - yydestruct (yymsg, yystos[yys->yylrState], - &yys->yysemantics.yysval]b4_locuser_args([&yys->yyloc])[); - else - { -#if ]b4_api_PREFIX[DEBUG - if (yydebug) - { - if (yys->yysemantics.yyfirstVal) - YYFPRINTF (stderr, "%s unresolved ", yymsg); - else - YYFPRINTF (stderr, "%s incomplete ", yymsg); - yy_symbol_print (stderr, yystos[yys->yylrState], - YY_NULL]b4_locuser_args([&yys->yyloc])[); - YYFPRINTF (stderr, "\n"); - } -#endif - - if (yys->yysemantics.yyfirstVal) - { - yySemanticOption *yyoption = yys->yysemantics.yyfirstVal; - yyGLRState *yyrh; - int yyn; - for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule); - yyn > 0; - yyrh = yyrh->yypred, yyn -= 1) - yydestroyGLRState (yymsg, yyrh]b4_user_args[); - } - } -} - -/** Left-hand-side symbol for rule #RULE. */ -static inline yySymbol -yylhsNonterm (yyRuleNum yyrule) -{ - return yyr1[yyrule]; -} - -#define yypact_value_is_default(Yystate) \ - ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[ - -/** True iff LR state STATE has only a default reduction (regardless - * of token). */ -static inline yybool -yyisDefaultedState (yyStateNum yystate) -{ - return yypact_value_is_default (yypact[yystate]); -} - -/** The default reduction for STATE, assuming it has one. */ -static inline yyRuleNum -yydefaultAction (yyStateNum yystate) -{ - return yydefact[yystate]; -} - -#define yytable_value_is_error(Yytable_value) \ - ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[ - -/** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. - * Result R means - * R < 0: Reduce on rule -R. - * R = 0: Error. - * R > 0: Shift to state R. - * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of - * conflicting reductions. - */ -static inline void -yygetLRActions (yyStateNum yystate, int yytoken, - int* yyaction, const short int** yyconflicts) -{ - int yyindex = yypact[yystate] + yytoken; - if (yypact_value_is_default (yypact[yystate]) - || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken) - { - *yyaction = -yydefact[yystate]; - *yyconflicts = yyconfl; - } - else if (! yytable_value_is_error (yytable[yyindex])) - { - *yyaction = yytable[yyindex]; - *yyconflicts = yyconfl + yyconflp[yyindex]; - } - else - { - *yyaction = 0; - *yyconflicts = yyconfl + yyconflp[yyindex]; - } -} - -static inline yyStateNum -yyLRgotoState (yyStateNum yystate, yySymbol yylhs) -{ - int yyr; - yyr = yypgoto[yylhs - YYNTOKENS] + yystate; - if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate) - return yytable[yyr]; - else - return yydefgoto[yylhs - YYNTOKENS]; -} - -static inline yybool -yyisShiftAction (int yyaction) -{ - return 0 < yyaction; -} - -static inline yybool -yyisErrorAction (int yyaction) -{ - return yyaction == 0; -} - - /* GLRStates */ - -/** Return a fresh GLRStackItem. Callers should call - * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient - * headroom. */ - -static inline yyGLRStackItem* -yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState) -{ - yyGLRStackItem* yynewItem = yystackp->yynextFree; - yystackp->yyspaceLeft -= 1; - yystackp->yynextFree += 1; - yynewItem->yystate.yyisState = yyisState; - return yynewItem; -} - -/** Add a new semantic action that will execute the action for rule - * RULENUM on the semantic values in RHS to the list of - * alternative actions for STATE. Assumes that RHS comes from - * stack #K of *STACKP. */ -static void -yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate, - yyGLRState* rhs, yyRuleNum yyrule) -{ - yySemanticOption* yynewOption = - &yynewGLRStackItem (yystackp, yyfalse)->yyoption; - yynewOption->yystate = rhs; - yynewOption->yyrule = yyrule; - if (yystackp->yytops.yylookaheadNeeds[yyk]) - { - yynewOption->yyrawchar = yychar; - yynewOption->yyval = yylval;]b4_locations_if([ - yynewOption->yyloc = yylloc;])[ - } - else - yynewOption->yyrawchar = YYEMPTY; - yynewOption->yynext = yystate->yysemantics.yyfirstVal; - yystate->yysemantics.yyfirstVal = yynewOption; - - YY_RESERVE_GLRSTACK (yystackp); -} - - /* GLRStacks */ - -/** Initialize SET to a singleton set containing an empty stack. */ -static yybool -yyinitStateSet (yyGLRStateSet* yyset) -{ - yyset->yysize = 1; - yyset->yycapacity = 16; - yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]); - if (! yyset->yystates) - return yyfalse; - yyset->yystates[0] = YY_NULL; - yyset->yylookaheadNeeds = - (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]); - if (! yyset->yylookaheadNeeds) - { - YYFREE (yyset->yystates); - return yyfalse; - } - return yytrue; -} - -static void yyfreeStateSet (yyGLRStateSet* yyset) -{ - YYFREE (yyset->yystates); - YYFREE (yyset->yylookaheadNeeds); -} - -/** Initialize STACK to a single empty stack, with total maximum - * capacity for all stacks of SIZE. */ -static yybool -yyinitGLRStack (yyGLRStack* yystackp, size_t yysize) -{ - yystackp->yyerrState = 0; - yynerrs = 0; - yystackp->yyspaceLeft = yysize; - yystackp->yyitems = - (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]); - if (!yystackp->yyitems) - return yyfalse; - yystackp->yynextFree = yystackp->yyitems; - yystackp->yysplitPoint = YY_NULL; - yystackp->yylastDeleted = YY_NULL; - return yyinitStateSet (&yystackp->yytops); -} - - -#if YYSTACKEXPANDABLE -# define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ - &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE - -/** If STACK is expandable, extend it. WARNING: Pointers into the - stack from outside should be considered invalid after this call. - We always expand when there are 1 or fewer items left AFTER an - allocation, so that we can avoid having external pointers exist - across an allocation. */ -static void -yyexpandGLRStack (yyGLRStack* yystackp) -{ - yyGLRStackItem* yynewItems; - yyGLRStackItem* yyp0, *yyp1; - size_t yynewSize; - size_t yyn; - size_t yysize = yystackp->yynextFree - yystackp->yyitems; - if (YYMAXDEPTH - YYHEADROOM < yysize) - yyMemoryExhausted (yystackp); - yynewSize = 2*yysize; - if (YYMAXDEPTH < yynewSize) - yynewSize = YYMAXDEPTH; - yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]); - if (! yynewItems) - yyMemoryExhausted (yystackp); - for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize; - 0 < yyn; - yyn -= 1, yyp0 += 1, yyp1 += 1) - { - *yyp1 = *yyp0; - if (*(yybool *) yyp0) - { - yyGLRState* yys0 = &yyp0->yystate; - yyGLRState* yys1 = &yyp1->yystate; - if (yys0->yypred != YY_NULL) - yys1->yypred = - YYRELOC (yyp0, yyp1, yys0->yypred, yystate); - if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULL) - yys1->yysemantics.yyfirstVal = - YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption); - } - else - { - yySemanticOption* yyv0 = &yyp0->yyoption; - yySemanticOption* yyv1 = &yyp1->yyoption; - if (yyv0->yystate != YY_NULL) - yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate); - if (yyv0->yynext != YY_NULL) - yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption); - } - } - if (yystackp->yysplitPoint != YY_NULL) - yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems, - yystackp->yysplitPoint, yystate); - - for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1) - if (yystackp->yytops.yystates[yyn] != YY_NULL) - yystackp->yytops.yystates[yyn] = - YYRELOC (yystackp->yyitems, yynewItems, - yystackp->yytops.yystates[yyn], yystate); - YYFREE (yystackp->yyitems); - yystackp->yyitems = yynewItems; - yystackp->yynextFree = yynewItems + yysize; - yystackp->yyspaceLeft = yynewSize - yysize; -} -#endif - -static void -yyfreeGLRStack (yyGLRStack* yystackp) -{ - YYFREE (yystackp->yyitems); - yyfreeStateSet (&yystackp->yytops); -} - -/** Assuming that S is a GLRState somewhere on STACK, update the - * splitpoint of STACK, if needed, so that it is at least as deep as - * S. */ -static inline void -yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys) -{ - if (yystackp->yysplitPoint != YY_NULL && yystackp->yysplitPoint > yys) - yystackp->yysplitPoint = yys; -} - -/** Invalidate stack #K in STACK. */ -static inline void -yymarkStackDeleted (yyGLRStack* yystackp, size_t yyk) -{ - if (yystackp->yytops.yystates[yyk] != YY_NULL) - yystackp->yylastDeleted = yystackp->yytops.yystates[yyk]; - yystackp->yytops.yystates[yyk] = YY_NULL; -} - -/** Undelete the last stack that was marked as deleted. Can only be - done once after a deletion, and only when all other stacks have - been deleted. */ -static void -yyundeleteLastStack (yyGLRStack* yystackp) -{ - if (yystackp->yylastDeleted == YY_NULL || yystackp->yytops.yysize != 0) - return; - yystackp->yytops.yystates[0] = yystackp->yylastDeleted; - yystackp->yytops.yysize = 1; - YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n")); - yystackp->yylastDeleted = YY_NULL; -} - -static inline void -yyremoveDeletes (yyGLRStack* yystackp) -{ - size_t yyi, yyj; - yyi = yyj = 0; - while (yyj < yystackp->yytops.yysize) - { - if (yystackp->yytops.yystates[yyi] == YY_NULL) - { - if (yyi == yyj) - { - YYDPRINTF ((stderr, "Removing dead stacks.\n")); - } - yystackp->yytops.yysize -= 1; - } - else - { - yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi]; - /* In the current implementation, it's unnecessary to copy - yystackp->yytops.yylookaheadNeeds[yyi] since, after - yyremoveDeletes returns, the parser immediately either enters - deterministic operation or shifts a token. However, it doesn't - hurt, and the code might evolve to need it. */ - yystackp->yytops.yylookaheadNeeds[yyj] = - yystackp->yytops.yylookaheadNeeds[yyi]; - if (yyj != yyi) - { - YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n", - (unsigned long int) yyi, (unsigned long int) yyj)); - } - yyj += 1; - } - yyi += 1; - } -} - -/** Shift to a new state on stack #K of STACK, corresponding to LR state - * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ -static inline void -yyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, - size_t yyposn, - YYSTYPE* yyvalp]b4_locations_if([, YYLTYPE* yylocp])[) -{ - yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; - - yynewState->yylrState = yylrState; - yynewState->yyposn = yyposn; - yynewState->yyresolved = yytrue; - yynewState->yypred = yystackp->yytops.yystates[yyk]; - yynewState->yysemantics.yysval = *yyvalp;]b4_locations_if([ - yynewState->yyloc = *yylocp;])[ - yystackp->yytops.yystates[yyk] = yynewState; - - YY_RESERVE_GLRSTACK (yystackp); -} - -/** Shift stack #K of YYSTACK, to a new state corresponding to LR - * state YYLRSTATE, at input position YYPOSN, with the (unresolved) - * semantic value of YYRHS under the action for YYRULE. */ -static inline void -yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, - size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule) -{ - yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; - - yynewState->yylrState = yylrState; - yynewState->yyposn = yyposn; - yynewState->yyresolved = yyfalse; - yynewState->yypred = yystackp->yytops.yystates[yyk]; - yynewState->yysemantics.yyfirstVal = YY_NULL; - yystackp->yytops.yystates[yyk] = yynewState; - - /* Invokes YY_RESERVE_GLRSTACK. */ - yyaddDeferredAction (yystackp, yyk, yynewState, rhs, yyrule); -} - -/** Pop the symbols consumed by reduction #RULE from the top of stack - * #K of STACK, and perform the appropriate semantic action on their - * semantic values. Assumes that all ambiguities in semantic values - * have been previously resolved. Set *VALP to the resulting value, - * and *LOCP to the computed location (if any). Return value is as - * for userAction. */ -static inline YYRESULTTAG -yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - int yynrhs = yyrhsLength (yyrule); - - if (yystackp->yysplitPoint == YY_NULL) - { - /* Standard special case: single stack. */ - yyGLRStackItem* rhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; - YYASSERT (yyk == 0); - yystackp->yynextFree -= yynrhs; - yystackp->yyspaceLeft += yynrhs; - yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate; - return yyuserAction (yyrule, yynrhs, rhs, yystackp, - yyvalp]b4_locuser_args[); - } - else - { - /* At present, doAction is never called in nondeterministic - * mode, so this branch is never taken. It is here in - * anticipation of a future feature that will allow immediate - * evaluation of selected actions in nondeterministic mode. */ - int yyi; - yyGLRState* yys; - yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; - yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred - = yystackp->yytops.yystates[yyk];]b4_locations_if([[ - if (yynrhs == 0) - /* Set default location. */ - yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;]])[ - for (yyi = 0; yyi < yynrhs; yyi += 1) - { - yys = yys->yypred; - YYASSERT (yys); - } - yyupdateSplit (yystackp, yys); - yystackp->yytops.yystates[yyk] = yys; - return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, - yystackp, yyvalp]b4_locuser_args[); - } -} - -#if !]b4_api_PREFIX[DEBUG -# define YY_REDUCE_PRINT(Args) -#else -# define YY_REDUCE_PRINT(Args) \ -do { \ - if (yydebug) \ - yy_reduce_print Args; \ -} while (YYID (0)) - -/*----------------------------------------------------------. -| Report that the RULE is going to be reduced on stack #K. | -`----------------------------------------------------------*/ - -/*ARGSUSED*/ static inline void -yy_reduce_print (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - int yynrhs = yyrhsLength (yyrule); - yybool yynormal __attribute__ ((__unused__)) = - (yystackp->yysplitPoint == YY_NULL); - yyGLRStackItem* yyvsp = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; - int yylow = 1; - int yyi; - YYUSE (yyvalp);]b4_locations_if([ - YYUSE (yylocp);])[ -]b4_parse_param_use[]dnl -[ YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n", - (unsigned long int) yyk, yyrule - 1, - (unsigned long int) yyrline[yyrule]); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &]b4_rhs_value(yynrhs, yyi + 1)[ - ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl - b4_user_args[); - YYFPRINTF (stderr, "\n"); - } -} -#endif - -/** Pop items off stack #K of STACK according to grammar rule RULE, - * and push back on the resulting nonterminal symbol. Perform the - * semantic action associated with RULE and store its value with the - * newly pushed state, if FORCEEVAL or if STACK is currently - * unambiguous. Otherwise, store the deferred semantic action with - * the new state. If the new state would have an identical input - * position, LR state, and predecessor to an existing state on the stack, - * it is identified with that existing state, eliminating stack #K from - * the STACK. In this case, the (necessarily deferred) semantic value is - * added to the options for the existing state's semantic value. - */ -static inline YYRESULTTAG -yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, - yybool yyforceEval]b4_user_formals[) -{ - size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn; - - if (yyforceEval || yystackp->yysplitPoint == YY_NULL) - { - YYSTYPE yysval;]b4_locations_if([ - YYLTYPE yyloc;])[ - - YY_REDUCE_PRINT ((yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[)); - YYCHK (yydoAction (yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[)); - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc); - yyglrShift (yystackp, yyk, - yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState, - yylhsNonterm (yyrule)), - yyposn, &yysval]b4_locations_if([, &yyloc])[); - } - else - { - size_t yyi; - int yyn; - yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk]; - yyStateNum yynewLRState; - - for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule); - 0 < yyn; yyn -= 1) - { - yys = yys->yypred; - YYASSERT (yys); - } - yyupdateSplit (yystackp, yys); - yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule)); - YYDPRINTF ((stderr, - "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n", - (unsigned long int) yyk, yyrule - 1, yynewLRState)); - for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) - if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULL) - { - yyGLRState *yysplit = yystackp->yysplitPoint; - yyGLRState *yyp = yystackp->yytops.yystates[yyi]; - while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn) - { - if (yyp->yylrState == yynewLRState && yyp->yypred == yys) - { - yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule); - yymarkStackDeleted (yystackp, yyk); - YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n", - (unsigned long int) yyk, - (unsigned long int) yyi)); - return yyok; - } - yyp = yyp->yypred; - } - } - yystackp->yytops.yystates[yyk] = yys; - yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule); - } - return yyok; -} - -static size_t -yysplitStack (yyGLRStack* yystackp, size_t yyk) -{ - if (yystackp->yysplitPoint == YY_NULL) - { - YYASSERT (yyk == 0); - yystackp->yysplitPoint = yystackp->yytops.yystates[yyk]; - } - if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity) - { - yyGLRState** yynewStates; - yybool* yynewLookaheadNeeds; - - yynewStates = YY_NULL; - - if (yystackp->yytops.yycapacity - > (YYSIZEMAX / (2 * sizeof yynewStates[0]))) - yyMemoryExhausted (yystackp); - yystackp->yytops.yycapacity *= 2; - - yynewStates = - (yyGLRState**) YYREALLOC (yystackp->yytops.yystates, - (yystackp->yytops.yycapacity - * sizeof yynewStates[0])); - if (yynewStates == YY_NULL) - yyMemoryExhausted (yystackp); - yystackp->yytops.yystates = yynewStates; - - yynewLookaheadNeeds = - (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds, - (yystackp->yytops.yycapacity - * sizeof yynewLookaheadNeeds[0])); - if (yynewLookaheadNeeds == YY_NULL) - yyMemoryExhausted (yystackp); - yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds; - } - yystackp->yytops.yystates[yystackp->yytops.yysize] - = yystackp->yytops.yystates[yyk]; - yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize] - = yystackp->yytops.yylookaheadNeeds[yyk]; - yystackp->yytops.yysize += 1; - return yystackp->yytops.yysize-1; -} - -/** True iff Y0 and Y1 represent identical options at the top level. - * That is, they represent the same rule applied to RHS symbols - * that produce the same terminal symbols. */ -static yybool -yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1) -{ - if (yyy0->yyrule == yyy1->yyrule) - { - yyGLRState *yys0, *yys1; - int yyn; - for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, - yyn = yyrhsLength (yyy0->yyrule); - yyn > 0; - yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) - if (yys0->yyposn != yys1->yyposn) - return yyfalse; - return yytrue; - } - else - return yyfalse; -} - -/** Assuming identicalOptions (Y0,Y1), destructively merge the - * alternative semantic values for the RHS-symbols of Y1 and Y0. */ -static void -yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1) -{ - yyGLRState *yys0, *yys1; - int yyn; - for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, - yyn = yyrhsLength (yyy0->yyrule); - yyn > 0; - yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) - { - if (yys0 == yys1) - break; - else if (yys0->yyresolved) - { - yys1->yyresolved = yytrue; - yys1->yysemantics.yysval = yys0->yysemantics.yysval; - } - else if (yys1->yyresolved) - { - yys0->yyresolved = yytrue; - yys0->yysemantics.yysval = yys1->yysemantics.yysval; - } - else - { - yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal; - yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal; - while (YYID (yytrue)) - { - if (yyz1 == *yyz0p || yyz1 == YY_NULL) - break; - else if (*yyz0p == YY_NULL) - { - *yyz0p = yyz1; - break; - } - else if (*yyz0p < yyz1) - { - yySemanticOption* yyz = *yyz0p; - *yyz0p = yyz1; - yyz1 = yyz1->yynext; - (*yyz0p)->yynext = yyz; - } - yyz0p = &(*yyz0p)->yynext; - } - yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal; - } - } -} - -/** Y0 and Y1 represent two possible actions to take in a given - * parsing state; return 0 if no combination is possible, - * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */ -static int -yypreference (yySemanticOption* y0, yySemanticOption* y1) -{ - yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule; - int p0 = yydprec[r0], p1 = yydprec[r1]; - - if (p0 == p1) - { - if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1]) - return 0; - else - return 1; - } - if (p0 == 0 || p1 == 0) - return 0; - if (p0 < p1) - return 3; - if (p1 < p0) - return 2; - return 0; -} - -static YYRESULTTAG yyresolveValue (yyGLRState* yys, - yyGLRStack* yystackp]b4_user_formals[); - - -/** Resolve the previous N states starting at and including state S. If result - * != yyok, some states may have been left unresolved possibly with empty - * semantic option chains. Regardless of whether result = yyok, each state - * has been left with consistent data so that yydestroyGLRState can be invoked - * if necessary. */ -static YYRESULTTAG -yyresolveStates (yyGLRState* yys, int yyn, - yyGLRStack* yystackp]b4_user_formals[) -{ - if (0 < yyn) - { - YYASSERT (yys->yypred); - YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp]b4_user_args[)); - if (! yys->yyresolved) - YYCHK (yyresolveValue (yys, yystackp]b4_user_args[)); - } - return yyok; -} - -/** Resolve the states for the RHS of OPT, perform its user action, and return - * the semantic value and location. Regardless of whether result = yyok, all - * RHS states have been destroyed (assuming the user action destroys all RHS - * semantic values if invoked). */ -static YYRESULTTAG -yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; - int yynrhs = yyrhsLength (yyopt->yyrule); - YYRESULTTAG yyflag = - yyresolveStates (yyopt->yystate, yynrhs, yystackp]b4_user_args[); - if (yyflag != yyok) - { - yyGLRState *yys; - for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1) - yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); - return yyflag; - } - - yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;]b4_locations_if([[ - if (yynrhs == 0) - /* Set default location. */ - yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;]])[ - { - int yychar_current = yychar; - YYSTYPE yylval_current = yylval;]b4_locations_if([ - YYLTYPE yylloc_current = yylloc;])[ - yychar = yyopt->yyrawchar; - yylval = yyopt->yyval;]b4_locations_if([ - yylloc = yyopt->yyloc;])[ - yyflag = yyuserAction (yyopt->yyrule, yynrhs, - yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, - yystackp, yyvalp]b4_locuser_args[); - yychar = yychar_current; - yylval = yylval_current;]b4_locations_if([ - yylloc = yylloc_current;])[ - } - return yyflag; -} - -#if ]b4_api_PREFIX[DEBUG -static void -yyreportTree (yySemanticOption* yyx, int yyindent) -{ - int yynrhs = yyrhsLength (yyx->yyrule); - int yyi; - yyGLRState* yys; - yyGLRState* yystates[1 + YYMAXRHS]; - yyGLRState yyleftmost_state; - - for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred) - yystates[yyi] = yys; - if (yys == YY_NULL) - { - yyleftmost_state.yyposn = 0; - yystates[0] = &yyleftmost_state; - } - else - yystates[0] = yys; - - if (yyx->yystate->yyposn < yys->yyposn + 1) - YYFPRINTF (stderr, "%*s%s -> \n", - yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), - yyx->yyrule - 1); - else - YYFPRINTF (stderr, "%*s%s -> \n", - yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), - yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1), - (unsigned long int) yyx->yystate->yyposn); - for (yyi = 1; yyi <= yynrhs; yyi += 1) - { - if (yystates[yyi]->yyresolved) - { - if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn) - YYFPRINTF (stderr, "%*s%s \n", yyindent+2, "", - yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1])); - else - YYFPRINTF (stderr, "%*s%s \n", yyindent+2, "", - yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]), - (unsigned long int) (yystates[yyi - 1]->yyposn + 1), - (unsigned long int) yystates[yyi]->yyposn); - } - else - yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2); - } -} -#endif - -/*ARGSUSED*/ static YYRESULTTAG -yyreportAmbiguity (yySemanticOption* yyx0, - yySemanticOption* yyx1]b4_pure_formals[) -{ - YYUSE (yyx0); - YYUSE (yyx1); - -#if ]b4_api_PREFIX[DEBUG - YYFPRINTF (stderr, "Ambiguity detected.\n"); - YYFPRINTF (stderr, "Option 1,\n"); - yyreportTree (yyx0, 2); - YYFPRINTF (stderr, "\nOption 2,\n"); - yyreportTree (yyx1, 2); - YYFPRINTF (stderr, "\n"); -#endif - - yyerror (]b4_yyerror_args[YY_("syntax is ambiguous")); - return yyabort; -}]b4_locations_if([[ - -/** Starting at and including state S1, resolve the location for each of the - * previous N1 states that is unresolved. The first semantic option of a state - * is always chosen. */ -static void -yyresolveLocations (yyGLRState* yys1, int yyn1, - yyGLRStack *yystackp]b4_user_formals[) -{ - if (0 < yyn1) - { - yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp]b4_user_args[); - if (!yys1->yyresolved) - { - yyGLRStackItem yyrhsloc[1 + YYMAXRHS]; - int yynrhs; - yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal; - YYASSERT (yyoption != YY_NULL); - yynrhs = yyrhsLength (yyoption->yyrule); - if (yynrhs > 0) - { - yyGLRState *yys; - int yyn; - yyresolveLocations (yyoption->yystate, yynrhs, - yystackp]b4_user_args[); - for (yys = yyoption->yystate, yyn = yynrhs; - yyn > 0; - yys = yys->yypred, yyn -= 1) - yyrhsloc[yyn].yystate.yyloc = yys->yyloc; - } - else - { - /* Both yyresolveAction and yyresolveLocations traverse the GSS - in reverse rightmost order. It is only necessary to invoke - yyresolveLocations on a subforest for which yyresolveAction - would have been invoked next had an ambiguity not been - detected. Thus the location of the previous state (but not - necessarily the previous state itself) is guaranteed to be - resolved already. */ - yyGLRState *yyprevious = yyoption->yystate; - yyrhsloc[0].yystate.yyloc = yyprevious->yyloc; - } - { - int yychar_current = yychar; - YYSTYPE yylval_current = yylval; - YYLTYPE yylloc_current = yylloc; - yychar = yyoption->yyrawchar; - yylval = yyoption->yyval; - yylloc = yyoption->yyloc; - YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs); - yychar = yychar_current; - yylval = yylval_current; - yylloc = yylloc_current; - } - } - } -}]])[ - -/** Resolve the ambiguity represented in state S, perform the indicated - * actions, and set the semantic value of S. If result != yyok, the chain of - * semantic options in S has been cleared instead or it has been left - * unmodified except that redundant options may have been removed. Regardless - * of whether result = yyok, S has been left with consistent data so that - * yydestroyGLRState can be invoked if necessary. */ -static YYRESULTTAG -yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp]b4_user_formals[) -{ - yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal; - yySemanticOption* yybest = yyoptionList; - yySemanticOption** yypp; - yybool yymerge = yyfalse; - YYSTYPE yysval; - YYRESULTTAG yyflag;]b4_locations_if([ - YYLTYPE *yylocp = &yys->yyloc;])[ - - for (yypp = &yyoptionList->yynext; *yypp != YY_NULL; ) - { - yySemanticOption* yyp = *yypp; - - if (yyidenticalOptions (yybest, yyp)) - { - yymergeOptionSets (yybest, yyp); - *yypp = yyp->yynext; - } - else - { - switch (yypreference (yybest, yyp)) - { - case 0:]b4_locations_if([[ - yyresolveLocations (yys, 1, yystackp]b4_user_args[);]])[ - return yyreportAmbiguity (yybest, yyp]b4_pure_args[); - break; - case 1: - yymerge = yytrue; - break; - case 2: - break; - case 3: - yybest = yyp; - yymerge = yyfalse; - break; - default: - /* This cannot happen so it is not worth a YYASSERT (yyfalse), - but some compilers complain if the default case is - omitted. */ - break; - } - yypp = &yyp->yynext; - } - } - - if (yymerge) - { - yySemanticOption* yyp; - int yyprec = yydprec[yybest->yyrule]; - yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args[); - if (yyflag == yyok) - for (yyp = yybest->yynext; yyp != YY_NULL; yyp = yyp->yynext) - { - if (yyprec == yydprec[yyp->yyrule]) - { - YYSTYPE yysval_other;]b4_locations_if([ - YYLTYPE yydummy;])[ - yyflag = yyresolveAction (yyp, yystackp, &yysval_other]b4_locuser_args([&yydummy])[); - if (yyflag != yyok) - { - yydestruct ("Cleanup: discarding incompletely merged value for", - yystos[yys->yylrState], - &yysval]b4_locuser_args[); - break; - } - yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other); - } - } - } - else - yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args([yylocp])[); - - if (yyflag == yyok) - { - yys->yyresolved = yytrue; - yys->yysemantics.yysval = yysval; - } - else - yys->yysemantics.yyfirstVal = YY_NULL; - return yyflag; -} - -static YYRESULTTAG -yyresolveStack (yyGLRStack* yystackp]b4_user_formals[) -{ - if (yystackp->yysplitPoint != YY_NULL) - { - yyGLRState* yys; - int yyn; - - for (yyn = 0, yys = yystackp->yytops.yystates[0]; - yys != yystackp->yysplitPoint; - yys = yys->yypred, yyn += 1) - continue; - YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp - ]b4_user_args[)); - } - return yyok; -} - -static void -yycompressStack (yyGLRStack* yystackp) -{ - yyGLRState* yyp, *yyq, *yyr; - - if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULL) - return; - - for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULL; - yyp != yystackp->yysplitPoint; - yyr = yyp, yyp = yyq, yyq = yyp->yypred) - yyp->yypred = yyr; - - yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems; - yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1; - yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems; - yystackp->yysplitPoint = YY_NULL; - yystackp->yylastDeleted = YY_NULL; - - while (yyr != YY_NULL) - { - yystackp->yynextFree->yystate = *yyr; - yyr = yyr->yypred; - yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate; - yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate; - yystackp->yynextFree += 1; - yystackp->yyspaceLeft -= 1; - } -} - -static YYRESULTTAG -yyprocessOneStack (yyGLRStack* yystackp, size_t yyk, - size_t yyposn]b4_pure_formals[) -{ - int yyaction; - const short int* yyconflicts; - yyRuleNum yyrule; - - while (yystackp->yytops.yystates[yyk] != YY_NULL) - { - yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState; - YYDPRINTF ((stderr, "Stack %lu Entering state %d\n", - (unsigned long int) yyk, yystate)); - - YYASSERT (yystate != YYFINAL); - - if (yyisDefaultedState (yystate)) - { - yyrule = yydefaultAction (yystate); - if (yyrule == 0) - { - YYDPRINTF ((stderr, "Stack %lu dies.\n", - (unsigned long int) yyk)); - yymarkStackDeleted (yystackp, yyk); - return yyok; - } - YYCHK (yyglrReduce (yystackp, yyk, yyrule, yyfalse]b4_user_args[)); - } - else - { - yySymbol yytoken; - yystackp->yytops.yylookaheadNeeds[yyk] = yytrue; - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); - - while (*yyconflicts != 0) - { - size_t yynewStack = yysplitStack (yystackp, yyk); - YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n", - (unsigned long int) yynewStack, - (unsigned long int) yyk)); - YYCHK (yyglrReduce (yystackp, yynewStack, - *yyconflicts, yyfalse]b4_user_args[)); - YYCHK (yyprocessOneStack (yystackp, yynewStack, - yyposn]b4_pure_args[)); - yyconflicts += 1; - } - - if (yyisShiftAction (yyaction)) - break; - else if (yyisErrorAction (yyaction)) - { - YYDPRINTF ((stderr, "Stack %lu dies.\n", - (unsigned long int) yyk)); - yymarkStackDeleted (yystackp, yyk); - break; - } - else - YYCHK (yyglrReduce (yystackp, yyk, -yyaction, - yyfalse]b4_user_args[)); - } - } - return yyok; -} - -/*ARGSUSED*/ static void -yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[) -{ - if (yystackp->yyerrState != 0) - return; -#if ! YYERROR_VERBOSE - yyerror (]b4_lyyerror_args[YY_("syntax error")); -#else - { - yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - size_t yysize0 = yytnamerr (YY_NULL, yytokenName (yytoken)); - size_t yysize = yysize0; - yybool yysize_overflow = yyfalse; - char* yymsg = YY_NULL; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULL; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[yystackp->yytops.yystates[0]->yylrState]; - yyarg[yycount++] = yytokenName (yytoken); - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for this - state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytokenName (yyx); - { - size_t yysz = yysize + yytnamerr (YY_NULL, yytokenName (yyx)); - yysize_overflow |= yysz < yysize; - yysize = yysz; - } - } - } - } - - switch (yycount) - { -#define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -#undef YYCASE_ - } - - { - size_t yysz = yysize + strlen (yyformat); - yysize_overflow |= yysz < yysize; - yysize = yysz; - } - - if (!yysize_overflow) - yymsg = (char *) YYMALLOC (yysize); - - if (yymsg) - { - char *yyp = yymsg; - int yyi = 0; - while ((*yyp = *yyformat)) - { - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - yyerror (]b4_lyyerror_args[yymsg); - YYFREE (yymsg); - } - else - { - yyerror (]b4_lyyerror_args[YY_("syntax error")); - yyMemoryExhausted (yystackp); - } - } -#endif /* YYERROR_VERBOSE */ - yynerrs += 1; -} - -/* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP, - yylval, and yylloc are the syntactic category, semantic value, and location - of the lookahead. */ -/*ARGSUSED*/ static void -yyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[) -{ - size_t yyk; - int yyj; - - if (yystackp->yyerrState == 3) - /* We just shifted the error token and (perhaps) took some - reductions. Skip tokens until we can proceed. */ - while (YYID (yytrue)) - { - yySymbol yytoken; - if (yychar == YYEOF) - yyFail (yystackp][]b4_lpure_args[, YY_NULL); - if (yychar != YYEMPTY) - {]b4_locations_if([[ - /* We throw away the lookahead, but the error range - of the shifted error token must take it into account. */ - yyGLRState *yys = yystackp->yytops.yystates[0]; - yyGLRStackItem yyerror_range[3]; - yyerror_range[1].yystate.yyloc = yys->yyloc; - yyerror_range[2].yystate.yyloc = yylloc; - YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);]])[ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Error: discarding", - yytoken, &yylval]b4_locuser_args([&yylloc])[); - } - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - yyj = yypact[yystackp->yytops.yystates[0]->yylrState]; - if (yypact_value_is_default (yyj)) - return; - yyj += yytoken; - if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken) - { - if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0) - return; - } - else if (! yytable_value_is_error (yytable[yyj])) - return; - } - - /* Reduce to one stack. */ - for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1) - if (yystackp->yytops.yystates[yyk] != YY_NULL) - break; - if (yyk >= yystackp->yytops.yysize) - yyFail (yystackp][]b4_lpure_args[, YY_NULL); - for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1) - yymarkStackDeleted (yystackp, yyk); - yyremoveDeletes (yystackp); - yycompressStack (yystackp); - - /* Now pop stack until we find a state that shifts the error token. */ - yystackp->yyerrState = 3; - while (yystackp->yytops.yystates[0] != YY_NULL) - { - yyGLRState *yys = yystackp->yytops.yystates[0]; - yyj = yypact[yys->yylrState]; - if (! yypact_value_is_default (yyj)) - { - yyj += YYTERROR; - if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR - && yyisShiftAction (yytable[yyj])) - { - /* Shift the error token. */]b4_locations_if([[ - /* First adjust its location.*/ - YYLTYPE yyerrloc; - yystackp->yyerror_range[2].yystate.yyloc = yylloc; - YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);]])[ - YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]], - &yylval, &yyerrloc); - yyglrShift (yystackp, 0, yytable[yyj], - yys->yyposn, &yylval]b4_locations_if([, &yyerrloc])[); - yys = yystackp->yytops.yystates[0]; - break; - } - }]b4_locations_if([[ - yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ - if (yys->yypred != YY_NULL) - yydestroyGLRState ("Error: popping", yys]b4_user_args[); - yystackp->yytops.yystates[0] = yys->yypred; - yystackp->yynextFree -= 1; - yystackp->yyspaceLeft += 1; - } - if (yystackp->yytops.yystates[0] == YY_NULL) - yyFail (yystackp][]b4_lpure_args[, YY_NULL); -} - -#define YYCHK1(YYE) \ - do { \ - switch (YYE) { \ - case yyok: \ - break; \ - case yyabort: \ - goto yyabortlab; \ - case yyaccept: \ - goto yyacceptlab; \ - case yyerr: \ - goto yyuser_error; \ - default: \ - goto yybuglab; \ - } \ - } while (YYID (0)) - - -/*----------. -| yyparse. | -`----------*/ - -]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ -{ - int yyresult; - yyGLRStack yystack; - yyGLRStack* const yystackp = &yystack; - size_t yyposn; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yychar = YYEMPTY; - yylval = yyval_default;]b4_locations_if([ - yylloc = yyloc_default;])[ -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([yylval], [], [yylloc])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef])[]dnl -[ - if (! yyinitGLRStack (yystackp, YYINITDEPTH)) - goto yyexhaustedlab; - switch (YYSETJMP (yystack.yyexception_buffer)) - { - case 0: break; - case 1: goto yyabortlab; - case 2: goto yyexhaustedlab; - default: goto yybuglab; - } - yyglrShift (&yystack, 0, 0, 0, &yylval]b4_locations_if([, &yylloc])[); - yyposn = 0; - - while (YYID (yytrue)) - { - /* For efficiency, we have two loops, the first of which is - specialized to deterministic operation (single stack, no - potential ambiguity). */ - /* Standard mode */ - while (YYID (yytrue)) - { - yyRuleNum yyrule; - int yyaction; - const short int* yyconflicts; - - yyStateNum yystate = yystack.yytops.yystates[0]->yylrState; - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) - goto yyacceptlab; - if (yyisDefaultedState (yystate)) - { - yyrule = yydefaultAction (yystate); - if (yyrule == 0) - { -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ - yyreportSyntaxError (&yystack]b4_user_args[); - goto yyuser_error; - } - YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue]b4_user_args[)); - } - else - { - yySymbol yytoken; - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); - if (*yyconflicts != 0) - break; - if (yyisShiftAction (yyaction)) - { - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - yychar = YYEMPTY; - yyposn += 1; - yyglrShift (&yystack, 0, yyaction, yyposn, &yylval]b4_locations_if([, &yylloc])[); - if (0 < yystack.yyerrState) - yystack.yyerrState -= 1; - } - else if (yyisErrorAction (yyaction)) - { -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ - yyreportSyntaxError (&yystack]b4_user_args[); - goto yyuser_error; - } - else - YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue]b4_user_args[)); - } - } - - while (YYID (yytrue)) - { - yySymbol yytoken_to_shift; - size_t yys; - - for (yys = 0; yys < yystack.yytops.yysize; yys += 1) - yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY; - - /* yyprocessOneStack returns one of three things: - - - An error flag. If the caller is yyprocessOneStack, it - immediately returns as well. When the caller is finally - yyparse, it jumps to an error label via YYCHK1. - - - yyok, but yyprocessOneStack has invoked yymarkStackDeleted - (&yystack, yys), which sets the top state of yys to NULL. Thus, - yyparse's following invocation of yyremoveDeletes will remove - the stack. - - - yyok, when ready to shift a token. - - Except in the first case, yyparse will invoke yyremoveDeletes and - then shift the next token onto all remaining stacks. This - synchronization of the shift (that is, after all preceding - reductions on all stacks) helps prevent double destructor calls - on yylval in the event of memory exhaustion. */ - - for (yys = 0; yys < yystack.yytops.yysize; yys += 1) - YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn]b4_lpure_args[)); - yyremoveDeletes (&yystack); - if (yystack.yytops.yysize == 0) - { - yyundeleteLastStack (&yystack); - if (yystack.yytops.yysize == 0) - yyFail (&yystack][]b4_lpure_args[, YY_("syntax error")); - YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); - YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ - yyreportSyntaxError (&yystack]b4_user_args[); - goto yyuser_error; - } - - /* If any yyglrShift call fails, it will fail after shifting. Thus, - a copy of yylval will already be on stack 0 in the event of a - failure in the following loop. Thus, yychar is set to YYEMPTY - before the loop to make sure the user destructor for yylval isn't - called twice. */ - yytoken_to_shift = YYTRANSLATE (yychar); - yychar = YYEMPTY; - yyposn += 1; - for (yys = 0; yys < yystack.yytops.yysize; yys += 1) - { - int yyaction; - const short int* yyconflicts; - yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState; - yygetLRActions (yystate, yytoken_to_shift, &yyaction, - &yyconflicts); - /* Note that yyconflicts were handled by yyprocessOneStack. */ - YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys)); - YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc); - yyglrShift (&yystack, yys, yyaction, yyposn, - &yylval]b4_locations_if([, &yylloc])[); - YYDPRINTF ((stderr, "Stack %lu now in state #%d\n", - (unsigned long int) yys, - yystack.yytops.yystates[yys]->yylrState)); - } - - if (yystack.yytops.yysize == 1) - { - YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); - YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); - yycompressStack (&yystack); - break; - } - } - continue; - yyuser_error: - yyrecoverSyntaxError (&yystack]b4_user_args[); - yyposn = yystack.yytops.yystates[0]->yyposn; - } - - yyacceptlab: - yyresult = 0; - goto yyreturn; - - yybuglab: - YYASSERT (yyfalse); - goto yyabortlab; - - yyabortlab: - yyresult = 1; - goto yyreturn; - - yyexhaustedlab: - yyerror (]b4_lyyerror_args[YY_("memory exhausted")); - yyresult = 2; - goto yyreturn; - - yyreturn: - if (yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - YYTRANSLATE (yychar), &yylval]b4_locuser_args([&yylloc])[); - - /* If the stack is well-formed, pop the stack until it is empty, - destroying its entries as we go. But free the stack regardless - of whether it is well-formed. */ - if (yystack.yyitems) - { - yyGLRState** yystates = yystack.yytops.yystates; - if (yystates) - { - size_t yysize = yystack.yytops.yysize; - size_t yyk; - for (yyk = 0; yyk < yysize; yyk += 1) - if (yystates[yyk]) - { - while (yystates[yyk]) - { - yyGLRState *yys = yystates[yyk]; -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]] -)[ if (yys->yypred != YY_NULL) - yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); - yystates[yyk] = yys->yypred; - yystack.yynextFree -= 1; - yystack.yyspaceLeft += 1; - } - break; - } - } - yyfreeGLRStack (&yystack); - } - - /* Make sure YYID is used. */ - return YYID (yyresult); -} - -/* DEBUGGING ONLY */ -#if ]b4_api_PREFIX[DEBUG -static void yypstack (yyGLRStack* yystackp, size_t yyk) - __attribute__ ((__unused__)); -static void yypdumpstack (yyGLRStack* yystackp) __attribute__ ((__unused__)); - -static void -yy_yypstack (yyGLRState* yys) -{ - if (yys->yypred) - { - yy_yypstack (yys->yypred); - YYFPRINTF (stderr, " -> "); - } - YYFPRINTF (stderr, "%d@@%lu", yys->yylrState, - (unsigned long int) yys->yyposn); -} - -static void -yypstates (yyGLRState* yyst) -{ - if (yyst == YY_NULL) - YYFPRINTF (stderr, ""); - else - yy_yypstack (yyst); - YYFPRINTF (stderr, "\n"); -} - -static void -yypstack (yyGLRStack* yystackp, size_t yyk) -{ - yypstates (yystackp->yytops.yystates[yyk]); -} - -#define YYINDEX(YYX) \ - ((YYX) == YY_NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems) - - -static void -yypdumpstack (yyGLRStack* yystackp) -{ - yyGLRStackItem* yyp; - size_t yyi; - for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1) - { - YYFPRINTF (stderr, "%3lu. ", - (unsigned long int) (yyp - yystackp->yyitems)); - if (*(yybool *) yyp) - { - YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld", - yyp->yystate.yyresolved, yyp->yystate.yylrState, - (unsigned long int) yyp->yystate.yyposn, - (long int) YYINDEX (yyp->yystate.yypred)); - if (! yyp->yystate.yyresolved) - YYFPRINTF (stderr, ", firstVal: %ld", - (long int) YYINDEX (yyp->yystate - .yysemantics.yyfirstVal)); - } - else - { - YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld", - yyp->yyoption.yyrule - 1, - (long int) YYINDEX (yyp->yyoption.yystate), - (long int) YYINDEX (yyp->yyoption.yynext)); - } - YYFPRINTF (stderr, "\n"); - } - YYFPRINTF (stderr, "Tops:"); - for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) - YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long int) yyi, - (long int) YYINDEX (yystackp->yytops.yystates[yyi])); - YYFPRINTF (stderr, "\n"); -} -#endif -]b4_epilogue[]dnl -b4_output_end() - -# glr.cc produces its own header. -m4_if(b4_skeleton, ["glr.c"], -[b4_defines_if( -[b4_output_begin([b4_spec_defines_file]) -b4_copyright([Skeleton interface for Bison GLR parsers in C], - [2002-2012])[ - -]b4_cpp_guard_open([b4_spec_defines_file])[ -]b4_shared_declarations[ -]b4_cpp_guard_close([b4_spec_defines_file])[ -]b4_output_end() -])]) diff --git a/tools/data/glr.cc b/tools/data/glr.cc deleted file mode 100644 index 378abb39..00000000 --- a/tools/data/glr.cc +++ /dev/null @@ -1,346 +0,0 @@ - -*- C -*- - -# C++ GLR skeleton for Bison - -# Copyright (C) 2002-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# This skeleton produces a C++ class that encapsulates a C glr parser. -# This is in order to reduce the maintenance burden. The glr.c -# skeleton is clean and pure enough so that there are no real -# problems. The C++ interface is the same as that of lalr1.cc. In -# fact, glr.c can replace yacc.c without the user noticing any -# difference, and similarly for glr.cc replacing lalr1.cc. -# -# The passing of parse-params -# -# The additional arguments are stored as members of the parser -# object, yyparser. The C routines need to carry yyparser -# throughout the C parser; that easy: just let yyparser become an -# additional parse-param. But because the C++ skeleton needs to -# know the "real" original parse-param, we save them -# (b4_parse_param_orig). Note that b4_parse_param is overquoted -# (and c.m4 strips one level of quotes). This is a PITA, and -# explains why there are so many levels of quotes. -# -# The locations -# -# We use location.cc just like lalr1.cc, but because glr.c stores -# the locations in a (C++) union, the position and location classes -# must not have a constructor. Therefore, contrary to lalr1.cc, we -# must not define "b4_location_constructors". As a consequence the -# user must initialize the first positions (in particular the -# filename member). - -# We require a pure interface using locations. -m4_define([b4_locations_flag], [1]) -m4_define([b4_pure_flag], [1]) - -# The header is mandatory. -b4_defines_if([], - [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) - -m4_include(b4_pkgdatadir/[c++.m4]) -b4_percent_define_ifdef([[api.location.type]], [], - [m4_include(b4_pkgdatadir/[location.cc])]) - -m4_define([b4_parser_class_name], - [b4_percent_define_get([[parser_class_name]])]) - -# Save the parse parameters. -m4_define([b4_parse_param_orig], m4_defn([b4_parse_param])) - - -# b4_yy_symbol_print_generate -# --------------------------- -# Bypass the default implementation to generate the "yy_symbol_print" -# and "yy_symbol_value_print" functions. -m4_define([b4_yy_symbol_print_generate], -[[ -/*--------------------. -| Print this symbol. | -`--------------------*/ - -]b4_c_ansi_function_def([yy_symbol_print], - [static void], - [[FILE *], []], - [[int yytype], [yytype]], - [[const ]b4_namespace_ref::b4_parser_class_name[::semantic_type *yyvaluep], - [yyvaluep]], - [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], - [yylocationp]], - b4_parse_param)[ -{ -]b4_parse_param_use[]dnl -[ yyparser.yy_symbol_print_ (yytype, yyvaluep]b4_locations_if([, yylocationp])[); -} -]])[ - -# Hijack the initial action to initialize the locations. -]b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [], -[m4_define([b4_initial_action], -[yylloc.initialize ();]m4_ifdef([b4_initial_action], [ -m4_defn([b4_initial_action])]))])])[ - -# Hijack the post prologue to insert early definition of YYLLOC_DEFAULT -# and declaration of yyerror. -]m4_append([b4_post_prologue], -[b4_syncline([@oline@], [@ofile@])[ -]b4_yylloc_default_define[ -#define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) -]b4_c_ansi_function_decl([yyerror], - [static void], - [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], - [yylocationp]], - b4_parse_param, - [[const char* msg], [msg]])]) - - -# Hijack the epilogue to define implementations (yyerror, parser member -# functions etc.). -m4_append([b4_epilogue], -[b4_syncline([@oline@], [@ofile@])[ -/*------------------. -| Report an error. | -`------------------*/ - -]b4_c_ansi_function_def([yyerror], - [static void], - [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], - [yylocationp]], - b4_parse_param, - [[const char* msg], [msg]])[ -{ -]b4_parse_param_use[]dnl -[ yyparser.error (*yylocationp, msg); -} - - -]b4_namespace_open[ -]dnl In this section, the parse param are the original parse_params. -m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl -[ /// Build a parser object. - ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [ - :])[ -#if ]b4_api_PREFIX[DEBUG - ]m4_ifset([b4_parse_param], [ ], [ :])[ - yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[ -#endif]b4_parse_param_cons[ - { - } - - ]b4_parser_class_name::~b4_parser_class_name[ () - { - } - - int - ]b4_parser_class_name[::parse () - { - return ::yyparse (*this]b4_user_args[); - } - -#if ]b4_api_PREFIX[DEBUG - /*--------------------. - | Print this symbol. | - `--------------------*/ - - inline void - ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp) - { - YYUSE (yylocationp); - YYUSE (yyvaluep); - std::ostream& yyoutput = debug_stream (); - std::ostream& yyo = yyoutput; - YYUSE (yyo); - switch (yytype) - { - ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl -[ default: - break; - } - } - - - void - ]b4_parser_class_name[::yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp) - { - *yycdebug_ << (yytype < YYNTOKENS ? "token" : "nterm") - << ' ' << yytname[yytype] << " (" - << *yylocationp << ": "; - yy_symbol_value_print_ (yytype, yyvaluep, yylocationp); - *yycdebug_ << ')'; - } - - std::ostream& - ]b4_parser_class_name[::debug_stream () const - { - return *yycdebug_; - } - - void - ]b4_parser_class_name[::set_debug_stream (std::ostream& o) - { - yycdebug_ = &o; - } - - - ]b4_parser_class_name[::debug_level_type - ]b4_parser_class_name[::debug_level () const - { - return yydebug; - } - - void - ]b4_parser_class_name[::set_debug_level (debug_level_type l) - { - // Actually, it is yydebug which is really used. - yydebug = l; - } - -#endif -]m4_popdef([b4_parse_param])dnl -b4_namespace_close]) - - -# Let glr.c believe that the user arguments include the parser itself. -m4_ifset([b4_parse_param], -[m4_pushdef([b4_parse_param], - [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]],] -m4_defn([b4_parse_param]))], -[m4_pushdef([b4_parse_param], - [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]]]) -]) -m4_include(b4_pkgdatadir/[glr.c]) -m4_popdef([b4_parse_param]) - -b4_output_begin([b4_spec_defines_file]) -b4_copyright([Skeleton interface for Bison GLR parsers in C++], - [2002-2006, 2009-2012])[ - -/* C++ GLR parser skeleton written by Akim Demaille. */ - -]b4_cpp_guard_open([b4_spec_defines_file])[ - -]b4_percent_code_get([[requires]])[ - -# include -# include -]b4_percent_define_ifdef([[api.location.type]], [], - [[# include "location.hh"]])[ - -]b4_YYDEBUG_define[ - -]b4_namespace_open[ - /// A Bison parser. - class ]b4_parser_class_name[ - { - public: - /// Symbol semantic values. -# ifndef ]b4_api_PREFIX[STYPE -]m4_ifdef([b4_stype], -[ union semantic_type - { -b4_user_stype - };], -[m4_if(b4_tag_seen_flag, 0, -[[ typedef int semantic_type;]], -[[ typedef ]b4_api_PREFIX[STYPE semantic_type;]])])[ -# else - typedef ]b4_api_PREFIX[STYPE semantic_type; -# endif - /// Symbol locations. - typedef ]b4_percent_define_get([[api.location.type]], - [[location]])[ location_type; - /// Tokens. - struct token - { - ]b4_token_enums(b4_tokens)[ - }; - /// Token type. - typedef token::yytokentype token_type; - - /// Build a parser object. - ]b4_parser_class_name[ (]b4_parse_param_decl[); - virtual ~]b4_parser_class_name[ (); - - /// Parse. - /// \returns 0 iff parsing succeeded. - virtual int parse (); - - /// The current debugging stream. - std::ostream& debug_stream () const; - /// Set the current debugging stream. - void set_debug_stream (std::ostream &); - - /// Type for debugging levels. - typedef int debug_level_type; - /// The current debugging level. - debug_level_type debug_level () const; - /// Set the current debugging level. - void set_debug_level (debug_level_type l); - - private: - - public: - /// Report a syntax error. - /// \param loc where the syntax error is found. - /// \param msg a description of the syntax error. - virtual void error (const location_type& loc, const std::string& msg); - private: - -# if ]b4_api_PREFIX[DEBUG - public: - /// \brief Report a symbol value on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); - /// \brief Report a symbol on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); - private: - /* Debugging. */ - std::ostream* yycdebug_; -# endif - -]b4_parse_param_vars[ - }; - -]dnl Redirections for glr.c. -b4_percent_define_flag_if([[global_tokens_and_yystype]], -[b4_token_defines(b4_tokens)]) -[ -#ifndef ]b4_api_PREFIX[STYPE -# define ]b4_api_PREFIX[STYPE ]b4_namespace_ref[::]b4_parser_class_name[::semantic_type -#endif -#ifndef ]b4_api_PREFIX[LTYPE -# define ]b4_api_PREFIX[LTYPE ]b4_namespace_ref[::]b4_parser_class_name[::location_type -#endif - -]b4_namespace_close[ -]b4_percent_code_get([[provides]])[ -]b4_cpp_guard_close([b4_spec_defines_file])[ -]b4_output_end() diff --git a/tools/data/java-skel.m4 b/tools/data/java-skel.m4 deleted file mode 100644 index 171a233b..00000000 --- a/tools/data/java-skel.m4 +++ /dev/null @@ -1,26 +0,0 @@ - -*- Autoconf -*- - -# Java skeleton dispatching for Bison. - -# Copyright (C) 2007, 2009-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -b4_glr_if( [b4_complain([%%glr-parser not supported for Java])]) -b4_nondeterministic_if([b4_complain([%%nondeterministic-parser not supported for Java])]) - -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.java]]) -m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) - -m4_include(b4_used_skeleton) diff --git a/tools/data/java.m4 b/tools/data/java.m4 deleted file mode 100644 index fe6dd528..00000000 --- a/tools/data/java.m4 +++ /dev/null @@ -1,304 +0,0 @@ - -*- Autoconf -*- - -# Java language support for Bison - -# Copyright (C) 2007-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c-like.m4]) - -# b4_comment(TEXT) -# ---------------- -m4_define([b4_comment], [/* m4_bpatsubst([$1], [ -], [ - ]) */]) - - -# b4_list2(LIST1, LIST2) -# -------------------------- -# Join two lists with a comma if necessary. -m4_define([b4_list2], - [$1[]m4_ifval(m4_quote($1), [m4_ifval(m4_quote($2), [[, ]])])[]$2]) - - -# b4_percent_define_get3(DEF, PRE, POST, NOT) -# ------------------------------------------- -# Expand to the value of DEF surrounded by PRE and POST if it's %define'ed, -# otherwise NOT. -m4_define([b4_percent_define_get3], - [m4_ifval(m4_quote(b4_percent_define_get([$1])), - [$2[]b4_percent_define_get([$1])[]$3], [$4])]) - - - -# b4_flag_value(BOOLEAN-FLAG) -# --------------------------- -m4_define([b4_flag_value], [b4_flag_if([$1], [true], [false])]) - - -# b4_public_if(TRUE, FALSE) -# ------------------------- -b4_percent_define_default([[public]], [[false]]) -m4_define([b4_public_if], -[b4_percent_define_flag_if([public], [$1], [$2])]) - - -# b4_abstract_if(TRUE, FALSE) -# --------------------------- -b4_percent_define_default([[abstract]], [[false]]) -m4_define([b4_abstract_if], -[b4_percent_define_flag_if([abstract], [$1], [$2])]) - - -# b4_final_if(TRUE, FALSE) -# --------------------------- -b4_percent_define_default([[final]], [[false]]) -m4_define([b4_final_if], -[b4_percent_define_flag_if([final], [$1], [$2])]) - - -# b4_strictfp_if(TRUE, FALSE) -# --------------------------- -b4_percent_define_default([[strictfp]], [[false]]) -m4_define([b4_strictfp_if], -[b4_percent_define_flag_if([strictfp], [$1], [$2])]) - - -# b4_lexer_if(TRUE, FALSE) -# ------------------------ -m4_define([b4_lexer_if], -[b4_percent_code_ifdef([[lexer]], [$1], [$2])]) - - -# b4_identification -# ----------------- -m4_define([b4_identification], -[ /** Version number for the Bison executable that generated this parser. */ - public static final String bisonVersion = "b4_version"; - - /** Name of the skeleton that generated this parser. */ - public static final String bisonSkeleton = b4_skeleton; -]) - - -## ------------ ## -## Data types. ## -## ------------ ## - -# b4_int_type(MIN, MAX) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# MIN to MAX (included). -m4_define([b4_int_type], -[m4_if(b4_ints_in($@, [-128], [127]), [1], [byte], - b4_ints_in($@, [-32768], [32767]), [1], [short], - [int])]) - -# b4_int_type_for(NAME) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# `NAME_min' to `NAME_max' (included). -m4_define([b4_int_type_for], -[b4_int_type($1_min, $1_max)]) - -# b4_null -# ------- -m4_define([b4_null], [null]) - - -## ------------------------- ## -## Assigning token numbers. ## -## ------------------------- ## - -# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER) -# --------------------------------------- -# Output the definition of this token as an enum. -m4_define([b4_token_enum], -[ /** Token number, to be returned by the scanner. */ - public static final int $1 = $2; -]) - - -# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ----------------------------------------------------- -# Output the definition of the tokens (if there are) as enums. -m4_define([b4_token_enums], -[m4_if([$#$1], [1], [], -[/* Tokens. */ -m4_map([b4_token_enum], [$@])]) -]) - -# b4-case(ID, CODE) -# ----------------- -# We need to fool Java's stupid unreachable code detection. -m4_define([b4_case], [ case $1: - if (yyn == $1) - $2; - break; - ]) - - -## ---------------- ## -## Default values. ## -## ---------------- ## - -m4_define([b4_yystype], [b4_percent_define_get([[stype]])]) -b4_percent_define_default([[stype]], [[Object]]) - -# %name-prefix -m4_define_default([b4_prefix], [[YY]]) - -b4_percent_define_default([[parser_class_name]], [b4_prefix[]Parser]) -m4_define([b4_parser_class_name], [b4_percent_define_get([[parser_class_name]])]) - -b4_percent_define_default([[lex_throws]], [[java.io.IOException]]) -m4_define([b4_lex_throws], [b4_percent_define_get([[lex_throws]])]) - -b4_percent_define_default([[throws]], []) -m4_define([b4_throws], [b4_percent_define_get([[throws]])]) - -b4_percent_define_default([[api.location.type]], [Location]) -m4_define([b4_location_type], [b4_percent_define_get([[api.location.type]])]) - -b4_percent_define_default([[api.position.type]], [Position]) -m4_define([b4_position_type], [b4_percent_define_get([[api.position.type]])]) - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], [yyval]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -# -# In this simple implementation, %token and %type have class names -# between the angle brackets. -m4_define([b4_rhs_value], -[(m4_ifval($3, [($3)])[](yystack.valueAt ($1-($2))))]) - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(yyloc)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[yystack.locationAt ($1-($2))]) - - -# b4_lex_param -# b4_parse_param -# -------------- -# If defined, b4_lex_param arrives double quoted, but below we prefer -# it to be single quoted. Same for b4_parse_param. - -# TODO: should be in bison.m4 -m4_define_default([b4_lex_param], [[]]) -m4_define([b4_lex_param], b4_lex_param) -m4_define([b4_parse_param], b4_parse_param) - -# b4_lex_param_decl -# ------------------- -# Extra formal arguments of the constructor. -m4_define([b4_lex_param_decl], -[m4_ifset([b4_lex_param], - [b4_remove_comma([$1], - b4_param_decls(b4_lex_param))], - [$1])]) - -m4_define([b4_param_decls], - [m4_map([b4_param_decl], [$@])]) -m4_define([b4_param_decl], [, $1]) - -m4_define([b4_remove_comma], [m4_ifval(m4_quote($1), [$1, ], [])m4_shift2($@)]) - - - -# b4_parse_param_decl -# ------------------- -# Extra formal arguments of the constructor. -m4_define([b4_parse_param_decl], -[m4_ifset([b4_parse_param], - [b4_remove_comma([$1], - b4_param_decls(b4_parse_param))], - [$1])]) - - - -# b4_lex_param_call -# ------------------- -# Delegating the lexer parameters to the lexer constructor. -m4_define([b4_lex_param_call], - [m4_ifset([b4_lex_param], - [b4_remove_comma([$1], - b4_param_calls(b4_lex_param))], - [$1])]) -m4_define([b4_param_calls], - [m4_map([b4_param_call], [$@])]) -m4_define([b4_param_call], [, $2]) - - - -# b4_parse_param_cons -# ------------------- -# Extra initialisations of the constructor. -m4_define([b4_parse_param_cons], - [m4_ifset([b4_parse_param], - [b4_constructor_calls(b4_parse_param)])]) - -m4_define([b4_constructor_calls], - [m4_map([b4_constructor_call], [$@])]) -m4_define([b4_constructor_call], - [this.$2 = $2; - ]) - - - -# b4_parse_param_vars -# ------------------- -# Extra instance variables. -m4_define([b4_parse_param_vars], - [m4_ifset([b4_parse_param], - [ - /* User arguments. */ -b4_var_decls(b4_parse_param)])]) - -m4_define([b4_var_decls], - [m4_map_sep([b4_var_decl], [ -], [$@])]) -m4_define([b4_var_decl], - [ protected final $1;]) - - - -# b4_maybe_throws(THROWS) -# ----------------------- -# Expand to either an empty string or "throws THROWS". -m4_define([b4_maybe_throws], - [m4_ifval($1, [throws $1])]) diff --git a/tools/data/lalr1.cc b/tools/data/lalr1.cc deleted file mode 100644 index 13170154..00000000 --- a/tools/data/lalr1.cc +++ /dev/null @@ -1,1143 +0,0 @@ -# C++ skeleton for Bison - -# Copyright (C) 2002-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c++.m4]) - -m4_define([b4_parser_class_name], - [b4_percent_define_get([[parser_class_name]])]) - -# The header is mandatory. -b4_defines_if([], - [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) - -b4_percent_define_ifdef([[api.location.type]], [], - [# Backward compatibility. - m4_define([b4_location_constructors]) - m4_include(b4_pkgdatadir/[location.cc])]) -m4_include(b4_pkgdatadir/[stack.hh]) - -b4_defines_if( -[b4_output_begin([b4_spec_defines_file]) -b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++], - [2002-2012]) -[ -/** - ** \file ]b4_spec_defines_file[ - ** Define the ]b4_namespace_ref[::parser class. - */ - -/* C++ LALR(1) parser skeleton written by Akim Demaille. */ - -]b4_cpp_guard_open([b4_spec_defines_file])[ - -]b4_percent_code_get([[requires]])[ - -#include -#include -#include "stack.hh" -]b4_percent_define_ifdef([[api.location.type]], [], - [[#include "location.hh"]])[ - -]b4_YYDEBUG_define[ - -]b4_namespace_open[ - - /// A Bison parser. - class ]b4_parser_class_name[ - { - public: - /// Symbol semantic values. -#ifndef ]b4_api_PREFIX[STYPE -]m4_ifdef([b4_stype], -[ union semantic_type - { -b4_user_stype - };], -[m4_if(b4_tag_seen_flag, 0, -[[ typedef int semantic_type;]], -[[ typedef ]b4_api_PREFIX[STYPE semantic_type;]])])[ -#else - typedef ]b4_api_PREFIX[STYPE semantic_type; -#endif - /// Symbol locations. - typedef ]b4_percent_define_get([[api.location.type]], - [[location]])[ location_type; - /// Tokens. - struct token - { - ]b4_token_enums(b4_tokens)[ - }; - /// Token type. - typedef token::yytokentype token_type; - - /// Build a parser object. - ]b4_parser_class_name[ (]b4_parse_param_decl[); - virtual ~]b4_parser_class_name[ (); - - /// Parse. - /// \returns 0 iff parsing succeeded. - virtual int parse (); - -#if ]b4_api_PREFIX[DEBUG - /// The current debugging stream. - std::ostream& debug_stream () const; - /// Set the current debugging stream. - void set_debug_stream (std::ostream &); - - /// Type for debugging levels. - typedef int debug_level_type; - /// The current debugging level. - debug_level_type debug_level () const; - /// Set the current debugging level. - void set_debug_level (debug_level_type l); -#endif - - private: - /// Report a syntax error. - /// \param loc where the syntax error is found. - /// \param msg a description of the syntax error. - virtual void error (const location_type& loc, const std::string& msg); - - /// Generate an error message. - /// \param state the state where the error occurred. - /// \param tok the lookahead token. - virtual std::string yysyntax_error_ (int yystate, int tok); - -#if ]b4_api_PREFIX[DEBUG - /// \brief Report a symbol value on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); - /// \brief Report a symbol on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); -#endif - - - /// State numbers. - typedef int state_type; - /// State stack type. - typedef stack state_stack_type; - /// Semantic value stack type. - typedef stack semantic_stack_type; - /// location stack type. - typedef stack location_stack_type; - - /// The state stack. - state_stack_type yystate_stack_; - /// The semantic value stack. - semantic_stack_type yysemantic_stack_; - /// The location stack. - location_stack_type yylocation_stack_; - - /// Whether the given \c yypact_ value indicates a defaulted state. - /// \param yyvalue the value to check - static bool yy_pact_value_is_default_ (int yyvalue); - - /// Whether the given \c yytable_ value indicates a syntax error. - /// \param yyvalue the value to check - static bool yy_table_value_is_error_ (int yyvalue); - - /// Internal symbol numbers. - typedef ]b4_int_type_for([b4_translate])[ token_number_type; - /* Tables. */ - /// For a state, the index in \a yytable_ of its portion. - static const ]b4_int_type_for([b4_pact])[ yypact_[]; - static const ]b4_int_type(b4_pact_ninf, b4_pact_ninf)[ yypact_ninf_; - - /// For a state, default reduction number. - /// Unless\a yytable_ specifies something else to do. - /// Zero means the default is an error. - static const ]b4_int_type_for([b4_defact])[ yydefact_[]; - - static const ]b4_int_type_for([b4_pgoto])[ yypgoto_[]; - static const ]b4_int_type_for([b4_defgoto])[ yydefgoto_[]; - - /// What to do in a state. - /// \a yytable_[yypact_[s]]: what to do in state \a s. - /// - if positive, shift that token. - /// - if negative, reduce the rule which number is the opposite. - /// - if zero, do what YYDEFACT says. - static const ]b4_int_type_for([b4_table])[ yytable_[]; - static const ]b4_int_type(b4_table_ninf, b4_table_ninf)[ yytable_ninf_; - - static const ]b4_int_type_for([b4_check])[ yycheck_[]; - - /// For a state, its accessing symbol. - static const ]b4_int_type_for([b4_stos])[ yystos_[]; - - /// For a rule, its LHS. - static const ]b4_int_type_for([b4_r1])[ yyr1_[]; - /// For a rule, its RHS length. - static const ]b4_int_type_for([b4_r2])[ yyr2_[]; ]b4_error_verbose_if([ - - /// Convert the symbol name \a n to a form suitable for a diagnostic. - static std::string yytnamerr_ (const char *n);])[ - -]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[ - /// For a symbol, its name in clear. - static const char* const yytname_[]; -]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[ - /// A type to store symbol numbers and -1. - typedef ]b4_int_type_for([b4_rhs])[ rhs_number_type; - /// A `-1'-separated list of the rules' RHS. - static const rhs_number_type yyrhs_[]; - /// For each rule, the index of the first RHS symbol in \a yyrhs_. - static const ]b4_int_type_for([b4_prhs])[ yyprhs_[]; - /// For each rule, its source line number. - static const ]b4_int_type_for([b4_rline])[ yyrline_[]; - /// For each scanner token number, its symbol number. - static const ]b4_int_type_for([b4_toknum])[ yytoken_number_[]; - /// Report on the debug stream that the rule \a r is going to be reduced. - virtual void yy_reduce_print_ (int r); - /// Print the state stack on the debug stream. - virtual void yystack_print_ (); - - /* Debugging. */ - int yydebug_; - std::ostream* yycdebug_; -#endif - - /// Convert a scanner token number \a t to a symbol number. - token_number_type yytranslate_ (int t); - - /// \brief Reclaim the memory associated to a symbol. - /// \param yymsg Why this token is reclaimed. - /// If null, do not display the symbol, just free it. - /// \param yytype The symbol type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - inline void yydestruct_ (const char* yymsg, - int yytype, - semantic_type* yyvaluep, - location_type* yylocationp); - - /// Pop \a n symbols the three stacks. - inline void yypop_ (unsigned int n = 1); - - /* Constants. */ - static const int yyeof_; - /* LAST_ -- Last index in TABLE_. */ - static const int yylast_; - static const int yynnts_; - static const int yyempty_; - static const int yyfinal_; - static const int yyterror_; - static const int yyerrcode_; - static const int yyntokens_; - static const unsigned int yyuser_token_number_max_; - static const token_number_type yyundef_token_; -]b4_parse_param_vars[ - }; -]b4_namespace_close[ - -]b4_percent_define_flag_if([[global_tokens_and_yystype]], -[b4_token_defines(b4_tokens) - -#ifndef ]b4_api_PREFIX[STYPE - /* Redirection for backward compatibility. */ -# define ]b4_api_PREFIX[STYPE b4_namespace_ref::b4_parser_class_name::semantic_type -#endif -])[ -]b4_percent_code_get([[provides]])[ -]b4_cpp_guard_close([b4_spec_defines_file]) -b4_output_end() -]) - - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++], - [2002-2012]) -b4_percent_code_get([[top]])[]dnl -m4_if(b4_prefix, [yy], [], -[ -// Take the name prefix into account. -#define yylex b4_prefix[]lex])[ - -/* First part of user declarations. */ -]b4_user_pre_prologue[ - -]b4_defines_if([[ -#include "@basename(]b4_spec_defines_file[@)"]])[ - -/* User implementation prologue. */ -]b4_user_post_prologue[ -]b4_percent_code_get[ - -]b4_null_define[ - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* FIXME: INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YY_ -# define YY_(msgid) msgid -# endif -#endif - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -]b4_yylloc_default_define[ - -/* Suppress unused-variable warnings by "using" E. */ -#define YYUSE(e) ((void) (e)) - -/* Enable debugging if requested. */ -#if ]b4_api_PREFIX[DEBUG - -/* A pseudo ostream that takes yydebug_ into account. */ -# define YYCDEBUG if (yydebug_) (*yycdebug_) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug_) \ - { \ - *yycdebug_ << Title << ' '; \ - yy_symbol_print_ ((Type), (Value), (Location)); \ - *yycdebug_ << std::endl; \ - } \ -} while (false) - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug_) \ - yy_reduce_print_ (Rule); \ -} while (false) - -# define YY_STACK_PRINT() \ -do { \ - if (yydebug_) \ - yystack_print_ (); \ -} while (false) - -#else /* !]b4_api_PREFIX[DEBUG */ - -# define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type) -# define YY_REDUCE_PRINT(Rule) static_cast(0) -# define YY_STACK_PRINT() static_cast(0) - -#endif /* !]b4_api_PREFIX[DEBUG */ - -#define yyerrok (yyerrstatus_ = 0) -#define yyclearin (yychar = yyempty_) - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab -#define YYRECOVERING() (!!yyerrstatus_) - -]b4_namespace_open[]b4_error_verbose_if([[ - - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - std::string - ]b4_parser_class_name[::yytnamerr_ (const char *yystr) - { - if (*yystr == '"') - { - std::string yyr = ""; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - yyr += *yyp; - break; - - case '"': - return yyr; - } - do_not_strip_quotes: ; - } - - return yystr; - } -]])[ - - /// Build a parser object. - ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [ - :])[ -#if ]b4_api_PREFIX[DEBUG - ]m4_ifset([b4_parse_param], [ ], [ :])[yydebug_ (false), - yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[ -#endif]b4_parse_param_cons[ - { - } - - ]b4_parser_class_name::~b4_parser_class_name[ () - { - } - -#if ]b4_api_PREFIX[DEBUG - /*--------------------------------. - | Print this symbol on YYOUTPUT. | - `--------------------------------*/ - - inline void - ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, const location_type* yylocationp) - { - YYUSE (yylocationp); - YYUSE (yyvaluep); - std::ostream& yyo = debug_stream (); - std::ostream& yyoutput = yyo; - YYUSE (yyoutput); - switch (yytype) - { - ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl -[ default: - break; - } - } - - - void - ]b4_parser_class_name[::yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, const location_type* yylocationp) - { - *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm") - << ' ' << yytname_[yytype] << " (" - << *yylocationp << ": "; - yy_symbol_value_print_ (yytype, yyvaluep, yylocationp); - *yycdebug_ << ')'; - } -#endif - - void - ]b4_parser_class_name[::yydestruct_ (const char* yymsg, - int yytype, semantic_type* yyvaluep, location_type* yylocationp) - { - YYUSE (yylocationp); - YYUSE (yymsg); - YYUSE (yyvaluep); - - if (yymsg) - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { - ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[ - default: - break; - } - } - - void - ]b4_parser_class_name[::yypop_ (unsigned int n) - { - yystate_stack_.pop (n); - yysemantic_stack_.pop (n); - yylocation_stack_.pop (n); - } - -#if ]b4_api_PREFIX[DEBUG - std::ostream& - ]b4_parser_class_name[::debug_stream () const - { - return *yycdebug_; - } - - void - ]b4_parser_class_name[::set_debug_stream (std::ostream& o) - { - yycdebug_ = &o; - } - - - ]b4_parser_class_name[::debug_level_type - ]b4_parser_class_name[::debug_level () const - { - return yydebug_; - } - - void - ]b4_parser_class_name[::set_debug_level (debug_level_type l) - { - yydebug_ = l; - } -#endif - - inline bool - ]b4_parser_class_name[::yy_pact_value_is_default_ (int yyvalue) - { - return yyvalue == yypact_ninf_; - } - - inline bool - ]b4_parser_class_name[::yy_table_value_is_error_ (int yyvalue) - { - return yyvalue == yytable_ninf_; - } - - int - ]b4_parser_class_name[::parse () - { - /// Lookahead and lookahead in internal form. - int yychar = yyempty_; - int yytoken = 0; - - // State. - int yyn; - int yylen = 0; - int yystate = 0; - - // Error handling. - int yynerrs_ = 0; - int yyerrstatus_ = 0; - - /// Semantic value of the lookahead. - static semantic_type yyval_default; - semantic_type yylval = yyval_default; - /// Location of the lookahead. - location_type yylloc; - /// The locations where the error started and ended. - location_type yyerror_range[3]; - - /// $$. - semantic_type yyval; - /// @@$. - location_type yyloc; - - int yyresult; - - // FIXME: This shoud be completely indented. It is not yet to - // avoid gratuitous conflicts when merging into the master branch. - try - { - YYCDEBUG << "Starting parse" << std::endl; - -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([yylval], [], [yylloc])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef])[]dnl - - [ /* Initialize the stacks. The initial state will be pushed in - yynewstate, since the latter expects the semantical and the - location values to have been already stored, initialize these - stacks with a primary value. */ - yystate_stack_ = state_stack_type (0); - yysemantic_stack_ = semantic_stack_type (0); - yylocation_stack_ = location_stack_type (0); - yysemantic_stack_.push (yylval); - yylocation_stack_.push (yylloc); - - /* New state. */ - yynewstate: - yystate_stack_.push (yystate); - YYCDEBUG << "Entering state " << yystate << std::endl; - - /* Accept? */ - if (yystate == yyfinal_) - goto yyacceptlab; - - goto yybackup; - - /* Backup. */ - yybackup: - - /* Try to take a decision without lookahead. */ - yyn = yypact_[yystate]; - if (yy_pact_value_is_default_ (yyn)) - goto yydefault; - - /* Read a lookahead token. */ - if (yychar == yyempty_) - { - YYCDEBUG << "Reading a token: "; - yychar = ]b4_c_function_call([yylex], [int], - [b4_api_PREFIX[STYPE*], [&yylval]][]dnl -b4_locations_if([, [[location*], [&yylloc]]])dnl -m4_ifdef([b4_lex_param], [, ]b4_lex_param))[; - } - - /* Convert token to internal form. */ - if (yychar <= yyeof_) - { - yychar = yytoken = yyeof_; - YYCDEBUG << "Now at end of input." << std::endl; - } - else - { - yytoken = yytranslate_ (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) - goto yydefault; - - /* Reduce or error. */ - yyn = yytable_[yyn]; - if (yyn <= 0) - { - if (yy_table_value_is_error_ (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the token being shifted. */ - yychar = yyempty_; - - yysemantic_stack_.push (yylval); - yylocation_stack_.push (yylloc); - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus_) - --yyerrstatus_; - - yystate = yyn; - goto yynewstate; - - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ - yydefault: - yyn = yydefact_[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ - yyreduce: - yylen = yyr2_[yyn]; - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. Otherwise, use the top of the stack. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. */ - if (yylen) - yyval = yysemantic_stack_[yylen - 1]; - else - yyval = yysemantic_stack_[0]; - - // Compute the default @@$. - { - slice slice (yylocation_stack_, yylen); - YYLLOC_DEFAULT (yyloc, slice, yylen); - } - - // Perform the reduction. - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - ]b4_user_actions[ - default: - break; - } - - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action - invokes YYABORT, YYACCEPT, or YYERROR immediately after altering - yychar. In the case of YYABORT or YYACCEPT, an incorrect - destructor might then be invoked immediately. In the case of - YYERROR, subsequent parser actions might lead to an incorrect - destructor call or verbose syntax error message before the - lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc); - - yypop_ (yylen); - yylen = 0; - YY_STACK_PRINT (); - - yysemantic_stack_.push (yyval); - yylocation_stack_.push (yyloc); - - /* Shift the result of the reduction. */ - yyn = yyr1_[yyn]; - yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0]; - if (0 <= yystate && yystate <= yylast_ - && yycheck_[yystate] == yystate_stack_[0]) - yystate = yytable_[yystate]; - else - yystate = yydefgoto_[yyn - yyntokens_]; - goto yynewstate; - - /*------------------------------------. - | yyerrlab -- here on detecting error | - `------------------------------------*/ - yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yytranslate_ (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus_) - { - ++yynerrs_; - if (yychar == yyempty_) - yytoken = yyempty_; - error (yylloc, yysyntax_error_ (yystate, yytoken)); - } - - yyerror_range[1] = yylloc; - if (yyerrstatus_ == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - if (yychar <= yyeof_) - { - /* Return failure if at end of input. */ - if (yychar == yyeof_) - YYABORT; - } - else - { - yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc); - yychar = yyempty_; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - - /*---------------------------------------------------. - | yyerrorlab -- error raised explicitly by YYERROR. | - `---------------------------------------------------*/ - yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (false) - goto yyerrorlab; - - yyerror_range[1] = yylocation_stack_[yylen - 1]; - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - yypop_ (yylen); - yylen = 0; - yystate = yystate_stack_[0]; - goto yyerrlab1; - - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ - yyerrlab1: - yyerrstatus_ = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yystate_stack_.height () == 1) - YYABORT; - - yyerror_range[1] = yylocation_stack_[0]; - yydestruct_ ("Error: popping", - yystos_[yystate], - &yysemantic_stack_[0], &yylocation_stack_[0]); - yypop_ (); - yystate = yystate_stack_[0]; - YY_STACK_PRINT (); - } - - yyerror_range[2] = yylloc; - // Using YYLLOC is tempting, but would change the location of - // the lookahead. YYLOC is available though. - YYLLOC_DEFAULT (yyloc, yyerror_range, 2); - yysemantic_stack_.push (yylval); - yylocation_stack_.push (yyloc); - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos_[yyn], - &yysemantic_stack_[0], &yylocation_stack_[0]); - - yystate = yyn; - goto yynewstate; - - /* Accept. */ - yyacceptlab: - yyresult = 0; - goto yyreturn; - - /* Abort. */ - yyabortlab: - yyresult = 1; - goto yyreturn; - - yyreturn: - if (yychar != yyempty_) - { - /* Make sure we have latest lookahead translation. See comments - at user semantic actions for why this is necessary. */ - yytoken = yytranslate_ (yychar); - yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, - &yylloc); - } - - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - yypop_ (yylen); - while (1 < yystate_stack_.height ()) - { - yydestruct_ ("Cleanup: popping", - yystos_[yystate_stack_[0]], - &yysemantic_stack_[0], - &yylocation_stack_[0]); - yypop_ (); - } - - return yyresult; - } - catch (...) - { - YYCDEBUG << "Exception caught: cleaning lookahead and stack" - << std::endl; - // Do not try to display the values of the reclaimed symbols, - // as their printer might throw an exception. - if (yychar != yyempty_) - { - /* Make sure we have latest lookahead translation. See - comments at user semantic actions for why this is - necessary. */ - yytoken = yytranslate_ (yychar); - yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc); - } - - while (1 < yystate_stack_.height ()) - { - yydestruct_ (YY_NULL, - yystos_[yystate_stack_[0]], - &yysemantic_stack_[0], - &yylocation_stack_[0]); - yypop_ (); - } - throw; - } - } - - // Generate an error message. - std::string - ]b4_parser_class_name[::yysyntax_error_ (]dnl -b4_error_verbose_if([int yystate, int yytoken], - [int, int])[) - {]b4_error_verbose_if([[ - std::string yyres; - // Number of reported tokens (one for the "unexpected", one per - // "expected"). - size_t yycount = 0; - // Its maximum. - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - // Arguments of yyformat. - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yytoken) is - if this state is a consistent state with a default action. - Thus, detecting the absence of a lookahead is sufficient to - determine that there is no unexpected or expected token to - report. In that case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is - a consistent state with a default action. There might have - been a previous inconsistent state, consistent state with a - non-default action, or user semantic action that manipulated - yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state - merging (from LALR or IELR) and default reductions corrupt the - expected token list. However, the list is correct for - canonical LR with one exception: it will still contain any - token that will not be accepted due to an error action in a - later state. - */ - if (yytoken != yyempty_) - { - yyarg[yycount++] = yytname_[yytoken]; - int yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; - for (int yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ - && !yy_table_value_is_error_ (yytable_[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - break; - } - else - yyarg[yycount++] = yytname_[yyx]; - } - } - } - - char const* yyformat = YY_NULL; - switch (yycount) - { -#define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -#undef YYCASE_ - } - - // Argument number. - size_t yyi = 0; - for (char const* yyp = yyformat; *yyp; ++yyp) - if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) - { - yyres += yytnamerr_ (yyarg[yyi++]); - ++yyp; - } - else - yyres += *yyp; - return yyres;]], [[ - return YY_("syntax error");]])[ - } - - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ - const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[; - const ]b4_int_type_for([b4_pact])[ - ]b4_parser_class_name[::yypact_[] = - { - ]b4_pact[ - }; - - /* YYDEFACT[S] -- default reduction number in state S. Performed when - YYTABLE doesn't specify something else to do. Zero means the - default is an error. */ - const ]b4_int_type_for([b4_defact])[ - ]b4_parser_class_name[::yydefact_[] = - { - ]b4_defact[ - }; - - /* YYPGOTO[NTERM-NUM]. */ - const ]b4_int_type_for([b4_pgoto])[ - ]b4_parser_class_name[::yypgoto_[] = - { - ]b4_pgoto[ - }; - - /* YYDEFGOTO[NTERM-NUM]. */ - const ]b4_int_type_for([b4_defgoto])[ - ]b4_parser_class_name[::yydefgoto_[] = - { - ]b4_defgoto[ - }; - - /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF_, syntax error. */ - const ]b4_int_type(b4_table_ninf, b4_table_ninf) b4_parser_class_name::yytable_ninf_ = b4_table_ninf[; - const ]b4_int_type_for([b4_table])[ - ]b4_parser_class_name[::yytable_[] = - { - ]b4_table[ - }; - - /* YYCHECK. */ - const ]b4_int_type_for([b4_check])[ - ]b4_parser_class_name[::yycheck_[] = - { - ]b4_check[ - }; - - /* STOS_[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ - const ]b4_int_type_for([b4_stos])[ - ]b4_parser_class_name[::yystos_[] = - { - ]b4_stos[ - }; - -#if ]b4_api_PREFIX[DEBUG - /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding - to YYLEX-NUM. */ - const ]b4_int_type_for([b4_toknum])[ - ]b4_parser_class_name[::yytoken_number_[] = - { - ]b4_toknum[ - }; -#endif - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ - const ]b4_int_type_for([b4_r1])[ - ]b4_parser_class_name[::yyr1_[] = - { - ]b4_r1[ - }; - - /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ - const ]b4_int_type_for([b4_r2])[ - ]b4_parser_class_name[::yyr2_[] = - { - ]b4_r2[ - }; - -]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[ - /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at \a yyntokens_, nonterminals. */ - const char* - const ]b4_parser_class_name[::yytname_[] = - { - ]b4_tname[ - }; - -]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[ - /* YYRHS -- A `-1'-separated list of the rules' RHS. */ - const ]b4_parser_class_name[::rhs_number_type - ]b4_parser_class_name[::yyrhs_[] = - { - ]b4_rhs[ - }; - - /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ - const ]b4_int_type_for([b4_prhs])[ - ]b4_parser_class_name[::yyprhs_[] = - { - ]b4_prhs[ - }; - - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ - const ]b4_int_type_for([b4_rline])[ - ]b4_parser_class_name[::yyrline_[] = - { - ]b4_rline[ - }; - - // Print the state stack on the debug stream. - void - ]b4_parser_class_name[::yystack_print_ () - { - *yycdebug_ << "Stack now"; - for (state_stack_type::const_iterator i = yystate_stack_.begin (); - i != yystate_stack_.end (); ++i) - *yycdebug_ << ' ' << *i; - *yycdebug_ << std::endl; - } - - // Report on the debug stream that the rule \a yyrule is going to be reduced. - void - ]b4_parser_class_name[::yy_reduce_print_ (int yyrule) - { - unsigned int yylno = yyrline_[yyrule]; - int yynrhs = yyr2_[yyrule]; - /* Print the symbols being reduced, and their result. */ - *yycdebug_ << "Reducing stack by rule " << yyrule - 1 - << " (line " << yylno << "):" << std::endl; - /* The symbols being reduced. */ - for (int yyi = 0; yyi < yynrhs; yyi++) - YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", - yyrhs_[yyprhs_[yyrule] + yyi], - &]b4_rhs_value(yynrhs, yyi + 1)[, - &]b4_rhs_location(yynrhs, yyi + 1)[); - } -#endif // ]b4_api_PREFIX[DEBUG - - /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ - ]b4_parser_class_name[::token_number_type - ]b4_parser_class_name[::yytranslate_ (int t) - { - static - const token_number_type - translate_table[] = - { - ]b4_translate[ - }; - if ((unsigned int) t <= yyuser_token_number_max_) - return translate_table[t]; - else - return yyundef_token_; - } - - const int ]b4_parser_class_name[::yyeof_ = 0; - const int ]b4_parser_class_name[::yylast_ = ]b4_last[; - const int ]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[; - const int ]b4_parser_class_name[::yyempty_ = -2; - const int ]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[; - const int ]b4_parser_class_name[::yyterror_ = 1; - const int ]b4_parser_class_name[::yyerrcode_ = 256; - const int ]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[; - - const unsigned int ]b4_parser_class_name[::yyuser_token_number_max_ = ]b4_user_token_number_max[; - const ]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[; - -]b4_namespace_close[ -]b4_epilogue[]dnl -b4_output_end() diff --git a/tools/data/lalr1.java b/tools/data/lalr1.java deleted file mode 100644 index f8c5c721..00000000 --- a/tools/data/lalr1.java +++ /dev/null @@ -1,927 +0,0 @@ -# Java skeleton for Bison -*- autoconf -*- - -# Copyright (C) 2007-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[java.m4]) - -b4_defines_if([b4_fatal([%s: %%defines does not make sense in Java], [b4_skeleton])]) -m4_ifval(m4_defn([b4_symbol_destructors]), - [b4_fatal([%s: %%destructor does not make sense in Java], [b4_skeleton])], - []) - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java], - [2007-2012]) - -b4_percent_define_ifdef([package], [package b4_percent_define_get([package]); -])[/* First part of user declarations. */ -]b4_pre_prologue -b4_percent_code_get([[imports]]) -[/** - * A Bison parser, automatically generated from ]m4_bpatsubst(b4_file_name, [^"\(.*\)"$], [\1])[. - * - * @@author LALR (1) parser skeleton written by Paolo Bonzini. - */ -]b4_public_if([public ])dnl -b4_abstract_if([abstract ])dnl -b4_final_if([final ])dnl -b4_strictfp_if([strictfp ])dnl -[class ]b4_parser_class_name[]dnl -b4_percent_define_get3([extends], [ extends ])dnl -b4_percent_define_get3([implements], [ implements ])[ -{ - ]b4_identification[ - - /** True if verbose error messages are enabled. */ - public boolean errorVerbose = ]b4_flag_value([error_verbose]); - -b4_locations_if([[ - /** - * A class defining a pair of positions. Positions, defined by the - * ]b4_position_type[ class, denote a point in the input. - * Locations represent a part of the input through the beginning - * and ending positions. */ - public class ]b4_location_type[ { - /** The first, inclusive, position in the range. */ - public ]b4_position_type[ begin; - - /** The first position beyond the range. */ - public ]b4_position_type[ end; - - /** - * Create a ]b4_location_type[ denoting an empty range located at - * a given point. - * @@param loc The position at which the range is anchored. */ - public ]b4_location_type[ (]b4_position_type[ loc) { - this.begin = this.end = loc; - } - - /** - * Create a ]b4_location_type[ from the endpoints of the range. - * @@param begin The first position included in the range. - * @@param end The first position beyond the range. */ - public ]b4_location_type[ (]b4_position_type[ begin, ]b4_position_type[ end) { - this.begin = begin; - this.end = end; - } - - /** - * Print a representation of the location. For this to be correct, - * ]b4_position_type[ should override the equals - * method. */ - public String toString () { - if (begin.equals (end)) - return begin.toString (); - else - return begin.toString () + "-" + end.toString (); - } - } - -]]) - -[ /** Token returned by the scanner to signal the end of its input. */ - public static final int EOF = 0;] - -b4_token_enums(b4_tokens) - - b4_locations_if([[ - private ]b4_location_type[ yylloc (YYStack rhs, int n) - { - if (n > 0) - return new ]b4_location_type[ (rhs.locationAt (n-1).begin, rhs.locationAt (0).end); - else - return new ]b4_location_type[ (rhs.locationAt (0).end); - }]])[ - - /** - * Communication interface between the scanner and the Bison-generated - * parser ]b4_parser_class_name[. - */ - public interface Lexer { - ]b4_locations_if([[/** - * Method to retrieve the beginning position of the last scanned token. - * @@return the position at which the last scanned token starts. */ - ]b4_position_type[ getStartPos (); - - /** - * Method to retrieve the ending position of the last scanned token. - * @@return the first position beyond the last scanned token. */ - ]b4_position_type[ getEndPos ();]])[ - - /** - * Method to retrieve the semantic value of the last scanned token. - * @@return the semantic value of the last scanned token. */ - ]b4_yystype[ getLVal (); - - /** - * Entry point for the scanner. Returns the token identifier corresponding - * to the next token and prepares to return the semantic value - * ]b4_locations_if([and beginning/ending positions ])[of the token. - * @@return the token identifier corresponding to the next token. */ - int yylex () ]b4_maybe_throws([b4_lex_throws])[; - - /** - * Entry point for error reporting. Emits an error - * ]b4_locations_if([referring to the given location ])[in a user-defined way. - * - * ]b4_locations_if([[@@param loc The location of the element to which the - * error message is related]])[ - * @@param s The string for the error message. */ - void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[String s);] - } - - b4_lexer_if([[private class YYLexer implements Lexer { -]b4_percent_code_get([[lexer]])[ - } - - ]])[/** The object doing lexical analysis for us. */ - private Lexer yylexer; - ] - b4_parse_param_vars - -b4_lexer_if([[ - /** - * Instantiates the Bison-generated parser. - */ - public ]b4_parser_class_name (b4_parse_param_decl([b4_lex_param_decl])[) { - this.yylexer = new YYLexer(]b4_lex_param_call[); - ]b4_parse_param_cons[ - } -]]) - - /** - * Instantiates the Bison-generated parser. - * @@param yylexer The scanner that will supply tokens to the parser. - */ - b4_lexer_if([[protected]], [[public]]) b4_parser_class_name[ (]b4_parse_param_decl([[Lexer yylexer]])[) { - this.yylexer = yylexer; - ]b4_parse_param_cons[ - } - - private java.io.PrintStream yyDebugStream = System.err; - - /** - * Return the PrintStream on which the debugging output is - * printed. - */ - public final java.io.PrintStream getDebugStream () { return yyDebugStream; } - - /** - * Set the PrintStream on which the debug output is printed. - * @@param s The stream that is used for debugging output. - */ - public final void setDebugStream(java.io.PrintStream s) { yyDebugStream = s; } - - private int yydebug = 0; - - /** - * Answer the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - */ - public final int getDebugLevel() { return yydebug; } - - /** - * Set the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - * @@param level The verbosity level for debugging output. - */ - public final void setDebugLevel(int level) { yydebug = level; } - - private final int yylex () ]b4_maybe_throws([b4_lex_throws]) [{ - return yylexer.yylex (); - } - protected final void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[String s) { - yylexer.yyerror (]b4_locations_if([loc, ])[s); - } - - ]b4_locations_if([ - protected final void yyerror (String s) { - yylexer.yyerror ((]b4_location_type[)null, s); - } - protected final void yyerror (]b4_position_type[ loc, String s) { - yylexer.yyerror (new ]b4_location_type[ (loc), s); - }]) - - [protected final void yycdebug (String s) { - if (yydebug > 0) - yyDebugStream.println (s); - } - - private final class YYStack { - private int[] stateStack = new int[16]; - ]b4_locations_if([[private ]b4_location_type[[] locStack = new ]b4_location_type[[16];]])[ - private ]b4_yystype[[] valueStack = new ]b4_yystype[[16]; - - public int size = 16; - public int height = -1; - - public final void push (int state, ]b4_yystype[ value]dnl - b4_locations_if([, ]b4_location_type[ loc])[) { - height++; - if (size == height) - { - int[] newStateStack = new int[size * 2]; - System.arraycopy (stateStack, 0, newStateStack, 0, height); - stateStack = newStateStack; - ]b4_locations_if([[ - ]b4_location_type[[] newLocStack = new ]b4_location_type[[size * 2]; - System.arraycopy (locStack, 0, newLocStack, 0, height); - locStack = newLocStack;]]) - - b4_yystype[[] newValueStack = new ]b4_yystype[[size * 2]; - System.arraycopy (valueStack, 0, newValueStack, 0, height); - valueStack = newValueStack; - - size *= 2; - } - - stateStack[height] = state; - ]b4_locations_if([[locStack[height] = loc;]])[ - valueStack[height] = value; - } - - public final void pop () { - pop (1); - } - - public final void pop (int num) { - // Avoid memory leaks... garbage collection is a white lie! - if (num > 0) { - java.util.Arrays.fill (valueStack, height - num + 1, height + 1, null); - ]b4_locations_if([[java.util.Arrays.fill (locStack, height - num + 1, height + 1, null);]])[ - } - height -= num; - } - - public final int stateAt (int i) { - return stateStack[height - i]; - } - - ]b4_locations_if([[public final ]b4_location_type[ locationAt (int i) { - return locStack[height - i]; - } - - ]])[public final ]b4_yystype[ valueAt (int i) { - return valueStack[height - i]; - } - - // Print the state stack on the debug stream. - public void print (java.io.PrintStream out) - { - out.print ("Stack now"); - - for (int i = 0; i <= height; i++) - { - out.print (' '); - out.print (stateStack[i]); - } - out.println (); - } - } - - /** - * Returned by a Bison action in order to stop the parsing process and - * return success (true). */ - public static final int YYACCEPT = 0; - - /** - * Returned by a Bison action in order to stop the parsing process and - * return failure (false). */ - public static final int YYABORT = 1; - - /** - * Returned by a Bison action in order to start error recovery without - * printing an error message. */ - public static final int YYERROR = 2; - - // Internal return codes that are not supported for user semantic - // actions. - private static final int YYERRLAB = 3; - private static final int YYNEWSTATE = 4; - private static final int YYDEFAULT = 5; - private static final int YYREDUCE = 6; - private static final int YYERRLAB1 = 7; - private static final int YYRETURN = 8; - - private int yyerrstatus_ = 0; - - /** - * Return whether error recovery is being done. In this state, the parser - * reads token until it reaches a known state, and then restarts normal - * operation. */ - public final boolean recovering () - { - return yyerrstatus_ == 0; - } - - private int yyaction (int yyn, YYStack yystack, int yylen) ]b4_maybe_throws([b4_throws])[ - { - ]b4_yystype[ yyval; - ]b4_locations_if([b4_location_type[ yyloc = yylloc (yystack, yylen);]])[ - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. Otherwise, use the top of the stack. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. */ - if (yylen > 0) - yyval = yystack.valueAt (yylen - 1); - else - yyval = yystack.valueAt (0); - - yy_reduce_print (yyn, yystack); - - switch (yyn) - { - ]b4_user_actions[ - default: break; - } - - yy_symbol_print ("-> $$ =", yyr1_[yyn], yyval]b4_locations_if([, yyloc])[); - - yystack.pop (yylen); - yylen = 0; - - /* Shift the result of the reduction. */ - yyn = yyr1_[yyn]; - int yystate = yypgoto_[yyn - yyntokens_] + yystack.stateAt (0); - if (0 <= yystate && yystate <= yylast_ - && yycheck_[yystate] == yystack.stateAt (0)) - yystate = yytable_[yystate]; - else - yystate = yydefgoto_[yyn - yyntokens_]; - - yystack.push (yystate, yyval]b4_locations_if([, yyloc])[); - return YYNEWSTATE; - } - - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - private final String yytnamerr_ (String yystr) - { - if (yystr.charAt (0) == '"') - { - StringBuffer yyr = new StringBuffer (); - strip_quotes: for (int i = 1; i < yystr.length (); i++) - switch (yystr.charAt (i)) - { - case '\'': - case ',': - break strip_quotes; - - case '\\': - if (yystr.charAt(++i) != '\\') - break strip_quotes; - /* Fall through. */ - default: - yyr.append (yystr.charAt (i)); - break; - - case '"': - return yyr.toString (); - } - } - else if (yystr.equals ("$end")) - return "end of input"; - - return yystr; - } - - /*--------------------------------. - | Print this symbol on YYOUTPUT. | - `--------------------------------*/ - - private void yy_symbol_print (String s, int yytype, - ]b4_yystype[ yyvaluep]dnl - b4_locations_if([, Object yylocationp])[) - { - if (yydebug > 0) - yycdebug (s + (yytype < yyntokens_ ? " token " : " nterm ") - + yytname_[yytype] + " ("]b4_locations_if([ - + yylocationp + ": "])[ - + (yyvaluep == null ? "(null)" : yyvaluep.toString ()) + ")"); - } - - /** - * Parse input from the scanner that was specified at object construction - * time. Return whether the end of the input was reached successfully. - * - * @@return true if the parsing succeeds. Note that this does not - * imply that there were no syntax errors. - */ - public boolean parse () ]b4_maybe_throws([b4_list2([b4_lex_throws], [b4_throws])])[ - { - /// Lookahead and lookahead in internal form. - int yychar = yyempty_; - int yytoken = 0; - - /* State. */ - int yyn = 0; - int yylen = 0; - int yystate = 0; - - YYStack yystack = new YYStack (); - - /* Error handling. */ - int yynerrs_ = 0; - ]b4_locations_if([/// The location where the error started. - ]b4_location_type[ yyerrloc = null; - - /// ]b4_location_type[ of the lookahead. - ]b4_location_type[ yylloc = new ]b4_location_type[ (null, null); - - /// @@$. - ]b4_location_type[ yyloc;]) - - /// Semantic value of the lookahead. - b4_yystype[ yylval = null; - - yycdebug ("Starting parse\n"); - yyerrstatus_ = 0; - -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([yylval], [], [yylloc])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef])[]dnl - - [ /* Initialize the stack. */ - yystack.push (yystate, yylval]b4_locations_if([, yylloc])[); - - int label = YYNEWSTATE; - for (;;) - switch (label) - { - /* New state. Unlike in the C/C++ skeletons, the state is already - pushed when we come here. */ - case YYNEWSTATE: - yycdebug ("Entering state " + yystate + "\n"); - if (yydebug > 0) - yystack.print (yyDebugStream); - - /* Accept? */ - if (yystate == yyfinal_) - return true; - - /* Take a decision. First try without lookahead. */ - yyn = yypact_[yystate]; - if (yy_pact_value_is_default_ (yyn)) - { - label = YYDEFAULT; - break; - } - - /* Read a lookahead token. */ - if (yychar == yyempty_) - { - yycdebug ("Reading a token: "); - yychar = yylex ();] - b4_locations_if([[ - yylloc = new ]b4_location_type[(yylexer.getStartPos (), - yylexer.getEndPos ());]]) - yylval = yylexer.getLVal ();[ - } - - /* Convert token to internal form. */ - if (yychar <= EOF) - { - yychar = yytoken = EOF; - yycdebug ("Now at end of input.\n"); - } - else - { - yytoken = yytranslate_ (yychar); - yy_symbol_print ("Next token is", yytoken, - yylval]b4_locations_if([, yylloc])[); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) - label = YYDEFAULT; - - /* <= 0 means reduce or error. */ - else if ((yyn = yytable_[yyn]) <= 0) - { - if (yy_table_value_is_error_ (yyn)) - label = YYERRLAB; - else - { - yyn = -yyn; - label = YYREDUCE; - } - } - - else - { - /* Shift the lookahead token. */ - yy_symbol_print ("Shifting", yytoken, - yylval]b4_locations_if([, yylloc])[); - - /* Discard the token being shifted. */ - yychar = yyempty_; - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus_ > 0) - --yyerrstatus_; - - yystate = yyn; - yystack.push (yystate, yylval]b4_locations_if([, yylloc])[); - label = YYNEWSTATE; - } - break; - - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ - case YYDEFAULT: - yyn = yydefact_[yystate]; - if (yyn == 0) - label = YYERRLAB; - else - label = YYREDUCE; - break; - - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ - case YYREDUCE: - yylen = yyr2_[yyn]; - label = yyaction (yyn, yystack, yylen); - yystate = yystack.stateAt (0); - break; - - /*------------------------------------. - | yyerrlab -- here on detecting error | - `------------------------------------*/ - case YYERRLAB: - /* If not already recovering from an error, report this error. */ - if (yyerrstatus_ == 0) - { - ++yynerrs_; - if (yychar == yyempty_) - yytoken = yyempty_; - yyerror (]b4_locations_if([yylloc, ])[yysyntax_error (yystate, yytoken)); - } - - ]b4_locations_if([yyerrloc = yylloc;])[ - if (yyerrstatus_ == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= EOF) - { - /* Return failure if at end of input. */ - if (yychar == EOF) - return false; - } - else - yychar = yyempty_; - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - label = YYERRLAB1; - break; - - /*---------------------------------------------------. - | errorlab -- error raised explicitly by YYERROR. | - `---------------------------------------------------*/ - case YYERROR: - - ]b4_locations_if([yyerrloc = yystack.locationAt (yylen - 1);])[ - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - yystack.pop (yylen); - yylen = 0; - yystate = yystack.stateAt (0); - label = YYERRLAB1; - break; - - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ - case YYERRLAB1: - yyerrstatus_ = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yystack.height == 0) - return false; - - ]b4_locations_if([yyerrloc = yystack.locationAt (0);])[ - yystack.pop (); - yystate = yystack.stateAt (0); - if (yydebug > 0) - yystack.print (yyDebugStream); - } - - ]b4_locations_if([ - /* Muck with the stack to setup for yylloc. */ - yystack.push (0, null, yylloc); - yystack.push (0, null, yyerrloc); - yyloc = yylloc (yystack, 2); - yystack.pop (2);])[ - - /* Shift the error token. */ - yy_symbol_print ("Shifting", yystos_[yyn], - yylval]b4_locations_if([, yyloc])[); - - yystate = yyn; - yystack.push (yyn, yylval]b4_locations_if([, yyloc])[); - label = YYNEWSTATE; - break; - - /* Accept. */ - case YYACCEPT: - return true; - - /* Abort. */ - case YYABORT: - return false; - } - } - - // Generate an error message. - private String yysyntax_error (int yystate, int tok) - { - if (errorVerbose) - { - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. - See - - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, - then the only way this function was invoked is if the - default action is an error action. In that case, don't - check for expected tokens because there are none. - - The only way there can be no lookahead present (in tok) is - if this state is a consistent state with a default action. - Thus, detecting the absence of a lookahead is sufficient to - determine that there is no unexpected or expected token to - report. In that case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this - state is a consistent state with a default action. There - might have been a previous inconsistent state, consistent - state with a non-default action, or user semantic action - that manipulated yychar. (However, yychar is currently out - of scope during semantic actions.) - - Of course, the expected token list depends on states to - have correct lookahead information, and it depends on the - parser not to perform extra reductions after fetching a - lookahead from the scanner and before detecting a syntax - error. Thus, state merging (from LALR or IELR) and default - reductions corrupt the expected token list. However, the - list is correct for canonical LR with one exception: it - will still contain any token that will not be accepted due - to an error action in a later state. - */ - if (tok != yyempty_) - { - // FIXME: This method of building the message is not compatible - // with internationalization. - StringBuffer res = - new StringBuffer ("syntax error, unexpected "); - res.append (yytnamerr_ (yytname_[tok])); - int yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative - indexes in YYCHECK. In other words, skip the first - -YYN actions for this state because they are default - actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; - int count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ - && !yy_table_value_is_error_ (yytable_[x + yyn])) - ++count; - if (count < 5) - { - count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ - && !yy_table_value_is_error_ (yytable_[x + yyn])) - { - res.append (count++ == 0 ? ", expecting " : " or "); - res.append (yytnamerr_ (yytname_[x])); - } - } - } - return res.toString (); - } - } - - return "syntax error"; - } - - /** - * Whether the given yypact_ value indicates a defaulted state. - * @@param yyvalue the value to check - */ - private static boolean yy_pact_value_is_default_ (int yyvalue) - { - return yyvalue == yypact_ninf_; - } - - /** - * Whether the given yytable_ value indicates a syntax error. - * @@param yyvalue the value to check - */ - private static boolean yy_table_value_is_error_ (int yyvalue) - { - return yyvalue == yytable_ninf_; - } - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ - private static final ]b4_int_type_for([b4_pact])[ yypact_ninf_ = ]b4_pact_ninf[; - private static final ]b4_int_type_for([b4_pact])[ yypact_[] = - { - ]b4_pact[ - }; - - /* YYDEFACT[S] -- default reduction number in state S. Performed when - YYTABLE doesn't specify something else to do. Zero means the - default is an error. */ - private static final ]b4_int_type_for([b4_defact])[ yydefact_[] = - { - ]b4_defact[ - }; - - /* YYPGOTO[NTERM-NUM]. */ - private static final ]b4_int_type_for([b4_pgoto])[ yypgoto_[] = - { - ]b4_pgoto[ - }; - - /* YYDEFGOTO[NTERM-NUM]. */ - private static final ]b4_int_type_for([b4_defgoto])[ - yydefgoto_[] = - { - ]b4_defgoto[ - }; - - /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF_, syntax error. */ - private static final ]b4_int_type_for([b4_table])[ yytable_ninf_ = ]b4_table_ninf[; - private static final ]b4_int_type_for([b4_table])[ - yytable_[] = - { - ]b4_table[ - }; - - /* YYCHECK. */ - private static final ]b4_int_type_for([b4_check])[ - yycheck_[] = - { - ]b4_check[ - }; - - /* STOS_[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ - private static final ]b4_int_type_for([b4_stos])[ - yystos_[] = - { - ]b4_stos[ - }; - - /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding - to YYLEX-NUM. */ - private static final ]b4_int_type_for([b4_toknum])[ - yytoken_number_[] = - { - ]b4_toknum[ - }; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ - private static final ]b4_int_type_for([b4_r1])[ - yyr1_[] = - { - ]b4_r1[ - }; - - /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ - private static final ]b4_int_type_for([b4_r2])[ - yyr2_[] = - { - ]b4_r2[ - }; - - /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at \a yyntokens_, nonterminals. */ - private static final String yytname_[] = - { - ]b4_tname[ - }; - - /* YYRHS -- A `-1'-separated list of the rules' RHS. */ - private static final ]b4_int_type_for([b4_rhs])[ yyrhs_[] = - { - ]b4_rhs[ - }; - - /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ - private static final ]b4_int_type_for([b4_prhs])[ yyprhs_[] = - { - ]b4_prhs[ - }; - - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ - private static final ]b4_int_type_for([b4_rline])[ yyrline_[] = - { - ]b4_rline[ - }; - - // Report on the debug stream that the rule yyrule is going to be reduced. - private void yy_reduce_print (int yyrule, YYStack yystack) - { - if (yydebug == 0) - return; - - int yylno = yyrline_[yyrule]; - int yynrhs = yyr2_[yyrule]; - /* Print the symbols being reduced, and their result. */ - yycdebug ("Reducing stack by rule " + (yyrule - 1) - + " (line " + yylno + "), "); - - /* The symbols being reduced. */ - for (int yyi = 0; yyi < yynrhs; yyi++) - yy_symbol_print (" $" + (yyi + 1) + " =", - yyrhs_[yyprhs_[yyrule] + yyi], - ]b4_rhs_value(yynrhs, yyi + 1)b4_locations_if([, - b4_rhs_location(yynrhs, yyi + 1)])[); - } - - /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ - private static final ]b4_int_type_for([b4_translate])[ yytranslate_table_[] = - { - ]b4_translate[ - }; - - private static final ]b4_int_type_for([b4_translate])[ yytranslate_ (int t) - { - if (t >= 0 && t <= yyuser_token_number_max_) - return yytranslate_table_[t]; - else - return yyundef_token_; - } - - private static final int yylast_ = ]b4_last[; - private static final int yynnts_ = ]b4_nterms_number[; - private static final int yyempty_ = -2; - private static final int yyfinal_ = ]b4_final_state_number[; - private static final int yyterror_ = 1; - private static final int yyerrcode_ = 256; - private static final int yyntokens_ = ]b4_tokens_number[; - - private static final int yyuser_token_number_max_ = ]b4_user_token_number_max[; - private static final int yyundef_token_ = ]b4_undef_token_number[; - -]/* User implementation code. */ -b4_percent_code_get[]dnl - -} - -b4_epilogue -b4_output_end() diff --git a/tools/data/location.cc b/tools/data/location.cc deleted file mode 100644 index 8e831241..00000000 --- a/tools/data/location.cc +++ /dev/null @@ -1,299 +0,0 @@ -# C++ skeleton for Bison - -# Copyright (C) 2002-2007, 2009-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -b4_output_begin([b4_dir_prefix[]position.hh]) -b4_copyright([Positions for Bison parsers in C++], - [2002-2007, 2009-2012])[ - -/** - ** \file ]b4_dir_prefix[position.hh - ** Define the ]b4_namespace_ref[::position class. - */ - -]b4_cpp_guard_open([b4_dir_prefix[]position.hh])[ - -# include // std::max -# include -# include - -]b4_null_define[ - -]b4_namespace_open[ - /// Abstract a position. - class position - { - public: -]m4_ifdef([b4_location_constructors], [[ - /// Construct a position. - explicit position (]b4_percent_define_get([[filename_type]])[* f = YY_NULL, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - : filename (f) - , line (l) - , column (c) - { - } - -]])[ - /// Initialization. - void initialize (]b4_percent_define_get([[filename_type]])[* fn = YY_NULL, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - { - filename = fn; - line = l; - column = c; - } - - /** \name Line and Column related manipulators - ** \{ */ - /// (line related) Advance to the COUNT next lines. - void lines (int count = 1) - { - column = ]b4_location_initial_column[u; - line += count; - } - - /// (column related) Advance to the COUNT next columns. - void columns (int count = 1) - { - column = std::max (]b4_location_initial_column[u, column + count); - } - /** \} */ - - /// File name to which this position refers. - ]b4_percent_define_get([[filename_type]])[* filename; - /// Current line number. - unsigned int line; - /// Current column number. - unsigned int column; - }; - - /// Add and assign a position. - inline position& - operator+= (position& res, const int width) - { - res.columns (width); - return res; - } - - /// Add two position objects. - inline const position - operator+ (const position& begin, const int width) - { - position res = begin; - return res += width; - } - - /// Add and assign a position. - inline position& - operator-= (position& res, const int width) - { - return res += -width; - } - - /// Add two position objects. - inline const position - operator- (const position& begin, const int width) - { - return begin + -width; - } -]b4_percent_define_flag_if([[define_location_comparison]], [[ - /// Compare two position objects. - inline bool - operator== (const position& pos1, const position& pos2) - { - return (pos1.line == pos2.line - && pos1.column == pos2.column - && (pos1.filename == pos2.filename - || (pos1.filename && pos2.filename - && *pos1.filename == *pos2.filename))); - } - - /// Compare two position objects. - inline bool - operator!= (const position& pos1, const position& pos2) - { - return !(pos1 == pos2); - } -]])[ - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param pos a reference to the position to redirect - */ - template - inline std::basic_ostream& - operator<< (std::basic_ostream& ostr, const position& pos) - { - if (pos.filename) - ostr << *pos.filename << ':'; - return ostr << pos.line << '.' << pos.column; - } - -]b4_namespace_close[ -]b4_cpp_guard_close([b4_dir_prefix[]position.hh]) -b4_output_end() - - -b4_output_begin([b4_dir_prefix[]location.hh]) -b4_copyright([Locations for Bison parsers in C++], - [2002-2007, 2009-2012])[ - -/** - ** \file ]b4_dir_prefix[location.hh - ** Define the ]b4_namespace_ref[::location class. - */ - -]b4_cpp_guard_open([b4_dir_prefix[]location.hh])[ - -# include "position.hh" - -]b4_namespace_open[ - - /// Abstract a location. - class location - { - public: -]m4_ifdef([b4_location_constructors], [ - /// Construct a location from \a b to \a e. - location (const position& b, const position& e) - : begin (b) - , end (e) - { - } - - /// Construct a 0-width location in \a p. - explicit location (const position& p = position ()) - : begin (p) - , end (p) - { - } - - /// Construct a 0-width location in \a f, \a l, \a c. - explicit location (]b4_percent_define_get([[filename_type]])[* f, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - : begin (f, l, c) - , end (f, l, c) - { - } - -])[ - /// Initialization. - void initialize (]b4_percent_define_get([[filename_type]])[* f = YY_NULL, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - { - begin.initialize (f, l, c); - end = begin; - } - - /** \name Line and Column related manipulators - ** \{ */ - public: - /// Reset initial location to final location. - void step () - { - begin = end; - } - - /// Extend the current location to the COUNT next columns. - void columns (unsigned int count = 1) - { - end += count; - } - - /// Extend the current location to the COUNT next lines. - void lines (unsigned int count = 1) - { - end.lines (count); - } - /** \} */ - - - public: - /// Beginning of the located region. - position begin; - /// End of the located region. - position end; - }; - - /// Join two location objects to create a location. - inline const location operator+ (const location& begin, const location& end) - { - location res = begin; - res.end = end.end; - return res; - } - - /// Add two location objects. - inline const location operator+ (const location& begin, unsigned int width) - { - location res = begin; - res.columns (width); - return res; - } - - /// Add and assign a location. - inline location& operator+= (location& res, unsigned int width) - { - res.columns (width); - return res; - } -]b4_percent_define_flag_if([[define_location_comparison]], [[ - /// Compare two location objects. - inline bool - operator== (const location& loc1, const location& loc2) - { - return loc1.begin == loc2.begin && loc1.end == loc2.end; - } - - /// Compare two location objects. - inline bool - operator!= (const location& loc1, const location& loc2) - { - return !(loc1 == loc2); - } -]])[ - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param loc a reference to the location to redirect - ** - ** Avoid duplicate information. - */ - template - inline std::basic_ostream& - operator<< (std::basic_ostream& ostr, const location& loc) - { - position last = loc.end - 1; - ostr << loc.begin; - if (last.filename - && (!loc.begin.filename - || *loc.begin.filename != *last.filename)) - ostr << '-' << last; - else if (loc.begin.line != last.line) - ostr << '-' << last.line << '.' << last.column; - else if (loc.begin.column != last.column) - ostr << '-' << last.column; - return ostr; - } - -]b4_namespace_close[ - -]b4_cpp_guard_close([b4_dir_prefix[]location.hh]) -b4_output_end() diff --git a/tools/data/m4sugar/foreach.m4 b/tools/data/m4sugar/foreach.m4 deleted file mode 100644 index c20c00ae..00000000 --- a/tools/data/m4sugar/foreach.m4 +++ /dev/null @@ -1,362 +0,0 @@ -# -*- Autoconf -*- -# This file is part of Autoconf. -# foreach-based replacements for recursive functions. -# Speeds up GNU M4 1.4.x by avoiding quadratic $@ recursion, but penalizes -# GNU M4 1.6 by requiring more memory and macro expansions. -# -# Copyright (C) 2008-2012 Free Software Foundation, Inc. - -# This file is part of Autoconf. This program is free -# software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# Under Section 7 of GPL version 3, you are granted additional -# permissions described in the Autoconf Configure Script Exception, -# version 3.0, as published by the Free Software Foundation. -# -# You should have received a copy of the GNU General Public License -# and a copy of the Autoconf Configure Script Exception along with -# this program; see the files COPYINGv3 and COPYING.EXCEPTION -# respectively. If not, see . - -# Written by Eric Blake. - -# In M4 1.4.x, every byte of $@ is rescanned. This means that an -# algorithm on n arguments that recurses with one less argument each -# iteration will scan n * (n + 1) / 2 arguments, for O(n^2) time. In -# M4 1.6, this was fixed so that $@ is only scanned once, then -# back-references are made to information stored about the scan. -# Thus, n iterations need only scan n arguments, for O(n) time. -# Additionally, in M4 1.4.x, recursive algorithms did not clean up -# memory very well, requiring O(n^2) memory rather than O(n) for n -# iterations. -# -# This file is designed to overcome the quadratic nature of $@ -# recursion by writing a variant of m4_foreach that uses m4_for rather -# than $@ recursion to operate on the list. This involves more macro -# expansions, but avoids the need to rescan a quadratic number of -# arguments, making these replacements very attractive for M4 1.4.x. -# On the other hand, in any version of M4, expanding additional macros -# costs additional time; therefore, in M4 1.6, where $@ recursion uses -# fewer macros, these replacements actually pessimize performance. -# Additionally, the use of $10 to mean the tenth argument violates -# POSIX; although all versions of m4 1.4.x support this meaning, a -# future m4 version may switch to take it as the first argument -# concatenated with a literal 0, so the implementations in this file -# are not future-proof. Thus, this file is conditionally included as -# part of m4_init(), only when it is detected that M4 probably has -# quadratic behavior (ie. it lacks the macro __m4_version__). -# -# Please keep this file in sync with m4sugar.m4. - -# _m4_foreach(PRE, POST, IGNORED, ARG...) -# --------------------------------------- -# Form the common basis of the m4_foreach and m4_map macros. For each -# ARG, expand PRE[ARG]POST[]. The IGNORED argument makes recursion -# easier, and must be supplied rather than implicit. -# -# This version minimizes the number of times that $@ is evaluated by -# using m4_for to generate a boilerplate into _m4_f then passing $@ to -# that temporary macro. Thus, the recursion is done in m4_for without -# reparsing any user input, and is not quadratic. For an idea of how -# this works, note that m4_foreach(i,[1,2],[i]) calls -# _m4_foreach([m4_define([i],],[)i],[],[1],[2]) -# which defines _m4_f: -# $1[$4]$2[]$1[$5]$2[]_m4_popdef([_m4_f]) -# then calls _m4_f([m4_define([i],],[)i],[],[1],[2]) for a net result: -# m4_define([i],[1])i[]m4_define([i],[2])i[]_m4_popdef([_m4_f]). -m4_define([_m4_foreach], -[m4_if([$#], [3], [], - [m4_pushdef([_m4_f], _m4_for([4], [$#], [1], - [$0_([1], [2],], [)])[_m4_popdef([_m4_f])])_m4_f($@)])]) - -m4_define([_m4_foreach_], -[[$$1[$$3]$$2[]]]) - -# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT) -# ----------------------------------------------------------- -# Find the first VAL that SWITCH matches, and expand the corresponding -# IF-VAL. If there are no matches, expand DEFAULT. -# -# Use m4_for to create a temporary macro in terms of a boilerplate -# m4_if with final cleanup. If $# is even, we have DEFAULT; if it is -# odd, then rounding the last $# up in the temporary macro is -# harmless. For example, both m4_case(1,2,3,4,5) and -# m4_case(1,2,3,4,5,6) result in the intermediate _m4_case being -# m4_if([$1],[$2],[$3],[$1],[$4],[$5],_m4_popdef([_m4_case])[$6]) -m4_define([m4_case], -[m4_if(m4_eval([$# <= 2]), [1], [$2], -[m4_pushdef([_$0], [m4_if(]_m4_for([2], m4_eval([($# - 1) / 2 * 2]), [2], - [_$0_(], [)])[_m4_popdef( - [_$0])]m4_dquote($m4_eval([($# + 1) & ~1]))[)])_$0($@)])]) - -m4_define([_m4_case_], -[$0_([1], [$1], m4_incr([$1]))]) - -m4_define([_m4_case__], -[[[$$1],[$$2],[$$3],]]) - -# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT) -# ----------------------------------------------------- -# m4 equivalent of -# -# if (SWITCH =~ RE1) -# VAL1; -# elif (SWITCH =~ RE2) -# VAL2; -# elif ... -# ... -# else -# DEFAULT -# -# We build the temporary macro _m4_b: -# m4_define([_m4_b], _m4_defn([_m4_bmatch]))_m4_b([$1], [$2], [$3])... -# _m4_b([$1], [$m-1], [$m])_m4_b([], [], [$m+1]_m4_popdef([_m4_b])) -# then invoke m4_unquote(_m4_b($@)), for concatenation with later text. -m4_define([m4_bmatch], -[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])], - [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], - [$#], 2, [$2], - [m4_pushdef([_m4_b], [m4_define([_m4_b], - _m4_defn([_$0]))]_m4_for([3], m4_eval([($# + 1) / 2 * 2 - 1]), - [2], [_$0_(], [)])[_m4_b([], [],]m4_dquote([$]m4_eval( - [($# + 1) / 2 * 2]))[_m4_popdef([_m4_b]))])m4_unquote(_m4_b($@))])]) - -m4_define([_m4_bmatch], -[m4_if(m4_bregexp([$1], [$2]), [-1], [], [[$3]m4_define([$0])])]) - -m4_define([_m4_bmatch_], -[$0_([1], m4_decr([$1]), [$1])]) - -m4_define([_m4_bmatch__], -[[_m4_b([$$1], [$$2], [$$3])]]) - - -# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT]) -# ------------------------------------------------------------------- -# Similar to m4_if, except that each TEST is expanded when encountered. -# If the expansion of TESTn matches the string VALn, the result is IF-VALn. -# The result is DEFAULT if no tests passed. This macro allows -# short-circuiting of expensive tests, where it pays to arrange quick -# filter tests to run first. -# -# m4_cond already guarantees either 3*n or 3*n + 1 arguments, 1 <= n. -# We only have to speed up _m4_cond, by building the temporary _m4_c: -# m4_define([_m4_c], _m4_defn([m4_unquote]))_m4_c([m4_if(($1), [($2)], -# [[$3]m4_define([_m4_c])])])_m4_c([m4_if(($4), [($5)], -# [[$6]m4_define([_m4_c])])])..._m4_c([m4_if(($m-2), [($m-1)], -# [[$m]m4_define([_m4_c])])])_m4_c([[$m+1]]_m4_popdef([_m4_c])) -# We invoke m4_unquote(_m4_c($@)), for concatenation with later text. -m4_define([_m4_cond], -[m4_pushdef([_m4_c], [m4_define([_m4_c], - _m4_defn([m4_unquote]))]_m4_for([2], m4_eval([$# / 3 * 3 - 1]), [3], - [$0_(], [)])[_m4_c(]m4_dquote(m4_dquote( - [$]m4_eval([$# / 3 * 3 + 1])))[_m4_popdef([_m4_c]))])m4_unquote(_m4_c($@))]) - -m4_define([_m4_cond_], -[$0_(m4_decr([$1]), [$1], m4_incr([$1]))]) - -m4_define([_m4_cond__], -[[_m4_c([m4_if(($$1), [($$2)], [[$$3]m4_define([_m4_c])])])]]) - -# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...) -# ---------------------------------------------------- -# m4 equivalent of -# -# $_ = STRING; -# s/RE1/SUBST1/g; -# s/RE2/SUBST2/g; -# ... -# -# m4_bpatsubsts already validated an odd number of arguments; we only -# need to speed up _m4_bpatsubsts. To avoid nesting, we build the -# temporary _m4_p: -# m4_define([_m4_p], [$1])m4_define([_m4_p], -# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$2], [$3]))m4_define([_m4_p], -# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$4], [$5]))m4_define([_m4_p],... -# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$m-1], [$m]))m4_unquote( -# _m4_defn([_m4_p])_m4_popdef([_m4_p])) -m4_define([_m4_bpatsubsts], -[m4_pushdef([_m4_p], [m4_define([_m4_p], - ]m4_dquote([$]1)[)]_m4_for([3], [$#], [2], [$0_(], - [)])[m4_unquote(_m4_defn([_m4_p])_m4_popdef([_m4_p]))])_m4_p($@)]) - -m4_define([_m4_bpatsubsts_], -[$0_(m4_decr([$1]), [$1])]) - -m4_define([_m4_bpatsubsts__], -[[m4_define([_m4_p], -m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$$1], [$$2]))]]) - -# m4_shiftn(N, ...) -# ----------------- -# Returns ... shifted N times. Useful for recursive "varargs" constructs. -# -# m4_shiftn already validated arguments; we only need to speed up -# _m4_shiftn. If N is 3, then we build the temporary _m4_s, defined as -# ,[$5],[$6],...,[$m]_m4_popdef([_m4_s]) -# before calling m4_shift(_m4_s($@)). -m4_define([_m4_shiftn], -[m4_if(m4_incr([$1]), [$#], [], [m4_pushdef([_m4_s], - _m4_for(m4_eval([$1 + 2]), [$#], [1], - [[,]m4_dquote($], [)])[_m4_popdef([_m4_s])])m4_shift(_m4_s($@))])]) - -# m4_do(STRING, ...) -# ------------------ -# This macro invokes all its arguments (in sequence, of course). It is -# useful for making your macros more structured and readable by dropping -# unnecessary dnl's and have the macros indented properly. -# -# Here, we use the temporary macro _m4_do, defined as -# $1[]$2[]...[]$n[]_m4_popdef([_m4_do]) -m4_define([m4_do], -[m4_if([$#], [0], [], - [m4_pushdef([_$0], _m4_for([1], [$#], [1], - [$], [[[]]])[_m4_popdef([_$0])])_$0($@)])]) - -# m4_dquote_elt(ARGS) -# ------------------- -# Return ARGS as an unquoted list of double-quoted arguments. -# -# _m4_foreach to the rescue. -m4_define([m4_dquote_elt], -[m4_if([$#], [0], [], [[[$1]]_m4_foreach([,m4_dquote(], [)], $@)])]) - -# m4_reverse(ARGS) -# ---------------- -# Output ARGS in reverse order. -# -# Invoke _m4_r($@) with the temporary _m4_r built as -# [$m], [$m-1], ..., [$2], [$1]_m4_popdef([_m4_r]) -m4_define([m4_reverse], -[m4_if([$#], [0], [], [$#], [1], [[$1]], -[m4_pushdef([_m4_r], [[$$#]]_m4_for(m4_decr([$#]), [1], [-1], - [[, ]m4_dquote($], [)])[_m4_popdef([_m4_r])])_m4_r($@)])]) - - -# m4_map_args_pair(EXPRESSION, [END-EXPR = EXPRESSION], ARG...) -# ------------------------------------------------------------- -# Perform a pairwise grouping of consecutive ARGs, by expanding -# EXPRESSION([ARG1], [ARG2]). If there are an odd number of ARGs, the -# final argument is expanded with END-EXPR([ARGn]). -# -# Build the temporary macro _m4_map_args_pair, with the $2([$m+1]) -# only output if $# is odd: -# $1([$3], [$4])[]$1([$5], [$6])[]...$1([$m-1], -# [$m])[]m4_default([$2], [$1])([$m+1])[]_m4_popdef([_m4_map_args_pair]) -m4_define([m4_map_args_pair], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [m4_fatal([$0: too few arguments: $#: $1])], - [$#], [2], [], - [$#], [3], [m4_default([$2], [$1])([$3])[]], - [m4_pushdef([_$0], _m4_for([3], - m4_eval([$# / 2 * 2 - 1]), [2], [_$0_(], [)])_$0_end( - [1], [2], [$#])[_m4_popdef([_$0])])_$0($@)])]) - -m4_define([_m4_map_args_pair_], -[$0_([1], [$1], m4_incr([$1]))]) - -m4_define([_m4_map_args_pair__], -[[$$1([$$2], [$$3])[]]]) - -m4_define([_m4_map_args_pair_end], -[m4_if(m4_eval([$3 & 1]), [1], [[m4_default([$$2], [$$1])([$$3])[]]])]) - -# m4_join(SEP, ARG1, ARG2...) -# --------------------------- -# Produce ARG1SEPARG2...SEPARGn. Avoid back-to-back SEP when a given ARG -# is the empty string. No expansion is performed on SEP or ARGs. -# -# Use a self-modifying separator, since we don't know how many -# arguments might be skipped before a separator is first printed, but -# be careful if the separator contains $. _m4_foreach to the rescue. -m4_define([m4_join], -[m4_pushdef([_m4_sep], [m4_define([_m4_sep], _m4_defn([m4_echo]))])]dnl -[_m4_foreach([_$0([$1],], [)], $@)_m4_popdef([_m4_sep])]) - -m4_define([_m4_join], -[m4_if([$2], [], [], [_m4_sep([$1])[$2]])]) - -# m4_joinall(SEP, ARG1, ARG2...) -# ------------------------------ -# Produce ARG1SEPARG2...SEPARGn. An empty ARG results in back-to-back SEP. -# No expansion is performed on SEP or ARGs. -# -# A bit easier than m4_join. _m4_foreach to the rescue. -m4_define([m4_joinall], -[[$2]m4_if(m4_eval([$# <= 2]), [1], [], - [_m4_foreach([$1], [], m4_shift($@))])]) - -# m4_list_cmp(A, B) -# ----------------- -# Compare the two lists of integer expressions A and B. -# -# m4_list_cmp takes care of any side effects; we only override -# _m4_list_cmp_raw, where we can safely expand lists multiple times. -# First, insert padding so that both lists are the same length; the -# trailing +0 is necessary to handle a missing list. Next, create a -# temporary macro to perform pairwise comparisons until an inequality -# is found. For example, m4_list_cmp([1], [1,2]) creates _m4_cmp as -# m4_if(m4_eval([($1) != ($3)]), [1], [m4_cmp([$1], [$3])], -# m4_eval([($2) != ($4)]), [1], [m4_cmp([$2], [$4])], -# [0]_m4_popdef([_m4_cmp])) -# then calls _m4_cmp([1+0], [0*2], [1], [2+0]) -m4_define([_m4_list_cmp_raw], -[m4_if([$1], [$2], 0, - [_m4_list_cmp($1+0_m4_list_pad(m4_count($1), m4_count($2)), - $2+0_m4_list_pad(m4_count($2), m4_count($1)))])]) - -m4_define([_m4_list_pad], -[m4_if(m4_eval($1 < $2), [1], - [_m4_for(m4_incr([$1]), [$2], [1], [,0*])])]) - -m4_define([_m4_list_cmp], -[m4_pushdef([_m4_cmp], [m4_if(]_m4_for( - [1], m4_eval([$# >> 1]), [1], [$0_(], [,]m4_eval([$# >> 1])[)])[ - [0]_m4_popdef([_m4_cmp]))])_m4_cmp($@)]) - -m4_define([_m4_list_cmp_], -[$0_([$1], m4_eval([$1 + $2]))]) - -m4_define([_m4_list_cmp__], -[[m4_eval([($$1) != ($$2)]), [1], [m4_cmp([$$1], [$$2])], -]]) - -# m4_max(EXPR, ...) -# m4_min(EXPR, ...) -# ----------------- -# Return the decimal value of the maximum (or minimum) in a series of -# integer expressions. -# -# _m4_foreach to the rescue; we only need to replace _m4_minmax. Here, -# we need a temporary macro to track the best answer so far, so that -# the foreach expression is tractable. -m4_define([_m4_minmax], -[m4_pushdef([_m4_best], m4_eval([$2]))_m4_foreach( - [m4_define([_m4_best], $1(_m4_best,], [))], m4_shift($@))]dnl -[_m4_best[]_m4_popdef([_m4_best])]) - -# m4_set_add_all(SET, VALUE...) -# ----------------------------- -# Add each VALUE into SET. This is O(n) in the number of VALUEs, and -# can be faster than calling m4_set_add for each VALUE. -# -# _m4_foreach to the rescue. If no deletions have occurred, then -# avoid the speed penalty of m4_set_add. -m4_define([m4_set_add_all], -[m4_if([$#], [0], [], [$#], [1], [], - [m4_define([_m4_set_size($1)], m4_eval(m4_set_size([$1]) - + m4_len(_m4_foreach(m4_ifdef([_m4_set_cleanup($1)], - [[m4_set_add]], [[_$0]])[([$1],], [)], $@))))])]) - -m4_define([_m4_set_add_all], -[m4_ifdef([_m4_set([$1],$2)], [], - [m4_define([_m4_set([$1],$2)], - [1])m4_pushdef([_m4_set([$1])], [$2])-])]) diff --git a/tools/data/m4sugar/m4sugar.m4 b/tools/data/m4sugar/m4sugar.m4 deleted file mode 100644 index 3573537d..00000000 --- a/tools/data/m4sugar/m4sugar.m4 +++ /dev/null @@ -1,3301 +0,0 @@ -divert(-1)# -*- Autoconf -*- -# This file is part of Autoconf. -# Base M4 layer. -# Requires GNU M4. -# -# Copyright (C) 1999-2012 Free Software Foundation, Inc. - -# This file is part of Autoconf. This program is free -# software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# Under Section 7 of GPL version 3, you are granted additional -# permissions described in the Autoconf Configure Script Exception, -# version 3.0, as published by the Free Software Foundation. -# -# You should have received a copy of the GNU General Public License -# and a copy of the Autoconf Configure Script Exception along with -# this program; see the files COPYINGv3 and COPYING.EXCEPTION -# respectively. If not, see . - -# Written by Akim Demaille. - -# Set the quotes, whatever the current quoting system. -changequote() -changequote([, ]) - -# Some old m4's don't support m4exit. But they provide -# equivalent functionality by core dumping because of the -# long macros we define. -ifdef([__gnu__], , -[errprint(M4sugar requires GNU M4. Install it before installing M4sugar or -set the M4 environment variable to its absolute file name.) -m4exit(2)]) - - -## ------------------------------- ## -## 1. Simulate --prefix-builtins. ## -## ------------------------------- ## - -# m4_define -# m4_defn -# m4_undefine -define([m4_define], defn([define])) -define([m4_defn], defn([defn])) -define([m4_undefine], defn([undefine])) - -m4_undefine([define]) -m4_undefine([defn]) -m4_undefine([undefine]) - - -# m4_copy(SRC, DST) -# ----------------- -# Define DST as the definition of SRC. -# What's the difference between: -# 1. m4_copy([from], [to]) -# 2. m4_define([to], [from($@)]) -# Well, obviously 1 is more expensive in space. Maybe 2 is more expensive -# in time, but because of the space cost of 1, it's not that obvious. -# Nevertheless, one huge difference is the handling of `$0'. If `from' -# uses `$0', then with 1, `to''s `$0' is `to', while it is `from' in 2. -# The user would certainly prefer to see `to'. -# -# This definition is in effect during m4sugar initialization, when -# there are no pushdef stacks; later on, we redefine it to something -# more powerful for all other clients to use. -m4_define([m4_copy], -[m4_define([$2], m4_defn([$1]))]) - - -# m4_rename(SRC, DST) -# ------------------- -# Rename the macro SRC to DST. -m4_define([m4_rename], -[m4_copy([$1], [$2])m4_undefine([$1])]) - - -# m4_rename_m4(MACRO-NAME) -# ------------------------ -# Rename MACRO-NAME to m4_MACRO-NAME. -m4_define([m4_rename_m4], -[m4_rename([$1], [m4_$1])]) - - -# m4_copy_unm4(m4_MACRO-NAME) -# --------------------------- -# Copy m4_MACRO-NAME to MACRO-NAME. -m4_define([m4_copy_unm4], -[m4_copy([$1], m4_bpatsubst([$1], [^m4_\(.*\)], [[\1]]))]) - - -# Some m4 internals have names colliding with tokens we might use. -# Rename them a` la `m4 --prefix-builtins'. Conditionals first, since -# some subsequent renames are conditional. -m4_rename_m4([ifdef]) -m4_rename([ifelse], [m4_if]) - -m4_rename_m4([builtin]) -m4_rename_m4([changecom]) -m4_rename_m4([changequote]) -m4_ifdef([changeword],dnl conditionally available in 1.4.x -[m4_undefine([changeword])]) -m4_rename_m4([debugfile]) -m4_rename_m4([debugmode]) -m4_rename_m4([decr]) -m4_rename_m4([divnum]) -m4_rename_m4([dumpdef]) -m4_rename_m4([errprint]) -m4_rename_m4([esyscmd]) -m4_rename_m4([eval]) -m4_rename_m4([format]) -m4_undefine([include]) -m4_rename_m4([incr]) -m4_rename_m4([index]) -m4_rename_m4([indir]) -m4_rename_m4([len]) -m4_rename([m4exit], [m4_exit]) -m4_undefine([m4wrap]) -m4_ifdef([mkstemp],dnl added in M4 1.4.8 -[m4_rename_m4([mkstemp]) -m4_copy([m4_mkstemp], [m4_maketemp]) -m4_undefine([maketemp])], -[m4_rename_m4([maketemp]) -m4_copy([m4_maketemp], [m4_mkstemp])]) -m4_rename([patsubst], [m4_bpatsubst]) -m4_rename_m4([popdef]) -m4_rename_m4([pushdef]) -m4_rename([regexp], [m4_bregexp]) -m4_rename_m4([shift]) -m4_undefine([sinclude]) -m4_rename_m4([substr]) -m4_ifdef([symbols],dnl present only in alpha-quality 1.4o -[m4_rename_m4([symbols])]) -m4_rename_m4([syscmd]) -m4_rename_m4([sysval]) -m4_rename_m4([traceoff]) -m4_rename_m4([traceon]) -m4_rename_m4([translit]) - -# _m4_defn(ARG) -# ------------- -# _m4_defn is for internal use only - it bypasses the wrapper, so it -# must only be used on one argument at a time, and only on macros -# known to be defined. Make sure this still works if the user renames -# m4_defn but not _m4_defn. -m4_copy([m4_defn], [_m4_defn]) - -# _m4_divert_raw(NUM) -# ------------------- -# _m4_divert_raw is for internal use only. Use this instead of -# m4_builtin([divert], NUM), so that tracing diversion flow is easier. -m4_rename([divert], [_m4_divert_raw]) - -# _m4_popdef(ARG...) -# ------------------ -# _m4_popdef is for internal use only - it bypasses the wrapper, so it -# must only be used on macros known to be defined. Make sure this -# still works if the user renames m4_popdef but not _m4_popdef. -m4_copy([m4_popdef], [_m4_popdef]) - -# _m4_undefine(ARG...) -# -------------------- -# _m4_undefine is for internal use only - it bypasses the wrapper, so -# it must only be used on macros known to be defined. Make sure this -# still works if the user renames m4_undefine but not _m4_undefine. -m4_copy([m4_undefine], [_m4_undefine]) - -# _m4_undivert(NUM...) -# -------------------- -# _m4_undivert is for internal use only, and should always be given -# arguments. Use this instead of m4_builtin([undivert], NUM...), so -# that tracing diversion flow is easier. -m4_rename([undivert], [_m4_undivert]) - - -## ------------------- ## -## 2. Error messages. ## -## ------------------- ## - - -# m4_location -# ----------- -# Output the current file, colon, and the current line number. -m4_define([m4_location], -[__file__:__line__]) - - -# m4_errprintn(MSG) -# ----------------- -# Same as `errprint', but with the missing end of line. -m4_define([m4_errprintn], -[m4_errprint([$1 -])]) - - -# m4_warning(MSG) -# --------------- -# Warn the user. -m4_define([m4_warning], -[m4_errprintn(m4_location[: warning: $1])]) - - -# m4_fatal(MSG, [EXIT-STATUS]) -# ---------------------------- -# Fatal the user. :) -m4_define([m4_fatal], -[m4_errprintn(m4_location[: error: $1] -m4_expansion_stack)m4_exit(m4_if([$2],, 1, [$2]))]) - - -# m4_assert(EXPRESSION, [EXIT-STATUS = 1]) -# ---------------------------------------- -# This macro ensures that EXPRESSION evaluates to true, and exits if -# EXPRESSION evaluates to false. -m4_define([m4_assert], -[m4_if(m4_eval([$1]), 0, - [m4_fatal([assert failed: $1], [$2])])]) - - - -## ------------- ## -## 3. Warnings. ## -## ------------- ## - - -# _m4_warn(CATEGORY, MESSAGE, [STACK-TRACE]) -# ------------------------------------------ -# Report a MESSAGE to the user if the CATEGORY of warnings is enabled. -# This is for traces only. -# If present, STACK-TRACE is a \n-separated list of "LOCATION: MESSAGE", -# where the last line (and no other) ends with "the top level". -# -# Within m4, the macro is a no-op. This macro really matters -# when autom4te post-processes the trace output. -m4_define([_m4_warn], []) - - -# m4_warn(CATEGORY, MESSAGE) -# -------------------------- -# Report a MESSAGE to the user if the CATEGORY of warnings is enabled. -m4_define([m4_warn], -[_m4_warn([$1], [$2], -m4_ifdef([_m4_expansion_stack], [m4_expansion_stack]))]) - - - -## ------------------- ## -## 4. File inclusion. ## -## ------------------- ## - - -# We also want to neutralize include (and sinclude for symmetry), -# but we want to extend them slightly: warn when a file is included -# several times. This is, in general, a dangerous operation, because -# too many people forget to quote the first argument of m4_define. -# -# For instance in the following case: -# m4_define(foo, [bar]) -# then a second reading will turn into -# m4_define(bar, [bar]) -# which is certainly not what was meant. - -# m4_include_unique(FILE) -# ----------------------- -# Declare that the FILE was loading; and warn if it has already -# been included. -m4_define([m4_include_unique], -[m4_ifdef([m4_include($1)], - [m4_warn([syntax], [file `$1' included several times])])dnl -m4_define([m4_include($1)])]) - - -# m4_include(FILE) -# ---------------- -# Like the builtin include, but warns against multiple inclusions. -m4_define([m4_include], -[m4_include_unique([$1])dnl -m4_builtin([include], [$1])]) - - -# m4_sinclude(FILE) -# ----------------- -# Like the builtin sinclude, but warns against multiple inclusions. -m4_define([m4_sinclude], -[m4_include_unique([$1])dnl -m4_builtin([sinclude], [$1])]) - - - -## ------------------------------------ ## -## 5. Additional branching constructs. ## -## ------------------------------------ ## - -# Both `m4_ifval' and `m4_ifset' tests against the empty string. The -# difference is that `m4_ifset' is specialized on macros. -# -# In case of arguments of macros, eg. $1, it makes little difference. -# In the case of a macro `FOO', you don't want to check `m4_ifval(FOO, -# TRUE)', because if `FOO' expands with commas, there is a shifting of -# the arguments. So you want to run `m4_ifval([FOO])', but then you just -# compare the *string* `FOO' against `', which, of course fails. -# -# So you want the variation `m4_ifset' that expects a macro name as $1. -# If this macro is both defined and defined to a non empty value, then -# it runs TRUE, etc. - - -# m4_ifblank(COND, [IF-BLANK], [IF-TEXT]) -# m4_ifnblank(COND, [IF-TEXT], [IF-BLANK]) -# ---------------------------------------- -# If COND is empty, or consists only of blanks (space, tab, newline), -# then expand IF-BLANK, otherwise expand IF-TEXT. This differs from -# m4_ifval only if COND has just whitespace, but it helps optimize in -# spite of users who mistakenly leave trailing space after what they -# thought was an empty argument: -# macro( -# [] -# ) -# -# Writing one macro in terms of the other causes extra overhead, so -# we inline both definitions. -m4_define([m4_ifblank], -[m4_if(m4_translit([[$1]], [ ][ ][ -]), [], [$2], [$3])]) - -m4_define([m4_ifnblank], -[m4_if(m4_translit([[$1]], [ ][ ][ -]), [], [$3], [$2])]) - - -# m4_ifval(COND, [IF-TRUE], [IF-FALSE]) -# ------------------------------------- -# If COND is not the empty string, expand IF-TRUE, otherwise IF-FALSE. -# Comparable to m4_ifdef. -m4_define([m4_ifval], -[m4_if([$1], [], [$3], [$2])]) - - -# m4_n(TEXT) -# ---------- -# If TEXT is not empty, return TEXT and a new line, otherwise nothing. -m4_define([m4_n], -[m4_if([$1], - [], [], - [$1 -])]) - - -# m4_ifvaln(COND, [IF-TRUE], [IF-FALSE]) -# -------------------------------------- -# Same as `m4_ifval', but add an extra newline to IF-TRUE or IF-FALSE -# unless that argument is empty. -m4_define([m4_ifvaln], -[m4_if([$1], - [], [m4_n([$3])], - [m4_n([$2])])]) - - -# m4_ifset(MACRO, [IF-TRUE], [IF-FALSE]) -# -------------------------------------- -# If MACRO has no definition, or of its definition is the empty string, -# expand IF-FALSE, otherwise IF-TRUE. -m4_define([m4_ifset], -[m4_ifdef([$1], - [m4_ifval(_m4_defn([$1]), [$2], [$3])], - [$3])]) - - -# m4_ifndef(NAME, [IF-NOT-DEFINED], [IF-DEFINED]) -# ----------------------------------------------- -m4_define([m4_ifndef], -[m4_ifdef([$1], [$3], [$2])]) - - -# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT) -# ----------------------------------------------------------- -# m4 equivalent of -# switch (SWITCH) -# { -# case VAL1: -# IF-VAL1; -# break; -# case VAL2: -# IF-VAL2; -# break; -# ... -# default: -# DEFAULT; -# break; -# }. -# All the values are optional, and the macro is robust to active -# symbols properly quoted. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_case], -[m4_if([$#], 0, [], - [$#], 1, [], - [$#], 2, [$2], - [$1], [$2], [$3], - [$0([$1], m4_shift3($@))])]) - - -# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT) -# ----------------------------------------------------- -# m4 equivalent of -# -# if (SWITCH =~ RE1) -# VAL1; -# elif (SWITCH =~ RE2) -# VAL2; -# elif ... -# ... -# else -# DEFAULT -# -# All the values are optional, and the macro is robust to active symbols -# properly quoted. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_bmatch], -[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])], - [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], - [$#], 2, [$2], - [m4_if(m4_bregexp([$1], [$2]), -1, [$0([$1], m4_shift3($@))], - [$3])])]) - -# m4_argn(N, ARGS...) -# ------------------- -# Extract argument N (greater than 0) from ARGS. Example: -# m4_define([b], [B]) -# m4_argn([2], [a], [b], [c]) => b -# -# Rather than using m4_car(m4_shiftn([$1], $@)), we exploit the fact that -# GNU m4 can directly reference any argument, through an indirect macro. -m4_define([m4_argn], -[m4_assert([0 < $1])]dnl -[m4_pushdef([_$0], [_m4_popdef([_$0])]m4_dquote([$]m4_incr([$1])))_$0($@)]) - - -# m4_car(ARGS...) -# m4_cdr(ARGS...) -# --------------- -# Manipulate m4 lists. m4_car returns the first argument. m4_cdr -# bundles all but the first argument into a quoted list. These two -# macros are generally used with list arguments, with quoting removed -# to break the list into multiple m4 ARGS. -m4_define([m4_car], [[$1]]) -m4_define([m4_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) - -# _m4_cdr(ARGS...) -# ---------------- -# Like m4_cdr, except include a leading comma unless only one argument -# remains. Why? Because comparing a large list against [] is more -# expensive in expansion time than comparing the number of arguments; so -# _m4_cdr can be used to reduce the number of arguments when it is time -# to end recursion. -m4_define([_m4_cdr], -[m4_if([$#], 1, [], - [, m4_dquote(m4_shift($@))])]) - - - -# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT]) -# ------------------------------------------------------------------- -# Similar to m4_if, except that each TEST is expanded when encountered. -# If the expansion of TESTn matches the string VALn, the result is IF-VALn. -# The result is DEFAULT if no tests passed. This macro allows -# short-circuiting of expensive tests, where it pays to arrange quick -# filter tests to run first. -# -# For an example, consider a previous implementation of _AS_QUOTE_IFELSE: -# -# m4_if(m4_index([$1], [\]), [-1], [$2], -# m4_eval(m4_index([$1], [\\]) >= 0), [1], [$2], -# m4_eval(m4_index([$1], [\$]) >= 0), [1], [$2], -# m4_eval(m4_index([$1], [\`]) >= 0), [1], [$3], -# m4_eval(m4_index([$1], [\"]) >= 0), [1], [$3], -# [$2]) -# -# Here, m4_index is computed 5 times, and m4_eval 4, even if $1 contains -# no backslash. It is more efficient to do: -# -# m4_cond([m4_index([$1], [\])], [-1], [$2], -# [m4_eval(m4_index([$1], [\\]) >= 0)], [1], [$2], -# [m4_eval(m4_index([$1], [\$]) >= 0)], [1], [$2], -# [m4_eval(m4_index([$1], [\`]) >= 0)], [1], [$3], -# [m4_eval(m4_index([$1], [\"]) >= 0)], [1], [$3], -# [$2]) -# -# In the common case of $1 with no backslash, only one m4_index expansion -# occurs, and m4_eval is avoided altogether. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_cond], -[m4_if([$#], [0], [m4_fatal([$0: cannot be called without arguments])], - [$#], [1], [$1], - m4_eval([$# % 3]), [2], [m4_fatal([$0: missing an argument])], - [_$0($@)])]) - -m4_define([_m4_cond], -[m4_if(($1), [($2)], [$3], - [$#], [3], [], - [$#], [4], [$4], - [$0(m4_shift3($@))])]) - - -## ---------------------------------------- ## -## 6. Enhanced version of some primitives. ## -## ---------------------------------------- ## - -# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...) -# ---------------------------------------------------- -# m4 equivalent of -# -# $_ = STRING; -# s/RE1/SUBST1/g; -# s/RE2/SUBST2/g; -# ... -# -# All the values are optional, and the macro is robust to active symbols -# properly quoted. -# -# I would have liked to name this macro `m4_bpatsubst', unfortunately, -# due to quotation problems, I need to double quote $1 below, therefore -# the anchors are broken :( I can't let users be trapped by that. -# -# Recall that m4_shift3 always results in an argument. Hence, we need -# to distinguish between a final deletion vs. ending recursion. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_bpatsubsts], -[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])], - [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], - [$#], 2, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2]))], - [$#], 3, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2], [$3]))], - [_$0($@m4_if(m4_eval($# & 1), 0, [,]))])]) -m4_define([_m4_bpatsubsts], -[m4_if([$#], 2, [$1], - [$0(m4_builtin([patsubst], [[$1]], [$2], [$3]), - m4_shift3($@))])]) - - -# m4_copy(SRC, DST) -# ----------------- -# Define the pushdef stack DST as a copy of the pushdef stack SRC; -# give an error if DST is already defined. This is particularly nice -# for copying self-modifying pushdef stacks, where the top definition -# includes one-shot initialization that is later popped to the normal -# definition. This version intentionally does nothing if SRC is -# undefined. -# -# Some macros simply can't be renamed with this method: namely, anything -# involved in the implementation of m4_stack_foreach_sep. -m4_define([m4_copy], -[m4_ifdef([$2], [m4_fatal([$0: won't overwrite defined macro: $2])], - [m4_stack_foreach_sep([$1], [m4_pushdef([$2],], [)])])]dnl -[m4_ifdef([m4_location($1)], [m4_define([m4_location($2)], m4_location)])]) - - -# m4_copy_force(SRC, DST) -# m4_rename_force(SRC, DST) -# ------------------------- -# Like m4_copy/m4_rename, except blindly overwrite any existing DST. -# Note that m4_copy_force tolerates undefined SRC, while m4_rename_force -# does not. -m4_define([m4_copy_force], -[m4_ifdef([$2], [_m4_undefine([$2])])m4_copy($@)]) - -m4_define([m4_rename_force], -[m4_ifdef([$2], [_m4_undefine([$2])])m4_rename($@)]) - - -# m4_define_default(MACRO, VALUE) -# ------------------------------- -# If MACRO is undefined, set it to VALUE. -m4_define([m4_define_default], -[m4_ifndef([$1], [m4_define($@)])]) - - -# m4_default(EXP1, EXP2) -# m4_default_nblank(EXP1, EXP2) -# ----------------------------- -# Returns EXP1 if not empty/blank, otherwise EXP2. Expand the result. -# -# m4_default is called on hot paths, so inline the contents of m4_ifval, -# for one less round of expansion. -m4_define([m4_default], -[m4_if([$1], [], [$2], [$1])]) - -m4_define([m4_default_nblank], -[m4_ifblank([$1], [$2], [$1])]) - - -# m4_default_quoted(EXP1, EXP2) -# m4_default_nblank_quoted(EXP1, EXP2) -# ------------------------------------ -# Returns EXP1 if non empty/blank, otherwise EXP2. Leave the result quoted. -# -# For comparison: -# m4_define([active], [ACTIVE]) -# m4_default([active], [default]) => ACTIVE -# m4_default([], [active]) => ACTIVE -# -m4_default([ ], [active])- => - - -# -m4_default_nblank([ ], [active])- => -ACTIVE- -# m4_default_quoted([active], [default]) => active -# m4_default_quoted([], [active]) => active -# -m4_default_quoted([ ], [active])- => - - -# -m4_default_nblank_quoted([ ], [active])- => -active- -# -# m4_default macro is called on hot paths, so inline the contents of m4_ifval, -# for one less round of expansion. -m4_define([m4_default_quoted], -[m4_if([$1], [], [[$2]], [[$1]])]) - -m4_define([m4_default_nblank_quoted], -[m4_ifblank([$1], [[$2]], [[$1]])]) - - -# m4_defn(NAME) -# ------------- -# Like the original, except guarantee a warning when using something which is -# undefined (unlike M4 1.4.x). This replacement is not a full-featured -# replacement: if any of the defined macros contain unbalanced quoting, but -# when pasted together result in a well-quoted string, then only native m4 -# support is able to get it correct. But that's where quadrigraphs come in -# handy, if you really need unbalanced quotes inside your macros. -# -# This macro is called frequently, so minimize the amount of additional -# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us (see m4_init). -m4_define([m4_defn], -[m4_if([$#], [0], [[$0]], - [$#], [1], [m4_ifdef([$1], [_m4_defn([$1])], - [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - - -# m4_dumpdef(NAME...) -# ------------------- -# In m4 1.4.x, dumpdef writes to the current debugfile, rather than -# stderr. This in turn royally confuses autom4te; so we follow the -# lead of newer m4 and always dump to stderr. Unlike the original, -# this version requires an argument, since there is no convenient way -# in m4 1.4.x to grab the names of all defined macros. Newer m4 -# always dumps to stderr, regardless of the current debugfile; it also -# provides m4symbols as a way to grab all current macro names. But -# dumpdefs is not frequently called, so we don't need to worry about -# conditionally using these newer features. Also, this version -# doesn't sort multiple arguments. -# -# If we detect m4 1.6 or newer, then provide an alternate definition, -# installed during m4_init, that allows builtins through. -# Unfortunately, there is no nice way in m4 1.4.x to dump builtins. -m4_define([m4_dumpdef], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [m4_ifdef([$1], [m4_errprintn( - [$1: ]m4_dquote(_m4_defn([$1])))], [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - -m4_define([_m4_dumpdef], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [m4_builtin([dumpdef], [$1])], - [m4_map_args_sep([m4_builtin([dumpdef],], [)], [], $@)])]) - - -# m4_dumpdefs(NAME...) -# -------------------- -# Similar to `m4_dumpdef(NAME)', but if NAME was m4_pushdef'ed, display its -# value stack (most recent displayed first). Also, this version silently -# ignores undefined macros, rather than erroring out. -# -# This macro cheats, because it relies on the current definition of NAME -# while the second argument of m4_stack_foreach_lifo is evaluated (which -# would be undefined according to the API). -m4_define([m4_dumpdefs], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [m4_stack_foreach_lifo([$1], [m4_dumpdef([$1])m4_ignore])], - [m4_map_args([$0], $@)])]) - -# m4_esyscmd_s(COMMAND) -# --------------------- -# Like m4_esyscmd, except strip any trailing newlines, thus behaving -# more like shell command substitution. -m4_define([m4_esyscmd_s], -[m4_chomp_all(m4_esyscmd([$1]))]) - - -# m4_popdef(NAME) -# --------------- -# Like the original, except guarantee a warning when using something which is -# undefined (unlike M4 1.4.x). -# -# This macro is called frequently, so minimize the amount of additional -# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us (see m4_init). -m4_define([m4_popdef], -[m4_if([$#], [0], [[$0]], - [$#], [1], [m4_ifdef([$1], [_m4_popdef([$1])], - [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - - -# m4_shiftn(N, ...) -# ----------------- -# Returns ... shifted N times. Useful for recursive "varargs" constructs. -# -# Autoconf does not use this macro, because it is inherently slower than -# calling the common cases of m4_shift2 or m4_shift3 directly. But it -# might as well be fast for other clients, such as Libtool. One way to -# do this is to expand $@ only once in _m4_shiftn (otherwise, for long -# lists, the expansion of m4_if takes twice as much memory as what the -# list itself occupies, only to throw away the unused branch). The end -# result is strictly equivalent to -# m4_if([$1], 1, [m4_shift(,m4_shift(m4_shift($@)))], -# [_m4_shiftn(m4_decr([$1]), m4_shift(m4_shift($@)))]) -# but with the final `m4_shift(m4_shift($@)))' shared between the two -# paths. The first leg uses a no-op m4_shift(,$@) to balance out the (). -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_shiftn], -[m4_assert(0 < $1 && $1 < $#)_$0($@)]) - -m4_define([_m4_shiftn], -[m4_if([$1], 1, [m4_shift(], - [$0(m4_decr([$1])]), m4_shift(m4_shift($@)))]) - -# m4_shift2(...) -# m4_shift3(...) -# -------------- -# Returns ... shifted twice, and three times. Faster than m4_shiftn. -m4_define([m4_shift2], [m4_shift(m4_shift($@))]) -m4_define([m4_shift3], [m4_shift(m4_shift(m4_shift($@)))]) - -# _m4_shift2(...) -# _m4_shift3(...) -# --------------- -# Like m4_shift2 or m4_shift3, except include a leading comma unless shifting -# consumes all arguments. Why? Because in recursion, it is nice to -# distinguish between 1 element left and 0 elements left, based on how many -# arguments this shift expands to. -m4_define([_m4_shift2], -[m4_if([$#], [2], [], - [, m4_shift(m4_shift($@))])]) -m4_define([_m4_shift3], -[m4_if([$#], [3], [], - [, m4_shift(m4_shift(m4_shift($@)))])]) - - -# m4_undefine(NAME) -# ----------------- -# Like the original, except guarantee a warning when using something which is -# undefined (unlike M4 1.4.x). -# -# This macro is called frequently, so minimize the amount of additional -# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us (see m4_init). -m4_define([m4_undefine], -[m4_if([$#], [0], [[$0]], - [$#], [1], [m4_ifdef([$1], [_m4_undefine([$1])], - [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - -# _m4_wrap(PRE, POST) -# ------------------- -# Helper macro for m4_wrap and m4_wrap_lifo. Allows nested calls to -# m4_wrap within wrapped text. Use _m4_defn and _m4_popdef for speed. -m4_define([_m4_wrap], -[m4_ifdef([$0_text], - [m4_define([$0_text], [$1]_m4_defn([$0_text])[$2])], - [m4_builtin([m4wrap], [m4_unquote( - _m4_defn([$0_text])_m4_popdef([$0_text]))])m4_define([$0_text], [$1$2])])]) - -# m4_wrap(TEXT) -# ------------- -# Append TEXT to the list of hooks to be executed at the end of input. -# Whereas the order of the original may be LIFO in the underlying m4, -# this version is always FIFO. -m4_define([m4_wrap], -[_m4_wrap([], [$1[]])]) - -# m4_wrap_lifo(TEXT) -# ------------------ -# Prepend TEXT to the list of hooks to be executed at the end of input. -# Whereas the order of m4_wrap may be FIFO in the underlying m4, this -# version is always LIFO. -m4_define([m4_wrap_lifo], -[_m4_wrap([$1[]])]) - -## ------------------------- ## -## 7. Quoting manipulation. ## -## ------------------------- ## - - -# m4_apply(MACRO, LIST) -# --------------------- -# Invoke MACRO, with arguments provided from the quoted list of -# comma-separated quoted arguments. If LIST is empty, invoke MACRO -# without arguments. The expansion will not be concatenated with -# subsequent text. -m4_define([m4_apply], -[m4_if([$2], [], [$1], [$1($2)])[]]) - -# _m4_apply(MACRO, LIST) -# ---------------------- -# Like m4_apply, except do nothing if LIST is empty. -m4_define([_m4_apply], -[m4_if([$2], [], [], [$1($2)[]])]) - - -# m4_count(ARGS) -# -------------- -# Return a count of how many ARGS are present. -m4_define([m4_count], [$#]) - - -# m4_curry(MACRO, ARG...) -# ----------------------- -# Perform argument currying. The expansion of this macro is another -# macro that takes exactly one argument, appends it to the end of the -# original ARG list, then invokes MACRO. For example: -# m4_curry([m4_curry], [m4_reverse], [1])([2])([3]) => 3, 2, 1 -# Not quite as practical as m4_incr, but you could also do: -# m4_define([add], [m4_eval(([$1]) + ([$2]))]) -# m4_define([add_one], [m4_curry([add], [1])]) -# add_one()([2]) => 3 -m4_define([m4_curry], [$1(m4_shift($@,)_$0]) -m4_define([_m4_curry], [[$1])]) - - -# m4_do(STRING, ...) -# ------------------ -# This macro invokes all its arguments (in sequence, of course). It is -# useful for making your macros more structured and readable by dropping -# unnecessary dnl's and have the macros indented properly. No concatenation -# occurs after a STRING; use m4_unquote(m4_join(,STRING)) for that. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_do], -[m4_if([$#], 0, [], - [$#], 1, [$1[]], - [$1[]$0(m4_shift($@))])]) - - -# m4_dquote(ARGS) -# --------------- -# Return ARGS as a quoted list of quoted arguments. -m4_define([m4_dquote], [[$@]]) - - -# m4_dquote_elt(ARGS) -# ------------------- -# Return ARGS as an unquoted list of double-quoted arguments. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_dquote_elt], -[m4_if([$#], [0], [], - [$#], [1], [[[$1]]], - [[[$1]],$0(m4_shift($@))])]) - - -# m4_echo(ARGS) -# ------------- -# Return the ARGS, with the same level of quoting. Whitespace after -# unquoted commas are consumed. -m4_define([m4_echo], [$@]) - - -# m4_expand(ARG) -# _m4_expand(ARG) -# --------------- -# Return the expansion of ARG as a single string. Unlike -# m4_quote($1), this preserves whitespace following single-quoted -# commas that appear within ARG. It also deals with shell case -# statements. -# -# m4_define([active], [ACT, IVE]) -# m4_define([active2], [[ACT, IVE]]) -# m4_quote(active, active2) -# => ACT,IVE,ACT, IVE -# m4_expand([active, active2]) -# => ACT, IVE, ACT, IVE -# -# Unfortunately, due to limitations in m4, ARG must expand to -# something with balanced quotes (use quadrigraphs to get around -# this), and should not contain the unlikely delimiters -=<{( or -# )}>=-. It is possible to have unbalanced quoted `(' or `)', as well -# as unbalanced unquoted `)'. m4_expand can handle unterminated -# comments or dnl on the final line, at the expense of speed; it also -# aids in detecting attempts to incorrectly change the current -# diversion inside ARG. Meanwhile, _m4_expand is faster but must be -# given a terminated expansion, and has no safety checks for -# mis-diverted text. -# -# Exploit that extra unquoted () will group unquoted commas and the -# following whitespace. m4_bpatsubst can't handle newlines inside $1, -# and m4_substr strips quoting. So we (ab)use m4_changequote, using -# temporary quotes to remove the delimiters that conveniently included -# the unquoted () that were added prior to the changequote. -# -# Thanks to shell case statements, too many people are prone to pass -# underquoted `)', so we try to detect that by passing a marker as a -# fourth argument; if the marker is not present, then we assume that -# we encountered an early `)', and re-expand the first argument, but -# this time with one more `(' in the second argument and in the -# open-quote delimiter. We must also ignore the slop from the -# previous try. The final macro is thus half line-noise, half art. -m4_define([m4_expand], -[m4_pushdef([m4_divert], _m4_defn([_m4_divert_unsafe]))]dnl -[m4_pushdef([m4_divert_push], _m4_defn([_m4_divert_unsafe]))]dnl -[m4_chomp(_$0([$1 -]))_m4_popdef([m4_divert], [m4_divert_push])]) - -m4_define([_m4_expand], [$0_([$1], [(], -=<{($1)}>=-, [}>=-])]) - -m4_define([_m4_expand_], -[m4_if([$4], [}>=-], - [m4_changequote([-=<{$2], [)}>=-])$3m4_changequote([, ])], - [$0([$1], [($2], -=<{($2$1)}>=-, [}>=-])m4_ignore$2])]) - - -# m4_ignore(ARGS) -# --------------- -# Expands to nothing. Useful for conditionally ignoring an arbitrary -# number of arguments (see _m4_list_cmp for an example). -m4_define([m4_ignore]) - - -# m4_make_list(ARGS) -# ------------------ -# Similar to m4_dquote, this creates a quoted list of quoted ARGS. This -# version is less efficient than m4_dquote, but separates each argument -# with a comma and newline, rather than just comma, for readability. -# When developing an m4sugar algorithm, you could temporarily use -# m4_pushdef([m4_dquote],m4_defn([m4_make_list])) -# around your code to make debugging easier. -m4_define([m4_make_list], [m4_join([, -], m4_dquote_elt($@))]) - - -# m4_noquote(STRING) -# ------------------ -# Return the result of ignoring all quotes in STRING and invoking the -# macros it contains. Among other things, this is useful for enabling -# macro invocations inside strings with [] blocks (for instance regexps -# and help-strings). On the other hand, since all quotes are disabled, -# any macro expanded during this time that relies on nested [] quoting -# will likely crash and burn. This macro is seldom useful; consider -# m4_unquote or m4_expand instead. -m4_define([m4_noquote], -[m4_changequote([-=<{(],[)}>=-])$1-=<{()}>=-m4_changequote([,])]) - - -# m4_quote(ARGS) -# -------------- -# Return ARGS as a single argument. Any whitespace after unquoted commas -# is stripped. There is always output, even when there were no arguments. -# -# It is important to realize the difference between `m4_quote(exp)' and -# `[exp]': in the first case you obtain the quoted *result* of the -# expansion of EXP, while in the latter you just obtain the string -# `exp'. -m4_define([m4_quote], [[$*]]) - - -# _m4_quote(ARGS) -# --------------- -# Like m4_quote, except that when there are no arguments, there is no -# output. For conditional scenarios (such as passing _m4_quote as the -# macro name in m4_mapall), this feature can be used to distinguish between -# one argument of the empty string vs. no arguments. However, in the -# normal case with arguments present, this is less efficient than m4_quote. -m4_define([_m4_quote], -[m4_if([$#], [0], [], [[$*]])]) - - -# m4_reverse(ARGS) -# ---------------- -# Output ARGS in reverse order. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_reverse], -[m4_if([$#], [0], [], [$#], [1], [[$1]], - [$0(m4_shift($@)), [$1]])]) - - -# m4_unquote(ARGS) -# ---------------- -# Remove one layer of quotes from each ARG, performing one level of -# expansion. For one argument, m4_unquote([arg]) is more efficient than -# m4_do([arg]), but for multiple arguments, the difference is that -# m4_unquote separates arguments with commas while m4_do concatenates. -# Follow this macro with [] if concatenation with subsequent text is -# undesired. -m4_define([m4_unquote], [$*]) - - -## -------------------------- ## -## 8. Implementing m4 loops. ## -## -------------------------- ## - - -# m4_for(VARIABLE, FIRST, LAST, [STEP = +/-1], EXPRESSION) -# -------------------------------------------------------- -# Expand EXPRESSION defining VARIABLE to FROM, FROM + 1, ..., TO with -# increments of STEP. Both limits are included, and bounds are -# checked for consistency. The algorithm is robust to indirect -# VARIABLE names. Changing VARIABLE inside EXPRESSION will not impact -# the number of iterations. -# -# Uses _m4_defn for speed, and avoid dnl in the macro body. Factor -# the _m4_for call so that EXPRESSION is only parsed once. -m4_define([m4_for], -[m4_pushdef([$1], m4_eval([$2]))]dnl -[m4_cond([m4_eval(([$3]) > ([$2]))], 1, - [m4_pushdef([_m4_step], m4_eval(m4_default_quoted([$4], - 1)))m4_assert(_m4_step > 0)_$0(_m4_defn([$1]), - m4_eval((([$3]) - ([$2])) / _m4_step * _m4_step + ([$2])), _m4_step,], - [m4_eval(([$3]) < ([$2]))], 1, - [m4_pushdef([_m4_step], m4_eval(m4_default_quoted([$4], - -1)))m4_assert(_m4_step < 0)_$0(_m4_defn([$1]), - m4_eval((([$2]) - ([$3])) / -(_m4_step) * _m4_step + ([$2])), _m4_step,], - [m4_pushdef([_m4_step])_$0(_m4_defn([$1]), _m4_defn([$1]), 0,])]dnl -[[m4_define([$1],], [)$5])m4_popdef([_m4_step], [$1])]) - -# _m4_for(COUNT, LAST, STEP, PRE, POST) -# ------------------------------------- -# Core of the loop, no consistency checks, all arguments are plain -# numbers. Expand PRE[COUNT]POST, then alter COUNT by STEP and -# iterate if COUNT is not LAST. -m4_define([_m4_for], -[$4[$1]$5[]m4_if([$1], [$2], [], - [$0(m4_eval([$1 + $3]), [$2], [$3], [$4], [$5])])]) - - -# Implementing `foreach' loops in m4 is much more tricky than it may -# seem. For example, the old M4 1.4.4 manual had an incorrect example, -# which looked like this (when translated to m4sugar): -# -# | # foreach(VAR, (LIST), STMT) -# | m4_define([foreach], -# | [m4_pushdef([$1])_foreach([$1], [$2], [$3])m4_popdef([$1])]) -# | m4_define([_arg1], [$1]) -# | m4_define([_foreach], -# | [m4_if([$2], [()], , -# | [m4_define([$1], _arg1$2)$3[]_foreach([$1], (m4_shift$2), [$3])])]) -# -# But then if you run -# -# | m4_define(a, 1) -# | m4_define(b, 2) -# | m4_define(c, 3) -# | foreach([f], [([a], [(b], [c)])], [echo f -# | ]) -# -# it gives -# -# => echo 1 -# => echo (2,3) -# -# which is not what is expected. -# -# Of course the problem is that many quotes are missing. So you add -# plenty of quotes at random places, until you reach the expected -# result. Alternatively, if you are a quoting wizard, you directly -# reach the following implementation (but if you really did, then -# apply to the maintenance of m4sugar!). -# -# | # foreach(VAR, (LIST), STMT) -# | m4_define([foreach], [m4_pushdef([$1])_foreach($@)m4_popdef([$1])]) -# | m4_define([_arg1], [[$1]]) -# | m4_define([_foreach], -# | [m4_if($2, [()], , -# | [m4_define([$1], [_arg1$2])$3[]_foreach([$1], [(m4_shift$2)], [$3])])]) -# -# which this time answers -# -# => echo a -# => echo (b -# => echo c) -# -# Bingo! -# -# Well, not quite. -# -# With a better look, you realize that the parens are more a pain than -# a help: since anyway you need to quote properly the list, you end up -# with always using an outermost pair of parens and an outermost pair -# of quotes. Rejecting the parens both eases the implementation, and -# simplifies the use: -# -# | # foreach(VAR, (LIST), STMT) -# | m4_define([foreach], [m4_pushdef([$1])_foreach($@)m4_popdef([$1])]) -# | m4_define([_arg1], [$1]) -# | m4_define([_foreach], -# | [m4_if($2, [], , -# | [m4_define([$1], [_arg1($2)])$3[]_foreach([$1], [m4_shift($2)], [$3])])]) -# -# -# Now, just replace the `$2' with `m4_quote($2)' in the outer `m4_if' -# to improve robustness, and you come up with a nice implementation -# that doesn't require extra parentheses in the user's LIST. -# -# But wait - now the algorithm is quadratic, because every recursion of -# the algorithm keeps the entire LIST and merely adds another m4_shift to -# the quoted text. If the user has a lot of elements in LIST, you can -# bring the system to its knees with the memory m4 then requires, or trip -# the m4 --nesting-limit recursion factor. The only way to avoid -# quadratic growth is ensure m4_shift is expanded prior to the recursion. -# Hence the design below. -# -# The M4 manual now includes a chapter devoted to this issue, with -# the lessons learned from m4sugar. And still, this design is only -# optimal for M4 1.6; see foreach.m4 for yet more comments on why -# M4 1.4.x uses yet another implementation. - - -# m4_foreach(VARIABLE, LIST, EXPRESSION) -# -------------------------------------- -# -# Expand EXPRESSION assigning each value of the LIST to VARIABLE. -# LIST should have the form `item_1, item_2, ..., item_n', i.e. the -# whole list must *quoted*. Quote members too if you don't want them -# to be expanded. -# -# This macro is robust to active symbols: -# | m4_define(active, [ACT, IVE]) -# | m4_foreach(Var, [active, active], [-Var-]) -# => -ACT--IVE--ACT--IVE- -# -# | m4_foreach(Var, [[active], [active]], [-Var-]) -# => -ACT, IVE--ACT, IVE- -# -# | m4_foreach(Var, [[[active]], [[active]]], [-Var-]) -# => -active--active- -# -# This macro is called frequently, so avoid extra expansions such as -# m4_ifval and dnl. Also, since $2 might be quite large, try to use it -# as little as possible in _m4_foreach; each extra use requires that much -# more memory for expansion. So, rather than directly compare $2 against -# [] and use m4_car/m4_cdr for recursion, we instead unbox the list (which -# requires swapping the argument order in the helper), insert an ignored -# third argument, and use m4_shift3 to detect when recursion is complete, -# at which point this looks very much like m4_map_args. -m4_define([m4_foreach], -[m4_if([$2], [], [], - [m4_pushdef([$1])_$0([m4_define([$1],], [)$3], [], - $2)m4_popdef([$1])])]) - -# _m4_foreach(PRE, POST, IGNORED, ARG...) -# --------------------------------------- -# Form the common basis of the m4_foreach and m4_map macros. For each -# ARG, expand PRE[ARG]POST[]. The IGNORED argument makes recursion -# easier, and must be supplied rather than implicit. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([_m4_foreach], -[m4_if([$#], [3], [], - [$1[$4]$2[]$0([$1], [$2], m4_shift3($@))])]) - - -# m4_foreach_w(VARIABLE, LIST, EXPRESSION) -# ---------------------------------------- -# Like m4_foreach, but the list is whitespace separated. Depending on -# EXPRESSION, it may be more efficient to use m4_map_args_w. -# -# This macro is robust to active symbols: -# m4_foreach_w([Var], [ active -# b act\ -# ive ], [-Var-])end -# => -active--b--active-end -# -# This used to use a slower implementation based on m4_foreach: -# m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3]) -m4_define([m4_foreach_w], -[m4_pushdef([$1])m4_map_args_w([$2], - [m4_define([$1],], [)$3])m4_popdef([$1])]) - - -# m4_map(MACRO, LIST) -# m4_mapall(MACRO, LIST) -# ---------------------- -# Invoke MACRO($1), MACRO($2) etc. where $1, $2... are the elements of -# LIST. $1, $2... must in turn be lists, appropriate for m4_apply. -# If LIST contains an empty sublist, m4_map skips the expansion of -# MACRO, while m4_mapall expands MACRO with no arguments. -# -# Since LIST may be quite large, we want to minimize how often it -# appears in the expansion. Rather than use m4_car/m4_cdr iteration, -# we unbox the list, and use _m4_foreach for iteration. For m4_map, -# an empty list behaves like an empty sublist and gets ignored; for -# m4_mapall, we must special-case the empty list. -m4_define([m4_map], -[_m4_foreach([_m4_apply([$1],], [)], [], $2)]) - -m4_define([m4_mapall], -[m4_if([$2], [], [], - [_m4_foreach([m4_apply([$1],], [)], [], $2)])]) - - -# m4_map_sep(MACRO, [SEPARATOR], LIST) -# m4_mapall_sep(MACRO, [SEPARATOR], LIST) -# --------------------------------------- -# Invoke MACRO($1), SEPARATOR, MACRO($2), ..., MACRO($N) where $1, -# $2... $N are the elements of LIST, and are in turn lists appropriate -# for m4_apply. SEPARATOR is expanded, in order to allow the creation -# of a list of arguments by using a single-quoted comma as the -# separator. For each empty sublist, m4_map_sep skips the expansion -# of MACRO and SEPARATOR, while m4_mapall_sep expands MACRO with no -# arguments. -# -# For m4_mapall_sep, merely expand the first iteration without the -# separator, then include separator as part of subsequent recursion; -# but avoid extra expansion of LIST's side-effects via a helper macro. -# For m4_map_sep, things are trickier - we don't know if the first -# list element is an empty sublist, so we must define a self-modifying -# helper macro and use that as the separator instead. -m4_define([m4_map_sep], -[m4_pushdef([m4_Sep], [m4_define([m4_Sep], _m4_defn([m4_unquote]))])]dnl -[_m4_foreach([_m4_apply([m4_Sep([$2])[]$1],], [)], [], $3)m4_popdef([m4_Sep])]) - -m4_define([m4_mapall_sep], -[m4_if([$3], [], [], [_$0([$1], [$2], $3)])]) - -m4_define([_m4_mapall_sep], -[m4_apply([$1], [$3])_m4_foreach([m4_apply([$2[]$1],], [)], m4_shift2($@))]) - -# m4_map_args(EXPRESSION, ARG...) -# ------------------------------- -# Expand EXPRESSION([ARG]) for each argument. More efficient than -# m4_foreach([var], [ARG...], [EXPRESSION(m4_defn([var]))]) -# Shorthand for m4_map_args_sep([EXPRESSION(], [)], [], ARG...). -m4_define([m4_map_args], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [], - [$#], [2], [$1([$2])[]], - [_m4_foreach([$1(], [)], $@)])]) - - -# m4_map_args_pair(EXPRESSION, [END-EXPR = EXPRESSION], ARG...) -# ------------------------------------------------------------- -# Perform a pairwise grouping of consecutive ARGs, by expanding -# EXPRESSION([ARG1], [ARG2]). If there are an odd number of ARGs, the -# final argument is expanded with END-EXPR([ARGn]). -# -# For example: -# m4_define([show], [($*)m4_newline])dnl -# m4_map_args_pair([show], [], [a], [b], [c], [d], [e])dnl -# => (a,b) -# => (c,d) -# => (e) -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_map_args_pair], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [m4_fatal([$0: too few arguments: $#: $1])], - [$#], [2], [], - [$#], [3], [m4_default([$2], [$1])([$3])[]], - [$#], [4], [$1([$3], [$4])[]], - [$1([$3], [$4])[]$0([$1], [$2], m4_shift(m4_shift3($@)))])]) - - -# m4_map_args_sep([PRE], [POST], [SEP], ARG...) -# --------------------------------------------- -# Expand PRE[ARG]POST for each argument, with SEP between arguments. -m4_define([m4_map_args_sep], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [], - [$#], [2], [], - [$#], [3], [], - [$#], [4], [$1[$4]$2[]], - [$1[$4]$2[]_m4_foreach([$3[]$1], [$2], m4_shift3($@))])]) - - -# m4_map_args_w(STRING, [PRE], [POST], [SEP]) -# ------------------------------------------- -# Perform the expansion of PRE[word]POST[] for each word in STRING -# separated by whitespace. More efficient than: -# m4_foreach_w([var], [STRING], [PRE[]m4_defn([var])POST]) -# Additionally, expand SEP between words. -# -# As long as we have to use m4_bpatsubst to split the string, we might -# as well make it also apply PRE and POST; this avoids iteration -# altogether. But we must be careful of any \ in PRE or POST. -# _m4_strip returns a quoted string, but that's okay, since it also -# supplies an empty leading and trailing argument due to our -# intentional whitespace around STRING. We use m4_substr to strip the -# empty elements and remove the extra layer of quoting. -m4_define([m4_map_args_w], -[_$0(_m4_split([ ]m4_flatten([$1])[ ], [[ ]+], - m4_if(m4_index([$2$3$4], [\]), [-1], [[$3[]$4[]$2]], - [m4_bpatsubst([[$3[]$4[]$2]], [\\], [\\\\])])), - m4_len([[]$3[]$4]), m4_len([$4[]$2[]]))]) - -m4_define([_m4_map_args_w], -[m4_substr([$1], [$2], m4_eval(m4_len([$1]) - [$2] - [$3]))]) - - -# m4_stack_foreach(MACRO, FUNC) -# m4_stack_foreach_lifo(MACRO, FUNC) -# ---------------------------------- -# Pass each stacked definition of MACRO to the one-argument macro FUNC. -# m4_stack_foreach proceeds in FIFO order, while m4_stack_foreach_lifo -# processes the topmost definitions first. In addition, FUNC should -# not push or pop definitions of MACRO, and should not expect anything about -# the active definition of MACRO (it will not be the topmost, and may not -# be the one passed to FUNC either). -# -# Some macros simply can't be examined with this method: namely, -# anything involved in the implementation of _m4_stack_reverse. -m4_define([m4_stack_foreach], -[_m4_stack_reverse([$1], [m4_tmp-$1])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1], [$2(_m4_defn([m4_tmp-$1]))])]) - -m4_define([m4_stack_foreach_lifo], -[_m4_stack_reverse([$1], [m4_tmp-$1], [$2(_m4_defn([m4_tmp-$1]))])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1])]) - -# m4_stack_foreach_sep(MACRO, [PRE], [POST], [SEP]) -# m4_stack_foreach_sep_lifo(MACRO, [PRE], [POST], [SEP]) -# ------------------------------------------------------ -# Similar to m4_stack_foreach and m4_stack_foreach_lifo, in that every -# definition of a pushdef stack will be visited. But rather than -# passing the definition as a single argument to a macro, this variant -# expands the concatenation of PRE[]definition[]POST, and expands SEP -# between consecutive expansions. Note that m4_stack_foreach([a], [b]) -# is equivalent to m4_stack_foreach_sep([a], [b(], [)]). -m4_define([m4_stack_foreach_sep], -[_m4_stack_reverse([$1], [m4_tmp-$1])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1], [$2[]_m4_defn([m4_tmp-$1])$3], [$4[]])]) - -m4_define([m4_stack_foreach_sep_lifo], -[_m4_stack_reverse([$1], [m4_tmp-$1], [$2[]_m4_defn([m4_tmp-$1])$3], [$4[]])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1])]) - - -# _m4_stack_reverse(OLD, NEW, [ACTION], [SEP]) -# -------------------------------------------- -# A recursive worker for pushdef stack manipulation. Destructively -# copy the OLD stack into the NEW, and expanding ACTION for each -# iteration. After the first iteration, SEP is promoted to the front -# of ACTION (note that SEP should include a trailing [] if it is to -# avoid interfering with ACTION). The current definition is examined -# after the NEW has been pushed but before OLD has been popped; this -# order is important, as ACTION is permitted to operate on either -# _m4_defn([OLD]) or _m4_defn([NEW]). Since the operation is -# destructive, this macro is generally used twice, with a temporary -# macro name holding the swapped copy. -m4_define([_m4_stack_reverse], -[m4_ifdef([$1], [m4_pushdef([$2], - _m4_defn([$1]))$3[]_m4_popdef([$1])$0([$1], [$2], [$4$3])])]) - - - -## --------------------------- ## -## 9. More diversion support. ## -## --------------------------- ## - - -# m4_cleardivert(DIVERSION-NAME...) -# --------------------------------- -# Discard any text in DIVERSION-NAME. -# -# This works even inside m4_expand. -m4_define([m4_cleardivert], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [_m4_divert_raw([-1])m4_undivert($@)_m4_divert_raw( - _m4_divert(_m4_defn([_m4_divert_diversion]), [-]))])]) - - -# _m4_divert(DIVERSION-NAME or NUMBER, [NOWARN]) -# ---------------------------------------------- -# If DIVERSION-NAME is the name of a diversion, return its number, -# otherwise if it is a NUMBER return it. Issue a warning about -# the use of a number instead of a name, unless NOWARN is provided. -m4_define([_m4_divert], -[m4_ifdef([_m4_divert($1)], - [m4_indir([_m4_divert($1)])], - [m4_if([$2], [], [m4_warn([syntax], - [prefer named diversions])])$1])]) - -# KILL is only used to suppress output. -m4_define([_m4_divert(KILL)], -1) - -# The empty diversion name is a synonym for 0. -m4_define([_m4_divert()], 0) - - -# m4_divert_stack -# --------------- -# Print the diversion stack, if it's nonempty. The caller is -# responsible for any leading or trailing newline. -m4_define([m4_divert_stack], -[m4_stack_foreach_sep_lifo([_m4_divert_stack], [], [], [ -])]) - - -# m4_divert_stack_push(MACRO-NAME, DIVERSION-NAME) -# ------------------------------------------------ -# Form an entry of the diversion stack from caller MACRO-NAME and -# entering DIVERSION-NAME and push it. -m4_define([m4_divert_stack_push], -[m4_pushdef([_m4_divert_stack], m4_location[: $1: $2])]) - - -# m4_divert(DIVERSION-NAME) -# ------------------------- -# Change the diversion stream to DIVERSION-NAME. -m4_define([m4_divert], -[m4_popdef([_m4_divert_stack])]dnl -[m4_define([_m4_divert_diversion], [$1])]dnl -[m4_divert_stack_push([$0], [$1])]dnl -[_m4_divert_raw(_m4_divert([$1]))]) - - -# m4_divert_push(DIVERSION-NAME, [NOWARN]) -# ---------------------------------------- -# Change the diversion stream to DIVERSION-NAME, while stacking old values. -# For internal use only: if NOWARN is not empty, DIVERSION-NAME can be a -# number instead of a name. -m4_define([m4_divert_push], -[m4_divert_stack_push([$0], [$1])]dnl -[m4_pushdef([_m4_divert_diversion], [$1])]dnl -[_m4_divert_raw(_m4_divert([$1], [$2]))]) - - -# m4_divert_pop([DIVERSION-NAME]) -# ------------------------------- -# Change the diversion stream to its previous value, unstacking it. -# If specified, verify we left DIVERSION-NAME. -# When we pop the last value from the stack, we divert to -1. -m4_define([m4_divert_pop], -[m4_if([$1], [], [], - [$1], _m4_defn([_m4_divert_diversion]), [], - [m4_fatal([$0($1): diversion mismatch: -]m4_divert_stack)])]dnl -[_m4_popdef([_m4_divert_stack], [_m4_divert_diversion])]dnl -[m4_ifdef([_m4_divert_diversion], [], - [m4_fatal([too many m4_divert_pop])])]dnl -[_m4_divert_raw(_m4_divert(_m4_defn([_m4_divert_diversion]), [-]))]) - - -# m4_divert_text(DIVERSION-NAME, CONTENT) -# --------------------------------------- -# Output CONTENT into DIVERSION-NAME (which may be a number actually). -# An end of line is appended for free to CONTENT. -m4_define([m4_divert_text], -[m4_divert_push([$1])$2 -m4_divert_pop([$1])]) - - -# m4_divert_once(DIVERSION-NAME, CONTENT) -# --------------------------------------- -# Output CONTENT into DIVERSION-NAME once, if not already there. -# An end of line is appended for free to CONTENT. -m4_define([m4_divert_once], -[m4_expand_once([m4_divert_text([$1], [$2])])]) - - -# _m4_divert_unsafe(DIVERSION-NAME) -# --------------------------------- -# Issue a warning that the attempt to change the current diversion to -# DIVERSION-NAME is unsafe, because this macro is being expanded -# during argument collection of m4_expand. -m4_define([_m4_divert_unsafe], -[m4_fatal([$0: cannot change diversion to `$1' inside m4_expand])]) - - -# m4_undivert(DIVERSION-NAME...) -# ------------------------------ -# Undivert DIVERSION-NAME. Unlike the M4 version, this requires at -# least one DIVERSION-NAME; also, due to support for named diversions, -# this should not be used to undivert files. -m4_define([m4_undivert], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [_m4_undivert(_m4_divert([$1]))], - [m4_map_args([$0], $@)])]) - - -## --------------------------------------------- ## -## 10. Defining macros with bells and whistles. ## -## --------------------------------------------- ## - -# `m4_defun' is basically `m4_define' but it equips the macro with the -# needed machinery for `m4_require'. A macro must be m4_defun'd if -# either it is m4_require'd, or it m4_require's. -# -# Two things deserve attention and are detailed below: -# 1. Implementation of m4_require -# 2. Keeping track of the expansion stack -# -# 1. Implementation of m4_require -# =============================== -# -# Of course m4_defun calls m4_provide, so that a macro which has -# been expanded is not expanded again when m4_require'd, but the -# difficult part is the proper expansion of macros when they are -# m4_require'd. -# -# The implementation is based on three ideas, (i) using diversions to -# prepare the expansion of the macro and its dependencies (by Franc,ois -# Pinard), (ii) expand the most recently m4_require'd macros _after_ -# the previous macros (by Axel Thimm), and (iii) track instances of -# provide before require (by Eric Blake). -# -# -# The first idea: why use diversions? -# ----------------------------------- -# -# When a macro requires another, the other macro is expanded in new -# diversion, GROW. When the outer macro is fully expanded, we first -# undivert the most nested diversions (GROW - 1...), and finally -# undivert GROW. To understand why we need several diversions, -# consider the following example: -# -# | m4_defun([TEST1], [Test...m4_require([TEST2])1]) -# | m4_defun([TEST2], [Test...m4_require([TEST3])2]) -# | m4_defun([TEST3], [Test...3]) -# -# Because m4_require is not required to be first in the outer macros, we -# must keep the expansions of the various levels of m4_require separated. -# Right before executing the epilogue of TEST1, we have: -# -# GROW - 2: Test...3 -# GROW - 1: Test...2 -# GROW: Test...1 -# BODY: -# -# Finally the epilogue of TEST1 undiverts GROW - 2, GROW - 1, and -# GROW into the regular flow, BODY. -# -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: Test...3; Test...2; Test...1 -# -# (The semicolons are here for clarification, but of course are not -# emitted.) This is what Autoconf 2.0 (I think) to 2.13 (I'm sure) -# implement. -# -# -# The second idea: first required first out -# ----------------------------------------- -# -# The natural implementation of the idea above is buggy and produces -# very surprising results in some situations. Let's consider the -# following example to explain the bug: -# -# | m4_defun([TEST1], [m4_require([TEST2a])m4_require([TEST2b])]) -# | m4_defun([TEST2a], []) -# | m4_defun([TEST2b], [m4_require([TEST3])]) -# | m4_defun([TEST3], [m4_require([TEST2a])]) -# | -# | AC_INIT -# | TEST1 -# -# The dependencies between the macros are: -# -# 3 --- 2b -# / \ is m4_require'd by -# / \ left -------------------- right -# 2a ------------ 1 -# -# If you strictly apply the rules given in the previous section you get: -# -# GROW - 2: TEST3 -# GROW - 1: TEST2a; TEST2b -# GROW: TEST1 -# BODY: -# -# (TEST2a, although required by TEST3 is not expanded in GROW - 3 -# because is has already been expanded before in GROW - 1, so it has -# been AC_PROVIDE'd, so it is not expanded again) so when you undivert -# the stack of diversions, you get: -# -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: TEST3; TEST2a; TEST2b; TEST1 -# -# i.e., TEST2a is expanded after TEST3 although the latter required the -# former. -# -# Starting from 2.50, we use an implementation provided by Axel Thimm. -# The idea is simple: the order in which macros are emitted must be the -# same as the one in which macros are expanded. (The bug above can -# indeed be described as: a macro has been m4_provide'd before its -# dependent, but it is emitted after: the lack of correlation between -# emission and expansion order is guilty). -# -# How to do that? You keep the stack of diversions to elaborate the -# macros, but each time a macro is fully expanded, emit it immediately. -# -# In the example above, when TEST2a is expanded, but it's epilogue is -# not run yet, you have: -# -# GROW - 2: -# GROW - 1: TEST2a -# GROW: Elaboration of TEST1 -# BODY: -# -# The epilogue of TEST2a emits it immediately: -# -# GROW - 2: -# GROW - 1: -# GROW: Elaboration of TEST1 -# BODY: TEST2a -# -# TEST2b then requires TEST3, so right before the epilogue of TEST3, you -# have: -# -# GROW - 2: TEST3 -# GROW - 1: Elaboration of TEST2b -# GROW: Elaboration of TEST1 -# BODY: TEST2a -# -# The epilogue of TEST3 emits it: -# -# GROW - 2: -# GROW - 1: Elaboration of TEST2b -# GROW: Elaboration of TEST1 -# BODY: TEST2a; TEST3 -# -# TEST2b is now completely expanded, and emitted: -# -# GROW - 2: -# GROW - 1: -# GROW: Elaboration of TEST1 -# BODY: TEST2a; TEST3; TEST2b -# -# and finally, TEST1 is finished and emitted: -# -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: TEST2a; TEST3; TEST2b: TEST1 -# -# The idea is simple, but the implementation is a bit involved. If -# you are like me, you will want to see the actual functioning of this -# implementation to be convinced. The next section gives the full -# details. -# -# -# The Axel Thimm implementation at work -# ------------------------------------- -# -# We consider the macros above, and this configure.ac: -# -# AC_INIT -# TEST1 -# -# You should keep the definitions of _m4_defun_pro, _m4_defun_epi, and -# m4_require at hand to follow the steps. -# -# This implementation tries not to assume that the current diversion is -# BODY, so as soon as a macro (m4_defun'd) is expanded, we first -# record the current diversion under the name _m4_divert_dump (denoted -# DUMP below for short). This introduces an important difference with -# the previous versions of Autoconf: you cannot use m4_require if you -# are not inside an m4_defun'd macro, and especially, you cannot -# m4_require directly from the top level. -# -# We have not tried to simulate the old behavior (better yet, we -# diagnose it), because it is too dangerous: a macro m4_require'd from -# the top level is expanded before the body of `configure', i.e., before -# any other test was run. I let you imagine the result of requiring -# AC_STDC_HEADERS for instance, before AC_PROG_CC was actually run.... -# -# After AC_INIT was run, the current diversion is BODY. -# * AC_INIT was run -# DUMP: undefined -# diversion stack: BODY |- -# -# * TEST1 is expanded -# The prologue of TEST1 sets _m4_divert_dump, which is the diversion -# where the current elaboration will be dumped, to the current -# diversion. It also m4_divert_push to GROW, where the full -# expansion of TEST1 and its dependencies will be elaborated. -# DUMP: BODY -# BODY: empty -# diversions: GROW, BODY |- -# -# * TEST1 requires TEST2a -# _m4_require_call m4_divert_pushes another temporary diversion, -# GROW - 1, and expands TEST2a in there. -# DUMP: BODY -# BODY: empty -# GROW - 1: TEST2a -# diversions: GROW - 1, GROW, BODY |- -# Then the content of the temporary diversion is moved to DUMP and the -# temporary diversion is popped. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW, BODY |- -# -# * TEST1 requires TEST2b -# Again, _m4_require_call pushes GROW - 1 and heads to expand TEST2b. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW - 1, GROW, BODY |- -# -# * TEST2b requires TEST3 -# _m4_require_call pushes GROW - 2 and expands TEST3 here. -# (TEST3 requires TEST2a, but TEST2a has already been m4_provide'd, so -# nothing happens.) -# DUMP: BODY -# BODY: TEST2a -# GROW - 2: TEST3 -# diversions: GROW - 2, GROW - 1, GROW, BODY |- -# Then the diversion is appended to DUMP, and popped. -# DUMP: BODY -# BODY: TEST2a; TEST3 -# diversions: GROW - 1, GROW, BODY |- -# -# * TEST1 requires TEST2b (contd.) -# The content of TEST2b is expanded... -# DUMP: BODY -# BODY: TEST2a; TEST3 -# GROW - 1: TEST2b, -# diversions: GROW - 1, GROW, BODY |- -# ... and moved to DUMP. -# DUMP: BODY -# BODY: TEST2a; TEST3; TEST2b -# diversions: GROW, BODY |- -# -# * TEST1 is expanded: epilogue -# TEST1's own content is in GROW... -# DUMP: BODY -# BODY: TEST2a; TEST3; TEST2b -# GROW: TEST1 -# diversions: BODY |- -# ... and it's epilogue moves it to DUMP and then undefines DUMP. -# DUMP: undefined -# BODY: TEST2a; TEST3; TEST2b; TEST1 -# diversions: BODY |- -# -# -# The third idea: track macros provided before they were required -# --------------------------------------------------------------- -# -# Using just the first two ideas, Autoconf 2.50 through 2.63 still had -# a subtle bug for more than seven years. Let's consider the -# following example to explain the bug: -# -# | m4_defun([TEST1], [1]) -# | m4_defun([TEST2], [2[]m4_require([TEST1])]) -# | m4_defun([TEST3], [3 TEST1 m4_require([TEST2])]) -# | TEST3 -# -# After the prologue of TEST3, we are collecting text in GROW with the -# intent of dumping it in BODY during the epilogue. Next, we -# encounter the direct invocation of TEST1, which provides the macro -# in place in GROW. From there, we encounter a requirement for TEST2, -# which must be collected in a new diversion. While expanding TEST2, -# we encounter a requirement for TEST1, but since it has already been -# expanded, the Axel Thimm algorithm states that we can treat it as a -# no-op. But that would lead to an end result of `2 3 1', meaning -# that we have once again output a macro (TEST2) prior to its -# requirements (TEST1). -# -# The problem can only occur if a single defun'd macro first provides, -# then later indirectly requires, the same macro. Note that directly -# expanding then requiring a macro is okay: because the dependency was -# met, the require phase can be a no-op. For that matter, the outer -# macro can even require two helpers, where the first helper expands -# the macro, and the second helper indirectly requires the macro. -# Out-of-order expansion is only present if the inner macro is -# required by something that will be hoisted in front of where the -# direct expansion occurred. In other words, we must be careful not -# to warn on: -# -# | m4_defun([TEST4], [4]) -# | m4_defun([TEST5], [5 TEST4 m4_require([TEST4])]) -# | TEST5 => 5 4 -# -# or even the more complex: -# -# | m4_defun([TEST6], [6]) -# | m4_defun([TEST7], [7 TEST6]) -# | m4_defun([TEST8], [8 m4_require([TEST6])]) -# | m4_defun([TEST9], [9 m4_require([TEST8])]) -# | m4_defun([TEST10], [10 m4_require([TEST7]) m4_require([TEST9])]) -# | TEST10 => 7 6 8 9 10 -# -# So, to detect whether a require was direct or indirect, m4_defun and -# m4_require track the name of the macro that caused a diversion to be -# created (using the stack _m4_diverting, coupled with an O(1) lookup -# _m4_diverting([NAME])), and m4_provide stores the name associated -# with the diversion at which a macro was provided. A require call is -# direct if it occurs within the same diversion where the macro was -# provided, or if the diversion associated with the providing context -# has been collected. -# -# The implementation of the warning involves tracking the set of -# macros which have been provided since the start of the outermost -# defun'd macro (the set is named _m4_provide). When starting an -# outermost macro, the set is emptied; when a macro is provided, it is -# added to the set; when require expands the body of a macro, it is -# removed from the set; and when a macro is indirectly required, the -# set is checked. If a macro is in the set, then it has been provided -# before it was required, and we satisfy dependencies by expanding the -# macro as if it had never been provided; in the example given above, -# this means we now output `1 2 3 1'. Meanwhile, a warning is issued -# to inform the user that her macros trigger the bug in older autoconf -# versions, and that her output file now contains redundant contents -# (and possibly new problems, if the repeated macro was not -# idempotent). Meanwhile, macros defined by m4_defun_once instead of -# m4_defun are idempotent, avoiding any warning or duplicate output. -# -# -# 2. Keeping track of the expansion stack -# ======================================= -# -# When M4 expansion goes wrong it is often extremely hard to find the -# path amongst macros that drove to the failure. What is needed is -# the stack of macro `calls'. One could imagine that GNU M4 would -# maintain a stack of macro expansions, unfortunately it doesn't, so -# we do it by hand. This is of course extremely costly, but the help -# this stack provides is worth it. Nevertheless to limit the -# performance penalty this is implemented only for m4_defun'd macros, -# not for define'd macros. -# -# Each time we enter an m4_defun'd macros, we add a definition in -# _m4_expansion_stack, and when we exit the macro, we remove it (thanks -# to pushdef/popdef). m4_stack_foreach is used to print the expansion -# stack in the rare cases when it's needed. -# -# In addition, we want to detect circular m4_require dependencies. -# Each time we expand a macro FOO we define _m4_expanding(FOO); and -# m4_require(BAR) simply checks whether _m4_expanding(BAR) is defined. - - -# m4_expansion_stack -# ------------------ -# Expands to the entire contents of the expansion stack. The caller -# must supply a trailing newline. This macro always prints a -# location; check whether _m4_expansion_stack is defined to filter out -# the case when no defun'd macro is in force. -m4_define([m4_expansion_stack], -[m4_stack_foreach_sep_lifo([_$0], [_$0_entry(], [) -])m4_location[: the top level]]) - -# _m4_expansion_stack_entry(MACRO) -# -------------------------------- -# Format an entry for MACRO found on the expansion stack. -m4_define([_m4_expansion_stack_entry], -[_m4_defn([m4_location($1)])[: $1 is expanded from...]]) - -# m4_expansion_stack_push(MACRO) -# ------------------------------ -# Form an entry of the expansion stack on entry to MACRO and push it. -m4_define([m4_expansion_stack_push], -[m4_pushdef([_m4_expansion_stack], [$1])]) - - -# _m4_divert(GROW) -# ---------------- -# This diversion is used by the m4_defun/m4_require machinery. It is -# important to keep room before GROW because for each nested -# AC_REQUIRE we use an additional diversion (i.e., two m4_require's -# will use GROW - 2. More than 3 levels has never seemed to be -# needed.) -# -# ... -# - GROW - 2 -# m4_require'd code, 2 level deep -# - GROW - 1 -# m4_require'd code, 1 level deep -# - GROW -# m4_defun'd macros are elaborated here. - -m4_define([_m4_divert(GROW)], 10000) - - -# _m4_defun_pro(MACRO-NAME) -# ------------------------- -# The prologue for Autoconf macros. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and m4_defn overhead. -m4_define([_m4_defun_pro], -[m4_ifdef([_m4_expansion_stack], [], [_m4_defun_pro_outer([$1])])]dnl -[m4_expansion_stack_push([$1])m4_pushdef([_m4_expanding($1)])]) - -m4_define([_m4_defun_pro_outer], -[m4_set_delete([_m4_provide])]dnl -[m4_pushdef([_m4_diverting([$1])])m4_pushdef([_m4_diverting], [$1])]dnl -[m4_pushdef([_m4_divert_dump], m4_divnum)m4_divert_push([GROW])]) - -# _m4_defun_epi(MACRO-NAME) -# ------------------------- -# The Epilogue for Autoconf macros. MACRO-NAME only helps tracing -# the PRO/EPI pairs. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and m4_popdef overhead. -m4_define([_m4_defun_epi], -[_m4_popdef([_m4_expanding($1)], [_m4_expansion_stack])]dnl -[m4_ifdef([_m4_expansion_stack], [], [_m4_defun_epi_outer([$1])])]dnl -[m4_provide([$1])]) - -m4_define([_m4_defun_epi_outer], -[_m4_popdef([_m4_divert_dump], [_m4_diverting([$1])], [_m4_diverting])]dnl -[m4_divert_pop([GROW])m4_undivert([GROW])]) - - -# _m4_divert_dump -# --------------- -# If blank, we are outside of any defun'd macro. Otherwise, expands -# to the diversion number (not name) where require'd macros should be -# moved once completed. -m4_define([_m4_divert_dump]) - - -# m4_divert_require(DIVERSION, NAME-TO-CHECK, [BODY-TO-EXPAND]) -# ------------------------------------------------------------- -# Same as m4_require, but BODY-TO-EXPAND goes into the named DIVERSION; -# requirements still go in the current diversion though. -# -m4_define([m4_divert_require], -[m4_ifdef([_m4_expanding($2)], - [m4_fatal([$0: circular dependency of $2])])]dnl -[m4_if(_m4_divert_dump, [], - [m4_fatal([$0($2): cannot be used outside of an m4_defun'd macro])])]dnl -[m4_provide_if([$2], [], - [_m4_require_call([$2], [$3], _m4_divert([$1], [-]))])]) - - -# m4_defun(NAME, EXPANSION, [MACRO = m4_define]) -# ---------------------------------------------- -# Define a macro NAME which automatically provides itself. Add -# machinery so the macro automatically switches expansion to the -# diversion stack if it is not already using it, prior to EXPANSION. -# In this case, once finished, it will bring back all the code -# accumulated in the diversion stack. This, combined with m4_require, -# achieves the topological ordering of macros. We don't use this -# macro to define some frequently called macros that are not involved -# in ordering constraints, to save m4 processing. -# -# MACRO is an undocumented argument; when set to m4_pushdef, and NAME -# is already defined, the new definition is added to the pushdef -# stack, rather than overwriting the current definition. It can thus -# be used to write self-modifying macros, which pop themselves to a -# previously m4_define'd definition so that subsequent use of the -# macro is faster. -m4_define([m4_defun], -[m4_define([m4_location($1)], m4_location)]dnl -[m4_default([$3], [m4_define])([$1], - [_m4_defun_pro(]m4_dquote($[0])[)$2[]_m4_defun_epi(]m4_dquote($[0])[)])]) - - -# m4_defun_init(NAME, INIT, COMMON) -# --------------------------------- -# Like m4_defun, but split EXPANSION into two portions: INIT which is -# done only the first time NAME is invoked, and COMMON which is -# expanded every time. -# -# For now, the COMMON definition is always m4_define'd, giving an even -# lighter-weight definition. m4_defun allows self-providing, but once -# a macro is provided, m4_require no longer cares if it is m4_define'd -# or m4_defun'd. m4_defun also provides location tracking to identify -# dependency bugs, but once the INIT has been expanded, we know there -# are no dependency bugs. However, if a future use needs COMMON to be -# m4_defun'd, we can add a parameter, similar to the third parameter -# to m4_defun. -m4_define([m4_defun_init], -[m4_define([$1], [$3[]])m4_defun([$1], - [$2[]_m4_popdef(]m4_dquote($[0])[)m4_indir(]m4_dquote($[0])dnl -[m4_if(]m4_dquote($[#])[, [0], [], ]m4_dquote([,$]@)[))], [m4_pushdef])]) - - -# m4_defun_once(NAME, EXPANSION) -# ------------------------------ -# Like m4_defun, but guarantee that EXPANSION only happens once -# (thereafter, using NAME is a no-op). -# -# If _m4_divert_dump is empty, we are called at the top level; -# otherwise, we must ensure that we are required in front of the -# current defun'd macro. Use a helper macro so that EXPANSION need -# only occur once in the definition of NAME, since it might be large. -m4_define([m4_defun_once], -[m4_define([m4_location($1)], m4_location)]dnl -[m4_define([$1], [_m4_defun_once([$1], [$2], m4_if(_m4_divert_dump, [], - [[_m4_defun_pro([$1])m4_unquote(], [)_m4_defun_epi([$1])]], -m4_ifdef([_m4_diverting([$1])], [-]), [-], [[m4_unquote(], [)]], - [[_m4_require_call([$1],], [, _m4_divert_dump)]]))])]) - -m4_define([_m4_defun_once], -[m4_pushdef([$1])$3[$2[]m4_provide([$1])]$4]) - - -# m4_pattern_forbid(ERE, [WHY]) -# ----------------------------- -# Declare that no token matching the forbidden extended regular -# expression ERE should be seen in the output unless... -m4_define([m4_pattern_forbid], []) - - -# m4_pattern_allow(ERE) -# --------------------- -# ... that token also matches the allowed extended regular expression ERE. -# Both used via traces. -m4_define([m4_pattern_allow], []) - - -## --------------------------------- ## -## 11. Dependencies between macros. ## -## --------------------------------- ## - - -# m4_before(THIS-MACRO-NAME, CALLED-MACRO-NAME) -# --------------------------------------------- -# Issue a warning if CALLED-MACRO-NAME was called before THIS-MACRO-NAME. -m4_define([m4_before], -[m4_provide_if([$2], - [m4_warn([syntax], [$2 was called before $1])])]) - - -# m4_require(NAME-TO-CHECK, [BODY-TO-EXPAND = NAME-TO-CHECK]) -# ----------------------------------------------------------- -# If NAME-TO-CHECK has never been expanded (actually, if it is not -# m4_provide'd), expand BODY-TO-EXPAND *before* the current macro -# expansion; follow the expansion with a newline. Once expanded, emit -# it in _m4_divert_dump. Keep track of the m4_require chain in -# _m4_expansion_stack. -# -# The normal cases are: -# -# - NAME-TO-CHECK == BODY-TO-EXPAND -# Which you can use for regular macros with or without arguments, e.g., -# m4_require([AC_PROG_CC], [AC_PROG_CC]) -# m4_require([AC_CHECK_HEADERS(threads.h)], [AC_CHECK_HEADERS(threads.h)]) -# which is just the same as -# m4_require([AC_PROG_CC]) -# m4_require([AC_CHECK_HEADERS(threads.h)]) -# -# - BODY-TO-EXPAND == m4_indir([NAME-TO-CHECK]) -# In the case of macros with irregular names. For instance: -# m4_require([AC_LANG_COMPILER(C)], [indir([AC_LANG_COMPILER(C)])]) -# which means `if the macro named `AC_LANG_COMPILER(C)' (the parens are -# part of the name, it is not an argument) has not been run, then -# call it.' -# Had you used -# m4_require([AC_LANG_COMPILER(C)], [AC_LANG_COMPILER(C)]) -# then m4_require would have tried to expand `AC_LANG_COMPILER(C)', i.e., -# call the macro `AC_LANG_COMPILER' with `C' as argument. -# -# You could argue that `AC_LANG_COMPILER', when it receives an argument -# such as `C' should dispatch the call to `AC_LANG_COMPILER(C)'. But this -# `extension' prevents `AC_LANG_COMPILER' from having actual arguments that -# it passes to `AC_LANG_COMPILER(C)'. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and other overhead on the common path. -m4_define([m4_require], -[m4_ifdef([_m4_expanding($1)], - [m4_fatal([$0: circular dependency of $1])])]dnl -[m4_if(_m4_divert_dump, [], - [m4_fatal([$0($1): cannot be used outside of an ]dnl -m4_if([$0], [m4_require], [[m4_defun]], [[AC_DEFUN]])['d macro])])]dnl -[m4_provide_if([$1], [m4_set_contains([_m4_provide], [$1], - [_m4_require_check([$1], _m4_defn([m4_provide($1)]), [$0])], [m4_ignore])], - [_m4_require_call])([$1], [$2], _m4_divert_dump)]) - - -# _m4_require_call(NAME-TO-CHECK, [BODY-TO-EXPAND = NAME-TO-CHECK], -# DIVERSION-NUMBER) -# ----------------------------------------------------------------- -# If m4_require decides to expand the body, it calls this macro. The -# expansion is placed in DIVERSION-NUMBER. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and other overhead on the common path. -m4_define([_m4_require_call], -[m4_pushdef([_m4_divert_grow], m4_decr(_m4_divert_grow))]dnl -[m4_pushdef([_m4_diverting([$1])])m4_pushdef([_m4_diverting], [$1])]dnl -[m4_divert_push(_m4_divert_grow, [-])]dnl -[m4_if([$2], [], [$1], [$2]) -m4_provide_if([$1], [m4_set_remove([_m4_provide], [$1])], - [m4_warn([syntax], [$1 is m4_require'd but not m4_defun'd])])]dnl -[_m4_divert_raw($3)_m4_undivert(_m4_divert_grow)]dnl -[m4_divert_pop(_m4_divert_grow)_m4_popdef([_m4_divert_grow], -[_m4_diverting([$1])], [_m4_diverting])]) - - -# _m4_require_check(NAME-TO-CHECK, OWNER, CALLER) -# ----------------------------------------------- -# NAME-TO-CHECK has been identified as previously expanded in the -# diversion owned by OWNER. If this is a problem, warn on behalf of -# CALLER and return _m4_require_call; otherwise return m4_ignore. -m4_define([_m4_require_check], -[m4_if(_m4_defn([_m4_diverting]), [$2], [m4_ignore], - m4_ifdef([_m4_diverting([$2])], [-]), [-], [m4_warn([syntax], - [$3: `$1' was expanded before it was required -http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required])_m4_require_call], - [m4_ignore])]) - - -# _m4_divert_grow -# --------------- -# The counter for _m4_require_call. -m4_define([_m4_divert_grow], _m4_divert([GROW])) - - -# m4_expand_once(TEXT, [WITNESS = TEXT]) -# -------------------------------------- -# If TEXT has never been expanded, expand it *here*. Use WITNESS as -# as a memory that TEXT has already been expanded. -m4_define([m4_expand_once], -[m4_provide_if(m4_default_quoted([$2], [$1]), - [], - [m4_provide(m4_default_quoted([$2], [$1]))[]$1])]) - - -# m4_provide(MACRO-NAME) -# ---------------------- -m4_define([m4_provide], -[m4_ifdef([m4_provide($1)], [], -[m4_set_add([_m4_provide], [$1], [m4_define([m4_provide($1)], - m4_ifdef([_m4_diverting], [_m4_defn([_m4_diverting])]))])])]) - - -# m4_provide_if(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ------------------------------------------------------- -# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED. -# The purpose of this macro is to provide the user with a means to -# check macros which are provided without letting her know how the -# information is coded. -m4_define([m4_provide_if], -[m4_ifdef([m4_provide($1)], - [$2], [$3])]) - - -## --------------------- ## -## 12. Text processing. ## -## --------------------- ## - - -# m4_cr_letters -# m4_cr_LETTERS -# m4_cr_Letters -# ------------- -m4_define([m4_cr_letters], [abcdefghijklmnopqrstuvwxyz]) -m4_define([m4_cr_LETTERS], [ABCDEFGHIJKLMNOPQRSTUVWXYZ]) -m4_define([m4_cr_Letters], -m4_defn([m4_cr_letters])dnl -m4_defn([m4_cr_LETTERS])dnl -) - - -# m4_cr_digits -# ------------ -m4_define([m4_cr_digits], [0123456789]) - - -# m4_cr_alnum -# ----------- -m4_define([m4_cr_alnum], -m4_defn([m4_cr_Letters])dnl -m4_defn([m4_cr_digits])dnl -) - - -# m4_cr_symbols1 -# m4_cr_symbols2 -# -------------- -m4_define([m4_cr_symbols1], -m4_defn([m4_cr_Letters])dnl -_) - -m4_define([m4_cr_symbols2], -m4_defn([m4_cr_symbols1])dnl -m4_defn([m4_cr_digits])dnl -) - -# m4_cr_all -# --------- -# The character range representing everything, with `-' as the last -# character, since it is special to m4_translit. Use with care, because -# it contains characters special to M4 (fortunately, both ASCII and EBCDIC -# have [] in order, so m4_defn([m4_cr_all]) remains a valid string). It -# also contains characters special to terminals, so it should never be -# displayed in an error message. Also, attempts to map [ and ] to other -# characters via m4_translit must deal with the fact that m4_translit does -# not add quotes to the output. -# -# In EBCDIC, $ is immediately followed by *, which leads to problems -# if m4_cr_all is inlined into a macro definition; so swap them. -# -# It is mainly useful in generating inverted character range maps, for use -# in places where m4_translit is faster than an equivalent m4_bpatsubst; -# the regex `[^a-z]' is equivalent to: -# m4_translit(m4_dquote(m4_defn([m4_cr_all])), [a-z]) -m4_define([m4_cr_all], -m4_translit(m4_dquote(m4_format(m4_dquote(m4_for( - ,1,255,,[[%c]]))m4_for([i],1,255,,[,i]))), [$*-], [*$])-) - - -# _m4_define_cr_not(CATEGORY) -# --------------------------- -# Define m4_cr_not_CATEGORY as the inverse of m4_cr_CATEGORY. -m4_define([_m4_define_cr_not], -[m4_define([m4_cr_not_$1], - m4_translit(m4_dquote(m4_defn([m4_cr_all])), - m4_defn([m4_cr_$1])))]) - - -# m4_cr_not_letters -# m4_cr_not_LETTERS -# m4_cr_not_Letters -# m4_cr_not_digits -# m4_cr_not_alnum -# m4_cr_not_symbols1 -# m4_cr_not_symbols2 -# ------------------ -# Inverse character sets -_m4_define_cr_not([letters]) -_m4_define_cr_not([LETTERS]) -_m4_define_cr_not([Letters]) -_m4_define_cr_not([digits]) -_m4_define_cr_not([alnum]) -_m4_define_cr_not([symbols1]) -_m4_define_cr_not([symbols2]) - - -# m4_newline([STRING]) -# -------------------- -# Expands to a newline, possibly followed by STRING. Exists mostly for -# formatting reasons. -m4_define([m4_newline], [ -$1]) - - -# m4_re_escape(STRING) -# -------------------- -# Escape RE active characters in STRING. -m4_define([m4_re_escape], -[m4_bpatsubst([$1], - [[][*+.?\^$]], [\\\&])]) - - -# m4_re_string -# ------------ -# Regexp for `[a-zA-Z_0-9]*' -# m4_dquote provides literal [] for the character class. -m4_define([m4_re_string], -m4_dquote(m4_defn([m4_cr_symbols2]))dnl -[*]dnl -) - - -# m4_re_word -# ---------- -# Regexp for `[a-zA-Z_][a-zA-Z_0-9]*' -m4_define([m4_re_word], -m4_dquote(m4_defn([m4_cr_symbols1]))dnl -m4_defn([m4_re_string])dnl -) - - -# m4_tolower(STRING) -# m4_toupper(STRING) -# ------------------ -# These macros convert STRING to lowercase or uppercase. -# -# Rather than expand the m4_defn each time, we inline them up front. -m4_define([m4_tolower], -[m4_translit([[$1]], ]m4_dquote(m4_defn([m4_cr_LETTERS]))[, - ]m4_dquote(m4_defn([m4_cr_letters]))[)]) -m4_define([m4_toupper], -[m4_translit([[$1]], ]m4_dquote(m4_defn([m4_cr_letters]))[, - ]m4_dquote(m4_defn([m4_cr_LETTERS]))[)]) - - -# m4_split(STRING, [REGEXP]) -# -------------------------- -# Split STRING into an m4 list of quoted elements. The elements are -# quoted with [ and ]. Beginning spaces and end spaces *are kept*. -# Use m4_strip to remove them. -# -# REGEXP specifies where to split. Default is [\t ]+. -# -# If STRING is empty, the result is an empty list. -# -# Pay attention to the m4_changequotes. When m4 reads the definition of -# m4_split, it still has quotes set to [ and ]. Luckily, these are matched -# in the macro body, so the definition is stored correctly. Use the same -# alternate quotes as m4_noquote; it must be unlikely to appear in $1. -# -# Also, notice that $1 is quoted twice, since we want the result to -# be quoted. Then you should understand that the argument of -# patsubst is -=<{(STRING)}>=- (i.e., with additional -=<{( and )}>=-). -# -# This macro is safe on active symbols, i.e.: -# m4_define(active, ACTIVE) -# m4_split([active active ])end -# => [active], [active], []end -# -# Optimize on regex of ` ' (space), since m4_foreach_w already guarantees -# that the list contains single space separators, and a common case is -# splitting a single-element list. This macro is called frequently, -# so avoid unnecessary dnl inside the definition. -m4_define([m4_split], -[m4_if([$1], [], [], - [$2], [ ], [m4_if(m4_index([$1], [ ]), [-1], [[[$1]]], - [_$0([$1], [$2], [, ])])], - [$2], [], [_$0([$1], [[ ]+], [, ])], - [_$0([$1], [$2], [, ])])]) - -m4_define([_m4_split], -[m4_changequote([-=<{(],[)}>=-])]dnl -[[m4_bpatsubst(-=<{(-=<{($1)}>=-)}>=-, -=<{($2)}>=-, - -=<{(]$3[)}>=-)]m4_changequote([, ])]) - - -# m4_chomp(STRING) -# m4_chomp_all(STRING) -# -------------------- -# Return STRING quoted, but without a trailing newline. m4_chomp -# removes at most one newline, while m4_chomp_all removes all -# consecutive trailing newlines. Embedded newlines are not touched, -# and a trailing backslash-newline leaves just a trailing backslash. -# -# m4_bregexp is slower than m4_index, and we don't always want to -# remove all newlines; hence the two variants. We massage characters -# to give a nicer pattern to match, particularly since m4_bregexp is -# line-oriented. Both versions must guarantee a match, to avoid bugs -# with precision -1 in m4_format in older m4. -m4_define([m4_chomp], -[m4_format([[%.*s]], m4_index(m4_translit([[$1]], [ -/.], [/ ])[./.], [/.]), [$1])]) - -m4_define([m4_chomp_all], -[m4_format([[%.*s]], m4_bregexp(m4_translit([[$1]], [ -/], [/ ]), [/*$]), [$1])]) - - -# m4_flatten(STRING) -# ------------------ -# If STRING contains end of lines, replace them with spaces. If there -# are backslashed end of lines, remove them. This macro is safe with -# active symbols. -# m4_define(active, ACTIVE) -# m4_flatten([active -# act\ -# ive])end -# => active activeend -# -# In m4, m4_bpatsubst is expensive, so first check for a newline. -m4_define([m4_flatten], -[m4_if(m4_index([$1], [ -]), [-1], [[$1]], - [m4_translit(m4_bpatsubst([[[$1]]], [\\ -]), [ -], [ ])])]) - - -# m4_strip(STRING) -# ---------------- -# Expands into STRING with tabs and spaces singled out into a single -# space, and removing leading and trailing spaces. -# -# This macro is robust to active symbols. -# m4_define(active, ACTIVE) -# m4_strip([ active active ])end -# => active activeend -# -# First, notice that we guarantee trailing space. Why? Because regular -# expressions are greedy, and `.* ?' would always group the space into the -# .* portion. The algorithm is simpler by avoiding `?' at the end. The -# algorithm correctly strips everything if STRING is just ` '. -# -# Then notice the second pattern: it is in charge of removing the -# leading/trailing spaces. Why not just `[^ ]'? Because they are -# applied to over-quoted strings, i.e. more or less [STRING], due -# to the limitations of m4_bpatsubsts. So the leading space in STRING -# is the *second* character; equally for the trailing space. -m4_define([m4_strip], -[m4_bpatsubsts([$1 ], - [[ ]+], [ ], - [^. ?\(.*\) .$], [[[\1]]])]) - - -# m4_normalize(STRING) -# -------------------- -# Apply m4_flatten and m4_strip to STRING. -# -# The argument is quoted, so that the macro is robust to active symbols: -# -# m4_define(active, ACTIVE) -# m4_normalize([ act\ -# ive -# active ])end -# => active activeend - -m4_define([m4_normalize], -[m4_strip(m4_flatten([$1]))]) - - - -# m4_join(SEP, ARG1, ARG2...) -# --------------------------- -# Produce ARG1SEPARG2...SEPARGn. Avoid back-to-back SEP when a given ARG -# is the empty string. No expansion is performed on SEP or ARGs. -# -# Since the number of arguments to join can be arbitrarily long, we -# want to avoid having more than one $@ in the macro definition; -# otherwise, the expansion would require twice the memory of the already -# long list. Hence, m4_join merely looks for the first non-empty element, -# and outputs just that element; while _m4_join looks for all non-empty -# elements, and outputs them following a separator. The final trick to -# note is that we decide between recursing with $0 or _$0 based on the -# nested m4_if ending with `_'. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift2($@))])]) -m4_define([_m4_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift2($@))])]) - -# m4_joinall(SEP, ARG1, ARG2...) -# ------------------------------ -# Produce ARG1SEPARG2...SEPARGn. An empty ARG results in back-to-back SEP. -# No expansion is performed on SEP or ARGs. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_joinall], [[$2]_$0([$1], m4_shift($@))]) -m4_define([_m4_joinall], -[m4_if([$#], [2], [], [[$1$3]$0([$1], m4_shift2($@))])]) - -# m4_combine([SEPARATOR], PREFIX-LIST, [INFIX], SUFFIX...) -# -------------------------------------------------------- -# Produce the pairwise combination of every element in the quoted, -# comma-separated PREFIX-LIST with every element from the SUFFIX arguments. -# Each pair is joined with INFIX, and pairs are separated by SEPARATOR. -# No expansion occurs on SEPARATOR, INFIX, or elements of either list. -# -# For example: -# m4_combine([, ], [[a], [b], [c]], [-], [1], [2], [3]) -# => a-1, a-2, a-3, b-1, b-2, b-3, c-1, c-2, c-3 -# -# This definition is a bit hairy; the thing to realize is that we want -# to construct m4_map_args_sep([[prefix$3]], [], [[$1]], m4_shift3($@)) -# as the inner loop, using each prefix generated by the outer loop, -# and without recalculating m4_shift3 every outer iteration. -m4_define([m4_combine], -[m4_if([$2], [], [], m4_eval([$# > 3]), [1], -[m4_map_args_sep([m4_map_args_sep(m4_dquote(], [)[[$3]], [], [[$1]],]]]dnl -[m4_dquote(m4_dquote(m4_shift3($@)))[[)], [[$1]], $2)])]) - - -# m4_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR`'STRING' -# at the end. It is valid to use this macro with MACRO-NAME undefined, -# in which case no SEPARATOR is added. Be aware that the criterion is -# `not being defined', and not `not being empty'. -# -# Note that neither STRING nor SEPARATOR are expanded here; rather, when -# you expand MACRO-NAME, they will be expanded at that point in time. -# -# This macro is robust to active symbols. It can be used to grow -# strings. -# -# | m4_define(active, ACTIVE)dnl -# | m4_append([sentence], [This is an])dnl -# | m4_append([sentence], [ active ])dnl -# | m4_append([sentence], [symbol.])dnl -# | sentence -# | m4_undefine([active])dnl -# | sentence -# => This is an ACTIVE symbol. -# => This is an active symbol. -# -# It can be used to define hooks. -# -# | m4_define(active, ACTIVE)dnl -# | m4_append([hooks], [m4_define([act1], [act2])])dnl -# | m4_append([hooks], [m4_define([act2], [active])])dnl -# | m4_undefine([active])dnl -# | act1 -# | hooks -# | act1 -# => act1 -# => -# => active -# -# It can also be used to create lists, although this particular usage was -# broken prior to autoconf 2.62. -# | m4_append([list], [one], [, ])dnl -# | m4_append([list], [two], [, ])dnl -# | m4_append([list], [three], [, ])dnl -# | list -# | m4_dquote(list) -# => one, two, three -# => [one],[two],[three] -# -# Note that m4_append can benefit from amortized O(n) m4 behavior, if -# the underlying m4 implementation is smart enough to avoid copying existing -# contents when enlarging a macro's definition into any pre-allocated storage -# (m4 1.4.x unfortunately does not implement this optimization). We do -# not implement m4_prepend, since it is inherently O(n^2) (pre-allocated -# storage only occurs at the end of a macro, so the existing contents must -# always be moved). -# -# Use _m4_defn for speed. -m4_define([m4_append], -[m4_define([$1], m4_ifdef([$1], [_m4_defn([$1])[$3]])[$2])]) - - -# m4_append_uniq(MACRO-NAME, STRING, [SEPARATOR], [IF-UNIQ], [IF-DUP]) -# -------------------------------------------------------------------- -# Like `m4_append', but append only if not yet present. Additionally, -# expand IF-UNIQ if STRING was appended, or IF-DUP if STRING was already -# present. Also, warn if SEPARATOR is not empty and occurs within STRING, -# as the algorithm no longer guarantees uniqueness. -# -# Note that while m4_append can be O(n) (depending on the quality of the -# underlying M4 implementation), m4_append_uniq is inherently O(n^2) -# because each append operation searches the entire string. -m4_define([m4_append_uniq], -[m4_ifval([$3], [m4_if(m4_index([$2], [$3]), [-1], [], - [m4_warn([syntax], - [$0: `$2' contains `$3'])])])_$0($@)]) -m4_define([_m4_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]_m4_defn([$1])[$3], [$3$2$3]), [-1], - [m4_append([$1], [$2], [$3])$4], [$5])], - [m4_define([$1], [$2])$4])]) - -# m4_append_uniq_w(MACRO-NAME, STRINGS) -# ------------------------------------- -# For each of the words in the whitespace separated list STRINGS, append -# only the unique strings to the definition of MACRO-NAME. -# -# Use _m4_defn for speed. -m4_define([m4_append_uniq_w], -[m4_map_args_w([$2], [_m4_append_uniq([$1],], [, [ ])])]) - - -# m4_escape(STRING) -# ----------------- -# Output quoted STRING, but with embedded #, $, [ and ] turned into -# quadrigraphs. -# -# It is faster to check if STRING is already good using m4_translit -# than to blindly perform four m4_bpatsubst. -# -# Because the translit is stripping quotes, it must also neutralize -# anything that might be in a macro name, as well as comments, commas, -# and parentheses. All the problem characters are unified so that a -# single m4_index can scan the result. -# -# Rather than expand m4_defn every time m4_escape is expanded, we -# inline its expansion up front. -m4_define([m4_escape], -[m4_if(m4_index(m4_translit([$1], - [[]#,()]]m4_dquote(m4_defn([m4_cr_symbols2]))[, [$$$]), [$]), - [-1], [m4_echo], [_$0])([$1])]) - -m4_define([_m4_escape], -[m4_changequote([-=<{(],[)}>=-])]dnl -[m4_bpatsubst(m4_bpatsubst(m4_bpatsubst(m4_bpatsubst( - -=<{(-=<{(-=<{(-=<{(-=<{($1)}>=-)}>=-)}>=-)}>=-)}>=-, - -=<{(#)}>=-, -=<{(@%:@)}>=-), - -=<{(\[)}>=-, -=<{(@<:@)}>=-), - -=<{(\])}>=-, -=<{(@:>@)}>=-), - -=<{(\$)}>=-, -=<{(@S|@)}>=-)m4_changequote([,])]) - - -# m4_text_wrap(STRING, [PREFIX], [FIRST-PREFIX], [WIDTH]) -# ------------------------------------------------------- -# Expands into STRING wrapped to hold in WIDTH columns (default = 79). -# If PREFIX is given, each line is prefixed with it. If FIRST-PREFIX is -# specified, then the first line is prefixed with it. As a special case, -# if the length of FIRST-PREFIX is greater than that of PREFIX, then -# FIRST-PREFIX will be left alone on the first line. -# -# No expansion occurs on the contents STRING, PREFIX, or FIRST-PREFIX, -# although quadrigraphs are correctly recognized. More precisely, -# you may redefine m4_qlen to recognize whatever escape sequences that -# you will post-process. -# -# Typical outputs are: -# -# m4_text_wrap([Short string */], [ ], [/* ], 20) -# => /* Short string */ -# -# m4_text_wrap([Much longer string */], [ ], [/* ], 20) -# => /* Much longer -# => string */ -# -# m4_text_wrap([Short doc.], [ ], [ --short ], 30) -# => --short Short doc. -# -# m4_text_wrap([Short doc.], [ ], [ --too-wide ], 30) -# => --too-wide -# => Short doc. -# -# m4_text_wrap([Super long documentation.], [ ], [ --too-wide ], 30) -# => --too-wide -# => Super long -# => documentation. -# -# FIXME: there is no checking of a longer PREFIX than WIDTH, but do -# we really want to bother with people trying each single corner -# of a software? -# -# This macro does not leave a trailing space behind the last word of a line, -# which complicates it a bit. The algorithm is otherwise stupid and simple: -# all the words are preceded by m4_Separator which is defined to empty for -# the first word, and then ` ' (single space) for all the others. -# -# The algorithm uses a helper that uses $2 through $4 directly, rather than -# using local variables, to avoid m4_defn overhead, or expansion swallowing -# any $. It also bypasses m4_popdef overhead with _m4_popdef since no user -# macro expansion occurs in the meantime. Also, the definition is written -# with m4_do, to avoid time wasted on dnl during expansion (since this is -# already a time-consuming macro). -m4_define([m4_text_wrap], -[_$0(m4_escape([$1]), [$2], m4_default_quoted([$3], [$2]), - m4_default_quoted([$4], [79]))]) - -m4_define([_m4_text_wrap], -m4_do(dnl set up local variables, to avoid repeated calculations -[[m4_pushdef([m4_Indent], m4_qlen([$2]))]], -[[m4_pushdef([m4_Cursor], m4_qlen([$3]))]], -[[m4_pushdef([m4_Separator], [m4_define([m4_Separator], [ ])])]], -dnl expand the first prefix, then check its length vs. regular prefix -dnl same length: nothing special -dnl prefix1 longer: output on line by itself, and reset cursor -dnl prefix1 shorter: pad to length of prefix, and reset cursor -[[[$3]m4_cond([m4_Cursor], m4_Indent, [], - [m4_eval(m4_Cursor > m4_Indent)], [1], [ -[$2]m4_define([m4_Cursor], m4_Indent)], - [m4_format([%*s], m4_max([0], - m4_eval(m4_Indent - m4_Cursor)), [])m4_define([m4_Cursor], m4_Indent)])]], -dnl now, for each word, compute the cursor after the word is output, then -dnl check if the cursor would exceed the wrap column -dnl if so, reset cursor, and insert newline and prefix -dnl if not, insert the separator (usually a space) -dnl either way, insert the word -[[m4_map_args_w([$1], [$0_word(], [, [$2], [$4])])]], -dnl finally, clean up the local variables -[[_m4_popdef([m4_Separator], [m4_Cursor], [m4_Indent])]])) - -m4_define([_m4_text_wrap_word], -[m4_define([m4_Cursor], m4_eval(m4_Cursor + m4_qlen([$1]) + 1))]dnl -[m4_if(m4_eval(m4_Cursor > ([$3])), - [1], [m4_define([m4_Cursor], m4_eval(m4_Indent + m4_qlen([$1]) + 1)) -[$2]], - [m4_Separator[]])[$1]]) - -# m4_text_box(MESSAGE, [FRAME-CHARACTER = `-']) -# --------------------------------------------- -# Turn MESSAGE into: -# ## ------- ## -# ## MESSAGE ## -# ## ------- ## -# using FRAME-CHARACTER in the border. -# -# Quadrigraphs are correctly recognized. More precisely, you may -# redefine m4_qlen to recognize whatever escape sequences that you -# will post-process. -m4_define([m4_text_box], -[m4_pushdef([m4_Border], - m4_translit(m4_format([[[%*s]]], m4_decr(m4_qlen(_m4_expand([$1 -]))), []), [ ], m4_default_quoted([$2], [-])))]dnl -[[##] _m4_defn([m4_Border]) [##] -[##] $1 [##] -[##] _m4_defn([m4_Border]) [##]_m4_popdef([m4_Border])]) - - -# m4_qlen(STRING) -# --------------- -# Expands to the length of STRING after autom4te converts all quadrigraphs. -# -# If you use some other means of post-processing m4 output rather than -# autom4te, then you may redefine this macro to recognize whatever -# escape sequences your post-processor will handle. For that matter, -# m4_define([m4_qlen], m4_defn([m4_len])) is sufficient if you don't -# do any post-processing. -# -# Avoid bpatsubsts for the common case of no quadrigraphs. Cache -# results, as configure scripts tend to ask about lengths of common -# strings like `/*' and `*/' rather frequently. Minimize the number -# of times that $1 occurs in m4_qlen, so there is less text to parse -# on a cache hit. -m4_define([m4_qlen], -[m4_ifdef([$0-$1], [_m4_defn([$0-]], [_$0(])[$1])]) -m4_define([_m4_qlen], -[m4_define([m4_qlen-$1], -m4_if(m4_index([$1], [@]), [-1], [m4_len([$1])], - [m4_len(m4_bpatsubst([[$1]], - [@\(\(<:\|:>\|S|\|%:\|\{:\|:\}\)\(@\)\|&t@\)], - [\3]))]))_m4_defn([m4_qlen-$1])]) - -# m4_copyright_condense(TEXT) -# --------------------------- -# Condense the copyright notice in TEXT to only display the final -# year, wrapping the results to fit in 80 columns. -m4_define([m4_copyright_condense], -[m4_text_wrap(m4_bpatsubst(m4_flatten([[$1]]), -[(C)[- ,0-9]*\([1-9][0-9][0-9][0-9]\)], [(C) \1]))]) - -## ----------------------- ## -## 13. Number processing. ## -## ----------------------- ## - -# m4_cmp(A, B) -# ------------ -# Compare two integer expressions. -# A < B -> -1 -# A = B -> 0 -# A > B -> 1 -m4_define([m4_cmp], -[m4_eval((([$1]) > ([$2])) - (([$1]) < ([$2])))]) - - -# m4_list_cmp(A, B) -# ----------------- -# -# Compare the two lists of integer expressions A and B. For instance: -# m4_list_cmp([1, 0], [1]) -> 0 -# m4_list_cmp([1, 0], [1, 0]) -> 0 -# m4_list_cmp([1, 2], [1, 0]) -> 1 -# m4_list_cmp([1, 2, 3], [1, 2]) -> 1 -# m4_list_cmp([1, 2, -3], [1, 2]) -> -1 -# m4_list_cmp([1, 0], [1, 2]) -> -1 -# m4_list_cmp([1], [1, 2]) -> -1 -# m4_define([xa], [oops])dnl -# m4_list_cmp([[0xa]], [5+5]) -> 0 -# -# Rather than face the overhead of m4_case, we use a helper function whose -# expansion includes the name of the macro to invoke on the tail, either -# m4_ignore or m4_unquote. This is particularly useful when comparing -# long lists, since less text is being expanded for deciding when to end -# recursion. The recursion is between a pair of macros that alternate -# which list is trimmed by one element; this is more efficient than -# calling m4_cdr on both lists from a single macro. Guarantee exactly -# one expansion of both lists' side effects. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_list_cmp], -[_$0_raw(m4_dquote($1), m4_dquote($2))]) - -m4_define([_m4_list_cmp_raw], -[m4_if([$1], [$2], [0], [_m4_list_cmp_1([$1], $2)])]) - -m4_define([_m4_list_cmp], -[m4_if([$1], [], [0m4_ignore], [$2], [0], [m4_unquote], [$2m4_ignore])]) - -m4_define([_m4_list_cmp_1], -[_m4_list_cmp_2([$2], [m4_shift2($@)], $1)]) - -m4_define([_m4_list_cmp_2], -[_m4_list_cmp([$1$3], m4_cmp([$3+0], [$1+0]))( - [_m4_list_cmp_1(m4_dquote(m4_shift3($@)), $2)])]) - -# m4_max(EXPR, ...) -# m4_min(EXPR, ...) -# ----------------- -# Return the decimal value of the maximum (or minimum) in a series of -# integer expressions. -# -# M4 1.4.x doesn't provide ?:. Hence this huge m4_eval. Avoid m4_eval -# if both arguments are identical, but be aware of m4_max(0xa, 10) (hence -# the use of <=, not just <, in the second multiply). -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_max], -[m4_if([$#], [0], [m4_fatal([too few arguments to $0])], - [$#], [1], [m4_eval([$1])], - [$#$1], [2$2], [m4_eval([$1])], - [$#], [2], [_$0($@)], - [_m4_minmax([_$0], $@)])]) - -m4_define([_m4_max], -[m4_eval((([$1]) > ([$2])) * ([$1]) + (([$1]) <= ([$2])) * ([$2]))]) - -m4_define([m4_min], -[m4_if([$#], [0], [m4_fatal([too few arguments to $0])], - [$#], [1], [m4_eval([$1])], - [$#$1], [2$2], [m4_eval([$1])], - [$#], [2], [_$0($@)], - [_m4_minmax([_$0], $@)])]) - -m4_define([_m4_min], -[m4_eval((([$1]) < ([$2])) * ([$1]) + (([$1]) >= ([$2])) * ([$2]))]) - -# _m4_minmax(METHOD, ARG1, ARG2...) -# --------------------------------- -# Common recursion code for m4_max and m4_min. METHOD must be _m4_max -# or _m4_min, and there must be at least two arguments to combine. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([_m4_minmax], -[m4_if([$#], [3], [$1([$2], [$3])], - [$0([$1], $1([$2], [$3]), m4_shift3($@))])]) - - -# m4_sign(A) -# ---------- -# The sign of the integer expression A. -m4_define([m4_sign], -[m4_eval((([$1]) > 0) - (([$1]) < 0))]) - - - -## ------------------------ ## -## 14. Version processing. ## -## ------------------------ ## - - -# m4_version_unletter(VERSION) -# ---------------------------- -# Normalize beta version numbers with letters to numeric expressions, which -# can then be handed to m4_eval for the purpose of comparison. -# -# Nl -> (N+1).-1.(l#) -# -# for example: -# [2.14a] -> [0,2,14+1,-1,[0r36:a]] -> 2.15.-1.10 -# [2.14b] -> [0,2,15+1,-1,[0r36:b]] -> 2.15.-1.11 -# [2.61aa.b] -> [0,2.61,1,-1,[0r36:aa],+1,-1,[0r36:b]] -> 2.62.-1.370.1.-1.11 -# [08] -> [0,[0r10:0]8] -> 8 -# -# This macro expects reasonable version numbers, but can handle double -# letters and does not expand any macros. Original version strings can -# use both `.' and `-' separators. -# -# Inline constant expansions, to avoid m4_defn overhead. -# _m4_version_unletter is the real workhorse used by m4_version_compare, -# but since [0r36:a] and commas are less readable than 10 and dots, we -# provide a wrapper for human use. -m4_define([m4_version_unletter], -[m4_substr(m4_map_args([.m4_eval], m4_unquote(_$0([$1]))), [3])]) -m4_define([_m4_version_unletter], -[m4_bpatsubst(m4_bpatsubst(m4_translit([[[[0,$1]]]], [.-], [,,]),]dnl -m4_dquote(m4_dquote(m4_defn([m4_cr_Letters])))[[+], - [+1,-1,[0r36:\&]]), [,0], [,[0r10:0]])]) - - -# m4_version_compare(VERSION-1, VERSION-2) -# ---------------------------------------- -# Compare the two version numbers and expand into -# -1 if VERSION-1 < VERSION-2 -# 0 if = -# 1 if > -# -# Since _m4_version_unletter does not output side effects, we can -# safely bypass the overhead of m4_version_cmp. -m4_define([m4_version_compare], -[_m4_list_cmp_raw(_m4_version_unletter([$1]), _m4_version_unletter([$2]))]) - - -# m4_PACKAGE_NAME -# m4_PACKAGE_TARNAME -# m4_PACKAGE_VERSION -# m4_PACKAGE_STRING -# m4_PACKAGE_BUGREPORT -# -------------------- -# If m4sugar/version.m4 is present, then define version strings. This -# file is optional, provided by Autoconf but absent in Bison. -m4_sinclude([m4sugar/version.m4]) - - -# m4_version_prereq(VERSION, [IF-OK], [IF-NOT = FAIL]) -# ---------------------------------------------------- -# Check this Autoconf version against VERSION. -m4_define([m4_version_prereq], -m4_ifdef([m4_PACKAGE_VERSION], -[[m4_if(m4_version_compare(]m4_dquote(m4_defn([m4_PACKAGE_VERSION]))[, [$1]), - [-1], - [m4_default([$3], - [m4_fatal([Autoconf version $1 or higher is required], - [63])])], - [$2])]], -[[m4_fatal([m4sugar/version.m4 not found])]])) - - -## ------------------ ## -## 15. Set handling. ## -## ------------------ ## - -# Autoconf likes to create arbitrarily large sets; for example, as of -# this writing, the configure.ac for coreutils tracks a set of more -# than 400 AC_SUBST. How do we track all of these set members, -# without introducing duplicates? We could use m4_append_uniq, with -# the set NAME residing in the contents of the macro NAME. -# Unfortunately, m4_append_uniq is quadratic for set creation, because -# it costs O(n) to search the string for each of O(n) insertions; not -# to mention that with m4 1.4.x, even using m4_append is slow, costing -# O(n) rather than O(1) per insertion. Other set operations, not used -# by Autoconf but still possible by manipulation of the definition -# tracked in macro NAME, include O(n) deletion of one element and O(n) -# computation of set size. Because the set is exposed to the user via -# the definition of a single macro, we cannot cache any data about the -# set without risking the cache being invalidated by the user -# redefining NAME. -# -# Can we do better? Yes, because m4 gives us an O(1) search function -# for free: ifdef. Additionally, even m4 1.4.x gives us an O(1) -# insert operation for free: pushdef. But to use these, we must -# represent the set via a group of macros; to keep the set consistent, -# we must hide the set so that the user can only manipulate it through -# accessor macros. The contents of the set are maintained through two -# access points; _m4_set([name]) is a pushdef stack of values in the -# set, useful for O(n) traversal of the set contents; while the -# existence of _m4_set([name],value) with no particular value is -# useful for O(1) querying of set membership. And since the user -# cannot externally manipulate the set, we are free to add additional -# caching macros for other performance improvements. Deletion can be -# O(1) per element rather than O(n), by reworking the definition of -# _m4_set([name],value) to be 0 or 1 based on current membership, and -# adding _m4_set_cleanup(name) to defer the O(n) cleanup of -# _m4_set([name]) until we have another reason to do an O(n) -# traversal. The existence of _m4_set_cleanup(name) can then be used -# elsewhere to determine if we must dereference _m4_set([name],value), -# or assume that definition implies set membership. Finally, size can -# be tracked in an O(1) fashion with _m4_set_size(name). -# -# The quoting in _m4_set([name],value) is chosen so that there is no -# ambiguity with a set whose name contains a comma, and so that we can -# supply the value via _m4_defn([_m4_set([name])]) without needing any -# quote manipulation. - -# m4_set_add(SET, VALUE, [IF-UNIQ], [IF-DUP]) -# ------------------------------------------- -# Add VALUE as an element of SET. Expand IF-UNIQ on the first -# addition, and IF-DUP if it is already in the set. Addition of one -# element is O(1), such that overall set creation is O(n). -# -# We do not want to add a duplicate for a previously deleted but -# unpruned element, but it is just as easy to check existence directly -# as it is to query _m4_set_cleanup($1). -m4_define([m4_set_add], -[m4_ifdef([_m4_set([$1],$2)], - [m4_if(m4_indir([_m4_set([$1],$2)]), [0], - [m4_define([_m4_set([$1],$2)], - [1])_m4_set_size([$1], [m4_incr])$3], [$4])], - [m4_define([_m4_set([$1],$2)], - [1])m4_pushdef([_m4_set([$1])], - [$2])_m4_set_size([$1], [m4_incr])$3])]) - -# m4_set_add_all(SET, VALUE...) -# ----------------------------- -# Add each VALUE into SET. This is O(n) in the number of VALUEs, and -# can be faster than calling m4_set_add for each VALUE. -# -# Implement two recursion helpers; the check variant is slower but -# handles the case where an element has previously been removed but -# not pruned. The recursion helpers ignore their second argument, so -# that we can use the faster m4_shift2 and 2 arguments, rather than -# _m4_shift2 and one argument, as the signal to end recursion. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_set_add_all], -[m4_define([_m4_set_size($1)], m4_eval(m4_set_size([$1]) - + m4_len(m4_ifdef([_m4_set_cleanup($1)], [_$0_check], [_$0])([$1], $@))))]) - -m4_define([_m4_set_add_all], -[m4_if([$#], [2], [], - [m4_ifdef([_m4_set([$1],$3)], [], - [m4_define([_m4_set([$1],$3)], [1])m4_pushdef([_m4_set([$1])], - [$3])-])$0([$1], m4_shift2($@))])]) - -m4_define([_m4_set_add_all_check], -[m4_if([$#], [2], [], - [m4_set_add([$1], [$3])$0([$1], m4_shift2($@))])]) - -# m4_set_contains(SET, VALUE, [IF-PRESENT], [IF-ABSENT]) -# ------------------------------------------------------ -# Expand IF-PRESENT if SET contains VALUE, otherwise expand IF-ABSENT. -# This is always O(1). -m4_define([m4_set_contains], -[m4_ifdef([_m4_set_cleanup($1)], - [m4_if(m4_ifdef([_m4_set([$1],$2)], - [m4_indir([_m4_set([$1],$2)])], [0]), [1], [$3], [$4])], - [m4_ifdef([_m4_set([$1],$2)], [$3], [$4])])]) - -# m4_set_contents(SET, [SEP]) -# --------------------------- -# Expand to a single string containing all the elements in SET, -# separated by SEP, without modifying SET. No provision is made for -# disambiguating set elements that contain non-empty SEP as a -# sub-string, or for recognizing a set that contains only the empty -# string. Order of the output is not guaranteed. If any elements -# have been previously removed from the set, this action will prune -# the unused memory. This is O(n) in the size of the set before -# pruning. -# -# Use _m4_popdef for speed. The existence of _m4_set_cleanup($1) -# determines which version of _1 helper we use. -m4_define([m4_set_contents], -[m4_set_map_sep([$1], [], [], [[$2]])]) - -# _m4_set_contents_1(SET) -# _m4_set_contents_1c(SET) -# _m4_set_contents_2(SET, [PRE], [POST], [SEP]) -# --------------------------------------------- -# Expand to a list of quoted elements currently in the set, each -# surrounded by PRE and POST, and moving SEP in front of PRE on -# recursion. To avoid nesting limit restrictions, the algorithm must -# be broken into two parts; _1 destructively copies the stack in -# reverse into _m4_set_($1), producing no output; then _2 -# destructively copies _m4_set_($1) back into the stack in reverse. -# If no elements were deleted, then this visits the set in the order -# that elements were inserted. Behavior is undefined if PRE/POST/SEP -# tries to recursively list or modify SET in any way other than -# calling m4_set_remove on the current element. Use _1 if all entries -# in the stack are guaranteed to be in the set, and _1c to prune -# removed entries. Uses _m4_defn and _m4_popdef for speed. -m4_define([_m4_set_contents_1], -[_m4_stack_reverse([_m4_set([$1])], [_m4_set_($1)])]) - -m4_define([_m4_set_contents_1c], -[m4_ifdef([_m4_set([$1])], - [m4_set_contains([$1], _m4_defn([_m4_set([$1])]), - [m4_pushdef([_m4_set_($1)], _m4_defn([_m4_set([$1])]))], - [_m4_popdef([_m4_set([$1],]_m4_defn( - [_m4_set([$1])])[)])])_m4_popdef([_m4_set([$1])])$0([$1])], - [_m4_popdef([_m4_set_cleanup($1)])])]) - -m4_define([_m4_set_contents_2], -[_m4_stack_reverse([_m4_set_($1)], [_m4_set([$1])], - [$2[]_m4_defn([_m4_set_($1)])$3], [$4[]])]) - -# m4_set_delete(SET) -# ------------------ -# Delete all elements in SET, and reclaim any memory occupied by the -# set. This is O(n) in the set size. -# -# Use _m4_defn and _m4_popdef for speed. -m4_define([m4_set_delete], -[m4_ifdef([_m4_set([$1])], - [_m4_popdef([_m4_set([$1],]_m4_defn([_m4_set([$1])])[)], - [_m4_set([$1])])$0([$1])], - [m4_ifdef([_m4_set_cleanup($1)], - [_m4_popdef([_m4_set_cleanup($1)])])m4_ifdef( - [_m4_set_size($1)], - [_m4_popdef([_m4_set_size($1)])])])]) - -# m4_set_difference(SET1, SET2) -# ----------------------------- -# Produce a LIST of quoted elements that occur in SET1 but not SET2. -# Output a comma prior to any elements, to distinguish the empty -# string from no elements. This can be directly used as a series of -# arguments, such as for m4_join, or wrapped inside quotes for use in -# m4_foreach. Order of the output is not guaranteed. -# -# Short-circuit the idempotence relation. -m4_define([m4_set_difference], -[m4_if([$1], [$2], [], [m4_set_map_sep([$1], [_$0([$2],], [)])])]) - -m4_define([_m4_set_difference], -[m4_set_contains([$1], [$2], [], [,[$2]])]) - -# m4_set_dump(SET, [SEP]) -# ----------------------- -# Expand to a single string containing all the elements in SET, -# separated by SEP, then delete SET. In general, if you only need to -# list the contents once, this is faster than m4_set_contents. No -# provision is made for disambiguating set elements that contain -# non-empty SEP as a sub-string. Order of the output is not -# guaranteed. This is O(n) in the size of the set before pruning. -# -# Use _m4_popdef for speed. Use existence of _m4_set_cleanup($1) to -# decide if more expensive recursion is needed. -m4_define([m4_set_dump], -[m4_ifdef([_m4_set_size($1)], - [_m4_popdef([_m4_set_size($1)])])m4_ifdef([_m4_set_cleanup($1)], - [_$0_check], [_$0])([$1], [], [$2])]) - -# _m4_set_dump(SET, [SEP], [PREP]) -# _m4_set_dump_check(SET, [SEP], [PREP]) -# -------------------------------------- -# Print SEP and the current element, then delete the element and -# recurse with empty SEP changed to PREP. The check variant checks -# whether the element has been previously removed. Use _m4_defn and -# _m4_popdef for speed. -m4_define([_m4_set_dump], -[m4_ifdef([_m4_set([$1])], - [[$2]_m4_defn([_m4_set([$1])])_m4_popdef([_m4_set([$1],]_m4_defn( - [_m4_set([$1])])[)], [_m4_set([$1])])$0([$1], [$2$3])])]) - -m4_define([_m4_set_dump_check], -[m4_ifdef([_m4_set([$1])], - [m4_set_contains([$1], _m4_defn([_m4_set([$1])]), - [[$2]_m4_defn([_m4_set([$1])])])_m4_popdef( - [_m4_set([$1],]_m4_defn([_m4_set([$1])])[)], - [_m4_set([$1])])$0([$1], [$2$3])], - [_m4_popdef([_m4_set_cleanup($1)])])]) - -# m4_set_empty(SET, [IF-EMPTY], [IF-ELEMENTS]) -# -------------------------------------------- -# Expand IF-EMPTY if SET has no elements, otherwise IF-ELEMENTS. -m4_define([m4_set_empty], -[m4_ifdef([_m4_set_size($1)], - [m4_if(m4_indir([_m4_set_size($1)]), [0], [$2], [$3])], [$2])]) - -# m4_set_foreach(SET, VAR, ACTION) -# -------------------------------- -# For each element of SET, define VAR to the element and expand -# ACTION. ACTION should not recursively list SET's contents, add -# elements to SET, nor delete any element from SET except the one -# currently in VAR. The order that the elements are visited in is not -# guaranteed. This is faster than the corresponding m4_foreach([VAR], -# m4_indir([m4_dquote]m4_set_listc([SET])), [ACTION]) -m4_define([m4_set_foreach], -[m4_pushdef([$2])m4_set_map_sep([$1], [m4_define([$2],], [)$3])]) - -# m4_set_intersection(SET1, SET2) -# ------------------------------- -# Produce a LIST of quoted elements that occur in both SET1 or SET2. -# Output a comma prior to any elements, to distinguish the empty -# string from no elements. This can be directly used as a series of -# arguments, such as for m4_join, or wrapped inside quotes for use in -# m4_foreach. Order of the output is not guaranteed. -# -# Iterate over the smaller set, and short-circuit the idempotence -# relation. -m4_define([m4_set_intersection], -[m4_if([$1], [$2], [m4_set_listc([$1])], - m4_eval(m4_set_size([$2]) < m4_set_size([$1])), [1], [$0([$2], [$1])], - [m4_set_map_sep([$1], [_$0([$2],], [)])])]) - -m4_define([_m4_set_intersection], -[m4_set_contains([$1], [$2], [,[$2]])]) - -# m4_set_list(SET) -# m4_set_listc(SET) -# ----------------- -# Produce a LIST of quoted elements of SET. This can be directly used -# as a series of arguments, such as for m4_join or m4_set_add_all, or -# wrapped inside quotes for use in m4_foreach or m4_map. With -# m4_set_list, there is no way to distinguish an empty set from a set -# containing only the empty string; with m4_set_listc, a leading comma -# is output if there are any elements. -m4_define([m4_set_list], -[m4_set_map_sep([$1], [], [], [,])]) - -m4_define([m4_set_listc], -[m4_set_map_sep([$1], [,])]) - -# m4_set_map(SET, ACTION) -# ----------------------- -# For each element of SET, expand ACTION with a single argument of the -# current element. ACTION should not recursively list SET's contents, -# add elements to SET, nor delete any element from SET except the one -# passed as an argument. The order that the elements are visited in -# is not guaranteed. This is faster than either of the corresponding -# m4_map_args([ACTION]m4_set_listc([SET])) -# m4_set_foreach([SET], [VAR], [ACTION(m4_defn([VAR]))]) -m4_define([m4_set_map], -[m4_set_map_sep([$1], [$2(], [)])]) - -# m4_set_map_sep(SET, [PRE], [POST], [SEP]) -# ----------------------------------------- -# For each element of SET, expand PRE[value]POST[], and expand SEP -# between elements. -m4_define([m4_set_map_sep], -[m4_ifdef([_m4_set_cleanup($1)], [_m4_set_contents_1c], - [_m4_set_contents_1])([$1])_m4_set_contents_2($@)]) - -# m4_set_remove(SET, VALUE, [IF-PRESENT], [IF-ABSENT]) -# ---------------------------------------------------- -# If VALUE is an element of SET, delete it and expand IF-PRESENT. -# Otherwise expand IF-ABSENT. Deleting a single value is O(1), -# although it leaves memory occupied until the next O(n) traversal of -# the set which will compact the set. -# -# Optimize if the element being removed is the most recently added, -# since defining _m4_set_cleanup($1) slows down so many other macros. -# In particular, this plays well with m4_set_foreach and m4_set_map. -m4_define([m4_set_remove], -[m4_set_contains([$1], [$2], [_m4_set_size([$1], - [m4_decr])m4_if(_m4_defn([_m4_set([$1])]), [$2], - [_m4_popdef([_m4_set([$1],$2)], [_m4_set([$1])])], - [m4_define([_m4_set_cleanup($1)])m4_define( - [_m4_set([$1],$2)], [0])])$3], [$4])]) - -# m4_set_size(SET) -# ---------------- -# Expand to the number of elements currently in SET. This operation -# is O(1), and thus more efficient than m4_count(m4_set_list([SET])). -m4_define([m4_set_size], -[m4_ifdef([_m4_set_size($1)], [m4_indir([_m4_set_size($1)])], [0])]) - -# _m4_set_size(SET, ACTION) -# ------------------------- -# ACTION must be either m4_incr or m4_decr, and the size of SET is -# changed accordingly. If the set is empty, ACTION must not be -# m4_decr. -m4_define([_m4_set_size], -[m4_define([_m4_set_size($1)], - m4_ifdef([_m4_set_size($1)], [$2(m4_indir([_m4_set_size($1)]))], - [1]))]) - -# m4_set_union(SET1, SET2) -# ------------------------ -# Produce a LIST of double quoted elements that occur in either SET1 -# or SET2, without duplicates. Output a comma prior to any elements, -# to distinguish the empty string from no elements. This can be -# directly used as a series of arguments, such as for m4_join, or -# wrapped inside quotes for use in m4_foreach. Order of the output is -# not guaranteed. -# -# We can rely on the fact that m4_set_listc prunes SET1, so we don't -# need to check _m4_set([$1],element) for 0. Short-circuit the -# idempotence relation. -m4_define([m4_set_union], -[m4_set_listc([$1])m4_if([$1], [$2], [], - [m4_set_map_sep([$2], [_$0([$1],], [)])])]) - -m4_define([_m4_set_union], -[m4_ifdef([_m4_set([$1],$2)], [], [,[$2]])]) - - -## ------------------- ## -## 16. File handling. ## -## ------------------- ## - - -# It is a real pity that M4 comes with no macros to bind a diversion -# to a file. So we have to deal without, which makes us a lot more -# fragile than we should. - - -# m4_file_append(FILE-NAME, CONTENT) -# ---------------------------------- -m4_define([m4_file_append], -[m4_syscmd([cat >>$1 <<_m4eof -$2 -_m4eof -]) -m4_if(m4_sysval, [0], [], - [m4_fatal([$0: cannot write: $1])])]) - - - -## ------------------------ ## -## 17. Setting M4sugar up. ## -## ------------------------ ## - -# _m4_divert_diversion should be defined. -m4_divert_push([KILL]) - -# m4_init -# ------- -# Initialize the m4sugar language. -m4_define([m4_init], -[# All the M4sugar macros start with `m4_', except `dnl' kept as is -# for sake of simplicity. -m4_pattern_forbid([^_?m4_]) -m4_pattern_forbid([^dnl$]) - -# If __m4_version__ is defined, we assume that we are being run by M4 -# 1.6 or newer, thus $@ recursion is linear, and debugmode(+do) -# is available for faster checks of dereferencing undefined macros -# and forcing dumpdef to print to stderr regardless of debugfile. -# But if it is missing, we assume we are being run by M4 1.4.x, that -# $@ recursion is quadratic, and that we need foreach-based -# replacement macros. Also, m4 prior to 1.4.8 loses track of location -# during m4wrap text; __line__ should never be 0. -# -# Use the raw builtin to avoid tripping up include tracing. -# Meanwhile, avoid m4_copy, since it temporarily undefines m4_defn. -m4_ifdef([__m4_version__], -[m4_debugmode([+do]) -m4_define([m4_defn], _m4_defn([_m4_defn])) -m4_define([m4_dumpdef], _m4_defn([_m4_dumpdef])) -m4_define([m4_popdef], _m4_defn([_m4_popdef])) -m4_define([m4_undefine], _m4_defn([_m4_undefine]))], -[m4_builtin([include], [m4sugar/foreach.m4]) -m4_wrap_lifo([m4_if(__line__, [0], [m4_pushdef([m4_location], -]]m4_dquote(m4_dquote(m4_dquote(__file__:__line__)))[[)])])]) - -# Rewrite the first entry of the diversion stack. -m4_divert([KILL]) - -# Check the divert push/pop perfect balance. -# Some users are prone to also use m4_wrap to register last-minute -# m4_divert_text; so after our diversion cleanups, we restore -# KILL as the bottom of the diversion stack. -m4_wrap([m4_popdef([_m4_divert_diversion])m4_ifdef( - [_m4_divert_diversion], [m4_fatal([$0: unbalanced m4_divert_push: -]m4_divert_stack)])_m4_popdef([_m4_divert_stack])m4_divert_push([KILL])]) -]) diff --git a/tools/data/stack.hh b/tools/data/stack.hh deleted file mode 100644 index e4e8df0a..00000000 --- a/tools/data/stack.hh +++ /dev/null @@ -1,121 +0,0 @@ -# C++ skeleton for Bison - -# Copyright (C) 2002-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_pushdef([b4_copyright_years], - [2002-2012]) - -b4_output_begin([b4_dir_prefix[]stack.hh]) -b4_copyright([Stack handling for Bison parsers in C++], - [2002-2012])[ - -/** - ** \file ]b4_dir_prefix[stack.hh - ** Define the ]b4_namespace_ref[::stack class. - */ - -]b4_cpp_guard_open([b4_dir_prefix[]stack.hh])[ - -# include - -]b4_namespace_open[ - template > - class stack - { - public: - // Hide our reversed order. - typedef typename S::reverse_iterator iterator; - typedef typename S::const_reverse_iterator const_iterator; - - stack () : seq_ () - { - } - - stack (unsigned int n) : seq_ (n) - { - } - - inline - T& - operator [] (unsigned int i) - { - return seq_[i]; - } - - inline - const T& - operator [] (unsigned int i) const - { - return seq_[i]; - } - - inline - void - push (const T& t) - { - seq_.push_front (t); - } - - inline - void - pop (unsigned int n = 1) - { - for (; n; --n) - seq_.pop_front (); - } - - inline - unsigned int - height () const - { - return seq_.size (); - } - - inline const_iterator begin () const { return seq_.rbegin (); } - inline const_iterator end () const { return seq_.rend (); } - - private: - S seq_; - }; - - /// Present a slice of the top of a stack. - template > - class slice - { - public: - slice (const S& stack, unsigned int range) - : stack_ (stack) - , range_ (range) - { - } - - inline - const T& - operator [] (unsigned int i) const - { - return stack_[range_ - i]; - } - - private: - const S& stack_; - unsigned int range_; - }; -]b4_namespace_close[ - -]b4_cpp_guard_close([b4_dir_prefix[]stack.hh]) -b4_output_end() - -m4_popdef([b4_copyright_years]) diff --git a/tools/data/xslt/bison.xsl b/tools/data/xslt/bison.xsl deleted file mode 100644 index e661b3f5..00000000 --- a/tools/data/xslt/bison.xsl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - s - - - r - - - - - - , - - - - - 0 - - - - - - - - - - - diff --git a/tools/data/xslt/xml2dot.xsl b/tools/data/xslt/xml2dot.xsl deleted file mode 100644 index 87d4e07c..00000000 --- a/tools/data/xslt/xml2dot.xsl +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - - - - - - - - - // Generated by GNU Bison - - . - // Report bugs to < - - >. - // Home page: < - - >. - - - - - - - - digraph " - - - - " { - node [fontname = courier, shape = box, colorscheme = paired6] - edge [fontname = courier] - - - - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - label="[ - - - - - - , - - - ]", - - - - style=solid] - - - - - - - - - 3 - - - 5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - - - - . - - - - - . - - - - - - - - - - - - - [ - - ] - - - - - - , - - - - - - - - - - - -> " - - R - - - d - - " [ - - - - - - - - " - - R - - - d - - " [label=" - - - Acc", fillcolor=1 - - - R - - ", fillcolor= - - - - , shape=diamond, style=filled] - - - - - - - - - - dotted - - - solid - - - dashed - - - - - - - - - - - - - - - - - [label=" - State - - \n - - - - \l"] - - - - - - - - - - -> - - [style= - - - label=" - - - - " - - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/data/xslt/xml2text.xsl b/tools/data/xslt/xml2text.xsl deleted file mode 100644 index 5af94613..00000000 --- a/tools/data/xslt/xml2text.xsl +++ /dev/null @@ -1,569 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nonterminals useless in grammar - - - - - - - - - - - - Terminals unused in grammar - - - - - - - - - - - - - - Rules useless in grammar - - - - - - - - - - - Rules useless in parser due to conflicts - - - - - - - - - Grammar - - - - - - - - - - - - - - - - - - - - - - - - - Terminals, with rules where they appear - - - - - - Nonterminals, with rules where they appear - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - on@left: - - - - - - - , - - on@right: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - State - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - - - - - - - . - - - - - - - - - . - - - - - - - - - - - - - - - - /* empty */ - - - - [ - - ] - - - - - - , - - - - - - - - - - - - - shift, and go to state - - - - go to state - - - - - - - - - - - - - - error - ( - - ) - - - - - - - - - - - - [ - - - - accept - - - reduce using rule - - ( - - ) - - - - ] - - - - - - - - - - - - - Conflict between rule - - and token - - resolved as - - an - - - ( - - ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/data/xslt/xml2xhtml.xsl b/tools/data/xslt/xml2xhtml.xsl deleted file mode 100644 index 22033c61..00000000 --- a/tools/data/xslt/xml2xhtml.xsl +++ /dev/null @@ -1,745 +0,0 @@ - - - - - - - - - - - - - - - <xsl:value-of select="bison-xml-report/filename"/> - <xsl:text> - GNU Bison XML Automaton Report</xsl:text> - - - - - - -

- - - - - -

GNU Bison XML Automaton Report

-

- input grammar: -

- - -

Table of Contents

- - - - - - -
- - -

- - Reductions -

- - - -
- - -

- - Nonterminals useless in grammar -

- - -

- - - - - - -

-
- - - -

- - Terminals unused in grammar -

- - -

- - - - - - - -

-
- - - -

- - Rules useless in grammar -

- - - -

- - - - -

-
- - - - - -

- - Rules useless in parser due to conflicts -

- -

- - - -

- - - - - -

- - Grammar -

- -

- - - -

- - - - - - - - - - - - - - - - - - - - - -

- - Conflicts -

- - - - - -

- - -

-
- - - - - - - - - -
- - - - - - conflicts: - - - - - - - - - - - - - - -

- - Terminals, with rules where they appear -

- -

- -

- -
- - -

- - Nonterminals, with rules where they appear -

- -

- -

- - - - - - - - - - - - - - - - - on left: - - - - - - - - - on right: - - - - - - - - - -
- - - - - - - - -

- - Automaton -

- - - -
- - - - -

- - - - - - state - -

- -

- - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - ε - - - - [ - - ] - - - - - - , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - error - ( - - ) - - - - - - - - - - - - [ - - - - accept - - - - - - - - - ( - - ) - - - - ] - - - - - - - - - - - - - Conflict between - - - - - - - and token - - resolved as - - an - - - ( - - ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - diff --git a/tools/data/yacc.c b/tools/data/yacc.c deleted file mode 100644 index b34549f1..00000000 --- a/tools/data/yacc.c +++ /dev/null @@ -1,2065 +0,0 @@ - -*- C -*- - -# Yacc compatible skeleton for Bison - -# Copyright (C) 1984, 1989-1990, 2000-2012 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 -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Check the value of %define api.push-pull. -b4_percent_define_default([[api.push-pull]], [[pull]]) -b4_percent_define_check_values([[[[api.push-pull]], - [[pull]], [[push]], [[both]]]]) -b4_define_flag_if([pull]) m4_define([b4_pull_flag], [[1]]) -b4_define_flag_if([push]) m4_define([b4_push_flag], [[1]]) -m4_case(b4_percent_define_get([[api.push-pull]]), - [pull], [m4_define([b4_push_flag], [[0]])], - [push], [m4_define([b4_pull_flag], [[0]])]) - -# Handle BISON_USE_PUSH_FOR_PULL for the test suite. So that push parsing -# tests function as written, do not let BISON_USE_PUSH_FOR_PULL modify the -# behavior of Bison at all when push parsing is already requested. -b4_define_flag_if([use_push_for_pull]) -b4_use_push_for_pull_if([ - b4_push_if([m4_define([b4_use_push_for_pull_flag], [[0]])], - [m4_define([b4_push_flag], [[1]])])]) - -# Check the value of %define parse.lac and friends, where LAC stands for -# lookahead correction. -b4_percent_define_default([[parse.lac]], [[none]]) -b4_percent_define_default([[parse.lac.es-capacity-initial]], [[20]]) -b4_percent_define_default([[parse.lac.memory-trace]], [[failures]]) -b4_percent_define_check_values([[[[parse.lac]], [[full]], [[none]]]], - [[[[parse.lac.memory-trace]], - [[failures]], [[full]]]]) -b4_define_flag_if([lac]) -m4_define([b4_lac_flag], - [m4_if(b4_percent_define_get([[parse.lac]]), - [none], [[0]], [[1]])]) - -m4_include(b4_pkgdatadir/[c.m4]) - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# Stack parameters. -m4_define_default([b4_stack_depth_max], [10000]) -m4_define_default([b4_stack_depth_init], [200]) - - -## ------------------------ ## -## Pure/impure interfaces. ## -## ------------------------ ## - -b4_percent_define_default([[api.pure]], [[false]]) -b4_percent_define_check_values([[[[api.pure]], - [[false]], [[true]], [[]], [[full]]]]) - -m4_define([b4_pure_flag], [[0]]) -m4_case(b4_percent_define_get([[api.pure]]), - [false], [m4_define([b4_pure_flag], [[0]])], - [true], [m4_define([b4_pure_flag], [[1]])], - [], [m4_define([b4_pure_flag], [[1]])], - [full], [m4_define([b4_pure_flag], [[2]])]) - -m4_define([b4_pure_if], -[m4_case(b4_pure_flag, - [0], [$2], - [1], [$1], - [2], [$1])]) - [m4_fatal([invalid api.pure value: ]$1)])]) - -# b4_yyerror_arg_loc_if(ARG) -# -------------------------- -# Expand ARG iff yyerror is to be given a location as argument. -m4_define([b4_yyerror_arg_loc_if], -[b4_locations_if([m4_case(b4_pure_flag, - [1], [m4_ifset([b4_parse_param], [$1])], - [2], [$1])])]) - -# b4_yyerror_args -# --------------- -# Arguments passed to yyerror: user args plus yylloc. -m4_define([b4_yyerror_args], -[b4_yyerror_arg_loc_if([&yylloc, ])dnl -m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) - - -# b4_lex_param -# ------------ -# Accumulate in b4_lex_param all the yylex arguments. -# b4_lex_param arrives quoted twice, but we want to keep only one level. -m4_define([b4_lex_param], -m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl -b4_locations_if([, [[YYLTYPE *], [&yylloc]]])m4_ifdef([b4_lex_param], [, ])])dnl -m4_ifdef([b4_lex_param], b4_lex_param))) - - -## ------------ ## -## Data Types. ## -## ------------ ## - -# b4_int_type(MIN, MAX) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# MIN to MAX (included). Overwrite the version from c.m4, which -# uses only C89 types, so that the user can override the shorter -# types, and so that pre-C89 compilers are handled correctly. -m4_define([b4_int_type], -[m4_if(b4_ints_in($@, [0], [255]), [1], [yytype_uint8], - b4_ints_in($@, [-128], [127]), [1], [yytype_int8], - - b4_ints_in($@, [0], [65535]), [1], [yytype_uint16], - b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16], - - m4_eval([0 <= $1]), [1], [unsigned int], - - [int])]) - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], -[(yyval[]m4_ifval([$1], [.$1]))]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -m4_define([b4_rhs_value], -[(yyvsp@{($2) - ($1)@}m4_ifval([$3], [.$3]))]) - - - -## ----------- ## -## Locations. ## -## ----------- ## - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(yyloc)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[(yylsp@{($2) - ($1)@})]) - - -## -------------- ## -## Declarations. ## -## -------------- ## - -# b4_declare_scanner_communication_variables -# ------------------------------------------ -# Declare the variables that are global, or local to YYPARSE if -# pure-parser. -m4_define([b4_declare_scanner_communication_variables], [[ -/* The lookahead symbol. */ -int yychar; - -]b4_pure_if([[ -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -/* Default value used for initialization, for pacifying older GCCs - or non-GCC compilers. */ -static YYSTYPE yyval_default; -# define YY_INITIAL_VALUE(Value) = Value -#endif]b4_locations_if([[ -static YYLTYPE yyloc_default][]b4_yyloc_default[;]])])[ -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);]b4_locations_if([[ - -/* Location data for the lookahead symbol. */ -YYLTYPE yylloc]b4_pure_if([ = yyloc_default], [b4_yyloc_default])[; -]])b4_pure_if([], [[ - -/* Number of syntax errors so far. */ -int yynerrs;]])]) - - -# b4_declare_parser_state_variables -# --------------------------------- -# Declare all the variables that are needed to maintain the parser state -# between calls to yypush_parse. -m4_define([b4_declare_parser_state_variables], [b4_pure_if([[ - /* Number of syntax errors so far. */ - int yynerrs; -]])[ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values.]b4_locations_if([[ - `yyls': related to locations.]])[ - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp;]b4_locations_if([[ - - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls; - YYLTYPE *yylsp; - - /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[3];]])[ - - YYSIZE_T yystacksize;]b4_lac_if([[ - - yytype_int16 yyesa@{]b4_percent_define_get([[parse.lac.es-capacity-initial]])[@}; - yytype_int16 *yyes; - YYSIZE_T yyes_capacity;]])]) - - -# b4_declare_yyparse_push_ -# ------------------------ -# Declaration of yyparse (and dependencies) when using the push parser -# (including in pull mode). -m4_define([b4_declare_yyparse_push_], -[[#ifndef YYPUSH_MORE_DEFINED -# define YYPUSH_MORE_DEFINED -enum { YYPUSH_MORE = 4 }; -#endif - -typedef struct ]b4_prefix[pstate ]b4_prefix[pstate; - -]b4_pull_if([b4_c_function_decl([b4_prefix[parse]], [[int]], b4_parse_param) -])b4_c_function_decl([b4_prefix[push_parse]], [[int]], - [[b4_prefix[pstate *ps]], [[ps]]]b4_pure_if([, - [[[int pushed_char]], [[pushed_char]]], - [[b4_api_PREFIX[STYPE const *pushed_val]], [[pushed_val]]]b4_locations_if([, - [[b4_api_PREFIX[LTYPE *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [, - b4_parse_param])) -b4_pull_if([b4_c_function_decl([b4_prefix[pull_parse]], [[int]], - [[b4_prefix[pstate *ps]], [[ps]]]m4_ifset([b4_parse_param], [, - b4_parse_param]))]) -b4_c_function_decl([b4_prefix[pstate_new]], [b4_prefix[pstate *]], - [[[void]], []]) -b4_c_function_decl([b4_prefix[pstate_delete]], [[void]], - [[b4_prefix[pstate *ps]], [[ps]]])dnl -]) - -# b4_declare_yyparse_ -# ------------------- -# When not the push parser. -m4_define([b4_declare_yyparse_], -[[#ifdef YYPARSE_PARAM -]b4_c_function_decl(b4_prefix[parse], [int], - [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[ -#else /* ! YYPARSE_PARAM */ -]b4_c_function_decl(b4_prefix[parse], [int], b4_parse_param)[ -#endif /* ! YYPARSE_PARAM */]dnl -]) - - -# b4_declare_yyparse -# ------------------ -m4_define([b4_declare_yyparse], -[b4_push_if([b4_declare_yyparse_push_], - [b4_declare_yyparse_])[]dnl -]) - - -# b4_shared_declarations -# ---------------------- -# Declaration that might either go into the header (if --defines) -# or open coded in the parser body. -m4_define([b4_shared_declarations], -[b4_cpp_guard_open([b4_spec_defines_file])[ -]b4_declare_yydebug[ -]b4_percent_code_get([[requires]])[ -]b4_token_enums_defines(b4_tokens)[ -]b4_declare_yylstype[ -]b4_declare_yyparse[ -]b4_percent_code_get([[provides]])[ -]b4_cpp_guard_close([b4_spec_defines_file])[]dnl -]) - - -## -------------- ## -## Output files. ## -## -------------- ## - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Bison implementation for Yacc-like parsers in C], - [1984, 1989-1990, 2000-2012])[ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -]b4_identification -b4_percent_code_get([[top]])[]dnl -m4_if(b4_api_prefix, [yy], [], -[[/* Substitute the type names. */ -#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[ -#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[ -]m4_if(b4_prefix, [yy], [], -[[/* Substitute the variable and function names. */]b4_pull_if([[ -#define yyparse ]b4_prefix[parse]])b4_push_if([[ -#define yypush_parse ]b4_prefix[push_parse]b4_pull_if([[ -#define yypull_parse ]b4_prefix[pull_parse]])[ -#define yypstate_new ]b4_prefix[pstate_new -#define yypstate_delete ]b4_prefix[pstate_delete -#define yypstate ]b4_prefix[pstate]])[ -#define yylex ]b4_prefix[lex -#define yyerror ]b4_prefix[error -#define yylval ]b4_prefix[lval -#define yychar ]b4_prefix[char -#define yydebug ]b4_prefix[debug -#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[ -#define yylloc ]b4_prefix[lloc]])])[ - -/* Copy the first part of user declarations. */ -]b4_user_pre_prologue[ - -]b4_null_define[ - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ -#endif - -]m4_ifval(m4_quote(b4_spec_defines_file), -[[/* In a future release of Bison, this section will be replaced - by #include "@basename(]b4_spec_defines_file[@)". */ -]])dnl -b4_shared_declarations[ - -/* Copy the second part of user declarations. */ -]b4_user_post_prologue -b4_percent_code_get[]dnl - -[#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif ]b4_c_modern[ -typedef signed char yytype_int8; -#else -typedef short int yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T && ]b4_c_modern[ -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -]b4_c_function_def([YYID], [static int], [[int yyi], [yyi]])[ -{ - return yyi; -} -#endif - -#if ]b4_lac_if([[1]], [[! defined yyoverflow || YYERROR_VERBOSE]])[ - -/* The parser invokes alloca or malloc; define the necessary symbols. */]dnl -b4_push_if([], [b4_lac_if([], [[ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && ]b4_c_modern[ -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif]])])[ - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && ]b4_c_modern[ -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && ]b4_c_modern[ -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif]b4_lac_if([[ -# define YYCOPY_NEEDED 1]])[ -#endif]b4_lac_if([], [[ /* ! defined yyoverflow || YYERROR_VERBOSE */]])[ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \ - && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc;]b4_locations_if([ - YYLTYPE yyls_alloc;])[ -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -]b4_locations_if( -[# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ - + 2 * YYSTACK_GAP_MAXIMUM)], -[# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM)])[ - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL ]b4_final_state_number[ -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST ]b4_last[ - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS ]b4_tokens_number[ -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS ]b4_nterms_number[ -/* YYNRULES -- Number of rules. */ -#define YYNRULES ]b4_rules_number[ -/* YYNRULES -- Number of states. */ -#define YYNSTATES ]b4_states_number[ - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK ]b4_undef_token_number[ -#define YYMAXUTOK ]b4_user_token_number_max[ - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const ]b4_int_type_for([b4_translate])[ yytranslate[] = -{ - ]b4_translate[ -}; - -#if ]b4_api_PREFIX[DEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const ]b4_int_type_for([b4_prhs])[ yyprhs[] = -{ - ]b4_prhs[ -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const ]b4_int_type_for([b4_rhs])[ yyrhs[] = -{ - ]b4_rhs[ -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const ]b4_int_type_for([b4_rline])[ yyrline[] = -{ - ]b4_rline[ -}; -#endif - -#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[ -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - ]b4_tname[ -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const ]b4_int_type_for([b4_toknum])[ yytoknum[] = -{ - ]b4_toknum[ -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const ]b4_int_type_for([b4_r1])[ yyr1[] = -{ - ]b4_r1[ -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const ]b4_int_type_for([b4_r2])[ yyr2[] = -{ - ]b4_r2[ -}; - -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const ]b4_int_type_for([b4_defact])[ yydefact[] = -{ - ]b4_defact[ -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] = -{ - ]b4_defgoto[ -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF ]b4_pact_ninf[ -static const ]b4_int_type_for([b4_pact])[ yypact[] = -{ - ]b4_pact[ -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] = -{ - ]b4_pgoto[ -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF ]b4_table_ninf[ -static const ]b4_int_type_for([b4_table])[ yytable[] = -{ - ]b4_table[ -}; - -#define yypact_value_is_default(Yystate) \ - ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[ - -#define yytable_value_is_error(Yytable_value) \ - ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[ - -static const ]b4_int_type_for([b4_check])[ yycheck[] = -{ - ]b4_check[ -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const ]b4_int_type_for([b4_stos])[ yystos[] = -{ - ]b4_stos[ -}; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \]b4_lac_if([[ - YY_LAC_DISCARD ("YYBACKUP"); \]])[ - goto yybackup; \ - } \ - else \ - { \ - yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - -]b4_locations_if([[ -]b4_yylloc_default_define[ -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -]])[ -]b4_yy_location_print_define[ - -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM) -#else -# define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ -#endif - -/* Enable debugging if requested. */ -#if ]b4_api_PREFIX[DEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value]b4_locations_if([, Location])[]b4_user_args[); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - -]b4_yy_symbol_print_generate([b4_c_function_def])[ - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -]b4_c_function_def([yy_stack_print], [static void], - [[yytype_int16 *yybottom], [yybottom]], - [[yytype_int16 *yytop], [yytop]])[ -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -]b4_c_function_def([yy_reduce_print], [static void], - [[YYSTYPE *yyvsp], [yyvsp]], - b4_locations_if([[[YYLTYPE *yylsp], [yylsp]], - ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [, - b4_parse_param]))[ -{ - int yynrhs = yyr2[yyrule]; - int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &]b4_rhs_value(yynrhs, yyi + 1)[ - ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl - b4_user_args[); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \ -} while (YYID (0)) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !]b4_api_PREFIX[DEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !]b4_api_PREFIX[DEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH ]b4_stack_depth_init[ -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH ]b4_stack_depth_max[ -#endif]b4_lac_if([[ - -/* Given a state stack such that *YYBOTTOM is its bottom, such that - *YYTOP is either its top or is YYTOP_EMPTY to indicate an empty - stack, and such that *YYCAPACITY is the maximum number of elements it - can hold without a reallocation, make sure there is enough room to - store YYADD more elements. If not, allocate a new stack using - YYSTACK_ALLOC, copy the existing elements, and adjust *YYBOTTOM, - *YYTOP, and *YYCAPACITY to reflect the new capacity and memory - location. If *YYBOTTOM != YYBOTTOM_NO_FREE, then free the old stack - using YYSTACK_FREE. Return 0 if successful or if no reallocation is - required. Return 1 if memory is exhausted. */ -static int -yy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd, -#if ]b4_api_PREFIX[DEBUG - char const *yydebug_prefix, - char const *yydebug_suffix, -#endif - yytype_int16 **yybottom, - yytype_int16 *yybottom_no_free, - yytype_int16 **yytop, yytype_int16 *yytop_empty) -{ - YYSIZE_T yysize_old = - *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1; - YYSIZE_T yysize_new = yysize_old + yyadd; - if (*yycapacity < yysize_new) - { - YYSIZE_T yyalloc = 2 * yysize_new; - yytype_int16 *yybottom_new; - /* Use YYMAXDEPTH for maximum stack size given that the stack - should never need to grow larger than the main state stack - needs to grow without LAC. */ - if (YYMAXDEPTH < yysize_new) - { - YYDPRINTF ((stderr, "%smax size exceeded%s", yydebug_prefix, - yydebug_suffix)); - return 1; - } - if (YYMAXDEPTH < yyalloc) - yyalloc = YYMAXDEPTH; - yybottom_new = - (yytype_int16*) YYSTACK_ALLOC (yyalloc * sizeof *yybottom_new); - if (!yybottom_new) - { - YYDPRINTF ((stderr, "%srealloc failed%s", yydebug_prefix, - yydebug_suffix)); - return 1; - } - if (*yytop != yytop_empty) - { - YYCOPY (yybottom_new, *yybottom, yysize_old); - *yytop = yybottom_new + (yysize_old - 1); - } - if (*yybottom != yybottom_no_free) - YYSTACK_FREE (*yybottom); - *yybottom = yybottom_new; - *yycapacity = yyalloc;]m4_if(b4_percent_define_get([[parse.lac.memory-trace]]), - [full], [[ - YYDPRINTF ((stderr, "%srealloc to %lu%s", yydebug_prefix, - (unsigned long int) yyalloc, yydebug_suffix));]])[ - } - return 0; -} - -/* Establish the initial context for the current lookahead if no initial - context is currently established. - - We define a context as a snapshot of the parser stacks. We define - the initial context for a lookahead as the context in which the - parser initially examines that lookahead in order to select a - syntactic action. Thus, if the lookahead eventually proves - syntactically unacceptable (possibly in a later context reached via a - series of reductions), the initial context can be used to determine - the exact set of tokens that would be syntactically acceptable in the - lookahead's place. Moreover, it is the context after which any - further semantic actions would be erroneous because they would be - determined by a syntactically unacceptable token. - - YY_LAC_ESTABLISH should be invoked when a reduction is about to be - performed in an inconsistent state (which, for the purposes of LAC, - includes consistent states that don't know they're consistent because - their default reductions have been disabled). Iff there is a - lookahead token, it should also be invoked before reporting a syntax - error. This latter case is for the sake of the debugging output. - - For parse.lac=full, the implementation of YY_LAC_ESTABLISH is as - follows. If no initial context is currently established for the - current lookahead, then check if that lookahead can eventually be - shifted if syntactic actions continue from the current context. - Report a syntax error if it cannot. */ -#define YY_LAC_ESTABLISH \ -do { \ - if (!yy_lac_established) \ - { \ - YYDPRINTF ((stderr, \ - "LAC: initial context established for %s\n", \ - yytname[yytoken])); \ - yy_lac_established = 1; \ - { \ - int yy_lac_status = \ - yy_lac (yyesa, &yyes, &yyes_capacity, yyssp, yytoken); \ - if (yy_lac_status == 2) \ - goto yyexhaustedlab; \ - if (yy_lac_status == 1) \ - goto yyerrlab; \ - } \ - } \ -} while (YYID (0)) - -/* Discard any previous initial lookahead context because of Event, - which may be a lookahead change or an invalidation of the currently - established initial context for the current lookahead. - - The most common example of a lookahead change is a shift. An example - of both cases is syntax error recovery. That is, a syntax error - occurs when the lookahead is syntactically erroneous for the - currently established initial context, so error recovery manipulates - the parser stacks to try to find a new initial context in which the - current lookahead is syntactically acceptable. If it fails to find - such a context, it discards the lookahead. */ -#if ]b4_api_PREFIX[DEBUG -# define YY_LAC_DISCARD(Event) \ -do { \ - if (yy_lac_established) \ - { \ - if (yydebug) \ - YYFPRINTF (stderr, "LAC: initial context discarded due to " \ - Event "\n"); \ - yy_lac_established = 0; \ - } \ -} while (YYID (0)) -#else -# define YY_LAC_DISCARD(Event) yy_lac_established = 0 -#endif - -/* Given the stack whose top is *YYSSP, return 0 iff YYTOKEN can - eventually (after perhaps some reductions) be shifted, return 1 if - not, or return 2 if memory is exhausted. As preconditions and - postconditions: *YYES_CAPACITY is the allocated size of the array to - which *YYES points, and either *YYES = YYESA or *YYES points to an - array allocated with YYSTACK_ALLOC. yy_lac may overwrite the - contents of either array, alter *YYES and *YYES_CAPACITY, and free - any old *YYES other than YYESA. */ -static int -yy_lac (yytype_int16 *yyesa, yytype_int16 **yyes, - YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken) -{ - yytype_int16 *yyes_prev = yyssp; - yytype_int16 *yyesp = yyes_prev; - YYDPRINTF ((stderr, "LAC: checking lookahead %s:", yytname[yytoken])); - if (yytoken == YYUNDEFTOK) - { - YYDPRINTF ((stderr, " Always Err\n")); - return 1; - } - while (1) - { - int yyrule = yypact[*yyesp]; - if (yypact_value_is_default (yyrule) - || (yyrule += yytoken) < 0 || YYLAST < yyrule - || yycheck[yyrule] != yytoken) - { - yyrule = yydefact[*yyesp]; - if (yyrule == 0) - { - YYDPRINTF ((stderr, " Err\n")); - return 1; - } - } - else - { - yyrule = yytable[yyrule]; - if (yytable_value_is_error (yyrule)) - { - YYDPRINTF ((stderr, " Err\n")); - return 1; - } - if (0 < yyrule) - { - YYDPRINTF ((stderr, " S%d\n", yyrule)); - return 0; - } - yyrule = -yyrule; - } - { - YYSIZE_T yylen = yyr2[yyrule]; - YYDPRINTF ((stderr, " R%d", yyrule - 1)); - if (yyesp != yyes_prev) - { - YYSIZE_T yysize = yyesp - *yyes + 1; - if (yylen < yysize) - { - yyesp -= yylen; - yylen = 0; - } - else - { - yylen -= yysize; - yyesp = yyes_prev; - } - } - if (yylen) - yyesp = yyes_prev -= yylen; - } - { - int yystate; - { - int yylhs = yyr1[yyrule] - YYNTOKENS; - yystate = yypgoto[yylhs] + *yyesp; - if (yystate < 0 || YYLAST < yystate - || yycheck[yystate] != *yyesp) - yystate = yydefgoto[yylhs]; - else - yystate = yytable[yystate]; - } - if (yyesp == yyes_prev) - { - yyesp = *yyes; - *yyesp = yystate; - } - else - { - if (yy_lac_stack_realloc (yyes_capacity, 1, -#if ]b4_api_PREFIX[DEBUG - " (", ")", -#endif - yyes, yyesa, &yyesp, yyes_prev)) - { - YYDPRINTF ((stderr, "\n")); - return 2; - } - *++yyesp = yystate; - } - YYDPRINTF ((stderr, " G%d", yystate)); - } - } -}]])[ - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -]b4_c_function_def([yystrlen], [static YYSIZE_T], - [[const char *yystr], [yystr]])[ -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -]b4_c_function_def([yystpcpy], [static char *], - [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[ -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP.]b4_lac_if([[ In order to see if a particular token T is a - valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).]])[ - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store]b4_lac_if([[ or if - yy_lac returned 2]])[. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - ]b4_lac_if([[yytype_int16 *yyesa, yytype_int16 **yyes, - YYSIZE_T *yyes_capacity, ]])[yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULL; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar.]b4_lac_if([[ - In the first two cases, it might appear that the current syntax - error should have been detected in the previous state when yy_lac - was invoked. However, at that time, there might have been a - different syntax error that discarded a different initial context - during error recovery, leaving behind the current lookahead.]], [[ - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state.]])[ - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp];]b4_lac_if([[ - YYDPRINTF ((stderr, "Constructing syntax error message\n"));]])[ - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - {]b4_lac_if([], [[ - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;]])[ - int yyx;]b4_lac_if([[ - - for (yyx = 0; yyx < YYNTOKENS; ++yyx) - if (yyx != YYTERROR && yyx != YYUNDEFTOK) - { - { - int yy_lac_status = yy_lac (yyesa, yyes, yyes_capacity, - yyssp, yyx); - if (yy_lac_status == 2) - return 2; - if (yy_lac_status == 1) - continue; - }]], [[ - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - {]])[ - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - }]b4_lac_if([[ -# if ]b4_api_PREFIX[DEBUG - else if (yydebug) - YYFPRINTF (stderr, "No expected tokens.\n"); -# endif]])[ - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -]b4_yydestruct_generate([b4_c_function_def])[ - -]b4_pure_if([], [ - -b4_declare_scanner_communication_variables])[]b4_push_if([[ - -struct yypstate - {]b4_declare_parser_state_variables[ - /* Used to determine if this is the first time this instance has - been used. */ - int yynew; - };]b4_pure_if([], [[ - -static char yypstate_allocated = 0;]])b4_pull_if([ - -b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[ -{ - return yypull_parse (YY_NULL]m4_ifset([b4_parse_param], - [[, ]b4_c_args(b4_parse_param)])[); -} - -]b4_c_function_def([[yypull_parse]], [[int]], - [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [, - b4_parse_param]))[ -{ - int yystatus; - yypstate *yyps_local;]b4_pure_if([[ - int yychar; - YYSTYPE yylval;]b4_locations_if([[ - static YYLTYPE yyloc_default][]b4_yyloc_default[; - YYLTYPE yylloc = yyloc_default;]])])[ - if (yyps) - yyps_local = yyps; - else - { - yyps_local = yypstate_new (); - if (!yyps_local) - {]b4_pure_if([[ - yyerror (]b4_yyerror_args[YY_("memory exhausted"));]], [[ - if (!yypstate_allocated) - yyerror (]b4_yyerror_args[YY_("memory exhausted"));]])[ - return 2; - } - } - do { - yychar = YYLEX; - yystatus = - yypush_parse (yyps_local]b4_pure_if([[, yychar, &yylval]b4_locations_if([[, &yylloc]])])m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])[); - } while (yystatus == YYPUSH_MORE); - if (!yyps) - yypstate_delete (yyps_local); - return yystatus; -}]])[ - -/* Initialize the parser data structure. */ -]b4_c_function_def([[yypstate_new]], [[yypstate *]])[ -{ - yypstate *yyps;]b4_pure_if([], [[ - if (yypstate_allocated) - return YY_NULL;]])[ - yyps = (yypstate *) malloc (sizeof *yyps); - if (!yyps) - return YY_NULL; - yyps->yynew = 1;]b4_pure_if([], [[ - yypstate_allocated = 1;]])[ - return yyps; -} - -]b4_c_function_def([[yypstate_delete]], [[void]], - [[[yypstate *yyps]], [[yyps]]])[ -{ -#ifndef yyoverflow - /* If the stack was reallocated but the parse did not complete, then the - stack still needs to be freed. */ - if (!yyps->yynew && yyps->yyss != yyps->yyssa) - YYSTACK_FREE (yyps->yyss); -#endif]b4_lac_if([[ - if (!yyps->yynew && yyps->yyes != yyps->yyesa) - YYSTACK_FREE (yyps->yyes);]])[ - free (yyps);]b4_pure_if([], [[ - yypstate_allocated = 0;]])[ -} -]b4_pure_if([[ -#define ]b4_prefix[nerrs yyps->]b4_prefix[nerrs]])[ -#define yystate yyps->yystate -#define yyerrstatus yyps->yyerrstatus -#define yyssa yyps->yyssa -#define yyss yyps->yyss -#define yyssp yyps->yyssp -#define yyvsa yyps->yyvsa -#define yyvs yyps->yyvs -#define yyvsp yyps->yyvsp]b4_locations_if([[ -#define yylsa yyps->yylsa -#define yyls yyps->yyls -#define yylsp yyps->yylsp -#define yyerror_range yyps->yyerror_range]])[ -#define yystacksize yyps->yystacksize]b4_lac_if([[ -#define yyesa yyps->yyesa -#define yyes yyps->yyes -#define yyes_capacity yyps->yyes_capacity]])[ - - -/*---------------. -| yypush_parse. | -`---------------*/ - -]b4_c_function_def([[yypush_parse]], [[int]], - [[[yypstate *yyps]], [[yyps]]]b4_pure_if([, - [[[int yypushed_char]], [[yypushed_char]]], - [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([, - [[[YYLTYPE *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [, - b4_parse_param]))], [[ - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -]b4_c_function_def([yyparse], [int], - [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[ -#else /* ! YYPARSE_PARAM */ -]b4_c_function_def([yyparse], [int], b4_parse_param)[ -#endif]])[ -{]b4_pure_if([b4_declare_scanner_communication_variables -])b4_push_if([b4_pure_if([], [[ - int yypushed_char = yychar; - YYSTYPE yypushed_val = yylval;]b4_locations_if([[ - YYLTYPE yypushed_loc = yylloc;]]) -])], - [b4_declare_parser_state_variables -])b4_lac_if([[ - int yy_lac_established = 0;]])[ - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval;]b4_locations_if([[ - YYLTYPE yyloc;]])[ - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0;]b4_push_if([[ - - if (!yyps->yynew) - { - yyn = yypact[yystate]; - goto yyread_pushed_token; - }]])[ - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa;]b4_locations_if([[ - yylsp = yyls = yylsa;]])[ - yystacksize = YYINITDEPTH;]b4_lac_if([[ - - yyes = yyesa; - yyes_capacity = sizeof yyesa / sizeof *yyes; - if (YYMAXDEPTH < yyes_capacity) - yyes_capacity = YYMAXDEPTH;]])[ - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [], - [b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef[]dnl -m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval; -]])])dnl -b4_locations_if([[ yylsp[0] = ]b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])[; -]])dnl -[ goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss;]b4_locations_if([ - YYLTYPE *yyls1 = yyls;])[ - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp),]b4_locations_if([ - &yyls1, yysize * sizeof (*yylsp),])[ - &yystacksize); -]b4_locations_if([ - yyls = yyls1;])[ - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs);]b4_locations_if([ - YYSTACK_RELOCATE (yyls_alloc, yyls);])[ -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1;]b4_locations_if([ - yylsp = yyls + yysize - 1;])[ - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - {]b4_push_if([[ - if (!yyps->yynew) - {]b4_use_push_for_pull_if([], [[ - YYDPRINTF ((stderr, "Return for a new token:\n"));]])[ - yyresult = YYPUSH_MORE; - goto yypushreturn; - } - yyps->yynew = 0;]b4_pure_if([], [[ - /* Restoring the pushed token is only necessary for the first - yypush_parse invocation since subsequent invocations don't overwrite - it before jumping to yyread_pushed_token. */ - yychar = yypushed_char; - yylval = yypushed_val;]b4_locations_if([[ - yylloc = yypushed_loc;]])])[ -yyread_pushed_token:]])[ - YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[ - yychar = yypushed_char; - if (yypushed_val) - yylval = *yypushed_val;]b4_locations_if([[ - if (yypushed_loc) - yylloc = *yypushed_loc;]])])], [[ - yychar = YYLEX;]])[ - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)]b4_lac_if([[ - { - YY_LAC_ESTABLISH; - goto yydefault; - }]], [[ - goto yydefault;]])[ - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab;]b4_lac_if([[ - YY_LAC_ESTABLISH;]])[ - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY;]b4_lac_if([[ - YY_LAC_DISCARD ("shift");]])[ - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END -]b4_locations_if([ *++yylsp = yylloc;])[ - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - -]b4_locations_if( -[[ /* Default location. */ - YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[ - YY_REDUCE_PRINT (yyn);]b4_lac_if([[ - { - int yychar_backup = yychar; - switch (yyn) - { - ]b4_user_actions[ - default: break; - } - if (yychar_backup != yychar) - YY_LAC_DISCARD ("yychar change"); - }]], [[ - switch (yyn) - { - ]b4_user_actions[ - default: break; - }]])[ - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval;]b4_locations_if([ - *++yylsp = yyloc;])[ - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (]b4_yyerror_args[YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \]b4_lac_if([[ - yyesa, &yyes, &yyes_capacity, \]])[ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status;]b4_lac_if([[ - if (yychar != YYEMPTY) - YY_LAC_ESTABLISH;]])[ - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (]b4_yyerror_args[yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - -]b4_locations_if([[ yyerror_range[1] = yylloc;]])[ - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - -]b4_locations_if([[ yyerror_range[1] = yylsp[1-yylen]; -]])[ /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - -]b4_locations_if([[ yyerror_range[1] = *yylsp;]])[ - yydestruct ("Error: popping", - yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - }]b4_lac_if([[ - - /* If the stack popping above didn't lose the initial context for the - current lookahead token, the shift below will for sure. */ - YY_LAC_DISCARD ("error recovery");]])[ - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END -]b4_locations_if([[ - yyerror_range[2] = yylloc; - /* Using YYLLOC is tempting, but would change the location of - the lookahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, yyerror_range, 2); - *++yylsp = yyloc;]])[ - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if ]b4_lac_if([[1]], [[!defined yyoverflow || YYERROR_VERBOSE]])[ -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (]b4_yyerror_args[YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); - } - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif]b4_lac_if([[ - if (yyes != yyesa) - YYSTACK_FREE (yyes);]])b4_push_if([[ - yyps->yynew = 1; - -yypushreturn:]])[ -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - /* Make sure YYID is used. */ - return YYID (yyresult); -} - - -]b4_epilogue[]dnl -b4_output_end() - -b4_defines_if( -[b4_output_begin([b4_spec_defines_file])[ -]b4_copyright([Bison interface for Yacc-like parsers in C], - [1984, 1989-1990, 2000-2012])[ - -]b4_shared_declarations[ -]b4_output_end() -]) From ac1324032855ce082e387b8495dfa4a082d4acf5 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 00:31:43 +0100 Subject: [PATCH 2/4] Add a note to README.md about how to build the bison grammar --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index f56817c7..7a60e280 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,20 @@ CMake: The currently maintained and preferred way of building is through CMake. In MSVC, after running CMake, you may need to use the Configuration Manager to check the INSTALL project. +The grammar in glslang/MachineIndependent/glslang.y has to be recompiled with +bison if it changes, the output files are committed to the repo to avoid every +developer needing to have bison configured to compile the project when grammar +changes are quite infrequent. For windows you can get binaries from +[GnuWin32](http://gnuwin32.sourceforge.net/packages/bison.htm). + +The command to rebuild is: + +``` +bison --defines=MachineIndependent/glslang_tab.cpp.h + -t MachineIndependent/glslang.y + -o MachineIndependent/glslang_tab.cpp +``` + Programmatic Interfaces ----------------------- From 530690e44250e0fa7278c3af637120b0b1483a9d Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 00:54:05 +0100 Subject: [PATCH 3/4] Commit bison-generated files from Windows GNU Bison 2.7 --- .gitignore | 2 - glslang/MachineIndependent/glslang_tab.cpp | 7790 ++++++++++++++++++ glslang/MachineIndependent/glslang_tab.cpp.h | 370 + 3 files changed, 8160 insertions(+), 2 deletions(-) create mode 100644 glslang/MachineIndependent/glslang_tab.cpp create mode 100644 glslang/MachineIndependent/glslang_tab.cpp.h diff --git a/.gitignore b/.gitignore index 153aa048..d93c2022 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,6 @@ *.so *.exe tags -glslang/MachineIndependent/glslang_tab.cpp -glslang/MachineIndependent/glslang_tab.cpp.h build/ Test/localResults/ Test/multiThread.out diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp new file mode 100644 index 00000000..d435aa80 --- /dev/null +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -0,0 +1,7790 @@ +/* A Bison parser, made by GNU Bison 2.7. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.7" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +/* Line 371 of yacc.c */ +#line 41 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + +/* Based on: +ANSI C Yacc grammar + +In 1985, Jeff Lee published his Yacc grammar (which is accompanied by a +matching Lex specification) for the April 30, 1985 draft version of the +ANSI C standard. Tom Stockfisch reposted it to net.sources in 1987; that +original, as mentioned in the answer to question 17.25 of the comp.lang.c +FAQ, can be ftp'ed from ftp.uu.net, file usenet/net.sources/ansi.c.grammar.Z. + +I intend to keep this version as close to the current C Standard grammar as +possible; please let me know if you discover discrepancies. + +Jutta Degener, 1995 +*/ + +#include "SymbolTable.h" +#include "ParseHelper.h" +#include "../Public/ShaderLang.h" + +using namespace glslang; + + +/* Line 371 of yacc.c */ +#line 93 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "glslang_tab.cpp.h". */ +#ifndef YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + BREAK = 266, + CONTINUE = 267, + DO = 268, + ELSE = 269, + FOR = 270, + IF = 271, + DISCARD = 272, + RETURN = 273, + SWITCH = 274, + CASE = 275, + DEFAULT = 276, + SUBROUTINE = 277, + BVEC2 = 278, + BVEC3 = 279, + BVEC4 = 280, + IVEC2 = 281, + IVEC3 = 282, + IVEC4 = 283, + UVEC2 = 284, + UVEC3 = 285, + UVEC4 = 286, + VEC2 = 287, + VEC3 = 288, + VEC4 = 289, + MAT2 = 290, + MAT3 = 291, + MAT4 = 292, + CENTROID = 293, + IN = 294, + OUT = 295, + INOUT = 296, + UNIFORM = 297, + PATCH = 298, + SAMPLE = 299, + BUFFER = 300, + SHARED = 301, + COHERENT = 302, + VOLATILE = 303, + RESTRICT = 304, + READONLY = 305, + WRITEONLY = 306, + DVEC2 = 307, + DVEC3 = 308, + DVEC4 = 309, + DMAT2 = 310, + DMAT3 = 311, + DMAT4 = 312, + NOPERSPECTIVE = 313, + FLAT = 314, + SMOOTH = 315, + LAYOUT = 316, + MAT2X2 = 317, + MAT2X3 = 318, + MAT2X4 = 319, + MAT3X2 = 320, + MAT3X3 = 321, + MAT3X4 = 322, + MAT4X2 = 323, + MAT4X3 = 324, + MAT4X4 = 325, + DMAT2X2 = 326, + DMAT2X3 = 327, + DMAT2X4 = 328, + DMAT3X2 = 329, + DMAT3X3 = 330, + DMAT3X4 = 331, + DMAT4X2 = 332, + DMAT4X3 = 333, + DMAT4X4 = 334, + ATOMIC_UINT = 335, + SAMPLER1D = 336, + SAMPLER2D = 337, + SAMPLER3D = 338, + SAMPLERCUBE = 339, + SAMPLER1DSHADOW = 340, + SAMPLER2DSHADOW = 341, + SAMPLERCUBESHADOW = 342, + SAMPLER1DARRAY = 343, + SAMPLER2DARRAY = 344, + SAMPLER1DARRAYSHADOW = 345, + SAMPLER2DARRAYSHADOW = 346, + ISAMPLER1D = 347, + ISAMPLER2D = 348, + ISAMPLER3D = 349, + ISAMPLERCUBE = 350, + ISAMPLER1DARRAY = 351, + ISAMPLER2DARRAY = 352, + USAMPLER1D = 353, + USAMPLER2D = 354, + USAMPLER3D = 355, + USAMPLERCUBE = 356, + USAMPLER1DARRAY = 357, + USAMPLER2DARRAY = 358, + SAMPLER2DRECT = 359, + SAMPLER2DRECTSHADOW = 360, + ISAMPLER2DRECT = 361, + USAMPLER2DRECT = 362, + SAMPLERBUFFER = 363, + ISAMPLERBUFFER = 364, + USAMPLERBUFFER = 365, + SAMPLERCUBEARRAY = 366, + SAMPLERCUBEARRAYSHADOW = 367, + ISAMPLERCUBEARRAY = 368, + USAMPLERCUBEARRAY = 369, + SAMPLER2DMS = 370, + ISAMPLER2DMS = 371, + USAMPLER2DMS = 372, + SAMPLER2DMSARRAY = 373, + ISAMPLER2DMSARRAY = 374, + USAMPLER2DMSARRAY = 375, + SAMPLEREXTERNALOES = 376, + SAMPLER = 377, + SAMPLERSHADOW = 378, + TEXTURE1D = 379, + TEXTURE2D = 380, + TEXTURE3D = 381, + TEXTURECUBE = 382, + TEXTURE1DARRAY = 383, + TEXTURE2DARRAY = 384, + ITEXTURE1D = 385, + ITEXTURE2D = 386, + ITEXTURE3D = 387, + ITEXTURECUBE = 388, + ITEXTURE1DARRAY = 389, + ITEXTURE2DARRAY = 390, + UTEXTURE1D = 391, + UTEXTURE2D = 392, + UTEXTURE3D = 393, + UTEXTURECUBE = 394, + UTEXTURE1DARRAY = 395, + UTEXTURE2DARRAY = 396, + TEXTURE2DRECT = 397, + ITEXTURE2DRECT = 398, + UTEXTURE2DRECT = 399, + TEXTUREBUFFER = 400, + ITEXTUREBUFFER = 401, + UTEXTUREBUFFER = 402, + TEXTURECUBEARRAY = 403, + ITEXTURECUBEARRAY = 404, + UTEXTURECUBEARRAY = 405, + TEXTURE2DMS = 406, + ITEXTURE2DMS = 407, + UTEXTURE2DMS = 408, + TEXTURE2DMSARRAY = 409, + ITEXTURE2DMSARRAY = 410, + UTEXTURE2DMSARRAY = 411, + SUBPASSINPUT = 412, + SUBPASSINPUTMS = 413, + ISUBPASSINPUT = 414, + ISUBPASSINPUTMS = 415, + USUBPASSINPUT = 416, + USUBPASSINPUTMS = 417, + IMAGE1D = 418, + IIMAGE1D = 419, + UIMAGE1D = 420, + IMAGE2D = 421, + IIMAGE2D = 422, + UIMAGE2D = 423, + IMAGE3D = 424, + IIMAGE3D = 425, + UIMAGE3D = 426, + IMAGE2DRECT = 427, + IIMAGE2DRECT = 428, + UIMAGE2DRECT = 429, + IMAGECUBE = 430, + IIMAGECUBE = 431, + UIMAGECUBE = 432, + IMAGEBUFFER = 433, + IIMAGEBUFFER = 434, + UIMAGEBUFFER = 435, + IMAGE1DARRAY = 436, + IIMAGE1DARRAY = 437, + UIMAGE1DARRAY = 438, + IMAGE2DARRAY = 439, + IIMAGE2DARRAY = 440, + UIMAGE2DARRAY = 441, + IMAGECUBEARRAY = 442, + IIMAGECUBEARRAY = 443, + UIMAGECUBEARRAY = 444, + IMAGE2DMS = 445, + IIMAGE2DMS = 446, + UIMAGE2DMS = 447, + IMAGE2DMSARRAY = 448, + IIMAGE2DMSARRAY = 449, + UIMAGE2DMSARRAY = 450, + STRUCT = 451, + VOID = 452, + WHILE = 453, + IDENTIFIER = 454, + TYPE_NAME = 455, + FLOATCONSTANT = 456, + DOUBLECONSTANT = 457, + INTCONSTANT = 458, + UINTCONSTANT = 459, + BOOLCONSTANT = 460, + LEFT_OP = 461, + RIGHT_OP = 462, + INC_OP = 463, + DEC_OP = 464, + LE_OP = 465, + GE_OP = 466, + EQ_OP = 467, + NE_OP = 468, + AND_OP = 469, + OR_OP = 470, + XOR_OP = 471, + MUL_ASSIGN = 472, + DIV_ASSIGN = 473, + ADD_ASSIGN = 474, + MOD_ASSIGN = 475, + LEFT_ASSIGN = 476, + RIGHT_ASSIGN = 477, + AND_ASSIGN = 478, + XOR_ASSIGN = 479, + OR_ASSIGN = 480, + SUB_ASSIGN = 481, + LEFT_PAREN = 482, + RIGHT_PAREN = 483, + LEFT_BRACKET = 484, + RIGHT_BRACKET = 485, + LEFT_BRACE = 486, + RIGHT_BRACE = 487, + DOT = 488, + COMMA = 489, + COLON = 490, + EQUAL = 491, + SEMICOLON = 492, + BANG = 493, + DASH = 494, + TILDE = 495, + PLUS = 496, + STAR = 497, + SLASH = 498, + PERCENT = 499, + LEFT_ANGLE = 500, + RIGHT_ANGLE = 501, + VERTICAL_BAR = 502, + CARET = 503, + AMPERSAND = 504, + QUESTION = 505, + INVARIANT = 506, + PRECISE = 507, + HIGH_PRECISION = 508, + MEDIUM_PRECISION = 509, + LOW_PRECISION = 510, + PRECISION = 511, + PACKED = 512, + RESOURCE = 513, + SUPERP = 514 + }; +#endif + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ +/* Line 387 of yacc.c */ +#line 66 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + struct { + glslang::TSourceLoc loc; + union { + glslang::TString *string; + int i; + unsigned int u; + bool b; + double d; + }; + glslang::TSymbol* symbol; + } lex; + struct { + glslang::TSourceLoc loc; + glslang::TOperator op; + union { + TIntermNode* intermNode; + glslang::TIntermNodePair nodePair; + glslang::TIntermTyped* intermTypedNode; + }; + union { + glslang::TPublicType type; + glslang::TFunction* function; + glslang::TParameter param; + glslang::TTypeLoc typeLine; + glslang::TTypeList* typeList; + glslang::TArraySizes* arraySizes; + glslang::TIdentifierList* identifierList; + }; + } interm; + + +/* Line 387 of yacc.c */ +#line 428 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + +#endif /* !YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ + +/* Copy the second part of user declarations. */ +/* Line 390 of yacc.c */ +#line 98 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + +/* windows only pragma */ +#ifdef _MSC_VER + #pragma warning(disable : 4065) + #pragma warning(disable : 4127) + #pragma warning(disable : 4244) +#endif + +#define parseContext (*pParseContext) +#define yyerror(context, msg) context->parserError(msg) + +extern int yylex(YYSTYPE*, TParseContext&); + + +/* Line 390 of yacc.c */ +#line 471 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(E) ((void) (E)) +#else +# define YYUSE(E) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(N) (N) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 240 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 5659 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 260 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 100 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 411 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 543 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 514 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint16 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, + 21, 23, 28, 30, 34, 37, 40, 42, 44, 46, + 49, 52, 55, 57, 60, 64, 67, 69, 71, 73, + 76, 79, 82, 84, 86, 88, 90, 92, 96, 100, + 104, 106, 110, 114, 116, 120, 124, 126, 130, 134, + 138, 142, 144, 148, 152, 154, 158, 160, 164, 166, + 170, 172, 176, 178, 182, 184, 188, 190, 191, 198, + 200, 204, 206, 208, 210, 212, 214, 216, 218, 220, + 222, 224, 226, 228, 232, 234, 237, 240, 245, 248, + 252, 257, 260, 264, 269, 270, 277, 280, 284, 287, + 289, 291, 294, 298, 302, 305, 309, 312, 314, 317, + 319, 321, 323, 327, 332, 339, 345, 347, 350, 354, + 360, 365, 367, 370, 372, 374, 376, 378, 383, 385, + 389, 391, 395, 397, 399, 401, 404, 406, 408, 410, + 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, + 452, 457, 459, 463, 465, 468, 471, 475, 479, 484, + 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, + 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, + 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, + 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, + 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, + 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, + 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, + 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, + 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, + 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, + 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, + 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, + 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, + 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, + 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, + 806, 808, 810, 812, 814, 816, 817, 824, 825, 831, + 833, 836, 840, 845, 847, 851, 853, 856, 858, 862, + 867, 869, 873, 875, 877, 879, 881, 883, 885, 887, + 889, 891, 893, 896, 897, 898, 904, 906, 908, 909, + 912, 913, 916, 919, 923, 925, 928, 930, 933, 939, + 943, 945, 947, 952, 953, 962, 963, 965, 969, 972, + 973, 980, 981, 990, 991, 999, 1001, 1003, 1005, 1006, + 1009, 1013, 1016, 1019, 1022, 1026, 1029, 1031, 1034, 1036, + 1038, 1039 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 356, 0, -1, 199, -1, 261, -1, 203, -1, 204, + -1, 201, -1, 202, -1, 205, -1, 227, 289, 228, + -1, 262, -1, 263, 229, 264, 230, -1, 265, -1, + 263, 233, 199, -1, 263, 208, -1, 263, 209, -1, + 289, -1, 266, -1, 267, -1, 269, 228, -1, 268, + 228, -1, 270, 197, -1, 270, -1, 270, 287, -1, + 269, 234, 287, -1, 271, 227, -1, 315, -1, 263, + -1, 263, -1, 208, 272, -1, 209, 272, -1, 273, + 272, -1, 241, -1, 239, -1, 238, -1, 240, -1, + 272, -1, 274, 242, 272, -1, 274, 243, 272, -1, + 274, 244, 272, -1, 274, -1, 275, 241, 274, -1, + 275, 239, 274, -1, 275, -1, 276, 206, 275, -1, + 276, 207, 275, -1, 276, -1, 277, 245, 276, -1, + 277, 246, 276, -1, 277, 210, 276, -1, 277, 211, + 276, -1, 277, -1, 278, 212, 277, -1, 278, 213, + 277, -1, 278, -1, 279, 249, 278, -1, 279, -1, + 280, 248, 279, -1, 280, -1, 281, 247, 280, -1, + 281, -1, 282, 214, 281, -1, 282, -1, 283, 216, + 282, -1, 283, -1, 284, 215, 283, -1, 284, -1, + -1, 284, 250, 286, 289, 235, 287, -1, 285, -1, + 272, 288, 287, -1, 236, -1, 217, -1, 218, -1, + 220, -1, 219, -1, 226, -1, 221, -1, 222, -1, + 223, -1, 224, -1, 225, -1, 287, -1, 289, 234, + 287, -1, 285, -1, 295, 237, -1, 302, 237, -1, + 256, 318, 315, 237, -1, 292, 237, -1, 292, 199, + 237, -1, 292, 199, 316, 237, -1, 311, 237, -1, + 311, 199, 237, -1, 311, 199, 294, 237, -1, -1, + 311, 199, 231, 293, 322, 232, -1, 234, 199, -1, + 294, 234, 199, -1, 296, 228, -1, 298, -1, 297, + -1, 298, 300, -1, 297, 234, 300, -1, 304, 199, + 227, -1, 315, 199, -1, 315, 199, 316, -1, 311, + 299, -1, 299, -1, 311, 301, -1, 301, -1, 315, + -1, 303, -1, 302, 234, 199, -1, 302, 234, 199, + 316, -1, 302, 234, 199, 316, 236, 326, -1, 302, + 234, 199, 236, 326, -1, 304, -1, 304, 199, -1, + 304, 199, 316, -1, 304, 199, 316, 236, 326, -1, + 304, 199, 236, 326, -1, 315, -1, 311, 315, -1, + 251, -1, 60, -1, 59, -1, 58, -1, 61, 227, + 308, 228, -1, 309, -1, 308, 234, 309, -1, 199, + -1, 199, 236, 290, -1, 46, -1, 252, -1, 312, + -1, 311, 312, -1, 313, -1, 307, -1, 318, -1, + 306, -1, 305, -1, 310, -1, 5, -1, 3, -1, + 4, -1, 41, -1, 39, -1, 40, -1, 38, -1, + 43, -1, 44, -1, 42, -1, 45, -1, 46, -1, + 47, -1, 48, -1, 49, -1, 50, -1, 51, -1, + 22, -1, 22, 227, 314, 228, -1, 200, -1, 314, + 234, 200, -1, 317, -1, 317, 316, -1, 229, 230, + -1, 229, 285, 230, -1, 316, 229, 230, -1, 316, + 229, 285, 230, -1, 197, -1, 7, -1, 8, -1, + 9, -1, 10, -1, 6, -1, 32, -1, 33, -1, + 34, -1, 52, -1, 53, -1, 54, -1, 23, -1, + 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, + 29, -1, 30, -1, 31, -1, 35, -1, 36, -1, + 37, -1, 62, -1, 63, -1, 64, -1, 65, -1, + 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, + 55, -1, 56, -1, 57, -1, 71, -1, 72, -1, + 73, -1, 74, -1, 75, -1, 76, -1, 77, -1, + 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, + 83, -1, 84, -1, 85, -1, 86, -1, 87, -1, + 88, -1, 89, -1, 90, -1, 91, -1, 111, -1, + 112, -1, 92, -1, 93, -1, 94, -1, 95, -1, + 96, -1, 97, -1, 113, -1, 98, -1, 99, -1, + 100, -1, 101, -1, 102, -1, 103, -1, 114, -1, + 104, -1, 105, -1, 106, -1, 107, -1, 108, -1, + 109, -1, 110, -1, 115, -1, 116, -1, 117, -1, + 118, -1, 119, -1, 120, -1, 122, -1, 123, -1, + 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, + 129, -1, 148, -1, 130, -1, 131, -1, 132, -1, + 133, -1, 134, -1, 135, -1, 149, -1, 136, -1, + 137, -1, 138, -1, 139, -1, 140, -1, 141, -1, + 150, -1, 142, -1, 143, -1, 144, -1, 145, -1, + 146, -1, 147, -1, 151, -1, 152, -1, 153, -1, + 154, -1, 155, -1, 156, -1, 163, -1, 164, -1, + 165, -1, 166, -1, 167, -1, 168, -1, 169, -1, + 170, -1, 171, -1, 172, -1, 173, -1, 174, -1, + 175, -1, 176, -1, 177, -1, 178, -1, 179, -1, + 180, -1, 181, -1, 182, -1, 183, -1, 184, -1, + 185, -1, 186, -1, 187, -1, 188, -1, 189, -1, + 190, -1, 191, -1, 192, -1, 193, -1, 194, -1, + 195, -1, 121, -1, 157, -1, 158, -1, 159, -1, + 160, -1, 161, -1, 162, -1, 319, -1, 200, -1, + 253, -1, 254, -1, 255, -1, -1, 196, 199, 231, + 320, 322, 232, -1, -1, 196, 231, 321, 322, 232, + -1, 323, -1, 322, 323, -1, 315, 324, 237, -1, + 311, 315, 324, 237, -1, 325, -1, 324, 234, 325, + -1, 199, -1, 199, 316, -1, 287, -1, 231, 327, + 232, -1, 231, 327, 234, 232, -1, 326, -1, 327, + 234, 326, -1, 291, -1, 331, -1, 330, -1, 328, + -1, 340, -1, 341, -1, 344, -1, 347, -1, 348, + -1, 355, -1, 231, 232, -1, -1, -1, 231, 332, + 339, 333, 232, -1, 338, -1, 330, -1, -1, 336, + 331, -1, -1, 337, 330, -1, 231, 232, -1, 231, + 339, 232, -1, 329, -1, 339, 329, -1, 237, -1, + 289, 237, -1, 16, 227, 289, 228, 342, -1, 335, + 14, 335, -1, 335, -1, 289, -1, 304, 199, 236, + 326, -1, -1, 19, 227, 289, 228, 345, 231, 346, + 232, -1, -1, 339, -1, 20, 289, 235, -1, 21, + 235, -1, -1, 198, 227, 349, 343, 228, 334, -1, + -1, 13, 350, 329, 198, 227, 289, 228, 237, -1, + -1, 15, 227, 351, 352, 354, 228, 334, -1, 340, + -1, 328, -1, 343, -1, -1, 353, 237, -1, 353, + 237, 289, -1, 12, 237, -1, 11, 237, -1, 18, + 237, -1, 18, 289, 237, -1, 17, 237, -1, 357, + -1, 356, 357, -1, 358, -1, 291, -1, -1, 295, + 359, 338, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 244, 244, 250, 253, 256, 260, 263, 267, 270, + 278, 281, 284, 287, 290, 295, 303, 310, 317, 323, + 327, 334, 337, 343, 350, 360, 368, 373, 403, 409, + 413, 417, 437, 438, 439, 440, 446, 447, 452, 457, + 466, 467, 472, 480, 481, 487, 496, 497, 502, 507, + 512, 520, 521, 529, 540, 541, 550, 551, 560, 561, + 570, 571, 579, 580, 588, 589, 597, 598, 598, 616, + 617, 632, 636, 640, 644, 649, 653, 657, 661, 665, + 669, 673, 680, 683, 693, 700, 705, 710, 718, 722, + 726, 730, 735, 740, 749, 749, 760, 764, 771, 778, + 781, 788, 796, 816, 834, 849, 872, 883, 893, 903, + 913, 922, 925, 929, 933, 938, 946, 951, 956, 961, + 966, 975, 986, 1013, 1022, 1029, 1036, 1046, 1052, 1055, + 1062, 1066, 1070, 1078, 1084, 1087, 1098, 1101, 1104, 1107, + 1111, 1115, 1122, 1126, 1138, 1152, 1157, 1163, 1169, 1176, + 1182, 1187, 1192, 1197, 1204, 1208, 1212, 1216, 1220, 1224, + 1230, 1242, 1245, 1250, 1254, 1263, 1268, 1276, 1280, 1290, + 1294, 1298, 1303, 1307, 1312, 1316, 1321, 1326, 1331, 1337, + 1343, 1349, 1354, 1359, 1364, 1369, 1374, 1379, 1385, 1391, + 1397, 1402, 1407, 1412, 1417, 1422, 1427, 1432, 1437, 1442, + 1447, 1452, 1457, 1463, 1469, 1475, 1481, 1487, 1493, 1499, + 1505, 1511, 1517, 1523, 1529, 1534, 1539, 1544, 1549, 1554, + 1559, 1564, 1569, 1574, 1579, 1584, 1589, 1594, 1599, 1604, + 1609, 1614, 1619, 1624, 1629, 1634, 1639, 1644, 1649, 1654, + 1659, 1664, 1669, 1674, 1679, 1684, 1689, 1694, 1699, 1704, + 1709, 1714, 1719, 1724, 1729, 1734, 1739, 1744, 1749, 1754, + 1759, 1764, 1769, 1774, 1779, 1784, 1789, 1794, 1799, 1804, + 1809, 1814, 1819, 1824, 1829, 1834, 1839, 1844, 1849, 1854, + 1859, 1864, 1869, 1874, 1879, 1884, 1889, 1894, 1899, 1904, + 1909, 1914, 1919, 1924, 1929, 1934, 1939, 1944, 1949, 1954, + 1959, 1964, 1969, 1974, 1979, 1984, 1989, 1994, 1999, 2004, + 2009, 2014, 2019, 2024, 2029, 2034, 2039, 2044, 2049, 2054, + 2059, 2064, 2069, 2074, 2080, 2086, 2092, 2098, 2104, 2110, + 2116, 2121, 2137, 2143, 2149, 2158, 2158, 2169, 2169, 2179, + 2182, 2195, 2213, 2237, 2241, 2247, 2252, 2263, 2266, 2272, + 2281, 2284, 2290, 2294, 2295, 2301, 2302, 2303, 2304, 2305, + 2306, 2307, 2311, 2312, 2316, 2312, 2328, 2329, 2333, 2333, + 2340, 2340, 2354, 2357, 2365, 2373, 2384, 2385, 2389, 2396, + 2400, 2408, 2412, 2425, 2425, 2445, 2448, 2454, 2466, 2478, + 2478, 2493, 2493, 2509, 2509, 2530, 2533, 2539, 2542, 2548, + 2552, 2559, 2564, 2569, 2576, 2594, 2603, 2607, 2614, 2617, + 2623, 2623 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "CONST", "BOOL", + "FLOAT", "DOUBLE", "INT", "UINT", "BREAK", "CONTINUE", "DO", "ELSE", + "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", + "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", + "UVEC2", "UVEC3", "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", + "MAT4", "CENTROID", "IN", "OUT", "INOUT", "UNIFORM", "PATCH", "SAMPLE", + "BUFFER", "SHARED", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", + "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", "MAT2X2", "MAT2X3", + "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", + "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", + "DMAT4X2", "DMAT4X3", "DMAT4X4", "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", + "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", + "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", "SAMPLER2DARRAY", + "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", + "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER1DARRAY", + "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", "USAMPLER3D", + "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", "SAMPLER2DRECT", + "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", + "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLERCUBEARRAY", + "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", + "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", + "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", + "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", + "TEXTURECUBE", "TEXTURE1DARRAY", "TEXTURE2DARRAY", "ITEXTURE1D", + "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE1DARRAY", + "ITEXTURE2DARRAY", "UTEXTURE1D", "UTEXTURE2D", "UTEXTURE3D", + "UTEXTURECUBE", "UTEXTURE1DARRAY", "UTEXTURE2DARRAY", "TEXTURE2DRECT", + "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", + "UTEXTUREBUFFER", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", + "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS", "UTEXTURE2DMS", + "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", "UTEXTURE2DMSARRAY", + "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", + "USUBPASSINPUT", "USUBPASSINPUTMS", "IMAGE1D", "IIMAGE1D", "UIMAGE1D", + "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", "IIMAGE3D", "UIMAGE3D", + "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", "IMAGECUBE", "IIMAGECUBE", + "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER", + "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", "IMAGE2DARRAY", + "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", "IIMAGECUBEARRAY", + "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", "UIMAGE2DMS", + "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", "STRUCT", "VOID", + "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", + "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "LEFT_OP", "RIGHT_OP", + "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", + "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", + "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", + "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", + "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", + "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", + "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", + "AMPERSAND", "QUESTION", "INVARIANT", "PRECISE", "HIGH_PRECISION", + "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", + "SUPERP", "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", + "function_call_header_no_parameters", + "function_call_header_with_parameters", "function_call_header", + "function_identifier", "unary_expression", "unary_operator", + "multiplicative_expression", "additive_expression", "shift_expression", + "relational_expression", "equality_expression", "and_expression", + "exclusive_or_expression", "inclusive_or_expression", + "logical_and_expression", "logical_xor_expression", + "logical_or_expression", "conditional_expression", "$@1", + "assignment_expression", "assignment_operator", "expression", + "constant_expression", "declaration", "block_structure", "$@2", + "identifier_list", "function_prototype", "function_declarator", + "function_header_with_parameters", "function_header", + "parameter_declarator", "parameter_declaration", + "parameter_type_specifier", "init_declarator_list", "single_declaration", + "fully_specified_type", "invariant_qualifier", "interpolation_qualifier", + "layout_qualifier", "layout_qualifier_id_list", "layout_qualifier_id", + "precise_qualifier", "type_qualifier", "single_type_qualifier", + "storage_qualifier", "type_name_list", "type_specifier", + "array_specifier", "type_specifier_nonarray", "precision_qualifier", + "struct_specifier", "$@3", "$@4", "struct_declaration_list", + "struct_declaration", "struct_declarator_list", "struct_declarator", + "initializer", "initializer_list", "declaration_statement", "statement", + "simple_statement", "compound_statement", "$@5", "$@6", + "statement_no_new_scope", "statement_scoped", "$@7", "$@8", + "compound_statement_no_new_scope", "statement_list", + "expression_statement", "selection_statement", + "selection_rest_statement", "condition", "switch_statement", "$@9", + "switch_statement_list", "case_label", "iteration_statement", "$@10", + "$@11", "$@12", "for_init_statement", "conditionopt", + "for_rest_statement", "jump_statement", "translation_unit", + "external_declaration", "function_definition", "$@13", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 260, 261, 262, 262, 262, 262, 262, 262, 262, + 263, 263, 263, 263, 263, 263, 264, 265, 266, 267, + 267, 268, 268, 269, 269, 270, 271, 271, 272, 272, + 272, 272, 273, 273, 273, 273, 274, 274, 274, 274, + 275, 275, 275, 276, 276, 276, 277, 277, 277, 277, + 277, 278, 278, 278, 279, 279, 280, 280, 281, 281, + 282, 282, 283, 283, 284, 284, 285, 286, 285, 287, + 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 289, 289, 290, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 293, 292, 294, 294, 295, 296, + 296, 297, 297, 298, 299, 299, 300, 300, 300, 300, + 301, 302, 302, 302, 302, 302, 303, 303, 303, 303, + 303, 304, 304, 305, 306, 306, 306, 307, 308, 308, + 309, 309, 309, 310, 311, 311, 312, 312, 312, 312, + 312, 312, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 314, 314, 315, 315, 316, 316, 316, 316, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 318, 318, 318, 320, 319, 321, 319, 322, + 322, 323, 323, 324, 324, 325, 325, 326, 326, 326, + 327, 327, 328, 329, 329, 330, 330, 330, 330, 330, + 330, 330, 331, 332, 333, 331, 334, 334, 336, 335, + 337, 335, 338, 338, 339, 339, 340, 340, 341, 342, + 342, 343, 343, 345, 344, 346, 346, 347, 347, 349, + 348, 350, 348, 351, 348, 352, 352, 353, 353, 354, + 354, 355, 355, 355, 355, 355, 356, 356, 357, 357, + 359, 358 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 4, 1, 3, 2, 2, 1, 1, 1, 2, + 2, 2, 1, 2, 3, 2, 1, 1, 1, 2, + 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, + 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, + 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 0, 6, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 2, 2, 4, 2, 3, + 4, 2, 3, 4, 0, 6, 2, 3, 2, 1, + 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, + 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, + 4, 1, 2, 1, 1, 1, 1, 4, 1, 3, + 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 1, 3, 1, 2, 2, 3, 3, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 6, 0, 5, 1, + 2, 3, 4, 1, 3, 1, 2, 1, 3, 4, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 0, 0, 5, 1, 1, 0, 2, + 0, 2, 2, 3, 1, 2, 1, 2, 5, 3, + 1, 1, 4, 0, 8, 0, 1, 3, 2, 0, + 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, + 3, 2, 2, 2, 3, 2, 1, 2, 1, 1, + 0, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 143, 144, 142, 174, 170, 171, 172, 173, 159, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 175, + 176, 177, 190, 191, 192, 148, 146, 147, 145, 151, + 149, 150, 152, 153, 154, 155, 156, 157, 158, 178, + 179, 180, 202, 203, 204, 126, 125, 124, 0, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 228, + 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, + 240, 242, 243, 244, 245, 246, 247, 248, 226, 227, + 234, 241, 249, 250, 251, 252, 253, 254, 323, 255, + 256, 257, 258, 259, 260, 261, 262, 264, 265, 266, + 267, 268, 269, 271, 272, 273, 274, 275, 276, 278, + 279, 280, 281, 282, 283, 263, 270, 277, 284, 285, + 286, 287, 288, 289, 324, 325, 326, 327, 328, 329, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 0, 169, 331, 123, 133, 332, 333, + 334, 0, 409, 0, 410, 0, 100, 99, 0, 111, + 116, 140, 139, 137, 141, 0, 134, 136, 121, 163, + 138, 330, 0, 406, 408, 0, 0, 0, 337, 0, + 0, 88, 85, 0, 98, 0, 107, 101, 109, 0, + 110, 0, 86, 117, 0, 91, 135, 122, 0, 164, + 1, 407, 161, 0, 132, 130, 0, 128, 335, 0, + 0, 89, 0, 0, 411, 102, 106, 108, 104, 112, + 103, 0, 118, 94, 0, 92, 0, 2, 6, 7, + 4, 5, 8, 0, 0, 0, 165, 34, 33, 35, + 32, 3, 10, 28, 12, 17, 18, 0, 0, 22, + 0, 36, 0, 40, 43, 46, 51, 54, 56, 58, + 60, 62, 64, 66, 0, 26, 0, 160, 0, 0, + 127, 0, 0, 0, 0, 0, 339, 87, 90, 0, + 0, 391, 0, 0, 0, 0, 0, 0, 0, 0, + 363, 372, 376, 36, 69, 82, 0, 352, 0, 121, + 355, 374, 354, 353, 0, 356, 357, 358, 359, 360, + 361, 105, 0, 113, 0, 347, 120, 0, 0, 96, + 0, 93, 29, 30, 0, 14, 15, 0, 0, 20, + 19, 0, 169, 23, 25, 31, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 67, 166, 167, 0, 162, + 84, 131, 129, 0, 0, 345, 0, 343, 338, 340, + 402, 401, 0, 393, 0, 405, 403, 0, 0, 0, + 388, 389, 362, 0, 72, 73, 75, 74, 77, 78, + 79, 80, 81, 76, 71, 0, 0, 377, 373, 375, + 115, 0, 350, 0, 119, 0, 97, 9, 0, 16, + 13, 24, 37, 38, 39, 42, 41, 44, 45, 49, + 50, 47, 48, 52, 53, 55, 57, 59, 61, 63, + 65, 0, 168, 336, 0, 346, 0, 341, 0, 0, + 0, 404, 0, 387, 0, 364, 70, 83, 114, 348, + 0, 95, 11, 0, 342, 344, 0, 396, 395, 398, + 370, 383, 381, 0, 0, 0, 0, 349, 351, 0, + 0, 397, 0, 0, 380, 0, 0, 378, 0, 0, + 0, 365, 68, 0, 399, 0, 370, 369, 371, 385, + 0, 367, 390, 366, 0, 400, 394, 379, 386, 0, + 382, 392, 384 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 281, 282, 283, 448, 284, 285, 286, 287, 288, + 289, 290, 333, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 334, 471, 335, 435, 336, + 401, 337, 193, 358, 266, 338, 195, 196, 197, 226, + 227, 228, 198, 199, 200, 201, 202, 203, 246, 247, + 204, 205, 206, 207, 243, 305, 239, 209, 210, 211, + 312, 249, 315, 316, 406, 407, 356, 443, 340, 341, + 342, 343, 423, 506, 532, 514, 515, 516, 533, 344, + 345, 346, 517, 505, 347, 518, 539, 348, 349, 484, + 412, 479, 499, 512, 513, 350, 212, 213, 214, 223 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -466 +static const yytype_int16 yypact[] = +{ + 2275, -466, -466, -466, -466, -466, -466, -466, -466, -205, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -192, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -179, -466, -466, -466, -466, -466, -466, + -466, -122, -466, -186, -198, -173, -175, 3686, -194, -466, + -121, -466, -466, -466, -466, 2749, -466, -466, -466, -141, + -466, -466, 527, -466, -466, -97, -37, -117, -466, 5459, + -200, -466, -466, -112, -466, 3686, -466, -466, -466, 3686, + -71, -44, -466, -191, -142, -466, -466, -466, 4117, -82, + -466, -466, -466, -202, -466, -76, -137, -466, -466, 3686, + -73, -466, -196, 781, -466, -466, -466, -466, -141, -155, + -466, 4342, -152, -466, -38, -466, -177, -466, -466, -466, + -466, -466, -466, 5015, 5015, 5015, -466, -466, -466, -466, + -466, -466, -466, -185, -466, -466, -466, -63, -128, 5237, + -61, -466, 5015, -106, -100, -157, -183, -78, -81, -79, + -80, -43, -46, -197, -58, -466, 4568, -466, -27, 5015, + -466, -37, 3686, 3686, -25, 2984, -466, -466, -466, -62, + -57, -466, -51, -48, -56, 4793, -45, 5015, -50, -40, + -41, -466, -466, -153, -466, -466, -147, -466, -198, -39, + -466, -466, -466, -466, 1035, -466, -466, -466, -466, -466, + -466, -82, 4342, -143, 4342, -466, -466, 4342, 3686, -466, + -15, -466, -466, -466, -126, -466, -466, 5015, -10, -466, + -466, 5015, -36, -466, -466, -466, 5015, 5015, 5015, 5015, + 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, + 5015, 5015, 5015, 5015, 5015, -466, -466, -466, -35, -466, + -466, -466, -466, 3218, -25, -141, -127, -466, -466, -466, + -466, -466, 1289, -466, 5015, -466, -466, -108, 5015, -91, + -466, -466, -466, 1289, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, 5015, 5015, -466, -466, -466, + -466, 4342, -466, -92, -466, 3452, -466, -466, -34, -31, + -466, -466, -466, -466, -466, -106, -106, -100, -100, -157, + -157, -157, -157, -183, -183, -78, -81, -79, -80, -43, + -46, 5015, -466, -466, -107, -82, -25, -466, -4, 2036, + -123, -466, -116, -466, 2510, 1289, -466, -466, -466, -466, + 3890, -466, -466, -83, -466, -466, -29, -466, -466, 2510, + -32, -466, -31, 1, 3686, -24, -26, -466, -466, 5015, + 5015, -466, -30, -19, 196, -20, 1797, -466, -18, -22, + 1543, -466, -466, -113, 5015, 1543, -32, -466, -466, 1289, + 4342, -466, -466, -466, -17, -31, -466, -466, 1289, -14, + -466, -466, -466 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -52, -466, -226, -225, -261, -229, -166, -164, + -167, -165, -162, -161, -466, -227, -466, -258, -466, -269, + -466, 4, -466, -466, -466, 5, -466, -466, -466, -1, + 9, 6, -466, -466, -465, -466, -466, -466, -466, -75, + -466, -195, -204, -466, -466, 0, -212, -466, 46, -466, + -466, -466, -297, -299, -160, -238, -340, -466, -240, -337, + -440, -273, -466, -466, -282, -281, -466, -466, 23, -413, + -232, -466, -466, -251, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, 40, -466, -466 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -369 +static const yytype_int16 yytable[] = +{ + 208, 236, 229, 355, 192, 194, 364, 439, 252, 244, + 485, 304, 440, 220, 442, 403, 409, 444, 394, 503, + 217, 262, 215, 365, 366, 236, 307, 383, 384, 238, + 229, 373, 308, 306, 503, 216, 260, 251, 238, 222, + 231, 318, -27, 232, 367, 261, 351, 353, 368, 381, + 382, 221, 218, 395, 313, 224, 417, 360, 419, 225, + 361, 445, 385, 386, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 238, 478, 528, 306, 233, 398, + 531, 352, 400, 434, 357, 531, 306, 436, 238, 263, + 437, 310, 264, 441, 355, 265, 355, 311, 449, 355, + 370, 488, 447, 242, 409, 500, 371, 476, 436, 236, + 477, 436, 501, 451, 248, 534, 538, 313, 436, 253, + 313, 436, 459, 460, 461, 462, 436, 476, 258, 481, + 494, 188, 189, 190, 387, 388, 376, 377, 378, 379, + 489, 380, 490, 436, 483, 480, 409, 306, 439, 482, + 508, 436, 509, 455, 456, 259, 457, 458, 463, 464, + 309, 359, 245, 313, 317, 369, 374, 391, 389, 390, + 393, 392, 396, 399, 405, 410, 413, 486, 487, 414, + 411, 415, 418, 355, 446, 420, 291, 421, -26, 450, + 540, 422, -21, 475, 496, 472, 492, 230, 510, -368, + 519, 439, 493, 436, 520, 237, 521, 524, 313, 525, + 526, 330, 208, 529, 530, 502, 192, 194, 542, 250, + 541, 362, 363, 465, 467, 230, 466, 468, 256, 230, + 502, 469, 355, 470, 255, 257, 402, 219, 495, 497, + 375, 523, 527, 536, 474, 537, 254, 498, 511, 314, + 313, 522, 241, 339, 291, 535, 0, 291, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 504, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 236, 0, 0, 0, 504, 0, 0, 0, 0, 0, + 0, 0, 314, 404, 0, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 452, 453, 454, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 0, 339, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 339, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, + 0, 0, 0, 0, 339, 339, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, + 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 339, 0, 0, 0, + 339, 0, 0, 0, 0, 339, 0, 240, 0, 339, + 1, 2, 3, 4, 5, 6, 7, 8, 339, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 0, 0, 185, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, + 188, 189, 190, 191, 1, 2, 3, 4, 5, 6, + 7, 8, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 329, + 267, 185, 268, 269, 270, 271, 272, 0, 0, 273, + 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 275, 0, + 0, 0, 330, 331, 0, 0, 0, 0, 332, 277, + 278, 279, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 187, 188, 189, 190, 191, 1, 2, + 3, 4, 5, 6, 7, 8, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 329, 267, 185, 268, 269, 270, 271, + 272, 0, 0, 273, 274, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 275, 0, 0, 0, 330, 438, 0, 0, + 0, 0, 332, 277, 278, 279, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 186, 187, 188, 189, + 190, 191, 1, 2, 3, 4, 5, 6, 7, 8, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 329, 267, 185, + 268, 269, 270, 271, 272, 0, 0, 273, 274, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 275, 0, 0, 0, + 330, 0, 0, 0, 0, 0, 332, 277, 278, 279, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 186, 187, 188, 189, 190, 191, 1, 2, 3, 4, + 5, 6, 7, 8, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 329, 267, 185, 268, 269, 270, 271, 272, 0, + 0, 273, 274, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 275, 0, 0, 0, 253, 0, 0, 0, 0, 0, + 332, 277, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 187, 188, 189, 190, 191, + 1, 2, 3, 4, 5, 6, 7, 8, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 329, 267, 185, 268, 269, + 270, 271, 272, 0, 0, 273, 274, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 277, 278, 279, 280, 1, + 2, 3, 4, 5, 6, 7, 8, 0, 186, 187, + 188, 189, 190, 191, 0, 0, 0, 0, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 0, 267, 185, 268, 269, 270, + 271, 272, 0, 0, 273, 274, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 275, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 332, 277, 278, 279, 280, 1, 2, + 3, 4, 5, 6, 7, 8, 0, 186, 187, 188, + 189, 190, 191, 0, 0, 0, 0, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 0, 0, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 186, 187, 188, 189, + 190, 191, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 0, 267, + 185, 268, 269, 270, 271, 272, 0, 0, 273, 274, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 277, 278, + 279, 280, 1, 2, 3, 4, 5, 6, 7, 8, + 0, 186, 187, 188, 189, 190, 0, 0, 0, 0, + 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 0, 234, 185, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 235, 1, 2, 3, + 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, + 186, 187, 188, 189, 190, 0, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 0, 0, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 408, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, + 0, 0, 0, 0, 0, 186, 187, 188, 189, 190, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 0, 0, 185, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 473, 0, 0, 0, 0, 1, 2, 3, 4, 5, + 6, 7, 8, 0, 0, 0, 0, 0, 0, 186, + 187, 188, 189, 190, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 0, 0, 185, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 491, 0, 0, 0, 0, 1, + 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, + 0, 0, 0, 186, 187, 188, 189, 190, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 0, 0, 185, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 186, 187, 188, + 189, 190, 39, 40, 41, 42, 43, 44, 0, 0, + 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 0, 267, + 185, 268, 269, 270, 271, 272, 0, 0, 273, 274, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, + 0, 354, 507, 4, 5, 6, 7, 8, 277, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 41, 42, 43, 44, 0, 0, 0, 0, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 0, 267, 185, 268, 269, + 270, 271, 272, 0, 0, 273, 274, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 275, 0, 0, 276, 4, 5, + 6, 7, 8, 0, 0, 277, 278, 279, 280, 0, + 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 40, 41, 42, 43, 44, + 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 0, 267, 185, 268, 269, 270, 271, 272, 0, 0, + 273, 274, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, + 0, 0, 0, 354, 4, 5, 6, 7, 8, 0, + 277, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 0, 267, 185, 268, + 269, 270, 271, 272, 0, 0, 273, 274, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 275, 0, 0, 397, 4, + 5, 6, 7, 8, 0, 0, 277, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 39, 40, 41, 42, 43, + 44, 0, 0, 0, 0, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 0, 267, 185, 268, 269, 270, 271, 272, 0, + 0, 273, 274, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 275, 4, 5, 6, 7, 8, 0, 0, 0, 0, + 416, 277, 278, 279, 280, 0, 0, 0, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, + 42, 43, 44, 0, 0, 0, 0, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 0, 267, 185, 268, 269, 270, 271, + 272, 0, 0, 273, 274, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 275, 4, 5, 6, 7, 8, 0, 0, + 0, 0, 0, 277, 278, 279, 280, 0, 0, 0, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 41, 42, 43, 44, 0, 0, 0, 0, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 372, 0, 267, 185, 268, 269, + 270, 271, 272, 0, 0, 273, 274, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 275, 4, 5, 6, 7, 8, + 0, 0, 0, 0, 0, 277, 278, 279, 280, 0, + 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 40, 41, 42, 43, 44, 0, 0, 0, + 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 0, 0, 185 +}; + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-466))) + +#define yytable_value_is_error(Yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 0, 205, 197, 261, 0, 0, 275, 344, 220, 46, + 423, 238, 352, 199, 354, 312, 315, 357, 215, 484, + 199, 233, 227, 208, 209, 229, 228, 210, 211, 229, + 225, 289, 234, 229, 499, 227, 227, 237, 229, 237, + 234, 237, 227, 237, 229, 236, 258, 259, 233, 206, + 207, 237, 231, 250, 249, 228, 325, 234, 327, 234, + 237, 358, 245, 246, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 229, 412, 516, 229, 199, 306, + 520, 236, 309, 236, 236, 525, 229, 234, 229, 231, + 237, 228, 234, 236, 352, 237, 354, 234, 367, 357, + 228, 441, 228, 200, 403, 228, 234, 234, 234, 313, + 237, 234, 228, 371, 231, 228, 529, 312, 234, 231, + 315, 234, 383, 384, 385, 386, 234, 234, 199, 237, + 237, 253, 254, 255, 212, 213, 242, 243, 244, 239, + 232, 241, 234, 234, 235, 414, 445, 229, 485, 418, + 490, 234, 235, 379, 380, 199, 381, 382, 387, 388, + 236, 199, 199, 358, 237, 228, 227, 247, 249, 248, + 216, 214, 230, 200, 199, 237, 227, 435, 436, 227, + 237, 237, 227, 441, 199, 235, 238, 227, 227, 199, + 530, 232, 228, 405, 198, 230, 230, 197, 227, 231, + 199, 538, 471, 234, 228, 205, 232, 237, 403, 228, + 14, 231, 212, 231, 236, 484, 212, 212, 232, 219, + 237, 273, 274, 389, 391, 225, 390, 392, 229, 229, + 499, 393, 490, 394, 225, 229, 311, 191, 476, 479, + 292, 510, 515, 525, 404, 526, 223, 479, 499, 249, + 445, 509, 212, 253, 306, 524, -1, 309, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 530, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 484, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 504, -1, -1, -1, 499, -1, -1, -1, -1, -1, + -1, -1, 312, 313, -1, 315, -1, -1, -1, -1, + -1, -1, -1, -1, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, 344, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 358, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 403, -1, -1, -1, -1, -1, -1, + -1, -1, 412, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 423, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 445, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, + -1, -1, -1, -1, 484, 485, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 499, + -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 516, -1, -1, -1, + 520, -1, -1, -1, -1, 525, -1, 0, -1, 529, + 3, 4, 5, 6, 7, 8, 9, 10, 538, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, -1, -1, 200, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 251, 252, + 253, 254, 255, 256, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, -1, -1, 208, + 209, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 227, -1, + -1, -1, 231, 232, -1, -1, -1, -1, 237, 238, + 239, 240, 241, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 251, 252, 253, 254, 255, 256, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, -1, -1, 208, 209, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 227, -1, -1, -1, 231, 232, -1, -1, + -1, -1, 237, 238, 239, 240, 241, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 251, 252, 253, 254, + 255, 256, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, -1, -1, 208, 209, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 227, -1, -1, -1, + 231, -1, -1, -1, -1, -1, 237, 238, 239, 240, + 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 251, 252, 253, 254, 255, 256, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, + -1, 208, 209, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, + 237, 238, 239, 240, 241, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 251, 252, 253, 254, 255, 256, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, -1, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, -1, -1, 208, 209, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 227, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 237, 238, 239, 240, 241, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 251, 252, + 253, 254, 255, 256, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, + 204, 205, -1, -1, 208, 209, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 227, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 237, 238, 239, 240, 241, 3, 4, + 5, 6, 7, 8, 9, 10, -1, 251, 252, 253, + 254, 255, 256, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, -1, -1, 200, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, 251, 252, 253, 254, + 255, 256, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, + 200, 201, 202, 203, 204, 205, -1, -1, 208, 209, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 227, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 238, 239, + 240, 241, 3, 4, 5, 6, 7, 8, 9, 10, + -1, 251, 252, 253, 254, 255, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 237, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + 251, 252, 253, 254, 255, -1, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, -1, -1, 200, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 232, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, 251, 252, 253, 254, 255, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, -1, -1, 200, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 232, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, 9, 10, -1, -1, -1, -1, -1, -1, 251, + 252, 253, 254, 255, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + -1, -1, 200, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 232, -1, -1, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, 251, 252, 253, 254, 255, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, -1, -1, 200, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 251, 252, 253, + 254, 255, 52, 53, 54, 55, 56, 57, -1, -1, + -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, + 200, 201, 202, 203, 204, 205, -1, -1, 208, 209, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 227, -1, -1, + -1, 231, 232, 6, 7, 8, 9, 10, 238, 239, + 240, 241, -1, -1, -1, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, + 53, 54, 55, 56, 57, -1, -1, -1, -1, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, + 203, 204, 205, -1, -1, 208, 209, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 227, -1, -1, 230, 6, 7, + 8, 9, 10, -1, -1, 238, 239, 240, 241, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 52, 53, 54, 55, 56, 57, + -1, -1, -1, -1, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + -1, 199, 200, 201, 202, 203, 204, 205, -1, -1, + 208, 209, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, + -1, -1, -1, 231, 6, 7, 8, 9, 10, -1, + 238, 239, 240, 241, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 52, 53, 54, 55, 56, 57, -1, -1, -1, -1, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, + 202, 203, 204, 205, -1, -1, 208, 209, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 227, -1, -1, 230, 6, + 7, 8, 9, 10, -1, -1, 238, 239, 240, 241, + -1, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 52, 53, 54, 55, 56, + 57, -1, -1, -1, -1, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, + -1, 208, 209, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 227, 6, 7, 8, 9, 10, -1, -1, -1, -1, + 237, 238, 239, 240, 241, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 52, 53, 54, + 55, 56, 57, -1, -1, -1, -1, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, + 205, -1, -1, 208, 209, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 227, 6, 7, 8, 9, 10, -1, -1, + -1, -1, -1, 238, 239, 240, 241, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, + 53, 54, 55, 56, 57, -1, -1, -1, -1, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, + 203, 204, 205, -1, -1, 208, 209, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 227, 6, 7, 8, 9, 10, + -1, -1, -1, -1, -1, 238, 239, 240, 241, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 52, 53, 54, 55, 56, 57, -1, -1, -1, + -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, -1, -1, 200 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 200, 251, 252, 253, 254, + 255, 256, 291, 292, 295, 296, 297, 298, 302, 303, + 304, 305, 306, 307, 310, 311, 312, 313, 315, 317, + 318, 319, 356, 357, 358, 227, 227, 199, 231, 318, + 199, 237, 237, 359, 228, 234, 299, 300, 301, 311, + 315, 234, 237, 199, 199, 237, 312, 315, 229, 316, + 0, 357, 200, 314, 46, 199, 308, 309, 231, 321, + 315, 237, 316, 231, 338, 300, 299, 301, 199, 199, + 227, 236, 316, 231, 234, 237, 294, 199, 201, 202, + 203, 204, 205, 208, 209, 227, 230, 238, 239, 240, + 241, 261, 262, 263, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 315, 229, 228, 234, 236, + 228, 234, 320, 311, 315, 322, 323, 237, 237, 11, + 12, 13, 15, 16, 17, 18, 19, 20, 21, 198, + 231, 232, 237, 272, 285, 287, 289, 291, 295, 315, + 328, 329, 330, 331, 339, 340, 341, 344, 347, 348, + 355, 316, 236, 316, 231, 287, 326, 236, 293, 199, + 234, 237, 272, 272, 289, 208, 209, 229, 233, 228, + 228, 234, 197, 287, 227, 272, 242, 243, 244, 239, + 241, 206, 207, 210, 211, 245, 246, 212, 213, 249, + 248, 247, 214, 216, 215, 250, 230, 230, 285, 200, + 285, 290, 309, 322, 315, 199, 324, 325, 232, 323, + 237, 237, 350, 227, 227, 237, 237, 289, 227, 289, + 235, 227, 232, 332, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 236, 288, 234, 237, 232, 329, + 326, 236, 326, 327, 326, 322, 199, 228, 264, 289, + 199, 287, 272, 272, 272, 274, 274, 275, 275, 276, + 276, 276, 276, 277, 277, 278, 279, 280, 281, 282, + 283, 286, 230, 232, 324, 316, 234, 237, 329, 351, + 289, 237, 289, 235, 349, 339, 287, 287, 326, 232, + 234, 232, 230, 289, 237, 325, 198, 328, 340, 352, + 228, 228, 289, 304, 311, 343, 333, 232, 326, 235, + 227, 343, 353, 354, 335, 336, 337, 342, 345, 199, + 228, 232, 287, 289, 237, 228, 14, 331, 330, 231, + 236, 330, 334, 338, 228, 289, 334, 335, 339, 346, + 326, 237, 232 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (pParseContext, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, parseContext) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, pParseContext); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; + YYUSE (pParseContext); +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) +#else +static void +yy_reduce_print (yyvsp, yyrule, pParseContext) + YYSTYPE *yyvsp; + int yyrule; + glslang::TParseContext* pParseContext; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , pParseContext); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, pParseContext); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, pParseContext) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + glslang::TParseContext* pParseContext; +#endif +{ + YYUSE (yyvaluep); + YYUSE (pParseContext); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (glslang::TParseContext* pParseContext) +#else +int +yyparse (pParseContext) + glslang::TParseContext* pParseContext; +#endif +#endif +{ +/* The lookahead symbol. */ +int yychar; + + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +/* Default value used for initialization, for pacifying older GCCs + or non-GCC compilers. */ +static YYSTYPE yyval_default; +# define YY_INITIAL_VALUE(Value) = Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); + + /* Number of syntax errors so far. */ + int yynerrs; + + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +/* Line 1792 of yacc.c */ +#line 244 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[(1) - (1)].lex).loc, (yyvsp[(1) - (1)].lex).symbol, (yyvsp[(1) - (1)].lex).string); + } + break; + + case 3: +/* Line 1792 of yacc.c */ +#line 250 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 4: +/* Line 1792 of yacc.c */ +#line 253 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 5: +/* Line 1792 of yacc.c */ +#line 256 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 6: +/* Line 1792 of yacc.c */ +#line 260 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 7: +/* Line 1792 of yacc.c */ +#line 263 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtDouble, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 8: +/* Line 1792 of yacc.c */ +#line 267 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).b, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 9: +/* Line 1792 of yacc.c */ +#line 270 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + } + break; + + case 10: +/* Line 1792 of yacc.c */ +#line 278 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 11: +/* Line 1792 of yacc.c */ +#line 281 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.intermTypedNode), (yyvsp[(3) - (4)].interm.intermTypedNode)); + } + break; + + case 12: +/* Line 1792 of yacc.c */ +#line 284 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 13: +/* Line 1792 of yacc.c */ +#line 287 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[(3) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode), *(yyvsp[(3) - (3)].lex).string); + } + break; + + case 14: +/* Line 1792 of yacc.c */ +#line 290 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "++", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "++", EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); + } + break; + + case 15: +/* Line 1792 of yacc.c */ +#line 295 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "--", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "--", EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); + } + break; + + case 16: +/* Line 1792 of yacc.c */ +#line 303 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.integerCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]"); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 17: +/* Line 1792 of yacc.c */ +#line 310 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[(1) - (1)].interm).loc, (yyvsp[(1) - (1)].interm).function, (yyvsp[(1) - (1)].interm).intermNode); + delete (yyvsp[(1) - (1)].interm).function; + } + break; + + case 18: +/* Line 1792 of yacc.c */ +#line 317 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + } + break; + + case 19: +/* Line 1792 of yacc.c */ +#line 323 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + } + break; + + case 20: +/* Line 1792 of yacc.c */ +#line 327 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + } + break; + + case 21: +/* Line 1792 of yacc.c */ +#line 334 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + } + break; + + case 22: +/* Line 1792 of yacc.c */ +#line 337 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + } + break; + + case 23: +/* Line 1792 of yacc.c */ +#line 343 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[(2) - (2)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (2)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (2)].interm).function; + (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode); + } + break; + + case 24: +/* Line 1792 of yacc.c */ +#line 350 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[(3) - (3)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (3)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (3)].interm).function; + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 25: +/* Line 1792 of yacc.c */ +#line 360 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + } + break; + + case 26: +/* Line 1792 of yacc.c */ +#line 368 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // Constructor + (yyval.interm).intermNode = 0; + (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type)); + } + break; + + case 27: +/* Line 1792 of yacc.c */ +#line 373 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // + // Should be a method or subroutine call, but we haven't recognized the arguments yet. + // + (yyval.interm).function = 0; + (yyval.interm).intermNode = 0; + + TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode(); + if (method) { + (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); + (yyval.interm).intermNode = method->getObject(); + } else { + TIntermSymbol* symbol = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsSymbolNode(); + if (symbol) { + parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); + TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); + (yyval.interm).function = function; + } else + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); + } + + if ((yyval.interm).function == 0) { + // error recover + TString empty(""); + (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull); + } + } + break; + + case 28: +/* Line 1792 of yacc.c */ +#line 403 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[(1) - (1)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + if (TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode()) + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); + } + break; + + case 29: +/* Line 1792 of yacc.c */ +#line 409 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "++", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "++", EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } + break; + + case 30: +/* Line 1792 of yacc.c */ +#line 413 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "--", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "--", EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } + break; + + case 31: +/* Line 1792 of yacc.c */ +#line 417 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (2)].interm).op != EOpNull) { + char errorOp[2] = {0, 0}; + switch((yyvsp[(1) - (2)].interm).op) { + case EOpNegative: errorOp[0] = '-'; break; + case EOpLogicalNot: errorOp[0] = '!'; break; + case EOpBitwiseNot: errorOp[0] = '~'; break; + default: break; // some compilers want this + } + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].interm).loc, errorOp, (yyvsp[(1) - (2)].interm).op, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } else { + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + } + } + break; + + case 32: +/* Line 1792 of yacc.c */ +#line 437 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNull; } + break; + + case 33: +/* Line 1792 of yacc.c */ +#line 438 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNegative; } + break; + + case 34: +/* Line 1792 of yacc.c */ +#line 439 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLogicalNot; } + break; + + case 35: +/* Line 1792 of yacc.c */ +#line 440 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpBitwiseNot; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise not"); } + break; + + case 36: +/* Line 1792 of yacc.c */ +#line 446 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 37: +/* Line 1792 of yacc.c */ +#line 447 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "*", EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 38: +/* Line 1792 of yacc.c */ +#line 452 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "/", EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 39: +/* Line 1792 of yacc.c */ +#line 457 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "%"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "%", EOpMod, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 40: +/* Line 1792 of yacc.c */ +#line 466 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 41: +/* Line 1792 of yacc.c */ +#line 467 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "+", EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 42: +/* Line 1792 of yacc.c */ +#line 472 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "-", EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 43: +/* Line 1792 of yacc.c */ +#line 480 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 44: +/* Line 1792 of yacc.c */ +#line 481 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift left"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<<", EOpLeftShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 45: +/* Line 1792 of yacc.c */ +#line 487 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift right"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">>", EOpRightShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 46: +/* Line 1792 of yacc.c */ +#line 496 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 47: +/* Line 1792 of yacc.c */ +#line 497 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<", EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 48: +/* Line 1792 of yacc.c */ +#line 502 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">", EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 49: +/* Line 1792 of yacc.c */ +#line 507 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<=", EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 50: +/* Line 1792 of yacc.c */ +#line 512 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 51: +/* Line 1792 of yacc.c */ +#line 520 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 52: +/* Line 1792 of yacc.c */ +#line 521 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "==", EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 53: +/* Line 1792 of yacc.c */ +#line 529 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "!=", EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 54: +/* Line 1792 of yacc.c */ +#line 540 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 55: +/* Line 1792 of yacc.c */ +#line 541 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise and"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&", EOpAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 56: +/* Line 1792 of yacc.c */ +#line 550 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 57: +/* Line 1792 of yacc.c */ +#line 551 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise exclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^", EOpExclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 58: +/* Line 1792 of yacc.c */ +#line 560 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 59: +/* Line 1792 of yacc.c */ +#line 561 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise inclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "|", EOpInclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 60: +/* Line 1792 of yacc.c */ +#line 570 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 61: +/* Line 1792 of yacc.c */ +#line 571 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&&", EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 62: +/* Line 1792 of yacc.c */ +#line 579 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 63: +/* Line 1792 of yacc.c */ +#line 580 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^^", EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 64: +/* Line 1792 of yacc.c */ +#line 588 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 65: +/* Line 1792 of yacc.c */ +#line 589 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "||", EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 66: +/* Line 1792 of yacc.c */ +#line 597 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 67: +/* Line 1792 of yacc.c */ +#line 598 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + ++parseContext.controlFlowNestingLevel; + } + break; + + case 68: +/* Line 1792 of yacc.c */ +#line 601 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + --parseContext.controlFlowNestingLevel; + parseContext.boolCheck((yyvsp[(2) - (6)].lex).loc, (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (6)].lex).loc, "?", (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[(1) - (6)].interm.intermTypedNode), (yyvsp[(4) - (6)].interm.intermTypedNode), (yyvsp[(6) - (6)].interm.intermTypedNode), (yyvsp[(2) - (6)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(6) - (6)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(6) - (6)].interm.intermTypedNode); + } + } + break; + + case 69: +/* Line 1792 of yacc.c */ +#line 616 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 70: +/* Line 1792 of yacc.c */ +#line 617 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array assignment"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.specializationCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.lValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(3) - (3)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].interm).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.assignError((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + } + break; + + case 71: +/* Line 1792 of yacc.c */ +#line 632 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAssign; + } + break; + + case 72: +/* Line 1792 of yacc.c */ +#line 636 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpMulAssign; + } + break; + + case 73: +/* Line 1792 of yacc.c */ +#line 640 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpDivAssign; + } + break; + + case 74: +/* Line 1792 of yacc.c */ +#line 644 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "%="); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpModAssign; + } + break; + + case 75: +/* Line 1792 of yacc.c */ +#line 649 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAddAssign; + } + break; + + case 76: +/* Line 1792 of yacc.c */ +#line 653 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpSubAssign; + } + break; + + case 77: +/* Line 1792 of yacc.c */ +#line 657 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift left assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; + } + break; + + case 78: +/* Line 1792 of yacc.c */ +#line 661 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift right assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpRightShiftAssign; + } + break; + + case 79: +/* Line 1792 of yacc.c */ +#line 665 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-and assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpAndAssign; + } + break; + + case 80: +/* Line 1792 of yacc.c */ +#line 669 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-xor assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; + } + break; + + case 81: +/* Line 1792 of yacc.c */ +#line 673 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-or assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; + } + break; + + case 82: +/* Line 1792 of yacc.c */ +#line 680 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 83: +/* Line 1792 of yacc.c */ +#line 683 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode); + } + } + break; + + case 84: +/* Line 1792 of yacc.c */ +#line 693 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.constantValueCheck((yyvsp[(1) - (1)].interm.intermTypedNode), ""); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 85: +/* Line 1792 of yacc.c */ +#line 700 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.handleFunctionDeclarator((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).function, true /* prototype */); + (yyval.interm.intermNode) = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature + } + break; + + case 86: +/* Line 1792 of yacc.c */ +#line 705 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (2)].interm).intermNode && (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()) + (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermNode; + } + break; + + case 87: +/* Line 1792 of yacc.c */ +#line 710 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ENoProfile, 130, 0, "precision statement"); + + // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope + parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); + parseContext.setDefaultPrecision((yyvsp[(1) - (4)].lex).loc, (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.type).qualifier.precision); + (yyval.interm.intermNode) = 0; + } + break; + + case 88: +/* Line 1792 of yacc.c */ +#line 718 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).typeList); + (yyval.interm.intermNode) = 0; + } + break; + + case 89: +/* Line 1792 of yacc.c */ +#line 722 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[(1) - (3)].interm).loc, *(yyvsp[(1) - (3)].interm).typeList, (yyvsp[(2) - (3)].lex).string); + (yyval.interm.intermNode) = 0; + } + break; + + case 90: +/* Line 1792 of yacc.c */ +#line 726 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[(1) - (4)].interm).loc, *(yyvsp[(1) - (4)].interm).typeList, (yyvsp[(2) - (4)].lex).string, (yyvsp[(3) - (4)].interm).arraySizes); + (yyval.interm.intermNode) = 0; + } + break; + + case 91: +/* Line 1792 of yacc.c */ +#line 730 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.updateStandaloneQualifierDefaults((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type)); + (yyval.interm.intermNode) = 0; + } + break; + + case 92: +/* Line 1792 of yacc.c */ +#line 735 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).shaderQualifiers); + parseContext.addQualifierToExisting((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).qualifier, *(yyvsp[(2) - (3)].lex).string); + (yyval.interm.intermNode) = 0; + } + break; + + case 93: +/* Line 1792 of yacc.c */ +#line 740 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + (yyvsp[(3) - (4)].interm.identifierList)->push_back((yyvsp[(2) - (4)].lex).string); + parseContext.addQualifierToExisting((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier, *(yyvsp[(3) - (4)].interm.identifierList)); + (yyval.interm.intermNode) = 0; + } + break; + + case 94: +/* Line 1792 of yacc.c */ +#line 749 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { parseContext.nestedBlockCheck((yyvsp[(1) - (3)].interm.type).loc); } + break; + + case 95: +/* Line 1792 of yacc.c */ +#line 749 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + --parseContext.structNestingLevel; + parseContext.blockName = (yyvsp[(2) - (6)].lex).string; + parseContext.globalQualifierFixCheck((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).qualifier); + parseContext.checkNoShaderLayouts((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).shaderQualifiers); + parseContext.currentBlockQualifier = (yyvsp[(1) - (6)].interm.type).qualifier; + (yyval.interm).loc = (yyvsp[(1) - (6)].interm.type).loc; + (yyval.interm).typeList = (yyvsp[(5) - (6)].interm.typeList); + } + break; + + case 96: +/* Line 1792 of yacc.c */ +#line 760 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.identifierList) = new TIdentifierList; + (yyval.interm.identifierList)->push_back((yyvsp[(2) - (2)].lex).string); + } + break; + + case 97: +/* Line 1792 of yacc.c */ +#line 764 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.identifierList) = (yyvsp[(1) - (3)].interm.identifierList); + (yyval.interm.identifierList)->push_back((yyvsp[(3) - (3)].lex).string); + } + break; + + case 98: +/* Line 1792 of yacc.c */ +#line 771 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + } + break; + + case 99: +/* Line 1792 of yacc.c */ +#line 778 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); + } + break; + + case 100: +/* Line 1792 of yacc.c */ +#line 781 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); + } + break; + + case 101: +/* Line 1792 of yacc.c */ +#line 788 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function); + if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid) + (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param); + else + delete (yyvsp[(2) - (2)].interm).param.type; + } + break; + + case 102: +/* Line 1792 of yacc.c */ +#line 796 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // + // Only first parameter of one-parameter functions can be void + // The check for named parameters not being void is done in parameter_declarator + // + if ((yyvsp[(3) - (3)].interm).param.type->getBasicType() == EbtVoid) { + // + // This parameter > first is void + // + parseContext.error((yyvsp[(2) - (3)].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); + delete (yyvsp[(3) - (3)].interm).param.type; + } else { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function); + (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param); + } + } + break; + + case 103: +/* Line 1792 of yacc.c */ +#line 816 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqTemporary) { + parseContext.error((yyvsp[(2) - (3)].lex).loc, "no qualifiers allowed for function return", + GetStorageQualifierString((yyvsp[(1) - (3)].interm.type).qualifier.storage), ""); + } + if ((yyvsp[(1) - (3)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type((yyvsp[(1) - (3)].interm.type)); + function = new TFunction((yyvsp[(2) - (3)].lex).string, type); + (yyval.interm.function) = function; + } + break; + + case 104: +/* Line 1792 of yacc.c */ +#line 834 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (2)].interm.type).loc, *(yyvsp[(1) - (2)].interm.type).arraySizes); + } + if ((yyvsp[(1) - (2)].interm.type).basicType == EbtVoid) { + parseContext.error((yyvsp[(2) - (2)].lex).loc, "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str(), ""); + } + parseContext.reservedErrorCheck((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string); + + TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + (yyval.interm).param = param; + } + break; + + case 105: +/* Line 1792 of yacc.c */ +#line 849 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + parseContext.arrayDimCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.type).arraySizes, (yyvsp[(3) - (3)].interm).arraySizes); + + parseContext.arraySizeRequiredCheck((yyvsp[(3) - (3)].interm).loc, *(yyvsp[(3) - (3)].interm).arraySizes); + parseContext.reservedErrorCheck((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string); + + (yyvsp[(1) - (3)].interm.type).arraySizes = (yyvsp[(3) - (3)].interm).arraySizes; + + TParameter param = { (yyvsp[(2) - (3)].lex).string, new TType((yyvsp[(1) - (3)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (3)].lex).loc; + (yyval.interm).param = param; + } + break; + + case 106: +/* Line 1792 of yacc.c */ +#line 872 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); + + } + break; + + case 107: +/* Line 1792 of yacc.c */ +#line 883 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + } + break; + + case 108: +/* Line 1792 of yacc.c */ +#line 893 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyvsp[(1) - (2)].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); + } + break; + + case 109: +/* Line 1792 of yacc.c */ +#line 903 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + } + break; + + case 110: +/* Line 1792 of yacc.c */ +#line 913 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) }; + (yyval.interm).param = param; + if ((yyvsp[(1) - (1)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (1)].interm.type).loc, *(yyvsp[(1) - (1)].interm.type).arraySizes); + } + break; + + case 111: +/* Line 1792 of yacc.c */ +#line 922 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + } + break; + + case 112: +/* Line 1792 of yacc.c */ +#line 925 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (3)].interm); + parseContext.declareVariable((yyvsp[(3) - (3)].lex).loc, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm).type); + } + break; + + case 113: +/* Line 1792 of yacc.c */ +#line 929 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (4)].interm); + parseContext.declareVariable((yyvsp[(3) - (4)].lex).loc, *(yyvsp[(3) - (4)].lex).string, (yyvsp[(1) - (4)].interm).type, (yyvsp[(4) - (4)].interm).arraySizes); + } + break; + + case 114: +/* Line 1792 of yacc.c */ +#line 933 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (6)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (6)].lex).loc, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, (yyvsp[(4) - (6)].interm).arraySizes, (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, initNode, (yyvsp[(5) - (6)].lex).loc); + } + break; + + case 115: +/* Line 1792 of yacc.c */ +#line 938 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (5)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (5)].lex).loc, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, 0, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, initNode, (yyvsp[(4) - (5)].lex).loc); + } + break; + + case 116: +/* Line 1792 of yacc.c */ +#line 946 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (1)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + } + break; + + case 117: +/* Line 1792 of yacc.c */ +#line 951 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (2)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string, (yyvsp[(1) - (2)].interm.type)); + } + break; + + case 118: +/* Line 1792 of yacc.c */ +#line 956 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (3)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string, (yyvsp[(1) - (3)].interm.type), (yyvsp[(3) - (3)].interm).arraySizes); + } + break; + + case 119: +/* Line 1792 of yacc.c */ +#line 961 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (5)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (5)].lex).loc, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), (yyvsp[(3) - (5)].interm).arraySizes, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(4) - (5)].lex).loc); + } + break; + + case 120: +/* Line 1792 of yacc.c */ +#line 966 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(3) - (4)].lex).loc); + } + break; + + case 121: +/* Line 1792 of yacc.c */ +#line 975 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier, (yyval.interm.type)); + if ((yyvsp[(1) - (1)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + } + + parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); + } + break; + + case 122: +/* Line 1792 of yacc.c */ +#line 986 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type)); + + if ((yyvsp[(2) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + } + + if ((yyvsp[(2) - (2)].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier)) + (yyvsp[(2) - (2)].interm.type).arraySizes = 0; + + parseContext.checkNoShaderLayouts((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + (yyvsp[(2) - (2)].interm.type).shaderQualifiers.merge((yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).basicType, (yyvsp[(2) - (2)].interm.type).qualifier); + + (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type); + + if (! (yyval.interm.type).qualifier.isInterpolation() && + ((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) || + (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) + (yyval.interm.type).qualifier.smooth = true; + } + break; + + case 123: +/* Line 1792 of yacc.c */ +#line 1013 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "invariant"); + parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.invariant = true; + } + break; + + case 124: +/* Line 1792 of yacc.c */ +#line 1022 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "smooth"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.smooth = true; + } + break; + + case 125: +/* Line 1792 of yacc.c */ +#line 1029 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "flat"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.flat = true; + } + break; + + case 126: +/* Line 1792 of yacc.c */ +#line 1036 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "noperspective"); + parseContext.requireProfile((yyvsp[(1) - (1)].lex).loc, ~EEsProfile, "noperspective"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "noperspective"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.nopersp = true; + } + break; + + case 127: +/* Line 1792 of yacc.c */ +#line 1046 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(3) - (4)].interm.type); + } + break; + + case 128: +/* Line 1792 of yacc.c */ +#line 1052 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 129: +/* Line 1792 of yacc.c */ +#line 1055 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (3)].interm.type); + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(3) - (3)].interm.type).shaderQualifiers); + parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[(3) - (3)].interm.type).qualifier, false); + } + break; + + case 130: +/* Line 1792 of yacc.c */ +#line 1062 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (1)].lex).string); + } + break; + + case 131: +/* Line 1792 of yacc.c */ +#line 1066 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (3)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (3)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (3)].lex).string, (yyvsp[(3) - (3)].interm.intermTypedNode)); + } + break; + + case 132: +/* Line 1792 of yacc.c */ +#line 1070 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { // because "shared" is both an identifier and a keyword + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + TString strShared("shared"); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), strShared); + } + break; + + case 133: +/* Line 1792 of yacc.c */ +#line 1078 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + } + break; + + case 134: +/* Line 1792 of yacc.c */ +#line 1084 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 135: +/* Line 1792 of yacc.c */ +#line 1087 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + if ((yyval.interm.type).basicType == EbtVoid) + (yyval.interm.type).basicType = (yyvsp[(2) - (2)].interm.type).basicType; + + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(2) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).qualifier, false); + } + break; + + case 136: +/* Line 1792 of yacc.c */ +#line 1098 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 137: +/* Line 1792 of yacc.c */ +#line 1101 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 138: +/* Line 1792 of yacc.c */ +#line 1104 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 139: +/* Line 1792 of yacc.c */ +#line 1107 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 140: +/* Line 1792 of yacc.c */ +#line 1111 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 141: +/* Line 1792 of yacc.c */ +#line 1115 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 142: +/* Line 1792 of yacc.c */ +#line 1122 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant + } + break; + + case 143: +/* Line 1792 of yacc.c */ +#line 1126 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangVertex, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "attribute"); + + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "attribute"); + + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } + break; + + case 144: +/* Line 1792 of yacc.c */ +#line 1138 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "varying"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "varying"); + + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "varying"); + + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + if (parseContext.language == EShLangVertex) + (yyval.interm.type).qualifier.storage = EvqVaryingOut; + else + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } + break; + + case 145: +/* Line 1792 of yacc.c */ +#line 1152 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "inout"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqInOut; + } + break; + + case 146: +/* Line 1792 of yacc.c */ +#line 1157 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "in"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqIn; + } + break; + + case 147: +/* Line 1792 of yacc.c */ +#line 1163 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "out"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqOut; + } + break; + + case 148: +/* Line 1792 of yacc.c */ +#line 1169 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "centroid"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.centroid = true; + } + break; + + case 149: +/* Line 1792 of yacc.c */ +#line 1176 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "patch"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.patch = true; + } + break; + + case 150: +/* Line 1792 of yacc.c */ +#line 1182 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "sample"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.sample = true; + } + break; + + case 151: +/* Line 1792 of yacc.c */ +#line 1187 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "uniform"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + } + break; + + case 152: +/* Line 1792 of yacc.c */ +#line 1192 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "buffer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqBuffer; + } + break; + + case 153: +/* Line 1792 of yacc.c */ +#line 1197 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile | ECompatibilityProfile, 430, 0, "shared"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 310, 0, "shared"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangCompute, "shared"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqShared; + } + break; + + case 154: +/* Line 1792 of yacc.c */ +#line 1204 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.coherent = true; + } + break; + + case 155: +/* Line 1792 of yacc.c */ +#line 1208 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.volatil = true; + } + break; + + case 156: +/* Line 1792 of yacc.c */ +#line 1212 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.restrict = true; + } + break; + + case 157: +/* Line 1792 of yacc.c */ +#line 1216 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.readonly = true; + } + break; + + case 158: +/* Line 1792 of yacc.c */ +#line 1220 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.writeonly = true; + } + break; + + case 159: +/* Line 1792 of yacc.c */ +#line 1224 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.spvRemoved((yyvsp[(1) - (1)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + } + break; + + case 160: +/* Line 1792 of yacc.c */ +#line 1230 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.spvRemoved((yyvsp[(1) - (4)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (4)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (4)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + // TODO: 4.0 semantics: subroutines + // 1) make sure each identifier is a type declared earlier with SUBROUTINE + // 2) save all of the identifiers for future comparison with the declared function + } + break; + + case 161: +/* Line 1792 of yacc.c */ +#line 1242 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // TODO: 4.0 functionality: subroutine type to list + } + break; + + case 162: +/* Line 1792 of yacc.c */ +#line 1245 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + } + break; + + case 163: +/* Line 1792 of yacc.c */ +#line 1250 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + } + break; + + case 164: +/* Line 1792 of yacc.c */ +#line 1254 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayDimCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + (yyval.interm.type).arraySizes = (yyvsp[(2) - (2)].interm).arraySizes; + } + break; + + case 165: +/* Line 1792 of yacc.c */ +#line 1263 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (2)].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; + (yyval.interm).arraySizes->addInnerSize(); + } + break; + + case 166: +/* Line 1792 of yacc.c */ +#line 1268 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (3)].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[(2) - (3)].interm.intermTypedNode)->getLoc(), (yyvsp[(2) - (3)].interm.intermTypedNode), size); + (yyval.interm).arraySizes->addInnerSize(size); + } + break; + + case 167: +/* Line 1792 of yacc.c */ +#line 1276 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (3)].interm); + (yyval.interm).arraySizes->addInnerSize(); + } + break; + + case 168: +/* Line 1792 of yacc.c */ +#line 1280 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (4)].interm); + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[(3) - (4)].interm.intermTypedNode)->getLoc(), (yyvsp[(3) - (4)].interm.intermTypedNode), size); + (yyval.interm).arraySizes->addInnerSize(size); + } + break; + + case 169: +/* Line 1792 of yacc.c */ +#line 1290 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtVoid; + } + break; + + case 170: +/* Line 1792 of yacc.c */ +#line 1294 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + } + break; + + case 171: +/* Line 1792 of yacc.c */ +#line 1298 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + } + break; + + case 172: +/* Line 1792 of yacc.c */ +#line 1303 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + } + break; + + case 173: +/* Line 1792 of yacc.c */ +#line 1307 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + } + break; + + case 174: +/* Line 1792 of yacc.c */ +#line 1312 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + } + break; + + case 175: +/* Line 1792 of yacc.c */ +#line 1316 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); + } + break; + + case 176: +/* Line 1792 of yacc.c */ +#line 1321 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } + break; + + case 177: +/* Line 1792 of yacc.c */ +#line 1326 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); + } + break; + + case 178: +/* Line 1792 of yacc.c */ +#line 1331 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); + } + break; + + case 179: +/* Line 1792 of yacc.c */ +#line 1337 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); + } + break; + + case 180: +/* Line 1792 of yacc.c */ +#line 1343 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); + } + break; + + case 181: +/* Line 1792 of yacc.c */ +#line 1349 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(2); + } + break; + + case 182: +/* Line 1792 of yacc.c */ +#line 1354 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); + } + break; + + case 183: +/* Line 1792 of yacc.c */ +#line 1359 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); + } + break; + + case 184: +/* Line 1792 of yacc.c */ +#line 1364 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } + break; + + case 185: +/* Line 1792 of yacc.c */ +#line 1369 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } + break; + + case 186: +/* Line 1792 of yacc.c */ +#line 1374 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); + } + break; + + case 187: +/* Line 1792 of yacc.c */ +#line 1379 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); + } + break; + + case 188: +/* Line 1792 of yacc.c */ +#line 1385 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); + } + break; + + case 189: +/* Line 1792 of yacc.c */ +#line 1391 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); + } + break; + + case 190: +/* Line 1792 of yacc.c */ +#line 1397 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 191: +/* Line 1792 of yacc.c */ +#line 1402 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 192: +/* Line 1792 of yacc.c */ +#line 1407 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 193: +/* Line 1792 of yacc.c */ +#line 1412 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 194: +/* Line 1792 of yacc.c */ +#line 1417 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); + } + break; + + case 195: +/* Line 1792 of yacc.c */ +#line 1422 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); + } + break; + + case 196: +/* Line 1792 of yacc.c */ +#line 1427 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); + } + break; + + case 197: +/* Line 1792 of yacc.c */ +#line 1432 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 198: +/* Line 1792 of yacc.c */ +#line 1437 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); + } + break; + + case 199: +/* Line 1792 of yacc.c */ +#line 1442 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); + } + break; + + case 200: +/* Line 1792 of yacc.c */ +#line 1447 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); + } + break; + + case 201: +/* Line 1792 of yacc.c */ +#line 1452 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 202: +/* Line 1792 of yacc.c */ +#line 1457 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 203: +/* Line 1792 of yacc.c */ +#line 1463 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 204: +/* Line 1792 of yacc.c */ +#line 1469 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 205: +/* Line 1792 of yacc.c */ +#line 1475 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 206: +/* Line 1792 of yacc.c */ +#line 1481 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } + break; + + case 207: +/* Line 1792 of yacc.c */ +#line 1487 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } + break; + + case 208: +/* Line 1792 of yacc.c */ +#line 1493 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); + } + break; + + case 209: +/* Line 1792 of yacc.c */ +#line 1499 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 210: +/* Line 1792 of yacc.c */ +#line 1505 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); + } + break; + + case 211: +/* Line 1792 of yacc.c */ +#line 1511 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); + } + break; + + case 212: +/* Line 1792 of yacc.c */ +#line 1517 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); + } + break; + + case 213: +/* Line 1792 of yacc.c */ +#line 1523 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 214: +/* Line 1792 of yacc.c */ +#line 1529 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.vulkanRemoved((yyvsp[(1) - (1)].lex).loc, "atomic counter types"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAtomicUint; + } + break; + + case 215: +/* Line 1792 of yacc.c */ +#line 1534 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D); + } + break; + + case 216: +/* Line 1792 of yacc.c */ +#line 1539 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + } + break; + + case 217: +/* Line 1792 of yacc.c */ +#line 1544 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd3D); + } + break; + + case 218: +/* Line 1792 of yacc.c */ +#line 1549 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube); + } + break; + + case 219: +/* Line 1792 of yacc.c */ +#line 1554 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); + } + break; + + case 220: +/* Line 1792 of yacc.c */ +#line 1559 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); + } + break; + + case 221: +/* Line 1792 of yacc.c */ +#line 1564 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); + } + break; + + case 222: +/* Line 1792 of yacc.c */ +#line 1569 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); + } + break; + + case 223: +/* Line 1792 of yacc.c */ +#line 1574 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); + } + break; + + case 224: +/* Line 1792 of yacc.c */ +#line 1579 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); + } + break; + + case 225: +/* Line 1792 of yacc.c */ +#line 1584 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); + } + break; + + case 226: +/* Line 1792 of yacc.c */ +#line 1589 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); + } + break; + + case 227: +/* Line 1792 of yacc.c */ +#line 1594 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); + } + break; + + case 228: +/* Line 1792 of yacc.c */ +#line 1599 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D); + } + break; + + case 229: +/* Line 1792 of yacc.c */ +#line 1604 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D); + } + break; + + case 230: +/* Line 1792 of yacc.c */ +#line 1609 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd3D); + } + break; + + case 231: +/* Line 1792 of yacc.c */ +#line 1614 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdCube); + } + break; + + case 232: +/* Line 1792 of yacc.c */ +#line 1619 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); + } + break; + + case 233: +/* Line 1792 of yacc.c */ +#line 1624 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); + } + break; + + case 234: +/* Line 1792 of yacc.c */ +#line 1629 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); + } + break; + + case 235: +/* Line 1792 of yacc.c */ +#line 1634 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D); + } + break; + + case 236: +/* Line 1792 of yacc.c */ +#line 1639 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D); + } + break; + + case 237: +/* Line 1792 of yacc.c */ +#line 1644 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd3D); + } + break; + + case 238: +/* Line 1792 of yacc.c */ +#line 1649 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdCube); + } + break; + + case 239: +/* Line 1792 of yacc.c */ +#line 1654 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); + } + break; + + case 240: +/* Line 1792 of yacc.c */ +#line 1659 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); + } + break; + + case 241: +/* Line 1792 of yacc.c */ +#line 1664 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); + } + break; + + case 242: +/* Line 1792 of yacc.c */ +#line 1669 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); + } + break; + + case 243: +/* Line 1792 of yacc.c */ +#line 1674 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); + } + break; + + case 244: +/* Line 1792 of yacc.c */ +#line 1679 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdRect); + } + break; + + case 245: +/* Line 1792 of yacc.c */ +#line 1684 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdRect); + } + break; + + case 246: +/* Line 1792 of yacc.c */ +#line 1689 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); + } + break; + + case 247: +/* Line 1792 of yacc.c */ +#line 1694 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); + } + break; + + case 248: +/* Line 1792 of yacc.c */ +#line 1699 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); + } + break; + + case 249: +/* Line 1792 of yacc.c */ +#line 1704 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); + } + break; + + case 250: +/* Line 1792 of yacc.c */ +#line 1709 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); + } + break; + + case 251: +/* Line 1792 of yacc.c */ +#line 1714 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); + } + break; + + case 252: +/* Line 1792 of yacc.c */ +#line 1719 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); + } + break; + + case 253: +/* Line 1792 of yacc.c */ +#line 1724 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); + } + break; + + case 254: +/* Line 1792 of yacc.c */ +#line 1729 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); + } + break; + + case 255: +/* Line 1792 of yacc.c */ +#line 1734 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setPureSampler(false); + } + break; + + case 256: +/* Line 1792 of yacc.c */ +#line 1739 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setPureSampler(true); + } + break; + + case 257: +/* Line 1792 of yacc.c */ +#line 1744 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); + } + break; + + case 258: +/* Line 1792 of yacc.c */ +#line 1749 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); + } + break; + + case 259: +/* Line 1792 of yacc.c */ +#line 1754 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); + } + break; + + case 260: +/* Line 1792 of yacc.c */ +#line 1759 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); + } + break; + + case 261: +/* Line 1792 of yacc.c */ +#line 1764 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); + } + break; + + case 262: +/* Line 1792 of yacc.c */ +#line 1769 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); + } + break; + + case 263: +/* Line 1792 of yacc.c */ +#line 1774 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + } + break; + + case 264: +/* Line 1792 of yacc.c */ +#line 1779 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); + } + break; + + case 265: +/* Line 1792 of yacc.c */ +#line 1784 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); + } + break; + + case 266: +/* Line 1792 of yacc.c */ +#line 1789 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); + } + break; + + case 267: +/* Line 1792 of yacc.c */ +#line 1794 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); + } + break; + + case 268: +/* Line 1792 of yacc.c */ +#line 1799 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); + } + break; + + case 269: +/* Line 1792 of yacc.c */ +#line 1804 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); + } + break; + + case 270: +/* Line 1792 of yacc.c */ +#line 1809 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); + } + break; + + case 271: +/* Line 1792 of yacc.c */ +#line 1814 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); + } + break; + + case 272: +/* Line 1792 of yacc.c */ +#line 1819 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); + } + break; + + case 273: +/* Line 1792 of yacc.c */ +#line 1824 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); + } + break; + + case 274: +/* Line 1792 of yacc.c */ +#line 1829 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); + } + break; + + case 275: +/* Line 1792 of yacc.c */ +#line 1834 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); + } + break; + + case 276: +/* Line 1792 of yacc.c */ +#line 1839 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); + } + break; + + case 277: +/* Line 1792 of yacc.c */ +#line 1844 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); + } + break; + + case 278: +/* Line 1792 of yacc.c */ +#line 1849 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); + } + break; + + case 279: +/* Line 1792 of yacc.c */ +#line 1854 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); + } + break; + + case 280: +/* Line 1792 of yacc.c */ +#line 1859 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); + } + break; + + case 281: +/* Line 1792 of yacc.c */ +#line 1864 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); + } + break; + + case 282: +/* Line 1792 of yacc.c */ +#line 1869 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); + } + break; + + case 283: +/* Line 1792 of yacc.c */ +#line 1874 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); + } + break; + + case 284: +/* Line 1792 of yacc.c */ +#line 1879 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); + } + break; + + case 285: +/* Line 1792 of yacc.c */ +#line 1884 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); + } + break; + + case 286: +/* Line 1792 of yacc.c */ +#line 1889 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); + } + break; + + case 287: +/* Line 1792 of yacc.c */ +#line 1894 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); + } + break; + + case 288: +/* Line 1792 of yacc.c */ +#line 1899 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); + } + break; + + case 289: +/* Line 1792 of yacc.c */ +#line 1904 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); + } + break; + + case 290: +/* Line 1792 of yacc.c */ +#line 1909 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); + } + break; + + case 291: +/* Line 1792 of yacc.c */ +#line 1914 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); + } + break; + + case 292: +/* Line 1792 of yacc.c */ +#line 1919 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); + } + break; + + case 293: +/* Line 1792 of yacc.c */ +#line 1924 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); + } + break; + + case 294: +/* Line 1792 of yacc.c */ +#line 1929 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); + } + break; + + case 295: +/* Line 1792 of yacc.c */ +#line 1934 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); + } + break; + + case 296: +/* Line 1792 of yacc.c */ +#line 1939 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); + } + break; + + case 297: +/* Line 1792 of yacc.c */ +#line 1944 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); + } + break; + + case 298: +/* Line 1792 of yacc.c */ +#line 1949 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); + } + break; + + case 299: +/* Line 1792 of yacc.c */ +#line 1954 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); + } + break; + + case 300: +/* Line 1792 of yacc.c */ +#line 1959 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); + } + break; + + case 301: +/* Line 1792 of yacc.c */ +#line 1964 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); + } + break; + + case 302: +/* Line 1792 of yacc.c */ +#line 1969 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); + } + break; + + case 303: +/* Line 1792 of yacc.c */ +#line 1974 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); + } + break; + + case 304: +/* Line 1792 of yacc.c */ +#line 1979 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); + } + break; + + case 305: +/* Line 1792 of yacc.c */ +#line 1984 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); + } + break; + + case 306: +/* Line 1792 of yacc.c */ +#line 1989 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + } + break; + + case 307: +/* Line 1792 of yacc.c */ +#line 1994 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + } + break; + + case 308: +/* Line 1792 of yacc.c */ +#line 1999 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + } + break; + + case 309: +/* Line 1792 of yacc.c */ +#line 2004 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + } + break; + + case 310: +/* Line 1792 of yacc.c */ +#line 2009 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + } + break; + + case 311: +/* Line 1792 of yacc.c */ +#line 2014 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + } + break; + + case 312: +/* Line 1792 of yacc.c */ +#line 2019 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); + } + break; + + case 313: +/* Line 1792 of yacc.c */ +#line 2024 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); + } + break; + + case 314: +/* Line 1792 of yacc.c */ +#line 2029 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); + } + break; + + case 315: +/* Line 1792 of yacc.c */ +#line 2034 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); + } + break; + + case 316: +/* Line 1792 of yacc.c */ +#line 2039 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + } + break; + + case 317: +/* Line 1792 of yacc.c */ +#line 2044 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + } + break; + + case 318: +/* Line 1792 of yacc.c */ +#line 2049 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); + } + break; + + case 319: +/* Line 1792 of yacc.c */ +#line 2054 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); + } + break; + + case 320: +/* Line 1792 of yacc.c */ +#line 2059 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + } + break; + + case 321: +/* Line 1792 of yacc.c */ +#line 2064 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + } + break; + + case 322: +/* Line 1792 of yacc.c */ +#line 2069 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + } + break; + + case 323: +/* Line 1792 of yacc.c */ +#line 2074 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { // GL_OES_EGL_image_external + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).sampler.external = true; + } + break; + + case 324: +/* Line 1792 of yacc.c */ +#line 2080 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat); + } + break; + + case 325: +/* Line 1792 of yacc.c */ +#line 2086 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat, true); + } + break; + + case 326: +/* Line 1792 of yacc.c */ +#line 2092 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtInt); + } + break; + + case 327: +/* Line 1792 of yacc.c */ +#line 2098 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtInt, true); + } + break; + + case 328: +/* Line 1792 of yacc.c */ +#line 2104 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtUint); + } + break; + + case 329: +/* Line 1792 of yacc.c */ +#line 2110 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtUint, true); + } + break; + + case 330: +/* Line 1792 of yacc.c */ +#line 2116 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); + } + break; + + case 331: +/* Line 1792 of yacc.c */ +#line 2121 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // + // This is for user defined type names. The lexical phase looked up the + // type. + // + if (const TVariable* variable = ((yyvsp[(1) - (1)].lex).symbol)->getAsVariable()) { + const TType& structure = variable->getType(); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = &structure; + } else + parseContext.error((yyvsp[(1) - (1)].lex).loc, "expected type name", (yyvsp[(1) - (1)].lex).string->c_str(), ""); + } + break; + + case 332: +/* Line 1792 of yacc.c */ +#line 2137 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + if (parseContext.profile == EEsProfile) + (yyval.interm.type).qualifier.precision = EpqHigh; + } + break; + + case 333: +/* Line 1792 of yacc.c */ +#line 2143 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + if (parseContext.profile == EEsProfile) + (yyval.interm.type).qualifier.precision = EpqMedium; + } + break; + + case 334: +/* Line 1792 of yacc.c */ +#line 2149 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + if (parseContext.profile == EEsProfile) + (yyval.interm.type).qualifier.precision = EpqLow; + } + break; + + case 335: +/* Line 1792 of yacc.c */ +#line 2158 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (3)].lex).loc); } + break; + + case 336: +/* Line 1792 of yacc.c */ +#line 2158 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string); + parseContext.structArrayCheck((yyvsp[(2) - (6)].lex).loc, *structure); + TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true); + if (! parseContext.symbolTable.insert(*userTypeDef)) + parseContext.error((yyvsp[(2) - (6)].lex).loc, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct"); + (yyval.interm.type).init((yyvsp[(1) - (6)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } + break; + + case 337: +/* Line 1792 of yacc.c */ +#line 2169 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (2)].lex).loc); } + break; + + case 338: +/* Line 1792 of yacc.c */ +#line 2169 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString("")); + (yyval.interm.type).init((yyvsp[(1) - (5)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } + break; + + case 339: +/* Line 1792 of yacc.c */ +#line 2179 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList); + } + break; + + case 340: +/* Line 1792 of yacc.c */ +#line 2182 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList); + for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) { + for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { + if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName()) + parseContext.error((*(yyvsp[(2) - (2)].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName().c_str()); + } + (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]); + } + } + break; + + case 341: +/* Line 1792 of yacc.c */ +#line 2195 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList); + + parseContext.voidErrorCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyvsp[(2) - (3)].interm.typeList))[0].type->getFieldName(), (yyvsp[(1) - (3)].interm.type).basicType); + parseContext.precisionQualifierCheck((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).basicType, (yyvsp[(1) - (3)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(1) - (3)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(1) - (3)].interm.type)); + } + } + break; + + case 342: +/* Line 1792 of yacc.c */ +#line 2213 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier); + if ((yyvsp[(2) - (4)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(2) - (4)].interm.type).loc, *(yyvsp[(2) - (4)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(3) - (4)].interm.typeList); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + parseContext.voidErrorCheck((yyvsp[(2) - (4)].interm.type).loc, (*(yyvsp[(3) - (4)].interm.typeList))[0].type->getFieldName(), (yyvsp[(2) - (4)].interm.type).basicType); + parseContext.mergeQualifiers((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).qualifier, (yyvsp[(1) - (4)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).basicType, (yyvsp[(2) - (4)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (4)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(2) - (4)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(2) - (4)].interm.type)); + } + } + break; + + case 343: +/* Line 1792 of yacc.c */ +#line 2237 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = new TTypeList; + (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine)); + } + break; + + case 344: +/* Line 1792 of yacc.c */ +#line 2241 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine)); + } + break; + + case 345: +/* Line 1792 of yacc.c */ +#line 2247 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string); + } + break; + + case 346: +/* Line 1792 of yacc.c */ +#line 2252 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayDimCheck((yyvsp[(1) - (2)].lex).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (2)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (2)].lex).string); + (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[(2) - (2)].interm).arraySizes); + } + break; + + case 347: +/* Line 1792 of yacc.c */ +#line 2263 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 348: +/* Line 1792 of yacc.c */ +#line 2266 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + } + break; + + case 349: +/* Line 1792 of yacc.c */ +#line 2272 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (4)].interm.intermTypedNode); + } + break; + + case 350: +/* Line 1792 of yacc.c */ +#line 2281 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[(1) - (1)].interm.intermTypedNode), (yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc()); + } + break; + + case 351: +/* Line 1792 of yacc.c */ +#line 2284 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + } + break; + + case 352: +/* Line 1792 of yacc.c */ +#line 2290 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 353: +/* Line 1792 of yacc.c */ +#line 2294 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 354: +/* Line 1792 of yacc.c */ +#line 2295 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 355: +/* Line 1792 of yacc.c */ +#line 2301 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 356: +/* Line 1792 of yacc.c */ +#line 2302 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 357: +/* Line 1792 of yacc.c */ +#line 2303 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 358: +/* Line 1792 of yacc.c */ +#line 2304 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 359: +/* Line 1792 of yacc.c */ +#line 2305 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 360: +/* Line 1792 of yacc.c */ +#line 2306 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 361: +/* Line 1792 of yacc.c */ +#line 2307 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 362: +/* Line 1792 of yacc.c */ +#line 2311 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } + break; + + case 363: +/* Line 1792 of yacc.c */ +#line 2312 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } + break; + + case 364: +/* Line 1792 of yacc.c */ +#line 2316 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } + break; + + case 365: +/* Line 1792 of yacc.c */ +#line 2320 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(3) - (5)].interm.intermNode) && (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()) + (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(3) - (5)].interm.intermNode); + } + break; + + case 366: +/* Line 1792 of yacc.c */ +#line 2328 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 367: +/* Line 1792 of yacc.c */ +#line 2329 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 368: +/* Line 1792 of yacc.c */ +#line 2333 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + ++parseContext.controlFlowNestingLevel; + } + break; + + case 369: +/* Line 1792 of yacc.c */ +#line 2336 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + --parseContext.controlFlowNestingLevel; + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); + } + break; + + case 370: +/* Line 1792 of yacc.c */ +#line 2340 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 371: +/* Line 1792 of yacc.c */ +#line 2345 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); + } + break; + + case 372: +/* Line 1792 of yacc.c */ +#line 2354 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + } + break; + + case 373: +/* Line 1792 of yacc.c */ +#line 2357 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(2) - (3)].interm.intermNode) && (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()) + (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermNode); + } + break; + + case 374: +/* Line 1792 of yacc.c */ +#line 2365 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode)); + if ((yyvsp[(1) - (1)].interm.intermNode) && (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence(0, (yyvsp[(1) - (1)].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + } + } + break; + + case 375: +/* Line 1792 of yacc.c */ +#line 2373 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(2) - (2)].interm.intermNode) && (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence((yyvsp[(1) - (2)].interm.intermNode) ? (yyvsp[(1) - (2)].interm.intermNode)->getAsAggregate() : 0, (yyvsp[(2) - (2)].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + } else + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); + } + break; + + case 376: +/* Line 1792 of yacc.c */ +#line 2384 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } + break; + + case 377: +/* Line 1792 of yacc.c */ +#line 2385 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = static_cast((yyvsp[(1) - (2)].interm.intermTypedNode)); } + break; + + case 378: +/* Line 1792 of yacc.c */ +#line 2389 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.boolCheck((yyvsp[(1) - (5)].lex).loc, (yyvsp[(3) - (5)].interm.intermTypedNode)); + (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).loc); + } + break; + + case 379: +/* Line 1792 of yacc.c */ +#line 2396 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode); + } + break; + + case 380: +/* Line 1792 of yacc.c */ +#line 2400 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode); + (yyval.interm.nodePair).node2 = 0; + } + break; + + case 381: +/* Line 1792 of yacc.c */ +#line 2408 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + parseContext.boolCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), (yyvsp[(1) - (1)].interm.intermTypedNode)); + } + break; + + case 382: +/* Line 1792 of yacc.c */ +#line 2412 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.boolCheck((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.type)); + + TType type((yyvsp[(1) - (4)].interm.type)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); + if (initNode) + (yyval.interm.intermTypedNode) = initNode->getAsTyped(); + else + (yyval.interm.intermTypedNode) = 0; + } + break; + + case 383: +/* Line 1792 of yacc.c */ +#line 2425 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // start new switch sequence on the switch stack + ++parseContext.controlFlowNestingLevel; + ++parseContext.statementNestingLevel; + parseContext.switchSequenceStack.push_back(new TIntermSequence); + parseContext.switchLevel.push_back(parseContext.statementNestingLevel); + parseContext.symbolTable.push(); + } + break; + + case 384: +/* Line 1792 of yacc.c */ +#line 2433 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[(1) - (8)].lex).loc, (yyvsp[(3) - (8)].interm.intermTypedNode), (yyvsp[(7) - (8)].interm.intermNode) ? (yyvsp[(7) - (8)].interm.intermNode)->getAsAggregate() : 0); + delete parseContext.switchSequenceStack.back(); + parseContext.switchSequenceStack.pop_back(); + parseContext.switchLevel.pop_back(); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 385: +/* Line 1792 of yacc.c */ +#line 2445 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + } + break; + + case 386: +/* Line 1792 of yacc.c */ +#line 2448 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 387: +/* Line 1792 of yacc.c */ +#line 2454 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot appear outside switch statement", "case", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot be nested inside control flow", "case", ""); + else { + parseContext.constantValueCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + parseContext.integerCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); + } + } + break; + + case 388: +/* Line 1792 of yacc.c */ +#line 2466 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot appear outside switch statement", "default", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot be nested inside control flow", "default", ""); + else + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 389: +/* Line 1792 of yacc.c */ +#line 2478 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (! parseContext.limits.whileLoops) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "while loops not available", "limitation", ""); + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 390: +/* Line 1792 of yacc.c */ +#line 2486 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(6) - (6)].interm.intermNode), (yyvsp[(4) - (6)].interm.intermTypedNode), 0, true, (yyvsp[(1) - (6)].lex).loc); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 391: +/* Line 1792 of yacc.c */ +#line 2493 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 392: +/* Line 1792 of yacc.c */ +#line 2498 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (! parseContext.limits.whileLoops) + parseContext.error((yyvsp[(1) - (8)].lex).loc, "do-while loops not available", "limitation", ""); + + parseContext.boolCheck((yyvsp[(8) - (8)].lex).loc, (yyvsp[(6) - (8)].interm.intermTypedNode)); + + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(3) - (8)].interm.intermNode), (yyvsp[(6) - (8)].interm.intermTypedNode), 0, false, (yyvsp[(4) - (8)].lex).loc); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 393: +/* Line 1792 of yacc.c */ +#line 2509 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 394: +/* Line 1792 of yacc.c */ +#line 2515 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(4) - (7)].interm.intermNode), (yyvsp[(2) - (7)].lex).loc); + TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[(7) - (7)].interm.intermNode), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node2), true, (yyvsp[(1) - (7)].lex).loc); + if (! parseContext.limits.nonInductiveForLoops) + parseContext.inductiveLoopCheck((yyvsp[(1) - (7)].lex).loc, (yyvsp[(4) - (7)].interm.intermNode), forLoop); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[(1) - (7)].lex).loc); + (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 395: +/* Line 1792 of yacc.c */ +#line 2530 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 396: +/* Line 1792 of yacc.c */ +#line 2533 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 397: +/* Line 1792 of yacc.c */ +#line 2539 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 398: +/* Line 1792 of yacc.c */ +#line 2542 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = 0; + } + break; + + case 399: +/* Line 1792 of yacc.c */ +#line 2548 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = 0; + } + break; + + case 400: +/* Line 1792 of yacc.c */ +#line 2552 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode); + } + break; + + case 401: +/* Line 1792 of yacc.c */ +#line 2559 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (parseContext.loopNestingLevel <= 0) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "continue statement only allowed in loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 402: +/* Line 1792 of yacc.c */ +#line 2564 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "break statement only allowed in switch and loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 403: +/* Line 1792 of yacc.c */ +#line 2569 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).loc); + if (parseContext.currentFunctionType->getBasicType() != EbtVoid) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "non-void function must return a value", "return", ""); + if (parseContext.inMain) + parseContext.postMainReturn = true; + } + break; + + case 404: +/* Line 1792 of yacc.c */ +#line 2576 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.functionReturnsValue = true; + if (parseContext.currentFunctionType->getBasicType() == EbtVoid) { + parseContext.error((yyvsp[(1) - (3)].lex).loc, "void function cannot return a value", "return", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (3)].lex).loc); + } else if (*(parseContext.currentFunctionType) != (yyvsp[(2) - (3)].interm.intermTypedNode)->getType()) { + TIntermTyped* converted = parseContext.intermediate.addConversion(EOpReturn, *parseContext.currentFunctionType, (yyvsp[(2) - (3)].interm.intermTypedNode)); + if (converted) { + if (parseContext.version < 420) + parseContext.warn((yyvsp[(1) - (3)].lex).loc, "type conversion on return values was not explicitly allowed until version 420", "return", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, converted, (yyvsp[(1) - (3)].lex).loc); + } else { + parseContext.error((yyvsp[(1) - (3)].lex).loc, "type does not match, or is not convertible to, the function's return type", "return", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); + } + } else + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); + } + break; + + case 405: +/* Line 1792 of yacc.c */ +#line 2594 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (2)].lex).loc, EShLangFragment, "discard"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 406: +/* Line 1792 of yacc.c */ +#line 2603 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); + } + break; + + case 407: +/* Line 1792 of yacc.c */ +#line 2607 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); + parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); + } + break; + + case 408: +/* Line 1792 of yacc.c */ +#line 2614 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 409: +/* Line 1792 of yacc.c */ +#line 2617 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 410: +/* Line 1792 of yacc.c */ +#line 2623 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyvsp[(1) - (1)].interm).function = parseContext.handleFunctionDeclarator((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function, false /* not prototype */); + (yyvsp[(1) - (1)].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function); + } + break; + + case 411: +/* Line 1792 of yacc.c */ +#line 2627 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // May be best done as post process phase on intermediate code + if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) + parseContext.error((yyvsp[(1) - (3)].interm).loc, "function does not return a value:", "", (yyvsp[(1) - (3)].interm).function->getName().c_str()); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermNode)); + parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[(1) - (3)].interm).function->getType(), (yyvsp[(1) - (3)].interm).loc); + (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).function->getMangledName().c_str()); + + // store the pragma information for debug and optimize and other vendor specific + // information. This information can be queried from the parse tree + (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); + (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); + (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable); + } + break; + + +/* Line 1792 of yacc.c */ +#line 7558 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (pParseContext, YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (pParseContext, yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, pParseContext); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, pParseContext); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (pParseContext, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, pParseContext); + } + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, pParseContext); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +/* Line 2055 of yacc.c */ +#line 2644 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h new file mode 100644 index 00000000..0c6ab3bc --- /dev/null +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -0,0 +1,370 @@ +/* A Bison parser, made by GNU Bison 2.7. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +#ifndef YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + BREAK = 266, + CONTINUE = 267, + DO = 268, + ELSE = 269, + FOR = 270, + IF = 271, + DISCARD = 272, + RETURN = 273, + SWITCH = 274, + CASE = 275, + DEFAULT = 276, + SUBROUTINE = 277, + BVEC2 = 278, + BVEC3 = 279, + BVEC4 = 280, + IVEC2 = 281, + IVEC3 = 282, + IVEC4 = 283, + UVEC2 = 284, + UVEC3 = 285, + UVEC4 = 286, + VEC2 = 287, + VEC3 = 288, + VEC4 = 289, + MAT2 = 290, + MAT3 = 291, + MAT4 = 292, + CENTROID = 293, + IN = 294, + OUT = 295, + INOUT = 296, + UNIFORM = 297, + PATCH = 298, + SAMPLE = 299, + BUFFER = 300, + SHARED = 301, + COHERENT = 302, + VOLATILE = 303, + RESTRICT = 304, + READONLY = 305, + WRITEONLY = 306, + DVEC2 = 307, + DVEC3 = 308, + DVEC4 = 309, + DMAT2 = 310, + DMAT3 = 311, + DMAT4 = 312, + NOPERSPECTIVE = 313, + FLAT = 314, + SMOOTH = 315, + LAYOUT = 316, + MAT2X2 = 317, + MAT2X3 = 318, + MAT2X4 = 319, + MAT3X2 = 320, + MAT3X3 = 321, + MAT3X4 = 322, + MAT4X2 = 323, + MAT4X3 = 324, + MAT4X4 = 325, + DMAT2X2 = 326, + DMAT2X3 = 327, + DMAT2X4 = 328, + DMAT3X2 = 329, + DMAT3X3 = 330, + DMAT3X4 = 331, + DMAT4X2 = 332, + DMAT4X3 = 333, + DMAT4X4 = 334, + ATOMIC_UINT = 335, + SAMPLER1D = 336, + SAMPLER2D = 337, + SAMPLER3D = 338, + SAMPLERCUBE = 339, + SAMPLER1DSHADOW = 340, + SAMPLER2DSHADOW = 341, + SAMPLERCUBESHADOW = 342, + SAMPLER1DARRAY = 343, + SAMPLER2DARRAY = 344, + SAMPLER1DARRAYSHADOW = 345, + SAMPLER2DARRAYSHADOW = 346, + ISAMPLER1D = 347, + ISAMPLER2D = 348, + ISAMPLER3D = 349, + ISAMPLERCUBE = 350, + ISAMPLER1DARRAY = 351, + ISAMPLER2DARRAY = 352, + USAMPLER1D = 353, + USAMPLER2D = 354, + USAMPLER3D = 355, + USAMPLERCUBE = 356, + USAMPLER1DARRAY = 357, + USAMPLER2DARRAY = 358, + SAMPLER2DRECT = 359, + SAMPLER2DRECTSHADOW = 360, + ISAMPLER2DRECT = 361, + USAMPLER2DRECT = 362, + SAMPLERBUFFER = 363, + ISAMPLERBUFFER = 364, + USAMPLERBUFFER = 365, + SAMPLERCUBEARRAY = 366, + SAMPLERCUBEARRAYSHADOW = 367, + ISAMPLERCUBEARRAY = 368, + USAMPLERCUBEARRAY = 369, + SAMPLER2DMS = 370, + ISAMPLER2DMS = 371, + USAMPLER2DMS = 372, + SAMPLER2DMSARRAY = 373, + ISAMPLER2DMSARRAY = 374, + USAMPLER2DMSARRAY = 375, + SAMPLEREXTERNALOES = 376, + SAMPLER = 377, + SAMPLERSHADOW = 378, + TEXTURE1D = 379, + TEXTURE2D = 380, + TEXTURE3D = 381, + TEXTURECUBE = 382, + TEXTURE1DARRAY = 383, + TEXTURE2DARRAY = 384, + ITEXTURE1D = 385, + ITEXTURE2D = 386, + ITEXTURE3D = 387, + ITEXTURECUBE = 388, + ITEXTURE1DARRAY = 389, + ITEXTURE2DARRAY = 390, + UTEXTURE1D = 391, + UTEXTURE2D = 392, + UTEXTURE3D = 393, + UTEXTURECUBE = 394, + UTEXTURE1DARRAY = 395, + UTEXTURE2DARRAY = 396, + TEXTURE2DRECT = 397, + ITEXTURE2DRECT = 398, + UTEXTURE2DRECT = 399, + TEXTUREBUFFER = 400, + ITEXTUREBUFFER = 401, + UTEXTUREBUFFER = 402, + TEXTURECUBEARRAY = 403, + ITEXTURECUBEARRAY = 404, + UTEXTURECUBEARRAY = 405, + TEXTURE2DMS = 406, + ITEXTURE2DMS = 407, + UTEXTURE2DMS = 408, + TEXTURE2DMSARRAY = 409, + ITEXTURE2DMSARRAY = 410, + UTEXTURE2DMSARRAY = 411, + SUBPASSINPUT = 412, + SUBPASSINPUTMS = 413, + ISUBPASSINPUT = 414, + ISUBPASSINPUTMS = 415, + USUBPASSINPUT = 416, + USUBPASSINPUTMS = 417, + IMAGE1D = 418, + IIMAGE1D = 419, + UIMAGE1D = 420, + IMAGE2D = 421, + IIMAGE2D = 422, + UIMAGE2D = 423, + IMAGE3D = 424, + IIMAGE3D = 425, + UIMAGE3D = 426, + IMAGE2DRECT = 427, + IIMAGE2DRECT = 428, + UIMAGE2DRECT = 429, + IMAGECUBE = 430, + IIMAGECUBE = 431, + UIMAGECUBE = 432, + IMAGEBUFFER = 433, + IIMAGEBUFFER = 434, + UIMAGEBUFFER = 435, + IMAGE1DARRAY = 436, + IIMAGE1DARRAY = 437, + UIMAGE1DARRAY = 438, + IMAGE2DARRAY = 439, + IIMAGE2DARRAY = 440, + UIMAGE2DARRAY = 441, + IMAGECUBEARRAY = 442, + IIMAGECUBEARRAY = 443, + UIMAGECUBEARRAY = 444, + IMAGE2DMS = 445, + IIMAGE2DMS = 446, + UIMAGE2DMS = 447, + IMAGE2DMSARRAY = 448, + IIMAGE2DMSARRAY = 449, + UIMAGE2DMSARRAY = 450, + STRUCT = 451, + VOID = 452, + WHILE = 453, + IDENTIFIER = 454, + TYPE_NAME = 455, + FLOATCONSTANT = 456, + DOUBLECONSTANT = 457, + INTCONSTANT = 458, + UINTCONSTANT = 459, + BOOLCONSTANT = 460, + LEFT_OP = 461, + RIGHT_OP = 462, + INC_OP = 463, + DEC_OP = 464, + LE_OP = 465, + GE_OP = 466, + EQ_OP = 467, + NE_OP = 468, + AND_OP = 469, + OR_OP = 470, + XOR_OP = 471, + MUL_ASSIGN = 472, + DIV_ASSIGN = 473, + ADD_ASSIGN = 474, + MOD_ASSIGN = 475, + LEFT_ASSIGN = 476, + RIGHT_ASSIGN = 477, + AND_ASSIGN = 478, + XOR_ASSIGN = 479, + OR_ASSIGN = 480, + SUB_ASSIGN = 481, + LEFT_PAREN = 482, + RIGHT_PAREN = 483, + LEFT_BRACKET = 484, + RIGHT_BRACKET = 485, + LEFT_BRACE = 486, + RIGHT_BRACE = 487, + DOT = 488, + COMMA = 489, + COLON = 490, + EQUAL = 491, + SEMICOLON = 492, + BANG = 493, + DASH = 494, + TILDE = 495, + PLUS = 496, + STAR = 497, + SLASH = 498, + PERCENT = 499, + LEFT_ANGLE = 500, + RIGHT_ANGLE = 501, + VERTICAL_BAR = 502, + CARET = 503, + AMPERSAND = 504, + QUESTION = 505, + INVARIANT = 506, + PRECISE = 507, + HIGH_PRECISION = 508, + MEDIUM_PRECISION = 509, + LOW_PRECISION = 510, + PRECISION = 511, + PACKED = 512, + RESOURCE = 513, + SUPERP = 514 + }; +#endif + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ +/* Line 2058 of yacc.c */ +#line 66 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + struct { + glslang::TSourceLoc loc; + union { + glslang::TString *string; + int i; + unsigned int u; + bool b; + double d; + }; + glslang::TSymbol* symbol; + } lex; + struct { + glslang::TSourceLoc loc; + glslang::TOperator op; + union { + TIntermNode* intermNode; + glslang::TIntermNodePair nodePair; + glslang::TIntermTyped* intermTypedNode; + }; + union { + glslang::TPublicType type; + glslang::TFunction* function; + glslang::TParameter param; + glslang::TTypeLoc typeLine; + glslang::TTypeList* typeList; + glslang::TArraySizes* arraySizes; + glslang::TIdentifierList* identifierList; + }; + } interm; + + +/* Line 2058 of yacc.c */ +#line 349 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp.h" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + +#endif /* !YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ From 395b7dd3f5dd738998d97f78469885debb901c92 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 01:21:56 +0100 Subject: [PATCH 4/4] Remove custom command for bison, it fails if bison is not found --- glslang/CMakeLists.txt | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 803203df..9725eccf 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -64,22 +64,6 @@ set(HEADERS MachineIndependent/preprocessor/PpContext.h MachineIndependent/preprocessor/PpTokens.h) -find_package(BISON) -if(NOT BISON_FOUND) - if (WIN32) - set(BISON_EXECUTABLE ../tools/bison.exe) - message("bison not found. Assuming it is at ${BISON_EXECUTABLE}") - else() - message(FATAL_ERROR "bison required but not found. Please install via your package management tool.") - endif() -endif() - -# Always use a custom command since our use of --defines isn't assumed by CMake's BISON_TARGET, -# which ends up causing the target to always be rebuilt. -add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h - COMMAND ${BISON_EXECUTABLE} --defines=${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h -t ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang.y -o ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp - MAIN_DEPENDENCY MachineIndependent/glslang.y - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp) add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})