texlive[60644] Build/source/texk/web2c/hitexdir: hishrink yacc/lex

commits+karl at tug.org commits+karl at tug.org
Tue Sep 28 23:45:20 CEST 2021


Revision: 60644
          http://tug.org/svn/texlive?view=revision&revision=60644
Author:   karl
Date:     2021-09-28 23:45:20 +0200 (Tue, 28 Sep 2021)
Log Message:
-----------
hishrink yacc/lex build (attempted) fixes

Modified Paths:
--------------
    trunk/Build/source/doc/build-tools.txt
    trunk/Build/source/doc/tlbuild.info
    trunk/Build/source/doc/tlbuild.texi
    trunk/Build/source/texk/web2c/Makefile.in
    trunk/Build/source/texk/web2c/hitexdir/am/hitex.am
    trunk/Build/source/texk/web2c/hitexdir/format.w

Added Paths:
-----------
    trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.c
    trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.l
    trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.c
    trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.h
    trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.y

Removed Paths:
-------------
    trunk/Build/source/texk/web2c/hitexdir/lexer.c
    trunk/Build/source/texk/web2c/hitexdir/lexer.l
    trunk/Build/source/texk/web2c/hitexdir/parser.c
    trunk/Build/source/texk/web2c/hitexdir/parser.h
    trunk/Build/source/texk/web2c/hitexdir/parser.y

Property Changed:
----------------
    trunk/Build/source/texk/web2c/hitexdir/

Modified: trunk/Build/source/doc/build-tools.txt
===================================================================
--- trunk/Build/source/doc/build-tools.txt	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/doc/build-tools.txt	2021-09-28 21:45:20 UTC (rev 60644)
@@ -1,6 +1,6 @@
 autoconf (GNU Autoconf) 2.71
 automake (GNU automake) 1.16.4
-bison (GNU Bison) 3.7.5
+bison (GNU Bison) 3.8.2
 flex 2.6.0
 ltmain.sh (GNU libtool) 2.4.6
 m4 (GNU M4) 1.4.19

Modified: trunk/Build/source/doc/tlbuild.info
===================================================================
(Binary files differ)

Modified: trunk/Build/source/doc/tlbuild.texi
===================================================================
--- trunk/Build/source/doc/tlbuild.texi	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/doc/tlbuild.texi	2021-09-28 21:45:20 UTC (rev 60644)
@@ -2,7 +2,7 @@
 @setfilename tlbuild.info
 
 @set version 2021
- at set month-year July 2021
+ at set month-year September 2021
 
 @set mytitle Building @TeX{} Live (@value{version})
 @settitle @value{mytitle}
@@ -1762,7 +1762,8 @@
 program, but it's not all that similar, either.  In this case, the main
 work is done by creating a new subdirectory of @file{texk/web2c/} for
 the engine.  The subdirectory is conventionally named ending in
- at file{dir}, like @file{pdftexdir} and @file{xetexdir}.
+ at file{dir}, like @file{pdftexdir} and @file{xetexdir}, to avoid
+clashes with executable names.
 
 The source files for the new engine should be put in this
 @file{@var{newengine}dir} subdirectory.  Also, a file
@@ -1784,6 +1785,14 @@
 unique features and requirements, so existing examples will only take
 you so far.
 
+Web2c is built as one ``package'', with each subdirectory's @file{.am}
+fragment inserted with an Automake @code{include}.  This means that,
+for instance, @code{$(srcdir)} is @file{.../web2c}, not
+ at file{.../webdir/enginedir}.  It is a difficult setup to come to terms
+with, but the alternative is to recurse into each engine subdirectory,
+and that would be far worse (@pxref{Directories,,, automake, GNU
+Automake}).
+
 @node Adding a new generic library module
 @subsection Adding a new generic library module
 

Modified: trunk/Build/source/texk/web2c/Makefile.in
===================================================================
--- trunk/Build/source/texk/web2c/Makefile.in	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/Makefile.in	2021-09-28 21:45:20 UTC (rev 60644)
@@ -1387,27 +1387,22 @@
 gftype_OBJECTS = $(nodist_gftype_OBJECTS)
 gftype_LDADD = $(LDADD)
 gftype_DEPENDENCIES = $(proglib) $(am__DEPENDENCIES_1)
-nodist_hishrink_OBJECTS = hishrink-hformat.$(OBJEXT) \
-	hishrink-hishrink.$(OBJEXT) hishrink-shrink-lexer.$(OBJEXT) \
-	hishrink-shrink-parser.$(OBJEXT)
-hishrink_OBJECTS = $(nodist_hishrink_OBJECTS)
+am_hishrink_OBJECTS = hitexdir/hishrink-hishrink-lexer.$(OBJEXT) \
+	hitexdir/hishrink-hishrink-parser.$(OBJEXT)
+hishrink_OBJECTS = $(am_hishrink_OBJECTS)
 hishrink_DEPENDENCIES = $(am__DEPENDENCIES_1)
-nodist_histretch_OBJECTS = histretch-hformat.$(OBJEXT) \
-	histretch-histretch.$(OBJEXT)
-histretch_OBJECTS = $(nodist_histretch_OBJECTS)
+histretch_SOURCES = histretch.c
+histretch_OBJECTS = histretch-histretch.$(OBJEXT)
 histretch_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_37 = hitex-htex.$(OBJEXT)
-am__objects_38 = hitex-hitex.$(OBJEXT)
-nodist_hitex_OBJECTS = hitex-hformat.$(OBJEXT) hitex-hput.$(OBJEXT) \
-	$(am__objects_37) $(am__objects_38)
-hitex_OBJECTS = $(nodist_hitex_OBJECTS)
+hitex_SOURCES = hitex.c
+hitex_OBJECTS = hitex-hitex.$(OBJEXT)
 hitex_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 nodist_initex_OBJECTS = initex-callexe.$(OBJEXT)
 initex_OBJECTS = $(nodist_initex_OBJECTS)
 initex_DEPENDENCIES =
-am__objects_39 = luatexdir/luahbtex-luatex.$(OBJEXT) \
+am__objects_37 = luatexdir/luahbtex-luatex.$(OBJEXT) \
 	mplibdir/luahbtex-lmplib.$(OBJEXT)
-nodist_luahbtex_OBJECTS = $(am__objects_39)
+nodist_luahbtex_OBJECTS = $(am__objects_37)
 luahbtex_OBJECTS = $(nodist_luahbtex_OBJECTS)
 am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1)
 am__DEPENDENCIES_7 = libmplibcore.a $(am__DEPENDENCIES_1) \
@@ -1418,16 +1413,16 @@
 luahbtex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(luahbtex_CXXFLAGS) \
 	$(CXXFLAGS) $(luahbtex_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_40 = luatexdir/luajithbtex-luatex.$(OBJEXT) \
+am__objects_38 = luatexdir/luajithbtex-luatex.$(OBJEXT) \
 	mplibdir/luajithbtex-lmplib.$(OBJEXT)
-nodist_luajithbtex_OBJECTS = $(am__objects_40)
+nodist_luajithbtex_OBJECTS = $(am__objects_38)
 luajithbtex_OBJECTS = $(nodist_luajithbtex_OBJECTS)
 luajithbtex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(luajithbtex_CXXFLAGS) \
 	$(CXXFLAGS) $(luajithbtex_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_41 = luatexdir/luajittex-luatex.$(OBJEXT) \
+am__objects_39 = luatexdir/luajittex-luatex.$(OBJEXT) \
 	mplibdir/luajittex-lmplib.$(OBJEXT)
-nodist_luajittex_OBJECTS = $(am__objects_41)
+nodist_luajittex_OBJECTS = $(am__objects_39)
 luajittex_OBJECTS = $(nodist_luajittex_OBJECTS)
 am__DEPENDENCIES_8 = libmplibcore.a $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -1436,9 +1431,9 @@
 luajittex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(luajittex_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_42 = luatexdir/luatex-luatex.$(OBJEXT) \
+am__objects_40 = luatexdir/luatex-luatex.$(OBJEXT) \
 	mplibdir/luatex-lmplib.$(OBJEXT)
-nodist_luatex_OBJECTS = $(am__objects_42)
+nodist_luatex_OBJECTS = $(am__objects_40)
 luatex_OBJECTS = $(nodist_luatex_OBJECTS)
 luatex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
@@ -1464,8 +1459,8 @@
 mflua_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(mflua_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_43 = mfluadir/mflua_nowin-mfluaextra.$(OBJEXT)
-nodist_mflua_nowin_OBJECTS = $(am__objects_43)
+am__objects_41 = mfluadir/mflua_nowin-mfluaextra.$(OBJEXT)
+nodist_mflua_nowin_OBJECTS = $(am__objects_41)
 mflua_nowin_OBJECTS = $(nodist_mflua_nowin_OBJECTS)
 mflua_nowin_DEPENDENCIES = libmflua.a libmfluaotfcc.a \
 	$(am__DEPENDENCIES_2) $(windowlib) $(am__DEPENDENCIES_6)
@@ -1480,8 +1475,8 @@
 mfluajit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(mfluajit_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_44 = mfluajitdir/mfluajit_nowin-mfluajitextra.$(OBJEXT)
-nodist_mfluajit_nowin_OBJECTS = $(am__objects_44)
+am__objects_42 = mfluajitdir/mfluajit_nowin-mfluajitextra.$(OBJEXT)
+nodist_mfluajit_nowin_OBJECTS = $(am__objects_42)
 mfluajit_nowin_OBJECTS = $(nodist_mfluajit_nowin_OBJECTS)
 mfluajit_nowin_DEPENDENCIES = libmfluajit.a libmfluaotfcc.a \
 	$(am__DEPENDENCIES_2) $(windowlib) $(am__DEPENDENCIES_1)
@@ -1493,8 +1488,8 @@
 mft_OBJECTS = $(nodist_mft_OBJECTS)
 mft_LDADD = $(LDADD)
 mft_DEPENDENCIES = $(proglib) $(am__DEPENDENCIES_1)
-am__objects_45 = mpost-mpxout.$(OBJEXT)
-nodist_mpost_OBJECTS = mpost-mpost.$(OBJEXT) $(am__objects_45)
+am__objects_43 = mpost-mpxout.$(OBJEXT)
+nodist_mpost_OBJECTS = mpost-mpost.$(OBJEXT) $(am__objects_43)
 mpost_OBJECTS = $(nodist_mpost_OBJECTS)
 mpost_DEPENDENCIES = libmplibcore.a libmplibextramath.a \
 	libmplibbackends.a $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -1527,12 +1522,12 @@
 	pdftexdir/etex_version.h synctexdir/synctex.c \
 	synctexdir/synctex.h synctexdir/synctex-common.h \
 	synctexdir/synctex-pdftex.h
- at PDFTEX_SYNCTEX_TRUE@am__objects_46 =  \
+ at PDFTEX_SYNCTEX_TRUE@am__objects_44 =  \
 @PDFTEX_SYNCTEX_TRUE@	synctexdir/pdftex-synctex.$(OBJEXT)
 dist_pdftex_OBJECTS = pdftexdir/pdftex-pdftexextra.$(OBJEXT) \
-	$(am__objects_46)
-am__objects_47 = pdftex-pdftexini.$(OBJEXT) pdftex-pdftex0.$(OBJEXT)
-nodist_pdftex_OBJECTS = $(am__objects_47) pdftex-pdftex-pool.$(OBJEXT)
+	$(am__objects_44)
+am__objects_45 = pdftex-pdftexini.$(OBJEXT) pdftex-pdftex0.$(OBJEXT)
+nodist_pdftex_OBJECTS = $(am__objects_45) pdftex-pdftex-pool.$(OBJEXT)
 pdftex_OBJECTS = $(dist_pdftex_OBJECTS) $(nodist_pdftex_OBJECTS)
 am__DEPENDENCIES_11 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) libmd5.a
@@ -1559,20 +1554,20 @@
 pltotf_OBJECTS = $(nodist_pltotf_OBJECTS)
 pltotf_LDADD = $(LDADD)
 pltotf_DEPENDENCIES = $(proglib) $(am__DEPENDENCIES_1)
-am__objects_48 = pmpost-pmp.$(OBJEXT)
-am__objects_49 = pmpost-pmpmath.$(OBJEXT)
-am__objects_50 = pmpost-pmpmathbinary.$(OBJEXT)
-am__objects_51 = pmpost-pmpmathdecimal.$(OBJEXT)
-am__objects_52 = pmpost-pmpmathdouble.$(OBJEXT)
-am__objects_53 = pmpost-pmpstrings.$(OBJEXT)
-am__objects_54 = pmpost-pmpxout.$(OBJEXT)
-am__objects_55 = pmpost-ppngout.$(OBJEXT)
-am__objects_56 = pmpost-ppsout.$(OBJEXT)
-am__objects_57 = pmpost-psvgout.$(OBJEXT)
-nodist_pmpost_OBJECTS = $(am__objects_48) $(am__objects_49) \
-	$(am__objects_50) $(am__objects_51) $(am__objects_52) \
-	pmpost-pmpost.$(OBJEXT) $(am__objects_53) $(am__objects_54) \
-	$(am__objects_55) $(am__objects_56) $(am__objects_57) \
+am__objects_46 = pmpost-pmp.$(OBJEXT)
+am__objects_47 = pmpost-pmpmath.$(OBJEXT)
+am__objects_48 = pmpost-pmpmathbinary.$(OBJEXT)
+am__objects_49 = pmpost-pmpmathdecimal.$(OBJEXT)
+am__objects_50 = pmpost-pmpmathdouble.$(OBJEXT)
+am__objects_51 = pmpost-pmpstrings.$(OBJEXT)
+am__objects_52 = pmpost-pmpxout.$(OBJEXT)
+am__objects_53 = pmpost-ppngout.$(OBJEXT)
+am__objects_54 = pmpost-ppsout.$(OBJEXT)
+am__objects_55 = pmpost-psvgout.$(OBJEXT)
+nodist_pmpost_OBJECTS = $(am__objects_46) $(am__objects_47) \
+	$(am__objects_48) $(am__objects_49) $(am__objects_50) \
+	pmpost-pmpost.$(OBJEXT) $(am__objects_51) $(am__objects_52) \
+	$(am__objects_53) $(am__objects_54) $(am__objects_55) \
 	pmpost-ptfmin.$(OBJEXT)
 pmpost_OBJECTS = $(nodist_pmpost_OBJECTS)
 pmpost_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -1590,10 +1585,10 @@
 	ptexdir/ptex_version.h synctexdir/synctex.c \
 	synctexdir/synctex.h synctexdir/synctex-common.h \
 	synctexdir/synctex-ptex.h
- at PTEX_SYNCTEX_TRUE@am__objects_58 = synctexdir/ptex-synctex.$(OBJEXT)
-dist_ptex_OBJECTS = ptexdir/ptex-ptexextra.$(OBJEXT) $(am__objects_58)
-am__objects_59 = ptex-ptexini.$(OBJEXT) ptex-ptex0.$(OBJEXT)
-nodist_ptex_OBJECTS = $(am__objects_59) ptex-ptex-pool.$(OBJEXT)
+ at PTEX_SYNCTEX_TRUE@am__objects_56 = synctexdir/ptex-synctex.$(OBJEXT)
+dist_ptex_OBJECTS = ptexdir/ptex-ptexextra.$(OBJEXT) $(am__objects_56)
+am__objects_57 = ptex-ptexini.$(OBJEXT) ptex-ptex0.$(OBJEXT)
+nodist_ptex_OBJECTS = $(am__objects_57) ptex-ptex-pool.$(OBJEXT)
 ptex_OBJECTS = $(dist_ptex_OBJECTS) $(nodist_ptex_OBJECTS)
 @PTEX_SYNCTEX_TRUE at am__DEPENDENCIES_12 = $(am__DEPENDENCIES_1)
 am_ptftopl_OBJECTS =
@@ -1614,10 +1609,10 @@
 am__dist_tex_SOURCES_DIST = texextra.c synctexdir/synctex.c \
 	synctexdir/synctex.h synctexdir/synctex-common.h \
 	synctexdir/synctex-tex.h
- at TEX_SYNCTEX_TRUE@am__objects_60 = synctexdir/tex-synctex.$(OBJEXT)
-dist_tex_OBJECTS = tex-texextra.$(OBJEXT) $(am__objects_60)
-am__objects_61 = tex-texini.$(OBJEXT) tex-tex0.$(OBJEXT)
-nodist_tex_OBJECTS = $(am__objects_61) tex-tex-pool.$(OBJEXT)
+ at TEX_SYNCTEX_TRUE@am__objects_58 = synctexdir/tex-synctex.$(OBJEXT)
+dist_tex_OBJECTS = tex-texextra.$(OBJEXT) $(am__objects_58)
+am__objects_59 = tex-texini.$(OBJEXT) tex-tex0.$(OBJEXT)
+nodist_tex_OBJECTS = $(am__objects_59) tex-tex-pool.$(OBJEXT)
 tex_OBJECTS = $(dist_tex_OBJECTS) $(nodist_tex_OBJECTS)
 @TEX_SYNCTEX_TRUE at am__DEPENDENCIES_14 = $(am__DEPENDENCIES_1)
 tex_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
@@ -1642,21 +1637,21 @@
 nodist_updvitype_OBJECTS = updvitype-updvitype.$(OBJEXT)
 updvitype_OBJECTS = $(am_updvitype_OBJECTS) \
 	$(nodist_updvitype_OBJECTS)
-am__objects_62 = upmpost-pmp.$(OBJEXT)
-am__objects_63 = upmpost-pmpmath.$(OBJEXT)
-am__objects_64 = upmpost-pmpmathbinary.$(OBJEXT)
-am__objects_65 = upmpost-pmpmathdecimal.$(OBJEXT)
-am__objects_66 = upmpost-pmpmathdouble.$(OBJEXT)
-am__objects_67 = upmpost-pmpstrings.$(OBJEXT)
-am__objects_68 = upmpost-pmpxout.$(OBJEXT)
-am__objects_69 = upmpost-ppngout.$(OBJEXT)
-am__objects_70 = upmpost-ppsout.$(OBJEXT)
-am__objects_71 = upmpost-psvgout.$(OBJEXT)
-am__objects_72 = $(am__objects_62) $(am__objects_63) $(am__objects_64) \
-	$(am__objects_65) $(am__objects_66) upmpost-pmpost.$(OBJEXT) \
-	$(am__objects_67) $(am__objects_68) $(am__objects_69) \
-	$(am__objects_70) $(am__objects_71) upmpost-ptfmin.$(OBJEXT)
-nodist_upmpost_OBJECTS = $(am__objects_72)
+am__objects_60 = upmpost-pmp.$(OBJEXT)
+am__objects_61 = upmpost-pmpmath.$(OBJEXT)
+am__objects_62 = upmpost-pmpmathbinary.$(OBJEXT)
+am__objects_63 = upmpost-pmpmathdecimal.$(OBJEXT)
+am__objects_64 = upmpost-pmpmathdouble.$(OBJEXT)
+am__objects_65 = upmpost-pmpstrings.$(OBJEXT)
+am__objects_66 = upmpost-pmpxout.$(OBJEXT)
+am__objects_67 = upmpost-ppngout.$(OBJEXT)
+am__objects_68 = upmpost-ppsout.$(OBJEXT)
+am__objects_69 = upmpost-psvgout.$(OBJEXT)
+am__objects_70 = $(am__objects_60) $(am__objects_61) $(am__objects_62) \
+	$(am__objects_63) $(am__objects_64) upmpost-pmpost.$(OBJEXT) \
+	$(am__objects_65) $(am__objects_66) $(am__objects_67) \
+	$(am__objects_68) $(am__objects_69) upmpost-ptfmin.$(OBJEXT)
+nodist_upmpost_OBJECTS = $(am__objects_70)
 upmpost_OBJECTS = $(nodist_upmpost_OBJECTS)
 am__DEPENDENCIES_16 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -1670,12 +1665,12 @@
 	uptexdir/uptexextra.h uptexdir/uptex_version.h \
 	synctexdir/synctex.c synctexdir/synctex.h \
 	synctexdir/synctex-common.h synctexdir/synctex-uptex.h
- at UPTEX_SYNCTEX_TRUE@am__objects_73 =  \
+ at UPTEX_SYNCTEX_TRUE@am__objects_71 =  \
 @UPTEX_SYNCTEX_TRUE@	synctexdir/uptex-synctex.$(OBJEXT)
 dist_uptex_OBJECTS = uptexdir/uptex-uptexextra.$(OBJEXT) \
-	$(am__objects_73)
-am__objects_74 = uptex-uptexini.$(OBJEXT) uptex-uptex0.$(OBJEXT)
-nodist_uptex_OBJECTS = $(am__objects_74) uptex-uptex-pool.$(OBJEXT)
+	$(am__objects_71)
+am__objects_72 = uptex-uptexini.$(OBJEXT) uptex-uptex0.$(OBJEXT)
+nodist_uptex_OBJECTS = $(am__objects_72) uptex-uptex-pool.$(OBJEXT)
 uptex_OBJECTS = $(dist_uptex_OBJECTS) $(nodist_uptex_OBJECTS)
 @UPTEX_SYNCTEX_TRUE at am__DEPENDENCIES_17 = $(am__DEPENDENCIES_1)
 am_uptftopl_OBJECTS =
@@ -1714,12 +1709,12 @@
 	xetexdir/xetex_version.h synctexdir/synctex.c \
 	synctexdir/synctex.h synctexdir/synctex-common.h \
 	synctexdir/synctex-xetex.h
- at XETEX_SYNCTEX_TRUE@am__objects_75 =  \
+ at XETEX_SYNCTEX_TRUE@am__objects_73 =  \
 @XETEX_SYNCTEX_TRUE@	synctexdir/xetex-synctex.$(OBJEXT)
 dist_xetex_OBJECTS = xetexdir/xetex-xetexextra.$(OBJEXT) \
-	$(am__objects_75)
-am__objects_76 = xetex-xetexini.$(OBJEXT) xetex-xetex0.$(OBJEXT)
-nodist_xetex_OBJECTS = $(am__objects_76) xetex-xetex-pool.$(OBJEXT)
+	$(am__objects_73)
+am__objects_74 = xetex-xetexini.$(OBJEXT) xetex-xetex0.$(OBJEXT)
+nodist_xetex_OBJECTS = $(am__objects_74) xetex-xetex-pool.$(OBJEXT)
 xetex_OBJECTS = $(dist_xetex_OBJECTS) $(nodist_xetex_OBJECTS)
 @XETEX_MACOSX_FALSE at am__DEPENDENCIES_18 = $(am__DEPENDENCIES_1)
 am__DEPENDENCIES_19 = $(libxetex) $(am__DEPENDENCIES_1) \
@@ -1770,15 +1765,8 @@
 	./$(DEPDIR)/euptex-euptex-pool.Po \
 	./$(DEPDIR)/euptex-euptex0.Po ./$(DEPDIR)/euptex-euptexini.Po \
 	./$(DEPDIR)/gftodvi.Po ./$(DEPDIR)/gftopk.Po \
-	./$(DEPDIR)/gftype.Po ./$(DEPDIR)/hishrink-hformat.Po \
-	./$(DEPDIR)/hishrink-hishrink.Po \
-	./$(DEPDIR)/hishrink-shrink-lexer.Po \
-	./$(DEPDIR)/hishrink-shrink-parser.Po \
-	./$(DEPDIR)/histretch-hformat.Po \
-	./$(DEPDIR)/histretch-histretch.Po \
-	./$(DEPDIR)/hitex-hformat.Po ./$(DEPDIR)/hitex-hitex.Po \
-	./$(DEPDIR)/hitex-hput.Po ./$(DEPDIR)/hitex-htex.Po \
-	./$(DEPDIR)/initex-callexe.Po \
+	./$(DEPDIR)/gftype.Po ./$(DEPDIR)/histretch-histretch.Po \
+	./$(DEPDIR)/hitex-hitex.Po ./$(DEPDIR)/initex-callexe.Po \
 	./$(DEPDIR)/libluahbtexspecific_a-luainit-hb.Po \
 	./$(DEPDIR)/libluahbtexspecific_a-luastuff-hb.Po \
 	./$(DEPDIR)/libluahbtexspecific_a-printing-hb.Po \
@@ -1856,6 +1844,8 @@
 	eptexdir/$(DEPDIR)/eptex-eptexextra.Po \
 	etexdir/$(DEPDIR)/etex-etexextra.Po \
 	euptexdir/$(DEPDIR)/euptex-euptexextra.Po \
+	hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Po \
+	hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Po \
 	libmd5/$(DEPDIR)/a-md5.Po libmd5/$(DEPDIR)/md5main-md5main.Po \
 	luatexdir/$(DEPDIR)/luahbtex-luatex.Po \
 	luatexdir/$(DEPDIR)/luajithbtex-luatex.Po \
@@ -2540,10 +2530,9 @@
 	$(dist_euptex_SOURCES) $(nodist_euptex_SOURCES) \
 	$(gftodvi_SOURCES) $(nodist_gftodvi_SOURCES) \
 	$(nodist_gftopk_SOURCES) $(nodist_gftype_SOURCES) \
-	$(nodist_hishrink_SOURCES) $(nodist_histretch_SOURCES) \
-	$(nodist_hitex_SOURCES) $(nodist_initex_SOURCES) \
-	$(nodist_luahbtex_SOURCES) $(nodist_EXTRA_luahbtex_SOURCES) \
-	$(nodist_luajithbtex_SOURCES) \
+	$(hishrink_SOURCES) histretch.c hitex.c \
+	$(nodist_initex_SOURCES) $(nodist_luahbtex_SOURCES) \
+	$(nodist_EXTRA_luahbtex_SOURCES) $(nodist_luajithbtex_SOURCES) \
 	$(nodist_EXTRA_luajithbtex_SOURCES) \
 	$(nodist_luajittex_SOURCES) $(nodist_luatex_SOURCES) \
 	$(md5main_SOURCES) $(dist_mf_SOURCES) $(dist_mf_nowin_SOURCES) \
@@ -2588,11 +2577,11 @@
 	$(am__libxetex_a_SOURCES_DIST) $(libsynctex_la_SOURCES) \
 	$(dist_aleph_SOURCES) $(am__dist_eptex_SOURCES_DIST) \
 	$(am__dist_etex_SOURCES_DIST) $(am__dist_euptex_SOURCES_DIST) \
-	$(gftodvi_SOURCES) $(md5main_SOURCES) $(dist_mf_SOURCES) \
-	$(dist_mf_nowin_SOURCES) $(dist_mflua_SOURCES) \
-	$(dist_mfluajit_SOURCES) $(pbibtex_SOURCES) \
-	$(am__dist_pdftex_SOURCES_DIST) $(pdftosrc_SOURCES) \
-	$(pdvitype_SOURCES) $(ppltotf_SOURCES) \
+	$(gftodvi_SOURCES) $(hishrink_SOURCES) histretch.c hitex.c \
+	$(md5main_SOURCES) $(dist_mf_SOURCES) $(dist_mf_nowin_SOURCES) \
+	$(dist_mflua_SOURCES) $(dist_mfluajit_SOURCES) \
+	$(pbibtex_SOURCES) $(am__dist_pdftex_SOURCES_DIST) \
+	$(pdftosrc_SOURCES) $(pdvitype_SOURCES) $(ppltotf_SOURCES) \
 	$(am__dist_ptex_SOURCES_DIST) $(ptftopl_SOURCES) \
 	$(synctex_SOURCES) $(am__dist_tex_SOURCES_DIST) \
 	$(ttf2afm_SOURCES) $(EXTRA_ttf2afm_SOURCES) \
@@ -2880,7 +2869,9 @@
 	../../build-aux/config.sub ../../build-aux/depcomp \
 	../../build-aux/install-sh ../../build-aux/ltmain.sh \
 	../../build-aux/missing ../../build-aux/texinfo.tex \
-	../../build-aux/ylwrap AUTHORS ChangeLog NEWS README
+	../../build-aux/ylwrap AUTHORS ChangeLog NEWS README \
+	hitexdir/hishrink-lexer.c hitexdir/hishrink-parser.c \
+	hitexdir/hishrink-parser.h
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -3297,7 +3288,7 @@
 	euptexdir/pdfprimitive.test \
 	eptexdir/tests/pdfprimitive-test.tex \
 	euptexdir/tests/pdfprimitive-euptex.log hitexdir/ChangeLog \
-	$(hitex_web) lex.sed yacc.sed pdftexdir/regex/COPYING.LIB \
+	$(hitex_web) pdftexdir/regex/COPYING.LIB \
 	pdftexdir/regex/README $(pdftex_ch_srcs) \
 	pdftexdir/pdftex.defines pdftexdir/ChangeLog pdftexdir/NEWS \
 	pdftexdir/README pdftexdir/change-files.txt $(pdftex_tests) \
@@ -3621,12 +3612,12 @@
 	euptex.p euptex.pool euptex-tangle euptrip.diffs \
 	pdfprimitive-euptex.* $(nodist_hitex_SOURCES) \
 	$(nodist_hishrink_SOURCES) $(nodist_histretch_SOURCES) \
-	format-tangle htex-tangle hitex-tangle shrink-parser.* \
-	shrink-lexer.* $(nodist_pdftex_SOURCES) pdftex-final.ch \
-	pdftex-web2c pdftex.p pdftex.pool pdftex-tangle pwprob.log \
-	pwprob.tex pdfimage.fmt pdfimage.log pdfimage.pdf expanded.log \
-	cnfline.log partoken-ok.log partoken-xfail.log postV3.afm \
-	postV7.afm test-13.pdf test-13.xref test-15.pdf test-15.xref \
+	format-tangle htex-tangle hitex-tangle \
+	$(nodist_pdftex_SOURCES) pdftex-final.ch pdftex-web2c pdftex.p \
+	pdftex.pool pdftex-tangle pwprob.log pwprob.tex pdfimage.fmt \
+	pdfimage.log pdfimage.pdf expanded.log cnfline.log \
+	partoken-ok.log partoken-xfail.log postV3.afm postV7.afm \
+	test-13.pdf test-13.xref test-15.pdf test-15.xref \
 	$(nodist_libluatex_sources) luaimage.* luajitimage.* \
 	$(nodist_xetex_SOURCES) xetex.web xetex-final.ch xetex-web2c \
 	xetex.p xetex.pool xetex-tangle bug73.fmt bug73.log bug73.out \
@@ -4587,8 +4578,9 @@
 #
 euptex_tests = euptexdir/euptriptest.test euptexdir/pdfprimitive.test euptexdir/eupver.test
 
-#kb hitex_CFLAGS = $(AM_CFLAGS) \
-#kb -Wno-parentheses -Wno-maybe-uninitialized -Wno-unused-function -Wno-unused-variable 
+# We want debugging for the parser, and we use features not in POSIX yacc.
+# The result is that we assume bison? Not sure if that's ok.
+AM_YFLAGS = -d -v -Wno-yacc
 hitex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
 hitex_LDADD = $(KPATHSEA_LIBS) $(ZLIB_LIBS)
 #
@@ -4595,13 +4587,10 @@
 histretch_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
 histretch_LDADD = $(ZLIB_LIBS)
 #
-hishrink_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
+# The -I$(srcdir)/hitexdir is so the compiler can find the *parser.h file.
+hishrink_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) -I$(srcdir)/hitexdir
 hishrink_LDADD = $(ZLIB_LIBS)
 
-# We want debugging for the parser, and we use features not in POSIX yacc.
-# I guess the result is that we assume bison? Not sure if that's ok.
-AM_YFLAGS = -d -v -Wno-yacc
-
 # HiTeX CWEB sources
 hitex_web = hitexdir/format.w hitexdir/htex.w hitexdir/hitex.w
 
@@ -4614,19 +4603,24 @@
         mkhformat.c \
 	hput.c hput.h \
 	hget.c hget.h \
-	shrink.lex-in shrink.yacc-in \
+	shrink.l shrink.y \
 	hishrink.c histretch.c
 
 htex_c_h = htex.c htex.h
 hitex_c_h = hitex.c hitex.h 
 
-# Other web2c/*dir/am/*.am engine Makefile fragments define a bunch of
-# _OBJECTS variables. This does not seem right to me. Instead, we
-# correctly define the _SOURCES.
+# The actual sources for the lexer and parser are in format.w.
+# However, to simplify life with Automake (a little), we maintain them
+# here as if they were real, direct source files.
+# 
+# We want to do this partly because ultimately we want the generated
+# .[ch] files to be saved in $(srcdir), as is done for the other .[ly]
+# files, so that builders need not have yacc (bison in this case) and (f)lex. 
 #
-nodist_hitex_SOURCES = hformat.c hput.c $(htex_c_h) $(hitex_c_h)
-nodist_histretch_SOURCES = hformat.c histretch.c
-nodist_hishrink_SOURCES = hformat.c hishrink.c shrink-lexer.l shrink-parser.y
+# Without the strange $(srcdir), 
+hishrink_SOURCES = hitexdir/hishrink-lexer.l \
+                   hitexdir/hishrink-parser.y
+
 libpdftex_a_CPPFLAGS = $(REGEX_INCLUDES) $(pdftex_cppflags)
 libpdftex_a_CXXFLAGS = $(WARNING_CXXFLAGS)
 libpdftex_a_SOURCES = pdftexdir/avl.c pdftexdir/avl.h \
@@ -8045,9 +8039,19 @@
 gftype$(EXEEXT): $(gftype_OBJECTS) $(gftype_DEPENDENCIES) $(EXTRA_gftype_DEPENDENCIES) 
 	@rm -f gftype$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gftype_OBJECTS) $(gftype_LDADD) $(LIBS)
-shrink-parser.h: shrink-parser.c
-	@if test ! -f $@; then rm -f shrink-parser.c; else :; fi
-	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) shrink-parser.c; else :; fi
+hitexdir/$(am__dirstamp):
+	@$(MKDIR_P) hitexdir
+	@: > hitexdir/$(am__dirstamp)
+hitexdir/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) hitexdir/$(DEPDIR)
+	@: > hitexdir/$(DEPDIR)/$(am__dirstamp)
+hitexdir/hishrink-hishrink-lexer.$(OBJEXT): hitexdir/$(am__dirstamp) \
+	hitexdir/$(DEPDIR)/$(am__dirstamp)
+hitexdir/hishrink-parser.h: hitexdir/hishrink-parser.c
+	@if test ! -f $@; then rm -f hitexdir/hishrink-parser.c; else :; fi
+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) hitexdir/hishrink-parser.c; else :; fi
+hitexdir/hishrink-hishrink-parser.$(OBJEXT): hitexdir/$(am__dirstamp) \
+	hitexdir/$(DEPDIR)/$(am__dirstamp)
 
 hishrink$(EXEEXT): $(hishrink_OBJECTS) $(hishrink_DEPENDENCIES) $(EXTRA_hishrink_DEPENDENCIES) 
 	@rm -f hishrink$(EXEEXT)
@@ -8337,6 +8341,7 @@
 	-rm -f eptexdir/*.$(OBJEXT)
 	-rm -f etexdir/*.$(OBJEXT)
 	-rm -f euptexdir/*.$(OBJEXT)
+	-rm -f hitexdir/*.$(OBJEXT)
 	-rm -f libmd5/*.$(OBJEXT)
 	-rm -f luatexdir/*.$(OBJEXT)
 	-rm -f luatexdir/dvi/*.$(OBJEXT)
@@ -8441,16 +8446,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gftodvi.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gftopk.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gftype.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hishrink-hformat.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hishrink-hishrink.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hishrink-shrink-lexer.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hishrink-shrink-parser.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/histretch-hformat.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/histretch-histretch.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hitex-hformat.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hitex-hitex.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hitex-hput.Po at am__quote@ # am--include-marker
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hitex-htex.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/initex-callexe.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libluahbtexspecific_a-luainit-hb.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libluahbtexspecific_a-luastuff-hb.Po at am__quote@ # am--include-marker
@@ -8563,6 +8560,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote at eptexdir/$(DEPDIR)/eptex-eptexextra.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at etexdir/$(DEPDIR)/etex-etexextra.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at euptexdir/$(DEPDIR)/euptex-euptexextra.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at libmd5/$(DEPDIR)/a-md5.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at libmd5/$(DEPDIR)/md5main-md5main.Po at am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote at luatexdir/$(DEPDIR)/luahbtex-luatex.Po at am__quote@ # am--include-marker
@@ -17368,76 +17367,34 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(euptex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o euptex-euptex-pool.obj `if test -f 'euptex-pool.c'; then $(CYGPATH_W) 'euptex-pool.c'; else $(CYGPATH_W) '$(srcdir)/euptex-pool.c'; fi`
 
-hishrink-hformat.o: hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-hformat.o -MD -MP -MF $(DEPDIR)/hishrink-hformat.Tpo -c -o hishrink-hformat.o `test -f 'hformat.c' || echo '$(srcdir)/'`hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-hformat.Tpo $(DEPDIR)/hishrink-hformat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hformat.c' object='hishrink-hformat.o' libtool=no @AMDEPBACKSLASH@
+hitexdir/hishrink-hishrink-lexer.o: hitexdir/hishrink-lexer.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitexdir/hishrink-hishrink-lexer.o -MD -MP -MF hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Tpo -c -o hitexdir/hishrink-hishrink-lexer.o `test -f 'hitexdir/hishrink-lexer.c' || echo '$(srcdir)/'`hitexdir/hishrink-lexer.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Tpo hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hitexdir/hishrink-lexer.c' object='hitexdir/hishrink-hishrink-lexer.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-hformat.o `test -f 'hformat.c' || echo '$(srcdir)/'`hformat.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitexdir/hishrink-hishrink-lexer.o `test -f 'hitexdir/hishrink-lexer.c' || echo '$(srcdir)/'`hitexdir/hishrink-lexer.c
 
-hishrink-hformat.obj: hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-hformat.obj -MD -MP -MF $(DEPDIR)/hishrink-hformat.Tpo -c -o hishrink-hformat.obj `if test -f 'hformat.c'; then $(CYGPATH_W) 'hformat.c'; else $(CYGPATH_W) '$(srcdir)/hformat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-hformat.Tpo $(DEPDIR)/hishrink-hformat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hformat.c' object='hishrink-hformat.obj' libtool=no @AMDEPBACKSLASH@
+hitexdir/hishrink-hishrink-lexer.obj: hitexdir/hishrink-lexer.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitexdir/hishrink-hishrink-lexer.obj -MD -MP -MF hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Tpo -c -o hitexdir/hishrink-hishrink-lexer.obj `if test -f 'hitexdir/hishrink-lexer.c'; then $(CYGPATH_W) 'hitexdir/hishrink-lexer.c'; else $(CYGPATH_W) '$(srcdir)/hitexdir/hishrink-lexer.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Tpo hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hitexdir/hishrink-lexer.c' object='hitexdir/hishrink-hishrink-lexer.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-hformat.obj `if test -f 'hformat.c'; then $(CYGPATH_W) 'hformat.c'; else $(CYGPATH_W) '$(srcdir)/hformat.c'; fi`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitexdir/hishrink-hishrink-lexer.obj `if test -f 'hitexdir/hishrink-lexer.c'; then $(CYGPATH_W) 'hitexdir/hishrink-lexer.c'; else $(CYGPATH_W) '$(srcdir)/hitexdir/hishrink-lexer.c'; fi`
 
-hishrink-hishrink.o: hishrink.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-hishrink.o -MD -MP -MF $(DEPDIR)/hishrink-hishrink.Tpo -c -o hishrink-hishrink.o `test -f 'hishrink.c' || echo '$(srcdir)/'`hishrink.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-hishrink.Tpo $(DEPDIR)/hishrink-hishrink.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hishrink.c' object='hishrink-hishrink.o' libtool=no @AMDEPBACKSLASH@
+hitexdir/hishrink-hishrink-parser.o: hitexdir/hishrink-parser.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitexdir/hishrink-hishrink-parser.o -MD -MP -MF hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Tpo -c -o hitexdir/hishrink-hishrink-parser.o `test -f 'hitexdir/hishrink-parser.c' || echo '$(srcdir)/'`hitexdir/hishrink-parser.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Tpo hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hitexdir/hishrink-parser.c' object='hitexdir/hishrink-hishrink-parser.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-hishrink.o `test -f 'hishrink.c' || echo '$(srcdir)/'`hishrink.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitexdir/hishrink-hishrink-parser.o `test -f 'hitexdir/hishrink-parser.c' || echo '$(srcdir)/'`hitexdir/hishrink-parser.c
 
-hishrink-hishrink.obj: hishrink.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-hishrink.obj -MD -MP -MF $(DEPDIR)/hishrink-hishrink.Tpo -c -o hishrink-hishrink.obj `if test -f 'hishrink.c'; then $(CYGPATH_W) 'hishrink.c'; else $(CYGPATH_W) '$(srcdir)/hishrink.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-hishrink.Tpo $(DEPDIR)/hishrink-hishrink.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hishrink.c' object='hishrink-hishrink.obj' libtool=no @AMDEPBACKSLASH@
+hitexdir/hishrink-hishrink-parser.obj: hitexdir/hishrink-parser.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitexdir/hishrink-hishrink-parser.obj -MD -MP -MF hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Tpo -c -o hitexdir/hishrink-hishrink-parser.obj `if test -f 'hitexdir/hishrink-parser.c'; then $(CYGPATH_W) 'hitexdir/hishrink-parser.c'; else $(CYGPATH_W) '$(srcdir)/hitexdir/hishrink-parser.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Tpo hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hitexdir/hishrink-parser.c' object='hitexdir/hishrink-hishrink-parser.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-hishrink.obj `if test -f 'hishrink.c'; then $(CYGPATH_W) 'hishrink.c'; else $(CYGPATH_W) '$(srcdir)/hishrink.c'; fi`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitexdir/hishrink-hishrink-parser.obj `if test -f 'hitexdir/hishrink-parser.c'; then $(CYGPATH_W) 'hitexdir/hishrink-parser.c'; else $(CYGPATH_W) '$(srcdir)/hitexdir/hishrink-parser.c'; fi`
 
-hishrink-shrink-lexer.o: shrink-lexer.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-shrink-lexer.o -MD -MP -MF $(DEPDIR)/hishrink-shrink-lexer.Tpo -c -o hishrink-shrink-lexer.o `test -f 'shrink-lexer.c' || echo '$(srcdir)/'`shrink-lexer.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-shrink-lexer.Tpo $(DEPDIR)/hishrink-shrink-lexer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='shrink-lexer.c' object='hishrink-shrink-lexer.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-shrink-lexer.o `test -f 'shrink-lexer.c' || echo '$(srcdir)/'`shrink-lexer.c
-
-hishrink-shrink-lexer.obj: shrink-lexer.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-shrink-lexer.obj -MD -MP -MF $(DEPDIR)/hishrink-shrink-lexer.Tpo -c -o hishrink-shrink-lexer.obj `if test -f 'shrink-lexer.c'; then $(CYGPATH_W) 'shrink-lexer.c'; else $(CYGPATH_W) '$(srcdir)/shrink-lexer.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-shrink-lexer.Tpo $(DEPDIR)/hishrink-shrink-lexer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='shrink-lexer.c' object='hishrink-shrink-lexer.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-shrink-lexer.obj `if test -f 'shrink-lexer.c'; then $(CYGPATH_W) 'shrink-lexer.c'; else $(CYGPATH_W) '$(srcdir)/shrink-lexer.c'; fi`
-
-hishrink-shrink-parser.o: shrink-parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-shrink-parser.o -MD -MP -MF $(DEPDIR)/hishrink-shrink-parser.Tpo -c -o hishrink-shrink-parser.o `test -f 'shrink-parser.c' || echo '$(srcdir)/'`shrink-parser.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-shrink-parser.Tpo $(DEPDIR)/hishrink-shrink-parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='shrink-parser.c' object='hishrink-shrink-parser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-shrink-parser.o `test -f 'shrink-parser.c' || echo '$(srcdir)/'`shrink-parser.c
-
-hishrink-shrink-parser.obj: shrink-parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hishrink-shrink-parser.obj -MD -MP -MF $(DEPDIR)/hishrink-shrink-parser.Tpo -c -o hishrink-shrink-parser.obj `if test -f 'shrink-parser.c'; then $(CYGPATH_W) 'shrink-parser.c'; else $(CYGPATH_W) '$(srcdir)/shrink-parser.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hishrink-shrink-parser.Tpo $(DEPDIR)/hishrink-shrink-parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='shrink-parser.c' object='hishrink-shrink-parser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hishrink_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hishrink-shrink-parser.obj `if test -f 'shrink-parser.c'; then $(CYGPATH_W) 'shrink-parser.c'; else $(CYGPATH_W) '$(srcdir)/shrink-parser.c'; fi`
-
-histretch-hformat.o: hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(histretch_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT histretch-hformat.o -MD -MP -MF $(DEPDIR)/histretch-hformat.Tpo -c -o histretch-hformat.o `test -f 'hformat.c' || echo '$(srcdir)/'`hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/histretch-hformat.Tpo $(DEPDIR)/histretch-hformat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hformat.c' object='histretch-hformat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(histretch_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o histretch-hformat.o `test -f 'hformat.c' || echo '$(srcdir)/'`hformat.c
-
-histretch-hformat.obj: hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(histretch_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT histretch-hformat.obj -MD -MP -MF $(DEPDIR)/histretch-hformat.Tpo -c -o histretch-hformat.obj `if test -f 'hformat.c'; then $(CYGPATH_W) 'hformat.c'; else $(CYGPATH_W) '$(srcdir)/hformat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/histretch-hformat.Tpo $(DEPDIR)/histretch-hformat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hformat.c' object='histretch-hformat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(histretch_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o histretch-hformat.obj `if test -f 'hformat.c'; then $(CYGPATH_W) 'hformat.c'; else $(CYGPATH_W) '$(srcdir)/hformat.c'; fi`
-
 histretch-histretch.o: histretch.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(histretch_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT histretch-histretch.o -MD -MP -MF $(DEPDIR)/histretch-histretch.Tpo -c -o histretch-histretch.o `test -f 'histretch.c' || echo '$(srcdir)/'`histretch.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/histretch-histretch.Tpo $(DEPDIR)/histretch-histretch.Po
@@ -17452,48 +17409,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(histretch_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o histretch-histretch.obj `if test -f 'histretch.c'; then $(CYGPATH_W) 'histretch.c'; else $(CYGPATH_W) '$(srcdir)/histretch.c'; fi`
 
-hitex-hformat.o: hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitex-hformat.o -MD -MP -MF $(DEPDIR)/hitex-hformat.Tpo -c -o hitex-hformat.o `test -f 'hformat.c' || echo '$(srcdir)/'`hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hitex-hformat.Tpo $(DEPDIR)/hitex-hformat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hformat.c' object='hitex-hformat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitex-hformat.o `test -f 'hformat.c' || echo '$(srcdir)/'`hformat.c
-
-hitex-hformat.obj: hformat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitex-hformat.obj -MD -MP -MF $(DEPDIR)/hitex-hformat.Tpo -c -o hitex-hformat.obj `if test -f 'hformat.c'; then $(CYGPATH_W) 'hformat.c'; else $(CYGPATH_W) '$(srcdir)/hformat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hitex-hformat.Tpo $(DEPDIR)/hitex-hformat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hformat.c' object='hitex-hformat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitex-hformat.obj `if test -f 'hformat.c'; then $(CYGPATH_W) 'hformat.c'; else $(CYGPATH_W) '$(srcdir)/hformat.c'; fi`
-
-hitex-hput.o: hput.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitex-hput.o -MD -MP -MF $(DEPDIR)/hitex-hput.Tpo -c -o hitex-hput.o `test -f 'hput.c' || echo '$(srcdir)/'`hput.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hitex-hput.Tpo $(DEPDIR)/hitex-hput.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hput.c' object='hitex-hput.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitex-hput.o `test -f 'hput.c' || echo '$(srcdir)/'`hput.c
-
-hitex-hput.obj: hput.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitex-hput.obj -MD -MP -MF $(DEPDIR)/hitex-hput.Tpo -c -o hitex-hput.obj `if test -f 'hput.c'; then $(CYGPATH_W) 'hput.c'; else $(CYGPATH_W) '$(srcdir)/hput.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hitex-hput.Tpo $(DEPDIR)/hitex-hput.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hput.c' object='hitex-hput.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitex-hput.obj `if test -f 'hput.c'; then $(CYGPATH_W) 'hput.c'; else $(CYGPATH_W) '$(srcdir)/hput.c'; fi`
-
-hitex-htex.o: htex.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitex-htex.o -MD -MP -MF $(DEPDIR)/hitex-htex.Tpo -c -o hitex-htex.o `test -f 'htex.c' || echo '$(srcdir)/'`htex.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hitex-htex.Tpo $(DEPDIR)/hitex-htex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='htex.c' object='hitex-htex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitex-htex.o `test -f 'htex.c' || echo '$(srcdir)/'`htex.c
-
-hitex-htex.obj: htex.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitex-htex.obj -MD -MP -MF $(DEPDIR)/hitex-htex.Tpo -c -o hitex-htex.obj `if test -f 'htex.c'; then $(CYGPATH_W) 'htex.c'; else $(CYGPATH_W) '$(srcdir)/htex.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hitex-htex.Tpo $(DEPDIR)/hitex-htex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='htex.c' object='hitex-htex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hitex-htex.obj `if test -f 'htex.c'; then $(CYGPATH_W) 'htex.c'; else $(CYGPATH_W) '$(srcdir)/htex.c'; fi`
-
 hitex-hitex.o: hitex.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hitex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hitex-hitex.o -MD -MP -MF $(DEPDIR)/hitex-hitex.Tpo -c -o hitex-hitex.o `test -f 'hitex.c' || echo '$(srcdir)/'`hitex.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/hitex-hitex.Tpo $(DEPDIR)/hitex-hitex.Po
@@ -18899,10 +18814,6 @@
 .l.c:
 	$(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
 
-shrink-lexer.c: shrink-lexer.l
-	$(AM_V_LEX) \
-	$(SHELL) $(YLWRAP) `test -f 'shrink-lexer.l' || echo '$(srcdir)/'`shrink-lexer.l $(LEX_OUTPUT_ROOT).c shrink-lexer.c -- $(LEX) $(AM_LFLAGS) $(LFLAGS)
-
 .mm.o:
 @am__fastdepOBJCXX_TRUE@	$(AM_V_OBJCXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
 @am__fastdepOBJCXX_TRUE@	$(OBJCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@@ -18944,10 +18855,6 @@
 .y.c:
 	$(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
 
-shrink-parser.c: shrink-parser.y
-	$(AM_V_YACC) \
-	$(SHELL) $(YLWRAP) `test -f 'shrink-parser.y' || echo '$(srcdir)/'`shrink-parser.y y.tab.c shrink-parser.c y.tab.h `echo shrink-parser.c | $(am__yacc_c2h)` y.output shrink-parser.output -- $(YACC) $(AM_YFLAGS) $(YFLAGS)
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -19598,9 +19505,6 @@
 	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
-	-rm -f shrink-lexer.c
-	-rm -f shrink-parser.c
-	-rm -f shrink-parser.h
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
@@ -19614,6 +19518,8 @@
 	-rm -f etexdir/$(am__dirstamp)
 	-rm -f euptexdir/$(DEPDIR)/$(am__dirstamp)
 	-rm -f euptexdir/$(am__dirstamp)
+	-rm -f hitexdir/$(DEPDIR)/$(am__dirstamp)
+	-rm -f hitexdir/$(am__dirstamp)
 	-rm -f libmd5/$(DEPDIR)/$(am__dirstamp)
 	-rm -f libmd5/$(am__dirstamp)
 	-rm -f luatexdir/$(DEPDIR)/$(am__dirstamp)
@@ -19743,6 +19649,9 @@
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
+	-rm -f hitexdir/hishrink-lexer.c
+	-rm -f hitexdir/hishrink-parser.c
+	-rm -f hitexdir/hishrink-parser.h
 clean: clean-recursive
 
 clean-am: clean-binPROGRAMS clean-generic clean-libLIBRARIES \
@@ -19788,16 +19697,8 @@
 	-rm -f ./$(DEPDIR)/gftodvi.Po
 	-rm -f ./$(DEPDIR)/gftopk.Po
 	-rm -f ./$(DEPDIR)/gftype.Po
-	-rm -f ./$(DEPDIR)/hishrink-hformat.Po
-	-rm -f ./$(DEPDIR)/hishrink-hishrink.Po
-	-rm -f ./$(DEPDIR)/hishrink-shrink-lexer.Po
-	-rm -f ./$(DEPDIR)/hishrink-shrink-parser.Po
-	-rm -f ./$(DEPDIR)/histretch-hformat.Po
 	-rm -f ./$(DEPDIR)/histretch-histretch.Po
-	-rm -f ./$(DEPDIR)/hitex-hformat.Po
 	-rm -f ./$(DEPDIR)/hitex-hitex.Po
-	-rm -f ./$(DEPDIR)/hitex-hput.Po
-	-rm -f ./$(DEPDIR)/hitex-htex.Po
 	-rm -f ./$(DEPDIR)/initex-callexe.Po
 	-rm -f ./$(DEPDIR)/libluahbtexspecific_a-luainit-hb.Po
 	-rm -f ./$(DEPDIR)/libluahbtexspecific_a-luastuff-hb.Po
@@ -19910,6 +19811,8 @@
 	-rm -f eptexdir/$(DEPDIR)/eptex-eptexextra.Po
 	-rm -f etexdir/$(DEPDIR)/etex-etexextra.Po
 	-rm -f euptexdir/$(DEPDIR)/euptex-euptexextra.Po
+	-rm -f hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Po
+	-rm -f hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Po
 	-rm -f libmd5/$(DEPDIR)/a-md5.Po
 	-rm -f libmd5/$(DEPDIR)/md5main-md5main.Po
 	-rm -f luatexdir/$(DEPDIR)/luahbtex-luatex.Po
@@ -20567,16 +20470,8 @@
 	-rm -f ./$(DEPDIR)/gftodvi.Po
 	-rm -f ./$(DEPDIR)/gftopk.Po
 	-rm -f ./$(DEPDIR)/gftype.Po
-	-rm -f ./$(DEPDIR)/hishrink-hformat.Po
-	-rm -f ./$(DEPDIR)/hishrink-hishrink.Po
-	-rm -f ./$(DEPDIR)/hishrink-shrink-lexer.Po
-	-rm -f ./$(DEPDIR)/hishrink-shrink-parser.Po
-	-rm -f ./$(DEPDIR)/histretch-hformat.Po
 	-rm -f ./$(DEPDIR)/histretch-histretch.Po
-	-rm -f ./$(DEPDIR)/hitex-hformat.Po
 	-rm -f ./$(DEPDIR)/hitex-hitex.Po
-	-rm -f ./$(DEPDIR)/hitex-hput.Po
-	-rm -f ./$(DEPDIR)/hitex-htex.Po
 	-rm -f ./$(DEPDIR)/initex-callexe.Po
 	-rm -f ./$(DEPDIR)/libluahbtexspecific_a-luainit-hb.Po
 	-rm -f ./$(DEPDIR)/libluahbtexspecific_a-luastuff-hb.Po
@@ -20689,6 +20584,8 @@
 	-rm -f eptexdir/$(DEPDIR)/eptex-eptexextra.Po
 	-rm -f etexdir/$(DEPDIR)/etex-etexextra.Po
 	-rm -f euptexdir/$(DEPDIR)/euptex-euptexextra.Po
+	-rm -f hitexdir/$(DEPDIR)/hishrink-hishrink-lexer.Po
+	-rm -f hitexdir/$(DEPDIR)/hishrink-hishrink-parser.Po
 	-rm -f libmd5/$(DEPDIR)/a-md5.Po
 	-rm -f libmd5/$(DEPDIR)/md5main-md5main.Po
 	-rm -f luatexdir/$(DEPDIR)/luahbtex-luatex.Po
@@ -22122,6 +22019,9 @@
 euptrip-clean:
 	rm -rf euptripdir
 
+# convenience target to build all the programs here.
+hiall: hitex hishrink histretch
+
 $(format_c_h_l_y): format-tangle
 	$(hi_ctangle_sh) format
 #
@@ -22128,40 +22028,10 @@
 format-tangle: ctangle$(EXEEXT) hitexdir/format.w tangle-sh
 	$(hi_ctangle_sh) format
 
-$(hitex_c_h): hitex-tangle
-	$(hi_ctangle_sh) hitex
+# This is our attempt to ensure that bison is run before anything else.
 #
-hitex-tangle: ctangle$(EXEEXT) hitexdir/hitex.w tangle-sh
-	$(hi_ctangle_sh) hitex
+$(hishrink_OBJECTS): hitexdir/hishrink-parser.h
 
-# htex.c needs hitex.h, so depend on the hitex tangle.
-$(htex_c_h): htex-tangle hitex-tangle
-	$(hi_ctangle_sh) htex
-#
-htex-tangle: ctangle$(EXEEXT) hitexdir/htex.w tangle-sh hitex-tangle
-	$(hi_ctangle_sh) htex
-
-# Generating hformat.c using mkhformat.
-hformat.c: mkhformat
-	./mkhformat >hformat.c || { rm -f hformat.c; exit 1; }
-
-# Postprocessing lex and yacc files generated by ctangle.
-# (SED is defined with AC_PROG_SED)
-shrink-parser.y: $(srcdir)/hitexdir/yacc.sed shrink.yacc-in
-	$(SED) -f $(srcdir)/hitexdir/yacc.sed shrink.yacc-in >shrink-parser.y \
-	|| { rm -f shrink-parser.y; exit 1; }
-#
-shrink-lexer.l: $(srcdir)/hitexdir/lex.sed shrink.lex-in
-	$(SED) -f $(srcdir)/hitexdir/lex.sed shrink.lex-in >shrink-lexer.l \
-	|| { rm -f shrink-lexer.l; exit 1; }
-
-# shrink needs the yacc header. It's actually the .o that should be the
-# target here, seems to me, but hishrink.o is not used for the object
-# name, it's hishrink-hishrink.o (because the program is also named
-# hishrink), and adding that here ends up trying to link with
-# hishrink-hishrink.o (I don't know), which doesn't exist. Sigh.
-hishrink.c: shrink-parser.h shrink-parser.c
-
 # still missing
 
 # We must create pdftexd.h (and xpdf...) before building the libpdftex_a_OBJECTS.

Index: trunk/Build/source/texk/web2c/hitexdir
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir	2021-09-28 21:45:20 UTC (rev 60644)

Property changes on: trunk/Build/source/texk/web2c/hitexdir
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+hishrink-parser.output
Modified: trunk/Build/source/texk/web2c/hitexdir/am/hitex.am
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/am/hitex.am	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir/am/hitex.am	2021-09-28 21:45:20 UTC (rev 60644)
@@ -9,8 +9,13 @@
 endif HITEX
 EXTRA_PROGRAMS += hitex hishrink histretch
 
-#kb hitex_CFLAGS = $(AM_CFLAGS) \
-#kb -Wno-parentheses -Wno-maybe-uninitialized -Wno-unused-function -Wno-unused-variable 
+# convenience target to build all the programs here.
+hiall: hitex hishrink histretch
+
+# We want debugging for the parser, and we use features not in POSIX yacc.
+# The result is that we assume bison? Not sure if that's ok.
+AM_YFLAGS = -d -v -Wno-yacc
+
 hitex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
 hitex_LDADD = $(KPATHSEA_LIBS) $(ZLIB_LIBS)
 #
@@ -17,13 +22,10 @@
 histretch_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
 histretch_LDADD = $(ZLIB_LIBS)
 #
-hishrink_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES)
+# The -I$(srcdir)/hitexdir is so the compiler can find the *parser.h file.
+hishrink_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) -I$(srcdir)/hitexdir
 hishrink_LDADD = $(ZLIB_LIBS)
 
-# We want debugging for the parser, and we use features not in POSIX yacc.
-# I guess the result is that we assume bison? Not sure if that's ok.
-AM_YFLAGS = -d -v -Wno-yacc
-
 # HiTeX CWEB sources
 hitex_web = hitexdir/format.w hitexdir/htex.w hitexdir/hitex.w
 
@@ -47,41 +49,29 @@
 format-tangle: ctangle$(EXEEXT) hitexdir/format.w tangle-sh
 	$(hi_ctangle_sh) format
 
-$(hitex_c_h): hitex-tangle
-	$(hi_ctangle_sh) hitex
+# The actual sources for the lexer and parser are in format.w.
+# However, to simplify life with Automake (a little), we maintain them
+# here as if they were real, direct source files. That is, we update
+# them by hand when they change.
+# 
+# We want to do this partly because ultimately we want the generated
+# .[ch] files to be saved in $(srcdir), as is done for the other .[ly]
+# files, so that builders need not have yacc (bison in this case) and (f)lex. 
 #
-hitex-tangle: ctangle$(EXEEXT) hitexdir/hitex.w tangle-sh
-	$(hi_ctangle_sh) hitex
+# The $(srcdir) is not necessary if everything is up to date,
+# but can help with the remake if the [.ch] or [.ly] are not present.
+hishrink_SOURCES = $(srcdir)/hitexdir/hishrink-lexer.l \
+                   $(srcdir)/hitexdir/hishrink-parser.y
 
-# htex.c needs hitex.h, so depend on the hitex tangle.
-$(htex_c_h): htex-tangle hitex-tangle
-	$(hi_ctangle_sh) htex
+# This is our attempt to ensure that bison is run before anything else.
 #
-htex-tangle: ctangle$(EXEEXT) hitexdir/htex.w tangle-sh hitex-tangle
-	$(hi_ctangle_sh) htex
-
-# Generating hformat.c using mkhformat.
-hformat.c: mkhformat
-	./mkhformat >hformat.c || { rm -f hformat.c; exit 1; }
-
-
-
-# Other web2c/*dir/am/*.am engine Makefile fragments define a bunch of
-# _OBJECTS variables. This does not seem right to me. Instead, we
-# correctly define the _SOURCES.
+$(hishrink_OBJECTS): $(srcdir)/hitexdir/hishrink-parser.h
 #
-nodist_hitex_SOURCES = hformat.c hput.c $(htex_c_h) $(hitex_c_h)
-nodist_histretch_SOURCES = hformat.c histretch.c
-hishrink_SOURCES = lexer.c parser.c parser.h
-nodist_hishrink_SOURCES = hformat.c hishrink.c
+# By the way, the $(BUILT_SOURCES) suggestion in the Automake manual for
+# this does not work for us, because we want to be able to invoke
+# specific targets (hiall, hitex, hishrink, ...), and $(BUILT_SOURCES)
+# is only a dependency on general targets (all, install, ...).
 
-# shrink needs the yacc header. It's actually the .o that should be the
-# target here, seems to me, but hishrink.o is not used for the object
-# name, it's hishrink-hishrink.o (because the program is also named
-# hishrink), and adding that here ends up trying to link with
-# hishrink-hishrink.o (I don't know), which doesn't exist. Sigh.
-#hishrink.c: shrink-parser.h shrink-parser.c
-
 EXTRA_DIST += hitexdir/ChangeLog $(hitex_web)
 
 DISTCLEANFILES += $(nodist_hitex_SOURCES)

Modified: trunk/Build/source/texk/web2c/hitexdir/format.w
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/format.w	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir/format.w	2021-09-28 21:45:20 UTC (rev 60644)
@@ -10179,7 +10179,7 @@
 #include "hput.h"
 
 @<enable bison debugging@>@;
-#include "parser.h"
+#include "hishrink-parser.h"
 
 @<scanning macros@>@;@+
 @<scanning functions@>@;
@@ -10274,7 +10274,7 @@
 #include "error.h"
 #include "hformat.h"
 #include "hput.h"
-#include "parser.h"
+#include "hishrink-parser.h"
 
 extern void yyset_debug(int lex_debug);
 extern int yylineno;

Copied: trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.c (from rev 60634, trunk/Build/source/texk/web2c/hitexdir/lexer.c)
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.c	                        (rev 0)
+++ trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.c	2021-09-28 21:45:20 UTC (rev 60644)
@@ -0,0 +1,3206 @@
+#line 2 "shrink.lex.c"
+
+#line 4 "shrink.lex.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+/* %not-for-header */
+
+/* %if-c-only */
+/* %if-not-reentrant */
+
+/* %endif */
+/* %endif */
+/* %ok-for-header */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 37
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* %if-c++-only */
+/* %endif */
+
+/* %if-c-only */
+    
+/* %endif */
+
+/* %if-c-only */
+
+/* %endif */
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+/* %if-c-only */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+/* %endif */
+
+/* %if-tables-serialization */
+/* %endif */
+/* end standard C headers. */
+
+/* %if-c-or-c++ */
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+/* %endif */
+
+/* %if-c++-only */
+/* %endif */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* %not-for-header */
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+/* %ok-for-header */
+
+/* %not-for-header */
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+/* %ok-for-header */
+
+/* %if-reentrant */
+/* %endif */
+
+/* %if-not-reentrant */
+
+/* %endif */
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart(yyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+/* %if-not-reentrant */
+extern yy_size_t yyleng;
+/* %endif */
+
+/* %if-c-only */
+/* %if-not-reentrant */
+extern FILE *yyin, *yyout;
+/* %endif */
+/* %endif */
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
+     *       access to the local variable yy_act. Since yyless() is a macro, it would break
+     *       existing scanners that call yyless() from OUTSIDE yylex. 
+     *       One obvious solution it to make yy_act a global. I tried that, and saw
+     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
+     *       normally declared as a register variable-- so it is not worth it.
+     */
+    #define  YY_LESS_LINENO(n) \
+            do { \
+                int yyl;\
+                for ( yyl = n; yyl < yyleng; ++yyl )\
+                    if ( yytext[yyl] == '\n' )\
+                        --yylineno;\
+            }while(0)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+/* %if-c-only */
+	FILE *yy_input_file;
+/* %endif */
+
+/* %if-c++-only */
+/* %endif */
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	yy_size_t yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* %if-c-only Standard (non-C++) definition */
+/* %not-for-header */
+
+/* %if-not-reentrant */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+/* %endif */
+/* %ok-for-header */
+
+/* %endif */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* %if-c-only Standard (non-C++) definition */
+
+/* %if-not-reentrant */
+/* %not-for-header */
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+/* %ok-for-header */
+
+/* %endif */
+
+void yyrestart (FILE *input_file  );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
+void yy_delete_buffer (YY_BUFFER_STATE b  );
+void yy_flush_buffer (YY_BUFFER_STATE b  );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
+
+/* %endif */
+
+void *yyalloc (yy_size_t  );
+void *yyrealloc (void *,yy_size_t  );
+void yyfree (void *  );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        yyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        yyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
+/* Begin user sect3 */
+
+#define FLEX_DEBUG
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+/* %if-c-only Standard (non-C++) definition */
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* %endif */
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
+	yyleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
+	(yy_c_buf_p) = yy_cp;
+
+/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
+#define YY_NUM_RULES 126
+#define YY_END_OF_BUFFER 127
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_accept[371] =
+    {   0,
+        0,    0,    0,    0,    0,    0,  127,  125,    6,    6,
+       43,   47,   10,  125,  114,  125,    4,    4,    1,    2,
+       41,  124,  124,  124,  124,  124,  124,  124,   31,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,   32,
+      124,   40,   14,   15,   13,   11,   74,   74,   58,   72,
+       48,   73,   49,   50,   74,  126,  126,  126,  126,    0,
+        0,    0,    0,    0,    0,    0,    7,    5,    5,    9,
+        9,    0,    0,    0,    4,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,   29,  124,  124,  124,  124,  124,  124,  124,
+
+       28,  124,   97,  124,  124,  124,  124,   27,  124,  124,
+      124,  124,  124,  124,  124,   86,  124,  124,  124,  124,
+       12,    0,   58,   58,    0,   59,   55,   52,   56,   60,
+       53,   54,   57,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   51,   71,   75,    0,    0,   20,   20,
+       16,    0,    0,    0,    5,    0,    9,   24,    8,   85,
+      124,  124,  124,  106,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,   33,  124,  124,  124,  124,  124,  124,
+      124,  124,   37,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  120,  107,  124,   98,  124,  124,   95,  124,
+
+      124,  124,  102,  124,  124,  124,  124,  124,  113,  124,
+      124,  124,  124,   59,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   76,    0,   18,   17,   21,    0,
+        0,    0,    0,    0,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,   94,  124,   34,  124,  122,   44,
+      124,   78,  124,   82,  124,  101,   42,  124,  124,  112,
+      124,  124,  108,   96,  124,  124,  115,  124,  124,   45,
+      124,   39,  124,  124,  124,  124,   79,  124,   84,  124,
+       70,   65,   61,   66,   69,   63,   64,   62,   68,   67,
+       77,   19,   22,    0,    0,   24,   25,  124,   89,  124,
+
+      124,  124,  124,  124,   87,   26,  124,  124,   35,  111,
+        3,   81,  104,  105,  124,  124,  124,   46,  124,  121,
+      124,  116,  124,  124,  124,  100,   83,  124,   23,    0,
+       99,  124,   90,  103,  124,  124,  124,   91,  124,  124,
+      124,  124,  124,  124,  124,  110,   30,    0,   25,  124,
+      123,  124,  124,  124,   88,  124,  109,   36,  118,   80,
+       92,  124,  124,   38,   93,  124,  117,  124,  119,    0
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        4,    4,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    5,    6,    7,    8,    8,    8,    8,    9,   10,
+       11,   12,   13,    8,   14,   15,    8,   16,   17,   17,
+       17,   17,   17,   17,   17,   18,   18,    8,    8,   19,
+        8,   20,    8,   21,   22,   22,   23,   24,   22,   25,
+       26,    8,   27,    8,   28,   29,    8,    8,    8,   30,
+        8,   31,   32,    8,    8,    8,    8,    8,    8,    8,
+        8,   33,    8,    8,   34,    8,   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,   51,    8,   60,    8,    8,    1,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   62,   62,   62,   62,   62,   62,   62,   62,   62,
+
+       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
+       62,   62,   62,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   64,
+       64,   64,   64,   64,   64,   64,   64,   65,   65,   65,
+       65,   65,   65,   65,   65
+    } ;
+
+static yyconst flex_int32_t yy_meta[66] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    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,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    1,
+        4,    1,    1,    1,    4
+    } ;
+
+static yyconst flex_int16_t yy_base[376] =
+    {   0,
+        0,    0,   65,  130,  194,  258,  629,  630,  630,  630,
+      630,  630,   74,   68,   64,   68,   77,   72,  630,  630,
+      630,   53,   61,   58,   59,  570,   57,  581,   65,   57,
+        0,  587,   73,   74,  100,  106,  107,  104,  112,  113,
+      587,  630,  630,  630,  630,  615,  630,  117,  148,  162,
+      630,  630,  630,  630,  322,  630,  562,  561,  560,  611,
+      610,  609,  556,  555,  554,  165,  630,  630,  107,  154,
+      162,  157,  166,  193,  170,    0,  160,  571,  560,  558,
+      563,   24,   63,  153,  560,  173,  561,  148,  559,  572,
+      567,  570,  550,  564,  550,  184,  566,  180,  168,  106,
+
+        0,  560,    0,  545,  182,  550,  542,    0,  548,  538,
+      548,  556,  549,  539,  554,  539,  539,  552,  547,  542,
+      630,  228,  233,  237,  241,  243,  247,  630,  630,  630,
+      630,  630,  630,  250,  253,  257,  263,  266,  269,  272,
+      276,  279,  282,  630,  630,  630,  523,  522,  630,  573,
+      572,  571,  518,  517,  285,  288,  299,  291,  354,    0,
+      522,  535,  536,    0,  520,  518,  518,  528,  516,  530,
+      529,  530,  531,  519,  511,  509,  523,  511,  502,  522,
+      504,  516,    0,  509,  507,  515,  512,  498,  513,  515,
+      504,  506,    0,    0,  492,    0,  500,  506,  509,  508,
+
+      489,  500,    0,  501,  485,  498,  498,  490,    0,  477,
+      497,  479,  485,  249,  357,  364,  367,  370,  375,  378,
+      388,  396,  399,  402,  630,  470,  630,  521,  630,  520,
+      467,  421,  409,  431,  474,  478,  479,  485,  476,  483,
+      473,  478,  471,  479,    0,  450,  451,  439,    0,    0,
+      450,    0,  446,    0,  451,    0,    0,  439,  429,    0,
+      444,  421,    0,    0,  421,  430,    0,  422,  416,    0,
+      422,    0,  417,  398,  416,  411,    0,  397,    0,  402,
+      630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
+      630,  630,  630,  431,  315,  630,  441,  380,    0,  390,
+
+      379,  382,  380,  381,    0,    0,  356,  371,    0,    0,
+        0,    0,    0,    0,  372,  350,  346,    0,  351,    0,
+      344,    0,  340,  317,  297,    0,    0,  292,  630,  454,
+        0,  289,    0,    0,  281,  280,  279,    0,  285,  265,
+      224,  225,  203,  205,  209,    0,    0,  464,  478,  202,
+        0,  186,  172,  163,    0,  151,    0,    0,    0,    0,
+        0,  140,  100,    0,    0,  109,    0,   61,    0,  630,
+      503,  507,  511,  514,   70
+    } ;
+
+static yyconst flex_int16_t yy_def[376] =
+    {   0,
+      370,    1,  371,  371,  372,  372,  370,  370,  370,  370,
+      370,  370,  373,  374,  370,  370,  370,  370,  370,  370,
+      370,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  374,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  375,  375,  375,
+
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  370,  370,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  370,  370,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
+      375,  375,  375,  375,  375,  375,  375,  375,  375,    0,
+      370,  370,  370,  370,  370
+    } ;
+
+static yyconst flex_int16_t yy_nxt[696] =
+    {   0,
+        8,    9,   10,    9,    9,   11,   12,    8,   13,   14,
+        8,   15,   16,   16,    8,   17,   18,   18,   19,   20,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        8,    8,    8,   21,   22,   23,   24,   25,   26,   27,
+       28,   29,   30,   31,   32,   33,   34,   31,   35,   36,
+       31,   37,   38,   39,   31,   40,   31,   41,   31,   42,
+        8,    8,    8,    8,    8,   43,   43,   44,   43,  166,
+       67,  167,   76,   46,   60,   60,   60,   60,   67,   68,
+       69,   69,   62,   70,   71,   71,   72,   75,   75,   75,
+       77,   72,   73,   73,   73,   79,   81,   83,   78,   86,
+
+       89,   84,  168,   92,   93,   87,   82,   96,   99,   80,
+       94,   97,  169,  369,   90,   98,  100,   91,  122,  123,
+      101,  122,  155,  155,  155,   43,   43,   43,   43,   43,
+       43,   43,   44,   43,   74,   63,   64,   65,   46,  102,
+      105,  109,  112,  194,  106,  113,  115,  103,  117,  124,
+      123,  107,  124,  195,  104,  110,  368,  114,  367,  108,
+      116,  111,  118,  122,  123,  119,  122,   67,   72,   73,
+       73,   73,  158,  158,  158,   67,   72,  157,  157,  157,
+       72,   73,   73,   73,   72,   75,   75,   75,  366,  365,
+       43,   43,   43,   43,   43,   48,   49,  160,   50,  170,
+
+       51,  364,  177,  161,  171,  172,  178,   52,  159,  159,
+      159,  156,   53,   54,  159,  159,  159,  159,  174,  186,
+      190,  192,  198,  363,  175,  193,   55,  191,  362,  122,
+      123,  187,  122,  199,  124,  123,  188,  124,  124,  123,
+      361,  124,  125,  126,  214,  125,  360,  214,  125,  126,
+      214,  125,  359,  214,   56,   57,   58,   59,   56,   48,
+       49,  358,   50,  357,   51,  215,  215,  215,  216,  216,
+      216,   52,  217,  217,  217,  356,   53,   54,  218,  218,
+      218,  219,  219,  219,  220,  220,  220,  221,  221,  221,
+       55,  222,  222,  222,  223,  223,  223,  224,  224,  224,
+
+      155,  155,  155,  232,  232,  232,  158,  158,  158,  232,
+      232,  232,  232,   72,  157,  157,  157,  355,   56,   57,
+       58,   59,   56,  125,  126,  354,  127,  353,  128,  233,
+      296,  296,  296,  352,  351,  129,  350,  130,  130,  347,
+      131,  132,  133,  346,  134,  135,  136,  137,  138,  139,
+      140,  141,  142,  143,  144,  345,  145,  145,  145,  145,
+      145,  145,  145,  145,  145,  145,  145,  145,  234,  159,
+      159,  159,  215,  215,  215,  159,  159,  159,  159,  216,
+      216,  216,  217,  217,  217,  218,  218,  218,  344,  281,
+      219,  219,  219,  220,  220,  220,  282,  343,  342,  283,
+
+      341,  340,  284,  221,  221,  221,  339,  285,  338,  337,
+      286,  222,  222,  222,  223,  223,  223,  224,  224,  224,
+      287,  295,  295,  336,  296,  296,  296,  335,  288,  334,
+      333,  289,  332,  331,  290,  234,  232,  232,  232,  329,
+      328,  327,  232,  232,  232,  232,  297,  297,  297,  326,
+      325,  324,  297,  297,  297,  297,  297,  297,  297,  323,
+      322,  321,  297,  297,  297,  297,  348,  348,  320,  349,
+      349,  349,  319,  318,  317,  349,  349,  349,  349,  349,
+      349,  349,  316,  315,  314,  349,  349,  349,  349,  313,
+      312,  311,  310,  349,  349,  349,  309,  308,  330,  349,
+
+      349,  349,  349,   45,   45,   45,   45,   47,   47,   47,
+       47,   61,   61,   61,   66,  307,   66,   66,  306,  305,
+      304,  303,  302,  301,  300,  299,  298,  294,  293,  292,
+      291,  280,  279,  278,  277,  276,  275,  274,  273,  272,
+      271,  270,  269,  268,  267,  266,  265,  264,  263,  262,
+      261,  260,  259,  258,  257,  256,  255,  254,  253,  252,
+      251,  250,  249,  248,  247,  246,  245,  244,  243,  242,
+      241,  240,  239,  238,  237,  236,  235,  231,  230,  229,
+      228,  227,  226,  225,  213,  212,  211,  210,  209,  208,
+      207,  206,  205,  204,  203,  202,  201,  200,  197,  196,
+
+      189,  185,  184,  183,  182,  181,  180,  179,  176,  173,
+      165,  164,  163,  162,  154,  153,  152,  151,  150,  149,
+      148,  147,  146,  121,  120,   95,   88,   85,  370,    7,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370
+
+    } ;
+
+static yyconst flex_int16_t yy_chk[696] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    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,    3,    3,    3,   82,
+       14,   82,  375,    3,   13,   13,   13,   13,   14,   15,
+       15,   15,   13,   16,   16,   16,   18,   18,   18,   18,
+       22,   17,   17,   17,   17,   23,   24,   25,   22,   27,
+
+       29,   25,   83,   30,   30,   27,   24,   33,   34,   23,
+       30,   33,   83,  368,   29,   33,   34,   29,   48,   48,
+       34,   48,   69,   69,   69,    3,    3,    3,    3,    3,
+        4,    4,    4,    4,   17,   13,   13,   13,    4,   35,
+       36,   37,   38,  100,   36,   38,   39,   35,   40,   49,
+       49,   36,   49,  100,   35,   37,  366,   38,  363,   36,
+       39,   37,   40,   50,   50,   40,   50,   66,   70,   70,
+       70,   70,   72,   72,   72,   66,   71,   71,   71,   71,
+       73,   73,   73,   73,   75,   75,   75,   75,  362,  356,
+        4,    4,    4,    4,    4,    5,    5,   77,    5,   84,
+
+        5,  354,   88,   77,   84,   84,   88,    5,   74,   74,
+       74,   70,    5,    5,   74,   74,   74,   74,   86,   96,
+       98,   99,  105,  353,   86,   99,    5,   98,  352,  122,
+      122,   96,  122,  105,  123,  123,   96,  123,  124,  124,
+      350,  124,  125,  125,  126,  125,  345,  126,  127,  127,
+      214,  127,  344,  214,    5,    5,    5,    5,    5,    6,
+        6,  343,    6,  342,    6,  134,  134,  134,  135,  135,
+      135,    6,  136,  136,  136,  341,    6,    6,  137,  137,
+      137,  138,  138,  138,  139,  139,  139,  140,  140,  140,
+        6,  141,  141,  141,  142,  142,  142,  143,  143,  143,
+
+      155,  155,  155,  156,  156,  156,  158,  158,  158,  156,
+      156,  156,  156,  157,  157,  157,  157,  340,    6,    6,
+        6,    6,    6,   55,   55,  339,   55,  337,   55,  158,
+      295,  295,  295,  336,  335,   55,  332,   55,   55,  328,
+       55,   55,   55,  325,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,  324,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,  159,  159,
+      159,  159,  215,  215,  215,  159,  159,  159,  159,  216,
+      216,  216,  217,  217,  217,  218,  218,  218,  323,  215,
+      219,  219,  219,  220,  220,  220,  216,  321,  319,  217,
+
+      317,  316,  218,  221,  221,  221,  315,  219,  308,  307,
+      220,  222,  222,  222,  223,  223,  223,  224,  224,  224,
+      221,  233,  233,  304,  233,  233,  233,  303,  222,  302,
+      301,  223,  300,  298,  224,  232,  232,  232,  232,  294,
+      280,  278,  232,  232,  232,  232,  234,  234,  234,  276,
+      275,  274,  234,  234,  234,  234,  297,  297,  297,  273,
+      271,  269,  297,  297,  297,  297,  330,  330,  268,  330,
+      330,  330,  266,  265,  262,  330,  330,  330,  330,  348,
+      348,  348,  261,  259,  258,  348,  348,  348,  348,  255,
+      253,  251,  248,  349,  349,  349,  247,  246,  297,  349,
+
+      349,  349,  349,  371,  371,  371,  371,  372,  372,  372,
+      372,  373,  373,  373,  374,  244,  374,  374,  243,  242,
+      241,  240,  239,  238,  237,  236,  235,  231,  230,  228,
+      226,  213,  212,  211,  210,  208,  207,  206,  205,  204,
+      202,  201,  200,  199,  198,  197,  195,  192,  191,  190,
+      189,  188,  187,  186,  185,  184,  182,  181,  180,  179,
+      178,  177,  176,  175,  174,  173,  172,  171,  170,  169,
+      168,  167,  166,  165,  163,  162,  161,  154,  153,  152,
+      151,  150,  148,  147,  120,  119,  118,  117,  116,  115,
+      114,  113,  112,  111,  110,  109,  107,  106,  104,  102,
+
+       97,   95,   94,   93,   92,   91,   90,   89,   87,   85,
+       81,   80,   79,   78,   65,   64,   63,   62,   61,   60,
+       59,   58,   57,   46,   41,   32,   28,   26,    7,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370
+
+    } ;
+
+/* Table of booleans, true if rule could match eol. */
+static yyconst flex_int32_t yy_rule_can_match_eol[127] =
+    {   0,
+0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
+    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0,     };
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 1;
+
+static yyconst flex_int16_t yy_rule_linenum[126] =
+    {   0,
+      170,  171,  172,  173,  174,  175,  176,  178,  180,  182,
+      184,  185,  186,  187,  188,  193,  194,  195,  196,  197,
+      198,  199,  200,  202,  204,  206,  207,  208,  209,  211,
+      212,  213,  215,  216,  217,  219,  220,  222,  224,  225,
+      226,  228,  229,  231,  232,  233,  235,  238,  240,  241,
+      243,  244,  245,  246,  247,  248,  249,  251,  252,  254,
+      256,  257,  258,  259,  260,  261,  262,  263,  264,  267,
+      269,  270,  271,  273,  274,  275,  276,  279,  280,  281,
+      283,  284,  285,  286,  287,  288,  289,  291,  292,  293,
+      294,  296,  298,  300,  302,  304,  306,  307,  309,  311,
+
+      312,  313,  314,  316,  318,  319,  320,  322,  324,  326,
+      327,  328,  329,  330,  332,  334,  336,  337,  339,  341,
+      343,  345,  347,  349,  350
+    } ;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "shrink.l"
+/*509:*/
+#line 3 "shrink.l"
+	#line 10175 "format.w"
+	
+#include "basetypes.h"
+#include "error.h"
+#include "hformat.h"
+#include "hput.h"
+
+	/*423:*/
+#ifdef DEBUG
+#define  YYDEBUG 1
+extern int yydebug;
+#else
+#define YYDEBUG 0
+#endif
+	/*:423*/
+#include "hishrink-parser.h"
+
+	/*22:*/
+#define SCAN_UDEC(S) yylval.u= strtoul(S,NULL,10)
+	/*:22*/	/*25:*/
+#define SCAN_HEX(S) yylval.u= strtoul(S,NULL,16)
+	/*:25*/	/*28:*/
+#define SCAN_DEC(S) yylval.i= strtol(S,NULL,10)
+	/*:28*/	/*31:*/
+#define MAX_STR    (1<<10) 
+static char str_buffer[MAX_STR];
+static int str_length;
+#define STR_START      (str_length= 0)
+#define STR_PUT(C) (str_buffer[str_length++]= (C))
+#define STR_ADD(C) STR_PUT(C);RNG("String length",str_length,0,MAX_STR-1)
+#define STR_END        str_buffer[str_length]= 0
+#define SCAN_STR       yylval.s= str_buffer
+	/*:31*/	/*40:*/
+#define SCAN_UTF8_1(S)   yylval.u= ((S)[0]&0x7F)
+	/*:40*/	/*42:*/
+#define SCAN_UTF8_2(S)   yylval.u= (((S)[0]&0x1F)<<6)+((S)[1]&0x3F)
+	/*:42*/	/*44:*/
+#define SCAN_UTF8_3(S)   yylval.u= (((S)[0]&0x0F)<<12)+(((S)[1]&0x3F)<<6)+((S)[2]&0x3F)
+	/*:44*/	/*46:*/
+#define SCAN_UTF8_4(S)   yylval.u= (((S)[0]&0x03)<<18)+(((S)[1]&0x3F)<<12)+(((S)[2]&0x3F)<<6)+((S)[3]&0x3F)
+	/*:46*/	/*57:*/
+#define SCAN_DECFLOAT       yylval.f= atof(yytext)
+	/*:57*/	/*60:*/
+#define SCAN_HEXFLOAT       yylval.f= xtof(yytext)
+	/*:60*/	/*152:*/
+#define SCAN_REF(K) yylval.rf.k= K; yylval.rf.n= atoi(yytext+2)
+static int scan_level= 0;
+#define SCAN_START          yy_push_state(INITIAL);if (1==scan_level++) hpos0= hpos;
+#define SCAN_END            if (scan_level--) yy_pop_state(); else QUIT("Too many '>' in line %d",yylineno)
+#define SCAN_TXT_START      BEGIN(TXT)
+#define SCAN_TXT_END        BEGIN(INITIAL)
+	/*:152*/
+	/*61:*/
+
+float64_t xtof(char*x)
+{
+	#line 1369 "format.w"
+	int sign,digits,exp;
+	uint64_t mantissa= 0;
+	DBG(DBGFLOAT,"converting %s:\n",x);
+		/*62:*/
+	if(*x=='-'){sign= -1;x++;}
+	else if(*x=='+'){sign= +1;x++;}
+	else sign= +1;
+	DBG(DBGFLOAT,"\tsign=%d\n",sign);
+		/*:62*/
+	x= x+2;
+		/*63:*/
+	digits= 0;
+	while(*x=='0')x++;
+	while(*x!='.')
+	{mantissa= mantissa<<4;
+	if(*x<'A')mantissa= mantissa+*x-'0';
+	else mantissa= mantissa+*x-'A'+10;
+	x++;
+	digits++;
+	}
+	x++;
+	exp= 0;
+	while(*x!=0&&*x!='x')
+	{mantissa= mantissa<<4;
+	exp= exp-4;
+	if(*x<'A')mantissa= mantissa+*x-'0';
+	else mantissa= mantissa+*x-'A'+10;
+	x++;
+	digits++;
+	}
+	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+		/*:63*/
+		/*64:*/
+	if(mantissa==0)return 0.0;
+	{int s;
+	s= digits-DBL_M_BITS/4;
+	if(s>1)
+	mantissa= mantissa>>(4*(s-1));
+	else if(s<1)
+	mantissa= mantissa<<(4*(1-s));
+	exp= exp+4*(digits-1);
+	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+	while((mantissa>>DBL_M_BITS)>1){mantissa= mantissa>>1;exp++;}
+	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+	mantissa= mantissa&~((uint64_t)1<<DBL_M_BITS);
+	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+	}
+		/*:64*/
+		/*65:*/
+	if(*x=='x')
+	{int s;
+	x++;
+	if(*x=='-'){s= -1;x++;}
+	else if(*x=='+'){s= +1;x++;}
+	else s= +1;
+	DBG(DBGFLOAT,"\texpsign=%d\n",s);
+	DBG(DBGFLOAT,"\texp=%d\n",exp);
+	while(*x!=0)
+	{if(*x<'A')exp= exp+4*s*(*x-'0');
+	else exp= exp+4*s*(*x-'A'+10);
+	x++;
+	DBG(DBGFLOAT,"\texp=%d\n",exp);
+	}
+	}
+	RNG("Floating point exponent",exp,-DBL_EXCESS,DBL_EXCESS);
+		/*:65*/
+		/*66:*/
+	{union{float64_t d;uint64_t bits;}u;
+	if(sign<0)sign= 1;else sign= 0;
+	exp= exp+DBL_EXCESS;
+	u.bits= ((uint64_t)sign<<63)
+		|((uint64_t)exp<<DBL_M_BITS)	|mantissa;
+	DBG(DBGFLOAT," return %f\n",u.d);
+	return u.d;
+	}
+		/*:66*/
+	}
+	/*:61*/
+int yywrap(void){
+	#line 10186 "format.w"
+	return 1;}
+#ifdef _MSC_VER
+#pragma  warning( disable : 4267)
+#endif
+
+#define YY_NO_UNISTD_H 1
+#define YY_NO_INPUT 1
+/*23:*/
+/*:23*/	/*32:*/
+
+/*:32*/	/*39:*/
+/*:39*/	/*41:*/
+/*:41*/	/*43:*/
+/*:43*/	/*45:*/
+/*:45*/	/*149:*/
+
+/*:149*/
+#line 1009 "shrink.lex.c"
+
+#define INITIAL 0
+#define STR 1
+#define TXT 2
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+/* %if-c-only */
+#include <unistd.h>
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* %if-c-only Reentrant structure and macros (non-C++). */
+/* %if-reentrant */
+/* %if-c-only */
+
+static int yy_init_globals (void );
+
+/* %endif */
+/* %if-reentrant */
+/* %endif */
+/* %endif End reentrant structures and macros. */
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *yyget_in (void );
+
+void yyset_in  (FILE * in_str  );
+
+FILE *yyget_out (void );
+
+void yyset_out  (FILE * out_str  );
+
+yy_size_t yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number  );
+
+/* %if-bison-bridge */
+/* %endif */
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+/* %not-for-header */
+
+/* %ok-for-header */
+
+/* %endif */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+/* %if-c-only Standard (non-C++) definition */
+/* %not-for-header */
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+/* %ok-for-header */
+
+/* %endif */
+#endif
+
+/* %if-c-only */
+
+        static int yy_start_stack_ptr = 0;
+        static int yy_start_stack_depth = 0;
+        static int *yy_start_stack = NULL;
+    
+    static void yy_push_state (int new_state );
+    
+    static void yy_pop_state (void );
+    
+/* %endif */
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* %if-c-only Standard (non-C++) definition */
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+/* %endif */
+/* %if-c++-only C++ definition */
+/* %endif */
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		size_t n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}\
+\
+/* %if-c++-only C++ definition \ */\
+/* %endif */
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+/* %if-c-only */
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+#endif
+
+/* %if-tables-serialization structures and prototypes */
+/* %not-for-header */
+
+/* %ok-for-header */
+
+/* %not-for-header */
+
+/* %tables-yydmap generated elements */
+/* %endif */
+/* end tables serialization structures and prototypes */
+
+/* %ok-for-header */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+/* %if-c-only Standard (non-C++) definition */
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+/* %endif */
+/* %if-c++-only C++ definition */
+/* %endif */
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+/* %% [6.0] YY_RULE_SETUP definition goes here */
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+/* %not-for-header */
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+    
+/* %% [7.0] user's declarations go here */
+#line 167 "shrink.l"
+
+
+	/*3:*/
+#line 1263 "shrink.lex.c"
+
+	if ( !(yy_init) )
+		{
+		(yy_init) = 1;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! yyin )
+/* %if-c-only */
+			yyin = stdin;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+		if ( ! yyout )
+/* %if-c-only */
+			yyout = stdout;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			yyensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				yy_create_buffer(yyin,YY_BUF_SIZE );
+		}
+
+		yy_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+/* %% [8.0] yymore()-related code goes here */
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of yytext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+/* %% [9.0] code to set up and find next match goes here */
+		yy_current_state = (yy_start);
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				(yy_last_accepting_state) = yy_current_state;
+				(yy_last_accepting_cpos) = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 371 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_current_state != 370 );
+		yy_cp = (yy_last_accepting_cpos);
+		yy_current_state = (yy_last_accepting_state);
+
+yy_find_action:
+/* %% [10.0] code to find the action number goes here */
+		yy_act = yy_accept[yy_current_state];
+
+		YY_DO_BEFORE_ACTION;
+
+/* %% [11.0] code for yylineno update goes here */
+
+		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
+			{
+			int yyl;
+			for ( yyl = 0; yyl < yyleng; ++yyl )
+				if ( yytext[yyl] == '\n' )
+					   
+    yylineno++;
+;
+			}
+
+do_action:	/* This label is used only to access EOF actions. */
+
+/* %% [12.0] debug code goes here */
+		if ( yy_flex_debug )
+			{
+			if ( yy_act == 0 )
+				fprintf( stderr, "--scanner backing up\n" );
+			else if ( yy_act < 126 )
+				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
+				         (long)yy_rule_linenum[yy_act], yytext );
+			else if ( yy_act == 126 )
+				fprintf( stderr, "--accepting default rule (\"%s\")\n",
+				         yytext );
+			else if ( yy_act == 127 )
+				fprintf( stderr, "--(end of buffer or a NUL)\n" );
+			else
+				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
+			}
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+/* %% [13.0] actions go here */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = (yy_hold_char);
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 170 "shrink.l"
+SCAN_START;return START;
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 171 "shrink.l"
+SCAN_END;return END;
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 172 "shrink.l"
+return GLYPH;
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 173 "shrink.l"
+SCAN_UDEC(yytext);return UNSIGNED;
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 174 "shrink.l"
+SCAN_UDEC(yytext+1);return REFERENCE;
+	YY_BREAK
+case 6:
+/* rule 6 can match eol */
+YY_RULE_SETUP
+#line 175 "shrink.l"
+;
+	YY_BREAK
+case 7:
+/* rule 7 can match eol */
+YY_RULE_SETUP
+#line 176 "shrink.l"
+;
+	YY_BREAK
+/*:3*/	/*24:*/
+case 8:
+YY_RULE_SETUP
+#line 178 "shrink.l"
+SCAN_HEX(yytext+2);return UNSIGNED;
+	YY_BREAK
+/*:24*/	/*27:*/
+case 9:
+YY_RULE_SETUP
+#line 180 "shrink.l"
+SCAN_DEC(yytext);return SIGNED;
+	YY_BREAK
+/*:27*/	/*34:*/
+case 10:
+YY_RULE_SETUP
+#line 182 "shrink.l"
+STR_START;BEGIN(STR);
+	YY_BREAK
+
+case 11:
+YY_RULE_SETUP
+#line 184 "shrink.l"
+STR_END;SCAN_STR;BEGIN(INITIAL);return STRING;
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 185 "shrink.l"
+STR_ADD('\'');
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 186 "shrink.l"
+STR_ADD(yytext[0]);
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 187 "shrink.l"
+RNG("String character",yytext[0],0x20,0x7E);
+	YY_BREAK
+case 15:
+/* rule 15 can match eol */
+YY_RULE_SETUP
+#line 188 "shrink.l"
+QUIT("Unterminated String in line %d",yylineno);
+	YY_BREAK
+
+/*:34*/	/*48:*/
+case 16:
+YY_RULE_SETUP
+#line 193 "shrink.l"
+STR_START;STR_PUT('\'');BEGIN(STR);
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 194 "shrink.l"
+SCAN_UTF8_1(yytext+1);return CHARCODE;
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 195 "shrink.l"
+STR_START;STR_PUT(yytext[1]);STR_PUT('\'');BEGIN(STR);
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 196 "shrink.l"
+STR_START;STR_PUT('\'');STR_PUT('\'');BEGIN(STR);
+	YY_BREAK
+case 20:
+/* rule 20 can match eol */
+YY_RULE_SETUP
+#line 197 "shrink.l"
+SCAN_UTF8_1(yytext+1);return CHARCODE;
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 198 "shrink.l"
+SCAN_UTF8_2(yytext+1);return CHARCODE;
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 199 "shrink.l"
+SCAN_UTF8_3(yytext+1);return CHARCODE;
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 200 "shrink.l"
+SCAN_UTF8_4(yytext+1);return CHARCODE;
+	YY_BREAK
+/*:48*/	/*55:*/
+case 24:
+YY_RULE_SETUP
+#line 202 "shrink.l"
+SCAN_DECFLOAT;return FPNUM;
+	YY_BREAK
+/*:55*/	/*59:*/
+case 25:
+YY_RULE_SETUP
+#line 204 "shrink.l"
+SCAN_HEXFLOAT;return FPNUM;
+	YY_BREAK
+/*:59*/	/*80:*/
+case 26:
+YY_RULE_SETUP
+#line 206 "shrink.l"
+return DIMEN;
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 207 "shrink.l"
+return PT;
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 208 "shrink.l"
+return MM;
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 209 "shrink.l"
+return INCH;
+	YY_BREAK
+/*:80*/	/*88:*/
+case 30:
+YY_RULE_SETUP
+#line 211 "shrink.l"
+return XDIMEN;
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 212 "shrink.l"
+return H;
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 213 "shrink.l"
+return V;
+	YY_BREAK
+/*:88*/	/*99:*/
+case 33:
+YY_RULE_SETUP
+#line 215 "shrink.l"
+return FIL;
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 216 "shrink.l"
+return FILL;
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 217 "shrink.l"
+return FILLL;
+	YY_BREAK
+/*:99*/	/*103:*/
+case 36:
+YY_RULE_SETUP
+#line 219 "shrink.l"
+return PENALTY;
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 220 "shrink.l"
+return INTEGER;
+	YY_BREAK
+/*:103*/	/*109:*/
+case 38:
+YY_RULE_SETUP
+#line 222 "shrink.l"
+return LANGUAGE;
+	YY_BREAK
+/*:109*/	/*115:*/
+case 39:
+YY_RULE_SETUP
+#line 224 "shrink.l"
+return RULE;
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 225 "shrink.l"
+return RUNNING;
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 226 "shrink.l"
+return RUNNING;
+	YY_BREAK
+/*:115*/	/*124:*/
+case 42:
+YY_RULE_SETUP
+#line 228 "shrink.l"
+return KERN;
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 229 "shrink.l"
+return EXPLICIT;
+	YY_BREAK
+/*:124*/	/*133:*/
+case 44:
+YY_RULE_SETUP
+#line 231 "shrink.l"
+return GLUE;
+	YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 232 "shrink.l"
+return PLUS;
+	YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 233 "shrink.l"
+return MINUS;
+	YY_BREAK
+/*:133*/	/*151:*/
+case 47:
+YY_RULE_SETUP
+#line 235 "shrink.l"
+SCAN_TXT_START;return TXT_START;
+	YY_BREAK
+
+case 48:
+YY_RULE_SETUP
+#line 238 "shrink.l"
+SCAN_TXT_END;return TXT_END;
+	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 240 "shrink.l"
+SCAN_START;return START;
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 241 "shrink.l"
+QUIT("> not allowed in text mode");
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 243 "shrink.l"
+yylval.u= '\\';return TXT_CC;
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 244 "shrink.l"
+yylval.u= '"';return TXT_CC;
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 245 "shrink.l"
+yylval.u= '<';return TXT_CC;
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 246 "shrink.l"
+yylval.u= '>';return TXT_CC;
+	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 247 "shrink.l"
+yylval.u= ' ';return TXT_CC;
+	YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 248 "shrink.l"
+yylval.u= '-';return TXT_CC;
+	YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 249 "shrink.l"
+return TXT_IGNORE;
+	YY_BREAK
+case 58:
+/* rule 58 can match eol */
+YY_RULE_SETUP
+#line 251 "shrink.l"
+return TXT_FONT_GLUE;
+	YY_BREAK
+case 59:
+/* rule 59 can match eol */
+YY_RULE_SETUP
+#line 252 "shrink.l"
+;
+	YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 254 "shrink.l"
+yylval.u= yytext[1]-'0';return TXT_FONT;
+	YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 256 "shrink.l"
+SCAN_REF(font_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 257 "shrink.l"
+SCAN_REF(penalty_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 258 "shrink.l"
+SCAN_REF(kern_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 259 "shrink.l"
+SCAN_REF(ligature_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 260 "shrink.l"
+SCAN_REF(disc_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 261 "shrink.l"
+SCAN_REF(glue_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 262 "shrink.l"
+SCAN_REF(language_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 263 "shrink.l"
+SCAN_REF(rule_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 264 "shrink.l"
+SCAN_REF(image_kind);return TXT_GLOBAL;
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 267 "shrink.l"
+SCAN_UDEC(yytext+2);return TXT_CC;
+	YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 269 "shrink.l"
+yylval.u= yytext[1]-'a';return TXT_LOCAL;
+	YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 270 "shrink.l"
+return TXT_FONT_GLUE;
+	YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 271 "shrink.l"
+return TXT_FONT_HYPHEN;
+	YY_BREAK
+case 74:
+/* rule 74 can match eol */
+YY_RULE_SETUP
+#line 273 "shrink.l"
+SCAN_UTF8_1(yytext);return TXT_CC;
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 274 "shrink.l"
+SCAN_UTF8_2(yytext);return TXT_CC;
+	YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 275 "shrink.l"
+SCAN_UTF8_3(yytext);return TXT_CC;
+	YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 276 "shrink.l"
+SCAN_UTF8_4(yytext);return TXT_CC;
+	YY_BREAK
+
+/*:151*/	/*162:*/
+case 78:
+YY_RULE_SETUP
+#line 279 "shrink.l"
+return HBOX;
+	YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 280 "shrink.l"
+return VBOX;
+	YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 281 "shrink.l"
+return SHIFTED;
+	YY_BREAK
+/*:162*/	/*170:*/
+case 81:
+YY_RULE_SETUP
+#line 283 "shrink.l"
+return HPACK;
+	YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 284 "shrink.l"
+return HSET;
+	YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 285 "shrink.l"
+return VPACK;
+	YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 286 "shrink.l"
+return VSET;
+	YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 287 "shrink.l"
+return ADD;
+	YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 288 "shrink.l"
+return TO;
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 289 "shrink.l"
+return DEPTH;
+	YY_BREAK
+/*:170*/	/*175:*/
+case 88:
+YY_RULE_SETUP
+#line 291 "shrink.l"
+return LEADERS;
+	YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 292 "shrink.l"
+return ALIGN;
+	YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 293 "shrink.l"
+return CENTER;
+	YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 294 "shrink.l"
+return EXPAND;
+	YY_BREAK
+/*:175*/	/*182:*/
+case 92:
+YY_RULE_SETUP
+#line 296 "shrink.l"
+return BASELINE;
+	YY_BREAK
+/*:182*/	/*189:*/
+case 93:
+YY_RULE_SETUP
+#line 298 "shrink.l"
+return LIGATURE;
+	YY_BREAK
+/*:189*/	/*197:*/
+case 94:
+YY_RULE_SETUP
+#line 300 "shrink.l"
+return DISC;
+	YY_BREAK
+/*:197*/	/*205:*/
+case 95:
+YY_RULE_SETUP
+#line 302 "shrink.l"
+return PAR;
+	YY_BREAK
+/*:205*/	/*210:*/
+case 96:
+YY_RULE_SETUP
+#line 304 "shrink.l"
+return MATH;
+	YY_BREAK
+/*:210*/	/*215:*/
+case 97:
+YY_RULE_SETUP
+#line 306 "shrink.l"
+return ON;
+	YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 307 "shrink.l"
+return OFF;
+	YY_BREAK
+/*:215*/	/*219:*/
+case 99:
+YY_RULE_SETUP
+#line 309 "shrink.l"
+return ADJUST;
+	YY_BREAK
+/*:219*/	/*223:*/
+case 100:
+YY_RULE_SETUP
+#line 311 "shrink.l"
+return TABLE;
+	YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 312 "shrink.l"
+return ITEM;
+	YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 313 "shrink.l"
+return ITEM;
+	YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 314 "shrink.l"
+return ITEM;
+	YY_BREAK
+/*:223*/	/*230:*/
+case 104:
+YY_RULE_SETUP
+#line 316 "shrink.l"
+return IMAGE;
+	YY_BREAK
+/*:230*/	/*247:*/
+case 105:
+YY_RULE_SETUP
+#line 318 "shrink.l"
+return LABEL;
+	YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 319 "shrink.l"
+return BOT;
+	YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 320 "shrink.l"
+return MID;
+	YY_BREAK
+/*:247*/	/*261:*/
+case 108:
+YY_RULE_SETUP
+#line 322 "shrink.l"
+return LINK;
+	YY_BREAK
+/*:261*/	/*271:*/
+case 109:
+YY_RULE_SETUP
+#line 324 "shrink.l"
+return OUTLINE;
+	YY_BREAK
+/*:271*/	/*278:*/
+case 110:
+YY_RULE_SETUP
+#line 326 "shrink.l"
+if(section_no==1)return STREAMDEF;else return STREAM;
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 327 "shrink.l"
+return FIRST;
+	YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 328 "shrink.l"
+return LAST;
+	YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 329 "shrink.l"
+return TOP;
+	YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 330 "shrink.l"
+return NOREFERENCE;
+	YY_BREAK
+/*:278*/	/*288:*/
+case 115:
+YY_RULE_SETUP
+#line 332 "shrink.l"
+return PAGE;
+	YY_BREAK
+/*:288*/	/*296:*/
+case 116:
+YY_RULE_SETUP
+#line 334 "shrink.l"
+return RANGE;
+	YY_BREAK
+/*:296*/	/*323:*/
+case 117:
+YY_RULE_SETUP
+#line 336 "shrink.l"
+return DIRECTORY;
+	YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 337 "shrink.l"
+return SECTION;
+	YY_BREAK
+/*:323*/	/*342:*/
+case 119:
+YY_RULE_SETUP
+#line 339 "shrink.l"
+return DEFINITIONS;
+	YY_BREAK
+/*:342*/	/*350:*/
+case 120:
+YY_RULE_SETUP
+#line 341 "shrink.l"
+return MAX;
+	YY_BREAK
+/*:350*/	/*365:*/
+case 121:
+YY_RULE_SETUP
+#line 343 "shrink.l"
+return PARAM;
+	YY_BREAK
+/*:365*/	/*374:*/
+case 122:
+YY_RULE_SETUP
+#line 345 "shrink.l"
+return FONT;
+	YY_BREAK
+/*:374*/	/*402:*/
+case 123:
+YY_RULE_SETUP
+#line 347 "shrink.l"
+return CONTENT;
+	YY_BREAK
+/*:402*/
+case 124:
+YY_RULE_SETUP
+#line 349 "shrink.l"
+QUIT("Unexpected keyword '%s' in line %d",yytext,yylineno);
+	YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 350 "shrink.l"
+QUIT("Unexpected character '%c' (0x%02X) in line %d",yytext[0]>' '?yytext[0]:' ',yytext[0],yylineno);
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 352 "shrink.l"
+ECHO;
+	YY_BREAK
+#line 2064 "shrink.lex.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(STR):
+case YY_STATE_EOF(TXT):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
+				yy_cp = (yy_last_accepting_cpos);
+				yy_current_state = (yy_last_accepting_state);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( yywrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of yylex */
+/* %ok-for-header */
+
+/* %if-c++-only */
+/* %not-for-header */
+
+/* %ok-for-header */
+
+/* %endif */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+/* %if-c-only */
+static int yy_get_next_buffer (void)
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			yy_size_t num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+			int yy_c_buf_p_offset =
+				(int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				yy_size_t new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+						number_to_move - 1;
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart(yyin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+/* %if-c-only */
+/* %not-for-header */
+
+    static yy_state_type yy_get_previous_state (void)
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+    
+/* %% [15.0] code to get the start state into yy_current_state goes here */
+	yy_current_state = (yy_start);
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+/* %% [16.0] code to find the next state goes here */
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			(yy_last_accepting_state) = yy_current_state;
+			(yy_last_accepting_cpos) = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 371 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+/* %if-c-only */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+	register int yy_is_jam;
+    /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
+	register char *yy_cp = (yy_c_buf_p);
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		(yy_last_accepting_state) = yy_current_state;
+		(yy_last_accepting_cpos) = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 371 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 370);
+
+		return yy_is_jam ? 0 : yy_current_state;
+}
+
+/* %if-c-only */
+
+/* %endif */
+
+/* %if-c-only */
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart(yyin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve yytext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+/* %% [19.0] update BOL and yylineno */
+	if ( c == '\n' )
+		   
+    yylineno++;
+;
+
+	return c;
+}
+/* %if-c-only */
+#endif	/* ifndef YY_NO_INPUT */
+/* %endif */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+/* %if-c-only */
+    void yyrestart  (FILE * input_file )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    
+	if ( ! YY_CURRENT_BUFFER ){
+        yyensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            yy_create_buffer(yyin,YY_BUF_SIZE );
+	}
+
+	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+/* %if-c-only */
+    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		yypop_buffer_state();
+	 *		yypush_buffer_state(new_buffer);
+     */
+	yyensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	yy_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/* %if-c-only */
+static void yy_load_buffer_state  (void)
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+/* %if-c-only */
+    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * 
+ */
+/* %if-c-only */
+    void yy_delete_buffer (YY_BUFFER_STATE  b )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yyfree((void *) b->yy_ch_buf  );
+
+	yyfree((void *) b  );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+/* %if-c-only */
+    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+{
+	int oerrno = errno;
+    
+	yy_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+/* %if-c-only */
+
+        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+    
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+/* %if-c-only */
+    void yy_flush_buffer (YY_BUFFER_STATE  b )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		yy_load_buffer_state( );
+}
+
+/* %if-c-or-c++ */
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+/* %if-c-only */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    	if (new_buffer == NULL)
+		return;
+
+	yyensure_buffer_stack();
+
+	/* This block is copied from yy_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from yy_switch_to_buffer. */
+	yy_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+/* %endif */
+
+/* %if-c-or-c++ */
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+/* %if-c-only */
+void yypop_buffer_state (void)
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	yy_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		yy_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+/* %endif */
+
+/* %if-c-or-c++ */
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+/* %if-c-only */
+static void yyensure_buffer_stack (void)
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+	yy_size_t num_to_alloc;
+    
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+								  
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+/* %endif */
+
+/* %if-c-only */
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer(b  );
+
+	return b;
+}
+/* %endif */
+
+/* %if-c-only */
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+    
+	return yy_scan_bytes(yystr,strlen(yystr) );
+}
+/* %endif */
+
+/* %if-c-only */
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) yyalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+/* %endif */
+
+/* %if-c-only */
+    static void yy_push_state (int  new_state )
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    	if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
+		{
+		yy_size_t new_size;
+
+		(yy_start_stack_depth) += YY_START_STACK_INCR;
+		new_size = (yy_start_stack_depth) * sizeof( int );
+
+		if ( ! (yy_start_stack) )
+			(yy_start_stack) = (int *) yyalloc(new_size  );
+
+		else
+			(yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size  );
+
+		if ( ! (yy_start_stack) )
+			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
+		}
+
+	(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
+
+	BEGIN(new_state);
+}
+
+/* %if-c-only */
+    static void yy_pop_state  (void)
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+{
+    	if ( --(yy_start_stack_ptr) < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+/* %if-c-only */
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		yytext[yyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = yytext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		yyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/* %if-c-only */
+/* %if-reentrant */
+/* %endif */
+
+/** Get the current line number.
+ * 
+ */
+int yyget_lineno  (void)
+{
+        
+    return yylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *yyget_in  (void)
+{
+        return yyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *yyget_out  (void)
+{
+        return yyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+yy_size_t yyget_leng  (void)
+{
+        return yyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *yyget_text  (void)
+{
+        return yytext;
+}
+
+/* %if-reentrant */
+/* %endif */
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void yyset_lineno (int  line_number )
+{
+    
+    yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE *  in_str )
+{
+        yyin = in_str ;
+}
+
+void yyset_out (FILE *  out_str )
+{
+        yyout = out_str ;
+}
+
+int yyget_debug  (void)
+{
+        return yy_flex_debug;
+}
+
+void yyset_debug (int  bdebug )
+{
+        yy_flex_debug = bdebug ;
+}
+
+/* %endif */
+
+/* %if-reentrant */
+/* %if-bison-bridge */
+/* %endif */
+/* %endif if-c-only */
+
+/* %if-c-only */
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from yylex_destroy(), so don't allocate here.
+     */
+
+    /* We do not touch yylineno unless the option is enabled. */
+    yylineno =  1;
+    
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+    (yy_start_stack_ptr) = 0;
+    (yy_start_stack_depth) = 0;
+    (yy_start_stack) =  NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    yyin = stdin;
+    yyout = stdout;
+#else
+    yyin = (FILE *) 0;
+    yyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * yylex_init()
+     */
+    return 0;
+}
+/* %endif */
+
+/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		yy_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		yypop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	yyfree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    /* Destroy the start condition stack. */
+        yyfree((yy_start_stack)  );
+        (yy_start_stack) = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * yylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+/* %if-reentrant */
+/* %endif */
+    return 0;
+}
+/* %endif */
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *yyalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *yyrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void yyfree (void * ptr )
+{
+	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
+}
+
+/* %if-tables-serialization definitions */
+/* %define-yytables   The name for this specific scanner's tables. */
+#define YYTABLES_NAME "yytables"
+/* %endif */
+
+/* %ok-for-header */
+
+#line 352 "shrink.l"
+
+
+	/*:509*/
+

Copied: trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.l (from rev 60634, trunk/Build/source/texk/web2c/hitexdir/lexer.l)
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.l	                        (rev 0)
+++ trunk/Build/source/texk/web2c/hitexdir/hishrink-lexer.l	2021-09-28 21:45:20 UTC (rev 60644)
@@ -0,0 +1,422 @@
+	/*509:*/
+
+%{
+#include "basetypes.h"
+#include "error.h"
+#include "hformat.h"
+#include "hput.h"
+
+	/*423:*/
+
+#ifdef DEBUG
+#define  YYDEBUG 1
+extern int yydebug;
+#else
+#define YYDEBUG 0
+#endif
+	/*:423*/
+
+#include "hishrink-parser.h"
+
+	/*22:*/
+
+#define SCAN_UDEC(S) yylval.u= strtoul(S,NULL,10)
+	/*:22*/	/*25:*/
+
+#define SCAN_HEX(S) yylval.u= strtoul(S,NULL,16)
+	/*:25*/	/*28:*/
+
+#define SCAN_DEC(S) yylval.i= strtol(S,NULL,10)
+	/*:28*/	/*31:*/
+
+#define MAX_STR    (1<<10) 
+static char str_buffer[MAX_STR];
+static int str_length;
+#define STR_START      (str_length= 0)
+#define STR_PUT(C) (str_buffer[str_length++]= (C))
+#define STR_ADD(C) STR_PUT(C);RNG("String length",str_length,0,MAX_STR-1)
+#define STR_END        str_buffer[str_length]= 0
+#define SCAN_STR       yylval.s= str_buffer
+	/*:31*/	/*40:*/
+
+#define SCAN_UTF8_1(S)   yylval.u= ((S)[0]&0x7F)
+	/*:40*/	/*42:*/
+
+#define SCAN_UTF8_2(S)   yylval.u= (((S)[0]&0x1F)<<6)+((S)[1]&0x3F)
+	/*:42*/	/*44:*/
+
+#define SCAN_UTF8_3(S)   yylval.u= (((S)[0]&0x0F)<<12)+(((S)[1]&0x3F)<<6)+((S)[2]&0x3F)
+	/*:44*/	/*46:*/
+
+#define SCAN_UTF8_4(S)   yylval.u= (((S)[0]&0x03)<<18)+(((S)[1]&0x3F)<<12)+(((S)[2]&0x3F)<<6)+((S)[3]&0x3F)
+	/*:46*/	/*57:*/
+
+#define SCAN_DECFLOAT       yylval.f= atof(yytext)
+	/*:57*/	/*60:*/
+
+#define SCAN_HEXFLOAT       yylval.f= xtof(yytext)
+	/*:60*/	/*152:*/
+
+#define SCAN_REF(K) yylval.rf.k= K; yylval.rf.n= atoi(yytext+2)
+static int scan_level= 0;
+#define SCAN_START          yy_push_state(INITIAL);if (1==scan_level++) hpos0= hpos;
+#define SCAN_END            if (scan_level--) yy_pop_state(); else QUIT("Too many '>' in line %d",yylineno)
+#define SCAN_TXT_START      BEGIN(TXT)
+#define SCAN_TXT_END        BEGIN(INITIAL)
+	/*:152*/
+
+	/*61:*/
+
+
+float64_t xtof(char*x)
+{int sign,digits,exp;
+uint64_t mantissa= 0;
+DBG(DBGFLOAT,"converting %s:\n",x);
+	/*62:*/
+
+if(*x=='-'){sign= -1;x++;}
+else if(*x=='+'){sign= +1;x++;}
+else sign= +1;
+DBG(DBGFLOAT,"\tsign=%d\n",sign);
+	/*:62*/
+
+x= x+2;
+	/*63:*/
+
+digits= 0;
+while(*x=='0')x++;
+while(*x!='.')
+{mantissa= mantissa<<4;
+if(*x<'A')mantissa= mantissa+*x-'0';
+else mantissa= mantissa+*x-'A'+10;
+x++;
+digits++;
+}
+x++;
+exp= 0;
+while(*x!=0&&*x!='x')
+{mantissa= mantissa<<4;
+exp= exp-4;
+if(*x<'A')mantissa= mantissa+*x-'0';
+else mantissa= mantissa+*x-'A'+10;
+x++;
+digits++;
+}
+DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+	/*:63*/
+
+	/*64:*/
+
+if(mantissa==0)return 0.0;
+{int s;
+s= digits-DBL_M_BITS/4;
+if(s> 1)
+mantissa= mantissa>>(4*(s-1));
+else if(s<1)
+mantissa= mantissa<<(4*(1-s));
+exp= exp+4*(digits-1);
+DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+while((mantissa>>DBL_M_BITS)> 1){mantissa= mantissa>>1;exp++;}
+DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+mantissa= mantissa&~((uint64_t)1<<DBL_M_BITS);
+DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
+}
+	/*:64*/
+
+	/*65:*/
+
+if(*x=='x')
+{int s;
+x++;
+if(*x=='-'){s= -1;x++;}
+else if(*x=='+'){s= +1;x++;}
+else s= +1;
+DBG(DBGFLOAT,"\texpsign=%d\n",s);
+DBG(DBGFLOAT,"\texp=%d\n",exp);
+while(*x!=0)
+{if(*x<'A')exp= exp+4*s*(*x-'0');
+else exp= exp+4*s*(*x-'A'+10);
+x++;
+DBG(DBGFLOAT,"\texp=%d\n",exp);
+}
+}
+RNG("Floating point exponent",exp,-DBL_EXCESS,DBL_EXCESS);
+	/*:65*/
+
+	/*66:*/
+
+{union{float64_t d;uint64_t bits;}u;
+if(sign<0)sign= 1;else sign= 0;
+exp= exp+DBL_EXCESS;
+u.bits= ((uint64_t)sign<<63)
+|((uint64_t)exp<<DBL_M_BITS)|mantissa;
+DBG(DBGFLOAT," return %f\n",u.d);
+return u.d;
+}
+	/*:66*/
+
+}
+	/*:61*/
+
+int yywrap(void){return 1;}
+#ifdef _MSC_VER
+#pragma  warning( disable : 4267)
+#endif
+%}
+
+%option yylineno batch stack
+%option debug
+%option nounistd nounput noinput noyy_top_state
+
+	/*23:*/
+
+HEX	[0-9A-F]
+	/*:23*/	/*32:*/
+
+%x STR
+	/*:32*/	/*39:*/
+
+UTF8_1	[\x00-\x7F]
+	/*:39*/	/*41:*/
+
+UTF8_2	[\xC0-\xDF][\x80-\xBF]
+	/*:41*/	/*43:*/
+
+UTF8_3	[\xE0-\xEF][\x80-\xBF][\x80-\xBF]
+	/*:43*/	/*45:*/
+
+UTF8_4	[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]
+	/*:45*/	/*149:*/
+
+%x TXT
+	/*:149*/
+
+
+%%
+
+	/*3:*/
+
+"<"	SCAN_START;return START;
+">"	SCAN_END;return END;
+glyph	return GLYPH;
+0|[1-9][0-9]*	SCAN_UDEC(yytext);return UNSIGNED;
+\*(0|[1-9][0-9]*)	SCAN_UDEC(yytext+1);return REFERENCE;
+[[:space:]]	;
+\([^()\n]*[)\n]	;
+	/*:3*/	/*24:*/
+
+0x{HEX}+	SCAN_HEX(yytext+2);return UNSIGNED;
+	/*:24*/	/*27:*/
+
+[+-](0|[1-9][0-9]*)	SCAN_DEC(yytext);return SIGNED;
+	/*:27*/	/*34:*/
+
+'	STR_START;BEGIN(STR);
+<STR>{
+'	STR_END;SCAN_STR;BEGIN(INITIAL);return STRING;
+''	STR_ADD('\'');
+[\x20-\x7E]	STR_ADD(yytext[0]);
+.	RNG("String character",yytext[0],0x20,0x7E);
+\n	QUIT("Unterminated String in line %d",yylineno);
+}
+
+
+	/*:34*/	/*48:*/
+
+'''	STR_START;STR_PUT('\'');BEGIN(STR);
+''''	SCAN_UTF8_1(yytext+1);return CHARCODE;
+'[\x20-\x7E]''	STR_START;STR_PUT(yytext[1]);STR_PUT('\'');BEGIN(STR);
+'''''	STR_START;STR_PUT('\'');STR_PUT('\'');BEGIN(STR);
+'{UTF8_1}'	SCAN_UTF8_1(yytext+1);return CHARCODE;
+'{UTF8_2}'	SCAN_UTF8_2(yytext+1);return CHARCODE;
+'{UTF8_3}'	SCAN_UTF8_3(yytext+1);return CHARCODE;
+'{UTF8_4}'	SCAN_UTF8_4(yytext+1);return CHARCODE;
+	/*:48*/	/*55:*/
+
+[+-]?[0-9]+\.[0-9]+(e[+-]?[0-9])?	SCAN_DECFLOAT;return FPNUM;
+	/*:55*/	/*59:*/
+
+[+-]?0x{HEX}+\.{HEX}+(x[+-]?{HEX}+)?	SCAN_HEXFLOAT;return FPNUM;
+	/*:59*/	/*80:*/
+
+dimen	return DIMEN;
+pt	return PT;
+mm	return MM;
+in	return INCH;
+	/*:80*/	/*88:*/
+
+xdimen	return XDIMEN;
+h	return H;
+v	return V;
+	/*:88*/	/*99:*/
+
+fil	return FIL;
+fill	return FILL;
+filll	return FILLL;
+	/*:99*/	/*103:*/
+
+penalty	return PENALTY;
+int	return INTEGER;
+	/*:103*/	/*109:*/
+
+language	return LANGUAGE;
+	/*:109*/	/*115:*/
+
+rule	return RULE;
+"|"	return RUNNING;
+"_"	return RUNNING;
+	/*:115*/	/*124:*/
+
+kern	return KERN;
+!	return EXPLICIT;
+	/*:124*/	/*133:*/
+
+glue	return GLUE;
+plus	return PLUS;
+minus	return MINUS;
+	/*:133*/	/*151:*/
+
+\"	SCAN_TXT_START;return TXT_START;
+
+<TXT>{
+\"	SCAN_TXT_END;return TXT_END;
+
+"<"	SCAN_START;return START;
+">"	QUIT("> not allowed in text mode");
+
+\\\\	yylval.u= '\\';return TXT_CC;
+\\\"	yylval.u= '"';return TXT_CC;
+\\"<"	yylval.u= '<';return TXT_CC;
+\\">"	yylval.u= '>';return TXT_CC;
+\\" "	yylval.u= ' ';return TXT_CC;
+\\"-"	yylval.u= '-';return TXT_CC;
+\\"@"	return TXT_IGNORE;
+
+[ \t\r]*(\n[ \t\r]*)+	return TXT_FONT_GLUE;
+\\[ \t\r]*\n[ \t\r]*	;
+
+\\[0-7]	yylval.u= yytext[1]-'0';return TXT_FONT;
+
+\\F[0-9]+\\	SCAN_REF(font_kind);return TXT_GLOBAL;
+\\P[0-9]+\\	SCAN_REF(penalty_kind);return TXT_GLOBAL;
+\\K[0-9]+\\	SCAN_REF(kern_kind);return TXT_GLOBAL;
+\\L[0-9]+\\	SCAN_REF(ligature_kind);return TXT_GLOBAL;
+\\D[0-9]+\\	SCAN_REF(disc_kind);return TXT_GLOBAL;
+\\G[0-9]+\\	SCAN_REF(glue_kind);return TXT_GLOBAL;
+\\S[0-9]+\\	SCAN_REF(language_kind);return TXT_GLOBAL;
+\\R[0-9]+\\	SCAN_REF(rule_kind);return TXT_GLOBAL;
+\\I[0-9]+\\	SCAN_REF(image_kind);return TXT_GLOBAL;
+
+
+\\C[0-9]+\\	SCAN_UDEC(yytext+2);return TXT_CC;
+
+\\[a-l]	yylval.u= yytext[1]-'a';return TXT_LOCAL;
+" "	return TXT_FONT_GLUE;
+"-"	return TXT_FONT_HYPHEN;
+
+{UTF8_1}	SCAN_UTF8_1(yytext);return TXT_CC;
+{UTF8_2}	SCAN_UTF8_2(yytext);return TXT_CC;
+{UTF8_3}	SCAN_UTF8_3(yytext);return TXT_CC;
+{UTF8_4}	SCAN_UTF8_4(yytext);return TXT_CC;
+}
+	/*:151*/	/*162:*/
+
+hbox	return HBOX;
+vbox	return VBOX;
+shifted	return SHIFTED;
+	/*:162*/	/*170:*/
+
+hpack	return HPACK;
+hset	return HSET;
+vpack	return VPACK;
+vset	return VSET;
+add	return ADD;
+to	return TO;
+depth	return DEPTH;
+	/*:170*/	/*175:*/
+
+leaders	return LEADERS;
+align	return ALIGN;
+center	return CENTER;
+expand	return EXPAND;
+	/*:175*/	/*182:*/
+
+baseline	return BASELINE;
+	/*:182*/	/*189:*/
+
+ligature	return LIGATURE;
+	/*:189*/	/*197:*/
+
+disc	return DISC;
+	/*:197*/	/*205:*/
+
+par	return PAR;
+	/*:205*/	/*210:*/
+
+math	return MATH;
+	/*:210*/	/*215:*/
+
+on	return ON;
+off	return OFF;
+	/*:215*/	/*219:*/
+
+adjust	return ADJUST;
+	/*:219*/	/*223:*/
+
+table	return TABLE;
+item	return ITEM;
+row	return ITEM;
+column	return ITEM;
+	/*:223*/	/*230:*/
+
+image	return IMAGE;
+	/*:230*/	/*247:*/
+
+label	return LABEL;
+bot	return BOT;
+mid	return MID;
+	/*:247*/	/*261:*/
+
+link	return LINK;
+	/*:261*/	/*271:*/
+
+outline	return OUTLINE;
+	/*:271*/	/*278:*/
+
+stream	if(section_no==1)return STREAMDEF;else return STREAM;
+first	return FIRST;
+last	return LAST;
+top	return TOP;
+\*	return NOREFERENCE;
+	/*:278*/	/*288:*/
+
+page	return PAGE;
+	/*:288*/	/*296:*/
+
+range	return RANGE;
+	/*:296*/	/*323:*/
+
+directory	return DIRECTORY;
+section	return SECTION;
+	/*:323*/	/*342:*/
+
+definitions	return DEFINITIONS;
+	/*:342*/	/*350:*/
+
+max	return MAX;
+	/*:350*/	/*365:*/
+
+param	return PARAM;
+	/*:365*/	/*374:*/
+
+font	return FONT;
+	/*:374*/	/*402:*/
+
+content	return CONTENT;
+	/*:402*/
+
+[a-z]+	QUIT("Unexpected keyword '%s' in line %d",yytext,yylineno);
+.	QUIT("Unexpected character '%c' (0x%02X) in line %d",yytext[0]> ' '?yytext[0]:' ',yytext[0],yylineno);
+
+%%
+	/*:509*/

Copied: trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.c (from rev 60634, trunk/Build/source/texk/web2c/hitexdir/parser.c)
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.c	                        (rev 0)
+++ trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.c	2021-09-28 21:45:20 UTC (rev 60644)
@@ -0,0 +1,3896 @@
+/* A Bison parser, made by GNU Bison 3.8.2.  */
+
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+   Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   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 <https://www.gnu.org/licenses/>.  */
+
+/* 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.  */
+
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
+/* 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, and Bison version.  */
+#define YYBISON 30802
+
+/* Bison version string.  */
+#define YYBISON_VERSION "3.8.2"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Push parsers.  */
+#define YYPUSH 0
+
+/* Pull parsers.  */
+#define YYPULL 1
+
+
+
+
+/* First part of user prologue.  */
+#line 3 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+
+#include "basetypes.h"
+#include <string.h> 
+#include <math.h> 
+#include "error.h"
+#include "hformat.h"
+#include "hput.h"
+extern char**hfont_name;
+
+/*356:*/
+
+uint32_t definition_bits[0x100/32][32]= {{0}};
+
+#define SET_DBIT(N,K) ((N)> 0xFF?1:(definition_bits[N/32][K]|= (1<<((N)&(32-1)))))
+#define GET_DBIT(N,K) ((N)> 0xFF?1:((definition_bits[N/32][K]>>((N)&(32-1)))&1))
+#define DEF(D,K,N) (D).k= K; (D).n= (N);SET_DBIT((D).n,(D).k);\
+ DBG(DBGDEF,"Defining %s %d\n",definition_name[(D).k],(D).n);\
+ RNG("Definition",(D).n,max_fixed[(D).k]+1,max_ref[(D).k]);
+#define REF(K,N) REF_RNG(K,N);if(!GET_DBIT(N,K)) \
+ QUIT("Reference %d to %s before definition",(N),definition_name[K])
+/*:356*//*360:*/
+
+#define DEF_REF(D,K,M,N)  DEF(D,K,M);\
+if ((M)> max_default[K]) QUIT("Defining non default reference %d for %s",M,definition_name[K]); \
+if ((N)> max_fixed[K]) QUIT("Defining reference %d for %s by non fixed reference %d",M,definition_name[K],N);
+/*:360*/
+
+
+extern void hset_entry(entry_t*e,uint16_t i,uint32_t size,
+uint32_t xsize,char*file_name);
+
+/*423:*/
+
+#ifdef DEBUG
+#define  YYDEBUG 1
+extern int yydebug;
+#else
+#define YYDEBUG 0
+#endif
+/*:423*/
+
+extern int yylex(void);
+
+/*352:*/
+
+void hset_max(kind_t k,int n)
+{DBG(DBGDEF,"Setting max %s to %d\n",definition_name[k],n);
+RNG("Maximum",n,max_fixed[k]+1,MAX_REF(k));
+if(n> max_ref[k])
+max_ref[k]= n;
+}
+/*:352*//*363:*/
+
+void check_param_def(ref_t*df)
+{if(df->k!=int_kind&&df->k!=dimen_kind&&df->k!=glue_kind)
+QUIT("Kind %s not allowed in parameter list",definition_name[df->k]);
+if(df->n<=max_fixed[df->k]||max_default[df->k]<df->n)
+QUIT("Parameter %d for %s not allowed in parameter list",df->n,definition_name[df->k]);
+}
+/*:363*//*422:*/
+
+extern int yylineno;
+int yyerror(const char*msg)
+{QUIT(" in line %d %s",yylineno,msg);
+return 0;
+}
+/*:422*/
+
+
+
+#line 142 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
+#  else
+#   define YY_NULLPTR ((void*)0)
+#  endif
+# endif
+
+/* Use api.header.include to #include this header
+   instead of duplicating it here.  */
+#ifndef YY_YY__TEXK_WEB_C_HITEXDIR_HISHRINK_PARSER_H_INCLUDED
+# define YY_YY__TEXK_WEB_C_HITEXDIR_HISHRINK_PARSER_H_INCLUDED
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token kinds.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    START = 258,                   /* "<"  */
+    END = 259,                     /* ">"  */
+    GLYPH = 260,                   /* "glyph"  */
+    UNSIGNED = 261,                /* UNSIGNED  */
+    REFERENCE = 262,               /* REFERENCE  */
+    SIGNED = 263,                  /* SIGNED  */
+    STRING = 264,                  /* STRING  */
+    CHARCODE = 265,                /* CHARCODE  */
+    FPNUM = 266,                   /* FPNUM  */
+    DIMEN = 267,                   /* "dimen"  */
+    PT = 268,                      /* "pt"  */
+    MM = 269,                      /* "mm"  */
+    INCH = 270,                    /* "in"  */
+    XDIMEN = 271,                  /* "xdimen"  */
+    H = 272,                       /* "h"  */
+    V = 273,                       /* "v"  */
+    FIL = 274,                     /* "fil"  */
+    FILL = 275,                    /* "fill"  */
+    FILLL = 276,                   /* "filll"  */
+    PENALTY = 277,                 /* "penalty"  */
+    INTEGER = 278,                 /* "int"  */
+    LANGUAGE = 279,                /* "language"  */
+    RULE = 280,                    /* "rule"  */
+    RUNNING = 281,                 /* "|"  */
+    KERN = 282,                    /* "kern"  */
+    EXPLICIT = 283,                /* "!"  */
+    GLUE = 284,                    /* "glue"  */
+    PLUS = 285,                    /* "plus"  */
+    MINUS = 286,                   /* "minus"  */
+    TXT_START = 287,               /* TXT_START  */
+    TXT_END = 288,                 /* TXT_END  */
+    TXT_IGNORE = 289,              /* TXT_IGNORE  */
+    TXT_FONT_GLUE = 290,           /* TXT_FONT_GLUE  */
+    TXT_FONT_HYPHEN = 291,         /* TXT_FONT_HYPHEN  */
+    TXT_FONT = 292,                /* TXT_FONT  */
+    TXT_LOCAL = 293,               /* TXT_LOCAL  */
+    TXT_GLOBAL = 294,              /* TXT_GLOBAL  */
+    TXT_CC = 295,                  /* TXT_CC  */
+    HBOX = 296,                    /* "hbox"  */
+    VBOX = 297,                    /* "vbox"  */
+    SHIFTED = 298,                 /* "shifted"  */
+    HPACK = 299,                   /* "hpack"  */
+    HSET = 300,                    /* "hset"  */
+    VPACK = 301,                   /* "vpack"  */
+    VSET = 302,                    /* "vset"  */
+    DEPTH = 303,                   /* "depth"  */
+    ADD = 304,                     /* "add"  */
+    TO = 305,                      /* "to"  */
+    LEADERS = 306,                 /* "leaders"  */
+    ALIGN = 307,                   /* "align"  */
+    CENTER = 308,                  /* "center"  */
+    EXPAND = 309,                  /* "expand"  */
+    BASELINE = 310,                /* "baseline"  */
+    LIGATURE = 311,                /* "ligature"  */
+    DISC = 312,                    /* "disc"  */
+    PAR = 313,                     /* "par"  */
+    MATH = 314,                    /* "math"  */
+    ON = 315,                      /* "on"  */
+    OFF = 316,                     /* "off"  */
+    ADJUST = 317,                  /* "adjust"  */
+    TABLE = 318,                   /* "table"  */
+    ITEM = 319,                    /* "item"  */
+    IMAGE = 320,                   /* "image"  */
+    LABEL = 321,                   /* "label"  */
+    BOT = 322,                     /* "bot"  */
+    MID = 323,                     /* "mid"  */
+    LINK = 324,                    /* "link"  */
+    OUTLINE = 325,                 /* "outline"  */
+    STREAM = 326,                  /* "stream"  */
+    STREAMDEF = 327,               /* "stream (definition)"  */
+    FIRST = 328,                   /* "first"  */
+    LAST = 329,                    /* "last"  */
+    TOP = 330,                     /* "top"  */
+    NOREFERENCE = 331,             /* "*"  */
+    PAGE = 332,                    /* "page"  */
+    RANGE = 333,                   /* "range"  */
+    DIRECTORY = 334,               /* "directory"  */
+    SECTION = 335,                 /* "entry"  */
+    DEFINITIONS = 336,             /* "definitions"  */
+    MAX = 337,                     /* "max"  */
+    PARAM = 338,                   /* "param"  */
+    FONT = 339,                    /* "font"  */
+    CONTENT = 340                  /* "content"  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
+#define START 258
+#define END 259
+#define GLYPH 260
+#define UNSIGNED 261
+#define REFERENCE 262
+#define SIGNED 263
+#define STRING 264
+#define CHARCODE 265
+#define FPNUM 266
+#define DIMEN 267
+#define PT 268
+#define MM 269
+#define INCH 270
+#define XDIMEN 271
+#define H 272
+#define V 273
+#define FIL 274
+#define FILL 275
+#define FILLL 276
+#define PENALTY 277
+#define INTEGER 278
+#define LANGUAGE 279
+#define RULE 280
+#define RUNNING 281
+#define KERN 282
+#define EXPLICIT 283
+#define GLUE 284
+#define PLUS 285
+#define MINUS 286
+#define TXT_START 287
+#define TXT_END 288
+#define TXT_IGNORE 289
+#define TXT_FONT_GLUE 290
+#define TXT_FONT_HYPHEN 291
+#define TXT_FONT 292
+#define TXT_LOCAL 293
+#define TXT_GLOBAL 294
+#define TXT_CC 295
+#define HBOX 296
+#define VBOX 297
+#define SHIFTED 298
+#define HPACK 299
+#define HSET 300
+#define VPACK 301
+#define VSET 302
+#define DEPTH 303
+#define ADD 304
+#define TO 305
+#define LEADERS 306
+#define ALIGN 307
+#define CENTER 308
+#define EXPAND 309
+#define BASELINE 310
+#define LIGATURE 311
+#define DISC 312
+#define PAR 313
+#define MATH 314
+#define ON 315
+#define OFF 316
+#define ADJUST 317
+#define TABLE 318
+#define ITEM 319
+#define IMAGE 320
+#define LABEL 321
+#define BOT 322
+#define MID 323
+#define LINK 324
+#define OUTLINE 325
+#define STREAM 326
+#define STREAMDEF 327
+#define FIRST 328
+#define LAST 329
+#define TOP 330
+#define NOREFERENCE 331
+#define PAGE 332
+#define RANGE 333
+#define DIRECTORY 334
+#define SECTION 335
+#define DEFINITIONS 336
+#define MAX 337
+#define PARAM 338
+#define FONT 339
+#define CONTENT 340
+
+/* Value type.  */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+union YYSTYPE
+{
+#line 78 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+uint32_t u;int32_t i;char*s;float64_t f;glyph_t c;
+dimen_t d;stretch_t st;xdimen_t xd;kern_t kt;
+rule_t r;glue_t g;image_t x;
+list_t l;box_t h;disc_t dc;lig_t lg;
+ref_t rf;info_t info;order_t o;bool b;
+
+#line 372 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+
+};
+typedef union YYSTYPE YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE yylval;
+
+
+int yyparse (void);
+
+
+#endif /* !YY_YY__TEXK_WEB_C_HITEXDIR_HISHRINK_PARSER_H_INCLUDED  */
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_START = 3,                      /* "<"  */
+  YYSYMBOL_END = 4,                        /* ">"  */
+  YYSYMBOL_GLYPH = 5,                      /* "glyph"  */
+  YYSYMBOL_UNSIGNED = 6,                   /* UNSIGNED  */
+  YYSYMBOL_REFERENCE = 7,                  /* REFERENCE  */
+  YYSYMBOL_SIGNED = 8,                     /* SIGNED  */
+  YYSYMBOL_STRING = 9,                     /* STRING  */
+  YYSYMBOL_CHARCODE = 10,                  /* CHARCODE  */
+  YYSYMBOL_FPNUM = 11,                     /* FPNUM  */
+  YYSYMBOL_DIMEN = 12,                     /* "dimen"  */
+  YYSYMBOL_PT = 13,                        /* "pt"  */
+  YYSYMBOL_MM = 14,                        /* "mm"  */
+  YYSYMBOL_INCH = 15,                      /* "in"  */
+  YYSYMBOL_XDIMEN = 16,                    /* "xdimen"  */
+  YYSYMBOL_H = 17,                         /* "h"  */
+  YYSYMBOL_V = 18,                         /* "v"  */
+  YYSYMBOL_FIL = 19,                       /* "fil"  */
+  YYSYMBOL_FILL = 20,                      /* "fill"  */
+  YYSYMBOL_FILLL = 21,                     /* "filll"  */
+  YYSYMBOL_PENALTY = 22,                   /* "penalty"  */
+  YYSYMBOL_INTEGER = 23,                   /* "int"  */
+  YYSYMBOL_LANGUAGE = 24,                  /* "language"  */
+  YYSYMBOL_RULE = 25,                      /* "rule"  */
+  YYSYMBOL_RUNNING = 26,                   /* "|"  */
+  YYSYMBOL_KERN = 27,                      /* "kern"  */
+  YYSYMBOL_EXPLICIT = 28,                  /* "!"  */
+  YYSYMBOL_GLUE = 29,                      /* "glue"  */
+  YYSYMBOL_PLUS = 30,                      /* "plus"  */
+  YYSYMBOL_MINUS = 31,                     /* "minus"  */
+  YYSYMBOL_TXT_START = 32,                 /* TXT_START  */
+  YYSYMBOL_TXT_END = 33,                   /* TXT_END  */
+  YYSYMBOL_TXT_IGNORE = 34,                /* TXT_IGNORE  */
+  YYSYMBOL_TXT_FONT_GLUE = 35,             /* TXT_FONT_GLUE  */
+  YYSYMBOL_TXT_FONT_HYPHEN = 36,           /* TXT_FONT_HYPHEN  */
+  YYSYMBOL_TXT_FONT = 37,                  /* TXT_FONT  */
+  YYSYMBOL_TXT_LOCAL = 38,                 /* TXT_LOCAL  */
+  YYSYMBOL_TXT_GLOBAL = 39,                /* TXT_GLOBAL  */
+  YYSYMBOL_TXT_CC = 40,                    /* TXT_CC  */
+  YYSYMBOL_HBOX = 41,                      /* "hbox"  */
+  YYSYMBOL_VBOX = 42,                      /* "vbox"  */
+  YYSYMBOL_SHIFTED = 43,                   /* "shifted"  */
+  YYSYMBOL_HPACK = 44,                     /* "hpack"  */
+  YYSYMBOL_HSET = 45,                      /* "hset"  */
+  YYSYMBOL_VPACK = 46,                     /* "vpack"  */
+  YYSYMBOL_VSET = 47,                      /* "vset"  */
+  YYSYMBOL_DEPTH = 48,                     /* "depth"  */
+  YYSYMBOL_ADD = 49,                       /* "add"  */
+  YYSYMBOL_TO = 50,                        /* "to"  */
+  YYSYMBOL_LEADERS = 51,                   /* "leaders"  */
+  YYSYMBOL_ALIGN = 52,                     /* "align"  */
+  YYSYMBOL_CENTER = 53,                    /* "center"  */
+  YYSYMBOL_EXPAND = 54,                    /* "expand"  */
+  YYSYMBOL_BASELINE = 55,                  /* "baseline"  */
+  YYSYMBOL_LIGATURE = 56,                  /* "ligature"  */
+  YYSYMBOL_DISC = 57,                      /* "disc"  */
+  YYSYMBOL_PAR = 58,                       /* "par"  */
+  YYSYMBOL_MATH = 59,                      /* "math"  */
+  YYSYMBOL_ON = 60,                        /* "on"  */
+  YYSYMBOL_OFF = 61,                       /* "off"  */
+  YYSYMBOL_ADJUST = 62,                    /* "adjust"  */
+  YYSYMBOL_TABLE = 63,                     /* "table"  */
+  YYSYMBOL_ITEM = 64,                      /* "item"  */
+  YYSYMBOL_IMAGE = 65,                     /* "image"  */
+  YYSYMBOL_LABEL = 66,                     /* "label"  */
+  YYSYMBOL_BOT = 67,                       /* "bot"  */
+  YYSYMBOL_MID = 68,                       /* "mid"  */
+  YYSYMBOL_LINK = 69,                      /* "link"  */
+  YYSYMBOL_OUTLINE = 70,                   /* "outline"  */
+  YYSYMBOL_STREAM = 71,                    /* "stream"  */
+  YYSYMBOL_STREAMDEF = 72,                 /* "stream (definition)"  */
+  YYSYMBOL_FIRST = 73,                     /* "first"  */
+  YYSYMBOL_LAST = 74,                      /* "last"  */
+  YYSYMBOL_TOP = 75,                       /* "top"  */
+  YYSYMBOL_NOREFERENCE = 76,               /* "*"  */
+  YYSYMBOL_PAGE = 77,                      /* "page"  */
+  YYSYMBOL_RANGE = 78,                     /* "range"  */
+  YYSYMBOL_DIRECTORY = 79,                 /* "directory"  */
+  YYSYMBOL_SECTION = 80,                   /* "entry"  */
+  YYSYMBOL_DEFINITIONS = 81,               /* "definitions"  */
+  YYSYMBOL_MAX = 82,                       /* "max"  */
+  YYSYMBOL_PARAM = 83,                     /* "param"  */
+  YYSYMBOL_FONT = 84,                      /* "font"  */
+  YYSYMBOL_CONTENT = 85,                   /* "content"  */
+  YYSYMBOL_YYACCEPT = 86,                  /* $accept  */
+  YYSYMBOL_glyph = 87,                     /* glyph  */
+  YYSYMBOL_content_node = 88,              /* content_node  */
+  YYSYMBOL_start = 89,                     /* start  */
+  YYSYMBOL_integer = 90,                   /* integer  */
+  YYSYMBOL_string = 91,                    /* string  */
+  YYSYMBOL_number = 92,                    /* number  */
+  YYSYMBOL_dimension = 93,                 /* dimension  */
+  YYSYMBOL_xdimen = 94,                    /* xdimen  */
+  YYSYMBOL_xdimen_node = 95,               /* xdimen_node  */
+  YYSYMBOL_order = 96,                     /* order  */
+  YYSYMBOL_stretch = 97,                   /* stretch  */
+  YYSYMBOL_penalty = 98,                   /* penalty  */
+  YYSYMBOL_rule_dimension = 99,            /* rule_dimension  */
+  YYSYMBOL_rule = 100,                     /* rule  */
+  YYSYMBOL_rule_node = 101,                /* rule_node  */
+  YYSYMBOL_explicit = 102,                 /* explicit  */
+  YYSYMBOL_kern = 103,                     /* kern  */
+  YYSYMBOL_plus = 104,                     /* plus  */
+  YYSYMBOL_minus = 105,                    /* minus  */
+  YYSYMBOL_glue = 106,                     /* glue  */
+  YYSYMBOL_glue_node = 107,                /* glue_node  */
+  YYSYMBOL_position = 108,                 /* position  */
+  YYSYMBOL_content_list = 109,             /* content_list  */
+  YYSYMBOL_estimate = 110,                 /* estimate  */
+  YYSYMBOL_list = 111,                     /* list  */
+  YYSYMBOL_112_1 = 112,                    /* $@1  */
+  YYSYMBOL_text = 113,                     /* text  */
+  YYSYMBOL_txt = 114,                      /* txt  */
+  YYSYMBOL_115_2 = 115,                    /* $@2  */
+  YYSYMBOL_box_dimen = 116,                /* box_dimen  */
+  YYSYMBOL_box_shift = 117,                /* box_shift  */
+  YYSYMBOL_box_glue_set = 118,             /* box_glue_set  */
+  YYSYMBOL_box = 119,                      /* box  */
+  YYSYMBOL_hbox_node = 120,                /* hbox_node  */
+  YYSYMBOL_vbox_node = 121,                /* vbox_node  */
+  YYSYMBOL_box_flex = 122,                 /* box_flex  */
+  YYSYMBOL_xbox = 123,                     /* xbox  */
+  YYSYMBOL_box_goal = 124,                 /* box_goal  */
+  YYSYMBOL_hpack = 125,                    /* hpack  */
+  YYSYMBOL_vpack = 126,                    /* vpack  */
+  YYSYMBOL_127_3 = 127,                    /* $@3  */
+  YYSYMBOL_vxbox_node = 128,               /* vxbox_node  */
+  YYSYMBOL_hxbox_node = 129,               /* hxbox_node  */
+  YYSYMBOL_ltype = 130,                    /* ltype  */
+  YYSYMBOL_leaders = 131,                  /* leaders  */
+  YYSYMBOL_baseline = 132,                 /* baseline  */
+  YYSYMBOL_133_4 = 133,                    /* $@4  */
+  YYSYMBOL_cc_list = 134,                  /* cc_list  */
+  YYSYMBOL_lig_cc = 135,                   /* lig_cc  */
+  YYSYMBOL_ref = 136,                      /* ref  */
+  YYSYMBOL_ligature = 137,                 /* ligature  */
+  YYSYMBOL_138_5 = 138,                    /* $@5  */
+  YYSYMBOL_replace_count = 139,            /* replace_count  */
+  YYSYMBOL_disc = 140,                     /* disc  */
+  YYSYMBOL_disc_node = 141,                /* disc_node  */
+  YYSYMBOL_par_dimen = 142,                /* par_dimen  */
+  YYSYMBOL_par = 143,                      /* par  */
+  YYSYMBOL_144_6 = 144,                    /* $@6  */
+  YYSYMBOL_math = 145,                     /* math  */
+  YYSYMBOL_on_off = 146,                   /* on_off  */
+  YYSYMBOL_span_count = 147,               /* span_count  */
+  YYSYMBOL_table = 148,                    /* table  */
+  YYSYMBOL_image_dimen = 149,              /* image_dimen  */
+  YYSYMBOL_image = 150,                    /* image  */
+  YYSYMBOL_max_value = 151,                /* max_value  */
+  YYSYMBOL_placement = 152,                /* placement  */
+  YYSYMBOL_def_node = 153,                 /* def_node  */
+  YYSYMBOL_stream_link = 154,              /* stream_link  */
+  YYSYMBOL_stream_split = 155,             /* stream_split  */
+  YYSYMBOL_stream_info = 156,              /* stream_info  */
+  YYSYMBOL_157_7 = 157,                    /* $@7  */
+  YYSYMBOL_stream_type = 158,              /* stream_type  */
+  YYSYMBOL_stream_def_node = 159,          /* stream_def_node  */
+  YYSYMBOL_stream_ins_node = 160,          /* stream_ins_node  */
+  YYSYMBOL_stream = 161,                   /* stream  */
+  YYSYMBOL_page_priority = 162,            /* page_priority  */
+  YYSYMBOL_stream_def_list = 163,          /* stream_def_list  */
+  YYSYMBOL_page = 164,                     /* page  */
+  YYSYMBOL_165_8 = 165,                    /* $@8  */
+  YYSYMBOL_166_9 = 166,                    /* $@9  */
+  YYSYMBOL_hint = 167,                     /* hint  */
+  YYSYMBOL_directory_section = 168,        /* directory_section  */
+  YYSYMBOL_169_10 = 169,                   /* $@10  */
+  YYSYMBOL_entry_list = 170,               /* entry_list  */
+  YYSYMBOL_entry = 171,                    /* entry  */
+  YYSYMBOL_definition_section = 172,       /* definition_section  */
+  YYSYMBOL_173_11 = 173,                   /* $@11  */
+  YYSYMBOL_definition_list = 174,          /* definition_list  */
+  YYSYMBOL_max_definitions = 175,          /* max_definitions  */
+  YYSYMBOL_max_list = 176,                 /* max_list  */
+  YYSYMBOL_def_list = 177,                 /* def_list  */
+  YYSYMBOL_parameters = 178,               /* parameters  */
+  YYSYMBOL_empty_param_list = 179,         /* empty_param_list  */
+  YYSYMBOL_non_empty_param_list = 180,     /* non_empty_param_list  */
+  YYSYMBOL_181_12 = 181,                   /* $@12  */
+  YYSYMBOL_font = 182,                     /* font  */
+  YYSYMBOL_font_head = 183,                /* font_head  */
+  YYSYMBOL_font_param_list = 184,          /* font_param_list  */
+  YYSYMBOL_font_param = 185,               /* font_param  */
+  YYSYMBOL_fref = 186,                     /* fref  */
+  YYSYMBOL_xdimen_ref = 187,               /* xdimen_ref  */
+  YYSYMBOL_param_ref = 188,                /* param_ref  */
+  YYSYMBOL_stream_ref = 189,               /* stream_ref  */
+  YYSYMBOL_content_section = 190,          /* content_section  */
+  YYSYMBOL_191_13 = 191                    /* $@13  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
+
+
+
+#ifdef short
+# undef short
+#endif
+
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
+#endif
+
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
+#else
+typedef signed char yytype_int8;
+#endif
+
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
+#endif
+
+/* Work around bug in HP-UX 11.23, which defines these macros
+   incorrectly for preprocessor constants.  This workaround can likely
+   be removed in 2023, as HPE has promised support for HP-UX 11.23
+   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
+#else
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+#  define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+#  define YYSIZE_T size_t
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# else
+#  define YYSIZE_T unsigned
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YY_USE(E) ((void) (E))
+#else
+# define YY_USE(E) /* empty */
+#endif
+
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
+# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
+#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
+# else
+#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# endif
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
+#else
+# 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
+
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if 1
+
+/* 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 <alloca.h> /* INFRINGES ON USER NAME SPACE */
+#   elif defined _AIX
+#    define YYSTACK_ALLOC __alloca
+#   elif defined _MSC_VER
+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+#    define alloca _alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+#     include <stdlib.h> /* 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 (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 <stdlib.h> /* 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
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if ! defined free && ! defined EXIT_SUCCESS
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+# endif
+#endif /* 1 */
+
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  yy_state_t yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (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                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (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, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state.  */
+#define YYFINAL  5
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   657
+
+/* YYNTOKENS -- Number of terminals.  */
+#define YYNTOKENS  86
+/* YYNNTS -- Number of nonterminals.  */
+#define YYNNTS  106
+/* YYNRULES -- Number of rules.  */
+#define YYNRULES  266
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  566
+
+/* YYMAXUTOK -- Last valid token kind.  */
+#define YYMAXUTOK   340
+
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 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
+};
+
+#if YYDEBUG
+/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
+{
+       0,   306,   306,   307,   308,   311,   311,   314,   317,   317,
+     322,   322,   322,   325,   326,   327,   330,   331,   332,   333,
+     337,   341,   341,   341,   341,   343,   346,   347,   350,   350,
+     351,   355,   356,   359,   359,   360,   361,   364,   364,   365,
+     365,   366,   367,   369,   374,   375,   376,   377,   378,   379,
+     385,   384,   389,   389,   391,   392,   393,   394,   395,   396,
+     397,   398,   398,   402,   404,   405,   407,   408,   409,   412,
+     414,   415,   416,   416,   419,   420,   421,   423,   424,   425,
+     426,   428,   429,   429,   431,   432,   435,   436,   438,   438,
+     441,   441,   441,   441,   442,   443,   444,   445,   448,   448,
+     453,   457,   457,   458,   459,   460,   461,   461,   464,   467,
+     468,   470,   472,   473,   476,   479,   482,   483,   484,   485,
+     486,   486,   487,   488,   490,   493,   494,   495,   496,   497,
+     498,   499,   500,   501,   503,   506,   506,   507,   510,   513,
+     514,   515,   516,   518,   519,   521,   524,   524,   525,   526,
+     529,   535,   535,   535,   535,   536,   540,   544,   553,   553,
+     554,   555,   555,   557,   557,   557,   557,   559,   563,   566,
+     566,   569,   570,   571,   572,   576,   577,   579,   579,   581,
+     581,   581,   587,   588,   591,   594,   594,   595,   595,   596,
+     600,   600,   603,   603,   606,   635,   635,   637,   638,   639,
+     640,   641,   642,   643,   644,   645,   646,   647,   648,   649,
+     650,   651,   652,   653,   658,   659,   660,   661,   662,   663,
+     664,   665,   666,   667,   668,   669,   670,   671,   675,   676,
+     677,   680,   681,   682,   685,   686,   686,   691,   693,   696,
+     696,   699,   700,   701,   702,   703,   704,   705,   706,   708,
+     711,   712,   713,   717,   718,   720,   722,   723,   724,   725,
+     726,   727,   728,   729,   731,   737,   737
+};
+#endif
+
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if 1
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+static const char *const yytname[] =
+{
+  "\"end of file\"", "error", "\"invalid token\"", "\"<\"", "\">\"",
+  "\"glyph\"", "UNSIGNED", "REFERENCE", "SIGNED", "STRING", "CHARCODE",
+  "FPNUM", "\"dimen\"", "\"pt\"", "\"mm\"", "\"in\"", "\"xdimen\"",
+  "\"h\"", "\"v\"", "\"fil\"", "\"fill\"", "\"filll\"", "\"penalty\"",
+  "\"int\"", "\"language\"", "\"rule\"", "\"|\"", "\"kern\"", "\"!\"",
+  "\"glue\"", "\"plus\"", "\"minus\"", "TXT_START", "TXT_END",
+  "TXT_IGNORE", "TXT_FONT_GLUE", "TXT_FONT_HYPHEN", "TXT_FONT",
+  "TXT_LOCAL", "TXT_GLOBAL", "TXT_CC", "\"hbox\"", "\"vbox\"",
+  "\"shifted\"", "\"hpack\"", "\"hset\"", "\"vpack\"", "\"vset\"",
+  "\"depth\"", "\"add\"", "\"to\"", "\"leaders\"", "\"align\"",
+  "\"center\"", "\"expand\"", "\"baseline\"", "\"ligature\"", "\"disc\"",
+  "\"par\"", "\"math\"", "\"on\"", "\"off\"", "\"adjust\"", "\"table\"",
+  "\"item\"", "\"image\"", "\"label\"", "\"bot\"", "\"mid\"", "\"link\"",
+  "\"outline\"", "\"stream\"", "\"stream (definition)\"", "\"first\"",
+  "\"last\"", "\"top\"", "\"*\"", "\"page\"", "\"range\"", "\"directory\"",
+  "\"entry\"", "\"definitions\"", "\"max\"", "\"param\"", "\"font\"",
+  "\"content\"", "$accept", "glyph", "content_node", "start", "integer",
+  "string", "number", "dimension", "xdimen", "xdimen_node", "order",
+  "stretch", "penalty", "rule_dimension", "rule", "rule_node", "explicit",
+  "kern", "plus", "minus", "glue", "glue_node", "position", "content_list",
+  "estimate", "list", "$@1", "text", "txt", "$@2", "box_dimen",
+  "box_shift", "box_glue_set", "box", "hbox_node", "vbox_node", "box_flex",
+  "xbox", "box_goal", "hpack", "vpack", "$@3", "vxbox_node", "hxbox_node",
+  "ltype", "leaders", "baseline", "$@4", "cc_list", "lig_cc", "ref",
+  "ligature", "$@5", "replace_count", "disc", "disc_node", "par_dimen",
+  "par", "$@6", "math", "on_off", "span_count", "table", "image_dimen",
+  "image", "max_value", "placement", "def_node", "stream_link",
+  "stream_split", "stream_info", "$@7", "stream_type", "stream_def_node",
+  "stream_ins_node", "stream", "page_priority", "stream_def_list", "page",
+  "$@8", "$@9", "hint", "directory_section", "$@10", "entry_list", "entry",
+  "definition_section", "$@11", "definition_list", "max_definitions",
+  "max_list", "def_list", "parameters", "empty_param_list",
+  "non_empty_param_list", "$@12", "font", "font_head", "font_param_list",
+  "font_param", "fref", "xdimen_ref", "param_ref", "stream_ref",
+  "content_section", "$@13", YY_NULLPTR
+};
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
+#endif
+
+#define YYPACT_NINF (-326)
+
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
+
+#define YYTABLE_NINF (-1)
+
+#define yytable_value_is_error(Yyn) \
+  0
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+static const yytype_int16 yypact[] =
+{
+      48,    -4,   110,   113,   107,  -326,    52,   137,  -326,  -326,
+      74,  -326,  -326,   153,  -326,   211,    85,  -326,  -326,    94,
+    -326,  -326,  -326,   275,  -326,   278,   190,   280,   159,  -326,
+     313,  -326,    31,  -326,  -326,   585,  -326,  -326,  -326,  -326,
+    -326,  -326,  -326,  -326,   223,   467,  -326,   203,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   240,   248,   116,   219,   253,   140,   210,   229,
+     182,   182,   220,   182,   220,   182,   121,   229,   234,    71,
+     229,    41,    66,   271,    79,   301,   261,   234,   234,  -326,
+    -326,   268,   270,   279,   284,   286,   288,   294,   297,   315,
+     325,   326,   327,   328,   333,   334,   335,   337,   338,   339,
+     343,   242,  -326,   229,   182,   219,   223,   152,   229,   345,
+     182,   234,   210,   348,   223,   350,   223,    82,   251,   323,
+     342,   353,  -326,  -326,  -326,   355,   357,   358,  -326,  -326,
+    -326,  -326,   231,  -326,   152,   359,   361,  -326,   165,   362,
+     182,   341,   372,   373,   182,   220,   375,   377,   182,   264,
+     379,   220,   380,   305,   384,   385,  -326,   363,   200,   387,
+     389,  -326,   390,   391,   395,   396,   398,   397,    66,   401,
+     234,  -326,  -326,   404,   234,  -326,  -326,  -326,  -326,   405,
+    -326,    66,    66,  -326,   350,   406,   264,   264,   407,  -326,
+     408,   530,   409,   399,   182,   410,   411,   255,  -326,   234,
+      80,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,  -326,   413,   414,   416,   417,   418,   419,   421,   422,
+     423,   427,   429,  -326,   430,   432,   433,  -326,   435,  -326,
+    -326,   436,   182,   437,   345,  -326,  -326,  -326,   438,   440,
+     441,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+     152,  -326,  -326,   234,  -326,   442,  -326,   302,   182,   420,
+    -326,  -326,   182,   293,  -326,  -326,  -326,   121,   121,    66,
+    -326,   341,  -326,   400,  -326,  -326,   229,  -326,  -326,  -326,
+     345,  -326,  -326,   345,  -326,  -326,  -326,   176,  -326,  -326,
+    -326,    66,  -326,  -326,    66,  -326,    66,    66,  -326,    38,
+     345,    66,    66,    53,   345,    66,  -326,  -326,  -326,    66,
+      66,  -326,  -326,  -326,   445,   182,   341,  -326,  -326,   446,
+     448,    66,    66,  -326,  -326,  -326,  -326,   439,   450,  -326,
+      66,    66,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,  -326,  -326,  -326,  -326,  -326,   452,  -326,  -326,   451,
+    -326,   453,  -326,   345,   345,  -326,  -326,  -326,  -326,   456,
+    -326,   182,  -326,   164,  -326,   182,  -326,  -326,   182,   182,
+      66,  -326,  -326,  -326,  -326,  -326,   420,   121,   182,   458,
+     460,    49,  -326,  -326,  -326,   345,  -326,  -326,   434,  -326,
+      66,    35,  -326,    66,  -326,    66,  -326,  -326,   424,  -326,
+    -326,   345,    66,  -326,  -326,  -326,   324,    66,    66,  -326,
+    -326,   420,  -326,  -326,  -326,    66,  -326,   182,  -326,   345,
+     463,  -326,   345,  -326,   462,   412,  -326,   105,  -326,  -326,
+     454,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,    66,    66,  -326,  -326,  -326,   152,  -326,  -326,  -326,
+    -326,  -326,   350,  -326,  -326,  -326,   184,  -326,  -326,  -326,
+    -326,  -326,   466,    39,   345,  -326,   182,  -326,   210,   234,
+     234,   234,   234,   234,   234,   234,   234,  -326,  -326,  -326,
+     264,    72,   471,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,  -326,   399,  -326,  -326,  -326,    39,  -326,    66,  -326,
+    -326,   242,   223,   152,   210,   182,   234,   210,   348,    66,
+    -326,  -326,  -326,  -326,   470,   345,   345,   473,   476,   478,
+     182,   480,   481,   482,   483,   484,  -326,  -326,   489,   345,
+    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,    66,
+    -326,   345,   425,  -326,   234,    69
+};
+
+/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE does not specify something else to do.  Zero
+   means the default is an error.  */
+static const yytype_int16 yydefact[] =
+{
+       0,     0,     0,     0,     0,     1,     0,     0,   185,   190,
+       0,   184,   187,     0,   265,     0,     0,   192,    44,     0,
+     186,   188,   195,     0,    45,     0,     0,     0,     4,   191,
+       0,   193,     4,   266,    46,     0,    32,    72,    73,    88,
+      89,   115,   169,   170,     0,     0,   194,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,    64,     0,    64,     0,     0,     0,     0,    33,
+       0,    44,     0,     0,     0,     0,     0,     0,     0,     8,
+       9,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   105,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,    47,     0,   154,     0,     0,
+       0,     0,     6,     5,    26,     0,     0,     0,    10,    11,
+      12,    29,     0,    28,     0,     0,     0,    34,     0,     0,
+      19,    37,     0,     0,     0,    64,     0,     0,     0,     0,
+       0,    64,     0,     0,     0,     0,     4,     0,    90,     0,
+       0,    98,     0,     0,   106,     0,   109,     0,   113,     0,
+     116,   250,    44,     0,    44,   135,   136,   234,   251,     0,
+     137,     0,     0,    44,    47,     0,     0,     0,     0,   139,
+       0,    47,     0,     0,   147,     0,     0,     0,   252,    44,
+       0,   189,   199,   208,   198,   203,   204,   202,   206,   207,
+     200,   201,   205,   213,   150,   210,   211,   212,   209,   197,
+     196,    44,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   106,     0,     0,     0,   179,     0,    48,
+      44,     0,     0,     0,     0,   152,   153,   151,     0,     0,
+       0,     2,     7,     3,    27,   253,   263,    13,    15,    14,
+       0,    31,   259,     0,    35,     0,    36,     0,     0,    39,
+      42,   256,     0,    66,    70,    71,    65,     0,     0,     0,
+      87,    37,    86,     0,    85,    84,     0,    91,    92,    93,
+       0,    97,   261,     0,   100,   262,   257,     0,   108,   110,
+     258,   112,   114,   120,     0,   124,     0,     0,   134,    47,
+     128,     0,     0,    47,   125,     0,    50,    44,   138,     0,
+       0,   145,   140,   142,     0,     0,    37,   260,   149,     0,
+       0,     0,     0,   168,   164,   165,   166,     0,     0,   163,
+       0,     0,   216,   229,   219,   215,   228,   217,   220,   218,
+     230,   221,   222,   223,   224,   225,   175,   227,   231,   233,
+     226,     0,   214,     0,   237,   155,   182,   183,    30,     0,
+     254,    17,    18,     0,    38,     0,    41,    63,     0,     0,
+       0,    80,    78,    79,    77,    81,    39,     0,     0,     0,
+       0,     0,    94,    95,    96,     0,   103,   104,     0,   111,
+       0,    47,   123,     0,   119,     0,   117,   235,     0,   129,
+     130,   131,     0,   126,   127,    44,     0,     0,     0,   141,
+     146,    39,   156,   174,   171,     0,   173,     0,   161,     0,
+       0,   176,     0,   232,     0,     0,   239,     0,   240,   255,
+       0,    21,    22,    23,    24,    25,    40,    67,    68,    69,
+      74,     0,     0,    82,    43,   264,     0,    99,   101,   121,
+     122,   118,    47,   132,   133,    52,    61,    49,   143,   144,
+     148,   172,     0,     0,     0,   157,     0,   238,    33,     0,
+       0,     0,     0,     0,     0,     0,     0,    16,    76,    75,
+       0,     0,     0,    51,    60,    58,    59,    55,    57,    56,
+      54,    53,     0,    20,   159,   158,     0,   162,     0,   180,
+     249,     0,     0,     0,    33,     0,     0,    33,     0,     0,
+     107,   102,   236,    62,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    83,   160,     0,     0,
+     241,   246,   247,   242,   245,   243,   244,   248,   167,     0,
+     177,   181,     0,   178,     0,     0
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -326,  -326,   -65,   -23,    97,   -79,   -83,   -13,   -62,  -232,
+    -326,  -191,   -27,  -118,   -94,   195,   -67,   -26,  -228,  -325,
+     -97,  -226,    -1,   172,   -86,   -55,  -326,  -326,  -326,  -326,
+     198,   -36,  -326,   431,  -111,   201,  -326,   428,  -147,  -326,
+    -326,  -326,  -326,  -326,  -326,   381,   386,  -326,  -326,  -326,
+     -45,   -96,  -326,  -326,   -95,   132,  -326,  -326,  -326,  -326,
+     300,  -326,  -326,  -326,   -93,  -326,  -326,   139,    -7,  -326,
+    -326,  -326,  -326,   -50,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
+    -326,  -326,    42,   -89,  -227,  -326,  -326,  -326,  -326,  -326,
+    -290,  -222,   -92,  -326,  -326,  -326
+};
+
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+       0,   131,    34,   194,   134,    91,   142,   150,   151,   348,
+     455,   384,   135,   144,   145,    36,   176,   149,   279,   386,
+     152,   168,   187,    25,   327,   195,   425,   476,   511,   512,
+     155,   159,   390,   156,    37,    38,   397,   162,   289,   160,
+     164,   500,    39,    40,   300,   169,   172,   303,   501,   408,
+     520,   175,   307,   178,   179,    41,   182,   183,   410,   189,
+     190,   203,   198,   336,   206,   110,   258,    31,   516,   517,
+     349,   483,   350,    42,    43,   340,   442,   561,   248,   366,
+     536,     2,     3,    12,    15,    21,     7,    13,    23,    17,
+      27,   369,   251,   191,   322,   472,   253,   254,   374,   448,
+     521,   184,   192,   209,    11,    18
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule whose
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+static const yytype_int16 yytable[] =
+{
+      30,   148,    35,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,    24,   180,   200,
+     136,   239,   146,   238,   153,   244,   270,   245,   373,   202,
+     246,   170,   173,   174,   177,   181,   188,   237,   163,   250,
+     205,   249,   208,   210,   249,   247,   112,   252,   112,   329,
+     330,     1,   234,   167,   143,   391,   393,   154,   154,   249,
+     154,   201,   154,   396,   171,   392,   394,   277,   233,   166,
+     236,   460,   166,   240,   466,     4,   243,   405,   112,    70,
+     321,   325,    32,   166,   343,   199,   274,   413,   313,   415,
+      70,    71,   317,   314,    70,   316,   167,    62,   193,   147,
+     232,   185,   186,   275,   143,   530,   480,   171,   431,    63,
+       5,   193,   531,     8,   435,   514,     6,   342,   417,   283,
+     341,   417,   129,   311,   166,   291,   130,   489,   112,   490,
+     491,   143,   492,     9,   493,   188,   320,   324,   334,   188,
+      10,   282,   344,   345,   346,   286,   138,   112,   139,   255,
+     256,   140,   378,   344,   345,   346,    16,   257,   138,    14,
+     139,   494,   495,   140,   188,   461,   141,    22,   319,   323,
+     496,   138,   112,   139,    26,   462,   140,   451,   141,   467,
+      35,   273,   406,   452,   453,   454,   407,   347,   138,   403,
+     139,   335,   326,   140,   456,   383,    44,   457,   458,   399,
+     522,   523,   524,   525,   526,   527,   528,   484,   231,   419,
+     111,   422,   235,   423,    19,    20,   486,   503,   504,   505,
+     506,   507,   508,   509,   510,   132,   112,   133,   379,    47,
+     351,   167,    89,    90,   395,   138,   112,   139,   147,   371,
+     140,   112,   181,   181,   267,   268,   269,   127,   132,   368,
+     133,   400,   297,   298,   299,   128,   409,   143,   518,   412,
+     137,   414,   416,   158,   347,   347,   420,   421,   207,   387,
+     424,   161,   211,   161,   427,   428,   212,   401,    28,    29,
+     167,    32,    33,    45,    46,   213,   434,   436,   196,   197,
+     214,   411,   215,   411,   216,   439,   440,   418,   450,   323,
+     217,   418,   383,   218,   549,   383,   383,   204,   112,   548,
+     473,   259,   260,   287,   288,   185,   186,   559,   411,   381,
+     382,   219,   430,   388,   389,    48,    24,    32,   477,    49,
+     261,   220,   221,   222,   223,   459,    50,    51,    52,   224,
+     225,   226,    53,   227,   228,   229,    30,   230,   166,   262,
+     445,   447,   181,   529,   204,   469,   249,   263,   470,   264,
+     471,   265,   266,   271,    54,   272,   276,   474,    55,    56,
+      57,   278,   478,   479,   347,   482,   280,   281,    58,   284,
+     481,   285,   167,   290,   292,   463,   250,   293,   294,   295,
+      59,   301,   296,   302,   304,   305,    60,    61,   418,   306,
+     308,   310,    32,    35,   309,   312,   498,   499,   315,   318,
+     328,   331,   332,   333,   337,   338,   347,   352,   353,   167,
+     354,   355,   356,   357,   475,   358,   359,   360,   542,   539,
+     543,   361,   544,   362,   363,   545,   364,   365,   515,   367,
+     370,   372,   375,   538,   376,   377,   380,   533,   398,   429,
+     432,   385,   433,   143,    28,   437,   438,   540,   441,   444,
+     449,   167,   464,   535,   465,    70,   468,   485,   487,   488,
+     513,   515,   497,   519,   546,   532,   547,   550,   274,    92,
+     551,   243,   552,    93,   553,   554,   555,   556,   557,    35,
+      94,    95,    96,   558,   537,   402,    97,   564,   541,   426,
+     241,   404,   157,   165,   560,   446,   242,   339,   443,   534,
+     143,   563,   167,   347,   502,     0,     0,     0,    98,   565,
+       0,     0,    99,   100,   101,     0,   347,     0,     0,     0,
+       0,     0,   102,   103,     0,    64,   249,   104,   562,   105,
+       0,     0,   347,     0,   106,   107,     0,     0,     0,     0,
+     108,   109,    65,     0,    66,    67,     0,    68,     0,    69,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    70,    71,     0,    72,    73,    74,    75,     0,     0,
+       0,    76,     0,     0,     0,    77,    78,    79,    80,    81,
+      64,     0,    82,    83,    84,    85,     0,     0,     0,    86,
+       0,    87,    88,     0,     0,     0,     0,    65,     0,    66,
+      67,     0,    68,     0,    69,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    70,    71,     0,    72,
+      73,    74,    75,     0,     0,     0,    76,     0,     0,     0,
+      77,    78,    79,    80,    81,     0,     0,    82,    83,    84,
+      85,     0,     0,     0,    86,     0,    87,    88
+};
+
+static const yytype_int16 yycheck[] =
+{
+      23,    68,    25,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    18,    80,    84,
+      65,   118,    67,   117,    69,   121,   144,   122,   254,    84,
+     123,    76,    77,    78,    79,    80,    81,   116,    74,   125,
+      85,     6,    87,    88,     6,   124,     7,   126,     7,   196,
+     197,     3,   114,    76,    67,   287,   288,    70,    71,     6,
+      73,    84,    75,   291,    77,   287,   288,   150,   113,     3,
+     115,   396,     3,   118,    25,    79,   121,   303,     7,    41,
+     191,   192,     3,     3,     4,     6,   148,   314,   180,   316,
+      41,    42,   184,   182,    41,   184,   119,    66,    32,    28,
+     113,    60,    61,   148,   117,    33,   431,   120,   336,    78,
+       0,    32,    40,     6,   341,    76,     3,   209,    83,   155,
+     209,    83,     6,   178,     3,   161,    10,    22,     7,    24,
+      25,   144,    27,    81,    29,   180,   191,   192,   203,   184,
+       3,   154,    73,    74,    75,   158,     6,     7,     8,    67,
+      68,    11,   270,    73,    74,    75,     3,    75,     6,    85,
+       8,    56,    57,    11,   209,   397,    26,    82,   191,   192,
+      65,     6,     7,     8,    80,   397,    11,    13,    26,   405,
+     203,    16,     6,    19,    20,    21,    10,   210,     6,   300,
+       8,   204,   193,    11,   385,   278,     6,   388,   389,   296,
+     490,   491,   492,   493,   494,   495,   496,   439,   111,   320,
+       7,   322,   115,   324,     3,     4,   442,    33,    34,    35,
+      36,    37,    38,    39,    40,     6,     7,     8,   273,    70,
+     231,   254,     9,    10,   289,     6,     7,     8,    28,   252,
+      11,     7,   287,   288,    13,    14,    15,     7,     6,   250,
+       8,   296,    52,    53,    54,     7,   311,   270,   484,   314,
+       7,   316,   317,    43,   287,   288,   321,   322,     7,   282,
+     325,    73,     4,    75,   329,   330,     6,   300,     3,     4,
+     303,     3,     4,     3,     4,     6,   341,   342,    17,    18,
+       6,   314,     6,   316,     6,   350,   351,   320,   381,   322,
+       6,   324,   385,     6,   536,   388,   389,     6,     7,   535,
+     421,    60,    61,    49,    50,    60,    61,   549,   341,    17,
+      18,     6,   335,    30,    31,    12,   327,     3,     4,    16,
+       7,     6,     6,     6,     6,   390,    23,    24,    25,     6,
+       6,     6,    29,     6,     6,     6,   369,     4,     3,     7,
+     373,   374,   397,   500,     6,   410,     6,     4,   413,     4,
+     415,     4,     4,     4,    51,     4,     4,   422,    55,    56,
+      57,    30,   427,   428,   397,   437,     4,     4,    65,     4,
+     435,     4,   405,     4,     4,   398,   472,    82,     4,     4,
+      77,     4,    29,     4,     4,     4,    83,    84,   421,     4,
+       4,     4,     3,   426,     6,     4,   461,   462,     4,     4,
+       4,     4,     4,     4,     4,     4,   439,     4,     4,   442,
+       4,     4,     4,     4,   425,     4,     4,     4,   525,   523,
+     526,     4,   527,     4,     4,   528,     4,     4,   483,     4,
+       4,     4,     4,   522,     4,     4,     4,   512,    48,     4,
+       4,    31,     4,   466,     3,    16,     6,   524,     6,     6,
+       4,   484,     4,   518,     4,    41,    32,     4,     6,    57,
+       4,   516,    18,   486,   529,     4,     6,     4,   540,    12,
+       4,   526,     4,    16,     4,     4,     4,     4,     4,   512,
+      23,    24,    25,     4,   521,   300,    29,    72,   524,   327,
+     119,   300,    71,    75,   559,   373,   120,   207,   369,   516,
+     523,   561,   535,   536,   472,    -1,    -1,    -1,    51,   564,
+      -1,    -1,    55,    56,    57,    -1,   549,    -1,    -1,    -1,
+      -1,    -1,    65,    66,    -1,     5,     6,    70,   561,    72,
+      -1,    -1,   565,    -1,    77,    78,    -1,    -1,    -1,    -1,
+      83,    84,    22,    -1,    24,    25,    -1,    27,    -1,    29,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    42,    -1,    44,    45,    46,    47,    -1,    -1,
+      -1,    51,    -1,    -1,    -1,    55,    56,    57,    58,    59,
+       5,    -1,    62,    63,    64,    65,    -1,    -1,    -1,    69,
+      -1,    71,    72,    -1,    -1,    -1,    -1,    22,    -1,    24,
+      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    -1,    44,
+      45,    46,    47,    -1,    -1,    -1,    51,    -1,    -1,    -1,
+      55,    56,    57,    58,    59,    -1,    -1,    62,    63,    64,
+      65,    -1,    -1,    -1,    69,    -1,    71,    72
+};
+
+/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
+   state STATE-NUM.  */
+static const yytype_uint8 yystos[] =
+{
+       0,     3,   167,   168,    79,     0,     3,   172,     6,    81,
+       3,   190,   169,   173,    85,   170,     3,   175,   191,     3,
+       4,   171,    82,   174,   108,   109,    80,   176,     3,     4,
+      89,   153,     3,     4,    88,    89,   101,   120,   121,   128,
+     129,   141,   159,   160,     6,     3,     4,    70,    12,    16,
+      23,    24,    25,    29,    51,    55,    56,    57,    65,    77,
+      83,    84,    66,    78,     5,    22,    24,    25,    27,    29,
+      41,    42,    44,    45,    46,    47,    51,    55,    56,    57,
+      58,    59,    62,    63,    64,    65,    69,    71,    72,     9,
+      10,    91,    12,    16,    23,    24,    25,    29,    51,    55,
+      56,    57,    65,    66,    70,    72,    77,    78,    83,    84,
+     151,     7,     7,   136,   136,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   136,   136,     7,     7,     6,
+      10,    87,     6,     8,    90,    98,   136,     7,     6,     8,
+      11,    26,    92,    93,    99,   100,   136,    28,   102,   103,
+      93,    94,   106,   136,    93,   116,   119,   119,    43,   117,
+     125,   116,   123,   117,   126,   123,     3,    89,   107,   131,
+     136,    93,   132,   136,   136,   137,   102,   136,   139,   140,
+      94,   136,   142,   143,   187,    60,    61,   108,   136,   145,
+     146,   179,   188,    32,    89,   111,    17,    18,   148,     6,
+      88,    89,   111,   147,     6,   136,   150,     7,   136,   189,
+     136,     4,     6,     6,     6,     6,     6,     6,     6,     6,
+       6,     6,     6,     6,     6,     6,     6,     6,     6,     6,
+       4,    90,    93,   136,    94,    90,   136,    91,   100,   106,
+     136,   131,   132,   136,   137,   140,   150,    91,   164,     6,
+     110,   178,    91,   182,   183,    67,    68,    75,   152,    60,
+      61,     7,     7,     4,     4,     4,     4,    13,    14,    15,
+      99,     4,     4,    16,    94,   136,     4,    92,    30,   104,
+       4,     4,    93,   117,     4,     4,    93,    49,    50,   124,
+       4,   117,     4,    82,     4,     4,    29,    52,    53,    54,
+     130,     4,     4,   133,     4,     4,     4,   138,     4,     6,
+       4,   111,     4,   188,   179,     4,   179,   188,     4,    89,
+     111,   120,   180,    89,   111,   120,   108,   110,     4,   124,
+     124,     4,     4,     4,    88,    93,   149,     4,     4,   146,
+     161,   179,   188,     4,    73,    74,    75,    89,    95,   156,
+     158,   108,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   165,     4,   108,   177,
+       4,    93,     4,   107,   184,     4,     4,     4,    99,   136,
+       4,    17,    18,    92,    97,    31,   105,    93,    30,    31,
+     118,    95,   187,    95,   187,   111,   104,   122,    48,   106,
+     136,    89,   101,   120,   121,   107,     6,    10,   135,   111,
+     144,    89,   111,   180,   111,   180,   111,    83,    89,   120,
+     111,   111,   120,   120,   111,   112,   109,   111,   111,     4,
+      93,   104,     4,     4,   111,   180,   111,    16,     6,   111,
+     111,     6,   162,   153,     6,    89,   141,    89,   185,     4,
+      92,    13,    19,    20,    21,    96,    97,    97,    97,   111,
+     105,    95,   187,    93,     4,     4,    25,   107,    32,   111,
+     111,   111,   181,   120,   111,   108,   113,     4,   111,   111,
+     105,   111,    94,   157,    95,     4,   107,     6,    57,    22,
+      24,    25,    27,    29,    56,    57,    65,    18,   111,   111,
+     127,   134,   178,    33,    34,    35,    36,    37,    38,    39,
+      40,   114,   115,     4,    76,   136,   154,   155,   107,    93,
+     136,   186,   186,   186,   186,   186,   186,   186,   186,   124,
+      33,    40,     4,    88,   154,   111,   166,    98,    91,   100,
+     102,   103,   106,   137,   140,   150,   111,     6,   107,    95,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,    95,
+     111,   163,    89,   159,    72,   136
+};
+
+/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,    86,    87,    88,    89,    90,    90,    87,    91,    91,
+      92,    92,    92,    93,    93,    93,    94,    94,    94,    94,
+      95,    96,    96,    96,    96,    97,    98,    88,    99,    99,
+     100,   101,    88,   102,   102,   103,    88,   104,   104,   105,
+     105,   106,    88,   107,   108,   109,   109,   110,   110,   111,
+     112,   111,   113,   113,   114,   114,   114,   114,   114,   114,
+     114,   115,   114,   116,   117,   117,   118,   118,   118,   119,
+     120,   121,    88,    88,   122,   123,   123,   124,   124,   124,
+     124,   125,   127,   126,   128,   128,   129,   129,    88,    88,
+     130,   130,   130,   130,   131,   131,   131,    88,   133,   132,
+      88,   134,   134,   135,   135,   136,   138,   137,    88,   139,
+     139,   140,   140,   140,   141,    88,   142,   143,   143,   143,
+     144,   143,   143,   143,    88,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,    88,   146,   146,   145,    88,   147,
+      88,    88,    88,   148,   148,    88,   149,   149,   150,    88,
+     151,   152,   152,   152,   152,    88,    88,   153,   154,   154,
+     155,   157,   156,   158,   158,   158,   158,   159,   160,    88,
+      88,   161,   161,   161,    88,   162,   162,   163,   163,   165,
+     166,   164,    88,    88,   167,   169,   168,   170,   170,   171,
+     173,   172,   174,   174,   175,   176,   176,   151,   151,   151,
+     151,   151,   151,   151,   151,   151,   151,   151,   151,   151,
+     151,   151,   151,   151,   153,   153,   153,   153,   153,   153,
+     153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
+     153,   177,   177,   178,   179,   181,   180,   182,   183,   184,
+     184,   185,   185,   185,   185,   185,   185,   185,   185,   186,
+     187,   188,   189,    88,    88,    88,    88,    88,    88,    88,
+      88,    88,    88,    88,   107,   191,   190
+};
+
+/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     2,     4,     1,     1,     1,     2,     1,     1,
+       1,     1,     1,     2,     2,     2,     5,     3,     3,     1,
+       4,     1,     1,     1,     1,     2,     1,     4,     1,     1,
+       3,     4,     1,     0,     1,     2,     4,     0,     2,     0,
+       2,     3,     4,     4,     0,     1,     2,     0,     1,     4,
+       0,     5,     1,     2,     1,     1,     1,     1,     1,     1,
+       1,     0,     2,     3,     0,     2,     0,     2,     2,     4,
+       4,     4,     1,     1,     2,     5,     5,     2,     2,     2,
+       2,     3,     0,     7,     4,     4,     4,     4,     1,     1,
+       0,     1,     1,     1,     3,     3,     3,     4,     0,     4,
+       4,     0,     2,     1,     1,     1,     0,     6,     4,     1,
+       2,     3,     2,     1,     4,     1,     1,     3,     4,     3,
+       0,     4,     4,     3,     4,     2,     3,     3,     2,     3,
+       3,     3,     4,     4,     4,     1,     1,     1,     4,     1,
+       4,     5,     4,     4,     4,     4,     2,     0,     4,     4,
+       2,     1,     1,     1,     0,     5,     5,     7,     1,     1,
+       3,     0,     4,     1,     1,     1,     1,    10,     4,     1,
+       1,     2,     3,     2,     5,     0,     1,     0,     2,     0,
+       0,    10,     5,     5,     3,     0,     6,     0,     2,     5,
+       0,     6,     0,     2,     4,     0,     4,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     5,     5,     5,     5,     5,     5,
+       5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
+       5,     1,     2,     2,     1,     0,     5,     2,     4,     2,
+       2,     5,     5,     5,     5,     5,     5,     5,     5,     1,
+       1,     1,     1,     4,     5,     6,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     0,     5
+};
+
+
+enum { YYENOMEM = -2 };
+
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
+
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
+#define YYNOMEM         goto yyexhaustedlab
+
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
+
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
+static void
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
+{
+  FILE *yyoutput = yyo;
+  YY_USE (yyoutput);
+  if (!yyvaluep)
+    return;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YY_USE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
+}
+
+
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
+
+static void
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
+{
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
+
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+static void
+yy_stack_print (yy_state_t *yybottom, yy_state_t *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 (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+static void
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
+{
+  int yylno = yyrline[yyrule];
+  int yynrhs = yyr2[yyrule];
+  int yyi;
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
+      YYFPRINTF (stderr, "\n");
+    }
+}
+
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, 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
+
+
+/* Context of a parse error.  */
+typedef struct
+{
+  yy_state_t *yyssp;
+  yysymbol_kind_t yytoken;
+} yypcontext_t;
+
+/* Put in YYARG at most YYARGN of the expected tokens given the
+   current YYCTX, and return the number of tokens stored in YYARG.  If
+   YYARG is null, return the number of expected tokens (guaranteed to
+   be less than YYNTOKENS).  Return YYENOMEM on memory exhaustion.
+   Return 0 if there are more than YYARGN expected tokens, yet fill
+   YYARG up to YYARGN. */
+static int
+yypcontext_expected_tokens (const yypcontext_t *yyctx,
+                            yysymbol_kind_t yyarg[], int yyargn)
+{
+  /* Actual size of YYARG. */
+  int yycount = 0;
+  int yyn = yypact[+*yyctx->yyssp];
+  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 != YYSYMBOL_YYerror
+            && !yytable_value_is_error (yytable[yyx + yyn]))
+          {
+            if (!yyarg)
+              ++yycount;
+            else if (yycount == yyargn)
+              return 0;
+            else
+              yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
+          }
+    }
+  if (yyarg && yycount == 0 && 0 < yyargn)
+    yyarg[0] = YYSYMBOL_YYEMPTY;
+  return yycount;
+}
+
+
+
+
+#ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+#  define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
+# else
+/* Return the length of YYSTR.  */
+static YYPTRDIFF_T
+yystrlen (const char *yystr)
+{
+  YYPTRDIFF_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.  */
+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 YYPTRDIFF_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      YYPTRDIFF_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;
+            else
+              goto append;
+
+          append:
+          default:
+            if (yyres)
+              yyres[yyn] = *yyp;
+            yyn++;
+            break;
+
+          case '"':
+            if (yyres)
+              yyres[yyn] = '\0';
+            return yyn;
+          }
+    do_not_strip_quotes: ;
+    }
+
+  if (yyres)
+    return yystpcpy (yyres, yystr) - yyres;
+  else
+    return yystrlen (yystr);
+}
+#endif
+
+
+static int
+yy_syntax_error_arguments (const yypcontext_t *yyctx,
+                           yysymbol_kind_t yyarg[], int yyargn)
+{
+  /* Actual size of YYARG. */
+  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 (yyctx->yytoken != YYSYMBOL_YYEMPTY)
+    {
+      int yyn;
+      if (yyarg)
+        yyarg[yycount] = yyctx->yytoken;
+      ++yycount;
+      yyn = yypcontext_expected_tokens (yyctx,
+                                        yyarg ? yyarg + 1 : yyarg, yyargn - 1);
+      if (yyn == YYENOMEM)
+        return YYENOMEM;
+      else
+        yycount += yyn;
+    }
+  return yycount;
+}
+
+/* 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 YYENOMEM if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+                const yypcontext_t *yyctx)
+{
+  enum { YYARGS_MAX = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = YY_NULLPTR;
+  /* Arguments of yyformat: reported tokens (one for the "unexpected",
+     one per "expected"). */
+  yysymbol_kind_t yyarg[YYARGS_MAX];
+  /* Cumulated lengths of YYARG.  */
+  YYPTRDIFF_T yysize = 0;
+
+  /* Actual size of YYARG. */
+  int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
+  if (yycount == YYENOMEM)
+    return YYENOMEM;
+
+  switch (yycount)
+    {
+#define YYCASE_(N, S)                       \
+      case N:                               \
+        yyformat = S;                       \
+        break
+    default: /* Avoid compiler warnings. */
+      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_
+    }
+
+  /* Compute error message size.  Don't count the "%s"s, but reserve
+     room for the terminator.  */
+  yysize = yystrlen (yyformat) - 2 * yycount + 1;
+  {
+    int yyi;
+    for (yyi = 0; yyi < yycount; ++yyi)
+      {
+        YYPTRDIFF_T yysize1
+          = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
+        if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+          yysize = yysize1;
+        else
+          return YYENOMEM;
+      }
+  }
+
+  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, yytname[yyarg[yyi++]]);
+          yyformat += 2;
+        }
+      else
+        {
+          ++yyp;
+          ++yyformat;
+        }
+  }
+  return 0;
+}
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+static void
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
+{
+  YY_USE (yyvaluep);
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
+
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YY_USE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
+}
+
+
+/* Lookahead token kind.  */
+int yychar;
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval;
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+int
+yyparse (void)
+{
+    yy_state_fast_t yystate = 0;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus = 0;
+
+    /* Refer to the stacks through separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
+
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize = YYINITDEPTH;
+
+    /* The state stack: array, bottom, top.  */
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss = yyssa;
+    yy_state_t *yyssp = yyss;
+
+    /* The semantic value stack: array, bottom, top.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs = yyvsa;
+    YYSTYPE *yyvsp = yyvs;
+
+  int yyn;
+  /* The return value of yyparse.  */
+  int yyresult;
+  /* Lookahead symbol kind.  */
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
+
+#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;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  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 -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
+
+  if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    YYNOMEM;
+#else
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
+
+# if defined 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.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* 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 * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
+      }
+# else /* defined YYSTACK_RELOCATE */
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+        YYNOMEM;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+        yystacksize = YYMAXDEPTH;
+
+      {
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          YYNOMEM;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+#  undef YYSTACK_RELOCATE
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
+      }
+# endif
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
+
+      if (yyss + yystacksize - 1 <= yyssp)
+        YYABORT;
+    }
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
+
+
+  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 empty, or end-of-input, or a valid lookahead.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
+  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);
+  yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
+
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
+  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: /* glyph: UNSIGNED REFERENCE  */
+#line 306 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                        {(yyval.c).c= (yyvsp[-1].u);REF(font_kind,(yyvsp[0].u));(yyval.c).f= (yyvsp[0].u);}
+#line 2236 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 3: /* content_node: start "glyph" glyph ">"  */
+#line 307 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                  {hput_tags((yyvsp[-3].u),hput_glyph(&((yyvsp[-1].c))));}
+#line 2242 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 4: /* start: "<"  */
+#line 308 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+           {HPUTNODE;(yyval.u)= (uint32_t)(hpos++-hstart);}
+#line 2248 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 6: /* integer: UNSIGNED  */
+#line 311 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {RNG("number",(yyvsp[0].u),0,INT32_MAX);}
+#line 2254 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 7: /* glyph: CHARCODE REFERENCE  */
+#line 314 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                        {(yyval.c).c= (yyvsp[-1].u);REF(font_kind,(yyvsp[0].u));(yyval.c).f= (yyvsp[0].u);}
+#line 2260 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 9: /* string: CHARCODE  */
+#line 317 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {static char s[2];
+RNG("String element",(yyvsp[0].u),0x20,0x7E);
+s[0]= (yyvsp[0].u);s[1]= 0;(yyval.s)= s;}
+#line 2268 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 10: /* number: UNSIGNED  */
+#line 322 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {(yyval.f)= (float64_t)(yyvsp[0].u);}
+#line 2274 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 11: /* number: SIGNED  */
+#line 322 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                          {(yyval.f)= (float64_t)(yyvsp[0].i);}
+#line 2280 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 13: /* dimension: number "pt"  */
+#line 325 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {(yyval.d)= ROUND((yyvsp[-1].f)*ONE);RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
+#line 2286 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 14: /* dimension: number "in"  */
+#line 326 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+            {(yyval.d)= ROUND((yyvsp[-1].f)*ONE*72.27);RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
+#line 2292 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 15: /* dimension: number "mm"  */
+#line 327 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+          {(yyval.d)= ROUND((yyvsp[-1].f)*ONE*(72.27/25.4));RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
+#line 2298 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 16: /* xdimen: dimension number "h" number "v"  */
+#line 330 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                  {(yyval.xd).w= (yyvsp[-4].d);(yyval.xd).h= (yyvsp[-3].f);(yyval.xd).v= (yyvsp[-1].f);}
+#line 2304 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 17: /* xdimen: dimension number "h"  */
+#line 331 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {(yyval.xd).w= (yyvsp[-2].d);(yyval.xd).h= (yyvsp[-1].f);(yyval.xd).v= 0.0;}
+#line 2310 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 18: /* xdimen: dimension number "v"  */
+#line 332 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {(yyval.xd).w= (yyvsp[-2].d);(yyval.xd).h= 0.0;(yyval.xd).v= (yyvsp[-1].f);}
+#line 2316 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 19: /* xdimen: dimension  */
+#line 333 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+          {(yyval.xd).w= (yyvsp[0].d);(yyval.xd).h= 0.0;(yyval.xd).v= 0.0;}
+#line 2322 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 20: /* xdimen_node: start "xdimen" xdimen ">"  */
+#line 337 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                   {hput_tags((yyvsp[-3].u),hput_xdimen(&((yyvsp[-1].xd))));}
+#line 2328 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 21: /* order: "pt"  */
+#line 341 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+        {(yyval.o)= normal_o;}
+#line 2334 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 22: /* order: "fil"  */
+#line 341 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                           {(yyval.o)= fil_o;}
+#line 2340 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 23: /* order: "fill"  */
+#line 341 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                            {(yyval.o)= fill_o;}
+#line 2346 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 24: /* order: "filll"  */
+#line 341 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                               {(yyval.o)= filll_o;}
+#line 2352 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 25: /* stretch: number order  */
+#line 343 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                    {(yyval.st).f= (yyvsp[-1].f);(yyval.st).o= (yyvsp[0].o);}
+#line 2358 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 26: /* penalty: integer  */
+#line 346 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {RNG("Penalty",(yyvsp[0].i),-20000,+20000);(yyval.i)= (yyvsp[0].i);}
+#line 2364 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 27: /* content_node: start "penalty" penalty ">"  */
+#line 347 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                      {hput_tags((yyvsp[-3].u),hput_int((yyvsp[-1].i)));}
+#line 2370 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 29: /* rule_dimension: "|"  */
+#line 350 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {(yyval.d)= RUNNING_DIMEN;}
+#line 2376 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 30: /* rule: rule_dimension rule_dimension rule_dimension  */
+#line 352 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{(yyval.r).h= (yyvsp[-2].d);(yyval.r).d= (yyvsp[-1].d);(yyval.r).w= (yyvsp[0].d);
+if((yyvsp[0].d)==RUNNING_DIMEN&&((yyvsp[-2].d)==RUNNING_DIMEN||(yyvsp[-1].d)==RUNNING_DIMEN))
+QUIT("Incompatible running dimensions 0x%x 0x%x 0x%x",(yyvsp[-2].d),(yyvsp[-1].d),(yyvsp[0].d));}
+#line 2384 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 31: /* rule_node: start "rule" rule ">"  */
+#line 355 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                             {hput_tags((yyvsp[-3].u),hput_rule(&((yyvsp[-1].r))));}
+#line 2390 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 33: /* explicit: %empty  */
+#line 359 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+         {(yyval.b)= false;}
+#line 2396 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 34: /* explicit: "!"  */
+#line 359 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {(yyval.b)= true;}
+#line 2402 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 35: /* kern: explicit xdimen  */
+#line 360 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                    {(yyval.kt).x= (yyvsp[-1].b);(yyval.kt).d= (yyvsp[0].xd);}
+#line 2408 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 36: /* content_node: start "kern" kern ">"  */
+#line 361 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {hput_tags((yyvsp[-3].u),hput_kern(&((yyvsp[-1].kt))));}
+#line 2414 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 37: /* plus: %empty  */
+#line 364 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+     {(yyval.st).f= 0.0;(yyval.st).o= 0;}
+#line 2420 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 38: /* plus: "plus" stretch  */
+#line 364 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                      {(yyval.st)= (yyvsp[0].st);}
+#line 2426 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 39: /* minus: %empty  */
+#line 365 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+      {(yyval.st).f= 0.0;(yyval.st).o= 0;}
+#line 2432 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 40: /* minus: "minus" stretch  */
+#line 365 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                        {(yyval.st)= (yyvsp[0].st);}
+#line 2438 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 41: /* glue: xdimen plus minus  */
+#line 366 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {(yyval.g).w= (yyvsp[-2].xd);(yyval.g).p= (yyvsp[-1].st);(yyval.g).m= (yyvsp[0].st);}
+#line 2444 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 42: /* content_node: start "glue" glue ">"  */
+#line 367 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {if(ZERO_GLUE((yyvsp[-1].g))){HPUT8(zero_skip_no);
+hput_tags((yyvsp[-3].u),TAG(glue_kind,0));}else hput_tags((yyvsp[-3].u),hput_glue(&((yyvsp[-1].g))));}
+#line 2451 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 43: /* glue_node: start "glue" glue ">"  */
+#line 370 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{if(ZERO_GLUE((yyvsp[-1].g))){hpos--;(yyval.b)= false;}
+else{hput_tags((yyvsp[-3].u),hput_glue(&((yyvsp[-1].g))));(yyval.b)= true;}}
+#line 2458 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 44: /* position: %empty  */
+#line 374 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+         {(yyval.u)= hpos-hstart;}
+#line 2464 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 47: /* estimate: %empty  */
+#line 377 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+         {hpos+= 2;}
+#line 2470 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 48: /* estimate: UNSIGNED  */
+#line 378 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+         {hpos+= hsize_bytes((yyvsp[0].u))+1;}
+#line 2476 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 49: /* list: start estimate content_list ">"  */
+#line 380 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{(yyval.l).k= list_kind;(yyval.l).p= (yyvsp[-1].u);(yyval.l).s= (hpos-hstart)-(yyvsp[-1].u);
+hput_tags((yyvsp[-3].u),hput_list((yyvsp[-3].u)+1,&((yyval.l))));}
+#line 2483 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 50: /* $@1: %empty  */
+#line 385 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{hpos+= 4;}
+#line 2489 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 51: /* list: TXT_START position $@1 text TXT_END  */
+#line 387 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{(yyval.l).k= text_kind;(yyval.l).p= (yyvsp[-1].u);(yyval.l).s= (hpos-hstart)-(yyvsp[-1].u);
+hput_tags((yyvsp[-3].u),hput_list((yyvsp[-3].u)+1,&((yyval.l))));}
+#line 2496 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 54: /* txt: TXT_CC  */
+#line 391 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+          {hput_txt_cc((yyvsp[0].u));}
+#line 2502 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 55: /* txt: TXT_FONT  */
+#line 392 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+         {REF(font_kind,(yyvsp[0].u));hput_txt_font((yyvsp[0].u));}
+#line 2508 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 56: /* txt: TXT_GLOBAL  */
+#line 393 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+           {REF((yyvsp[0].rf).k,(yyvsp[0].rf).n);hput_txt_global(&((yyvsp[0].rf)));}
+#line 2514 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 57: /* txt: TXT_LOCAL  */
+#line 394 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+          {RNG("Font parameter",(yyvsp[0].u),0,11);hput_txt_local((yyvsp[0].u));}
+#line 2520 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 58: /* txt: TXT_FONT_GLUE  */
+#line 395 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {HPUTX(1);HPUT8(txt_glue);}
+#line 2526 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 59: /* txt: TXT_FONT_HYPHEN  */
+#line 396 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                {HPUTX(1);HPUT8(txt_hyphen);}
+#line 2532 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 60: /* txt: TXT_IGNORE  */
+#line 397 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+           {HPUTX(1);HPUT8(txt_ignore);}
+#line 2538 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 61: /* $@2: %empty  */
+#line 398 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+ {HPUTX(1);HPUT8(txt_node);}
+#line 2544 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 63: /* box_dimen: dimension dimension dimension  */
+#line 403 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{(yyval.info)= hput_box_dimen((yyvsp[-2].d),(yyvsp[-1].d),(yyvsp[0].d));}
+#line 2550 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 64: /* box_shift: %empty  */
+#line 404 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+          {(yyval.info)= b000;}
+#line 2556 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 65: /* box_shift: "shifted" dimension  */
+#line 405 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                  {(yyval.info)= hput_box_shift((yyvsp[0].d));}
+#line 2562 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 66: /* box_glue_set: %empty  */
+#line 407 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+             {(yyval.info)= b000;}
+#line 2568 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 67: /* box_glue_set: "plus" stretch  */
+#line 408 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+             {(yyval.info)= hput_box_glue_set(+1,(yyvsp[0].st).f,(yyvsp[0].st).o);}
+#line 2574 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 68: /* box_glue_set: "minus" stretch  */
+#line 409 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {(yyval.info)= hput_box_glue_set(-1,(yyvsp[0].st).f,(yyvsp[0].st).o);}
+#line 2580 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 69: /* box: box_dimen box_shift box_glue_set list  */
+#line 412 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                         {(yyval.info)= (yyvsp[-3].info)|(yyvsp[-2].info)|(yyvsp[-1].info);}
+#line 2586 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 70: /* hbox_node: start "hbox" box ">"  */
+#line 414 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                            {hput_tags((yyvsp[-3].u),TAG(hbox_kind,(yyvsp[-1].info)));}
+#line 2592 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 71: /* vbox_node: start "vbox" box ">"  */
+#line 415 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                            {hput_tags((yyvsp[-3].u),TAG(vbox_kind,(yyvsp[-1].info)));}
+#line 2598 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 74: /* box_flex: plus minus  */
+#line 419 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {hput_stretch(&((yyvsp[-1].st)));hput_stretch(&((yyvsp[0].st)));}
+#line 2604 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 75: /* xbox: box_dimen box_shift box_flex xdimen_ref list  */
+#line 420 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                 {(yyval.info)= (yyvsp[-4].info)|(yyvsp[-3].info);}
+#line 2610 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 76: /* xbox: box_dimen box_shift box_flex xdimen_node list  */
+#line 421 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                              {(yyval.info)= (yyvsp[-4].info)|(yyvsp[-3].info)|b100;}
+#line 2616 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 77: /* box_goal: "to" xdimen_ref  */
+#line 423 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {(yyval.info)= b000;}
+#line 2622 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 78: /* box_goal: "add" xdimen_ref  */
+#line 424 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {(yyval.info)= b001;}
+#line 2628 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 79: /* box_goal: "to" xdimen_node  */
+#line 425 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {(yyval.info)= b100;}
+#line 2634 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 80: /* box_goal: "add" xdimen_node  */
+#line 426 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                {(yyval.info)= b101;}
+#line 2640 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 81: /* hpack: box_shift box_goal list  */
+#line 428 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                             {(yyval.info)= (yyvsp[-1].info);}
+#line 2646 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 82: /* $@3: %empty  */
+#line 429 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                   {HPUT32((yyvsp[0].d));}
+#line 2652 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 83: /* vpack: box_shift "max" "depth" dimension $@3 box_goal list  */
+#line 429 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                             {(yyval.info)= (yyvsp[-6].info)|(yyvsp[-1].info);}
+#line 2658 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 84: /* vxbox_node: start "vset" xbox ">"  */
+#line 431 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {hput_tags((yyvsp[-3].u),TAG(vset_kind,(yyvsp[-1].info)));}
+#line 2664 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 85: /* vxbox_node: start "vpack" vpack ">"  */
+#line 432 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {hput_tags((yyvsp[-3].u),TAG(vpack_kind,(yyvsp[-1].info)));}
+#line 2670 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 86: /* hxbox_node: start "hset" xbox ">"  */
+#line 435 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {hput_tags((yyvsp[-3].u),TAG(hset_kind,(yyvsp[-1].info)));}
+#line 2676 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 87: /* hxbox_node: start "hpack" hpack ">"  */
+#line 436 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {hput_tags((yyvsp[-3].u),TAG(hpack_kind,(yyvsp[-1].info)));}
+#line 2682 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 90: /* ltype: %empty  */
+#line 441 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+      {(yyval.info)= 1;}
+#line 2688 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 91: /* ltype: "align"  */
+#line 441 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                    {(yyval.info)= 1;}
+#line 2694 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 92: /* ltype: "center"  */
+#line 441 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                   {(yyval.info)= 2;}
+#line 2700 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 93: /* ltype: "expand"  */
+#line 441 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                  {(yyval.info)= 3;}
+#line 2706 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 94: /* leaders: glue_node ltype rule_node  */
+#line 442 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                 {if((yyvsp[-2].b))(yyval.info)= (yyvsp[-1].info)|b100;else (yyval.info)= (yyvsp[-1].info);}
+#line 2712 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 95: /* leaders: glue_node ltype hbox_node  */
+#line 443 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                          {if((yyvsp[-2].b))(yyval.info)= (yyvsp[-1].info)|b100;else (yyval.info)= (yyvsp[-1].info);}
+#line 2718 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 96: /* leaders: glue_node ltype vbox_node  */
+#line 444 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                          {if((yyvsp[-2].b))(yyval.info)= (yyvsp[-1].info)|b100;else (yyval.info)= (yyvsp[-1].info);}
+#line 2724 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 97: /* content_node: start "leaders" leaders ">"  */
+#line 445 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                      {hput_tags((yyvsp[-3].u),TAG(leaders_kind,(yyvsp[-1].info)));}
+#line 2730 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 98: /* $@4: %empty  */
+#line 448 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                  {if((yyvsp[0].d)!=0)HPUT32((yyvsp[0].d));}
+#line 2736 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 99: /* baseline: dimension $@4 glue_node glue_node  */
+#line 449 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {(yyval.info)= b000;if((yyvsp[-3].d)!=0)(yyval.info)|= b001;
+if((yyvsp[-1].b))(yyval.info)|= b100;
+if((yyvsp[0].b))(yyval.info)|= b010;
+}
+#line 2745 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 100: /* content_node: start "baseline" baseline ">"  */
+#line 454 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{if((yyvsp[-1].info)==b000)HPUT8(0);hput_tags((yyvsp[-3].u),TAG(baseline_kind,(yyvsp[-1].info)));}
+#line 2751 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 102: /* cc_list: cc_list TXT_CC  */
+#line 457 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {hput_utf8((yyvsp[0].u));}
+#line 2757 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 103: /* lig_cc: UNSIGNED  */
+#line 458 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {RNG("UTF-8 code",(yyvsp[0].u),0,0x1FFFFF);(yyval.u)= hpos-hstart;hput_utf8((yyvsp[0].u));}
+#line 2763 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 104: /* lig_cc: CHARCODE  */
+#line 459 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {(yyval.u)= hpos-hstart;hput_utf8((yyvsp[0].u));}
+#line 2769 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 105: /* ref: REFERENCE  */
+#line 460 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+             {HPUT8((yyvsp[0].u));(yyval.u)= (yyvsp[0].u);}
+#line 2775 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 106: /* $@5: %empty  */
+#line 461 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+            {REF(font_kind,(yyvsp[0].u));}
+#line 2781 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 107: /* ligature: ref $@5 lig_cc TXT_START cc_list TXT_END  */
+#line 462 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{(yyval.lg).f= (yyvsp[-5].u);(yyval.lg).l.p= (yyvsp[-3].u);(yyval.lg).l.s= (hpos-hstart)-(yyvsp[-3].u);
+RNG("Ligature size",(yyval.lg).l.s,0,255);}
+#line 2788 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 108: /* content_node: start "ligature" ligature ">"  */
+#line 464 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                        {hput_tags((yyvsp[-3].u),hput_ligature(&((yyvsp[-1].lg))));}
+#line 2794 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 109: /* replace_count: explicit  */
+#line 467 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {if((yyvsp[0].b)){(yyval.u)= 0x80;HPUT8(0x80);}else (yyval.u)= 0x00;}
+#line 2800 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 110: /* replace_count: explicit UNSIGNED  */
+#line 468 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                  {RNG("Replace count",(yyvsp[0].u),0,31);
+(yyval.u)= ((yyvsp[0].u))|(((yyvsp[-1].b))?0x80:0x00);if((yyval.u)!=0)HPUT8((yyval.u));}
+#line 2807 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 111: /* disc: replace_count list list  */
+#line 470 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                            {(yyval.dc).r= (yyvsp[-2].u);(yyval.dc).p= (yyvsp[-1].l);(yyval.dc).q= (yyvsp[0].l);
+if((yyvsp[0].l).s==0){hpos= hpos-2;if((yyvsp[-1].l).s==0)hpos= hpos-2;}}
+#line 2814 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 112: /* disc: replace_count list  */
+#line 472 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {(yyval.dc).r= (yyvsp[-1].u);(yyval.dc).p= (yyvsp[0].l);if((yyvsp[0].l).s==0)hpos= hpos-2;(yyval.dc).q.s= 0;}
+#line 2820 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 113: /* disc: replace_count  */
+#line 473 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {(yyval.dc).r= (yyvsp[0].u);(yyval.dc).p.s= 0;(yyval.dc).q.s= 0;}
+#line 2826 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 114: /* disc_node: start "disc" disc ">"  */
+#line 477 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{hput_tags((yyvsp[-3].u),hput_disc(&((yyvsp[-1].dc))));}
+#line 2832 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 116: /* par_dimen: xdimen  */
+#line 482 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                {hput_xdimen_node(&((yyvsp[0].xd)));}
+#line 2838 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 117: /* par: xdimen_ref param_ref list  */
+#line 483 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                             {(yyval.info)= b000;}
+#line 2844 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 118: /* par: xdimen_ref empty_param_list non_empty_param_list list  */
+#line 484 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                      {(yyval.info)= b010;}
+#line 2850 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 119: /* par: xdimen_ref empty_param_list list  */
+#line 485 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                 {(yyval.info)= b010;}
+#line 2856 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 120: /* $@6: %empty  */
+#line 486 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                 {hput_xdimen_node(&((yyvsp[-1].xd)));}
+#line 2862 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 121: /* par: xdimen param_ref $@6 list  */
+#line 486 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                               {(yyval.info)= b100;}
+#line 2868 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 122: /* par: par_dimen empty_param_list non_empty_param_list list  */
+#line 487 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                     {(yyval.info)= b110;}
+#line 2874 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 123: /* par: par_dimen empty_param_list list  */
+#line 488 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {(yyval.info)= b110;}
+#line 2880 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 124: /* content_node: start "par" par ">"  */
+#line 490 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {hput_tags((yyvsp[-3].u),TAG(par_kind,(yyvsp[-1].info)));}
+#line 2886 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 125: /* math: param_ref list  */
+#line 493 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {(yyval.info)= b000;}
+#line 2892 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 126: /* math: param_ref list hbox_node  */
+#line 494 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {(yyval.info)= b001;}
+#line 2898 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 127: /* math: param_ref hbox_node list  */
+#line 495 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {(yyval.info)= b010;}
+#line 2904 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 128: /* math: empty_param_list list  */
+#line 496 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {(yyval.info)= b100;}
+#line 2910 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 129: /* math: empty_param_list list hbox_node  */
+#line 497 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {(yyval.info)= b101;}
+#line 2916 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 130: /* math: empty_param_list hbox_node list  */
+#line 498 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {(yyval.info)= b110;}
+#line 2922 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 131: /* math: empty_param_list non_empty_param_list list  */
+#line 499 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                           {(yyval.info)= b100;}
+#line 2928 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 132: /* math: empty_param_list non_empty_param_list list hbox_node  */
+#line 500 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                     {(yyval.info)= b101;}
+#line 2934 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 133: /* math: empty_param_list non_empty_param_list hbox_node list  */
+#line 501 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                     {(yyval.info)= b110;}
+#line 2940 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 134: /* content_node: start "math" math ">"  */
+#line 503 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {hput_tags((yyvsp[-3].u),TAG(math_kind,(yyvsp[-1].info)));}
+#line 2946 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 135: /* on_off: "on"  */
+#line 506 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+         {(yyval.i)= 1;}
+#line 2952 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 136: /* on_off: "off"  */
+#line 506 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                     {(yyval.i)= 0;}
+#line 2958 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 137: /* math: on_off  */
+#line 507 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+           {(yyval.info)= b011|((yyvsp[0].i)<<2);}
+#line 2964 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 138: /* content_node: start "adjust" list ">"  */
+#line 510 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                  {hput_tags((yyvsp[-3].u),TAG(adjust_kind,1));}
+#line 2970 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 139: /* span_count: UNSIGNED  */
+#line 513 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {(yyval.info)= hput_span_count((yyvsp[0].u));}
+#line 2976 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 140: /* content_node: start "item" content_node ">"  */
+#line 514 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                        {hput_tags((yyvsp[-3].u),TAG(item_kind,1));}
+#line 2982 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 141: /* content_node: start "item" span_count content_node ">"  */
+#line 515 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                   {hput_tags((yyvsp[-4].u),TAG(item_kind,(yyvsp[-2].info)));}
+#line 2988 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 142: /* content_node: start "item" list ">"  */
+#line 516 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {hput_tags((yyvsp[-3].u),TAG(item_kind,b000));}
+#line 2994 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 143: /* table: "h" box_goal list list  */
+#line 518 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                          {(yyval.info)= (yyvsp[-2].info);}
+#line 3000 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 144: /* table: "v" box_goal list list  */
+#line 519 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                          {(yyval.info)= (yyvsp[-2].info)|b010;}
+#line 3006 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 145: /* content_node: start "table" table ">"  */
+#line 521 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                  {hput_tags((yyvsp[-3].u),TAG(table_kind,(yyvsp[-1].info)));}
+#line 3012 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 146: /* image_dimen: dimension dimension  */
+#line 524 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                               {(yyval.x).w= (yyvsp[-1].d);(yyval.x).h= (yyvsp[0].d);}
+#line 3018 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 147: /* image_dimen: %empty  */
+#line 524 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                    {(yyval.x).w= (yyval.x).h= 0;}
+#line 3024 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 148: /* image: UNSIGNED image_dimen plus minus  */
+#line 525 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                     {(yyval.x).w= (yyvsp[-2].x).w;(yyval.x).h= (yyvsp[-2].x).h;(yyval.x).p= (yyvsp[-1].st);(yyval.x).m= (yyvsp[0].st);RNG("Section number",(yyvsp[-3].u),3,max_section_no);(yyval.x).n= (yyvsp[-3].u);}
+#line 3030 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 149: /* content_node: start "image" image ">"  */
+#line 526 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                  {hput_tags((yyvsp[-3].u),hput_image(&((yyvsp[-1].x))));}
+#line 3036 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 150: /* max_value: "outline" UNSIGNED  */
+#line 529 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                          {max_outline= (yyvsp[0].u);
+RNG("max outline",max_outline,0,0xFFFF);
+DBG(DBGDEF|DBGLABEL,"Setting max outline to %d\n",max_outline);
+}
+#line 3045 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 151: /* placement: "top"  */
+#line 535 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+             {(yyval.i)= LABEL_TOP;}
+#line 3051 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 152: /* placement: "bot"  */
+#line 535 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                 {(yyval.i)= LABEL_BOT;}
+#line 3057 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 153: /* placement: "mid"  */
+#line 535 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                     {(yyval.i)= LABEL_MID;}
+#line 3063 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 154: /* placement: %empty  */
+#line 535 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                                      {(yyval.i)= LABEL_MID;}
+#line 3069 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 155: /* content_node: "<" "label" REFERENCE placement ">"  */
+#line 537 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{hset_label((yyvsp[-2].u),(yyvsp[-1].i));}
+#line 3075 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 156: /* content_node: start "link" REFERENCE on_off ">"  */
+#line 541 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{hput_tags((yyvsp[-4].u),hput_link((yyvsp[-2].u),(yyvsp[-1].i)));}
+#line 3081 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 157: /* def_node: "<" "outline" REFERENCE integer position list ">"  */
+#line 544 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                          {
+static int outline_no= -1;
+(yyval.rf).k= outline_kind;(yyval.rf).n= (yyvsp[-4].u);
+if((yyvsp[-1].l).s==0)QUIT("Outline with empty title in line %d",yylineno);
+outline_no++;
+hset_outline(outline_no,(yyvsp[-4].u),(yyvsp[-3].i),(yyvsp[-2].u));
+}
+#line 3093 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 158: /* stream_link: ref  */
+#line 553 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {REF_RNG(stream_kind,(yyvsp[0].u));}
+#line 3099 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 159: /* stream_link: "*"  */
+#line 553 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                     {HPUT8(255);}
+#line 3105 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 160: /* stream_split: stream_link stream_link UNSIGNED  */
+#line 554 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                             {RNG("split ratio",(yyvsp[0].u),0,1000);HPUT16((yyvsp[0].u));}
+#line 3111 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 161: /* $@7: %empty  */
+#line 555 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {RNG("magnification factor",(yyvsp[0].u),0,1000);HPUT16((yyvsp[0].u));}
+#line 3117 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 163: /* stream_type: stream_info  */
+#line 557 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {(yyval.info)= 0;}
+#line 3123 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 164: /* stream_type: "first"  */
+#line 557 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                     {(yyval.info)= 1;}
+#line 3129 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 165: /* stream_type: "last"  */
+#line 557 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                  {(yyval.info)= 2;}
+#line 3135 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 166: /* stream_type: "top"  */
+#line 557 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                              {(yyval.info)= 3;}
+#line 3141 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 167: /* stream_def_node: start "stream (definition)" ref stream_type list xdimen_node glue_node list glue_node ">"  */
+#line 561 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{DEF((yyval.rf),stream_kind,(yyvsp[-7].u));hput_tags((yyvsp[-9].u),TAG(stream_kind,(yyvsp[-6].info)|b100));}
+#line 3147 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 168: /* stream_ins_node: start "stream (definition)" ref ">"  */
+#line 564 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{RNG("Stream insertion",(yyvsp[-1].u),0,max_ref[stream_kind]);hput_tags((yyvsp[-3].u),TAG(stream_kind,b100));}
+#line 3153 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 171: /* stream: empty_param_list list  */
+#line 569 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                            {(yyval.info)= b010;}
+#line 3159 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 172: /* stream: empty_param_list non_empty_param_list list  */
+#line 570 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                           {(yyval.info)= b010;}
+#line 3165 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 173: /* stream: param_ref list  */
+#line 571 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {(yyval.info)= b000;}
+#line 3171 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 174: /* content_node: start "stream" stream_ref stream ">"  */
+#line 573 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{hput_tags((yyvsp[-4].u),TAG(stream_kind,(yyvsp[-1].info)));}
+#line 3177 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 175: /* page_priority: %empty  */
+#line 576 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {HPUT8(1);}
+#line 3183 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 176: /* page_priority: UNSIGNED  */
+#line 577 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+         {RNG("page priority",(yyvsp[0].u),0,255);HPUT8((yyvsp[0].u));}
+#line 3189 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 179: /* $@8: %empty  */
+#line 581 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+           {hput_string((yyvsp[0].s));}
+#line 3195 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 180: /* $@9: %empty  */
+#line 581 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                                              {HPUT32((yyvsp[0].d));}
+#line 3201 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 182: /* content_node: "<" "range" REFERENCE "on" ">"  */
+#line 587 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                         {REF(page_kind,(yyvsp[-2].u));hput_range((yyvsp[-2].u),true);}
+#line 3207 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 183: /* content_node: "<" "range" REFERENCE "off" ">"  */
+#line 588 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {REF(page_kind,(yyvsp[-2].u));hput_range((yyvsp[-2].u),false);}
+#line 3213 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 185: /* $@10: %empty  */
+#line 594 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                          {new_directory((yyvsp[0].u)+1);new_output_buffers();}
+#line 3219 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 189: /* entry: "<" "entry" UNSIGNED string ">"  */
+#line 597 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{RNG("Section number",(yyvsp[-2].u),3,max_section_no);hset_entry(&(dir[(yyvsp[-2].u)]),(yyvsp[-2].u),0,0,(yyvsp[-1].s));}
+#line 3225 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 190: /* $@11: %empty  */
+#line 600 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                    {hput_definitions_start();}
+#line 3231 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 191: /* definition_section: "<" "definitions" $@11 max_definitions definition_list ">"  */
+#line 602 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+   {hput_definitions_end();}
+#line 3237 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 194: /* max_definitions: "<" "max" max_list ">"  */
+#line 607 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{/*245:*/
+
+if(max_ref[label_kind]>=0)
+ALLOCATE(labels,max_ref[label_kind]+1,label_t);
+/*:245*//*266:*/
+
+if(max_outline>=0)
+ALLOCATE(outlines,max_outline+1,outline_t);
+/*:266*//*293:*/
+
+ALLOCATE(page_on,max_ref[page_kind]+1,int);
+ALLOCATE(range_pos,2*(max_ref[range_kind]+1),range_pos_t);
+/*:293*//*357:*/
+
+definition_bits[0][int_kind]= (1<<(MAX_INT_DEFAULT+1))-1;
+definition_bits[0][dimen_kind]= (1<<(MAX_DIMEN_DEFAULT+1))-1;
+definition_bits[0][xdimen_kind]= (1<<(MAX_XDIMEN_DEFAULT+1))-1;
+definition_bits[0][glue_kind]= (1<<(MAX_GLUE_DEFAULT+1))-1;
+definition_bits[0][baseline_kind]= (1<<(MAX_BASELINE_DEFAULT+1))-1;
+definition_bits[0][page_kind]= (1<<(MAX_PAGE_DEFAULT+1))-1;
+definition_bits[0][stream_kind]= (1<<(MAX_STREAM_DEFAULT+1))-1;
+definition_bits[0][range_kind]= (1<<(MAX_RANGE_DEFAULT+1))-1;
+/*:357*//*372:*/
+
+ALLOCATE(hfont_name,max_ref[font_kind]+1,char*);
+/*:372*/
+hput_max_definitions();}
+#line 3269 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 197: /* max_value: "font" UNSIGNED  */
+#line 637 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {hset_max(font_kind,(yyvsp[0].u));}
+#line 3275 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 198: /* max_value: "int" UNSIGNED  */
+#line 638 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                 {hset_max(int_kind,(yyvsp[0].u));}
+#line 3281 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 199: /* max_value: "dimen" UNSIGNED  */
+#line 639 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {hset_max(dimen_kind,(yyvsp[0].u));}
+#line 3287 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 200: /* max_value: "ligature" UNSIGNED  */
+#line 640 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                  {hset_max(ligature_kind,(yyvsp[0].u));}
+#line 3293 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 201: /* max_value: "disc" UNSIGNED  */
+#line 641 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {hset_max(disc_kind,(yyvsp[0].u));}
+#line 3299 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 202: /* max_value: "glue" UNSIGNED  */
+#line 642 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {hset_max(glue_kind,(yyvsp[0].u));}
+#line 3305 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 203: /* max_value: "language" UNSIGNED  */
+#line 643 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                  {hset_max(language_kind,(yyvsp[0].u));}
+#line 3311 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 204: /* max_value: "rule" UNSIGNED  */
+#line 644 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {hset_max(rule_kind,(yyvsp[0].u));}
+#line 3317 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 205: /* max_value: "image" UNSIGNED  */
+#line 645 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {hset_max(image_kind,(yyvsp[0].u));}
+#line 3323 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 206: /* max_value: "leaders" UNSIGNED  */
+#line 646 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                 {hset_max(leaders_kind,(yyvsp[0].u));}
+#line 3329 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 207: /* max_value: "baseline" UNSIGNED  */
+#line 647 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                  {hset_max(baseline_kind,(yyvsp[0].u));}
+#line 3335 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 208: /* max_value: "xdimen" UNSIGNED  */
+#line 648 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                {hset_max(xdimen_kind,(yyvsp[0].u));}
+#line 3341 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 209: /* max_value: "param" UNSIGNED  */
+#line 649 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {hset_max(param_kind,(yyvsp[0].u));}
+#line 3347 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 210: /* max_value: "stream (definition)" UNSIGNED  */
+#line 650 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {hset_max(stream_kind,(yyvsp[0].u));}
+#line 3353 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 211: /* max_value: "page" UNSIGNED  */
+#line 651 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {hset_max(page_kind,(yyvsp[0].u));}
+#line 3359 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 212: /* max_value: "range" UNSIGNED  */
+#line 652 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {hset_max(range_kind,(yyvsp[0].u));}
+#line 3365 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 213: /* max_value: "label" UNSIGNED  */
+#line 653 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+               {hset_max(label_kind,(yyvsp[0].u));}
+#line 3371 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 214: /* def_node: start "font" ref font ">"  */
+#line 658 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {DEF((yyval.rf),font_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),(yyvsp[-1].info));}
+#line 3377 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 215: /* def_node: start "int" ref integer ">"  */
+#line 659 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {DEF((yyval.rf),int_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_int((yyvsp[-1].i)));}
+#line 3383 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 216: /* def_node: start "dimen" ref dimension ">"  */
+#line 660 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {DEF((yyval.rf),dimen_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_dimen((yyvsp[-1].d)));}
+#line 3389 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 217: /* def_node: start "language" ref string ">"  */
+#line 661 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {DEF((yyval.rf),language_kind,(yyvsp[-2].u));hput_string((yyvsp[-1].s));hput_tags((yyvsp[-4].u),TAG(language_kind,0));}
+#line 3395 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 218: /* def_node: start "glue" ref glue ">"  */
+#line 662 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                        {DEF((yyval.rf),glue_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_glue(&((yyvsp[-1].g))));}
+#line 3401 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 219: /* def_node: start "xdimen" ref xdimen ">"  */
+#line 663 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                            {DEF((yyval.rf),xdimen_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_xdimen(&((yyvsp[-1].xd))));}
+#line 3407 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 220: /* def_node: start "rule" ref rule ">"  */
+#line 664 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                        {DEF((yyval.rf),rule_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_rule(&((yyvsp[-1].r))));}
+#line 3413 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 221: /* def_node: start "leaders" ref leaders ">"  */
+#line 665 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {DEF((yyval.rf),leaders_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(leaders_kind,(yyvsp[-1].info)));}
+#line 3419 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 222: /* def_node: start "baseline" ref baseline ">"  */
+#line 666 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {DEF((yyval.rf),baseline_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(baseline_kind,(yyvsp[-1].info)));}
+#line 3425 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 223: /* def_node: start "ligature" ref ligature ">"  */
+#line 667 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {DEF((yyval.rf),ligature_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_ligature(&((yyvsp[-1].lg))));}
+#line 3431 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 224: /* def_node: start "disc" ref disc ">"  */
+#line 668 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                        {DEF((yyval.rf),disc_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_disc(&((yyvsp[-1].dc))));}
+#line 3437 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 225: /* def_node: start "image" ref image ">"  */
+#line 669 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                          {DEF((yyval.rf),image_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_image(&((yyvsp[-1].x))));}
+#line 3443 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 226: /* def_node: start "param" ref parameters ">"  */
+#line 670 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                               {DEF((yyval.rf),param_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_list((yyvsp[-4].u)+2,&((yyvsp[-1].l))));}
+#line 3449 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 227: /* def_node: start "page" ref page ">"  */
+#line 671 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                        {DEF((yyval.rf),page_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(page_kind,0));}
+#line 3455 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 228: /* def_node: start "int" ref ref ">"  */
+#line 675 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {DEF_REF((yyval.rf),int_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(int_kind,0));}
+#line 3461 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 229: /* def_node: start "dimen" ref ref ">"  */
+#line 676 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                        {DEF_REF((yyval.rf),dimen_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(dimen_kind,0));}
+#line 3467 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 230: /* def_node: start "glue" ref ref ">"  */
+#line 677 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {DEF_REF((yyval.rf),glue_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(glue_kind,0));}
+#line 3473 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 232: /* def_list: def_list def_node  */
+#line 681 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                  {check_param_def(&((yyvsp[0].rf)));}
+#line 3479 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 233: /* parameters: estimate def_list  */
+#line 682 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                            {(yyval.l).p= (yyvsp[0].u);(yyval.l).k= param_kind;(yyval.l).s= (hpos-hstart)-(yyvsp[0].u);}
+#line 3485 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 234: /* empty_param_list: position  */
+#line 685 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {HPUTX(2);hpos++;hput_tags((yyvsp[0].u),TAG(param_kind,1));}
+#line 3491 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 235: /* $@12: %empty  */
+#line 686 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                {hpos= hpos-2;}
+#line 3497 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 236: /* non_empty_param_list: start "param" $@12 parameters ">"  */
+#line 687 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{hput_tags((yyvsp[-4].u)-2,hput_list((yyvsp[-4].u)-1,&((yyvsp[-1].l))));}
+#line 3503 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 238: /* font_head: string dimension UNSIGNED UNSIGNED  */
+#line 694 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{uint8_t f= (yyvsp[-4].u);SET_DBIT(f,font_kind);hfont_name[f]= strdup((yyvsp[-3].s));(yyval.info)= hput_font_head(f,hfont_name[f],(yyvsp[-2].d),(yyvsp[-1].u),(yyvsp[0].u));}
+#line 3509 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 241: /* font_param: start "penalty" fref penalty ">"  */
+#line 699 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                              {hput_tags((yyvsp[-4].u),hput_int((yyvsp[-1].i)));}
+#line 3515 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 242: /* font_param: start "kern" fref kern ">"  */
+#line 700 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {hput_tags((yyvsp[-4].u),hput_kern(&((yyvsp[-1].kt))));}
+#line 3521 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 243: /* font_param: start "ligature" fref ligature ">"  */
+#line 701 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                                 {hput_tags((yyvsp[-4].u),hput_ligature(&((yyvsp[-1].lg))));}
+#line 3527 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 244: /* font_param: start "disc" fref disc ">"  */
+#line 702 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {hput_tags((yyvsp[-4].u),hput_disc(&((yyvsp[-1].dc))));}
+#line 3533 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 245: /* font_param: start "glue" fref glue ">"  */
+#line 703 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {hput_tags((yyvsp[-4].u),hput_glue(&((yyvsp[-1].g))));}
+#line 3539 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 246: /* font_param: start "language" fref string ">"  */
+#line 704 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                               {hput_string((yyvsp[-1].s));hput_tags((yyvsp[-4].u),TAG(language_kind,0));}
+#line 3545 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 247: /* font_param: start "rule" fref rule ">"  */
+#line 705 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                         {hput_tags((yyvsp[-4].u),hput_rule(&((yyvsp[-1].r))));}
+#line 3551 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 248: /* font_param: start "image" fref image ">"  */
+#line 706 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                           {hput_tags((yyvsp[-4].u),hput_image(&((yyvsp[-1].x))));}
+#line 3557 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 249: /* fref: ref  */
+#line 708 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+        {RNG("Font parameter",(yyvsp[0].u),0,MAX_FONT_PARAMS);}
+#line 3563 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 250: /* xdimen_ref: ref  */
+#line 711 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {REF(xdimen_kind,(yyvsp[0].u));}
+#line 3569 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 251: /* param_ref: ref  */
+#line 712 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+             {REF(param_kind,(yyvsp[0].u));}
+#line 3575 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 252: /* stream_ref: ref  */
+#line 713 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+              {REF_RNG(stream_kind,(yyvsp[0].u));}
+#line 3581 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 253: /* content_node: start "penalty" ref ">"  */
+#line 717 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                     {REF(penalty_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(penalty_kind,0));}
+#line 3587 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 254: /* content_node: start "kern" explicit ref ">"  */
+#line 719 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{REF(dimen_kind,(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(kern_kind,((yyvsp[-2].b))?b100:b000));}
+#line 3593 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 255: /* content_node: start "kern" explicit "xdimen" ref ">"  */
+#line 721 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{REF(xdimen_kind,(yyvsp[-1].u));hput_tags((yyvsp[-5].u),TAG(kern_kind,((yyvsp[-3].b))?b101:b001));}
+#line 3599 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 256: /* content_node: start "glue" ref ">"  */
+#line 722 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {REF(glue_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(glue_kind,0));}
+#line 3605 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 257: /* content_node: start "ligature" ref ">"  */
+#line 723 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {REF(ligature_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(ligature_kind,0));}
+#line 3611 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 258: /* content_node: start "disc" ref ">"  */
+#line 724 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {REF(disc_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(disc_kind,0));}
+#line 3617 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 259: /* content_node: start "rule" ref ">"  */
+#line 725 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                   {REF(rule_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(rule_kind,0));}
+#line 3623 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 260: /* content_node: start "image" ref ">"  */
+#line 726 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                    {REF(image_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(image_kind,0));}
+#line 3629 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 261: /* content_node: start "leaders" ref ">"  */
+#line 727 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                      {REF(leaders_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(leaders_kind,0));}
+#line 3635 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 262: /* content_node: start "baseline" ref ">"  */
+#line 728 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                       {REF(baseline_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(baseline_kind,0));}
+#line 3641 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 263: /* content_node: start "language" REFERENCE ">"  */
+#line 729 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                             {REF(language_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),hput_language((yyvsp[-1].u)));}
+#line 3647 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 264: /* glue_node: start "glue" ref ">"  */
+#line 731 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                            {REF(glue_kind,(yyvsp[-1].u));
+if((yyvsp[-1].u)==zero_skip_no){hpos= hpos-2;(yyval.b)= false;}
+else{hput_tags((yyvsp[-3].u),TAG(glue_kind,0));(yyval.b)= true;}}
+#line 3655 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 265: /* $@13: %empty  */
+#line 737 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+                             {hput_content_start();}
+#line 3661 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+  case 266: /* content_section: "<" "content" $@13 content_list ">"  */
+#line 738 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+{hput_content_end();hput_range_defs();hput_label_defs();}
+#line 3667 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+    break;
+
+
+#line 3671 "../../../texk/web2c/hitexdir/hishrink-parser.c"
+
+      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 ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
+
+  YYPOPSTACK (yylen);
+  yylen = 0;
+
+  *++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.  */
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
+
+  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 ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+      {
+        yypcontext_t yyctx
+          = {yyssp, yytoken};
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status;
+        yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == -1)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = YY_CAST (char *,
+                             YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
+            if (yymsg)
+              {
+                yysyntax_error_status
+                  = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
+                yymsgp = yymsg;
+              }
+            else
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = YYENOMEM;
+              }
+          }
+        yyerror (yymsgp);
+        if (yysyntax_error_status == YYENOMEM)
+          YYNOMEM;
+      }
+    }
+
+  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);
+          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 when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
+  ++yynerrs;
+
+  /* Do not reclaim the symbols of the rule whose 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.  */
+
+  /* Pop stack until we find a state that shifts the error token.  */
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              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",
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
+      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", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturnlab;
+
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturnlab;
+
+
+/*-----------------------------------------------------------.
+| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
+`-----------------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  goto yyreturnlab;
+
+
+/*----------------------------------------------------------.
+| yyreturnlab -- parsing is finished, clean up and return.  |
+`----------------------------------------------------------*/
+yyreturnlab:
+  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);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
+     this YYABORT or YYACCEPT.  */
+  YYPOPSTACK (yylen);
+  YY_STACK_PRINT (yyss, yyssp);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
+      YYPOPSTACK (1);
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  if (yymsg != yymsgbuf)
+    YYSTACK_FREE (yymsg);
+  return yyresult;
+}
+
+#line 741 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+
+/*:510*/

Copied: trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.h (from rev 60634, trunk/Build/source/texk/web2c/hitexdir/parser.h)
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.h	                        (rev 0)
+++ trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.h	2021-09-28 21:45:20 UTC (rev 60644)
@@ -0,0 +1,258 @@
+/* A Bison parser, made by GNU Bison 3.8.2.  */
+
+/* Bison interface for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+   Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   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 <https://www.gnu.org/licenses/>.  */
+
+/* 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.  */
+
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
+#ifndef YY_YY__TEXK_WEB_C_HITEXDIR_HISHRINK_PARSER_H_INCLUDED
+# define YY_YY__TEXK_WEB_C_HITEXDIR_HISHRINK_PARSER_H_INCLUDED
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token kinds.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    START = 258,                   /* "<"  */
+    END = 259,                     /* ">"  */
+    GLYPH = 260,                   /* "glyph"  */
+    UNSIGNED = 261,                /* UNSIGNED  */
+    REFERENCE = 262,               /* REFERENCE  */
+    SIGNED = 263,                  /* SIGNED  */
+    STRING = 264,                  /* STRING  */
+    CHARCODE = 265,                /* CHARCODE  */
+    FPNUM = 266,                   /* FPNUM  */
+    DIMEN = 267,                   /* "dimen"  */
+    PT = 268,                      /* "pt"  */
+    MM = 269,                      /* "mm"  */
+    INCH = 270,                    /* "in"  */
+    XDIMEN = 271,                  /* "xdimen"  */
+    H = 272,                       /* "h"  */
+    V = 273,                       /* "v"  */
+    FIL = 274,                     /* "fil"  */
+    FILL = 275,                    /* "fill"  */
+    FILLL = 276,                   /* "filll"  */
+    PENALTY = 277,                 /* "penalty"  */
+    INTEGER = 278,                 /* "int"  */
+    LANGUAGE = 279,                /* "language"  */
+    RULE = 280,                    /* "rule"  */
+    RUNNING = 281,                 /* "|"  */
+    KERN = 282,                    /* "kern"  */
+    EXPLICIT = 283,                /* "!"  */
+    GLUE = 284,                    /* "glue"  */
+    PLUS = 285,                    /* "plus"  */
+    MINUS = 286,                   /* "minus"  */
+    TXT_START = 287,               /* TXT_START  */
+    TXT_END = 288,                 /* TXT_END  */
+    TXT_IGNORE = 289,              /* TXT_IGNORE  */
+    TXT_FONT_GLUE = 290,           /* TXT_FONT_GLUE  */
+    TXT_FONT_HYPHEN = 291,         /* TXT_FONT_HYPHEN  */
+    TXT_FONT = 292,                /* TXT_FONT  */
+    TXT_LOCAL = 293,               /* TXT_LOCAL  */
+    TXT_GLOBAL = 294,              /* TXT_GLOBAL  */
+    TXT_CC = 295,                  /* TXT_CC  */
+    HBOX = 296,                    /* "hbox"  */
+    VBOX = 297,                    /* "vbox"  */
+    SHIFTED = 298,                 /* "shifted"  */
+    HPACK = 299,                   /* "hpack"  */
+    HSET = 300,                    /* "hset"  */
+    VPACK = 301,                   /* "vpack"  */
+    VSET = 302,                    /* "vset"  */
+    DEPTH = 303,                   /* "depth"  */
+    ADD = 304,                     /* "add"  */
+    TO = 305,                      /* "to"  */
+    LEADERS = 306,                 /* "leaders"  */
+    ALIGN = 307,                   /* "align"  */
+    CENTER = 308,                  /* "center"  */
+    EXPAND = 309,                  /* "expand"  */
+    BASELINE = 310,                /* "baseline"  */
+    LIGATURE = 311,                /* "ligature"  */
+    DISC = 312,                    /* "disc"  */
+    PAR = 313,                     /* "par"  */
+    MATH = 314,                    /* "math"  */
+    ON = 315,                      /* "on"  */
+    OFF = 316,                     /* "off"  */
+    ADJUST = 317,                  /* "adjust"  */
+    TABLE = 318,                   /* "table"  */
+    ITEM = 319,                    /* "item"  */
+    IMAGE = 320,                   /* "image"  */
+    LABEL = 321,                   /* "label"  */
+    BOT = 322,                     /* "bot"  */
+    MID = 323,                     /* "mid"  */
+    LINK = 324,                    /* "link"  */
+    OUTLINE = 325,                 /* "outline"  */
+    STREAM = 326,                  /* "stream"  */
+    STREAMDEF = 327,               /* "stream (definition)"  */
+    FIRST = 328,                   /* "first"  */
+    LAST = 329,                    /* "last"  */
+    TOP = 330,                     /* "top"  */
+    NOREFERENCE = 331,             /* "*"  */
+    PAGE = 332,                    /* "page"  */
+    RANGE = 333,                   /* "range"  */
+    DIRECTORY = 334,               /* "directory"  */
+    SECTION = 335,                 /* "entry"  */
+    DEFINITIONS = 336,             /* "definitions"  */
+    MAX = 337,                     /* "max"  */
+    PARAM = 338,                   /* "param"  */
+    FONT = 339,                    /* "font"  */
+    CONTENT = 340                  /* "content"  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
+#define START 258
+#define END 259
+#define GLYPH 260
+#define UNSIGNED 261
+#define REFERENCE 262
+#define SIGNED 263
+#define STRING 264
+#define CHARCODE 265
+#define FPNUM 266
+#define DIMEN 267
+#define PT 268
+#define MM 269
+#define INCH 270
+#define XDIMEN 271
+#define H 272
+#define V 273
+#define FIL 274
+#define FILL 275
+#define FILLL 276
+#define PENALTY 277
+#define INTEGER 278
+#define LANGUAGE 279
+#define RULE 280
+#define RUNNING 281
+#define KERN 282
+#define EXPLICIT 283
+#define GLUE 284
+#define PLUS 285
+#define MINUS 286
+#define TXT_START 287
+#define TXT_END 288
+#define TXT_IGNORE 289
+#define TXT_FONT_GLUE 290
+#define TXT_FONT_HYPHEN 291
+#define TXT_FONT 292
+#define TXT_LOCAL 293
+#define TXT_GLOBAL 294
+#define TXT_CC 295
+#define HBOX 296
+#define VBOX 297
+#define SHIFTED 298
+#define HPACK 299
+#define HSET 300
+#define VPACK 301
+#define VSET 302
+#define DEPTH 303
+#define ADD 304
+#define TO 305
+#define LEADERS 306
+#define ALIGN 307
+#define CENTER 308
+#define EXPAND 309
+#define BASELINE 310
+#define LIGATURE 311
+#define DISC 312
+#define PAR 313
+#define MATH 314
+#define ON 315
+#define OFF 316
+#define ADJUST 317
+#define TABLE 318
+#define ITEM 319
+#define IMAGE 320
+#define LABEL 321
+#define BOT 322
+#define MID 323
+#define LINK 324
+#define OUTLINE 325
+#define STREAM 326
+#define STREAMDEF 327
+#define FIRST 328
+#define LAST 329
+#define TOP 330
+#define NOREFERENCE 331
+#define PAGE 332
+#define RANGE 333
+#define DIRECTORY 334
+#define SECTION 335
+#define DEFINITIONS 336
+#define MAX 337
+#define PARAM 338
+#define FONT 339
+#define CONTENT 340
+
+/* Value type.  */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+union YYSTYPE
+{
+#line 78 "../../../texk/web2c/hitexdir/hishrink-parser.y"
+uint32_t u;int32_t i;char*s;float64_t f;glyph_t c;
+dimen_t d;stretch_t st;xdimen_t xd;kern_t kt;
+rule_t r;glue_t g;image_t x;
+list_t l;box_t h;disc_t dc;lig_t lg;
+ref_t rf;info_t info;order_t o;bool b;
+
+#line 244 "../../../texk/web2c/hitexdir/hishrink-parser.h"
+
+};
+typedef union YYSTYPE YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE yylval;
+
+
+int yyparse (void);
+
+
+#endif /* !YY_YY__TEXK_WEB_C_HITEXDIR_HISHRINK_PARSER_H_INCLUDED  */

Copied: trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.y (from rev 60634, trunk/Build/source/texk/web2c/hitexdir/parser.y)
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.y	                        (rev 0)
+++ trunk/Build/source/texk/web2c/hitexdir/hishrink-parser.y	2021-09-28 21:45:20 UTC (rev 60644)
@@ -0,0 +1,742 @@
+/*510:*/
+
+%{
+#include "basetypes.h"
+#include <string.h> 
+#include <math.h> 
+#include "error.h"
+#include "hformat.h"
+#include "hput.h"
+extern char**hfont_name;
+
+/*356:*/
+
+uint32_t definition_bits[0x100/32][32]= {{0}};
+
+#define SET_DBIT(N,K) ((N)> 0xFF?1:(definition_bits[N/32][K]|= (1<<((N)&(32-1)))))
+#define GET_DBIT(N,K) ((N)> 0xFF?1:((definition_bits[N/32][K]>>((N)&(32-1)))&1))
+#define DEF(D,K,N) (D).k= K; (D).n= (N);SET_DBIT((D).n,(D).k);\
+ DBG(DBGDEF,"Defining %s %d\n",definition_name[(D).k],(D).n);\
+ RNG("Definition",(D).n,max_fixed[(D).k]+1,max_ref[(D).k]);
+#define REF(K,N) REF_RNG(K,N);if(!GET_DBIT(N,K)) \
+ QUIT("Reference %d to %s before definition",(N),definition_name[K])
+/*:356*//*360:*/
+
+#define DEF_REF(D,K,M,N)  DEF(D,K,M);\
+if ((M)> max_default[K]) QUIT("Defining non default reference %d for %s",M,definition_name[K]); \
+if ((N)> max_fixed[K]) QUIT("Defining reference %d for %s by non fixed reference %d",M,definition_name[K],N);
+/*:360*/
+
+
+extern void hset_entry(entry_t*e,uint16_t i,uint32_t size,
+uint32_t xsize,char*file_name);
+
+/*423:*/
+
+#ifdef DEBUG
+#define  YYDEBUG 1
+extern int yydebug;
+#else
+#define YYDEBUG 0
+#endif
+/*:423*/
+
+extern int yylex(void);
+
+/*352:*/
+
+void hset_max(kind_t k,int n)
+{DBG(DBGDEF,"Setting max %s to %d\n",definition_name[k],n);
+RNG("Maximum",n,max_fixed[k]+1,MAX_REF(k));
+if(n> max_ref[k])
+max_ref[k]= n;
+}
+/*:352*//*363:*/
+
+void check_param_def(ref_t*df)
+{if(df->k!=int_kind&&df->k!=dimen_kind&&df->k!=glue_kind)
+QUIT("Kind %s not allowed in parameter list",definition_name[df->k]);
+if(df->n<=max_fixed[df->k]||max_default[df->k]<df->n)
+QUIT("Parameter %d for %s not allowed in parameter list",df->n,definition_name[df->k]);
+}
+/*:363*//*422:*/
+
+extern int yylineno;
+int yyerror(const char*msg)
+{QUIT(" in line %d %s",yylineno,msg);
+return 0;
+}
+/*:422*/
+
+
+%}
+
+
+
+
+
+%union{uint32_t u;int32_t i;char*s;float64_t f;glyph_t c;
+dimen_t d;stretch_t st;xdimen_t xd;kern_t kt;
+rule_t r;glue_t g;image_t x;
+list_t l;box_t h;disc_t dc;lig_t lg;
+ref_t rf;info_t info;order_t o;bool b;
+}
+
+
+
+%error_verbose
+%start hint
+
+/*2:*/
+
+%token START"<"
+%token END">"
+%token GLYPH"glyph"
+%token<u> UNSIGNED
+%token<u> REFERENCE
+/*:2*//*4:*/
+
+%type<u> start
+%type<c> glyph
+/*:4*//*26:*/
+
+%token<i> SIGNED
+%type<i> integer
+/*:26*//*33:*/
+
+%token<s> STRING
+/*:33*//*47:*/
+
+%token<u> CHARCODE
+/*:47*//*49:*/
+
+%type<s> string
+/*:49*//*54:*/
+
+%token<f> FPNUM
+%type<f> number
+/*:54*//*79:*/
+
+%token DIMEN"dimen"
+%token PT"pt"
+%token MM"mm"
+%token INCH"in"
+%type<d> dimension
+/*:79*//*87:*/
+
+%token XDIMEN"xdimen"
+%token H"h"
+%token V"v"
+%type<xd> xdimen
+/*:87*//*98:*/
+
+%token FIL"fil"
+%token FILL"fill"
+%token FILLL"filll"
+%type<st> stretch
+%type<o> order
+/*:98*//*102:*/
+
+%token PENALTY"penalty"
+%token INTEGER"int"
+%type<i> penalty
+/*:102*//*108:*/
+
+%token LANGUAGE"language"
+/*:108*//*114:*/
+
+%token RULE"rule"
+%token RUNNING"|"
+%type<d> rule_dimension
+%type<r> rule
+/*:114*//*123:*/
+
+%token KERN"kern"
+%token EXPLICIT"!"
+%type<b> explicit
+%type<kt> kern
+/*:123*//*132:*/
+
+%token GLUE"glue"
+%token PLUS"plus"
+%token MINUS"minus"
+%type<g> glue
+%type<b> glue_node
+%type<st> plus minus
+/*:132*//*141:*/
+
+%type<l> list
+%type<u> position content_list
+/*:141*//*150:*/
+
+%token TXT_START TXT_END TXT_IGNORE
+%token TXT_FONT_GLUE TXT_FONT_HYPHEN
+%token<u> TXT_FONT TXT_LOCAL
+%token<rf> TXT_GLOBAL
+%token<u> TXT_CC
+%type<u> text
+/*:150*//*161:*/
+
+%token HBOX"hbox"
+%token VBOX"vbox"
+%token SHIFTED"shifted"
+%type<info> box box_dimen box_shift box_glue_set
+
+/*:161*//*169:*/
+
+%token HPACK"hpack"
+%token HSET"hset"
+%token VPACK"vpack"
+%token VSET"vset"
+%token DEPTH"depth"
+%token ADD"add"
+%token TO"to"
+%type<info> xbox box_goal hpack vpack
+/*:169*//*174:*/
+
+%token LEADERS"leaders"
+%token ALIGN"align"
+%token CENTER"center"
+%token EXPAND"expand"
+%type<info> leaders
+%type<info> ltype
+/*:174*//*181:*/
+
+%token BASELINE"baseline"
+%type<info> baseline
+/*:181*//*188:*/
+
+%token LIGATURE"ligature"
+%type<u> lig_cc
+%type<lg> ligature
+%type<u> ref
+/*:188*//*196:*/
+
+%token DISC"disc"
+%type<dc> disc
+%type<u> replace_count
+/*:196*//*204:*/
+
+%token PAR"par"
+%type<info> par
+/*:204*//*209:*/
+
+%token MATH"math"
+%type<info> math
+/*:209*//*214:*/
+
+%token ON"on"
+%token OFF"off"
+%type<i> on_off
+/*:214*//*218:*/
+
+%token ADJUST"adjust"
+/*:218*//*222:*/
+
+%token TABLE"table"
+%token ITEM"item"
+%type<info> table span_count
+/*:222*//*229:*/
+
+%token IMAGE"image"
+%type<x> image image_dimen
+/*:229*//*246:*/
+
+%token LABEL"label"
+%token BOT"bot"
+%token MID"mid"
+%type<i> placement
+/*:246*//*260:*/
+
+%token LINK"link"
+/*:260*//*270:*/
+
+%token OUTLINE"outline"
+/*:270*//*277:*/
+
+%token STREAM"stream"
+%token STREAMDEF"stream (definition)"
+%token FIRST"first"
+%token LAST"last"
+%token TOP"top"
+%token NOREFERENCE"*"
+%type<info> stream_type
+%type<u> stream_ref
+%type<rf> stream_def_node
+/*:277*//*283:*/
+
+%type<info> stream
+/*:283*//*287:*/
+
+%token PAGE"page"
+/*:287*//*295:*/
+
+%token RANGE"range"
+/*:295*//*322:*/
+
+%token DIRECTORY"directory"
+%token SECTION"entry"
+/*:322*//*341:*/
+
+%token DEFINITIONS"definitions"
+/*:341*//*349:*/
+
+%token MAX"max"
+/*:349*//*358:*/
+
+
+%type<rf> def_node
+/*:358*//*364:*/
+
+%token PARAM"param"
+%type<u> def_list
+%type<l> parameters
+/*:364*//*373:*/
+
+%token FONT"font"
+%type<info> font font_head
+/*:373*//*401:*/
+
+%token CONTENT"content"
+/*:401*/
+
+%%
+/*5:*/
+
+glyph:UNSIGNED REFERENCE{$$.c= $1;REF(font_kind,$2);$$.f= $2;};
+content_node:start GLYPH glyph END{hput_tags($1,hput_glyph(&($3)));};
+start:START{HPUTNODE;$$= (uint32_t)(hpos++-hstart);}
+/*:5*//*29:*/
+
+integer:SIGNED|UNSIGNED{RNG("number",$1,0,INT32_MAX);};
+/*:29*//*38:*/
+
+glyph:CHARCODE REFERENCE{$$.c= $1;REF(font_kind,$2);$$.f= $2;};
+/*:38*//*50:*/
+
+string:STRING|CHARCODE{static char s[2];
+RNG("String element",$1,0x20,0x7E);
+s[0]= $1;s[1]= 0;$$= s;};
+/*:50*//*58:*/
+
+number:UNSIGNED{$$= (float64_t)$1;}|SIGNED{$$= (float64_t)$1;}|FPNUM;
+/*:58*//*82:*/
+
+dimension:number PT{$$= ROUND($1*ONE);RNG("Dimension",$$,-MAX_DIMEN,MAX_DIMEN);}
+|number INCH{$$= ROUND($1*ONE*72.27);RNG("Dimension",$$,-MAX_DIMEN,MAX_DIMEN);}
+|number MM{$$= ROUND($1*ONE*(72.27/25.4));RNG("Dimension",$$,-MAX_DIMEN,MAX_DIMEN);};
+/*:82*//*89:*/
+
+xdimen:dimension number H number V{$$.w= $1;$$.h= $2;$$.v= $4;}
+|dimension number H{$$.w= $1;$$.h= $2;$$.v= 0.0;}
+|dimension number V{$$.w= $1;$$.h= 0.0;$$.v= $2;}
+|dimension{$$.w= $1;$$.h= 0.0;$$.v= 0.0;};
+
+
+
+xdimen_node:start XDIMEN xdimen END{hput_tags($1,hput_xdimen(&($3)));};
+/*:89*//*100:*/
+
+
+order:PT{$$= normal_o;}|FIL{$$= fil_o;}|FILL{$$= fill_o;}|FILLL{$$= filll_o;};
+
+stretch:number order{$$.f= $1;$$.o= $2;};
+/*:100*//*104:*/
+
+penalty:integer{RNG("Penalty",$1,-20000,+20000);$$= $1;};
+content_node:start PENALTY penalty END{hput_tags($1,hput_int($3));};
+/*:104*//*116:*/
+
+rule_dimension:dimension|RUNNING{$$= RUNNING_DIMEN;};
+rule:rule_dimension rule_dimension rule_dimension
+{$$.h= $1;$$.d= $2;$$.w= $3;
+if($3==RUNNING_DIMEN&&($1==RUNNING_DIMEN||$2==RUNNING_DIMEN))
+QUIT("Incompatible running dimensions 0x%x 0x%x 0x%x",$1,$2,$3);};
+rule_node:start RULE rule END{hput_tags($1,hput_rule(&($3)));};
+content_node:rule_node;
+/*:116*//*125:*/
+
+explicit:{$$= false;}|EXPLICIT{$$= true;};
+kern:explicit xdimen{$$.x= $1;$$.d= $2;};
+content_node:start KERN kern END{hput_tags($1,hput_kern(&($3)));}
+/*:125*//*134:*/
+
+plus:{$$.f= 0.0;$$.o= 0;}|PLUS stretch{$$= $2;};
+minus:{$$.f= 0.0;$$.o= 0;}|MINUS stretch{$$= $2;};
+glue:xdimen plus minus{$$.w= $1;$$.p= $2;$$.m= $3;};
+content_node:start GLUE glue END{if(ZERO_GLUE($3)){HPUT8(zero_skip_no);
+hput_tags($1,TAG(glue_kind,0));}else hput_tags($1,hput_glue(&($3)));};
+glue_node:start GLUE glue END
+{if(ZERO_GLUE($3)){hpos--;$$= false;}
+else{hput_tags($1,hput_glue(&($3)));$$= true;}};
+/*:134*//*142:*/
+
+position:{$$= hpos-hstart;};
+content_list:position
+|content_list content_node;
+estimate:{hpos+= 2;}
+|UNSIGNED{hpos+= hsize_bytes($1)+1;};
+list:start estimate content_list END
+{$$.k= list_kind;$$.p= $3;$$.s= (hpos-hstart)-$3;
+hput_tags($1,hput_list($1+1,&($$)));};
+/*:142*//*153:*/
+
+list:TXT_START position
+{hpos+= 4;}
+text TXT_END
+{$$.k= text_kind;$$.p= $4;$$.s= (hpos-hstart)-$4;
+hput_tags($2,hput_list($2+1,&($$)));};
+text:position|text txt;
+
+txt:TXT_CC{hput_txt_cc($1);}
+|TXT_FONT{REF(font_kind,$1);hput_txt_font($1);}
+|TXT_GLOBAL{REF($1.k,$1.n);hput_txt_global(&($1));}
+|TXT_LOCAL{RNG("Font parameter",$1,0,11);hput_txt_local($1);}
+|TXT_FONT_GLUE{HPUTX(1);HPUT8(txt_glue);}
+|TXT_FONT_HYPHEN{HPUTX(1);HPUT8(txt_hyphen);}
+|TXT_IGNORE{HPUTX(1);HPUT8(txt_ignore);}
+|{HPUTX(1);HPUT8(txt_node);}content_node;
+/*:153*//*163:*/
+
+
+box_dimen:dimension dimension dimension
+{$$= hput_box_dimen($1,$2,$3);};
+box_shift:{$$= b000;}
+|SHIFTED dimension{$$= hput_box_shift($2);};
+
+box_glue_set:{$$= b000;}
+|PLUS stretch{$$= hput_box_glue_set(+1,$2.f,$2.o);}
+|MINUS stretch{$$= hput_box_glue_set(-1,$2.f,$2.o);};
+
+
+box:box_dimen box_shift box_glue_set list{$$= $1|$2|$3;};
+
+hbox_node:start HBOX box END{hput_tags($1,TAG(hbox_kind,$3));};
+vbox_node:start VBOX box END{hput_tags($1,TAG(vbox_kind,$3));};
+content_node:hbox_node|vbox_node;
+/*:163*//*171:*/
+
+box_flex:plus minus{hput_stretch(&($1));hput_stretch(&($2));};
+xbox:box_dimen box_shift box_flex xdimen_ref list{$$= $1|$2;}
+|box_dimen box_shift box_flex xdimen_node list{$$= $1|$2|b100;};
+
+box_goal:TO xdimen_ref{$$= b000;}
+|ADD xdimen_ref{$$= b001;}
+|TO xdimen_node{$$= b100;}
+|ADD xdimen_node{$$= b101;};
+
+hpack:box_shift box_goal list{$$= $2;};
+vpack:box_shift MAX DEPTH dimension{HPUT32($4);}box_goal list{$$= $1|$6;};
+
+vxbox_node:start VSET xbox END{hput_tags($1,TAG(vset_kind,$3));}
+|start VPACK vpack END{hput_tags($1,TAG(vpack_kind,$3));};
+
+
+hxbox_node:start HSET xbox END{hput_tags($1,TAG(hset_kind,$3));}
+|start HPACK hpack END{hput_tags($1,TAG(hpack_kind,$3));};
+
+content_node:vxbox_node|hxbox_node;
+/*:171*//*176:*/
+
+ltype:{$$= 1;}|ALIGN{$$= 1;}|CENTER{$$= 2;}|EXPAND{$$= 3;};
+leaders:glue_node ltype rule_node{if($1)$$= $2|b100;else $$= $2;}
+|glue_node ltype hbox_node{if($1)$$= $2|b100;else $$= $2;}
+|glue_node ltype vbox_node{if($1)$$= $2|b100;else $$= $2;};
+content_node:start LEADERS leaders END{hput_tags($1,TAG(leaders_kind,$3));}
+/*:176*//*183:*/
+
+baseline:dimension{if($1!=0)HPUT32($1);}
+glue_node glue_node{$$= b000;if($1!=0)$$|= b001;
+if($3)$$|= b100;
+if($4)$$|= b010;
+};
+content_node:start BASELINE baseline END
+{if($3==b000)HPUT8(0);hput_tags($1,TAG(baseline_kind,$3));};
+/*:183*//*190:*/
+
+cc_list:|cc_list TXT_CC{hput_utf8($2);};
+lig_cc:UNSIGNED{RNG("UTF-8 code",$1,0,0x1FFFFF);$$= hpos-hstart;hput_utf8($1);};
+lig_cc:CHARCODE{$$= hpos-hstart;hput_utf8($1);};
+ref:REFERENCE{HPUT8($1);$$= $1;};
+ligature:ref{REF(font_kind,$1);}lig_cc TXT_START cc_list TXT_END
+{$$.f= $1;$$.l.p= $3;$$.l.s= (hpos-hstart)-$3;
+RNG("Ligature size",$$.l.s,0,255);};
+content_node:start LIGATURE ligature END{hput_tags($1,hput_ligature(&($3)));};
+/*:190*//*198:*/
+
+replace_count:explicit{if($1){$$= 0x80;HPUT8(0x80);}else $$= 0x00;}
+|explicit UNSIGNED{RNG("Replace count",$2,0,31);
+$$= ($2)|(($1)?0x80:0x00);if($$!=0)HPUT8($$);};
+disc:replace_count list list{$$.r= $1;$$.p= $2;$$.q= $3;
+if($3.s==0){hpos= hpos-2;if($2.s==0)hpos= hpos-2;}}
+|replace_count list{$$.r= $1;$$.p= $2;if($2.s==0)hpos= hpos-2;$$.q.s= 0;}
+|replace_count{$$.r= $1;$$.p.s= 0;$$.q.s= 0;};
+
+
+disc_node:start DISC disc END
+{hput_tags($1,hput_disc(&($3)));};
+
+content_node:disc_node;
+/*:198*//*206:*/
+
+par_dimen:xdimen{hput_xdimen_node(&($1));};
+par:xdimen_ref param_ref list{$$= b000;}
+|xdimen_ref empty_param_list non_empty_param_list list{$$= b010;}
+|xdimen_ref empty_param_list list{$$= b010;}
+|xdimen param_ref{hput_xdimen_node(&($1));}list{$$= b100;}
+|par_dimen empty_param_list non_empty_param_list list{$$= b110;}
+|par_dimen empty_param_list list{$$= b110;};
+
+content_node:start PAR par END{hput_tags($1,TAG(par_kind,$3));};
+/*:206*//*211:*/
+
+math:param_ref list{$$= b000;}
+|param_ref list hbox_node{$$= b001;}
+|param_ref hbox_node list{$$= b010;}
+|empty_param_list list{$$= b100;}
+|empty_param_list list hbox_node{$$= b101;}
+|empty_param_list hbox_node list{$$= b110;}
+|empty_param_list non_empty_param_list list{$$= b100;}
+|empty_param_list non_empty_param_list list hbox_node{$$= b101;}
+|empty_param_list non_empty_param_list hbox_node list{$$= b110;};
+
+content_node:start MATH math END{hput_tags($1,TAG(math_kind,$3));};
+/*:211*//*216:*/
+
+on_off:ON{$$= 1;}|OFF{$$= 0;};
+math:on_off{$$= b011|($1<<2);};
+/*:216*//*220:*/
+
+content_node:start ADJUST list END{hput_tags($1,TAG(adjust_kind,1));};
+/*:220*//*224:*/
+
+span_count:UNSIGNED{$$= hput_span_count($1);};
+content_node:start ITEM content_node END{hput_tags($1,TAG(item_kind,1));};
+content_node:start ITEM span_count content_node END{hput_tags($1,TAG(item_kind,$3));};
+content_node:start ITEM list END{hput_tags($1,TAG(item_kind,b000));};
+
+table:H box_goal list list{$$= $2;};
+table:V box_goal list list{$$= $2|b010;};
+
+content_node:start TABLE table END{hput_tags($1,TAG(table_kind,$3));};
+/*:224*//*231:*/
+
+image_dimen:dimension dimension{$$.w= $1;$$.h= $2;}|{$$.w= $$.h= 0;};
+image:UNSIGNED image_dimen plus minus{$$.w= $2.w;$$.h= $2.h;$$.p= $3;$$.m= $4;RNG("Section number",$1,3,max_section_no);$$.n= $1;};
+content_node:start IMAGE image END{hput_tags($1,hput_image(&($3)));}
+/*:231*//*241:*/
+
+max_value:OUTLINE UNSIGNED{max_outline= $2;
+RNG("max outline",max_outline,0,0xFFFF);
+DBG(DBGDEF|DBGLABEL,"Setting max outline to %d\n",max_outline);
+};
+/*:241*//*248:*/
+
+placement:TOP{$$= LABEL_TOP;}|BOT{$$= LABEL_BOT;}|MID{$$= LABEL_MID;}|{$$= LABEL_MID;};
+content_node:START LABEL REFERENCE placement END
+{hset_label($3,$4);}
+/*:248*//*262:*/
+
+content_node:start LINK REFERENCE on_off END
+{hput_tags($1,hput_link($3,$4));};
+/*:262*//*272:*/
+
+def_node:START OUTLINE REFERENCE integer position list END{
+static int outline_no= -1;
+$$.k= outline_kind;$$.n= $3;
+if($6.s==0)QUIT("Outline with empty title in line %d",yylineno);
+outline_no++;
+hset_outline(outline_no,$3,$4,$5);
+};
+/*:272*//*279:*/
+
+stream_link:ref{REF_RNG(stream_kind,$1);}|NOREFERENCE{HPUT8(255);};
+stream_split:stream_link stream_link UNSIGNED{RNG("split ratio",$3,0,1000);HPUT16($3);};
+stream_info:xdimen_node UNSIGNED{RNG("magnification factor",$2,0,1000);HPUT16($2);}stream_split;
+
+stream_type:stream_info{$$= 0;}|FIRST{$$= 1;}|LAST{$$= 2;}|TOP{$$= 3;};
+
+stream_def_node:start STREAMDEF ref stream_type
+list xdimen_node glue_node list glue_node END
+{DEF($$,stream_kind,$3);hput_tags($1,TAG(stream_kind,$4|b100));};
+
+stream_ins_node:start STREAMDEF ref END
+{RNG("Stream insertion",$3,0,max_ref[stream_kind]);hput_tags($1,TAG(stream_kind,b100));};
+
+content_node:stream_def_node|stream_ins_node;
+/*:279*//*284:*/
+
+stream:empty_param_list list{$$= b010;}
+|empty_param_list non_empty_param_list list{$$= b010;}
+|param_ref list{$$= b000;};
+content_node:start STREAM stream_ref stream END
+{hput_tags($1,TAG(stream_kind,$4));};
+/*:284*//*289:*/
+
+page_priority:{HPUT8(1);}
+|UNSIGNED{RNG("page priority",$1,0,255);HPUT8($1);};
+
+stream_def_list:|stream_def_list stream_def_node;
+
+page:string{hput_string($1);}page_priority glue_node dimension{HPUT32($5);}
+xdimen_node xdimen_node
+list stream_def_list;
+/*:289*//*297:*/
+
+
+content_node:START RANGE REFERENCE ON END{REF(page_kind,$3);hput_range($3,true);}
+|START RANGE REFERENCE OFF END{REF(page_kind,$3);hput_range($3,false);};
+/*:297*//*308:*/
+
+hint:directory_section definition_section content_section;
+/*:308*//*324:*/
+
+directory_section:START DIRECTORY UNSIGNED{new_directory($3+1);new_output_buffers();}entry_list END;
+entry_list:|entry_list entry;
+entry:START SECTION UNSIGNED string END
+{RNG("Section number",$3,3,max_section_no);hset_entry(&(dir[$3]),$3,0,0,$4);};
+/*:324*//*343:*/
+
+definition_section:START DEFINITIONS{hput_definitions_start();}
+max_definitions definition_list
+END{hput_definitions_end();};
+definition_list:|definition_list def_node;
+/*:343*//*351:*/
+
+max_definitions:START MAX max_list END
+{/*245:*/
+
+if(max_ref[label_kind]>=0)
+ALLOCATE(labels,max_ref[label_kind]+1,label_t);
+/*:245*//*266:*/
+
+if(max_outline>=0)
+ALLOCATE(outlines,max_outline+1,outline_t);
+/*:266*//*293:*/
+
+ALLOCATE(page_on,max_ref[page_kind]+1,int);
+ALLOCATE(range_pos,2*(max_ref[range_kind]+1),range_pos_t);
+/*:293*//*357:*/
+
+definition_bits[0][int_kind]= (1<<(MAX_INT_DEFAULT+1))-1;
+definition_bits[0][dimen_kind]= (1<<(MAX_DIMEN_DEFAULT+1))-1;
+definition_bits[0][xdimen_kind]= (1<<(MAX_XDIMEN_DEFAULT+1))-1;
+definition_bits[0][glue_kind]= (1<<(MAX_GLUE_DEFAULT+1))-1;
+definition_bits[0][baseline_kind]= (1<<(MAX_BASELINE_DEFAULT+1))-1;
+definition_bits[0][page_kind]= (1<<(MAX_PAGE_DEFAULT+1))-1;
+definition_bits[0][stream_kind]= (1<<(MAX_STREAM_DEFAULT+1))-1;
+definition_bits[0][range_kind]= (1<<(MAX_RANGE_DEFAULT+1))-1;
+/*:357*//*372:*/
+
+ALLOCATE(hfont_name,max_ref[font_kind]+1,char*);
+/*:372*/
+hput_max_definitions();};
+
+max_list:|max_list START max_value END;
+
+max_value:FONT UNSIGNED{hset_max(font_kind,$2);}
+|INTEGER UNSIGNED{hset_max(int_kind,$2);}
+|DIMEN UNSIGNED{hset_max(dimen_kind,$2);}
+|LIGATURE UNSIGNED{hset_max(ligature_kind,$2);}
+|DISC UNSIGNED{hset_max(disc_kind,$2);}
+|GLUE UNSIGNED{hset_max(glue_kind,$2);}
+|LANGUAGE UNSIGNED{hset_max(language_kind,$2);}
+|RULE UNSIGNED{hset_max(rule_kind,$2);}
+|IMAGE UNSIGNED{hset_max(image_kind,$2);}
+|LEADERS UNSIGNED{hset_max(leaders_kind,$2);}
+|BASELINE UNSIGNED{hset_max(baseline_kind,$2);}
+|XDIMEN UNSIGNED{hset_max(xdimen_kind,$2);}
+|PARAM UNSIGNED{hset_max(param_kind,$2);}
+|STREAMDEF UNSIGNED{hset_max(stream_kind,$2);}
+|PAGE UNSIGNED{hset_max(page_kind,$2);}
+|RANGE UNSIGNED{hset_max(range_kind,$2);}
+|LABEL UNSIGNED{hset_max(label_kind,$2);};
+
+/*:351*//*359:*/
+
+def_node:
+start FONT ref font END{DEF($$,font_kind,$3);hput_tags($1,$4);}
+|start INTEGER ref integer END{DEF($$,int_kind,$3);hput_tags($1,hput_int($4));}
+|start DIMEN ref dimension END{DEF($$,dimen_kind,$3);hput_tags($1,hput_dimen($4));}
+|start LANGUAGE ref string END{DEF($$,language_kind,$3);hput_string($4);hput_tags($1,TAG(language_kind,0));}
+|start GLUE ref glue END{DEF($$,glue_kind,$3);hput_tags($1,hput_glue(&($4)));}
+|start XDIMEN ref xdimen END{DEF($$,xdimen_kind,$3);hput_tags($1,hput_xdimen(&($4)));}
+|start RULE ref rule END{DEF($$,rule_kind,$3);hput_tags($1,hput_rule(&($4)));}
+|start LEADERS ref leaders END{DEF($$,leaders_kind,$3);hput_tags($1,TAG(leaders_kind,$4));}
+|start BASELINE ref baseline END{DEF($$,baseline_kind,$3);hput_tags($1,TAG(baseline_kind,$4));}
+|start LIGATURE ref ligature END{DEF($$,ligature_kind,$3);hput_tags($1,hput_ligature(&($4)));}
+|start DISC ref disc END{DEF($$,disc_kind,$3);hput_tags($1,hput_disc(&($4)));}
+|start IMAGE ref image END{DEF($$,image_kind,$3);hput_tags($1,hput_image(&($4)));}
+|start PARAM ref parameters END{DEF($$,param_kind,$3);hput_tags($1,hput_list($1+2,&($4)));}
+|start PAGE ref page END{DEF($$,page_kind,$3);hput_tags($1,TAG(page_kind,0));};
+/*:359*//*361:*/
+
+def_node:
+start INTEGER ref ref END{DEF_REF($$,int_kind,$3,$4);hput_tags($1,TAG(int_kind,0));}
+|start DIMEN ref ref END{DEF_REF($$,dimen_kind,$3,$4);hput_tags($1,TAG(dimen_kind,0));}
+|start GLUE ref ref END{DEF_REF($$,glue_kind,$3,$4);hput_tags($1,TAG(glue_kind,0));};
+/*:361*//*366:*/
+
+def_list:position
+|def_list def_node{check_param_def(&($2));};
+parameters:estimate def_list{$$.p= $2;$$.k= param_kind;$$.s= (hpos-hstart)-$2;};
+/*:366*//*367:*/
+
+empty_param_list:position{HPUTX(2);hpos++;hput_tags($1,TAG(param_kind,1));};
+non_empty_param_list:start PARAM{hpos= hpos-2;}parameters END
+{hput_tags($1-2,hput_list($1-1,&($4)));};
+/*:367*//*375:*/
+
+
+font:font_head font_param_list;
+
+font_head:string dimension UNSIGNED UNSIGNED
+{uint8_t f= $<u>0;SET_DBIT(f,font_kind);hfont_name[f]= strdup($1);$$= hput_font_head(f,hfont_name[f],$2,$3,$4);};
+
+font_param_list:glue_node disc_node|font_param_list font_param;
+
+font_param:
+start PENALTY fref penalty END{hput_tags($1,hput_int($4));}
+|start KERN fref kern END{hput_tags($1,hput_kern(&($4)));}
+|start LIGATURE fref ligature END{hput_tags($1,hput_ligature(&($4)));}
+|start DISC fref disc END{hput_tags($1,hput_disc(&($4)));}
+|start GLUE fref glue END{hput_tags($1,hput_glue(&($4)));}
+|start LANGUAGE fref string END{hput_string($4);hput_tags($1,TAG(language_kind,0));}
+|start RULE fref rule END{hput_tags($1,hput_rule(&($4)));}
+|start IMAGE fref image END{hput_tags($1,hput_image(&($4)));};
+
+fref:ref{RNG("Font parameter",$1,0,MAX_FONT_PARAMS);};
+/*:375*//*378:*/
+
+xdimen_ref:ref{REF(xdimen_kind,$1);};
+param_ref:ref{REF(param_kind,$1);};
+stream_ref:ref{REF_RNG(stream_kind,$1);};
+
+
+content_node:
+start PENALTY ref END{REF(penalty_kind,$3);hput_tags($1,TAG(penalty_kind,0));}
+|start KERN explicit ref END
+{REF(dimen_kind,$4);hput_tags($1,TAG(kern_kind,($3)?b100:b000));}
+|start KERN explicit XDIMEN ref END
+{REF(xdimen_kind,$5);hput_tags($1,TAG(kern_kind,($3)?b101:b001));}
+|start GLUE ref END{REF(glue_kind,$3);hput_tags($1,TAG(glue_kind,0));}
+|start LIGATURE ref END{REF(ligature_kind,$3);hput_tags($1,TAG(ligature_kind,0));}
+|start DISC ref END{REF(disc_kind,$3);hput_tags($1,TAG(disc_kind,0));}
+|start RULE ref END{REF(rule_kind,$3);hput_tags($1,TAG(rule_kind,0));}
+|start IMAGE ref END{REF(image_kind,$3);hput_tags($1,TAG(image_kind,0));}
+|start LEADERS ref END{REF(leaders_kind,$3);hput_tags($1,TAG(leaders_kind,0));}
+|start BASELINE ref END{REF(baseline_kind,$3);hput_tags($1,TAG(baseline_kind,0));}
+|start LANGUAGE REFERENCE END{REF(language_kind,$3);hput_tags($1,hput_language($3));};
+
+glue_node:start GLUE ref END{REF(glue_kind,$3);
+if($3==zero_skip_no){hpos= hpos-2;$$= false;}
+else{hput_tags($1,TAG(glue_kind,0));$$= true;}};
+
+/*:378*//*403:*/
+
+content_section:START CONTENT{hput_content_start();}content_list END
+{hput_content_end();hput_range_defs();hput_label_defs();};
+/*:403*/
+
+%%
+/*:510*/

Deleted: trunk/Build/source/texk/web2c/hitexdir/lexer.c
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/lexer.c	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir/lexer.c	2021-09-28 21:45:20 UTC (rev 60644)
@@ -1,3206 +0,0 @@
-#line 2 "shrink.lex.c"
-
-#line 4 "shrink.lex.c"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-/* %not-for-header */
-
-/* %if-c-only */
-/* %if-not-reentrant */
-
-/* %endif */
-/* %endif */
-/* %ok-for-header */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* %if-c++-only */
-/* %endif */
-
-/* %if-c-only */
-    
-/* %endif */
-
-/* %if-c-only */
-
-/* %endif */
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-/* %if-c-only */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-/* %endif */
-
-/* %if-tables-serialization */
-/* %endif */
-/* end standard C headers. */
-
-/* %if-c-or-c++ */
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! C99 */
-
-#endif /* ! FLEXINT_H */
-
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* %not-for-header */
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-/* %ok-for-header */
-
-/* %not-for-header */
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-/* %ok-for-header */
-
-/* %if-reentrant */
-/* %endif */
-
-/* %if-not-reentrant */
-
-/* %endif */
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart(yyin  )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-/* %if-not-reentrant */
-extern yy_size_t yyleng;
-/* %endif */
-
-/* %if-c-only */
-/* %if-not-reentrant */
-extern FILE *yyin, *yyout;
-/* %endif */
-/* %endif */
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
-     *       access to the local variable yy_act. Since yyless() is a macro, it would break
-     *       existing scanners that call yyless() from OUTSIDE yylex. 
-     *       One obvious solution it to make yy_act a global. I tried that, and saw
-     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
-     *       normally declared as a register variable-- so it is not worth it.
-     */
-    #define  YY_LESS_LINENO(n) \
-            do { \
-                int yyl;\
-                for ( yyl = n; yyl < yyleng; ++yyl )\
-                    if ( yytext[yyl] == '\n' )\
-                        --yylineno;\
-            }while(0)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		*yy_cp = (yy_hold_char); \
-		YY_RESTORE_YY_MORE_OFFSET \
-		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, (yytext_ptr)  )
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-	{
-/* %if-c-only */
-	FILE *yy_input_file;
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	yy_size_t yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via yyrestart()), so that the user can continue scanning by
-	 * just pointing yyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-
-	};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* %if-c-only Standard (non-C++) definition */
-/* %not-for-header */
-
-/* %if-not-reentrant */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-/* %endif */
-/* %ok-for-header */
-
-/* %endif */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* %if-c-only Standard (non-C++) definition */
-
-/* %if-not-reentrant */
-/* %not-for-header */
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
-yy_size_t yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-/* %ok-for-header */
-
-/* %endif */
-
-void yyrestart (FILE *input_file  );
-void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
-void yy_delete_buffer (YY_BUFFER_STATE b  );
-void yy_flush_buffer (YY_BUFFER_STATE b  );
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
-void yypop_buffer_state (void );
-
-static void yyensure_buffer_stack (void );
-static void yy_load_buffer_state (void );
-static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
-
-#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
-
-/* %endif */
-
-void *yyalloc (yy_size_t  );
-void *yyrealloc (void *,yy_size_t  );
-void yyfree (void *  );
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){ \
-        yyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer(yyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){\
-        yyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer(yyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
-/* Begin user sect3 */
-
-#define FLEX_DEBUG
-
-typedef unsigned char YY_CHAR;
-
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-
-typedef int yy_state_type;
-
-extern int yylineno;
-
-int yylineno = 1;
-
-extern char *yytext;
-#define yytext_ptr yytext
-
-/* %if-c-only Standard (non-C++) definition */
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
-
-/* %endif */
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	(yytext_ptr) = yy_bp; \
-/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
-	yyleng = (size_t) (yy_cp - yy_bp); \
-	(yy_hold_char) = *yy_cp; \
-	*yy_cp = '\0'; \
-/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
-	(yy_c_buf_p) = yy_cp;
-
-/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 126
-#define YY_END_OF_BUFFER 127
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-	{
-	flex_int32_t yy_verify;
-	flex_int32_t yy_nxt;
-	};
-static yyconst flex_int16_t yy_accept[371] =
-    {   0,
-        0,    0,    0,    0,    0,    0,  127,  125,    6,    6,
-       43,   47,   10,  125,  114,  125,    4,    4,    1,    2,
-       41,  124,  124,  124,  124,  124,  124,  124,   31,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,   32,
-      124,   40,   14,   15,   13,   11,   74,   74,   58,   72,
-       48,   73,   49,   50,   74,  126,  126,  126,  126,    0,
-        0,    0,    0,    0,    0,    0,    7,    5,    5,    9,
-        9,    0,    0,    0,    4,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,   29,  124,  124,  124,  124,  124,  124,  124,
-
-       28,  124,   97,  124,  124,  124,  124,   27,  124,  124,
-      124,  124,  124,  124,  124,   86,  124,  124,  124,  124,
-       12,    0,   58,   58,    0,   59,   55,   52,   56,   60,
-       53,   54,   57,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   51,   71,   75,    0,    0,   20,   20,
-       16,    0,    0,    0,    5,    0,    9,   24,    8,   85,
-      124,  124,  124,  106,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,   33,  124,  124,  124,  124,  124,  124,
-      124,  124,   37,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  120,  107,  124,   98,  124,  124,   95,  124,
-
-      124,  124,  102,  124,  124,  124,  124,  124,  113,  124,
-      124,  124,  124,   59,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   76,    0,   18,   17,   21,    0,
-        0,    0,    0,    0,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,   94,  124,   34,  124,  122,   44,
-      124,   78,  124,   82,  124,  101,   42,  124,  124,  112,
-      124,  124,  108,   96,  124,  124,  115,  124,  124,   45,
-      124,   39,  124,  124,  124,  124,   79,  124,   84,  124,
-       70,   65,   61,   66,   69,   63,   64,   62,   68,   67,
-       77,   19,   22,    0,    0,   24,   25,  124,   89,  124,
-
-      124,  124,  124,  124,   87,   26,  124,  124,   35,  111,
-        3,   81,  104,  105,  124,  124,  124,   46,  124,  121,
-      124,  116,  124,  124,  124,  100,   83,  124,   23,    0,
-       99,  124,   90,  103,  124,  124,  124,   91,  124,  124,
-      124,  124,  124,  124,  124,  110,   30,    0,   25,  124,
-      123,  124,  124,  124,   88,  124,  109,   36,  118,   80,
-       92,  124,  124,   38,   93,  124,  117,  124,  119,    0
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        4,    4,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    5,    6,    7,    8,    8,    8,    8,    9,   10,
-       11,   12,   13,    8,   14,   15,    8,   16,   17,   17,
-       17,   17,   17,   17,   17,   18,   18,    8,    8,   19,
-        8,   20,    8,   21,   22,   22,   23,   24,   22,   25,
-       26,    8,   27,    8,   28,   29,    8,    8,    8,   30,
-        8,   31,   32,    8,    8,    8,    8,    8,    8,    8,
-        8,   33,    8,    8,   34,    8,   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,   51,    8,   60,    8,    8,    1,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
-       61,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   63,   63,   63,   64,
-       64,   64,   64,   64,   64,   64,   64,   65,   65,   65,
-       65,   65,   65,   65,   65
-    } ;
-
-static yyconst flex_int32_t yy_meta[66] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    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,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    1,
-        4,    1,    1,    1,    4
-    } ;
-
-static yyconst flex_int16_t yy_base[376] =
-    {   0,
-        0,    0,   65,  130,  194,  258,  629,  630,  630,  630,
-      630,  630,   74,   68,   64,   68,   77,   72,  630,  630,
-      630,   53,   61,   58,   59,  570,   57,  581,   65,   57,
-        0,  587,   73,   74,  100,  106,  107,  104,  112,  113,
-      587,  630,  630,  630,  630,  615,  630,  117,  148,  162,
-      630,  630,  630,  630,  322,  630,  562,  561,  560,  611,
-      610,  609,  556,  555,  554,  165,  630,  630,  107,  154,
-      162,  157,  166,  193,  170,    0,  160,  571,  560,  558,
-      563,   24,   63,  153,  560,  173,  561,  148,  559,  572,
-      567,  570,  550,  564,  550,  184,  566,  180,  168,  106,
-
-        0,  560,    0,  545,  182,  550,  542,    0,  548,  538,
-      548,  556,  549,  539,  554,  539,  539,  552,  547,  542,
-      630,  228,  233,  237,  241,  243,  247,  630,  630,  630,
-      630,  630,  630,  250,  253,  257,  263,  266,  269,  272,
-      276,  279,  282,  630,  630,  630,  523,  522,  630,  573,
-      572,  571,  518,  517,  285,  288,  299,  291,  354,    0,
-      522,  535,  536,    0,  520,  518,  518,  528,  516,  530,
-      529,  530,  531,  519,  511,  509,  523,  511,  502,  522,
-      504,  516,    0,  509,  507,  515,  512,  498,  513,  515,
-      504,  506,    0,    0,  492,    0,  500,  506,  509,  508,
-
-      489,  500,    0,  501,  485,  498,  498,  490,    0,  477,
-      497,  479,  485,  249,  357,  364,  367,  370,  375,  378,
-      388,  396,  399,  402,  630,  470,  630,  521,  630,  520,
-      467,  421,  409,  431,  474,  478,  479,  485,  476,  483,
-      473,  478,  471,  479,    0,  450,  451,  439,    0,    0,
-      450,    0,  446,    0,  451,    0,    0,  439,  429,    0,
-      444,  421,    0,    0,  421,  430,    0,  422,  416,    0,
-      422,    0,  417,  398,  416,  411,    0,  397,    0,  402,
-      630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
-      630,  630,  630,  431,  315,  630,  441,  380,    0,  390,
-
-      379,  382,  380,  381,    0,    0,  356,  371,    0,    0,
-        0,    0,    0,    0,  372,  350,  346,    0,  351,    0,
-      344,    0,  340,  317,  297,    0,    0,  292,  630,  454,
-        0,  289,    0,    0,  281,  280,  279,    0,  285,  265,
-      224,  225,  203,  205,  209,    0,    0,  464,  478,  202,
-        0,  186,  172,  163,    0,  151,    0,    0,    0,    0,
-        0,  140,  100,    0,    0,  109,    0,   61,    0,  630,
-      503,  507,  511,  514,   70
-    } ;
-
-static yyconst flex_int16_t yy_def[376] =
-    {   0,
-      370,    1,  371,  371,  372,  372,  370,  370,  370,  370,
-      370,  370,  373,  374,  370,  370,  370,  370,  370,  370,
-      370,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  374,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  375,  375,  375,
-
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  370,  370,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  370,  370,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
-      375,  375,  375,  375,  375,  375,  375,  375,  375,    0,
-      370,  370,  370,  370,  370
-    } ;
-
-static yyconst flex_int16_t yy_nxt[696] =
-    {   0,
-        8,    9,   10,    9,    9,   11,   12,    8,   13,   14,
-        8,   15,   16,   16,    8,   17,   18,   18,   19,   20,
-        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
-        8,    8,    8,   21,   22,   23,   24,   25,   26,   27,
-       28,   29,   30,   31,   32,   33,   34,   31,   35,   36,
-       31,   37,   38,   39,   31,   40,   31,   41,   31,   42,
-        8,    8,    8,    8,    8,   43,   43,   44,   43,  166,
-       67,  167,   76,   46,   60,   60,   60,   60,   67,   68,
-       69,   69,   62,   70,   71,   71,   72,   75,   75,   75,
-       77,   72,   73,   73,   73,   79,   81,   83,   78,   86,
-
-       89,   84,  168,   92,   93,   87,   82,   96,   99,   80,
-       94,   97,  169,  369,   90,   98,  100,   91,  122,  123,
-      101,  122,  155,  155,  155,   43,   43,   43,   43,   43,
-       43,   43,   44,   43,   74,   63,   64,   65,   46,  102,
-      105,  109,  112,  194,  106,  113,  115,  103,  117,  124,
-      123,  107,  124,  195,  104,  110,  368,  114,  367,  108,
-      116,  111,  118,  122,  123,  119,  122,   67,   72,   73,
-       73,   73,  158,  158,  158,   67,   72,  157,  157,  157,
-       72,   73,   73,   73,   72,   75,   75,   75,  366,  365,
-       43,   43,   43,   43,   43,   48,   49,  160,   50,  170,
-
-       51,  364,  177,  161,  171,  172,  178,   52,  159,  159,
-      159,  156,   53,   54,  159,  159,  159,  159,  174,  186,
-      190,  192,  198,  363,  175,  193,   55,  191,  362,  122,
-      123,  187,  122,  199,  124,  123,  188,  124,  124,  123,
-      361,  124,  125,  126,  214,  125,  360,  214,  125,  126,
-      214,  125,  359,  214,   56,   57,   58,   59,   56,   48,
-       49,  358,   50,  357,   51,  215,  215,  215,  216,  216,
-      216,   52,  217,  217,  217,  356,   53,   54,  218,  218,
-      218,  219,  219,  219,  220,  220,  220,  221,  221,  221,
-       55,  222,  222,  222,  223,  223,  223,  224,  224,  224,
-
-      155,  155,  155,  232,  232,  232,  158,  158,  158,  232,
-      232,  232,  232,   72,  157,  157,  157,  355,   56,   57,
-       58,   59,   56,  125,  126,  354,  127,  353,  128,  233,
-      296,  296,  296,  352,  351,  129,  350,  130,  130,  347,
-      131,  132,  133,  346,  134,  135,  136,  137,  138,  139,
-      140,  141,  142,  143,  144,  345,  145,  145,  145,  145,
-      145,  145,  145,  145,  145,  145,  145,  145,  234,  159,
-      159,  159,  215,  215,  215,  159,  159,  159,  159,  216,
-      216,  216,  217,  217,  217,  218,  218,  218,  344,  281,
-      219,  219,  219,  220,  220,  220,  282,  343,  342,  283,
-
-      341,  340,  284,  221,  221,  221,  339,  285,  338,  337,
-      286,  222,  222,  222,  223,  223,  223,  224,  224,  224,
-      287,  295,  295,  336,  296,  296,  296,  335,  288,  334,
-      333,  289,  332,  331,  290,  234,  232,  232,  232,  329,
-      328,  327,  232,  232,  232,  232,  297,  297,  297,  326,
-      325,  324,  297,  297,  297,  297,  297,  297,  297,  323,
-      322,  321,  297,  297,  297,  297,  348,  348,  320,  349,
-      349,  349,  319,  318,  317,  349,  349,  349,  349,  349,
-      349,  349,  316,  315,  314,  349,  349,  349,  349,  313,
-      312,  311,  310,  349,  349,  349,  309,  308,  330,  349,
-
-      349,  349,  349,   45,   45,   45,   45,   47,   47,   47,
-       47,   61,   61,   61,   66,  307,   66,   66,  306,  305,
-      304,  303,  302,  301,  300,  299,  298,  294,  293,  292,
-      291,  280,  279,  278,  277,  276,  275,  274,  273,  272,
-      271,  270,  269,  268,  267,  266,  265,  264,  263,  262,
-      261,  260,  259,  258,  257,  256,  255,  254,  253,  252,
-      251,  250,  249,  248,  247,  246,  245,  244,  243,  242,
-      241,  240,  239,  238,  237,  236,  235,  231,  230,  229,
-      228,  227,  226,  225,  213,  212,  211,  210,  209,  208,
-      207,  206,  205,  204,  203,  202,  201,  200,  197,  196,
-
-      189,  185,  184,  183,  182,  181,  180,  179,  176,  173,
-      165,  164,  163,  162,  154,  153,  152,  151,  150,  149,
-      148,  147,  146,  121,  120,   95,   88,   85,  370,    7,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370
-
-    } ;
-
-static yyconst flex_int16_t yy_chk[696] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    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,    3,    3,    3,   82,
-       14,   82,  375,    3,   13,   13,   13,   13,   14,   15,
-       15,   15,   13,   16,   16,   16,   18,   18,   18,   18,
-       22,   17,   17,   17,   17,   23,   24,   25,   22,   27,
-
-       29,   25,   83,   30,   30,   27,   24,   33,   34,   23,
-       30,   33,   83,  368,   29,   33,   34,   29,   48,   48,
-       34,   48,   69,   69,   69,    3,    3,    3,    3,    3,
-        4,    4,    4,    4,   17,   13,   13,   13,    4,   35,
-       36,   37,   38,  100,   36,   38,   39,   35,   40,   49,
-       49,   36,   49,  100,   35,   37,  366,   38,  363,   36,
-       39,   37,   40,   50,   50,   40,   50,   66,   70,   70,
-       70,   70,   72,   72,   72,   66,   71,   71,   71,   71,
-       73,   73,   73,   73,   75,   75,   75,   75,  362,  356,
-        4,    4,    4,    4,    4,    5,    5,   77,    5,   84,
-
-        5,  354,   88,   77,   84,   84,   88,    5,   74,   74,
-       74,   70,    5,    5,   74,   74,   74,   74,   86,   96,
-       98,   99,  105,  353,   86,   99,    5,   98,  352,  122,
-      122,   96,  122,  105,  123,  123,   96,  123,  124,  124,
-      350,  124,  125,  125,  126,  125,  345,  126,  127,  127,
-      214,  127,  344,  214,    5,    5,    5,    5,    5,    6,
-        6,  343,    6,  342,    6,  134,  134,  134,  135,  135,
-      135,    6,  136,  136,  136,  341,    6,    6,  137,  137,
-      137,  138,  138,  138,  139,  139,  139,  140,  140,  140,
-        6,  141,  141,  141,  142,  142,  142,  143,  143,  143,
-
-      155,  155,  155,  156,  156,  156,  158,  158,  158,  156,
-      156,  156,  156,  157,  157,  157,  157,  340,    6,    6,
-        6,    6,    6,   55,   55,  339,   55,  337,   55,  158,
-      295,  295,  295,  336,  335,   55,  332,   55,   55,  328,
-       55,   55,   55,  325,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,  324,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,  159,  159,
-      159,  159,  215,  215,  215,  159,  159,  159,  159,  216,
-      216,  216,  217,  217,  217,  218,  218,  218,  323,  215,
-      219,  219,  219,  220,  220,  220,  216,  321,  319,  217,
-
-      317,  316,  218,  221,  221,  221,  315,  219,  308,  307,
-      220,  222,  222,  222,  223,  223,  223,  224,  224,  224,
-      221,  233,  233,  304,  233,  233,  233,  303,  222,  302,
-      301,  223,  300,  298,  224,  232,  232,  232,  232,  294,
-      280,  278,  232,  232,  232,  232,  234,  234,  234,  276,
-      275,  274,  234,  234,  234,  234,  297,  297,  297,  273,
-      271,  269,  297,  297,  297,  297,  330,  330,  268,  330,
-      330,  330,  266,  265,  262,  330,  330,  330,  330,  348,
-      348,  348,  261,  259,  258,  348,  348,  348,  348,  255,
-      253,  251,  248,  349,  349,  349,  247,  246,  297,  349,
-
-      349,  349,  349,  371,  371,  371,  371,  372,  372,  372,
-      372,  373,  373,  373,  374,  244,  374,  374,  243,  242,
-      241,  240,  239,  238,  237,  236,  235,  231,  230,  228,
-      226,  213,  212,  211,  210,  208,  207,  206,  205,  204,
-      202,  201,  200,  199,  198,  197,  195,  192,  191,  190,
-      189,  188,  187,  186,  185,  184,  182,  181,  180,  179,
-      178,  177,  176,  175,  174,  173,  172,  171,  170,  169,
-      168,  167,  166,  165,  163,  162,  161,  154,  153,  152,
-      151,  150,  148,  147,  120,  119,  118,  117,  116,  115,
-      114,  113,  112,  111,  110,  109,  107,  106,  104,  102,
-
-       97,   95,   94,   93,   92,   91,   90,   89,   87,   85,
-       81,   80,   79,   78,   65,   64,   63,   62,   61,   60,
-       59,   58,   57,   46,   41,   32,   28,   26,    7,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  370
-
-    } ;
-
-/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[127] =
-    {   0,
-0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
-    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0,     };
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int yy_flex_debug;
-int yy_flex_debug = 1;
-
-static yyconst flex_int16_t yy_rule_linenum[126] =
-    {   0,
-      170,  171,  172,  173,  174,  175,  176,  178,  180,  182,
-      184,  185,  186,  187,  188,  193,  194,  195,  196,  197,
-      198,  199,  200,  202,  204,  206,  207,  208,  209,  211,
-      212,  213,  215,  216,  217,  219,  220,  222,  224,  225,
-      226,  228,  229,  231,  232,  233,  235,  238,  240,  241,
-      243,  244,  245,  246,  247,  248,  249,  251,  252,  254,
-      256,  257,  258,  259,  260,  261,  262,  263,  264,  267,
-      269,  270,  271,  273,  274,  275,  276,  279,  280,  281,
-      283,  284,  285,  286,  287,  288,  289,  291,  292,  293,
-      294,  296,  298,  300,  302,  304,  306,  307,  309,  311,
-
-      312,  313,  314,  316,  318,  319,  320,  322,  324,  326,
-      327,  328,  329,  330,  332,  334,  336,  337,  339,  341,
-      343,  345,  347,  349,  350
-    } ;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "shrink.l"
-/*509:*/
-#line 3 "shrink.l"
-	#line 10175 "format.w"
-	
-#include "basetypes.h"
-#include "error.h"
-#include "hformat.h"
-#include "hput.h"
-
-	/*423:*/
-#ifdef DEBUG
-#define  YYDEBUG 1
-extern int yydebug;
-#else
-#define YYDEBUG 0
-#endif
-	/*:423*/
-#include "parser.h"
-
-	/*22:*/
-#define SCAN_UDEC(S) yylval.u= strtoul(S,NULL,10)
-	/*:22*/	/*25:*/
-#define SCAN_HEX(S) yylval.u= strtoul(S,NULL,16)
-	/*:25*/	/*28:*/
-#define SCAN_DEC(S) yylval.i= strtol(S,NULL,10)
-	/*:28*/	/*31:*/
-#define MAX_STR    (1<<10) 
-static char str_buffer[MAX_STR];
-static int str_length;
-#define STR_START      (str_length= 0)
-#define STR_PUT(C) (str_buffer[str_length++]= (C))
-#define STR_ADD(C) STR_PUT(C);RNG("String length",str_length,0,MAX_STR-1)
-#define STR_END        str_buffer[str_length]= 0
-#define SCAN_STR       yylval.s= str_buffer
-	/*:31*/	/*40:*/
-#define SCAN_UTF8_1(S)   yylval.u= ((S)[0]&0x7F)
-	/*:40*/	/*42:*/
-#define SCAN_UTF8_2(S)   yylval.u= (((S)[0]&0x1F)<<6)+((S)[1]&0x3F)
-	/*:42*/	/*44:*/
-#define SCAN_UTF8_3(S)   yylval.u= (((S)[0]&0x0F)<<12)+(((S)[1]&0x3F)<<6)+((S)[2]&0x3F)
-	/*:44*/	/*46:*/
-#define SCAN_UTF8_4(S)   yylval.u= (((S)[0]&0x03)<<18)+(((S)[1]&0x3F)<<12)+(((S)[2]&0x3F)<<6)+((S)[3]&0x3F)
-	/*:46*/	/*57:*/
-#define SCAN_DECFLOAT       yylval.f= atof(yytext)
-	/*:57*/	/*60:*/
-#define SCAN_HEXFLOAT       yylval.f= xtof(yytext)
-	/*:60*/	/*152:*/
-#define SCAN_REF(K) yylval.rf.k= K; yylval.rf.n= atoi(yytext+2)
-static int scan_level= 0;
-#define SCAN_START          yy_push_state(INITIAL);if (1==scan_level++) hpos0= hpos;
-#define SCAN_END            if (scan_level--) yy_pop_state(); else QUIT("Too many '>' in line %d",yylineno)
-#define SCAN_TXT_START      BEGIN(TXT)
-#define SCAN_TXT_END        BEGIN(INITIAL)
-	/*:152*/
-	/*61:*/
-
-float64_t xtof(char*x)
-{
-	#line 1369 "format.w"
-	int sign,digits,exp;
-	uint64_t mantissa= 0;
-	DBG(DBGFLOAT,"converting %s:\n",x);
-		/*62:*/
-	if(*x=='-'){sign= -1;x++;}
-	else if(*x=='+'){sign= +1;x++;}
-	else sign= +1;
-	DBG(DBGFLOAT,"\tsign=%d\n",sign);
-		/*:62*/
-	x= x+2;
-		/*63:*/
-	digits= 0;
-	while(*x=='0')x++;
-	while(*x!='.')
-	{mantissa= mantissa<<4;
-	if(*x<'A')mantissa= mantissa+*x-'0';
-	else mantissa= mantissa+*x-'A'+10;
-	x++;
-	digits++;
-	}
-	x++;
-	exp= 0;
-	while(*x!=0&&*x!='x')
-	{mantissa= mantissa<<4;
-	exp= exp-4;
-	if(*x<'A')mantissa= mantissa+*x-'0';
-	else mantissa= mantissa+*x-'A'+10;
-	x++;
-	digits++;
-	}
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-		/*:63*/
-		/*64:*/
-	if(mantissa==0)return 0.0;
-	{int s;
-	s= digits-DBL_M_BITS/4;
-	if(s>1)
-	mantissa= mantissa>>(4*(s-1));
-	else if(s<1)
-	mantissa= mantissa<<(4*(1-s));
-	exp= exp+4*(digits-1);
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-	while((mantissa>>DBL_M_BITS)>1){mantissa= mantissa>>1;exp++;}
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-	mantissa= mantissa&~((uint64_t)1<<DBL_M_BITS);
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-	}
-		/*:64*/
-		/*65:*/
-	if(*x=='x')
-	{int s;
-	x++;
-	if(*x=='-'){s= -1;x++;}
-	else if(*x=='+'){s= +1;x++;}
-	else s= +1;
-	DBG(DBGFLOAT,"\texpsign=%d\n",s);
-	DBG(DBGFLOAT,"\texp=%d\n",exp);
-	while(*x!=0)
-	{if(*x<'A')exp= exp+4*s*(*x-'0');
-	else exp= exp+4*s*(*x-'A'+10);
-	x++;
-	DBG(DBGFLOAT,"\texp=%d\n",exp);
-	}
-	}
-	RNG("Floating point exponent",exp,-DBL_EXCESS,DBL_EXCESS);
-		/*:65*/
-		/*66:*/
-	{union{float64_t d;uint64_t bits;}u;
-	if(sign<0)sign= 1;else sign= 0;
-	exp= exp+DBL_EXCESS;
-	u.bits= ((uint64_t)sign<<63)
-		|((uint64_t)exp<<DBL_M_BITS)	|mantissa;
-	DBG(DBGFLOAT," return %f\n",u.d);
-	return u.d;
-	}
-		/*:66*/
-	}
-	/*:61*/
-int yywrap(void){
-	#line 10186 "format.w"
-	return 1;}
-#ifdef _MSC_VER
-#pragma  warning( disable : 4267)
-#endif
-
-#define YY_NO_UNISTD_H 1
-#define YY_NO_INPUT 1
-/*23:*/
-/*:23*/	/*32:*/
-
-/*:32*/	/*39:*/
-/*:39*/	/*41:*/
-/*:41*/	/*43:*/
-/*:43*/	/*45:*/
-/*:45*/	/*149:*/
-
-/*:149*/
-#line 1009 "shrink.lex.c"
-
-#define INITIAL 0
-#define STR 1
-#define TXT 2
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-/* %if-c-only */
-#include <unistd.h>
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-/* %if-c-only Reentrant structure and macros (non-C++). */
-/* %if-reentrant */
-/* %if-c-only */
-
-static int yy_init_globals (void );
-
-/* %endif */
-/* %if-reentrant */
-/* %endif */
-/* %endif End reentrant structures and macros. */
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int yylex_destroy (void );
-
-int yyget_debug (void );
-
-void yyset_debug (int debug_flag  );
-
-YY_EXTRA_TYPE yyget_extra (void );
-
-void yyset_extra (YY_EXTRA_TYPE user_defined  );
-
-FILE *yyget_in (void );
-
-void yyset_in  (FILE * in_str  );
-
-FILE *yyget_out (void );
-
-void yyset_out  (FILE * out_str  );
-
-yy_size_t yyget_leng (void );
-
-char *yyget_text (void );
-
-int yyget_lineno (void );
-
-void yyset_lineno (int line_number  );
-
-/* %if-bison-bridge */
-/* %endif */
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap (void );
-#else
-extern int yywrap (void );
-#endif
-#endif
-
-/* %not-for-header */
-
-/* %ok-for-header */
-
-/* %endif */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-/* %if-c-only Standard (non-C++) definition */
-/* %not-for-header */
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-/* %ok-for-header */
-
-/* %endif */
-#endif
-
-/* %if-c-only */
-
-        static int yy_start_stack_ptr = 0;
-        static int yy_start_stack_depth = 0;
-        static int *yy_start_stack = NULL;
-    
-    static void yy_push_state (int new_state );
-    
-    static void yy_pop_state (void );
-    
-/* %endif */
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* %if-c-only Standard (non-C++) definition */
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
-/* %endif */
-/* %if-c++-only C++ definition */
-/* %endif */
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-		{ \
-		int c = '*'; \
-		size_t n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( yyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else \
-		{ \
-		errno=0; \
-		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-			{ \
-			if( errno != EINTR) \
-				{ \
-				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-				break; \
-				} \
-			errno=0; \
-			clearerr(yyin); \
-			} \
-		}\
-\
-/* %if-c++-only C++ definition \ */\
-/* %endif */
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-/* %if-c-only */
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-#endif
-
-/* %if-tables-serialization structures and prototypes */
-/* %not-for-header */
-
-/* %ok-for-header */
-
-/* %not-for-header */
-
-/* %tables-yydmap generated elements */
-/* %endif */
-/* end tables serialization structures and prototypes */
-
-/* %ok-for-header */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-/* %if-c-only Standard (non-C++) definition */
-
-extern int yylex (void);
-
-#define YY_DECL int yylex (void)
-/* %endif */
-/* %if-c++-only C++ definition */
-/* %endif */
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-/* %% [6.0] YY_RULE_SETUP definition goes here */
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-/* %not-for-header */
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-    
-/* %% [7.0] user's declarations go here */
-#line 167 "shrink.l"
-
-
-	/*3:*/
-#line 1263 "shrink.lex.c"
-
-	if ( !(yy_init) )
-		{
-		(yy_init) = 1;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! (yy_start) )
-			(yy_start) = 1;	/* first start state */
-
-		if ( ! yyin )
-/* %if-c-only */
-			yyin = stdin;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
-		if ( ! yyout )
-/* %if-c-only */
-			yyout = stdout;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
-		if ( ! YY_CURRENT_BUFFER ) {
-			yyensure_buffer_stack ();
-			YY_CURRENT_BUFFER_LVALUE =
-				yy_create_buffer(yyin,YY_BUF_SIZE );
-		}
-
-		yy_load_buffer_state( );
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-/* %% [8.0] yymore()-related code goes here */
-		yy_cp = (yy_c_buf_p);
-
-		/* Support of yytext. */
-		*yy_cp = (yy_hold_char);
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-/* %% [9.0] code to set up and find next match goes here */
-		yy_current_state = (yy_start);
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			if ( yy_accept[yy_current_state] )
-				{
-				(yy_last_accepting_state) = yy_current_state;
-				(yy_last_accepting_cpos) = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 371 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			++yy_cp;
-			}
-		while ( yy_current_state != 370 );
-		yy_cp = (yy_last_accepting_cpos);
-		yy_current_state = (yy_last_accepting_state);
-
-yy_find_action:
-/* %% [10.0] code to find the action number goes here */
-		yy_act = yy_accept[yy_current_state];
-
-		YY_DO_BEFORE_ACTION;
-
-/* %% [11.0] code for yylineno update goes here */
-
-		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
-			{
-			int yyl;
-			for ( yyl = 0; yyl < yyleng; ++yyl )
-				if ( yytext[yyl] == '\n' )
-					   
-    yylineno++;
-;
-			}
-
-do_action:	/* This label is used only to access EOF actions. */
-
-/* %% [12.0] debug code goes here */
-		if ( yy_flex_debug )
-			{
-			if ( yy_act == 0 )
-				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 126 )
-				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
-				         (long)yy_rule_linenum[yy_act], yytext );
-			else if ( yy_act == 126 )
-				fprintf( stderr, "--accepting default rule (\"%s\")\n",
-				         yytext );
-			else if ( yy_act == 127 )
-				fprintf( stderr, "--(end of buffer or a NUL)\n" );
-			else
-				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
-			}
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-/* %% [13.0] actions go here */
-			case 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = (yy_hold_char);
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 170 "shrink.l"
-SCAN_START;return START;
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 171 "shrink.l"
-SCAN_END;return END;
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 172 "shrink.l"
-return GLYPH;
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 173 "shrink.l"
-SCAN_UDEC(yytext);return UNSIGNED;
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 174 "shrink.l"
-SCAN_UDEC(yytext+1);return REFERENCE;
-	YY_BREAK
-case 6:
-/* rule 6 can match eol */
-YY_RULE_SETUP
-#line 175 "shrink.l"
-;
-	YY_BREAK
-case 7:
-/* rule 7 can match eol */
-YY_RULE_SETUP
-#line 176 "shrink.l"
-;
-	YY_BREAK
-/*:3*/	/*24:*/
-case 8:
-YY_RULE_SETUP
-#line 178 "shrink.l"
-SCAN_HEX(yytext+2);return UNSIGNED;
-	YY_BREAK
-/*:24*/	/*27:*/
-case 9:
-YY_RULE_SETUP
-#line 180 "shrink.l"
-SCAN_DEC(yytext);return SIGNED;
-	YY_BREAK
-/*:27*/	/*34:*/
-case 10:
-YY_RULE_SETUP
-#line 182 "shrink.l"
-STR_START;BEGIN(STR);
-	YY_BREAK
-
-case 11:
-YY_RULE_SETUP
-#line 184 "shrink.l"
-STR_END;SCAN_STR;BEGIN(INITIAL);return STRING;
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 185 "shrink.l"
-STR_ADD('\'');
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 186 "shrink.l"
-STR_ADD(yytext[0]);
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 187 "shrink.l"
-RNG("String character",yytext[0],0x20,0x7E);
-	YY_BREAK
-case 15:
-/* rule 15 can match eol */
-YY_RULE_SETUP
-#line 188 "shrink.l"
-QUIT("Unterminated String in line %d",yylineno);
-	YY_BREAK
-
-/*:34*/	/*48:*/
-case 16:
-YY_RULE_SETUP
-#line 193 "shrink.l"
-STR_START;STR_PUT('\'');BEGIN(STR);
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 194 "shrink.l"
-SCAN_UTF8_1(yytext+1);return CHARCODE;
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 195 "shrink.l"
-STR_START;STR_PUT(yytext[1]);STR_PUT('\'');BEGIN(STR);
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 196 "shrink.l"
-STR_START;STR_PUT('\'');STR_PUT('\'');BEGIN(STR);
-	YY_BREAK
-case 20:
-/* rule 20 can match eol */
-YY_RULE_SETUP
-#line 197 "shrink.l"
-SCAN_UTF8_1(yytext+1);return CHARCODE;
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 198 "shrink.l"
-SCAN_UTF8_2(yytext+1);return CHARCODE;
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 199 "shrink.l"
-SCAN_UTF8_3(yytext+1);return CHARCODE;
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 200 "shrink.l"
-SCAN_UTF8_4(yytext+1);return CHARCODE;
-	YY_BREAK
-/*:48*/	/*55:*/
-case 24:
-YY_RULE_SETUP
-#line 202 "shrink.l"
-SCAN_DECFLOAT;return FPNUM;
-	YY_BREAK
-/*:55*/	/*59:*/
-case 25:
-YY_RULE_SETUP
-#line 204 "shrink.l"
-SCAN_HEXFLOAT;return FPNUM;
-	YY_BREAK
-/*:59*/	/*80:*/
-case 26:
-YY_RULE_SETUP
-#line 206 "shrink.l"
-return DIMEN;
-	YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 207 "shrink.l"
-return PT;
-	YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 208 "shrink.l"
-return MM;
-	YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 209 "shrink.l"
-return INCH;
-	YY_BREAK
-/*:80*/	/*88:*/
-case 30:
-YY_RULE_SETUP
-#line 211 "shrink.l"
-return XDIMEN;
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 212 "shrink.l"
-return H;
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 213 "shrink.l"
-return V;
-	YY_BREAK
-/*:88*/	/*99:*/
-case 33:
-YY_RULE_SETUP
-#line 215 "shrink.l"
-return FIL;
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 216 "shrink.l"
-return FILL;
-	YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 217 "shrink.l"
-return FILLL;
-	YY_BREAK
-/*:99*/	/*103:*/
-case 36:
-YY_RULE_SETUP
-#line 219 "shrink.l"
-return PENALTY;
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 220 "shrink.l"
-return INTEGER;
-	YY_BREAK
-/*:103*/	/*109:*/
-case 38:
-YY_RULE_SETUP
-#line 222 "shrink.l"
-return LANGUAGE;
-	YY_BREAK
-/*:109*/	/*115:*/
-case 39:
-YY_RULE_SETUP
-#line 224 "shrink.l"
-return RULE;
-	YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 225 "shrink.l"
-return RUNNING;
-	YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 226 "shrink.l"
-return RUNNING;
-	YY_BREAK
-/*:115*/	/*124:*/
-case 42:
-YY_RULE_SETUP
-#line 228 "shrink.l"
-return KERN;
-	YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 229 "shrink.l"
-return EXPLICIT;
-	YY_BREAK
-/*:124*/	/*133:*/
-case 44:
-YY_RULE_SETUP
-#line 231 "shrink.l"
-return GLUE;
-	YY_BREAK
-case 45:
-YY_RULE_SETUP
-#line 232 "shrink.l"
-return PLUS;
-	YY_BREAK
-case 46:
-YY_RULE_SETUP
-#line 233 "shrink.l"
-return MINUS;
-	YY_BREAK
-/*:133*/	/*151:*/
-case 47:
-YY_RULE_SETUP
-#line 235 "shrink.l"
-SCAN_TXT_START;return TXT_START;
-	YY_BREAK
-
-case 48:
-YY_RULE_SETUP
-#line 238 "shrink.l"
-SCAN_TXT_END;return TXT_END;
-	YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 240 "shrink.l"
-SCAN_START;return START;
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 241 "shrink.l"
-QUIT("> not allowed in text mode");
-	YY_BREAK
-case 51:
-YY_RULE_SETUP
-#line 243 "shrink.l"
-yylval.u= '\\';return TXT_CC;
-	YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 244 "shrink.l"
-yylval.u= '"';return TXT_CC;
-	YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 245 "shrink.l"
-yylval.u= '<';return TXT_CC;
-	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 246 "shrink.l"
-yylval.u= '>';return TXT_CC;
-	YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 247 "shrink.l"
-yylval.u= ' ';return TXT_CC;
-	YY_BREAK
-case 56:
-YY_RULE_SETUP
-#line 248 "shrink.l"
-yylval.u= '-';return TXT_CC;
-	YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 249 "shrink.l"
-return TXT_IGNORE;
-	YY_BREAK
-case 58:
-/* rule 58 can match eol */
-YY_RULE_SETUP
-#line 251 "shrink.l"
-return TXT_FONT_GLUE;
-	YY_BREAK
-case 59:
-/* rule 59 can match eol */
-YY_RULE_SETUP
-#line 252 "shrink.l"
-;
-	YY_BREAK
-case 60:
-YY_RULE_SETUP
-#line 254 "shrink.l"
-yylval.u= yytext[1]-'0';return TXT_FONT;
-	YY_BREAK
-case 61:
-YY_RULE_SETUP
-#line 256 "shrink.l"
-SCAN_REF(font_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 62:
-YY_RULE_SETUP
-#line 257 "shrink.l"
-SCAN_REF(penalty_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 63:
-YY_RULE_SETUP
-#line 258 "shrink.l"
-SCAN_REF(kern_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 64:
-YY_RULE_SETUP
-#line 259 "shrink.l"
-SCAN_REF(ligature_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 65:
-YY_RULE_SETUP
-#line 260 "shrink.l"
-SCAN_REF(disc_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 66:
-YY_RULE_SETUP
-#line 261 "shrink.l"
-SCAN_REF(glue_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 67:
-YY_RULE_SETUP
-#line 262 "shrink.l"
-SCAN_REF(language_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 263 "shrink.l"
-SCAN_REF(rule_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 69:
-YY_RULE_SETUP
-#line 264 "shrink.l"
-SCAN_REF(image_kind);return TXT_GLOBAL;
-	YY_BREAK
-case 70:
-YY_RULE_SETUP
-#line 267 "shrink.l"
-SCAN_UDEC(yytext+2);return TXT_CC;
-	YY_BREAK
-case 71:
-YY_RULE_SETUP
-#line 269 "shrink.l"
-yylval.u= yytext[1]-'a';return TXT_LOCAL;
-	YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 270 "shrink.l"
-return TXT_FONT_GLUE;
-	YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 271 "shrink.l"
-return TXT_FONT_HYPHEN;
-	YY_BREAK
-case 74:
-/* rule 74 can match eol */
-YY_RULE_SETUP
-#line 273 "shrink.l"
-SCAN_UTF8_1(yytext);return TXT_CC;
-	YY_BREAK
-case 75:
-YY_RULE_SETUP
-#line 274 "shrink.l"
-SCAN_UTF8_2(yytext);return TXT_CC;
-	YY_BREAK
-case 76:
-YY_RULE_SETUP
-#line 275 "shrink.l"
-SCAN_UTF8_3(yytext);return TXT_CC;
-	YY_BREAK
-case 77:
-YY_RULE_SETUP
-#line 276 "shrink.l"
-SCAN_UTF8_4(yytext);return TXT_CC;
-	YY_BREAK
-
-/*:151*/	/*162:*/
-case 78:
-YY_RULE_SETUP
-#line 279 "shrink.l"
-return HBOX;
-	YY_BREAK
-case 79:
-YY_RULE_SETUP
-#line 280 "shrink.l"
-return VBOX;
-	YY_BREAK
-case 80:
-YY_RULE_SETUP
-#line 281 "shrink.l"
-return SHIFTED;
-	YY_BREAK
-/*:162*/	/*170:*/
-case 81:
-YY_RULE_SETUP
-#line 283 "shrink.l"
-return HPACK;
-	YY_BREAK
-case 82:
-YY_RULE_SETUP
-#line 284 "shrink.l"
-return HSET;
-	YY_BREAK
-case 83:
-YY_RULE_SETUP
-#line 285 "shrink.l"
-return VPACK;
-	YY_BREAK
-case 84:
-YY_RULE_SETUP
-#line 286 "shrink.l"
-return VSET;
-	YY_BREAK
-case 85:
-YY_RULE_SETUP
-#line 287 "shrink.l"
-return ADD;
-	YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 288 "shrink.l"
-return TO;
-	YY_BREAK
-case 87:
-YY_RULE_SETUP
-#line 289 "shrink.l"
-return DEPTH;
-	YY_BREAK
-/*:170*/	/*175:*/
-case 88:
-YY_RULE_SETUP
-#line 291 "shrink.l"
-return LEADERS;
-	YY_BREAK
-case 89:
-YY_RULE_SETUP
-#line 292 "shrink.l"
-return ALIGN;
-	YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 293 "shrink.l"
-return CENTER;
-	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 294 "shrink.l"
-return EXPAND;
-	YY_BREAK
-/*:175*/	/*182:*/
-case 92:
-YY_RULE_SETUP
-#line 296 "shrink.l"
-return BASELINE;
-	YY_BREAK
-/*:182*/	/*189:*/
-case 93:
-YY_RULE_SETUP
-#line 298 "shrink.l"
-return LIGATURE;
-	YY_BREAK
-/*:189*/	/*197:*/
-case 94:
-YY_RULE_SETUP
-#line 300 "shrink.l"
-return DISC;
-	YY_BREAK
-/*:197*/	/*205:*/
-case 95:
-YY_RULE_SETUP
-#line 302 "shrink.l"
-return PAR;
-	YY_BREAK
-/*:205*/	/*210:*/
-case 96:
-YY_RULE_SETUP
-#line 304 "shrink.l"
-return MATH;
-	YY_BREAK
-/*:210*/	/*215:*/
-case 97:
-YY_RULE_SETUP
-#line 306 "shrink.l"
-return ON;
-	YY_BREAK
-case 98:
-YY_RULE_SETUP
-#line 307 "shrink.l"
-return OFF;
-	YY_BREAK
-/*:215*/	/*219:*/
-case 99:
-YY_RULE_SETUP
-#line 309 "shrink.l"
-return ADJUST;
-	YY_BREAK
-/*:219*/	/*223:*/
-case 100:
-YY_RULE_SETUP
-#line 311 "shrink.l"
-return TABLE;
-	YY_BREAK
-case 101:
-YY_RULE_SETUP
-#line 312 "shrink.l"
-return ITEM;
-	YY_BREAK
-case 102:
-YY_RULE_SETUP
-#line 313 "shrink.l"
-return ITEM;
-	YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 314 "shrink.l"
-return ITEM;
-	YY_BREAK
-/*:223*/	/*230:*/
-case 104:
-YY_RULE_SETUP
-#line 316 "shrink.l"
-return IMAGE;
-	YY_BREAK
-/*:230*/	/*247:*/
-case 105:
-YY_RULE_SETUP
-#line 318 "shrink.l"
-return LABEL;
-	YY_BREAK
-case 106:
-YY_RULE_SETUP
-#line 319 "shrink.l"
-return BOT;
-	YY_BREAK
-case 107:
-YY_RULE_SETUP
-#line 320 "shrink.l"
-return MID;
-	YY_BREAK
-/*:247*/	/*261:*/
-case 108:
-YY_RULE_SETUP
-#line 322 "shrink.l"
-return LINK;
-	YY_BREAK
-/*:261*/	/*271:*/
-case 109:
-YY_RULE_SETUP
-#line 324 "shrink.l"
-return OUTLINE;
-	YY_BREAK
-/*:271*/	/*278:*/
-case 110:
-YY_RULE_SETUP
-#line 326 "shrink.l"
-if(section_no==1)return STREAMDEF;else return STREAM;
-	YY_BREAK
-case 111:
-YY_RULE_SETUP
-#line 327 "shrink.l"
-return FIRST;
-	YY_BREAK
-case 112:
-YY_RULE_SETUP
-#line 328 "shrink.l"
-return LAST;
-	YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 329 "shrink.l"
-return TOP;
-	YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 330 "shrink.l"
-return NOREFERENCE;
-	YY_BREAK
-/*:278*/	/*288:*/
-case 115:
-YY_RULE_SETUP
-#line 332 "shrink.l"
-return PAGE;
-	YY_BREAK
-/*:288*/	/*296:*/
-case 116:
-YY_RULE_SETUP
-#line 334 "shrink.l"
-return RANGE;
-	YY_BREAK
-/*:296*/	/*323:*/
-case 117:
-YY_RULE_SETUP
-#line 336 "shrink.l"
-return DIRECTORY;
-	YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 337 "shrink.l"
-return SECTION;
-	YY_BREAK
-/*:323*/	/*342:*/
-case 119:
-YY_RULE_SETUP
-#line 339 "shrink.l"
-return DEFINITIONS;
-	YY_BREAK
-/*:342*/	/*350:*/
-case 120:
-YY_RULE_SETUP
-#line 341 "shrink.l"
-return MAX;
-	YY_BREAK
-/*:350*/	/*365:*/
-case 121:
-YY_RULE_SETUP
-#line 343 "shrink.l"
-return PARAM;
-	YY_BREAK
-/*:365*/	/*374:*/
-case 122:
-YY_RULE_SETUP
-#line 345 "shrink.l"
-return FONT;
-	YY_BREAK
-/*:374*/	/*402:*/
-case 123:
-YY_RULE_SETUP
-#line 347 "shrink.l"
-return CONTENT;
-	YY_BREAK
-/*:402*/
-case 124:
-YY_RULE_SETUP
-#line 349 "shrink.l"
-QUIT("Unexpected keyword '%s' in line %d",yytext,yylineno);
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 350 "shrink.l"
-QUIT("Unexpected character '%c' (0x%02X) in line %d",yytext[0]>' '?yytext[0]:' ',yytext[0],yylineno);
-	YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 352 "shrink.l"
-ECHO;
-	YY_BREAK
-#line 2064 "shrink.lex.c"
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(STR):
-case YY_STATE_EOF(TXT):
-	yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = (yy_hold_char);
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed yyin at a new source and called
-			 * yylex().  If so, then we have to assure
-			 * consistency between YY_CURRENT_BUFFER and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state(  );
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++(yy_c_buf_p);
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
-				yy_cp = (yy_last_accepting_cpos);
-				yy_current_state = (yy_last_accepting_state);
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer(  ) )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				(yy_did_buffer_switch_on_eof) = 0;
-
-				if ( yywrap( ) )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * yytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				(yy_c_buf_p) =
-					(yytext_ptr) + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				(yy_c_buf_p) =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-} /* end of yylex */
-/* %ok-for-header */
-
-/* %if-c++-only */
-/* %not-for-header */
-
-/* %ok-for-header */
-
-/* %endif */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-/* %if-c-only */
-static int yy_get_next_buffer (void)
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
-	else
-		{
-			yy_size_t num_to_read =
-			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
-
-			int yy_c_buf_p_offset =
-				(int) ((yy_c_buf_p) - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				yy_size_t new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-						number_to_move - 1;
-
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), num_to_read );
-
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	if ( (yy_n_chars) == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			yyrestart(yyin  );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-	}
-
-	(yy_n_chars) += number_to_move;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-	return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-/* %if-c-only */
-/* %not-for-header */
-
-    static yy_state_type yy_get_previous_state (void)
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-    
-/* %% [15.0] code to get the start state into yy_current_state goes here */
-	yy_current_state = (yy_start);
-
-	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-		{
-/* %% [16.0] code to find the next state goes here */
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		if ( yy_accept[yy_current_state] )
-			{
-			(yy_last_accepting_state) = yy_current_state;
-			(yy_last_accepting_cpos) = yy_cp;
-			}
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 371 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		}
-
-	return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-/* %if-c-only */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-	register int yy_is_jam;
-    /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
-	register char *yy_cp = (yy_c_buf_p);
-
-	register YY_CHAR yy_c = 1;
-	if ( yy_accept[yy_current_state] )
-		{
-		(yy_last_accepting_state) = yy_current_state;
-		(yy_last_accepting_cpos) = yy_cp;
-		}
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 371 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 370);
-
-		return yy_is_jam ? 0 : yy_current_state;
-}
-
-/* %if-c-only */
-
-/* %endif */
-
-/* %if-c-only */
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (void)
-#else
-    static int input  (void)
-#endif
-
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-	int c;
-    
-	*(yy_c_buf_p) = (yy_hold_char);
-
-	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			/* This was really a NUL. */
-			*(yy_c_buf_p) = '\0';
-
-		else
-			{ /* need more input */
-			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
-			++(yy_c_buf_p);
-
-			switch ( yy_get_next_buffer(  ) )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					yyrestart(yyin );
-
-					/*FALLTHROUGH*/
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( yywrap( ) )
-						return EOF;
-
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					(yy_c_buf_p) = (yytext_ptr) + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-	*(yy_c_buf_p) = '\0';	/* preserve yytext */
-	(yy_hold_char) = *++(yy_c_buf_p);
-
-/* %% [19.0] update BOL and yylineno */
-	if ( c == '\n' )
-		   
-    yylineno++;
-;
-
-	return c;
-}
-/* %if-c-only */
-#endif	/* ifndef YY_NO_INPUT */
-/* %endif */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-/* %if-c-only */
-    void yyrestart  (FILE * input_file )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    
-	if ( ! YY_CURRENT_BUFFER ){
-        yyensure_buffer_stack ();
-		YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer(yyin,YY_BUF_SIZE );
-	}
-
-	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
-	yy_load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-/* %if-c-only */
-    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    
-	/* TODO. We should be able to replace this entire function body
-	 * with
-	 *		yypop_buffer_state();
-	 *		yypush_buffer_state(new_buffer);
-     */
-	yyensure_buffer_stack ();
-	if ( YY_CURRENT_BUFFER == new_buffer )
-		return;
-
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	yy_load_buffer_state( );
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (yywrap()) processing, but the only time this flag
-	 * is looked at is after yywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-/* %if-c-only */
-static void yy_load_buffer_state  (void)
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-	(yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-/* %if-c-only */
-    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-	YY_BUFFER_STATE b;
-    
-	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	yy_init_buffer(b,file );
-
-	return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
- * 
- */
-/* %if-c-only */
-    void yy_delete_buffer (YY_BUFFER_STATE  b )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    
-	if ( ! b )
-		return;
-
-	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		yyfree((void *) b->yy_ch_buf  );
-
-	yyfree((void *) b  );
-}
-
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
- */
-/* %if-c-only */
-    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
-{
-	int oerrno = errno;
-    
-	yy_flush_buffer(b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then yy_init_buffer was _probably_
-     * called from yyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-/* %if-c-only */
-
-        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-    
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-	errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-/* %if-c-only */
-    void yy_flush_buffer (YY_BUFFER_STATE  b )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == YY_CURRENT_BUFFER )
-		yy_load_buffer_state( );
-}
-
-/* %if-c-or-c++ */
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-/* %if-c-only */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    	if (new_buffer == NULL)
-		return;
-
-	yyensure_buffer_stack();
-
-	/* This block is copied from yy_switch_to_buffer. */
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	/* Only push if top exists. Otherwise, replace top. */
-	if (YY_CURRENT_BUFFER)
-		(yy_buffer_stack_top)++;
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-	/* copied from yy_switch_to_buffer. */
-	yy_load_buffer_state( );
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-/* %endif */
-
-/* %if-c-or-c++ */
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-/* %if-c-only */
-void yypop_buffer_state (void)
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    	if (!YY_CURRENT_BUFFER)
-		return;
-
-	yy_delete_buffer(YY_CURRENT_BUFFER );
-	YY_CURRENT_BUFFER_LVALUE = NULL;
-	if ((yy_buffer_stack_top) > 0)
-		--(yy_buffer_stack_top);
-
-	if (YY_CURRENT_BUFFER) {
-		yy_load_buffer_state( );
-		(yy_did_buffer_switch_on_eof) = 1;
-	}
-}
-/* %endif */
-
-/* %if-c-or-c++ */
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-/* %if-c-only */
-static void yyensure_buffer_stack (void)
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-	yy_size_t num_to_alloc;
-    
-	if (!(yy_buffer_stack)) {
-
-		/* First allocation is just for 2 elements, since we don't know if this
-		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-		 * immediate realloc on the next call.
-         */
-		num_to_alloc = 1;
-		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
-								(num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-								  
-		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
-		(yy_buffer_stack_max) = num_to_alloc;
-		(yy_buffer_stack_top) = 0;
-		return;
-	}
-
-	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
-		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
-
-		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
-								((yy_buffer_stack),
-								num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
-		/* zero only the new slots.*/
-		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-		(yy_buffer_stack_max) = num_to_alloc;
-	}
-}
-/* %endif */
-
-/* %if-c-only */
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
-{
-	YY_BUFFER_STATE b;
-    
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	yy_switch_to_buffer(b  );
-
-	return b;
-}
-/* %endif */
-
-/* %if-c-only */
-/** Setup the input buffer state to scan a string. The next call to yylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       yy_scan_bytes() instead.
- */
-YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
-{
-    
-	return yy_scan_bytes(yystr,strlen(yystr) );
-}
-/* %endif */
-
-/* %if-c-only */
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
- * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
-{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-    
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
-	buf = (char *) yyalloc(n  );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-	for ( i = 0; i < _yybytes_len; ++i )
-		buf[i] = yybytes[i];
-
-	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = yy_scan_buffer(buf,n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-}
-/* %endif */
-
-/* %if-c-only */
-    static void yy_push_state (int  new_state )
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    	if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
-		{
-		yy_size_t new_size;
-
-		(yy_start_stack_depth) += YY_START_STACK_INCR;
-		new_size = (yy_start_stack_depth) * sizeof( int );
-
-		if ( ! (yy_start_stack) )
-			(yy_start_stack) = (int *) yyalloc(new_size  );
-
-		else
-			(yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size  );
-
-		if ( ! (yy_start_stack) )
-			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
-		}
-
-	(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
-
-	BEGIN(new_state);
-}
-
-/* %if-c-only */
-    static void yy_pop_state  (void)
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-{
-    	if ( --(yy_start_stack_ptr) < 0 )
-		YY_FATAL_ERROR( "start-condition stack underflow" );
-
-	BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-/* %if-c-only */
-static void yy_fatal_error (yyconst char* msg )
-{
-    	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-}
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		yytext[yyleng] = (yy_hold_char); \
-		(yy_c_buf_p) = yytext + yyless_macro_arg; \
-		(yy_hold_char) = *(yy_c_buf_p); \
-		*(yy_c_buf_p) = '\0'; \
-		yyleng = yyless_macro_arg; \
-		} \
-	while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/* %if-c-only */
-/* %if-reentrant */
-/* %endif */
-
-/** Get the current line number.
- * 
- */
-int yyget_lineno  (void)
-{
-        
-    return yylineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *yyget_in  (void)
-{
-        return yyin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *yyget_out  (void)
-{
-        return yyout;
-}
-
-/** Get the length of the current token.
- * 
- */
-yy_size_t yyget_leng  (void)
-{
-        return yyleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *yyget_text  (void)
-{
-        return yytext;
-}
-
-/* %if-reentrant */
-/* %endif */
-
-/** Set the current line number.
- * @param line_number
- * 
- */
-void yyset_lineno (int  line_number )
-{
-    
-    yylineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * 
- * @see yy_switch_to_buffer
- */
-void yyset_in (FILE *  in_str )
-{
-        yyin = in_str ;
-}
-
-void yyset_out (FILE *  out_str )
-{
-        yyout = out_str ;
-}
-
-int yyget_debug  (void)
-{
-        return yy_flex_debug;
-}
-
-void yyset_debug (int  bdebug )
-{
-        yy_flex_debug = bdebug ;
-}
-
-/* %endif */
-
-/* %if-reentrant */
-/* %if-bison-bridge */
-/* %endif */
-/* %endif if-c-only */
-
-/* %if-c-only */
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from yylex_destroy(), so don't allocate here.
-     */
-
-    /* We do not touch yylineno unless the option is enabled. */
-    yylineno =  1;
-    
-    (yy_buffer_stack) = 0;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-    (yy_start_stack_ptr) = 0;
-    (yy_start_stack_depth) = 0;
-    (yy_start_stack) =  NULL;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    yyin = stdin;
-    yyout = stdout;
-#else
-    yyin = (FILE *) 0;
-    yyout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * yylex_init()
-     */
-    return 0;
-}
-/* %endif */
-
-/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-	while(YY_CURRENT_BUFFER){
-		yy_delete_buffer(YY_CURRENT_BUFFER  );
-		YY_CURRENT_BUFFER_LVALUE = NULL;
-		yypop_buffer_state();
-	}
-
-	/* Destroy the stack itself. */
-	yyfree((yy_buffer_stack) );
-	(yy_buffer_stack) = NULL;
-
-    /* Destroy the start condition stack. */
-        yyfree((yy_start_stack)  );
-        (yy_start_stack) = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * yylex() is called, initialization will occur. */
-    yy_init_globals( );
-
-/* %if-reentrant */
-/* %endif */
-    return 0;
-}
-/* %endif */
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-}
-#endif
-
-void *yyalloc (yy_size_t  size )
-{
-	return (void *) malloc( size );
-}
-
-void *yyrealloc  (void * ptr, yy_size_t  size )
-{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-}
-
-void yyfree (void * ptr )
-{
-	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
-}
-
-/* %if-tables-serialization definitions */
-/* %define-yytables   The name for this specific scanner's tables. */
-#define YYTABLES_NAME "yytables"
-/* %endif */
-
-/* %ok-for-header */
-
-#line 352 "shrink.l"
-
-
-	/*:509*/
-

Deleted: trunk/Build/source/texk/web2c/hitexdir/lexer.l
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/lexer.l	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir/lexer.l	2021-09-28 21:45:20 UTC (rev 60644)
@@ -1,350 +0,0 @@
-		/*509:*/
-%{
-	
-#include "basetypes.h"
-#include "error.h"
-#include "hformat.h"
-#include "hput.h"
-
-		/*423:*/
-#ifdef DEBUG
-#define  YYDEBUG 1
-extern int yydebug;
-#else
-#define YYDEBUG 0
-#endif
-		/*:423*/
-#include "parser.h"
-
-		/*22:*/
-#define SCAN_UDEC(S) yylval.u= strtoul(S,NULL,10)
-		/*:22*/		/*25:*/
-#define SCAN_HEX(S) yylval.u= strtoul(S,NULL,16)
-		/*:25*/		/*28:*/
-#define SCAN_DEC(S) yylval.i= strtol(S,NULL,10)
-		/*:28*/		/*31:*/
-#define MAX_STR    (1<<10) 
-static char str_buffer[MAX_STR];
-static int str_length;
-#define STR_START      (str_length= 0)
-#define STR_PUT(C) (str_buffer[str_length++]= (C))
-#define STR_ADD(C) STR_PUT(C);RNG("String length",str_length,0,MAX_STR-1)
-#define STR_END        str_buffer[str_length]= 0
-#define SCAN_STR       yylval.s= str_buffer
-		/*:31*/		/*40:*/
-#define SCAN_UTF8_1(S)   yylval.u= ((S)[0]&0x7F)
-		/*:40*/		/*42:*/
-#define SCAN_UTF8_2(S)   yylval.u= (((S)[0]&0x1F)<<6)+((S)[1]&0x3F)
-		/*:42*/		/*44:*/
-#define SCAN_UTF8_3(S)   yylval.u= (((S)[0]&0x0F)<<12)+(((S)[1]&0x3F)<<6)+((S)[2]&0x3F)
-		/*:44*/		/*46:*/
-#define SCAN_UTF8_4(S)   yylval.u= (((S)[0]&0x03)<<18)+(((S)[1]&0x3F)<<12)+(((S)[2]&0x3F)<<6)+((S)[3]&0x3F)
-		/*:46*/		/*57:*/
-#define SCAN_DECFLOAT       yylval.f= atof(yytext)
-		/*:57*/		/*60:*/
-#define SCAN_HEXFLOAT       yylval.f= xtof(yytext)
-		/*:60*/		/*152:*/
-#define SCAN_REF(K) yylval.rf.k= K; yylval.rf.n= atoi(yytext+2)
-static int scan_level= 0;
-#define SCAN_START          yy_push_state(INITIAL);if (1==scan_level++) hpos0= hpos;
-#define SCAN_END            if (scan_level--) yy_pop_state(); else QUIT("Too many '>' in line %d",yylineno)
-#define SCAN_TXT_START      BEGIN(TXT)
-#define SCAN_TXT_END        BEGIN(INITIAL)
-		/*:152*/
-		/*61:*/
-
-float64_t xtof(char*x)
-{
-	int sign,digits,exp;
-	uint64_t mantissa= 0;
-	DBG(DBGFLOAT,"converting %s:\n",x);
-			/*62:*/
-	if(*x=='-'){sign= -1;x++;}
-	else if(*x=='+'){sign= +1;x++;}
-	else sign= +1;
-	DBG(DBGFLOAT,"\tsign=%d\n",sign);
-			/*:62*/
-	x= x+2;
-			/*63:*/
-	digits= 0;
-	while(*x=='0')x++;
-	while(*x!='.')
-	{mantissa= mantissa<<4;
-	if(*x<'A')mantissa= mantissa+*x-'0';
-	else mantissa= mantissa+*x-'A'+10;
-	x++;
-	digits++;
-	}
-	x++;
-	exp= 0;
-	while(*x!=0&&*x!='x')
-	{mantissa= mantissa<<4;
-	exp= exp-4;
-	if(*x<'A')mantissa= mantissa+*x-'0';
-	else mantissa= mantissa+*x-'A'+10;
-	x++;
-	digits++;
-	}
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-			/*:63*/
-			/*64:*/
-	if(mantissa==0)return 0.0;
-	{int s;
-	s= digits-DBL_M_BITS/4;
-	if(s>1)
-	mantissa= mantissa>>(4*(s-1));
-	else if(s<1)
-	mantissa= mantissa<<(4*(1-s));
-	exp= exp+4*(digits-1);
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-	while((mantissa>>DBL_M_BITS)>1){mantissa= mantissa>>1;exp++;}
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-	mantissa= mantissa&~((uint64_t)1<<DBL_M_BITS);
-	DBG(DBGFLOAT,"\tdigits=%d mantissa=0x%"PRIx64", exp=%d\n",digits,mantissa,exp);
-	}
-			/*:64*/
-			/*65:*/
-	if(*x=='x')
-	{int s;
-	x++;
-	if(*x=='-'){s= -1;x++;}
-	else if(*x=='+'){s= +1;x++;}
-	else s= +1;
-	DBG(DBGFLOAT,"\texpsign=%d\n",s);
-	DBG(DBGFLOAT,"\texp=%d\n",exp);
-	while(*x!=0)
-	{if(*x<'A')exp= exp+4*s*(*x-'0');
-	else exp= exp+4*s*(*x-'A'+10);
-	x++;
-	DBG(DBGFLOAT,"\texp=%d\n",exp);
-	}
-	}
-	RNG("Floating point exponent",exp,-DBL_EXCESS,DBL_EXCESS);
-			/*:65*/
-			/*66:*/
-	{union{float64_t d;uint64_t bits;}u;
-	if(sign<0)sign= 1;else sign= 0;
-	exp= exp+DBL_EXCESS;
-	u.bits= ((uint64_t)sign<<63)
-		|((uint64_t)exp<<DBL_M_BITS)	|mantissa;
-	DBG(DBGFLOAT," return %f\n",u.d);
-	return u.d;
-	}
-			/*:66*/
-	}
-		/*:61*/
-int yywrap(void){
-	return 1;}
-#ifdef _MSC_VER
-#pragma  warning( disable : 4267)
-#endif
-
-%}
-
-%option yylineno batch stack
-%option debug
-%option  nounistd nounput noinput noyy_top_state
-
-		/*23:*/
-HEX	[0-9A-F]
-		/*:23*/		/*32:*/
-%x STR
-		/*:32*/		/*39:*/
-UTF8_1	[\x00-\x7F]
-		/*:39*/		/*41:*/
-UTF8_2	[\xC0-\xDF][\x80-\xBF]
-		/*:41*/		/*43:*/
-UTF8_3	[\xE0-\xEF][\x80-\xBF][\x80-\xBF]
-		/*:43*/		/*45:*/
-UTF8_4	[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]
-		/*:45*/		/*149:*/
-%x TXT
-		/*:149*/
-
-%%
-
-		/*3:*/
-"<"	SCAN_START;return START;
-">"	SCAN_END;return END;
-glyph	return GLYPH;
-0|[1-9][0-9]*	SCAN_UDEC(yytext);return UNSIGNED;
-\*(0|[1-9][0-9]*)	SCAN_UDEC(yytext+1);return REFERENCE;
-[[:space:]]	;
-\([^()\n]*[)\n]	;
-		/*:3*/		/*24:*/
-0x{HEX}+	SCAN_HEX(yytext+2);return UNSIGNED;
-		/*:24*/		/*27:*/
-[+-](0|[1-9][0-9]*)	SCAN_DEC(yytext);return SIGNED;
-		/*:27*/		/*34:*/
-'	STR_START;BEGIN(STR);
-<STR>{
-'	STR_END;SCAN_STR;BEGIN(INITIAL);return STRING;
-''	STR_ADD('\'');
-[\x20-\x7E]	STR_ADD(yytext[0]);
-.	RNG("String character",yytext[0],0x20,0x7E);
-\n	QUIT("Unterminated String in line %d",yylineno);
-}
-
-
-		/*:34*/		/*48:*/
-'''	STR_START;STR_PUT('\'');BEGIN(STR);
-''''	SCAN_UTF8_1(yytext+1);return CHARCODE;
-'[\x20-\x7E]''	STR_START;STR_PUT(yytext[1]);STR_PUT('\'');BEGIN(STR);
-'''''	STR_START;STR_PUT('\'');STR_PUT('\'');BEGIN(STR);
-'{UTF8_1}'	SCAN_UTF8_1(yytext+1);return CHARCODE;
-'{UTF8_2}'	SCAN_UTF8_2(yytext+1);return CHARCODE;
-'{UTF8_3}'	SCAN_UTF8_3(yytext+1);return CHARCODE;
-'{UTF8_4}'	SCAN_UTF8_4(yytext+1);return CHARCODE;
-		/*:48*/		/*55:*/
-[+-]?[0-9]+\.[0-9]+(e[+-]?[0-9])?	SCAN_DECFLOAT;return FPNUM;
-		/*:55*/		/*59:*/
-[+-]?0x{HEX}+\.{HEX}+(x[+-]?{HEX}+)?	SCAN_HEXFLOAT;return FPNUM;
-		/*:59*/		/*80:*/
-dimen	return DIMEN;
-pt	return PT;
-mm	return MM;
-in	return INCH;
-		/*:80*/		/*88:*/
-xdimen	return XDIMEN;
-h	return H;
-v	return V;
-		/*:88*/		/*99:*/
-fil	return FIL;
-fill	return FILL;
-filll	return FILLL;
-		/*:99*/		/*103:*/
-penalty	return PENALTY;
-int	return INTEGER;
-		/*:103*/		/*109:*/
-language	return LANGUAGE;
-		/*:109*/		/*115:*/
-rule	return RULE;
-"|"	return RUNNING;
-"_"	return RUNNING;
-		/*:115*/		/*124:*/
-kern	return KERN;
-!	return EXPLICIT;
-		/*:124*/		/*133:*/
-glue	return GLUE;
-plus	return PLUS;
-minus	return MINUS;
-		/*:133*/		/*151:*/
-\"	SCAN_TXT_START;return TXT_START;
-
-<TXT>{
-\"	SCAN_TXT_END;return TXT_END;
-
-"<"	SCAN_START;return START;
-">"	QUIT("> not allowed in text mode");
-
-\\\\	yylval.u= '\\';return TXT_CC;
-\\\"	yylval.u= '"';return TXT_CC;
-\\"<"	yylval.u= '<';return TXT_CC;
-\\">"	yylval.u= '>';return TXT_CC;
-\\" "	yylval.u= ' ';return TXT_CC;
-\\"-"	yylval.u= '-';return TXT_CC;
-\\"@"	return TXT_IGNORE;
-
-[ \t\r]*(\n[ \t\r]*)+	return TXT_FONT_GLUE;
-\\[ \t\r]*\n[ \t\r]*	;
-
-\\[0-7]	yylval.u= yytext[1]-'0';return TXT_FONT;
-
-\\F[0-9]+\\	SCAN_REF(font_kind);return TXT_GLOBAL;
-\\P[0-9]+\\	SCAN_REF(penalty_kind);return TXT_GLOBAL;
-\\K[0-9]+\\	SCAN_REF(kern_kind);return TXT_GLOBAL;
-\\L[0-9]+\\	SCAN_REF(ligature_kind);return TXT_GLOBAL;
-\\D[0-9]+\\	SCAN_REF(disc_kind);return TXT_GLOBAL;
-\\G[0-9]+\\	SCAN_REF(glue_kind);return TXT_GLOBAL;
-\\S[0-9]+\\	SCAN_REF(language_kind);return TXT_GLOBAL;
-\\R[0-9]+\\	SCAN_REF(rule_kind);return TXT_GLOBAL;
-\\I[0-9]+\\	SCAN_REF(image_kind);return TXT_GLOBAL;
-
-
-\\C[0-9]+\\	SCAN_UDEC(yytext+2);return TXT_CC;
-
-\\[a-l]	yylval.u= yytext[1]-'a';return TXT_LOCAL;
-" "	return TXT_FONT_GLUE;
-"-"	return TXT_FONT_HYPHEN;
-
-{UTF8_1}	SCAN_UTF8_1(yytext);return TXT_CC;
-{UTF8_2}	SCAN_UTF8_2(yytext);return TXT_CC;
-{UTF8_3}	SCAN_UTF8_3(yytext);return TXT_CC;
-{UTF8_4}	SCAN_UTF8_4(yytext);return TXT_CC;
-}
-		/*:151*/		/*162:*/
-hbox	return HBOX;
-vbox	return VBOX;
-shifted	return SHIFTED;
-		/*:162*/		/*170:*/
-hpack	return HPACK;
-hset	return HSET;
-vpack	return VPACK;
-vset	return VSET;
-add	return ADD;
-to	return TO;
-depth	return DEPTH;
-		/*:170*/		/*175:*/
-leaders	return LEADERS;
-align	return ALIGN;
-center	return CENTER;
-expand	return EXPAND;
-		/*:175*/		/*182:*/
-baseline	return BASELINE;
-		/*:182*/		/*189:*/
-ligature	return LIGATURE;
-		/*:189*/		/*197:*/
-disc	return DISC;
-		/*:197*/		/*205:*/
-par	return PAR;
-		/*:205*/		/*210:*/
-math	return MATH;
-		/*:210*/		/*215:*/
-on	return ON;
-off	return OFF;
-		/*:215*/		/*219:*/
-adjust	return ADJUST;
-		/*:219*/		/*223:*/
-table	return TABLE;
-item	return ITEM;
-row	return ITEM;
-column	return ITEM;
-		/*:223*/		/*230:*/
-image	return IMAGE;
-		/*:230*/		/*247:*/
-label	return LABEL;
-bot	return BOT;
-mid	return MID;
-		/*:247*/		/*261:*/
-link	return LINK;
-		/*:261*/		/*271:*/
-outline	return OUTLINE;
-		/*:271*/		/*278:*/
-stream	if(section_no==1)return STREAMDEF;else return STREAM;
-first	return FIRST;
-last	return LAST;
-top	return TOP;
-\*	return NOREFERENCE;
-		/*:278*/		/*288:*/
-page	return PAGE;
-		/*:288*/		/*296:*/
-range	return RANGE;
-		/*:296*/		/*323:*/
-directory	return DIRECTORY;
-section	return SECTION;
-		/*:323*/		/*342:*/
-definitions	return DEFINITIONS;
-		/*:342*/		/*350:*/
-max	return MAX;
-		/*:350*/		/*365:*/
-param	return PARAM;
-		/*:365*/		/*374:*/
-font	return FONT;
-		/*:374*/		/*402:*/
-content	return CONTENT;
-		/*:402*/
-[a-z]+	QUIT("Unexpected keyword '%s' in line %d",yytext,yylineno);
-.	QUIT("Unexpected character '%c' (0x%02X) in line %d",yytext[0]>' '?yytext[0]:' ',yytext[0],yylineno);
-
-%%
-		/*:509*/

Deleted: trunk/Build/source/texk/web2c/hitexdir/parser.c
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/parser.c	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir/parser.c	2021-09-28 21:45:20 UTC (rev 60644)
@@ -1,4175 +0,0 @@
-/* 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 <http://www.gnu.org/licenses/>.  */
-
-/* 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 0
-
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
-
-
-
-/* Copy the first part of user declarations.  */
-/* Line 371 of yacc.c  */
-#line 2 "shrink.y"
-
-	#line 10216 "format.w"
-	
-#include "basetypes.h"
-#include <string.h>
-#include <math.h>
-#include "error.h"
-#include "hformat.h"
-#include "hput.h"
-extern char**hfont_name;
-
-	/*356:*/
-uint32_t definition_bits[0x100/32][32]= {
-	#line 7578 "format.w"
-	{0}};
-
-#define SET_DBIT(N,K) ((N)>0xFF?1:(definition_bits[N/32][K]	|= (1<<((N)&(32-1)))))
-#define GET_DBIT(N,K) ((N)>0xFF?1:((definition_bits[N/32][K]>>((N)&(32-1)))&1))
-#define DEF(D,K,N) (D).k= K; (D).n= (N);SET_DBIT((D).n,(D).k);\
- DBG(DBGDEF,"Defining %s %d\n",definition_name[(D).k],(D).n);\
- RNG("Definition",(D).n,max_fixed[(D).k]+1,max_ref[(D).k]);
-#define REF(K,N) REF_RNG(K,N);if(!GET_DBIT(N,K)) \
- QUIT("Reference %d to %s before definition",(N),definition_name[K])
-	/*:356*/	/*360:*/
-#define DEF_REF(D,K,M,N)  DEF(D,K,M);\
-if ((M)>max_default[K]) QUIT("Defining non default reference %d for %s",M,definition_name[K]); \
-if ((N)>max_fixed[K]) QUIT("Defining reference %d for %s by non fixed reference %d",M,definition_name[K],N);
-	/*:360*/
-
-extern void hset_entry(entry_t*e,uint16_t i,uint32_t size,
-uint32_t xsize,char*file_name);
-
-	/*423:*/
-#ifdef DEBUG
-#define  YYDEBUG 1
-extern int yydebug;
-#else
-#define YYDEBUG 0
-#endif
-	/*:423*/
-extern int yylex(void);
-
-	/*352:*/
-void hset_max(kind_t k,int n)
-{
-	#line 7421 "format.w"
-	DBG(DBGDEF,"Setting max %s to %d\n",definition_name[k],n);
-	RNG("Maximum",n,max_fixed[k]+1,MAX_REF(k));
-	if(n>max_ref[k])
-	max_ref[k]= n;
-	}
-	/*:352*/	/*363:*/
-void check_param_def(ref_t*df)
-{
-	#line 7727 "format.w"
-	if(df->k!=int_kind&&df->k!=dimen_kind&&df->k!=glue_kind)
-	QUIT("Kind %s not allowed in parameter list",definition_name[df->k]);
-	if(df->n<=max_fixed[df->k]||max_default[df->k]<df->n)
-	QUIT("Parameter %d for %s not allowed in parameter list",df->n,definition_name[df->k]);
-	}
-	/*:363*/	/*422:*/
-extern int yylineno;
-int yyerror(const char*msg)
-{
-	#line 8802 "format.w"
-	QUIT(" in line %d %s",yylineno,msg);
-	return 0;
-	}
-	/*:422*/
-
-
-
-/* Line 371 of yacc.c  */
-#line 141 "shrink.tab.c"
-
-# 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 1
-#endif
-
-/* In a future release of Bison, this section will be replaced
-   by #include "shrink.tab.h".  */
-#ifndef YY_YY_SHRINK_TAB_H_INCLUDED
-# define YY_YY_SHRINK_TAB_H_INCLUDED
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#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 {
-     START = 258,
-     END = 259,
-     GLYPH = 260,
-     UNSIGNED = 261,
-     REFERENCE = 262,
-     SIGNED = 263,
-     STRING = 264,
-     CHARCODE = 265,
-     FPNUM = 266,
-     DIMEN = 267,
-     PT = 268,
-     MM = 269,
-     INCH = 270,
-     XDIMEN = 271,
-     H = 272,
-     V = 273,
-     FIL = 274,
-     FILL = 275,
-     FILLL = 276,
-     PENALTY = 277,
-     INTEGER = 278,
-     LANGUAGE = 279,
-     RULE = 280,
-     RUNNING = 281,
-     KERN = 282,
-     EXPLICIT = 283,
-     GLUE = 284,
-     PLUS = 285,
-     MINUS = 286,
-     TXT_START = 287,
-     TXT_END = 288,
-     TXT_IGNORE = 289,
-     TXT_FONT_GLUE = 290,
-     TXT_FONT_HYPHEN = 291,
-     TXT_FONT = 292,
-     TXT_LOCAL = 293,
-     TXT_GLOBAL = 294,
-     TXT_CC = 295,
-     HBOX = 296,
-     VBOX = 297,
-     SHIFTED = 298,
-     HPACK = 299,
-     HSET = 300,
-     VPACK = 301,
-     VSET = 302,
-     DEPTH = 303,
-     ADD = 304,
-     TO = 305,
-     LEADERS = 306,
-     ALIGN = 307,
-     CENTER = 308,
-     EXPAND = 309,
-     BASELINE = 310,
-     LIGATURE = 311,
-     DISC = 312,
-     PAR = 313,
-     MATH = 314,
-     ON = 315,
-     OFF = 316,
-     ADJUST = 317,
-     TABLE = 318,
-     ITEM = 319,
-     IMAGE = 320,
-     LABEL = 321,
-     BOT = 322,
-     MID = 323,
-     LINK = 324,
-     OUTLINE = 325,
-     STREAM = 326,
-     STREAMDEF = 327,
-     FIRST = 328,
-     LAST = 329,
-     TOP = 330,
-     NOREFERENCE = 331,
-     PAGE = 332,
-     RANGE = 333,
-     DIRECTORY = 334,
-     SECTION = 335,
-     DEFINITIONS = 336,
-     MAX = 337,
-     PARAM = 338,
-     FONT = 339,
-     CONTENT = 340
-   };
-#endif
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-{
-/* Line 387 of yacc.c  */
-#line 79 "shrink.y"
-
-	#line 10241 "format.w"
-	uint32_t u;  int32_t i;  char *s;  float64_t f;  glyph_t c;
-	dimen_t d;stretch_t st;xdimen_t xd;kern_t kt;
-	rule_t r;glue_t g;image_t x;
-	list_t l;box_t h;disc_t dc;lig_t lg;
-	ref_t rf;info_t info;order_t o;bool b;
-	
-
-/* Line 387 of yacc.c  */
-#line 279 "shrink.tab.c"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-extern YYSTYPE yylval;
-
-#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 (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-#endif /* !YY_YY_SHRINK_TAB_H_INCLUDED  */
-
-/* Copy the second part of user declarations.  */
-
-/* Line 390 of yacc.c  */
-#line 307 "shrink.tab.c"
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(Msgid) Msgid
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
-#else
-# define YYUSE(E) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(N) (N)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int 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 <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#     include <stdlib.h> /* 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 <stdlib.h> /* 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  5
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   657
-
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  86
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  106
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  266
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  566
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   340
-
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 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
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     6,    11,    13,    15,    17,    20,    22,
-      24,    26,    28,    30,    33,    36,    39,    45,    49,    53,
-      55,    60,    62,    64,    66,    68,    71,    73,    78,    80,
-      82,    86,    91,    93,    94,    96,    99,   104,   105,   108,
-     109,   112,   116,   121,   126,   127,   129,   132,   133,   135,
-     140,   141,   147,   149,   152,   154,   156,   158,   160,   162,
-     164,   166,   167,   170,   174,   175,   178,   179,   182,   185,
-     190,   195,   200,   202,   204,   207,   213,   219,   222,   225,
-     228,   231,   235,   236,   244,   249,   254,   259,   264,   266,
-     268,   269,   271,   273,   275,   279,   283,   287,   292,   293,
-     298,   303,   304,   307,   309,   311,   313,   314,   321,   326,
-     328,   331,   335,   338,   340,   345,   347,   349,   353,   358,
-     362,   363,   368,   373,   377,   382,   385,   389,   393,   396,
-     400,   404,   408,   413,   418,   423,   425,   427,   429,   434,
-     436,   441,   447,   452,   457,   462,   467,   470,   471,   476,
-     481,   484,   486,   488,   490,   491,   497,   503,   511,   513,
-     515,   519,   520,   525,   527,   529,   531,   533,   544,   549,
-     551,   553,   556,   560,   563,   569,   570,   572,   573,   576,
-     577,   578,   589,   595,   601,   605,   606,   613,   614,   617,
-     623,   624,   631,   632,   635,   640,   641,   646,   649,   652,
-     655,   658,   661,   664,   667,   670,   673,   676,   679,   682,
-     685,   688,   691,   694,   697,   703,   709,   715,   721,   727,
-     733,   739,   745,   751,   757,   763,   769,   775,   781,   787,
-     793,   799,   801,   804,   807,   809,   810,   816,   819,   824,
-     827,   830,   836,   842,   848,   854,   860,   866,   872,   878,
-     880,   882,   884,   886,   891,   897,   904,   909,   914,   919,
-     924,   929,   934,   939,   944,   949,   950
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     167,     0,    -1,     6,     7,    -1,    89,     5,    87,     4,
-      -1,     3,    -1,     8,    -1,     6,    -1,    10,     7,    -1,
-       9,    -1,    10,    -1,     6,    -1,     8,    -1,    11,    -1,
-      92,    13,    -1,    92,    15,    -1,    92,    14,    -1,    93,
-      92,    17,    92,    18,    -1,    93,    92,    17,    -1,    93,
-      92,    18,    -1,    93,    -1,    89,    16,    94,     4,    -1,
-      13,    -1,    19,    -1,    20,    -1,    21,    -1,    92,    96,
-      -1,    90,    -1,    89,    22,    98,     4,    -1,    93,    -1,
-      26,    -1,    99,    99,    99,    -1,    89,    25,   100,     4,
-      -1,   101,    -1,    -1,    28,    -1,   102,    94,    -1,    89,
-      27,   103,     4,    -1,    -1,    30,    97,    -1,    -1,    31,
-      97,    -1,    94,   104,   105,    -1,    89,    29,   106,     4,
-      -1,    89,    29,   106,     4,    -1,    -1,   108,    -1,   109,
-      88,    -1,    -1,     6,    -1,    89,   110,   109,     4,    -1,
-      -1,    32,   108,   112,   113,    33,    -1,   108,    -1,   113,
-     114,    -1,    40,    -1,    37,    -1,    39,    -1,    38,    -1,
-      35,    -1,    36,    -1,    34,    -1,    -1,   115,    88,    -1,
-      93,    93,    93,    -1,    -1,    43,    93,    -1,    -1,    30,
-      97,    -1,    31,    97,    -1,   116,   117,   118,   111,    -1,
-      89,    41,   119,     4,    -1,    89,    42,   119,     4,    -1,
-     120,    -1,   121,    -1,   104,   105,    -1,   116,   117,   122,
-     187,   111,    -1,   116,   117,   122,    95,   111,    -1,    50,
-     187,    -1,    49,   187,    -1,    50,    95,    -1,    49,    95,
-      -1,   117,   124,   111,    -1,    -1,   117,    82,    48,    93,
-     127,   124,   111,    -1,    89,    47,   123,     4,    -1,    89,
-      46,   126,     4,    -1,    89,    45,   123,     4,    -1,    89,
-      44,   125,     4,    -1,   128,    -1,   129,    -1,    -1,    52,
-      -1,    53,    -1,    54,    -1,   107,   130,   101,    -1,   107,
-     130,   120,    -1,   107,   130,   121,    -1,    89,    51,   131,
-       4,    -1,    -1,    93,   133,   107,   107,    -1,    89,    55,
-     132,     4,    -1,    -1,   134,    40,    -1,     6,    -1,    10,
-      -1,     7,    -1,    -1,   136,   138,   135,    32,   134,    33,
-      -1,    89,    56,   137,     4,    -1,   102,    -1,   102,     6,
-      -1,   139,   111,   111,    -1,   139,   111,    -1,   139,    -1,
-      89,    57,   140,     4,    -1,   141,    -1,    94,    -1,   187,
-     188,   111,    -1,   187,   179,   180,   111,    -1,   187,   179,
-     111,    -1,    -1,    94,   188,   144,   111,    -1,   142,   179,
-     180,   111,    -1,   142,   179,   111,    -1,    89,    58,   143,
-       4,    -1,   188,   111,    -1,   188,   111,   120,    -1,   188,
-     120,   111,    -1,   179,   111,    -1,   179,   111,   120,    -1,
-     179,   120,   111,    -1,   179,   180,   111,    -1,   179,   180,
-     111,   120,    -1,   179,   180,   120,   111,    -1,    89,    59,
-     145,     4,    -1,    60,    -1,    61,    -1,   146,    -1,    89,
-      62,   111,     4,    -1,     6,    -1,    89,    64,    88,     4,
-      -1,    89,    64,   147,    88,     4,    -1,    89,    64,   111,
-       4,    -1,    17,   124,   111,   111,    -1,    18,   124,   111,
-     111,    -1,    89,    63,   148,     4,    -1,    93,    93,    -1,
-      -1,     6,   149,   104,   105,    -1,    89,    65,   150,     4,
-      -1,    70,     6,    -1,    75,    -1,    67,    -1,    68,    -1,
-      -1,     3,    66,     7,   152,     4,    -1,    89,    69,     7,
-     146,     4,    -1,     3,    70,     7,    90,   108,   111,     4,
-      -1,   136,    -1,    76,    -1,   154,   154,     6,    -1,    -1,
-      95,     6,   157,   155,    -1,   156,    -1,    73,    -1,    74,
-      -1,    75,    -1,    89,    72,   136,   158,   111,    95,   107,
-     111,   107,     4,    -1,    89,    72,   136,     4,    -1,   159,
-      -1,   160,    -1,   179,   111,    -1,   179,   180,   111,    -1,
-     188,   111,    -1,    89,    71,   189,   161,     4,    -1,    -1,
-       6,    -1,    -1,   163,   159,    -1,    -1,    -1,    91,   165,
-     162,   107,    93,   166,    95,    95,   111,   163,    -1,     3,
-      78,     7,    60,     4,    -1,     3,    78,     7,    61,     4,
-      -1,   168,   172,   190,    -1,    -1,     3,    79,     6,   169,
-     170,     4,    -1,    -1,   170,   171,    -1,     3,    80,     6,
-      91,     4,    -1,    -1,     3,    81,   173,   175,   174,     4,
-      -1,    -1,   174,   153,    -1,     3,    82,   176,     4,    -1,
-      -1,   176,     3,   151,     4,    -1,    84,     6,    -1,    23,
-       6,    -1,    12,     6,    -1,    56,     6,    -1,    57,     6,
-      -1,    29,     6,    -1,    24,     6,    -1,    25,     6,    -1,
-      65,     6,    -1,    51,     6,    -1,    55,     6,    -1,    16,
-       6,    -1,    83,     6,    -1,    72,     6,    -1,    77,     6,
-      -1,    78,     6,    -1,    66,     6,    -1,    89,    84,   136,
-     182,     4,    -1,    89,    23,   136,    90,     4,    -1,    89,
-      12,   136,    93,     4,    -1,    89,    24,   136,    91,     4,
-      -1,    89,    29,   136,   106,     4,    -1,    89,    16,   136,
-      94,     4,    -1,    89,    25,   136,   100,     4,    -1,    89,
-      51,   136,   131,     4,    -1,    89,    55,   136,   132,     4,
-      -1,    89,    56,   136,   137,     4,    -1,    89,    57,   136,
-     140,     4,    -1,    89,    65,   136,   150,     4,    -1,    89,
-      83,   136,   178,     4,    -1,    89,    77,   136,   164,     4,
-      -1,    89,    23,   136,   136,     4,    -1,    89,    12,   136,
-     136,     4,    -1,    89,    29,   136,   136,     4,    -1,   108,
-      -1,   177,   153,    -1,   110,   177,    -1,   108,    -1,    -1,
-      89,    83,   181,   178,     4,    -1,   183,   184,    -1,    91,
-      93,     6,     6,    -1,   107,   141,    -1,   184,   185,    -1,
-      89,    22,   186,    98,     4,    -1,    89,    27,   186,   103,
-       4,    -1,    89,    56,   186,   137,     4,    -1,    89,    57,
-     186,   140,     4,    -1,    89,    29,   186,   106,     4,    -1,
-      89,    24,   186,    91,     4,    -1,    89,    25,   186,   100,
-       4,    -1,    89,    65,   186,   150,     4,    -1,   136,    -1,
-     136,    -1,   136,    -1,   136,    -1,    89,    22,   136,     4,
-      -1,    89,    27,   102,   136,     4,    -1,    89,    27,   102,
-      16,   136,     4,    -1,    89,    29,   136,     4,    -1,    89,
-      56,   136,     4,    -1,    89,    57,   136,     4,    -1,    89,
-      25,   136,     4,    -1,    89,    65,   136,     4,    -1,    89,
-      51,   136,     4,    -1,    89,    55,   136,     4,    -1,    89,
-      24,     7,     4,    -1,    89,    29,   136,     4,    -1,    -1,
-       3,    85,   191,   109,     4,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,   264,   264,   267,   270,   274,   274,   278,   282,   282,
-     288,   290,   292,   294,   297,   300,   304,   307,   310,   313,
-     319,   324,   326,   328,   330,   334,   338,   341,   345,   345,
-     348,   354,   357,   359,   361,   364,   367,   371,   373,   376,
-     378,   381,   384,   388,   394,   397,   398,   399,   402,   405,
-     412,   411,   420,   420,   422,   425,   428,   431,   434,   437,
-     440,   443,   443,   448,   452,   455,   459,   462,   465,   470,
-     474,   477,   480,   480,   482,   485,   488,   492,   495,   498,
-     501,   505,   508,   508,   514,   517,   522,   525,   529,   529,
-     531,   533,   535,   537,   540,   543,   546,   549,   553,   553,
-     562,   567,   567,   570,   573,   576,   579,   579,   586,   590,
-     593,   597,   601,   604,   609,   614,   616,   619,   622,   625,
-     628,   628,   633,   636,   640,   644,   647,   650,   653,   656,
-     659,   662,   665,   668,   672,   676,   678,   681,   685,   689,
-     692,   695,   698,   702,   705,   709,   713,   715,   718,   721,
-     725,   732,   734,   736,   738,   741,   746,   751,   761,   763,
-     766,   769,   769,   773,   775,   777,   779,   783,   789,   794,
-     794,   796,   799,   802,   805,   810,   813,   817,   817,   819,
-     821,   819,   828,   831,   835,   837,   837,   840,   840,   841,
-     846,   846,   853,   853,   855,   880,   880,   882,   885,   888,
-     891,   894,   897,   900,   903,   906,   909,   912,   915,   918,
-     921,   924,   927,   930,   936,   939,   942,   945,   948,   951,
-     954,   957,   960,   963,   966,   969,   972,   975,   980,   983,
-     986,   990,   991,   994,   998,  1001,  1001,  1009,  1011,  1016,
-    1016,  1019,  1022,  1025,  1028,  1031,  1034,  1037,  1040,  1044,
-    1048,  1051,  1054,  1060,  1063,  1067,  1071,  1074,  1077,  1080,
-    1083,  1086,  1089,  1092,  1096,  1103,  1103
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || 1
-/* 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", "\"<\"", "\">\"", "\"glyph\"",
-  "UNSIGNED", "REFERENCE", "SIGNED", "STRING", "CHARCODE", "FPNUM",
-  "\"dimen\"", "\"pt\"", "\"mm\"", "\"in\"", "\"xdimen\"", "\"h\"",
-  "\"v\"", "\"fil\"", "\"fill\"", "\"filll\"", "\"penalty\"", "\"int\"",
-  "\"language\"", "\"rule\"", "\"|\"", "\"kern\"", "\"!\"", "\"glue\"",
-  "\"plus\"", "\"minus\"", "TXT_START", "TXT_END", "TXT_IGNORE",
-  "TXT_FONT_GLUE", "TXT_FONT_HYPHEN", "TXT_FONT", "TXT_LOCAL",
-  "TXT_GLOBAL", "TXT_CC", "\"hbox\"", "\"vbox\"", "\"shifted\"",
-  "\"hpack\"", "\"hset\"", "\"vpack\"", "\"vset\"", "\"depth\"", "\"add\"",
-  "\"to\"", "\"leaders\"", "\"align\"", "\"center\"", "\"expand\"",
-  "\"baseline\"", "\"ligature\"", "\"disc\"", "\"par\"", "\"math\"",
-  "\"on\"", "\"off\"", "\"adjust\"", "\"table\"", "\"item\"", "\"image\"",
-  "\"label\"", "\"bot\"", "\"mid\"", "\"link\"", "\"outline\"",
-  "\"stream\"", "\"stream (definition)\"", "\"first\"", "\"last\"",
-  "\"top\"", "\"*\"", "\"page\"", "\"range\"", "\"directory\"",
-  "\"entry\"", "\"definitions\"", "\"max\"", "\"param\"", "\"font\"",
-  "\"content\"", "$accept", "glyph", "content_node", "start", "integer",
-  "string", "number", "dimension", "xdimen", "xdimen_node", "order",
-  "stretch", "penalty", "rule_dimension", "rule", "rule_node", "explicit",
-  "kern", "plus", "minus", "glue", "glue_node", "position", "content_list",
-  "estimate", "list", "$@1", "text", "txt", "$@2", "box_dimen",
-  "box_shift", "box_glue_set", "box", "hbox_node", "vbox_node", "box_flex",
-  "xbox", "box_goal", "hpack", "vpack", "$@3", "vxbox_node", "hxbox_node",
-  "ltype", "leaders", "baseline", "$@4", "cc_list", "lig_cc", "ref",
-  "ligature", "$@5", "replace_count", "disc", "disc_node", "par_dimen",
-  "par", "$@6", "math", "on_off", "span_count", "table", "image_dimen",
-  "image", "max_value", "placement", "def_node", "stream_link",
-  "stream_split", "stream_info", "$@7", "stream_type", "stream_def_node",
-  "stream_ins_node", "stream", "page_priority", "stream_def_list", "page",
-  "$@8", "$@9", "hint", "directory_section", "$@10", "entry_list", "entry",
-  "definition_section", "$@11", "definition_list", "max_definitions",
-  "max_list", "def_list", "parameters", "empty_param_list",
-  "non_empty_param_list", "$@12", "font", "font_head", "font_param_list",
-  "font_param", "fref", "xdimen_ref", "param_ref", "stream_ref",
-  "content_section", "$@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
-};
-# endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    86,    87,    88,    89,    90,    90,    87,    91,    91,
-      92,    92,    92,    93,    93,    93,    94,    94,    94,    94,
-      95,    96,    96,    96,    96,    97,    98,    88,    99,    99,
-     100,   101,    88,   102,   102,   103,    88,   104,   104,   105,
-     105,   106,    88,   107,   108,   109,   109,   110,   110,   111,
-     112,   111,   113,   113,   114,   114,   114,   114,   114,   114,
-     114,   115,   114,   116,   117,   117,   118,   118,   118,   119,
-     120,   121,    88,    88,   122,   123,   123,   124,   124,   124,
-     124,   125,   127,   126,   128,   128,   129,   129,    88,    88,
-     130,   130,   130,   130,   131,   131,   131,    88,   133,   132,
-      88,   134,   134,   135,   135,   136,   138,   137,    88,   139,
-     139,   140,   140,   140,   141,    88,   142,   143,   143,   143,
-     144,   143,   143,   143,    88,   145,   145,   145,   145,   145,
-     145,   145,   145,   145,    88,   146,   146,   145,    88,   147,
-      88,    88,    88,   148,   148,    88,   149,   149,   150,    88,
-     151,   152,   152,   152,   152,    88,    88,   153,   154,   154,
-     155,   157,   156,   158,   158,   158,   158,   159,   160,    88,
-      88,   161,   161,   161,    88,   162,   162,   163,   163,   165,
-     166,   164,    88,    88,   167,   169,   168,   170,   170,   171,
-     173,   172,   174,   174,   175,   176,   176,   151,   151,   151,
-     151,   151,   151,   151,   151,   151,   151,   151,   151,   151,
-     151,   151,   151,   151,   153,   153,   153,   153,   153,   153,
-     153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
-     153,   177,   177,   178,   179,   181,   180,   182,   183,   184,
-     184,   185,   185,   185,   185,   185,   185,   185,   185,   186,
-     187,   188,   189,    88,    88,    88,    88,    88,    88,    88,
-      88,    88,    88,    88,   107,   191,   190
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     2,     4,     1,     1,     1,     2,     1,     1,
-       1,     1,     1,     2,     2,     2,     5,     3,     3,     1,
-       4,     1,     1,     1,     1,     2,     1,     4,     1,     1,
-       3,     4,     1,     0,     1,     2,     4,     0,     2,     0,
-       2,     3,     4,     4,     0,     1,     2,     0,     1,     4,
-       0,     5,     1,     2,     1,     1,     1,     1,     1,     1,
-       1,     0,     2,     3,     0,     2,     0,     2,     2,     4,
-       4,     4,     1,     1,     2,     5,     5,     2,     2,     2,
-       2,     3,     0,     7,     4,     4,     4,     4,     1,     1,
-       0,     1,     1,     1,     3,     3,     3,     4,     0,     4,
-       4,     0,     2,     1,     1,     1,     0,     6,     4,     1,
-       2,     3,     2,     1,     4,     1,     1,     3,     4,     3,
-       0,     4,     4,     3,     4,     2,     3,     3,     2,     3,
-       3,     3,     4,     4,     4,     1,     1,     1,     4,     1,
-       4,     5,     4,     4,     4,     4,     2,     0,     4,     4,
-       2,     1,     1,     1,     0,     5,     5,     7,     1,     1,
-       3,     0,     4,     1,     1,     1,     1,    10,     4,     1,
-       1,     2,     3,     2,     5,     0,     1,     0,     2,     0,
-       0,    10,     5,     5,     3,     0,     6,     0,     2,     5,
-       0,     6,     0,     2,     4,     0,     4,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     5,     5,     5,     5,     5,     5,
-       5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
-       5,     1,     2,     2,     1,     0,     5,     2,     4,     2,
-       2,     5,     5,     5,     5,     5,     5,     5,     5,     1,
-       1,     1,     1,     4,     5,     6,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     0,     5
-};
-
-/* 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,     0,     0,     0,     0,     1,     0,     0,   185,   190,
-       0,   184,   187,     0,   265,     0,     0,   192,    44,     0,
-     186,   188,   195,     0,    45,     0,     0,     0,     4,   191,
-       0,   193,     4,   266,    46,     0,    32,    72,    73,    88,
-      89,   115,   169,   170,     0,     0,   194,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,    64,     0,    64,     0,     0,     0,     0,    33,
-       0,    44,     0,     0,     0,     0,     0,     0,     0,     8,
-       9,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   105,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,    47,     0,   154,     0,     0,
-       0,     0,     6,     5,    26,     0,     0,     0,    10,    11,
-      12,    29,     0,    28,     0,     0,     0,    34,     0,     0,
-      19,    37,     0,     0,     0,    64,     0,     0,     0,     0,
-       0,    64,     0,     0,     0,     0,     4,     0,    90,     0,
-       0,    98,     0,     0,   106,     0,   109,     0,   113,     0,
-     116,   250,    44,     0,    44,   135,   136,   234,   251,     0,
-     137,     0,     0,    44,    47,     0,     0,     0,     0,   139,
-       0,    47,     0,     0,   147,     0,     0,     0,   252,    44,
-       0,   189,   199,   208,   198,   203,   204,   202,   206,   207,
-     200,   201,   205,   213,   150,   210,   211,   212,   209,   197,
-     196,    44,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   106,     0,     0,     0,   179,     0,    48,
-      44,     0,     0,     0,     0,   152,   153,   151,     0,     0,
-       0,     2,     7,     3,    27,   253,   263,    13,    15,    14,
-       0,    31,   259,     0,    35,     0,    36,     0,     0,    39,
-      42,   256,     0,    66,    70,    71,    65,     0,     0,     0,
-      87,    37,    86,     0,    85,    84,     0,    91,    92,    93,
-       0,    97,   261,     0,   100,   262,   257,     0,   108,   110,
-     258,   112,   114,   120,     0,   124,     0,     0,   134,    47,
-     128,     0,     0,    47,   125,     0,    50,    44,   138,     0,
-       0,   145,   140,   142,     0,     0,    37,   260,   149,     0,
-       0,     0,     0,   168,   164,   165,   166,     0,     0,   163,
-       0,     0,   216,   229,   219,   215,   228,   217,   220,   218,
-     230,   221,   222,   223,   224,   225,   175,   227,   231,   233,
-     226,     0,   214,     0,   237,   155,   182,   183,    30,     0,
-     254,    17,    18,     0,    38,     0,    41,    63,     0,     0,
-       0,    80,    78,    79,    77,    81,    39,     0,     0,     0,
-       0,     0,    94,    95,    96,     0,   103,   104,     0,   111,
-       0,    47,   123,     0,   119,     0,   117,   235,     0,   129,
-     130,   131,     0,   126,   127,    44,     0,     0,     0,   141,
-     146,    39,   156,   174,   171,     0,   173,     0,   161,     0,
-       0,   176,     0,   232,     0,     0,   239,     0,   240,   255,
-       0,    21,    22,    23,    24,    25,    40,    67,    68,    69,
-      74,     0,     0,    82,    43,   264,     0,    99,   101,   121,
-     122,   118,    47,   132,   133,    52,    61,    49,   143,   144,
-     148,   172,     0,     0,     0,   157,     0,   238,    33,     0,
-       0,     0,     0,     0,     0,     0,     0,    16,    76,    75,
-       0,     0,     0,    51,    60,    58,    59,    55,    57,    56,
-      54,    53,     0,    20,   159,   158,     0,   162,     0,   180,
-     249,     0,     0,     0,    33,     0,     0,    33,     0,     0,
-     107,   102,   236,    62,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    83,   160,     0,     0,
-     241,   246,   247,   242,   245,   243,   244,   248,   167,     0,
-     177,   181,     0,   178,     0,     0
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,   131,    34,   194,   134,    91,   142,   150,   151,   348,
-     455,   384,   135,   144,   145,    36,   176,   149,   279,   386,
-     152,   168,   187,    25,   327,   195,   425,   476,   511,   512,
-     155,   159,   390,   156,    37,    38,   397,   162,   289,   160,
-     164,   500,    39,    40,   300,   169,   172,   303,   501,   408,
-     520,   175,   307,   178,   179,    41,   182,   183,   410,   189,
-     190,   203,   198,   336,   206,   110,   258,    31,   516,   517,
-     349,   483,   350,    42,    43,   340,   442,   561,   248,   366,
-     536,     2,     3,    12,    15,    21,     7,    13,    23,    17,
-      27,   369,   251,   191,   322,   472,   253,   254,   374,   448,
-     521,   184,   192,   209,    11,    18
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -326
-static const yytype_int16 yypact[] =
-{
-      48,    -4,   110,   113,   107,  -326,    52,   137,  -326,  -326,
-      74,  -326,  -326,   153,  -326,   211,    85,  -326,  -326,    94,
-    -326,  -326,  -326,   275,  -326,   278,   190,   280,   159,  -326,
-     313,  -326,    31,  -326,  -326,   585,  -326,  -326,  -326,  -326,
-    -326,  -326,  -326,  -326,   223,   467,  -326,   203,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   240,   248,   116,   219,   253,   140,   210,   229,
-     182,   182,   220,   182,   220,   182,   121,   229,   234,    71,
-     229,    41,    66,   271,    79,   301,   261,   234,   234,  -326,
-    -326,   268,   270,   279,   284,   286,   288,   294,   297,   315,
-     325,   326,   327,   328,   333,   334,   335,   337,   338,   339,
-     343,   242,  -326,   229,   182,   219,   223,   152,   229,   345,
-     182,   234,   210,   348,   223,   350,   223,    82,   251,   323,
-     342,   353,  -326,  -326,  -326,   355,   357,   358,  -326,  -326,
-    -326,  -326,   231,  -326,   152,   359,   361,  -326,   165,   362,
-     182,   341,   372,   373,   182,   220,   375,   377,   182,   264,
-     379,   220,   380,   305,   384,   385,  -326,   363,   200,   387,
-     389,  -326,   390,   391,   395,   396,   398,   397,    66,   401,
-     234,  -326,  -326,   404,   234,  -326,  -326,  -326,  -326,   405,
-    -326,    66,    66,  -326,   350,   406,   264,   264,   407,  -326,
-     408,   530,   409,   399,   182,   410,   411,   255,  -326,   234,
-      80,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,  -326,   413,   414,   416,   417,   418,   419,   421,   422,
-     423,   427,   429,  -326,   430,   432,   433,  -326,   435,  -326,
-    -326,   436,   182,   437,   345,  -326,  -326,  -326,   438,   440,
-     441,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-     152,  -326,  -326,   234,  -326,   442,  -326,   302,   182,   420,
-    -326,  -326,   182,   293,  -326,  -326,  -326,   121,   121,    66,
-    -326,   341,  -326,   400,  -326,  -326,   229,  -326,  -326,  -326,
-     345,  -326,  -326,   345,  -326,  -326,  -326,   176,  -326,  -326,
-    -326,    66,  -326,  -326,    66,  -326,    66,    66,  -326,    38,
-     345,    66,    66,    53,   345,    66,  -326,  -326,  -326,    66,
-      66,  -326,  -326,  -326,   445,   182,   341,  -326,  -326,   446,
-     448,    66,    66,  -326,  -326,  -326,  -326,   439,   450,  -326,
-      66,    66,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,  -326,  -326,  -326,  -326,  -326,   452,  -326,  -326,   451,
-    -326,   453,  -326,   345,   345,  -326,  -326,  -326,  -326,   456,
-    -326,   182,  -326,   164,  -326,   182,  -326,  -326,   182,   182,
-      66,  -326,  -326,  -326,  -326,  -326,   420,   121,   182,   458,
-     460,    49,  -326,  -326,  -326,   345,  -326,  -326,   434,  -326,
-      66,    35,  -326,    66,  -326,    66,  -326,  -326,   424,  -326,
-    -326,   345,    66,  -326,  -326,  -326,   324,    66,    66,  -326,
-    -326,   420,  -326,  -326,  -326,    66,  -326,   182,  -326,   345,
-     463,  -326,   345,  -326,   462,   412,  -326,   105,  -326,  -326,
-     454,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,    66,    66,  -326,  -326,  -326,   152,  -326,  -326,  -326,
-    -326,  -326,   350,  -326,  -326,  -326,   184,  -326,  -326,  -326,
-    -326,  -326,   466,    39,   345,  -326,   182,  -326,   210,   234,
-     234,   234,   234,   234,   234,   234,   234,  -326,  -326,  -326,
-     264,    72,   471,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,  -326,   399,  -326,  -326,  -326,    39,  -326,    66,  -326,
-    -326,   242,   223,   152,   210,   182,   234,   210,   348,    66,
-    -326,  -326,  -326,  -326,   470,   345,   345,   473,   476,   478,
-     182,   480,   481,   482,   483,   484,  -326,  -326,   489,   345,
-    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,    66,
-    -326,   345,   425,  -326,   234,    69
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-    -326,  -326,   -65,   -23,    97,   -79,   -83,   -13,   -62,  -232,
-    -326,  -191,   -27,  -118,   -94,   195,   -67,   -26,  -228,  -325,
-     -97,  -226,    -1,   172,   -86,   -55,  -326,  -326,  -326,  -326,
-     198,   -36,  -326,   431,  -111,   201,  -326,   428,  -147,  -326,
-    -326,  -326,  -326,  -326,  -326,   381,   386,  -326,  -326,  -326,
-     -45,   -96,  -326,  -326,   -95,   132,  -326,  -326,  -326,  -326,
-     300,  -326,  -326,  -326,   -93,  -326,  -326,   139,    -7,  -326,
-    -326,  -326,  -326,   -50,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,  -326,
-    -326,  -326,    42,   -89,  -227,  -326,  -326,  -326,  -326,  -326,
-    -290,  -222,   -92,  -326,  -326,  -326
-};
-
-/* 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 -1
-static const yytype_uint16 yytable[] =
-{
-      30,   148,    35,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,    24,   180,   200,
-     136,   239,   146,   238,   153,   244,   270,   245,   373,   202,
-     246,   170,   173,   174,   177,   181,   188,   237,   163,   250,
-     205,   249,   208,   210,   249,   247,   112,   252,   112,   329,
-     330,     1,   234,   167,   143,   391,   393,   154,   154,   249,
-     154,   201,   154,   396,   171,   392,   394,   277,   233,   166,
-     236,   460,   166,   240,   466,     4,   243,   405,   112,    70,
-     321,   325,    32,   166,   343,   199,   274,   413,   313,   415,
-      70,    71,   317,   314,    70,   316,   167,    62,   193,   147,
-     232,   185,   186,   275,   143,   530,   480,   171,   431,    63,
-       5,   193,   531,     8,   435,   514,     6,   342,   417,   283,
-     341,   417,   129,   311,   166,   291,   130,   489,   112,   490,
-     491,   143,   492,     9,   493,   188,   320,   324,   334,   188,
-      10,   282,   344,   345,   346,   286,   138,   112,   139,   255,
-     256,   140,   378,   344,   345,   346,    16,   257,   138,    14,
-     139,   494,   495,   140,   188,   461,   141,    22,   319,   323,
-     496,   138,   112,   139,    26,   462,   140,   451,   141,   467,
-      35,   273,   406,   452,   453,   454,   407,   347,   138,   403,
-     139,   335,   326,   140,   456,   383,    44,   457,   458,   399,
-     522,   523,   524,   525,   526,   527,   528,   484,   231,   419,
-     111,   422,   235,   423,    19,    20,   486,   503,   504,   505,
-     506,   507,   508,   509,   510,   132,   112,   133,   379,    47,
-     351,   167,    89,    90,   395,   138,   112,   139,   147,   371,
-     140,   112,   181,   181,   267,   268,   269,   127,   132,   368,
-     133,   400,   297,   298,   299,   128,   409,   143,   518,   412,
-     137,   414,   416,   158,   347,   347,   420,   421,   207,   387,
-     424,   161,   211,   161,   427,   428,   212,   401,    28,    29,
-     167,    32,    33,    45,    46,   213,   434,   436,   196,   197,
-     214,   411,   215,   411,   216,   439,   440,   418,   450,   323,
-     217,   418,   383,   218,   549,   383,   383,   204,   112,   548,
-     473,   259,   260,   287,   288,   185,   186,   559,   411,   381,
-     382,   219,   430,   388,   389,    48,    24,    32,   477,    49,
-     261,   220,   221,   222,   223,   459,    50,    51,    52,   224,
-     225,   226,    53,   227,   228,   229,    30,   230,   166,   262,
-     445,   447,   181,   529,   204,   469,   249,   263,   470,   264,
-     471,   265,   266,   271,    54,   272,   276,   474,    55,    56,
-      57,   278,   478,   479,   347,   482,   280,   281,    58,   284,
-     481,   285,   167,   290,   292,   463,   250,   293,   294,   295,
-      59,   301,   296,   302,   304,   305,    60,    61,   418,   306,
-     308,   310,    32,    35,   309,   312,   498,   499,   315,   318,
-     328,   331,   332,   333,   337,   338,   347,   352,   353,   167,
-     354,   355,   356,   357,   475,   358,   359,   360,   542,   539,
-     543,   361,   544,   362,   363,   545,   364,   365,   515,   367,
-     370,   372,   375,   538,   376,   377,   380,   533,   398,   429,
-     432,   385,   433,   143,    28,   437,   438,   540,   441,   444,
-     449,   167,   464,   535,   465,    70,   468,   485,   487,   488,
-     513,   515,   497,   519,   546,   532,   547,   550,   274,    92,
-     551,   243,   552,    93,   553,   554,   555,   556,   557,    35,
-      94,    95,    96,   558,   537,   402,    97,   564,   541,   426,
-     241,   404,   157,   165,   560,   446,   242,   339,   443,   534,
-     143,   563,   167,   347,   502,     0,     0,     0,    98,   565,
-       0,     0,    99,   100,   101,     0,   347,     0,     0,     0,
-       0,     0,   102,   103,     0,    64,   249,   104,   562,   105,
-       0,     0,   347,     0,   106,   107,     0,     0,     0,     0,
-     108,   109,    65,     0,    66,    67,     0,    68,     0,    69,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    70,    71,     0,    72,    73,    74,    75,     0,     0,
-       0,    76,     0,     0,     0,    77,    78,    79,    80,    81,
-      64,     0,    82,    83,    84,    85,     0,     0,     0,    86,
-       0,    87,    88,     0,     0,     0,     0,    65,     0,    66,
-      67,     0,    68,     0,    69,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    70,    71,     0,    72,
-      73,    74,    75,     0,     0,     0,    76,     0,     0,     0,
-      77,    78,    79,    80,    81,     0,     0,    82,    83,    84,
-      85,     0,     0,     0,    86,     0,    87,    88
-};
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-326)))
-
-#define yytable_value_is_error(Yytable_value) \
-  YYID (0)
-
-static const yytype_int16 yycheck[] =
-{
-      23,    68,    25,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    18,    80,    84,
-      65,   118,    67,   117,    69,   121,   144,   122,   254,    84,
-     123,    76,    77,    78,    79,    80,    81,   116,    74,   125,
-      85,     6,    87,    88,     6,   124,     7,   126,     7,   196,
-     197,     3,   114,    76,    67,   287,   288,    70,    71,     6,
-      73,    84,    75,   291,    77,   287,   288,   150,   113,     3,
-     115,   396,     3,   118,    25,    79,   121,   303,     7,    41,
-     191,   192,     3,     3,     4,     6,   148,   314,   180,   316,
-      41,    42,   184,   182,    41,   184,   119,    66,    32,    28,
-     113,    60,    61,   148,   117,    33,   431,   120,   336,    78,
-       0,    32,    40,     6,   341,    76,     3,   209,    83,   155,
-     209,    83,     6,   178,     3,   161,    10,    22,     7,    24,
-      25,   144,    27,    81,    29,   180,   191,   192,   203,   184,
-       3,   154,    73,    74,    75,   158,     6,     7,     8,    67,
-      68,    11,   270,    73,    74,    75,     3,    75,     6,    85,
-       8,    56,    57,    11,   209,   397,    26,    82,   191,   192,
-      65,     6,     7,     8,    80,   397,    11,    13,    26,   405,
-     203,    16,     6,    19,    20,    21,    10,   210,     6,   300,
-       8,   204,   193,    11,   385,   278,     6,   388,   389,   296,
-     490,   491,   492,   493,   494,   495,   496,   439,   111,   320,
-       7,   322,   115,   324,     3,     4,   442,    33,    34,    35,
-      36,    37,    38,    39,    40,     6,     7,     8,   273,    70,
-     231,   254,     9,    10,   289,     6,     7,     8,    28,   252,
-      11,     7,   287,   288,    13,    14,    15,     7,     6,   250,
-       8,   296,    52,    53,    54,     7,   311,   270,   484,   314,
-       7,   316,   317,    43,   287,   288,   321,   322,     7,   282,
-     325,    73,     4,    75,   329,   330,     6,   300,     3,     4,
-     303,     3,     4,     3,     4,     6,   341,   342,    17,    18,
-       6,   314,     6,   316,     6,   350,   351,   320,   381,   322,
-       6,   324,   385,     6,   536,   388,   389,     6,     7,   535,
-     421,    60,    61,    49,    50,    60,    61,   549,   341,    17,
-      18,     6,   335,    30,    31,    12,   327,     3,     4,    16,
-       7,     6,     6,     6,     6,   390,    23,    24,    25,     6,
-       6,     6,    29,     6,     6,     6,   369,     4,     3,     7,
-     373,   374,   397,   500,     6,   410,     6,     4,   413,     4,
-     415,     4,     4,     4,    51,     4,     4,   422,    55,    56,
-      57,    30,   427,   428,   397,   437,     4,     4,    65,     4,
-     435,     4,   405,     4,     4,   398,   472,    82,     4,     4,
-      77,     4,    29,     4,     4,     4,    83,    84,   421,     4,
-       4,     4,     3,   426,     6,     4,   461,   462,     4,     4,
-       4,     4,     4,     4,     4,     4,   439,     4,     4,   442,
-       4,     4,     4,     4,   425,     4,     4,     4,   525,   523,
-     526,     4,   527,     4,     4,   528,     4,     4,   483,     4,
-       4,     4,     4,   522,     4,     4,     4,   512,    48,     4,
-       4,    31,     4,   466,     3,    16,     6,   524,     6,     6,
-       4,   484,     4,   518,     4,    41,    32,     4,     6,    57,
-       4,   516,    18,   486,   529,     4,     6,     4,   540,    12,
-       4,   526,     4,    16,     4,     4,     4,     4,     4,   512,
-      23,    24,    25,     4,   521,   300,    29,    72,   524,   327,
-     119,   300,    71,    75,   559,   373,   120,   207,   369,   516,
-     523,   561,   535,   536,   472,    -1,    -1,    -1,    51,   564,
-      -1,    -1,    55,    56,    57,    -1,   549,    -1,    -1,    -1,
-      -1,    -1,    65,    66,    -1,     5,     6,    70,   561,    72,
-      -1,    -1,   565,    -1,    77,    78,    -1,    -1,    -1,    -1,
-      83,    84,    22,    -1,    24,    25,    -1,    27,    -1,    29,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    41,    42,    -1,    44,    45,    46,    47,    -1,    -1,
-      -1,    51,    -1,    -1,    -1,    55,    56,    57,    58,    59,
-       5,    -1,    62,    63,    64,    65,    -1,    -1,    -1,    69,
-      -1,    71,    72,    -1,    -1,    -1,    -1,    22,    -1,    24,
-      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    -1,    44,
-      45,    46,    47,    -1,    -1,    -1,    51,    -1,    -1,    -1,
-      55,    56,    57,    58,    59,    -1,    -1,    62,    63,    64,
-      65,    -1,    -1,    -1,    69,    -1,    71,    72
-};
-
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
-{
-       0,     3,   167,   168,    79,     0,     3,   172,     6,    81,
-       3,   190,   169,   173,    85,   170,     3,   175,   191,     3,
-       4,   171,    82,   174,   108,   109,    80,   176,     3,     4,
-      89,   153,     3,     4,    88,    89,   101,   120,   121,   128,
-     129,   141,   159,   160,     6,     3,     4,    70,    12,    16,
-      23,    24,    25,    29,    51,    55,    56,    57,    65,    77,
-      83,    84,    66,    78,     5,    22,    24,    25,    27,    29,
-      41,    42,    44,    45,    46,    47,    51,    55,    56,    57,
-      58,    59,    62,    63,    64,    65,    69,    71,    72,     9,
-      10,    91,    12,    16,    23,    24,    25,    29,    51,    55,
-      56,    57,    65,    66,    70,    72,    77,    78,    83,    84,
-     151,     7,     7,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   136,   136,   136,   136,     7,     7,     6,
-      10,    87,     6,     8,    90,    98,   136,     7,     6,     8,
-      11,    26,    92,    93,    99,   100,   136,    28,   102,   103,
-      93,    94,   106,   136,    93,   116,   119,   119,    43,   117,
-     125,   116,   123,   117,   126,   123,     3,    89,   107,   131,
-     136,    93,   132,   136,   136,   137,   102,   136,   139,   140,
-      94,   136,   142,   143,   187,    60,    61,   108,   136,   145,
-     146,   179,   188,    32,    89,   111,    17,    18,   148,     6,
-      88,    89,   111,   147,     6,   136,   150,     7,   136,   189,
-     136,     4,     6,     6,     6,     6,     6,     6,     6,     6,
-       6,     6,     6,     6,     6,     6,     6,     6,     6,     6,
-       4,    90,    93,   136,    94,    90,   136,    91,   100,   106,
-     136,   131,   132,   136,   137,   140,   150,    91,   164,     6,
-     110,   178,    91,   182,   183,    67,    68,    75,   152,    60,
-      61,     7,     7,     4,     4,     4,     4,    13,    14,    15,
-      99,     4,     4,    16,    94,   136,     4,    92,    30,   104,
-       4,     4,    93,   117,     4,     4,    93,    49,    50,   124,
-       4,   117,     4,    82,     4,     4,    29,    52,    53,    54,
-     130,     4,     4,   133,     4,     4,     4,   138,     4,     6,
-       4,   111,     4,   188,   179,     4,   179,   188,     4,    89,
-     111,   120,   180,    89,   111,   120,   108,   110,     4,   124,
-     124,     4,     4,     4,    88,    93,   149,     4,     4,   146,
-     161,   179,   188,     4,    73,    74,    75,    89,    95,   156,
-     158,   108,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   165,     4,   108,   177,
-       4,    93,     4,   107,   184,     4,     4,     4,    99,   136,
-       4,    17,    18,    92,    97,    31,   105,    93,    30,    31,
-     118,    95,   187,    95,   187,   111,   104,   122,    48,   106,
-     136,    89,   101,   120,   121,   107,     6,    10,   135,   111,
-     144,    89,   111,   180,   111,   180,   111,    83,    89,   120,
-     111,   111,   120,   120,   111,   112,   109,   111,   111,     4,
-      93,   104,     4,     4,   111,   180,   111,    16,     6,   111,
-     111,     6,   162,   153,     6,    89,   141,    89,   185,     4,
-      92,    13,    19,    20,    21,    96,    97,    97,    97,   111,
-     105,    95,   187,    93,     4,     4,    25,   107,    32,   111,
-     111,   111,   181,   120,   111,   108,   113,     4,   111,   111,
-     105,   111,    94,   157,    95,     4,   107,     6,    57,    22,
-      24,    25,    27,    29,    56,    57,    65,    18,   111,   111,
-     127,   134,   178,    33,    34,    35,    36,    37,    38,    39,
-      40,   114,   115,     4,    76,   136,   154,   155,   107,    93,
-     136,   186,   186,   186,   186,   186,   186,   186,   186,   124,
-      33,    40,     4,    88,   154,   111,   166,    98,    91,   100,
-     102,   103,   106,   137,   140,   150,   111,     6,   107,    95,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,    95,
-     111,   163,    89,   159,    72,   136
-};
-
-#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 (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 (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  include <stdio.h> /* 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); \
-      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)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
-{
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
-  if (!yyvaluep)
-    return;
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
-# endif
-  switch (yytype)
-    {
-      default:
-        break;
-    }
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
-{
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
-}
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
-
-#if (defined __STDC__ || defined __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)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#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)])
-		       		       );
-      YYFPRINTF (stderr, "\n");
-    }
-}
-
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
-
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define 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
-       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
-       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)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
-{
-  YYUSE (yyvaluep);
-
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
-
-      default:
-        break;
-    }
-}
-
-
-
-
-/* The lookahead symbol.  */
-int yychar;
-
-
-#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;
-
-
-/*----------.
-| 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 (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
-{
-    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 264 "shrink.y"
-    {
-	#line 418 "format.w"
-	(yyval.c).c= (yyvsp[(1) - (2)].u);REF(font_kind,(yyvsp[(2) - (2)].u));(yyval.c).f= (yyvsp[(2) - (2)].u);}
-    break;
-
-  case 3:
-/* Line 1792 of yacc.c  */
-#line 267 "shrink.y"
-    {
-	#line 419 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_glyph(&((yyvsp[(3) - (4)].c))));}
-    break;
-
-  case 4:
-/* Line 1792 of yacc.c  */
-#line 270 "shrink.y"
-    {
-	#line 420 "format.w"
-	HPUTNODE;(yyval.u)= (uint32_t)(hpos++-hstart);}
-    break;
-
-  case 6:
-/* Line 1792 of yacc.c  */
-#line 274 "shrink.y"
-    {
-	#line 941 "format.w"
-	RNG("number",(yyvsp[(1) - (1)].u),0,INT32_MAX);}
-    break;
-
-  case 7:
-/* Line 1792 of yacc.c  */
-#line 278 "shrink.y"
-    {
-	#line 1082 "format.w"
-	(yyval.c).c= (yyvsp[(1) - (2)].u);REF(font_kind,(yyvsp[(2) - (2)].u));(yyval.c).f= (yyvsp[(2) - (2)].u);}
-    break;
-
-  case 9:
-/* Line 1792 of yacc.c  */
-#line 282 "shrink.y"
-    {
-	#line 1187 "format.w"
-	static char s[2];
-	RNG("String element",(yyvsp[(1) - (1)].u),0x20,0x7E);
-	s[0]= (yyvsp[(1) - (1)].u);s[1]= 0;(yyval.s)= s;}
-    break;
-
-  case 10:
-/* Line 1792 of yacc.c  */
-#line 288 "shrink.y"
-    {
-	#line 1339 "format.w"
-	(yyval.f)= (float64_t)(yyvsp[(1) - (1)].u);}
-    break;
-
-  case 11:
-/* Line 1792 of yacc.c  */
-#line 290 "shrink.y"
-    {
-	#line 1339 "format.w"
-	(yyval.f)= (float64_t)(yyvsp[(1) - (1)].i);}
-    break;
-
-  case 13:
-/* Line 1792 of yacc.c  */
-#line 294 "shrink.y"
-    {
-	#line 1682 "format.w"
-	(yyval.d)= ROUND((yyvsp[(1) - (2)].f)*ONE);RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
-    break;
-
-  case 14:
-/* Line 1792 of yacc.c  */
-#line 297 "shrink.y"
-    {
-	#line 1683 "format.w"
-	(yyval.d)= ROUND((yyvsp[(1) - (2)].f)*ONE*72.27);RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
-    break;
-
-  case 15:
-/* Line 1792 of yacc.c  */
-#line 300 "shrink.y"
-    {
-	#line 1684 "format.w"
-	(yyval.d)= ROUND((yyvsp[(1) - (2)].f)*ONE*(72.27/25.4));RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
-    break;
-
-  case 16:
-/* Line 1792 of yacc.c  */
-#line 304 "shrink.y"
-    {
-	#line 1762 "format.w"
-	(yyval.xd).w= (yyvsp[(1) - (5)].d);(yyval.xd).h= (yyvsp[(2) - (5)].f);(yyval.xd).v= (yyvsp[(4) - (5)].f);}
-    break;
-
-  case 17:
-/* Line 1792 of yacc.c  */
-#line 307 "shrink.y"
-    {
-	#line 1763 "format.w"
-	(yyval.xd).w= (yyvsp[(1) - (3)].d);(yyval.xd).h= (yyvsp[(2) - (3)].f);(yyval.xd).v= 0.0;}
-    break;
-
-  case 18:
-/* Line 1792 of yacc.c  */
-#line 310 "shrink.y"
-    {
-	#line 1764 "format.w"
-	(yyval.xd).w= (yyvsp[(1) - (3)].d);(yyval.xd).h= 0.0;(yyval.xd).v= (yyvsp[(2) - (3)].f);}
-    break;
-
-  case 19:
-/* Line 1792 of yacc.c  */
-#line 313 "shrink.y"
-    {
-	#line 1765 "format.w"
-	(yyval.xd).w= (yyvsp[(1) - (1)].d);(yyval.xd).h= 0.0;(yyval.xd).v= 0.0;}
-    break;
-
-  case 20:
-/* Line 1792 of yacc.c  */
-#line 319 "shrink.y"
-    {
-	#line 1769 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_xdimen(&((yyvsp[(3) - (4)].xd))));}
-    break;
-
-  case 21:
-/* Line 1792 of yacc.c  */
-#line 324 "shrink.y"
-    {
-	#line 1947 "format.w"
-	(yyval.o)= normal_o;}
-    break;
-
-  case 22:
-/* Line 1792 of yacc.c  */
-#line 326 "shrink.y"
-    {
-	#line 1947 "format.w"
-	(yyval.o)= fil_o;}
-    break;
-
-  case 23:
-/* Line 1792 of yacc.c  */
-#line 328 "shrink.y"
-    {
-	#line 1947 "format.w"
-	(yyval.o)= fill_o;}
-    break;
-
-  case 24:
-/* Line 1792 of yacc.c  */
-#line 330 "shrink.y"
-    {
-	#line 1947 "format.w"
-	(yyval.o)= filll_o;}
-    break;
-
-  case 25:
-/* Line 1792 of yacc.c  */
-#line 334 "shrink.y"
-    {
-	#line 1949 "format.w"
-	(yyval.st).f= (yyvsp[(1) - (2)].f);(yyval.st).o= (yyvsp[(2) - (2)].o);}
-    break;
-
-  case 26:
-/* Line 1792 of yacc.c  */
-#line 338 "shrink.y"
-    {
-	#line 2003 "format.w"
-	RNG("Penalty",(yyvsp[(1) - (1)].i),-20000,+20000);(yyval.i)= (yyvsp[(1) - (1)].i);}
-    break;
-
-  case 27:
-/* Line 1792 of yacc.c  */
-#line 341 "shrink.y"
-    {
-	#line 2004 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_int((yyvsp[(3) - (4)].i)));}
-    break;
-
-  case 29:
-/* Line 1792 of yacc.c  */
-#line 345 "shrink.y"
-    {
-	#line 2179 "format.w"
-	(yyval.d)= RUNNING_DIMEN;}
-    break;
-
-  case 30:
-/* Line 1792 of yacc.c  */
-#line 349 "shrink.y"
-    {
-	#line 2181 "format.w"
-	(yyval.r).h= (yyvsp[(1) - (3)].d);(yyval.r).d= (yyvsp[(2) - (3)].d);(yyval.r).w= (yyvsp[(3) - (3)].d);
-	if((yyvsp[(3) - (3)].d)==RUNNING_DIMEN&&((yyvsp[(1) - (3)].d)==RUNNING_DIMEN||(yyvsp[(2) - (3)].d)==RUNNING_DIMEN))
-	QUIT("Incompatible running dimensions 0x%x 0x%x 0x%x",(yyvsp[(1) - (3)].d),(yyvsp[(2) - (3)].d),(yyvsp[(3) - (3)].d));}
-    break;
-
-  case 31:
-/* Line 1792 of yacc.c  */
-#line 354 "shrink.y"
-    {
-	#line 2184 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_rule(&((yyvsp[(3) - (4)].r))));}
-    break;
-
-  case 33:
-/* Line 1792 of yacc.c  */
-#line 359 "shrink.y"
-    {
-	#line 2292 "format.w"
-	(yyval.b)= false;}
-    break;
-
-  case 34:
-/* Line 1792 of yacc.c  */
-#line 361 "shrink.y"
-    {
-	#line 2292 "format.w"
-	(yyval.b)= true;}
-    break;
-
-  case 35:
-/* Line 1792 of yacc.c  */
-#line 364 "shrink.y"
-    {
-	#line 2293 "format.w"
-	(yyval.kt).x= (yyvsp[(1) - (2)].b);(yyval.kt).d= (yyvsp[(2) - (2)].xd);}
-    break;
-
-  case 36:
-/* Line 1792 of yacc.c  */
-#line 367 "shrink.y"
-    {
-	#line 2294 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_kern(&((yyvsp[(3) - (4)].kt))));}
-    break;
-
-  case 37:
-/* Line 1792 of yacc.c  */
-#line 371 "shrink.y"
-    {
-	#line 2504 "format.w"
-	(yyval.st).f= 0.0;(yyval.st).o= 0;}
-    break;
-
-  case 38:
-/* Line 1792 of yacc.c  */
-#line 373 "shrink.y"
-    {
-	#line 2504 "format.w"
-	(yyval.st)= (yyvsp[(2) - (2)].st);}
-    break;
-
-  case 39:
-/* Line 1792 of yacc.c  */
-#line 376 "shrink.y"
-    {
-	#line 2505 "format.w"
-	(yyval.st).f= 0.0;(yyval.st).o= 0;}
-    break;
-
-  case 40:
-/* Line 1792 of yacc.c  */
-#line 378 "shrink.y"
-    {
-	#line 2505 "format.w"
-	(yyval.st)= (yyvsp[(2) - (2)].st);}
-    break;
-
-  case 41:
-/* Line 1792 of yacc.c  */
-#line 381 "shrink.y"
-    {
-	#line 2506 "format.w"
-	(yyval.g).w= (yyvsp[(1) - (3)].xd);(yyval.g).p= (yyvsp[(2) - (3)].st);(yyval.g).m= (yyvsp[(3) - (3)].st);}
-    break;
-
-  case 42:
-/* Line 1792 of yacc.c  */
-#line 384 "shrink.y"
-    {
-	#line 2507 "format.w"
-	if(ZERO_GLUE((yyvsp[(3) - (4)].g))){HPUT8(zero_skip_no);
-	hput_tags((yyvsp[(1) - (4)].u),TAG(glue_kind,0));}else hput_tags((yyvsp[(1) - (4)].u),hput_glue(&((yyvsp[(3) - (4)].g))));}
-    break;
-
-  case 43:
-/* Line 1792 of yacc.c  */
-#line 389 "shrink.y"
-    {
-	#line 2510 "format.w"
-	if(ZERO_GLUE((yyvsp[(3) - (4)].g))){hpos--;(yyval.b)= false;}
-	else{hput_tags((yyvsp[(1) - (4)].u),hput_glue(&((yyvsp[(3) - (4)].g))));(yyval.b)= true;}}
-    break;
-
-  case 44:
-/* Line 1792 of yacc.c  */
-#line 394 "shrink.y"
-    {
-	#line 2786 "format.w"
-	(yyval.u)= hpos-hstart;}
-    break;
-
-  case 47:
-/* Line 1792 of yacc.c  */
-#line 399 "shrink.y"
-    {
-	#line 2789 "format.w"
-	hpos+= 2;}
-    break;
-
-  case 48:
-/* Line 1792 of yacc.c  */
-#line 402 "shrink.y"
-    {
-	#line 2790 "format.w"
-	hpos+= hsize_bytes((yyvsp[(1) - (1)].u))+1;}
-    break;
-
-  case 49:
-/* Line 1792 of yacc.c  */
-#line 406 "shrink.y"
-    {
-	#line 2792 "format.w"
-	(yyval.l).k= list_kind;(yyval.l).p= (yyvsp[(3) - (4)].u);(yyval.l).s= (hpos-hstart)-(yyvsp[(3) - (4)].u);
-	hput_tags((yyvsp[(1) - (4)].u),hput_list((yyvsp[(1) - (4)].u)+1,&((yyval.l))));}
-    break;
-
-  case 50:
-/* Line 1792 of yacc.c  */
-#line 412 "shrink.y"
-    {
-	#line 3199 "format.w"
-	hpos+= 4;}
-    break;
-
-  case 51:
-/* Line 1792 of yacc.c  */
-#line 416 "shrink.y"
-    {
-	#line 3201 "format.w"
-	(yyval.l).k= text_kind;(yyval.l).p= (yyvsp[(4) - (5)].u);(yyval.l).s= (hpos-hstart)-(yyvsp[(4) - (5)].u);
-	hput_tags((yyvsp[(2) - (5)].u),hput_list((yyvsp[(2) - (5)].u)+1,&((yyval.l))));}
-    break;
-
-  case 54:
-/* Line 1792 of yacc.c  */
-#line 422 "shrink.y"
-    {
-	#line 3205 "format.w"
-	hput_txt_cc((yyvsp[(1) - (1)].u));}
-    break;
-
-  case 55:
-/* Line 1792 of yacc.c  */
-#line 425 "shrink.y"
-    {
-	#line 3206 "format.w"
-	REF(font_kind,(yyvsp[(1) - (1)].u));hput_txt_font((yyvsp[(1) - (1)].u));}
-    break;
-
-  case 56:
-/* Line 1792 of yacc.c  */
-#line 428 "shrink.y"
-    {
-	#line 3207 "format.w"
-	REF((yyvsp[(1) - (1)].rf).k,(yyvsp[(1) - (1)].rf).n);hput_txt_global(&((yyvsp[(1) - (1)].rf)));}
-    break;
-
-  case 57:
-/* Line 1792 of yacc.c  */
-#line 431 "shrink.y"
-    {
-	#line 3208 "format.w"
-	RNG("Font parameter",(yyvsp[(1) - (1)].u),0,11);hput_txt_local((yyvsp[(1) - (1)].u));}
-    break;
-
-  case 58:
-/* Line 1792 of yacc.c  */
-#line 434 "shrink.y"
-    {
-	#line 3209 "format.w"
-	HPUTX(1);HPUT8(txt_glue);}
-    break;
-
-  case 59:
-/* Line 1792 of yacc.c  */
-#line 437 "shrink.y"
-    {
-	#line 3210 "format.w"
-	HPUTX(1);HPUT8(txt_hyphen);}
-    break;
-
-  case 60:
-/* Line 1792 of yacc.c  */
-#line 440 "shrink.y"
-    {
-	#line 3211 "format.w"
-	HPUTX(1);HPUT8(txt_ignore);}
-    break;
-
-  case 61:
-/* Line 1792 of yacc.c  */
-#line 443 "shrink.y"
-    {
-	#line 3212 "format.w"
-	HPUTX(1);HPUT8(txt_node);}
-    break;
-
-  case 63:
-/* Line 1792 of yacc.c  */
-#line 449 "shrink.y"
-    {
-	#line 3470 "format.w"
-	(yyval.info)= hput_box_dimen((yyvsp[(1) - (3)].d),(yyvsp[(2) - (3)].d),(yyvsp[(3) - (3)].d));}
-    break;
-
-  case 64:
-/* Line 1792 of yacc.c  */
-#line 452 "shrink.y"
-    {
-	#line 3471 "format.w"
-	(yyval.info)= b000;}
-    break;
-
-  case 65:
-/* Line 1792 of yacc.c  */
-#line 455 "shrink.y"
-    {
-	#line 3472 "format.w"
-	(yyval.info)= hput_box_shift((yyvsp[(2) - (2)].d));}
-    break;
-
-  case 66:
-/* Line 1792 of yacc.c  */
-#line 459 "shrink.y"
-    {
-	#line 3474 "format.w"
-	(yyval.info)= b000;}
-    break;
-
-  case 67:
-/* Line 1792 of yacc.c  */
-#line 462 "shrink.y"
-    {
-	#line 3475 "format.w"
-	(yyval.info)= hput_box_glue_set(+1,(yyvsp[(2) - (2)].st).f,(yyvsp[(2) - (2)].st).o);}
-    break;
-
-  case 68:
-/* Line 1792 of yacc.c  */
-#line 465 "shrink.y"
-    {
-	#line 3476 "format.w"
-	(yyval.info)= hput_box_glue_set(-1,(yyvsp[(2) - (2)].st).f,(yyvsp[(2) - (2)].st).o);}
-    break;
-
-  case 69:
-/* Line 1792 of yacc.c  */
-#line 470 "shrink.y"
-    {
-	#line 3479 "format.w"
-	(yyval.info)= (yyvsp[(1) - (4)].info)	|(yyvsp[(2) - (4)].info)	|(yyvsp[(3) - (4)].info);}
-    break;
-
-  case 70:
-/* Line 1792 of yacc.c  */
-#line 474 "shrink.y"
-    {
-	#line 3481 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(hbox_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 71:
-/* Line 1792 of yacc.c  */
-#line 477 "shrink.y"
-    {
-	#line 3482 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(vbox_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 74:
-/* Line 1792 of yacc.c  */
-#line 482 "shrink.y"
-    {
-	#line 3663 "format.w"
-	hput_stretch(&((yyvsp[(1) - (2)].st)));hput_stretch(&((yyvsp[(2) - (2)].st)));}
-    break;
-
-  case 75:
-/* Line 1792 of yacc.c  */
-#line 485 "shrink.y"
-    {
-	#line 3664 "format.w"
-	(yyval.info)= (yyvsp[(1) - (5)].info)	|(yyvsp[(2) - (5)].info);}
-    break;
-
-  case 76:
-/* Line 1792 of yacc.c  */
-#line 488 "shrink.y"
-    {
-	#line 3665 "format.w"
-	(yyval.info)= (yyvsp[(1) - (5)].info)	|(yyvsp[(2) - (5)].info)	|b100;}
-    break;
-
-  case 77:
-/* Line 1792 of yacc.c  */
-#line 492 "shrink.y"
-    {
-	#line 3667 "format.w"
-	(yyval.info)= b000;}
-    break;
-
-  case 78:
-/* Line 1792 of yacc.c  */
-#line 495 "shrink.y"
-    {
-	#line 3668 "format.w"
-	(yyval.info)= b001;}
-    break;
-
-  case 79:
-/* Line 1792 of yacc.c  */
-#line 498 "shrink.y"
-    {
-	#line 3669 "format.w"
-	(yyval.info)= b100;}
-    break;
-
-  case 80:
-/* Line 1792 of yacc.c  */
-#line 501 "shrink.y"
-    {
-	#line 3670 "format.w"
-	(yyval.info)= b101;}
-    break;
-
-  case 81:
-/* Line 1792 of yacc.c  */
-#line 505 "shrink.y"
-    {
-	#line 3672 "format.w"
-	(yyval.info)= (yyvsp[(2) - (3)].info);}
-    break;
-
-  case 82:
-/* Line 1792 of yacc.c  */
-#line 508 "shrink.y"
-    {
-	#line 3673 "format.w"
-	HPUT32((yyvsp[(4) - (4)].d));}
-    break;
-
-  case 83:
-/* Line 1792 of yacc.c  */
-#line 510 "shrink.y"
-    {
-	#line 3673 "format.w"
-	(yyval.info)= (yyvsp[(1) - (7)].info)	|(yyvsp[(6) - (7)].info);}
-    break;
-
-  case 84:
-/* Line 1792 of yacc.c  */
-#line 514 "shrink.y"
-    {
-	#line 3675 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(vset_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 85:
-/* Line 1792 of yacc.c  */
-#line 517 "shrink.y"
-    {
-	#line 3676 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(vpack_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 86:
-/* Line 1792 of yacc.c  */
-#line 522 "shrink.y"
-    {
-	#line 3679 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(hset_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 87:
-/* Line 1792 of yacc.c  */
-#line 525 "shrink.y"
-    {
-	#line 3680 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(hpack_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 90:
-/* Line 1792 of yacc.c  */
-#line 531 "shrink.y"
-    {
-	#line 3790 "format.w"
-	(yyval.info)= 1;}
-    break;
-
-  case 91:
-/* Line 1792 of yacc.c  */
-#line 533 "shrink.y"
-    {
-	#line 3790 "format.w"
-	(yyval.info)= 1;}
-    break;
-
-  case 92:
-/* Line 1792 of yacc.c  */
-#line 535 "shrink.y"
-    {
-	#line 3790 "format.w"
-	(yyval.info)= 2;}
-    break;
-
-  case 93:
-/* Line 1792 of yacc.c  */
-#line 537 "shrink.y"
-    {
-	#line 3790 "format.w"
-	(yyval.info)= 3;}
-    break;
-
-  case 94:
-/* Line 1792 of yacc.c  */
-#line 540 "shrink.y"
-    {
-	#line 3791 "format.w"
-	if((yyvsp[(1) - (3)].b))(yyval.info)= (yyvsp[(2) - (3)].info)	|b100;else (yyval.info)= (yyvsp[(2) - (3)].info);}
-    break;
-
-  case 95:
-/* Line 1792 of yacc.c  */
-#line 543 "shrink.y"
-    {
-	#line 3792 "format.w"
-	if((yyvsp[(1) - (3)].b))(yyval.info)= (yyvsp[(2) - (3)].info)	|b100;else (yyval.info)= (yyvsp[(2) - (3)].info);}
-    break;
-
-  case 96:
-/* Line 1792 of yacc.c  */
-#line 546 "shrink.y"
-    {
-	#line 3793 "format.w"
-	if((yyvsp[(1) - (3)].b))(yyval.info)= (yyvsp[(2) - (3)].info)	|b100;else (yyval.info)= (yyvsp[(2) - (3)].info);}
-    break;
-
-  case 97:
-/* Line 1792 of yacc.c  */
-#line 549 "shrink.y"
-    {
-	#line 3794 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(leaders_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 98:
-/* Line 1792 of yacc.c  */
-#line 553 "shrink.y"
-    {
-	#line 3900 "format.w"
-	if((yyvsp[(1) - (1)].d)!=0)HPUT32((yyvsp[(1) - (1)].d));}
-    break;
-
-  case 99:
-/* Line 1792 of yacc.c  */
-#line 556 "shrink.y"
-    {
-	#line 3901 "format.w"
-	(yyval.info)= b000;if((yyvsp[(1) - (4)].d)!=0)(yyval.info)	|= b001;
-	if((yyvsp[(3) - (4)].b))(yyval.info)	|= b100;
-	if((yyvsp[(4) - (4)].b))(yyval.info)	|= b010;
-	}
-    break;
-
-  case 100:
-/* Line 1792 of yacc.c  */
-#line 563 "shrink.y"
-    {
-	#line 3906 "format.w"
-	if((yyvsp[(3) - (4)].info)==b000)HPUT8(0);hput_tags((yyvsp[(1) - (4)].u),TAG(baseline_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 102:
-/* Line 1792 of yacc.c  */
-#line 567 "shrink.y"
-    {
-	#line 3989 "format.w"
-	hput_utf8((yyvsp[(2) - (2)].u));}
-    break;
-
-  case 103:
-/* Line 1792 of yacc.c  */
-#line 570 "shrink.y"
-    {
-	#line 3990 "format.w"
-	RNG("UTF-8 code",(yyvsp[(1) - (1)].u),0,0x1FFFFF);(yyval.u)= hpos-hstart;hput_utf8((yyvsp[(1) - (1)].u));}
-    break;
-
-  case 104:
-/* Line 1792 of yacc.c  */
-#line 573 "shrink.y"
-    {
-	#line 3991 "format.w"
-	(yyval.u)= hpos-hstart;hput_utf8((yyvsp[(1) - (1)].u));}
-    break;
-
-  case 105:
-/* Line 1792 of yacc.c  */
-#line 576 "shrink.y"
-    {
-	#line 3992 "format.w"
-	HPUT8((yyvsp[(1) - (1)].u));(yyval.u)= (yyvsp[(1) - (1)].u);}
-    break;
-
-  case 106:
-/* Line 1792 of yacc.c  */
-#line 579 "shrink.y"
-    {
-	#line 3993 "format.w"
-	REF(font_kind,(yyvsp[(1) - (1)].u));}
-    break;
-
-  case 107:
-/* Line 1792 of yacc.c  */
-#line 582 "shrink.y"
-    {
-	#line 3994 "format.w"
-	(yyval.lg).f= (yyvsp[(1) - (6)].u);(yyval.lg).l.p= (yyvsp[(3) - (6)].u);(yyval.lg).l.s= (hpos-hstart)-(yyvsp[(3) - (6)].u);
-	RNG("Ligature size",(yyval.lg).l.s,0,255);}
-    break;
-
-  case 108:
-/* Line 1792 of yacc.c  */
-#line 586 "shrink.y"
-    {
-	#line 3996 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_ligature(&((yyvsp[(3) - (4)].lg))));}
-    break;
-
-  case 109:
-/* Line 1792 of yacc.c  */
-#line 590 "shrink.y"
-    {
-	#line 4106 "format.w"
-	if((yyvsp[(1) - (1)].b)){(yyval.u)= 0x80;HPUT8(0x80);}else (yyval.u)= 0x00;}
-    break;
-
-  case 110:
-/* Line 1792 of yacc.c  */
-#line 593 "shrink.y"
-    {
-	#line 4107 "format.w"
-	RNG("Replace count",(yyvsp[(2) - (2)].u),0,31);
-	(yyval.u)= ((yyvsp[(2) - (2)].u))	|(((yyvsp[(1) - (2)].b))?0x80:0x00);if((yyval.u)!=0)HPUT8((yyval.u));}
-    break;
-
-  case 111:
-/* Line 1792 of yacc.c  */
-#line 597 "shrink.y"
-    {
-	#line 4109 "format.w"
-	(yyval.dc).r= (yyvsp[(1) - (3)].u);(yyval.dc).p= (yyvsp[(2) - (3)].l);(yyval.dc).q= (yyvsp[(3) - (3)].l);
-	if((yyvsp[(3) - (3)].l).s==0){hpos= hpos-2;if((yyvsp[(2) - (3)].l).s==0)hpos= hpos-2;}}
-    break;
-
-  case 112:
-/* Line 1792 of yacc.c  */
-#line 601 "shrink.y"
-    {
-	#line 4111 "format.w"
-	(yyval.dc).r= (yyvsp[(1) - (2)].u);(yyval.dc).p= (yyvsp[(2) - (2)].l);if((yyvsp[(2) - (2)].l).s==0)hpos= hpos-2;(yyval.dc).q.s= 0;}
-    break;
-
-  case 113:
-/* Line 1792 of yacc.c  */
-#line 604 "shrink.y"
-    {
-	#line 4112 "format.w"
-	(yyval.dc).r= (yyvsp[(1) - (1)].u);(yyval.dc).p.s= 0;(yyval.dc).q.s= 0;}
-    break;
-
-  case 114:
-/* Line 1792 of yacc.c  */
-#line 610 "shrink.y"
-    {
-	#line 4116 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_disc(&((yyvsp[(3) - (4)].dc))));}
-    break;
-
-  case 116:
-/* Line 1792 of yacc.c  */
-#line 616 "shrink.y"
-    {
-	#line 4268 "format.w"
-	hput_xdimen_node(&((yyvsp[(1) - (1)].xd)));}
-    break;
-
-  case 117:
-/* Line 1792 of yacc.c  */
-#line 619 "shrink.y"
-    {
-	#line 4269 "format.w"
-	(yyval.info)= b000;}
-    break;
-
-  case 118:
-/* Line 1792 of yacc.c  */
-#line 622 "shrink.y"
-    {
-	#line 4270 "format.w"
-	(yyval.info)= b010;}
-    break;
-
-  case 119:
-/* Line 1792 of yacc.c  */
-#line 625 "shrink.y"
-    {
-	#line 4271 "format.w"
-	(yyval.info)= b010;}
-    break;
-
-  case 120:
-/* Line 1792 of yacc.c  */
-#line 628 "shrink.y"
-    {
-	#line 4272 "format.w"
-	hput_xdimen_node(&((yyvsp[(1) - (2)].xd)));}
-    break;
-
-  case 121:
-/* Line 1792 of yacc.c  */
-#line 630 "shrink.y"
-    {
-	#line 4272 "format.w"
-	(yyval.info)= b100;}
-    break;
-
-  case 122:
-/* Line 1792 of yacc.c  */
-#line 633 "shrink.y"
-    {
-	#line 4273 "format.w"
-	(yyval.info)= b110;}
-    break;
-
-  case 123:
-/* Line 1792 of yacc.c  */
-#line 636 "shrink.y"
-    {
-	#line 4274 "format.w"
-	(yyval.info)= b110;}
-    break;
-
-  case 124:
-/* Line 1792 of yacc.c  */
-#line 640 "shrink.y"
-    {
-	#line 4276 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(par_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 125:
-/* Line 1792 of yacc.c  */
-#line 644 "shrink.y"
-    {
-	#line 4342 "format.w"
-	(yyval.info)= b000;}
-    break;
-
-  case 126:
-/* Line 1792 of yacc.c  */
-#line 647 "shrink.y"
-    {
-	#line 4343 "format.w"
-	(yyval.info)= b001;}
-    break;
-
-  case 127:
-/* Line 1792 of yacc.c  */
-#line 650 "shrink.y"
-    {
-	#line 4344 "format.w"
-	(yyval.info)= b010;}
-    break;
-
-  case 128:
-/* Line 1792 of yacc.c  */
-#line 653 "shrink.y"
-    {
-	#line 4345 "format.w"
-	(yyval.info)= b100;}
-    break;
-
-  case 129:
-/* Line 1792 of yacc.c  */
-#line 656 "shrink.y"
-    {
-	#line 4346 "format.w"
-	(yyval.info)= b101;}
-    break;
-
-  case 130:
-/* Line 1792 of yacc.c  */
-#line 659 "shrink.y"
-    {
-	#line 4347 "format.w"
-	(yyval.info)= b110;}
-    break;
-
-  case 131:
-/* Line 1792 of yacc.c  */
-#line 662 "shrink.y"
-    {
-	#line 4348 "format.w"
-	(yyval.info)= b100;}
-    break;
-
-  case 132:
-/* Line 1792 of yacc.c  */
-#line 665 "shrink.y"
-    {
-	#line 4349 "format.w"
-	(yyval.info)= b101;}
-    break;
-
-  case 133:
-/* Line 1792 of yacc.c  */
-#line 668 "shrink.y"
-    {
-	#line 4350 "format.w"
-	(yyval.info)= b110;}
-    break;
-
-  case 134:
-/* Line 1792 of yacc.c  */
-#line 672 "shrink.y"
-    {
-	#line 4352 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(math_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 135:
-/* Line 1792 of yacc.c  */
-#line 676 "shrink.y"
-    {
-	#line 4402 "format.w"
-	(yyval.i)= 1;}
-    break;
-
-  case 136:
-/* Line 1792 of yacc.c  */
-#line 678 "shrink.y"
-    {
-	#line 4402 "format.w"
-	(yyval.i)= 0;}
-    break;
-
-  case 137:
-/* Line 1792 of yacc.c  */
-#line 681 "shrink.y"
-    {
-	#line 4403 "format.w"
-	(yyval.info)= b011	|((yyvsp[(1) - (1)].i)<<2);}
-    break;
-
-  case 138:
-/* Line 1792 of yacc.c  */
-#line 685 "shrink.y"
-    {
-	#line 4434 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(adjust_kind,1));}
-    break;
-
-  case 139:
-/* Line 1792 of yacc.c  */
-#line 689 "shrink.y"
-    {
-	#line 4533 "format.w"
-	(yyval.info)= hput_span_count((yyvsp[(1) - (1)].u));}
-    break;
-
-  case 140:
-/* Line 1792 of yacc.c  */
-#line 692 "shrink.y"
-    {
-	#line 4534 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(item_kind,1));}
-    break;
-
-  case 141:
-/* Line 1792 of yacc.c  */
-#line 695 "shrink.y"
-    {
-	#line 4535 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),TAG(item_kind,(yyvsp[(3) - (5)].info)));}
-    break;
-
-  case 142:
-/* Line 1792 of yacc.c  */
-#line 698 "shrink.y"
-    {
-	#line 4536 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(item_kind,b000));}
-    break;
-
-  case 143:
-/* Line 1792 of yacc.c  */
-#line 702 "shrink.y"
-    {
-	#line 4538 "format.w"
-	(yyval.info)= (yyvsp[(2) - (4)].info);}
-    break;
-
-  case 144:
-/* Line 1792 of yacc.c  */
-#line 705 "shrink.y"
-    {
-	#line 4539 "format.w"
-	(yyval.info)= (yyvsp[(2) - (4)].info)	|b010;}
-    break;
-
-  case 145:
-/* Line 1792 of yacc.c  */
-#line 709 "shrink.y"
-    {
-	#line 4541 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),TAG(table_kind,(yyvsp[(3) - (4)].info)));}
-    break;
-
-  case 146:
-/* Line 1792 of yacc.c  */
-#line 713 "shrink.y"
-    {
-	#line 4629 "format.w"
-	(yyval.x).w= (yyvsp[(1) - (2)].d);(yyval.x).h= (yyvsp[(2) - (2)].d);}
-    break;
-
-  case 147:
-/* Line 1792 of yacc.c  */
-#line 715 "shrink.y"
-    {
-	#line 4629 "format.w"
-	(yyval.x).w= (yyval.x).h= 0;}
-    break;
-
-  case 148:
-/* Line 1792 of yacc.c  */
-#line 718 "shrink.y"
-    {
-	#line 4630 "format.w"
-	(yyval.x).w= (yyvsp[(2) - (4)].x).w;(yyval.x).h= (yyvsp[(2) - (4)].x).h;(yyval.x).p= (yyvsp[(3) - (4)].st);(yyval.x).m= (yyvsp[(4) - (4)].st);RNG("Section number",(yyvsp[(1) - (4)].u),3,max_section_no);(yyval.x).n= (yyvsp[(1) - (4)].u);}
-    break;
-
-  case 149:
-/* Line 1792 of yacc.c  */
-#line 721 "shrink.y"
-    {
-	#line 4631 "format.w"
-	hput_tags((yyvsp[(1) - (4)].u),hput_image(&((yyvsp[(3) - (4)].x))));}
-    break;
-
-  case 150:
-/* Line 1792 of yacc.c  */
-#line 725 "shrink.y"
-    {
-	#line 4868 "format.w"
-	max_outline= (yyvsp[(2) - (2)].u);
-	RNG("max outline",max_outline,0,0xFFFF);
-	DBG(DBGDEF	|DBGLABEL,"Setting max outline to %d\n",max_outline);
-	}
-    break;
-
-  case 151:
-/* Line 1792 of yacc.c  */
-#line 732 "shrink.y"
-    {
-	#line 4960 "format.w"
-	(yyval.i)= LABEL_TOP;}
-    break;
-
-  case 152:
-/* Line 1792 of yacc.c  */
-#line 734 "shrink.y"
-    {
-	#line 4960 "format.w"
-	(yyval.i)= LABEL_BOT;}
-    break;
-
-  case 153:
-/* Line 1792 of yacc.c  */
-#line 736 "shrink.y"
-    {
-	#line 4960 "format.w"
-	(yyval.i)= LABEL_MID;}
-    break;
-
-  case 154:
-/* Line 1792 of yacc.c  */
-#line 738 "shrink.y"
-    {
-	#line 4960 "format.w"
-	(yyval.i)= LABEL_MID;}
-    break;
-
-  case 155:
-/* Line 1792 of yacc.c  */
-#line 742 "shrink.y"
-    {
-	#line 4962 "format.w"
-	hset_label((yyvsp[(3) - (5)].u),(yyvsp[(4) - (5)].i));}
-    break;
-
-  case 156:
-/* Line 1792 of yacc.c  */
-#line 747 "shrink.y"
-    {
-	#line 5220 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_link((yyvsp[(3) - (5)].u),(yyvsp[(4) - (5)].i)));}
-    break;
-
-  case 157:
-/* Line 1792 of yacc.c  */
-#line 751 "shrink.y"
-    {
-	#line 5350 "format.w"
-	
-	static int outline_no= -1;
-	(yyval.rf).k= outline_kind;(yyval.rf).n= (yyvsp[(3) - (7)].u);
-	if((yyvsp[(6) - (7)].l).s==0)QUIT("Outline with empty title in line %d",yylineno);
-	outline_no++;
-	hset_outline(outline_no,(yyvsp[(3) - (7)].u),(yyvsp[(4) - (7)].i),(yyvsp[(5) - (7)].u));
-	}
-    break;
-
-  case 158:
-/* Line 1792 of yacc.c  */
-#line 761 "shrink.y"
-    {
-	#line 5765 "format.w"
-	REF_RNG(stream_kind,(yyvsp[(1) - (1)].u));}
-    break;
-
-  case 159:
-/* Line 1792 of yacc.c  */
-#line 763 "shrink.y"
-    {
-	#line 5765 "format.w"
-	HPUT8(255);}
-    break;
-
-  case 160:
-/* Line 1792 of yacc.c  */
-#line 766 "shrink.y"
-    {
-	#line 5766 "format.w"
-	RNG("split ratio",(yyvsp[(3) - (3)].u),0,1000);HPUT16((yyvsp[(3) - (3)].u));}
-    break;
-
-  case 161:
-/* Line 1792 of yacc.c  */
-#line 769 "shrink.y"
-    {
-	#line 5767 "format.w"
-	RNG("magnification factor",(yyvsp[(2) - (2)].u),0,1000);HPUT16((yyvsp[(2) - (2)].u));}
-    break;
-
-  case 163:
-/* Line 1792 of yacc.c  */
-#line 773 "shrink.y"
-    {
-	#line 5769 "format.w"
-	(yyval.info)= 0;}
-    break;
-
-  case 164:
-/* Line 1792 of yacc.c  */
-#line 775 "shrink.y"
-    {
-	#line 5769 "format.w"
-	(yyval.info)= 1;}
-    break;
-
-  case 165:
-/* Line 1792 of yacc.c  */
-#line 777 "shrink.y"
-    {
-	#line 5769 "format.w"
-	(yyval.info)= 2;}
-    break;
-
-  case 166:
-/* Line 1792 of yacc.c  */
-#line 779 "shrink.y"
-    {
-	#line 5769 "format.w"
-	(yyval.info)= 3;}
-    break;
-
-  case 167:
-/* Line 1792 of yacc.c  */
-#line 785 "shrink.y"
-    {
-	#line 5773 "format.w"
-	DEF((yyval.rf),stream_kind,(yyvsp[(3) - (10)].u));hput_tags((yyvsp[(1) - (10)].u),TAG(stream_kind,(yyvsp[(4) - (10)].info)	|b100));}
-    break;
-
-  case 168:
-/* Line 1792 of yacc.c  */
-#line 790 "shrink.y"
-    {
-	#line 5776 "format.w"
-	RNG("Stream insertion",(yyvsp[(3) - (4)].u),0,max_ref[stream_kind]);hput_tags((yyvsp[(1) - (4)].u),TAG(stream_kind,b100));}
-    break;
-
-  case 171:
-/* Line 1792 of yacc.c  */
-#line 796 "shrink.y"
-    {
-	#line 5871 "format.w"
-	(yyval.info)= b010;}
-    break;
-
-  case 172:
-/* Line 1792 of yacc.c  */
-#line 799 "shrink.y"
-    {
-	#line 5872 "format.w"
-	(yyval.info)= b010;}
-    break;
-
-  case 173:
-/* Line 1792 of yacc.c  */
-#line 802 "shrink.y"
-    {
-	#line 5873 "format.w"
-	(yyval.info)= b000;}
-    break;
-
-  case 174:
-/* Line 1792 of yacc.c  */
-#line 806 "shrink.y"
-    {
-	#line 5875 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),TAG(stream_kind,(yyvsp[(4) - (5)].info)));}
-    break;
-
-  case 175:
-/* Line 1792 of yacc.c  */
-#line 810 "shrink.y"
-    {
-	#line 5978 "format.w"
-	HPUT8(1);}
-    break;
-
-  case 176:
-/* Line 1792 of yacc.c  */
-#line 813 "shrink.y"
-    {
-	#line 5979 "format.w"
-	RNG("page priority",(yyvsp[(1) - (1)].u),0,255);HPUT8((yyvsp[(1) - (1)].u));}
-    break;
-
-  case 179:
-/* Line 1792 of yacc.c  */
-#line 819 "shrink.y"
-    {
-	#line 5983 "format.w"
-	hput_string((yyvsp[(1) - (1)].s));}
-    break;
-
-  case 180:
-/* Line 1792 of yacc.c  */
-#line 821 "shrink.y"
-    {
-	#line 5983 "format.w"
-	HPUT32((yyvsp[(5) - (5)].d));}
-    break;
-
-  case 182:
-/* Line 1792 of yacc.c  */
-#line 828 "shrink.y"
-    {
-	#line 6095 "format.w"
-	REF(page_kind,(yyvsp[(3) - (5)].u));hput_range((yyvsp[(3) - (5)].u),true);}
-    break;
-
-  case 183:
-/* Line 1792 of yacc.c  */
-#line 831 "shrink.y"
-    {
-	#line 6096 "format.w"
-	REF(page_kind,(yyvsp[(3) - (5)].u));hput_range((yyvsp[(3) - (5)].u),false);}
-    break;
-
-  case 185:
-/* Line 1792 of yacc.c  */
-#line 837 "shrink.y"
-    {
-	#line 6786 "format.w"
-	new_directory((yyvsp[(3) - (3)].u)+1);new_output_buffers();}
-    break;
-
-  case 189:
-/* Line 1792 of yacc.c  */
-#line 842 "shrink.y"
-    {
-	#line 6789 "format.w"
-	RNG("Section number",(yyvsp[(3) - (5)].u),3,max_section_no);hset_entry(&(dir[(yyvsp[(3) - (5)].u)]),(yyvsp[(3) - (5)].u),0,0,(yyvsp[(4) - (5)].s));}
-    break;
-
-  case 190:
-/* Line 1792 of yacc.c  */
-#line 846 "shrink.y"
-    {
-	#line 7277 "format.w"
-	hput_definitions_start();}
-    break;
-
-  case 191:
-/* Line 1792 of yacc.c  */
-#line 850 "shrink.y"
-    {
-	#line 7279 "format.w"
-	hput_definitions_end();}
-    break;
-
-  case 194:
-/* Line 1792 of yacc.c  */
-#line 856 "shrink.y"
-    {
-	#line 7395 "format.w"
-		/*245:*/
-	if(max_ref[label_kind]>=0)
-	ALLOCATE(labels,max_ref[label_kind]+1,label_t);
-		/*:245*/	/*266:*/
-	if(max_outline>=0)
-	ALLOCATE(outlines,max_outline+1,outline_t);
-		/*:266*/	/*293:*/
-	ALLOCATE(page_on,max_ref[page_kind]+1,int);
-	ALLOCATE(range_pos,2*(max_ref[range_kind]+1),range_pos_t);
-		/*:293*/	/*357:*/
-	definition_bits[0][int_kind]= (1<<(MAX_INT_DEFAULT+1))-1;
-	definition_bits[0][dimen_kind]= (1<<(MAX_DIMEN_DEFAULT+1))-1;
-	definition_bits[0][xdimen_kind]= (1<<(MAX_XDIMEN_DEFAULT+1))-1;
-	definition_bits[0][glue_kind]= (1<<(MAX_GLUE_DEFAULT+1))-1;
-	definition_bits[0][baseline_kind]= (1<<(MAX_BASELINE_DEFAULT+1))-1;
-	definition_bits[0][page_kind]= (1<<(MAX_PAGE_DEFAULT+1))-1;
-	definition_bits[0][stream_kind]= (1<<(MAX_STREAM_DEFAULT+1))-1;
-	definition_bits[0][range_kind]= (1<<(MAX_RANGE_DEFAULT+1))-1;
-		/*:357*/	/*372:*/
-	ALLOCATE(hfont_name,max_ref[font_kind]+1,char*);
-		/*:372*/hput_max_definitions();}
-    break;
-
-  case 197:
-/* Line 1792 of yacc.c  */
-#line 882 "shrink.y"
-    {
-	#line 7399 "format.w"
-	hset_max(font_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 198:
-/* Line 1792 of yacc.c  */
-#line 885 "shrink.y"
-    {
-	#line 7400 "format.w"
-	hset_max(int_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 199:
-/* Line 1792 of yacc.c  */
-#line 888 "shrink.y"
-    {
-	#line 7401 "format.w"
-	hset_max(dimen_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 200:
-/* Line 1792 of yacc.c  */
-#line 891 "shrink.y"
-    {
-	#line 7402 "format.w"
-	hset_max(ligature_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 201:
-/* Line 1792 of yacc.c  */
-#line 894 "shrink.y"
-    {
-	#line 7403 "format.w"
-	hset_max(disc_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 202:
-/* Line 1792 of yacc.c  */
-#line 897 "shrink.y"
-    {
-	#line 7404 "format.w"
-	hset_max(glue_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 203:
-/* Line 1792 of yacc.c  */
-#line 900 "shrink.y"
-    {
-	#line 7405 "format.w"
-	hset_max(language_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 204:
-/* Line 1792 of yacc.c  */
-#line 903 "shrink.y"
-    {
-	#line 7406 "format.w"
-	hset_max(rule_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 205:
-/* Line 1792 of yacc.c  */
-#line 906 "shrink.y"
-    {
-	#line 7407 "format.w"
-	hset_max(image_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 206:
-/* Line 1792 of yacc.c  */
-#line 909 "shrink.y"
-    {
-	#line 7408 "format.w"
-	hset_max(leaders_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 207:
-/* Line 1792 of yacc.c  */
-#line 912 "shrink.y"
-    {
-	#line 7409 "format.w"
-	hset_max(baseline_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 208:
-/* Line 1792 of yacc.c  */
-#line 915 "shrink.y"
-    {
-	#line 7410 "format.w"
-	hset_max(xdimen_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 209:
-/* Line 1792 of yacc.c  */
-#line 918 "shrink.y"
-    {
-	#line 7411 "format.w"
-	hset_max(param_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 210:
-/* Line 1792 of yacc.c  */
-#line 921 "shrink.y"
-    {
-	#line 7412 "format.w"
-	hset_max(stream_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 211:
-/* Line 1792 of yacc.c  */
-#line 924 "shrink.y"
-    {
-	#line 7413 "format.w"
-	hset_max(page_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 212:
-/* Line 1792 of yacc.c  */
-#line 927 "shrink.y"
-    {
-	#line 7414 "format.w"
-	hset_max(range_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 213:
-/* Line 1792 of yacc.c  */
-#line 930 "shrink.y"
-    {
-	#line 7415 "format.w"
-	hset_max(label_kind,(yyvsp[(2) - (2)].u));}
-    break;
-
-  case 214:
-/* Line 1792 of yacc.c  */
-#line 936 "shrink.y"
-    {
-	#line 7612 "format.w"
-	DEF((yyval.rf),font_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),(yyvsp[(4) - (5)].info));}
-    break;
-
-  case 215:
-/* Line 1792 of yacc.c  */
-#line 939 "shrink.y"
-    {
-	#line 7613 "format.w"
-	DEF((yyval.rf),int_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_int((yyvsp[(4) - (5)].i)));}
-    break;
-
-  case 216:
-/* Line 1792 of yacc.c  */
-#line 942 "shrink.y"
-    {
-	#line 7614 "format.w"
-	DEF((yyval.rf),dimen_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_dimen((yyvsp[(4) - (5)].d)));}
-    break;
-
-  case 217:
-/* Line 1792 of yacc.c  */
-#line 945 "shrink.y"
-    {
-	#line 7615 "format.w"
-	DEF((yyval.rf),language_kind,(yyvsp[(3) - (5)].u));hput_string((yyvsp[(4) - (5)].s));hput_tags((yyvsp[(1) - (5)].u),TAG(language_kind,0));}
-    break;
-
-  case 218:
-/* Line 1792 of yacc.c  */
-#line 948 "shrink.y"
-    {
-	#line 7616 "format.w"
-	DEF((yyval.rf),glue_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_glue(&((yyvsp[(4) - (5)].g))));}
-    break;
-
-  case 219:
-/* Line 1792 of yacc.c  */
-#line 951 "shrink.y"
-    {
-	#line 7617 "format.w"
-	DEF((yyval.rf),xdimen_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_xdimen(&((yyvsp[(4) - (5)].xd))));}
-    break;
-
-  case 220:
-/* Line 1792 of yacc.c  */
-#line 954 "shrink.y"
-    {
-	#line 7618 "format.w"
-	DEF((yyval.rf),rule_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_rule(&((yyvsp[(4) - (5)].r))));}
-    break;
-
-  case 221:
-/* Line 1792 of yacc.c  */
-#line 957 "shrink.y"
-    {
-	#line 7619 "format.w"
-	DEF((yyval.rf),leaders_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),TAG(leaders_kind,(yyvsp[(4) - (5)].info)));}
-    break;
-
-  case 222:
-/* Line 1792 of yacc.c  */
-#line 960 "shrink.y"
-    {
-	#line 7620 "format.w"
-	DEF((yyval.rf),baseline_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),TAG(baseline_kind,(yyvsp[(4) - (5)].info)));}
-    break;
-
-  case 223:
-/* Line 1792 of yacc.c  */
-#line 963 "shrink.y"
-    {
-	#line 7621 "format.w"
-	DEF((yyval.rf),ligature_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_ligature(&((yyvsp[(4) - (5)].lg))));}
-    break;
-
-  case 224:
-/* Line 1792 of yacc.c  */
-#line 966 "shrink.y"
-    {
-	#line 7622 "format.w"
-	DEF((yyval.rf),disc_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_disc(&((yyvsp[(4) - (5)].dc))));}
-    break;
-
-  case 225:
-/* Line 1792 of yacc.c  */
-#line 969 "shrink.y"
-    {
-	#line 7623 "format.w"
-	DEF((yyval.rf),image_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_image(&((yyvsp[(4) - (5)].x))));}
-    break;
-
-  case 226:
-/* Line 1792 of yacc.c  */
-#line 972 "shrink.y"
-    {
-	#line 7624 "format.w"
-	DEF((yyval.rf),param_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),hput_list((yyvsp[(1) - (5)].u)+2,&((yyvsp[(4) - (5)].l))));}
-    break;
-
-  case 227:
-/* Line 1792 of yacc.c  */
-#line 975 "shrink.y"
-    {
-	#line 7625 "format.w"
-	DEF((yyval.rf),page_kind,(yyvsp[(3) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),TAG(page_kind,0));}
-    break;
-
-  case 228:
-/* Line 1792 of yacc.c  */
-#line 980 "shrink.y"
-    {
-	#line 7644 "format.w"
-	DEF_REF((yyval.rf),int_kind,(yyvsp[(3) - (5)].u),(yyvsp[(4) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),TAG(int_kind,0));}
-    break;
-
-  case 229:
-/* Line 1792 of yacc.c  */
-#line 983 "shrink.y"
-    {
-	#line 7645 "format.w"
-	DEF_REF((yyval.rf),dimen_kind,(yyvsp[(3) - (5)].u),(yyvsp[(4) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),TAG(dimen_kind,0));}
-    break;
-
-  case 230:
-/* Line 1792 of yacc.c  */
-#line 986 "shrink.y"
-    {
-	#line 7646 "format.w"
-	DEF_REF((yyval.rf),glue_kind,(yyvsp[(3) - (5)].u),(yyvsp[(4) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),TAG(glue_kind,0));}
-    break;
-
-  case 232:
-/* Line 1792 of yacc.c  */
-#line 991 "shrink.y"
-    {
-	#line 7760 "format.w"
-	check_param_def(&((yyvsp[(2) - (2)].rf)));}
-    break;
-
-  case 233:
-/* Line 1792 of yacc.c  */
-#line 994 "shrink.y"
-    {
-	#line 7761 "format.w"
-	(yyval.l).p= (yyvsp[(2) - (2)].u);(yyval.l).k= param_kind;(yyval.l).s= (hpos-hstart)-(yyvsp[(2) - (2)].u);}
-    break;
-
-  case 234:
-/* Line 1792 of yacc.c  */
-#line 998 "shrink.y"
-    {
-	#line 7782 "format.w"
-	HPUTX(2);hpos++;hput_tags((yyvsp[(1) - (1)].u),TAG(param_kind,1));}
-    break;
-
-  case 235:
-/* Line 1792 of yacc.c  */
-#line 1001 "shrink.y"
-    {
-	#line 7783 "format.w"
-	hpos= hpos-2;}
-    break;
-
-  case 236:
-/* Line 1792 of yacc.c  */
-#line 1004 "shrink.y"
-    {
-	#line 7784 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u)-2,hput_list((yyvsp[(1) - (5)].u)-1,&((yyvsp[(4) - (5)].l))));}
-    break;
-
-  case 238:
-/* Line 1792 of yacc.c  */
-#line 1012 "shrink.y"
-    {
-	#line 7926 "format.w"
-	uint8_t f= (yyvsp[(0) - (4)].u);SET_DBIT(f,font_kind);hfont_name[f]= strdup((yyvsp[(1) - (4)].s));(yyval.info)= hput_font_head(f,hfont_name[f],(yyvsp[(2) - (4)].d),(yyvsp[(3) - (4)].u),(yyvsp[(4) - (4)].u));}
-    break;
-
-  case 241:
-/* Line 1792 of yacc.c  */
-#line 1019 "shrink.y"
-    {
-	#line 7931 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_int((yyvsp[(4) - (5)].i)));}
-    break;
-
-  case 242:
-/* Line 1792 of yacc.c  */
-#line 1022 "shrink.y"
-    {
-	#line 7932 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_kern(&((yyvsp[(4) - (5)].kt))));}
-    break;
-
-  case 243:
-/* Line 1792 of yacc.c  */
-#line 1025 "shrink.y"
-    {
-	#line 7933 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_ligature(&((yyvsp[(4) - (5)].lg))));}
-    break;
-
-  case 244:
-/* Line 1792 of yacc.c  */
-#line 1028 "shrink.y"
-    {
-	#line 7934 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_disc(&((yyvsp[(4) - (5)].dc))));}
-    break;
-
-  case 245:
-/* Line 1792 of yacc.c  */
-#line 1031 "shrink.y"
-    {
-	#line 7935 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_glue(&((yyvsp[(4) - (5)].g))));}
-    break;
-
-  case 246:
-/* Line 1792 of yacc.c  */
-#line 1034 "shrink.y"
-    {
-	#line 7936 "format.w"
-	hput_string((yyvsp[(4) - (5)].s));hput_tags((yyvsp[(1) - (5)].u),TAG(language_kind,0));}
-    break;
-
-  case 247:
-/* Line 1792 of yacc.c  */
-#line 1037 "shrink.y"
-    {
-	#line 7937 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_rule(&((yyvsp[(4) - (5)].r))));}
-    break;
-
-  case 248:
-/* Line 1792 of yacc.c  */
-#line 1040 "shrink.y"
-    {
-	#line 7938 "format.w"
-	hput_tags((yyvsp[(1) - (5)].u),hput_image(&((yyvsp[(4) - (5)].x))));}
-    break;
-
-  case 249:
-/* Line 1792 of yacc.c  */
-#line 1044 "shrink.y"
-    {
-	#line 7940 "format.w"
-	RNG("Font parameter",(yyvsp[(1) - (1)].u),0,MAX_FONT_PARAMS);}
-    break;
-
-  case 250:
-/* Line 1792 of yacc.c  */
-#line 1048 "shrink.y"
-    {
-	#line 8013 "format.w"
-	REF(xdimen_kind,(yyvsp[(1) - (1)].u));}
-    break;
-
-  case 251:
-/* Line 1792 of yacc.c  */
-#line 1051 "shrink.y"
-    {
-	#line 8014 "format.w"
-	REF(param_kind,(yyvsp[(1) - (1)].u));}
-    break;
-
-  case 252:
-/* Line 1792 of yacc.c  */
-#line 1054 "shrink.y"
-    {
-	#line 8015 "format.w"
-	REF_RNG(stream_kind,(yyvsp[(1) - (1)].u));}
-    break;
-
-  case 253:
-/* Line 1792 of yacc.c  */
-#line 1060 "shrink.y"
-    {
-	#line 8019 "format.w"
-	REF(penalty_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(penalty_kind,0));}
-    break;
-
-  case 254:
-/* Line 1792 of yacc.c  */
-#line 1064 "shrink.y"
-    {
-	#line 8021 "format.w"
-	REF(dimen_kind,(yyvsp[(4) - (5)].u));hput_tags((yyvsp[(1) - (5)].u),TAG(kern_kind,((yyvsp[(3) - (5)].b))?b100:b000));}
-    break;
-
-  case 255:
-/* Line 1792 of yacc.c  */
-#line 1068 "shrink.y"
-    {
-	#line 8023 "format.w"
-	REF(xdimen_kind,(yyvsp[(5) - (6)].u));hput_tags((yyvsp[(1) - (6)].u),TAG(kern_kind,((yyvsp[(3) - (6)].b))?b101:b001));}
-    break;
-
-  case 256:
-/* Line 1792 of yacc.c  */
-#line 1071 "shrink.y"
-    {
-	#line 8024 "format.w"
-	REF(glue_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(glue_kind,0));}
-    break;
-
-  case 257:
-/* Line 1792 of yacc.c  */
-#line 1074 "shrink.y"
-    {
-	#line 8025 "format.w"
-	REF(ligature_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(ligature_kind,0));}
-    break;
-
-  case 258:
-/* Line 1792 of yacc.c  */
-#line 1077 "shrink.y"
-    {
-	#line 8026 "format.w"
-	REF(disc_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(disc_kind,0));}
-    break;
-
-  case 259:
-/* Line 1792 of yacc.c  */
-#line 1080 "shrink.y"
-    {
-	#line 8027 "format.w"
-	REF(rule_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(rule_kind,0));}
-    break;
-
-  case 260:
-/* Line 1792 of yacc.c  */
-#line 1083 "shrink.y"
-    {
-	#line 8028 "format.w"
-	REF(image_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(image_kind,0));}
-    break;
-
-  case 261:
-/* Line 1792 of yacc.c  */
-#line 1086 "shrink.y"
-    {
-	#line 8029 "format.w"
-	REF(leaders_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(leaders_kind,0));}
-    break;
-
-  case 262:
-/* Line 1792 of yacc.c  */
-#line 1089 "shrink.y"
-    {
-	#line 8030 "format.w"
-	REF(baseline_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),TAG(baseline_kind,0));}
-    break;
-
-  case 263:
-/* Line 1792 of yacc.c  */
-#line 1092 "shrink.y"
-    {
-	#line 8031 "format.w"
-	REF(language_kind,(yyvsp[(3) - (4)].u));hput_tags((yyvsp[(1) - (4)].u),hput_language((yyvsp[(3) - (4)].u)));}
-    break;
-
-  case 264:
-/* Line 1792 of yacc.c  */
-#line 1096 "shrink.y"
-    {
-	#line 8033 "format.w"
-	REF(glue_kind,(yyvsp[(3) - (4)].u));
-	if((yyvsp[(3) - (4)].u)==zero_skip_no){hpos= hpos-2;(yyval.b)= false;}
-	else{hput_tags((yyvsp[(1) - (4)].u),TAG(glue_kind,0));(yyval.b)= true;}}
-    break;
-
-  case 265:
-/* Line 1792 of yacc.c  */
-#line 1103 "shrink.y"
-    {
-	#line 8464 "format.w"
-	hput_content_start();}
-    break;
-
-  case 266:
-/* Line 1792 of yacc.c  */
-#line 1106 "shrink.y"
-    {
-	#line 8465 "format.w"
-	hput_content_end();hput_range_defs();hput_label_defs();}
-    break;
-
-
-/* Line 1792 of yacc.c  */
-#line 3942 "shrink.tab.c"
-      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 (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 (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);
-	  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);
-      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 (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);
-    }
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
-      YYPOPSTACK (1);
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
-
-/* Line 2055 of yacc.c  */
-#line 1110 "shrink.y"
-
-	/*:510*/

Deleted: trunk/Build/source/texk/web2c/hitexdir/parser.h
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/parser.h	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir/parser.h	2021-09-28 21:45:20 UTC (rev 60644)
@@ -1,174 +0,0 @@
-/* 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 <http://www.gnu.org/licenses/>.  */
-
-/* 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_SHRINK_TAB_H_INCLUDED
-# define YY_YY_SHRINK_TAB_H_INCLUDED
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#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 {
-     START = 258,
-     END = 259,
-     GLYPH = 260,
-     UNSIGNED = 261,
-     REFERENCE = 262,
-     SIGNED = 263,
-     STRING = 264,
-     CHARCODE = 265,
-     FPNUM = 266,
-     DIMEN = 267,
-     PT = 268,
-     MM = 269,
-     INCH = 270,
-     XDIMEN = 271,
-     H = 272,
-     V = 273,
-     FIL = 274,
-     FILL = 275,
-     FILLL = 276,
-     PENALTY = 277,
-     INTEGER = 278,
-     LANGUAGE = 279,
-     RULE = 280,
-     RUNNING = 281,
-     KERN = 282,
-     EXPLICIT = 283,
-     GLUE = 284,
-     PLUS = 285,
-     MINUS = 286,
-     TXT_START = 287,
-     TXT_END = 288,
-     TXT_IGNORE = 289,
-     TXT_FONT_GLUE = 290,
-     TXT_FONT_HYPHEN = 291,
-     TXT_FONT = 292,
-     TXT_LOCAL = 293,
-     TXT_GLOBAL = 294,
-     TXT_CC = 295,
-     HBOX = 296,
-     VBOX = 297,
-     SHIFTED = 298,
-     HPACK = 299,
-     HSET = 300,
-     VPACK = 301,
-     VSET = 302,
-     DEPTH = 303,
-     ADD = 304,
-     TO = 305,
-     LEADERS = 306,
-     ALIGN = 307,
-     CENTER = 308,
-     EXPAND = 309,
-     BASELINE = 310,
-     LIGATURE = 311,
-     DISC = 312,
-     PAR = 313,
-     MATH = 314,
-     ON = 315,
-     OFF = 316,
-     ADJUST = 317,
-     TABLE = 318,
-     ITEM = 319,
-     IMAGE = 320,
-     LABEL = 321,
-     BOT = 322,
-     MID = 323,
-     LINK = 324,
-     OUTLINE = 325,
-     STREAM = 326,
-     STREAMDEF = 327,
-     FIRST = 328,
-     LAST = 329,
-     TOP = 330,
-     NOREFERENCE = 331,
-     PAGE = 332,
-     RANGE = 333,
-     DIRECTORY = 334,
-     SECTION = 335,
-     DEFINITIONS = 336,
-     MAX = 337,
-     PARAM = 338,
-     FONT = 339,
-     CONTENT = 340
-   };
-#endif
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-{
-/* Line 2058 of yacc.c  */
-#line 79 "shrink.y"
-
-	#line 10241 "format.w"
-	uint32_t u;  int32_t i;  char *s;  float64_t f;  glyph_t c;
-	dimen_t d;stretch_t st;xdimen_t xd;kern_t kt;
-	rule_t r;glue_t g;image_t x;
-	list_t l;box_t h;disc_t dc;lig_t lg;
-	ref_t rf;info_t info;order_t o;bool b;
-	
-
-/* Line 2058 of yacc.c  */
-#line 152 "shrink.tab.h"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-extern YYSTYPE yylval;
-
-#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 (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-#endif /* !YY_YY_SHRINK_TAB_H_INCLUDED  */

Deleted: trunk/Build/source/texk/web2c/hitexdir/parser.y
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/parser.y	2021-09-28 21:10:00 UTC (rev 60643)
+++ trunk/Build/source/texk/web2c/hitexdir/parser.y	2021-09-28 21:45:20 UTC (rev 60644)
@@ -1,873 +0,0 @@
-	/*510:*/
-%{
-	
-#include "basetypes.h"
-#include <string.h>
-#include <math.h>
-#include "error.h"
-#include "hformat.h"
-#include "hput.h"
-extern char**hfont_name;
-
-	/*356:*/
-uint32_t definition_bits[0x100/32][32]= {
-	{0}};
-
-#define SET_DBIT(N,K) ((N)>0xFF?1:(definition_bits[N/32][K]	|= (1<<((N)&(32-1)))))
-#define GET_DBIT(N,K) ((N)>0xFF?1:((definition_bits[N/32][K]>>((N)&(32-1)))&1))
-#define DEF(D,K,N) (D).k= K; (D).n= (N);SET_DBIT((D).n,(D).k);\
- DBG(DBGDEF,"Defining %s %d\n",definition_name[(D).k],(D).n);\
- RNG("Definition",(D).n,max_fixed[(D).k]+1,max_ref[(D).k]);
-#define REF(K,N) REF_RNG(K,N);if(!GET_DBIT(N,K)) \
- QUIT("Reference %d to %s before definition",(N),definition_name[K])
-	/*:356*/	/*360:*/
-#define DEF_REF(D,K,M,N)  DEF(D,K,M);\
-if ((M)>max_default[K]) QUIT("Defining non default reference %d for %s",M,definition_name[K]); \
-if ((N)>max_fixed[K]) QUIT("Defining reference %d for %s by non fixed reference %d",M,definition_name[K],N);
-	/*:360*/
-
-extern void hset_entry(entry_t*e,uint16_t i,uint32_t size,
-uint32_t xsize,char*file_name);
-
-	/*423:*/
-#ifdef DEBUG
-#define  YYDEBUG 1
-extern int yydebug;
-#else
-#define YYDEBUG 0
-#endif
-	/*:423*/
-extern int yylex(void);
-
-	/*352:*/
-void hset_max(kind_t k,int n)
-{
-	DBG(DBGDEF,"Setting max %s to %d\n",definition_name[k],n);
-	RNG("Maximum",n,max_fixed[k]+1,MAX_REF(k));
-	if(n>max_ref[k])
-	max_ref[k]= n;
-	}
-	/*:352*/	/*363:*/
-void check_param_def(ref_t*df)
-{
-	if(df->k!=int_kind&&df->k!=dimen_kind&&df->k!=glue_kind)
-	QUIT("Kind %s not allowed in parameter list",definition_name[df->k]);
-	if(df->n<=max_fixed[df->k]||max_default[df->k]<df->n)
-	QUIT("Parameter %d for %s not allowed in parameter list",df->n,definition_name[df->k]);
-	}
-	/*:363*/	/*422:*/
-extern int yylineno;
-int yyerror(const char*msg)
-{
-	QUIT(" in line %d %s",yylineno,msg);
-	return 0;
-	}
-	/*:422*/
-
-
-%}
-
-
-
-
-
-%union {
-	uint32_t u;  int32_t i;  char *s;  float64_t f;  glyph_t c;
-	dimen_t d;stretch_t st;xdimen_t xd;kern_t kt;
-	rule_t r;glue_t g;image_t x;
-	list_t l;box_t h;disc_t dc;lig_t lg;
-	ref_t rf;info_t info;order_t o;bool b;
-	}
-
-
-
-%start hint
-
-	/*2:*/
-%token START    
-%token END      
-%token GLYPH     
-%token <u> UNSIGNED
-%token <u> REFERENCE
-	/*:2*/	/*4:*/
-%type <u> start
-%type <c> glyph
-	/*:4*/	/*26:*/
-%token <i> SIGNED
-%type <i> integer
-	/*:26*/	/*33:*/
-%token <s> STRING
-	/*:33*/	/*47:*/
-%token <u> CHARCODE
-	/*:47*/	/*49:*/
-%type <s> string
-	/*:49*/	/*54:*/
-%token <f> FPNUM
-%type <f> number
-	/*:54*/	/*79:*/
-%token DIMEN 
-%token PT 
-%token MM 
-%token INCH 
-%type <d> dimension
-	/*:79*/	/*87:*/
-%token XDIMEN 
-%token H 
-%token V 
-%type <xd> xdimen
-	/*:87*/	/*98:*/
-%token FIL 
-%token FILL 
-%token FILLL 
-%type <st> stretch
-%type <o> order
-	/*:98*/	/*102:*/
-%token PENALTY 
-%token INTEGER     
-%type <i> penalty
-	/*:102*/	/*108:*/
-%token LANGUAGE 
-	/*:108*/	/*114:*/
-%token RULE 
-%token RUNNING 
-%type <d> rule_dimension
-%type <r> rule
-	/*:114*/	/*123:*/
-%token KERN 
-%token EXPLICIT 
-%type <b> explicit
-%type <kt> kern
-	/*:123*/	/*132:*/
-%token GLUE 
-%token PLUS  
-%token MINUS   
-%type <g> glue
-%type <b> glue_node
-%type <st> plus minus
-	/*:132*/	/*141:*/
-%type <l>  list
-%type <u> position content_list
-	/*:141*/	/*150:*/
-%token TXT_START TXT_END TXT_IGNORE
-%token TXT_FONT_GLUE TXT_FONT_HYPHEN
-%token <u> TXT_FONT TXT_LOCAL
-%token <rf> TXT_GLOBAL
-%token <u> TXT_CC
-%type <u> text
-	/*:150*/	/*161:*/
-%token HBOX     
-%token VBOX     
-%token SHIFTED  
-%type <info> box box_dimen box_shift box_glue_set
-
-	/*:161*/	/*169:*/
-%token HPACK 
-%token HSET  
-%token VPACK 
-%token VSET  
-%token DEPTH 
-%token ADD 
-%token TO 
-%type <info> xbox box_goal hpack vpack
-	/*:169*/	/*174:*/
-%token LEADERS 
-%token ALIGN 
-%token CENTER 
-%token EXPAND 
-%type <info> leaders
-%type <info> ltype
-	/*:174*/	/*181:*/
-%token BASELINE 
-%type <info> baseline
-	/*:181*/	/*188:*/
-%token LIGATURE     
-%type <u>  lig_cc
-%type <lg> ligature
-%type <u> ref
-	/*:188*/	/*196:*/
-%token DISC     
-%type <dc> disc
-%type <u> replace_count
-	/*:196*/	/*204:*/
-%token PAR 
-%type <info> par
-	/*:204*/	/*209:*/
-%token MATH 
-%type <info> math
-	/*:209*/	/*214:*/
-%token ON 
-%token OFF 
-%type <i> on_off
-	/*:214*/	/*218:*/
-%token ADJUST 
-	/*:218*/	/*222:*/
-%token TABLE 
-%token ITEM 
-%type <info> table span_count
-	/*:222*/	/*229:*/
-%token IMAGE 
-%type <x> image image_dimen
-	/*:229*/	/*246:*/
-%token LABEL 
-%token BOT 
-%token MID 
-%type <i> placement
-	/*:246*/	/*260:*/
-%token LINK 
-	/*:260*/	/*270:*/
-%token OUTLINE 
-	/*:270*/	/*277:*/
-%token STREAM 
-%token STREAMDEF 
-%token FIRST 
-%token LAST 
-%token TOP 
-%token NOREFERENCE 
-%type <info> stream_type
-%type <u> stream_ref
-%type <rf> stream_def_node
-	/*:277*/	/*283:*/
-%type <info> stream
-	/*:283*/	/*287:*/
-%token PAGE 
-	/*:287*/	/*295:*/
-%token RANGE 
-	/*:295*/	/*322:*/
-%token DIRECTORY 
-%token SECTION 
-	/*:322*/	/*341:*/
-%token DEFINITIONS 
-	/*:341*/	/*349:*/
-%token MAX 
-	/*:349*/	/*358:*/
-
-%type <rf> def_node
-	/*:358*/	/*364:*/
-%token PARAM 
-%type <u> def_list
-%type <l> parameters
-	/*:364*/	/*373:*/
-%token FONT     
-%type <info> font font_head
-	/*:373*/	/*401:*/
-%token CONTENT 
-	/*:401*/
-%%
-	/*5:*/
-glyph:UNSIGNED REFERENCE{
-	$$.c= $1;REF(font_kind,$2);$$.f= $2;};
-content_node:start GLYPH glyph END{
-	hput_tags($1,hput_glyph(&($3)));};
-start:START{
-	HPUTNODE;$$= (uint32_t)(hpos++-hstart);}
-	/*:5*/	/*29:*/
-integer:SIGNED	|UNSIGNED{
-	RNG("number",$1,0,INT32_MAX);};
-	/*:29*/	/*38:*/
-glyph:CHARCODE REFERENCE{
-	$$.c= $1;REF(font_kind,$2);$$.f= $2;};
-	/*:38*/	/*50:*/
-string:STRING	|CHARCODE{
-	static char s[2];
-	RNG("String element",$1,0x20,0x7E);
-	s[0]= $1;s[1]= 0;$$= s;};
-	/*:50*/	/*58:*/
-number:UNSIGNED{
-	$$= (float64_t)$1;}	|SIGNED{
-	$$= (float64_t)$1;}	|FPNUM;
-	/*:58*/	/*82:*/
-dimension:number PT{
-	$$= ROUND($1*ONE);RNG("Dimension",$$,-MAX_DIMEN,MAX_DIMEN);}
-	|number INCH{
-	$$= ROUND($1*ONE*72.27);RNG("Dimension",$$,-MAX_DIMEN,MAX_DIMEN);}
-	|number MM{
-	$$= ROUND($1*ONE*(72.27/25.4));RNG("Dimension",$$,-MAX_DIMEN,MAX_DIMEN);};
-	/*:82*/	/*89:*/
-xdimen:dimension number H number V{
-	$$.w= $1;$$.h= $2;$$.v= $4;}
-	|dimension number H{
-	$$.w= $1;$$.h= $2;$$.v= 0.0;}
-	|dimension number V{
-	$$.w= $1;$$.h= 0.0;$$.v= $2;}
-	|dimension{
-	$$.w= $1;$$.h= 0.0;$$.v= 0.0;};
-
-
-
-xdimen_node:start XDIMEN xdimen END{
-	hput_tags($1,hput_xdimen(&($3)));};
-	/*:89*/	/*100:*/
-
-order:PT{
-	$$= normal_o;}	|FIL{
-	$$= fil_o;}	|FILL{
-	$$= fill_o;}	|FILLL{
-	$$= filll_o;};
-
-stretch:number order{
-	$$.f= $1;$$.o= $2;};
-	/*:100*/	/*104:*/
-penalty:integer{
-	RNG("Penalty",$1,-20000,+20000);$$= $1;};
-content_node:start PENALTY penalty END{
-	hput_tags($1,hput_int($3));};
-	/*:104*/	/*116:*/
-rule_dimension:dimension	|RUNNING{
-	$$= RUNNING_DIMEN;};
-rule:rule_dimension rule_dimension rule_dimension
-{
-	$$.h= $1;$$.d= $2;$$.w= $3;
-	if($3==RUNNING_DIMEN&&($1==RUNNING_DIMEN||$2==RUNNING_DIMEN))
-	QUIT("Incompatible running dimensions 0x%x 0x%x 0x%x",$1,$2,$3);};
-rule_node:start RULE rule END{
-	hput_tags($1,hput_rule(&($3)));};
-content_node:rule_node;
-	/*:116*/	/*125:*/
-explicit:{
-	$$= false;}	|EXPLICIT{
-	$$= true;};
-kern:explicit xdimen{
-	$$.x= $1;$$.d= $2;};
-content_node:start KERN kern END{
-	hput_tags($1,hput_kern(&($3)));}
-	/*:125*/	/*134:*/
-plus:{
-	$$.f= 0.0;$$.o= 0;}	|PLUS stretch{
-	$$= $2;};
-minus:{
-	$$.f= 0.0;$$.o= 0;}	|MINUS stretch{
-	$$= $2;};
-glue:xdimen plus minus{
-	$$.w= $1;$$.p= $2;$$.m= $3;};
-content_node:start GLUE glue END{
-	if(ZERO_GLUE($3)){HPUT8(zero_skip_no);
-	hput_tags($1,TAG(glue_kind,0));}else hput_tags($1,hput_glue(&($3)));};
-glue_node:start GLUE glue END
-{
-	if(ZERO_GLUE($3)){hpos--;$$= false;}
-	else{hput_tags($1,hput_glue(&($3)));$$= true;}};
-	/*:134*/	/*142:*/
-position:{
-	$$= hpos-hstart;};
-content_list:position
-	|content_list content_node;
-estimate:{
-	hpos+= 2;}
-	|UNSIGNED{
-	hpos+= hsize_bytes($1)+1;};
-list:start estimate content_list END
-{
-	$$.k= list_kind;$$.p= $3;$$.s= (hpos-hstart)-$3;
-	hput_tags($1,hput_list($1+1,&($$)));};
-	/*:142*/	/*153:*/
-list:TXT_START position
-{
-	hpos+= 4;}
-text TXT_END
-{
-	$$.k= text_kind;$$.p= $4;$$.s= (hpos-hstart)-$4;
-	hput_tags($2,hput_list($2+1,&($$)));};
-text:position	|text txt;
-
-txt:TXT_CC{
-	hput_txt_cc($1);}
-	|TXT_FONT{
-	REF(font_kind,$1);hput_txt_font($1);}
-	|TXT_GLOBAL{
-	REF($1.k,$1.n);hput_txt_global(&($1));}
-	|TXT_LOCAL{
-	RNG("Font parameter",$1,0,11);hput_txt_local($1);}
-	|TXT_FONT_GLUE{
-	HPUTX(1);HPUT8(txt_glue);}
-	|TXT_FONT_HYPHEN{
-	HPUTX(1);HPUT8(txt_hyphen);}
-	|TXT_IGNORE{
-	HPUTX(1);HPUT8(txt_ignore);}
-	|{
-	HPUTX(1);HPUT8(txt_node);}content_node;
-	/*:153*/	/*163:*/
-
-box_dimen:dimension dimension dimension
-{
-	$$= hput_box_dimen($1,$2,$3);};
-box_shift:{
-	$$= b000;}
-	|SHIFTED dimension{
-	$$= hput_box_shift($2);};
-
-box_glue_set:{
-	$$= b000;}
-	|PLUS stretch{
-	$$= hput_box_glue_set(+1,$2.f,$2.o);}
-	|MINUS stretch{
-	$$= hput_box_glue_set(-1,$2.f,$2.o);};
-
-
-box:box_dimen box_shift box_glue_set list{
-	$$= $1	|$2	|$3;};
-
-hbox_node:start HBOX box END{
-	hput_tags($1,TAG(hbox_kind,$3));};
-vbox_node:start VBOX box END{
-	hput_tags($1,TAG(vbox_kind,$3));};
-content_node:hbox_node	|vbox_node;
-	/*:163*/	/*171:*/
-box_flex:plus minus{
-	hput_stretch(&($1));hput_stretch(&($2));};
-xbox:box_dimen box_shift box_flex xdimen_ref list{
-	$$= $1	|$2;}
-	|box_dimen box_shift box_flex xdimen_node list{
-	$$= $1	|$2	|b100;};
-
-box_goal:TO xdimen_ref{
-	$$= b000;}
-	|ADD xdimen_ref{
-	$$= b001;}
-	|TO xdimen_node{
-	$$= b100;}
-	|ADD xdimen_node{
-	$$= b101;};
-
-hpack:box_shift box_goal list{
-	$$= $2;};
-vpack:box_shift MAX DEPTH dimension{
-	HPUT32($4);}box_goal list{
-	$$= $1	|$6;};
-
-vxbox_node:start VSET xbox END{
-	hput_tags($1,TAG(vset_kind,$3));}
-	|start VPACK vpack END{
-	hput_tags($1,TAG(vpack_kind,$3));};
-
-
-hxbox_node:start HSET xbox END{
-	hput_tags($1,TAG(hset_kind,$3));}
-	|start HPACK hpack END{
-	hput_tags($1,TAG(hpack_kind,$3));};
-
-content_node:vxbox_node	|hxbox_node;
-	/*:171*/	/*176:*/
-ltype:{
-	$$= 1;}	|ALIGN{
-	$$= 1;}	|CENTER{
-	$$= 2;}	|EXPAND{
-	$$= 3;};
-leaders:glue_node ltype rule_node{
-	if($1)$$= $2	|b100;else $$= $2;}
-	|glue_node ltype hbox_node{
-	if($1)$$= $2	|b100;else $$= $2;}
-	|glue_node ltype vbox_node{
-	if($1)$$= $2	|b100;else $$= $2;};
-content_node:start LEADERS leaders END{
-	hput_tags($1,TAG(leaders_kind,$3));}
-	/*:176*/	/*183:*/
-baseline:dimension{
-	if($1!=0)HPUT32($1);}
-glue_node glue_node{
-	$$= b000;if($1!=0)$$	|= b001;
-	if($3)$$	|= b100;
-	if($4)$$	|= b010;
-	};
-content_node:start BASELINE baseline END
-{
-	if($3==b000)HPUT8(0);hput_tags($1,TAG(baseline_kind,$3));};
-	/*:183*/	/*190:*/
-cc_list:	|cc_list TXT_CC{
-	hput_utf8($2);};
-lig_cc:UNSIGNED{
-	RNG("UTF-8 code",$1,0,0x1FFFFF);$$= hpos-hstart;hput_utf8($1);};
-lig_cc:CHARCODE{
-	$$= hpos-hstart;hput_utf8($1);};
-ref:REFERENCE{
-	HPUT8($1);$$= $1;};
-ligature:ref{
-	REF(font_kind,$1);}lig_cc TXT_START cc_list TXT_END
-{
-	$$.f= $1;$$.l.p= $3;$$.l.s= (hpos-hstart)-$3;
-	RNG("Ligature size",$$.l.s,0,255);};
-content_node:start LIGATURE ligature END{
-	hput_tags($1,hput_ligature(&($3)));};
-	/*:190*/	/*198:*/
-replace_count:explicit{
-	if($1){$$= 0x80;HPUT8(0x80);}else $$= 0x00;}
-	|explicit UNSIGNED{
-	RNG("Replace count",$2,0,31);
-	$$= ($2)	|(($1)?0x80:0x00);if($$!=0)HPUT8($$);};
-disc:replace_count list list{
-	$$.r= $1;$$.p= $2;$$.q= $3;
-	if($3.s==0){hpos= hpos-2;if($2.s==0)hpos= hpos-2;}}
-	|replace_count list{
-	$$.r= $1;$$.p= $2;if($2.s==0)hpos= hpos-2;$$.q.s= 0;}
-	|replace_count{
-	$$.r= $1;$$.p.s= 0;$$.q.s= 0;};
-
-
-disc_node:start DISC disc END
-{
-	hput_tags($1,hput_disc(&($3)));};
-
-content_node:disc_node;
-	/*:198*/	/*206:*/
-par_dimen:xdimen{
-	hput_xdimen_node(&($1));};
-par:xdimen_ref param_ref list{
-	$$= b000;}
-	|xdimen_ref empty_param_list non_empty_param_list list{
-	$$= b010;}
-	|xdimen_ref empty_param_list list{
-	$$= b010;}
-	|xdimen param_ref{
-	hput_xdimen_node(&($1));}list{
-	$$= b100;}
-	|par_dimen empty_param_list non_empty_param_list list{
-	$$= b110;}
-	|par_dimen empty_param_list list{
-	$$= b110;};
-
-content_node:start PAR par END{
-	hput_tags($1,TAG(par_kind,$3));};
-	/*:206*/	/*211:*/
-math:param_ref list{
-	$$= b000;}
-	|param_ref list hbox_node{
-	$$= b001;}
-	|param_ref hbox_node list{
-	$$= b010;}
-	|empty_param_list list{
-	$$= b100;}
-	|empty_param_list list hbox_node{
-	$$= b101;}
-	|empty_param_list hbox_node list{
-	$$= b110;}
-	|empty_param_list non_empty_param_list list{
-	$$= b100;}
-	|empty_param_list non_empty_param_list list hbox_node{
-	$$= b101;}
-	|empty_param_list non_empty_param_list hbox_node list{
-	$$= b110;};
-
-content_node:start MATH math END{
-	hput_tags($1,TAG(math_kind,$3));};
-	/*:211*/	/*216:*/
-on_off:ON{
-	$$= 1;}	|OFF{
-	$$= 0;};
-math:on_off{
-	$$= b011	|($1<<2);};
-	/*:216*/	/*220:*/
-content_node:start ADJUST list END{
-	hput_tags($1,TAG(adjust_kind,1));};
-	/*:220*/	/*224:*/
-span_count:UNSIGNED{
-	$$= hput_span_count($1);};
-content_node:start ITEM content_node END{
-	hput_tags($1,TAG(item_kind,1));};
-content_node:start ITEM span_count content_node END{
-	hput_tags($1,TAG(item_kind,$3));};
-content_node:start ITEM list END{
-	hput_tags($1,TAG(item_kind,b000));};
-
-table:H box_goal list list{
-	$$= $2;};
-table:V box_goal list list{
-	$$= $2	|b010;};
-
-content_node:start TABLE table END{
-	hput_tags($1,TAG(table_kind,$3));};
-	/*:224*/	/*231:*/
-image_dimen:dimension dimension{
-	$$.w= $1;$$.h= $2;}	|{
-	$$.w= $$.h= 0;};
-image:UNSIGNED image_dimen plus minus{
-	$$.w= $2.w;$$.h= $2.h;$$.p= $3;$$.m= $4;RNG("Section number",$1,3,max_section_no);$$.n= $1;};
-content_node:start IMAGE image END{
-	hput_tags($1,hput_image(&($3)));}
-	/*:231*/	/*241:*/
-max_value:OUTLINE UNSIGNED{
-	max_outline= $2;
-	RNG("max outline",max_outline,0,0xFFFF);
-	DBG(DBGDEF	|DBGLABEL,"Setting max outline to %d\n",max_outline);
-	};
-	/*:241*/	/*248:*/
-placement:TOP{
-	$$= LABEL_TOP;}	|BOT{
-	$$= LABEL_BOT;}	|MID{
-	$$= LABEL_MID;}	|{
-	$$= LABEL_MID;};
-content_node:START LABEL REFERENCE placement END
-{
-	hset_label($3,$4);}
-	/*:248*/	/*262:*/
-content_node:start LINK REFERENCE on_off END
-{
-	hput_tags($1,hput_link($3,$4));};
-	/*:262*/	/*272:*/
-def_node:START OUTLINE REFERENCE integer position list END{
-	
-	static int outline_no= -1;
-	$$.k= outline_kind;$$.n= $3;
-	if($6.s==0)QUIT("Outline with empty title in line %d",yylineno);
-	outline_no++;
-	hset_outline(outline_no,$3,$4,$5);
-	};
-	/*:272*/	/*279:*/
-stream_link:ref{
-	REF_RNG(stream_kind,$1);}	|NOREFERENCE{
-	HPUT8(255);};
-stream_split:stream_link stream_link UNSIGNED{
-	RNG("split ratio",$3,0,1000);HPUT16($3);};
-stream_info:xdimen_node UNSIGNED{
-	RNG("magnification factor",$2,0,1000);HPUT16($2);}stream_split;
-
-stream_type:stream_info{
-	$$= 0;}	|FIRST{
-	$$= 1;}	|LAST{
-	$$= 2;}	|TOP{
-	$$= 3;};
-
-stream_def_node:start STREAMDEF ref stream_type
-list xdimen_node glue_node list glue_node END
-{
-	DEF($$,stream_kind,$3);hput_tags($1,TAG(stream_kind,$4	|b100));};
-
-stream_ins_node:start STREAMDEF ref END
-{
-	RNG("Stream insertion",$3,0,max_ref[stream_kind]);hput_tags($1,TAG(stream_kind,b100));};
-
-content_node:stream_def_node	|stream_ins_node;
-	/*:279*/	/*284:*/
-stream:empty_param_list list{
-	$$= b010;}
-	|empty_param_list non_empty_param_list list{
-	$$= b010;}
-	|param_ref list{
-	$$= b000;};
-content_node:start STREAM stream_ref stream END
-{
-	hput_tags($1,TAG(stream_kind,$4));};
-	/*:284*/	/*289:*/
-page_priority:{
-	HPUT8(1);}
-	|UNSIGNED{
-	RNG("page priority",$1,0,255);HPUT8($1);};
-
-stream_def_list:	|stream_def_list stream_def_node;
-
-page:string{
-	hput_string($1);}page_priority glue_node dimension{
-	HPUT32($5);}
-xdimen_node xdimen_node
-list stream_def_list;
-	/*:289*/	/*297:*/
-
-content_node:START RANGE REFERENCE ON END{
-	REF(page_kind,$3);hput_range($3,true);}
-	|START RANGE REFERENCE OFF END{
-	REF(page_kind,$3);hput_range($3,false);};
-	/*:297*/	/*308:*/
-hint:directory_section definition_section content_section;
-	/*:308*/	/*324:*/
-directory_section:START DIRECTORY UNSIGNED{
-	new_directory($3+1);new_output_buffers();}entry_list END;
-entry_list:	|entry_list entry;
-entry:START SECTION UNSIGNED string END
-{
-	RNG("Section number",$3,3,max_section_no);hset_entry(&(dir[$3]),$3,0,0,$4);};
-	/*:324*/	/*343:*/
-definition_section:START DEFINITIONS{
-	hput_definitions_start();}
-max_definitions definition_list
-END{
-	hput_definitions_end();};
-definition_list:	|definition_list def_node;
-	/*:343*/	/*351:*/
-max_definitions:START MAX max_list END
-{
-		/*245:*/
-	if(max_ref[label_kind]>=0)
-	ALLOCATE(labels,max_ref[label_kind]+1,label_t);
-		/*:245*/	/*266:*/
-	if(max_outline>=0)
-	ALLOCATE(outlines,max_outline+1,outline_t);
-		/*:266*/	/*293:*/
-	ALLOCATE(page_on,max_ref[page_kind]+1,int);
-	ALLOCATE(range_pos,2*(max_ref[range_kind]+1),range_pos_t);
-		/*:293*/	/*357:*/
-	definition_bits[0][int_kind]= (1<<(MAX_INT_DEFAULT+1))-1;
-	definition_bits[0][dimen_kind]= (1<<(MAX_DIMEN_DEFAULT+1))-1;
-	definition_bits[0][xdimen_kind]= (1<<(MAX_XDIMEN_DEFAULT+1))-1;
-	definition_bits[0][glue_kind]= (1<<(MAX_GLUE_DEFAULT+1))-1;
-	definition_bits[0][baseline_kind]= (1<<(MAX_BASELINE_DEFAULT+1))-1;
-	definition_bits[0][page_kind]= (1<<(MAX_PAGE_DEFAULT+1))-1;
-	definition_bits[0][stream_kind]= (1<<(MAX_STREAM_DEFAULT+1))-1;
-	definition_bits[0][range_kind]= (1<<(MAX_RANGE_DEFAULT+1))-1;
-		/*:357*/	/*372:*/
-	ALLOCATE(hfont_name,max_ref[font_kind]+1,char*);
-		/*:372*/hput_max_definitions();};
-
-max_list:	|max_list START max_value END;
-
-max_value:FONT UNSIGNED{
-	hset_max(font_kind,$2);}
-	|INTEGER UNSIGNED{
-	hset_max(int_kind,$2);}
-	|DIMEN UNSIGNED{
-	hset_max(dimen_kind,$2);}
-	|LIGATURE UNSIGNED{
-	hset_max(ligature_kind,$2);}
-	|DISC UNSIGNED{
-	hset_max(disc_kind,$2);}
-	|GLUE UNSIGNED{
-	hset_max(glue_kind,$2);}
-	|LANGUAGE UNSIGNED{
-	hset_max(language_kind,$2);}
-	|RULE UNSIGNED{
-	hset_max(rule_kind,$2);}
-	|IMAGE UNSIGNED{
-	hset_max(image_kind,$2);}
-	|LEADERS UNSIGNED{
-	hset_max(leaders_kind,$2);}
-	|BASELINE UNSIGNED{
-	hset_max(baseline_kind,$2);}
-	|XDIMEN UNSIGNED{
-	hset_max(xdimen_kind,$2);}
-	|PARAM UNSIGNED{
-	hset_max(param_kind,$2);}
-	|STREAMDEF UNSIGNED{
-	hset_max(stream_kind,$2);}
-	|PAGE UNSIGNED{
-	hset_max(page_kind,$2);}
-	|RANGE UNSIGNED{
-	hset_max(range_kind,$2);}
-	|LABEL UNSIGNED{
-	hset_max(label_kind,$2);};
-
-	/*:351*/	/*359:*/
-def_node:
-start FONT ref font END{
-	DEF($$,font_kind,$3);hput_tags($1,$4);}
-	|start INTEGER ref integer END{
-	DEF($$,int_kind,$3);hput_tags($1,hput_int($4));}
-	|start DIMEN ref dimension END{
-	DEF($$,dimen_kind,$3);hput_tags($1,hput_dimen($4));}
-	|start LANGUAGE ref string END{
-	DEF($$,language_kind,$3);hput_string($4);hput_tags($1,TAG(language_kind,0));}
-	|start GLUE ref glue END{
-	DEF($$,glue_kind,$3);hput_tags($1,hput_glue(&($4)));}
-	|start XDIMEN ref xdimen END{
-	DEF($$,xdimen_kind,$3);hput_tags($1,hput_xdimen(&($4)));}
-	|start RULE ref rule END{
-	DEF($$,rule_kind,$3);hput_tags($1,hput_rule(&($4)));}
-	|start LEADERS ref leaders END{
-	DEF($$,leaders_kind,$3);hput_tags($1,TAG(leaders_kind,$4));}
-	|start BASELINE ref baseline END{
-	DEF($$,baseline_kind,$3);hput_tags($1,TAG(baseline_kind,$4));}
-	|start LIGATURE ref ligature END{
-	DEF($$,ligature_kind,$3);hput_tags($1,hput_ligature(&($4)));}
-	|start DISC ref disc END{
-	DEF($$,disc_kind,$3);hput_tags($1,hput_disc(&($4)));}
-	|start IMAGE ref image END{
-	DEF($$,image_kind,$3);hput_tags($1,hput_image(&($4)));}
-	|start PARAM ref parameters END{
-	DEF($$,param_kind,$3);hput_tags($1,hput_list($1+2,&($4)));}
-	|start PAGE ref page END{
-	DEF($$,page_kind,$3);hput_tags($1,TAG(page_kind,0));};
-	/*:359*/	/*361:*/
-def_node:
-start INTEGER ref ref END{
-	DEF_REF($$,int_kind,$3,$4);hput_tags($1,TAG(int_kind,0));}
-	|start DIMEN ref ref END{
-	DEF_REF($$,dimen_kind,$3,$4);hput_tags($1,TAG(dimen_kind,0));}
-	|start GLUE ref ref END{
-	DEF_REF($$,glue_kind,$3,$4);hput_tags($1,TAG(glue_kind,0));};
-	/*:361*/	/*366:*/
-def_list:position
-	|def_list def_node{
-	check_param_def(&($2));};
-parameters:estimate def_list{
-	$$.p= $2;$$.k= param_kind;$$.s= (hpos-hstart)-$2;};
-	/*:366*/	/*367:*/
-empty_param_list:position{
-	HPUTX(2);hpos++;hput_tags($1,TAG(param_kind,1));};
-non_empty_param_list:start PARAM{
-	hpos= hpos-2;}parameters END
-{
-	hput_tags($1-2,hput_list($1-1,&($4)));};
-	/*:367*/	/*375:*/
-
-font:font_head font_param_list;
-
-font_head:string dimension UNSIGNED UNSIGNED
-{
-	uint8_t f= $<u>0;SET_DBIT(f,font_kind);hfont_name[f]= strdup($1);$$= hput_font_head(f,hfont_name[f],$2,$3,$4);};
-
-font_param_list:glue_node disc_node	|font_param_list font_param;
-
-font_param:
-start PENALTY fref penalty END{
-	hput_tags($1,hput_int($4));}
-	|start KERN fref kern END{
-	hput_tags($1,hput_kern(&($4)));}
-	|start LIGATURE fref ligature END{
-	hput_tags($1,hput_ligature(&($4)));}
-	|start DISC fref disc END{
-	hput_tags($1,hput_disc(&($4)));}
-	|start GLUE fref glue END{
-	hput_tags($1,hput_glue(&($4)));}
-	|start LANGUAGE fref string END{
-	hput_string($4);hput_tags($1,TAG(language_kind,0));}
-	|start RULE fref rule END{
-	hput_tags($1,hput_rule(&($4)));}
-	|start IMAGE fref image END{
-	hput_tags($1,hput_image(&($4)));};
-
-fref:ref{
-	RNG("Font parameter",$1,0,MAX_FONT_PARAMS);};
-	/*:375*/	/*378:*/
-xdimen_ref:ref{
-	REF(xdimen_kind,$1);};
-param_ref:ref{
-	REF(param_kind,$1);};
-stream_ref:ref{
-	REF_RNG(stream_kind,$1);};
-
-
-content_node:
-start PENALTY ref END{
-	REF(penalty_kind,$3);hput_tags($1,TAG(penalty_kind,0));}
-	|start KERN explicit ref END
-{
-	REF(dimen_kind,$4);hput_tags($1,TAG(kern_kind,($3)?b100:b000));}
-	|start KERN explicit XDIMEN ref END
-{
-	REF(xdimen_kind,$5);hput_tags($1,TAG(kern_kind,($3)?b101:b001));}
-	|start GLUE ref END{
-	REF(glue_kind,$3);hput_tags($1,TAG(glue_kind,0));}
-	|start LIGATURE ref END{
-	REF(ligature_kind,$3);hput_tags($1,TAG(ligature_kind,0));}
-	|start DISC ref END{
-	REF(disc_kind,$3);hput_tags($1,TAG(disc_kind,0));}
-	|start RULE ref END{
-	REF(rule_kind,$3);hput_tags($1,TAG(rule_kind,0));}
-	|start IMAGE ref END{
-	REF(image_kind,$3);hput_tags($1,TAG(image_kind,0));}
-	|start LEADERS ref END{
-	REF(leaders_kind,$3);hput_tags($1,TAG(leaders_kind,0));}
-	|start BASELINE ref END{
-	REF(baseline_kind,$3);hput_tags($1,TAG(baseline_kind,0));}
-	|start LANGUAGE REFERENCE END{
-	REF(language_kind,$3);hput_tags($1,hput_language($3));};
-
-glue_node:start GLUE ref END{
-	REF(glue_kind,$3);
-	if($3==zero_skip_no){hpos= hpos-2;$$= false;}
-	else{hput_tags($1,TAG(glue_kind,0));$$= true;}};
-
-	/*:378*/	/*403:*/
-content_section:START CONTENT{
-	hput_content_start();}content_list END
-{
-	hput_content_end();hput_range_defs();hput_label_defs();};
-	/*:403*/
-%%
-	/*:510*/



More information about the tex-live-commits mailing list.