[svn:parrot] r46022 - in branches/compact_pool_revamp: . compilers/data_json compilers/imcc compilers/json compilers/json/JSON compilers/ncigen compilers/ncigen/config/makefiles compilers/ncigen/lib/Parrot/Test compilers/ncigen/src compilers/ncigen/src/builtins compilers/ncigen/src/parser compilers/ncigen/t compilers/ncigen/t/NCIGENAST compilers/nqp compilers/nqp/bootstrap compilers/nqp/bootstrap/t compilers/nqp/src compilers/nqp/src/Grammar compilers/nqp/t compilers/pge/PGE compilers/pirc config/auto config/auto/cgoto config/auto/crypto config/auto/gdbm config/auto/zlib config/gen config/gen/config_h config/gen/crypto config/gen/makefiles config/gen/platform/generic config/init config/init/hints docs docs/book/draft docs/pdds docs/project examples/benchmarks examples/c examples/config/file examples/embed examples/languages/squaak examples/languages/squaak/src/parser examples/nci examples/sdl examples/shootout ext/Parrot-Embed ext/SQLite3 ext/SQLite3/DBDI/Driver ext/ SQLite3/t ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot lib/Parrot lib/Parrot/Configure/Options lib/Parrot/Configure/Options/Conf lib/Parrot/Configure/Options/Test lib/Parrot/Configure/Step lib/Parrot/Docs/Section lib/Parrot/Harness lib/Parrot/OpTrans lib/Parrot/Ops2c lib/Parrot/Pmc2c lib/Parrot/Pmc2c/PMC ports/cpan ports/cygwin ports/debian ports/fedora ports/fedora/2.3.0 ports/suse ports/suse/2.2.0 ports/ubuntu runtime/parrot/library runtime/parrot/library/TAP runtime/parrot/library/Test runtime/parrot/library/Test/Builder src src/call src/dynoplibs src/dynpmc src/gc src/interp src/io src/ops src/packfile src/pmc src/runcore src/string src/string/charset src/string/encoding t t/codingstd t/compilers/data_json t/compilers/imcc/reg t/compilers/imcc/syn t/compilers/json t/compilers/pct t/compilers/pge t/compilers/pge/perl6regex t/compilers/tge t/configure/testlib t/distro t/dynoplibs t/dynpmc t/examples t/include t/library t/native_pbc t/oo t/op t/pharness t/pir t/pmc t/run t/src t/steps/auto t/tools/install/testlib t/tools/ops2cutils tools/build tools/dev tools/docs tools/install tools/util

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Apr 26 06:15:48 UTC 2010


Author: bacek
Date: Mon Apr 26 06:15:29 2010
New Revision: 46022
URL: https://trac.parrot.org/parrot/changeset/46022

Log:
Sync branch with trunk. It's definitely broken ATM.

Conflicts:
	include/parrot/string.h
	src/gc/alloc_resources.c
	src/gc/mark_sweep.c

Added:
   branches/compact_pool_revamp/.gitignore
   branches/compact_pool_revamp/config/auto/zlib/
   branches/compact_pool_revamp/config/auto/zlib.pm
      - copied, changed from r45834, branches/compact_pool_revamp/config/auto/crypto.pm
   branches/compact_pool_revamp/config/auto/zlib/zlib_c.in
   branches/compact_pool_revamp/examples/languages/squaak/src/parser/grammar.pm
   branches/compact_pool_revamp/ports/fedora/2.3.0/
   branches/compact_pool_revamp/ports/fedora/2.3.0/parrot.desk.in.tar.gz
   branches/compact_pool_revamp/ports/fedora/2.3.0/parrot.patch
   branches/compact_pool_revamp/ports/fedora/2.3.0/parrot.spec
      - copied, changed from r45834, branches/compact_pool_revamp/ports/fedora/parrot.spec.fedora
   branches/compact_pool_revamp/ports/suse/2.2.0/
   branches/compact_pool_revamp/ports/suse/2.2.0/parrot.diff
   branches/compact_pool_revamp/ports/suse/2.2.0/parrot.spec
   branches/compact_pool_revamp/src/dynpmc/gziphandle.pmc
   branches/compact_pool_revamp/t/compilers/data_json/
   branches/compact_pool_revamp/t/compilers/data_json/from_parrot.t
      - copied, changed from r45834, branches/compact_pool_revamp/t/compilers/json/from_parrot.t
   branches/compact_pool_revamp/t/compilers/data_json/to_parrot.t
      - copied, changed from r45834, branches/compact_pool_revamp/t/compilers/json/to_parrot.t
   branches/compact_pool_revamp/t/dynpmc/gziphandle.t
   branches/compact_pool_revamp/t/harness.pir
   branches/compact_pool_revamp/t/library/osutils.t
   branches/compact_pool_revamp/t/steps/auto/zlib-01.t
      - copied, changed from r45834, branches/compact_pool_revamp/t/steps/auto/crypto-01.t
Deleted:
   branches/compact_pool_revamp/META.yml
   branches/compact_pool_revamp/Makefile.PL
   branches/compact_pool_revamp/compilers/json/Defines.mak
   branches/compact_pool_revamp/compilers/json/JSON.pir
   branches/compact_pool_revamp/compilers/json/JSON/grammar.pg
   branches/compact_pool_revamp/compilers/json/JSON/pge2pir.tg
   branches/compact_pool_revamp/compilers/json/Rules.mak
   branches/compact_pool_revamp/compilers/ncigen/MAINTAINER
   branches/compact_pool_revamp/compilers/ncigen/NCIGEN.TODO
   branches/compact_pool_revamp/compilers/ncigen/NCIGENP6.pm
   branches/compact_pool_revamp/compilers/ncigen/README
   branches/compact_pool_revamp/compilers/ncigen/config/makefiles/ncigen.in
   branches/compact_pool_revamp/compilers/ncigen/lib/Parrot/Test/NCIGENAST.pm
   branches/compact_pool_revamp/compilers/ncigen/ncigen.pir
   branches/compact_pool_revamp/compilers/ncigen/ncigen.pl
   branches/compact_pool_revamp/compilers/ncigen/src/NCIGENAST.pir
   branches/compact_pool_revamp/compilers/ncigen/src/NCIPIR.pir
   branches/compact_pool_revamp/compilers/ncigen/src/builtins/say.pir
   branches/compact_pool_revamp/compilers/ncigen/src/parser/actions.pm
   branches/compact_pool_revamp/compilers/ncigen/src/parser/grammar.pg
   branches/compact_pool_revamp/compilers/ncigen/t/NCIGENAST/struct_00.t
   branches/compact_pool_revamp/compilers/ncigen/t/NCIGENAST/typedef_00.t
   branches/compact_pool_revamp/compilers/ncigen/t/harness
   branches/compact_pool_revamp/compilers/ncigen/t/parse_00.t
   branches/compact_pool_revamp/compilers/ncigen/t/parse_01.t
   branches/compact_pool_revamp/compilers/ncigen/t/parse_02.t
   branches/compact_pool_revamp/compilers/nqp/Defines.mak
   branches/compact_pool_revamp/compilers/nqp/README.pod
   branches/compact_pool_revamp/compilers/nqp/Rules.mak
   branches/compact_pool_revamp/compilers/nqp/TODO.pod
   branches/compact_pool_revamp/compilers/nqp/bootstrap/actions.pm
   branches/compact_pool_revamp/compilers/nqp/bootstrap/nqp.pir
   branches/compact_pool_revamp/compilers/nqp/bootstrap/t/harness
   branches/compact_pool_revamp/compilers/nqp/nqp.pir
   branches/compact_pool_revamp/compilers/nqp/src/Grammar.pg
   branches/compact_pool_revamp/compilers/nqp/src/Grammar/Actions.pir
   branches/compact_pool_revamp/compilers/nqp/src/builtins.pir
   branches/compact_pool_revamp/compilers/nqp/t/01-literals.t
   branches/compact_pool_revamp/compilers/nqp/t/02-if-else.t
   branches/compact_pool_revamp/compilers/nqp/t/02-if.t
   branches/compact_pool_revamp/compilers/nqp/t/03-unless.t
   branches/compact_pool_revamp/compilers/nqp/t/04-comments.t
   branches/compact_pool_revamp/compilers/nqp/t/05-pod.t
   branches/compact_pool_revamp/compilers/nqp/t/06-args-pos.t
   branches/compact_pool_revamp/compilers/nqp/t/07-boolean.t
   branches/compact_pool_revamp/compilers/nqp/t/08-blocks.t
   branches/compact_pool_revamp/compilers/nqp/t/09-var.t
   branches/compact_pool_revamp/compilers/nqp/t/10-sub.t
   branches/compact_pool_revamp/compilers/nqp/t/11-cmp.t
   branches/compact_pool_revamp/compilers/nqp/t/12-list.t
   branches/compact_pool_revamp/compilers/nqp/t/13-logical.t
   branches/compact_pool_revamp/compilers/nqp/t/14-op.t
   branches/compact_pool_revamp/compilers/nqp/t/15-module.t
   branches/compact_pool_revamp/compilers/nqp/t/16-while.t
   branches/compact_pool_revamp/compilers/nqp/t/17-class.t
   branches/compact_pool_revamp/compilers/nqp/t/18-inline.t
   branches/compact_pool_revamp/compilers/nqp/t/19-hash_access.t
   branches/compact_pool_revamp/compilers/nqp/t/20-list_access.t
   branches/compact_pool_revamp/compilers/nqp/t/22-optional_args.t
   branches/compact_pool_revamp/compilers/nqp/t/23-named_args.t
   branches/compact_pool_revamp/compilers/nqp/t/24-scalar_context.t
   branches/compact_pool_revamp/compilers/nqp/t/25-list_context.t
   branches/compact_pool_revamp/compilers/nqp/t/26-method_ops.t
   branches/compact_pool_revamp/compilers/nqp/t/27-ternary.t
   branches/compact_pool_revamp/compilers/nqp/t/28-return.t
   branches/compact_pool_revamp/compilers/nqp/t/29-self.t
   branches/compact_pool_revamp/compilers/nqp/t/30-subclass.t
   branches/compact_pool_revamp/compilers/nqp/t/harness
   branches/compact_pool_revamp/config/auto/cgoto.pm
   branches/compact_pool_revamp/config/auto/cgoto/test_c.in
   branches/compact_pool_revamp/config/auto/crypto.pm
   branches/compact_pool_revamp/config/auto/crypto/crypto_c.in
   branches/compact_pool_revamp/config/auto/gdbm.pm
   branches/compact_pool_revamp/config/auto/gdbm/gdbm_c.in
   branches/compact_pool_revamp/config/gen/crypto.pm
   branches/compact_pool_revamp/config/gen/crypto/digest_pmc.in
   branches/compact_pool_revamp/config/gen/crypto/digest_t.in
   branches/compact_pool_revamp/ext/SQLite3/DBDI.pm
   branches/compact_pool_revamp/ext/SQLite3/DBDI/Driver/SQLite3.pm
   branches/compact_pool_revamp/ext/SQLite3/Makefile.PL
   branches/compact_pool_revamp/ext/SQLite3/Makefile.in
   branches/compact_pool_revamp/ext/SQLite3/SQLite3.pir
   branches/compact_pool_revamp/ext/SQLite3/gen_sqlite3.pl
   branches/compact_pool_revamp/ext/SQLite3/t/test.p6
   branches/compact_pool_revamp/ext/SQLite3/test.pir
   branches/compact_pool_revamp/ext/nqp-rx/.gitignore
   branches/compact_pool_revamp/lib/Parrot/OpTrans/CGP.pm
   branches/compact_pool_revamp/lib/Parrot/OpTrans/CGoto.pm
   branches/compact_pool_revamp/lib/Parrot/OpTrans/CPrederef.pm
   branches/compact_pool_revamp/lib/Parrot/OpTrans/CSwitch.pm
   branches/compact_pool_revamp/ports/cpan/cpan_release.pod
   branches/compact_pool_revamp/ports/cpan/pause_guide.pod
   branches/compact_pool_revamp/ports/fedora/parrot.patch
   branches/compact_pool_revamp/ports/fedora/parrot.spec.fedora
   branches/compact_pool_revamp/ports/suse/parrot.spec.suse
   branches/compact_pool_revamp/runtime/parrot/library/SQLite3.pir
   branches/compact_pool_revamp/src/dynpmc/gdbmhash.pmc
   branches/compact_pool_revamp/src/pmc/retcontinuation.pmc
   branches/compact_pool_revamp/t/compilers/json/from_parrot.t
   branches/compact_pool_revamp/t/compilers/json/to_parrot.t
   branches/compact_pool_revamp/t/distro/meta_yml.t
   branches/compact_pool_revamp/t/dynpmc/gdbmhash.t
   branches/compact_pool_revamp/t/pmc/retcontinuation.t
   branches/compact_pool_revamp/t/steps/auto/cgoto-01.t
   branches/compact_pool_revamp/t/steps/auto/crypto-01.t
   branches/compact_pool_revamp/t/steps/auto/gdbm-01.t
Modified:
   branches/compact_pool_revamp/CREDITS
   branches/compact_pool_revamp/ChangeLog
   branches/compact_pool_revamp/Configure.pl
   branches/compact_pool_revamp/DEPRECATED.pod
   branches/compact_pool_revamp/MANIFEST
   branches/compact_pool_revamp/MANIFEST.SKIP
   branches/compact_pool_revamp/MANIFEST.generated
   branches/compact_pool_revamp/NEWS
   branches/compact_pool_revamp/PBC_COMPAT
   branches/compact_pool_revamp/README
   branches/compact_pool_revamp/README_cygwin.pod
   branches/compact_pool_revamp/README_win32.pod
   branches/compact_pool_revamp/VERSION
   branches/compact_pool_revamp/compilers/data_json/Defines.mak
   branches/compact_pool_revamp/compilers/data_json/Rules.mak
   branches/compact_pool_revamp/compilers/imcc/Rules.in
   branches/compact_pool_revamp/compilers/imcc/imcc.l
   branches/compact_pool_revamp/compilers/imcc/imcc.y
   branches/compact_pool_revamp/compilers/imcc/imclexer.c
   branches/compact_pool_revamp/compilers/imcc/imcparser.c
   branches/compact_pool_revamp/compilers/imcc/imcparser.h
   branches/compact_pool_revamp/compilers/imcc/instructions.c
   branches/compact_pool_revamp/compilers/imcc/main.c
   branches/compact_pool_revamp/compilers/imcc/optimizer.c
   branches/compact_pool_revamp/compilers/imcc/parser_util.c
   branches/compact_pool_revamp/compilers/imcc/pbc.c
   branches/compact_pool_revamp/compilers/pge/PGE/Exp.pir
   branches/compact_pool_revamp/compilers/pirc/Rules.mak
   branches/compact_pool_revamp/config/auto/warnings.pm
   branches/compact_pool_revamp/config/gen/config_h/config_h.in
   branches/compact_pool_revamp/config/gen/makefiles.pm
   branches/compact_pool_revamp/config/gen/makefiles/dynpmc.in
   branches/compact_pool_revamp/config/gen/makefiles/root.in
   branches/compact_pool_revamp/config/gen/opengl.pm
   branches/compact_pool_revamp/config/gen/platform/generic/itimer.c
   branches/compact_pool_revamp/config/init/defaults.pm
   branches/compact_pool_revamp/config/init/hints/cygwin.pm
   branches/compact_pool_revamp/config/init/optimize.pm
   branches/compact_pool_revamp/docs/book/draft/appc_command_line_options.pod
   branches/compact_pool_revamp/docs/configuration.pod
   branches/compact_pool_revamp/docs/embed.pod
   branches/compact_pool_revamp/docs/parrothist.pod
   branches/compact_pool_revamp/docs/pdds/pdd28_strings.pod
   branches/compact_pool_revamp/docs/porting_intro.pod
   branches/compact_pool_revamp/docs/project/release_manager_guide.pod
   branches/compact_pool_revamp/docs/running.pod
   branches/compact_pool_revamp/examples/benchmarks/oo1.pir
   branches/compact_pool_revamp/examples/benchmarks/oo2.pir
   branches/compact_pool_revamp/examples/c/test_main.c
   branches/compact_pool_revamp/examples/config/file/configcompiler
   branches/compact_pool_revamp/examples/config/file/configwithfatalstep
   branches/compact_pool_revamp/examples/embed/cotorra.c
   branches/compact_pool_revamp/examples/languages/squaak/setup.pir
   branches/compact_pool_revamp/examples/languages/squaak/src/parser/actions.pm
   branches/compact_pool_revamp/examples/nci/xlibtest.pir
   branches/compact_pool_revamp/examples/sdl/mandel.pir
   branches/compact_pool_revamp/examples/shootout/ack.pir
   branches/compact_pool_revamp/examples/shootout/binarytrees.pir
   branches/compact_pool_revamp/examples/shootout/fasta.pir
   branches/compact_pool_revamp/examples/shootout/partialsums.pir
   branches/compact_pool_revamp/examples/shootout/pidigits.pir
   branches/compact_pool_revamp/examples/shootout/random.pir
   branches/compact_pool_revamp/examples/shootout/recursive-2.pir
   branches/compact_pool_revamp/examples/shootout/recursive.pir
   branches/compact_pool_revamp/examples/shootout/takfp.pir
   branches/compact_pool_revamp/ext/Parrot-Embed/MANIFEST
   branches/compact_pool_revamp/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/compact_pool_revamp/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/compact_pool_revamp/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/compact_pool_revamp/ext/nqp-rx/src/stage0/Regex-s0.pir
   branches/compact_pool_revamp/include/parrot/call.h
   branches/compact_pool_revamp/include/parrot/charset.h
   branches/compact_pool_revamp/include/parrot/context.h
   branches/compact_pool_revamp/include/parrot/debugger.h
   branches/compact_pool_revamp/include/parrot/embed.h
   branches/compact_pool_revamp/include/parrot/encoding.h
   branches/compact_pool_revamp/include/parrot/exceptions.h
   branches/compact_pool_revamp/include/parrot/hash.h
   branches/compact_pool_revamp/include/parrot/imcc.h
   branches/compact_pool_revamp/include/parrot/interpreter.h
   branches/compact_pool_revamp/include/parrot/io.h
   branches/compact_pool_revamp/include/parrot/op.h
   branches/compact_pool_revamp/include/parrot/oplib.h
   branches/compact_pool_revamp/include/parrot/packfile.h
   branches/compact_pool_revamp/include/parrot/pobj.h
   branches/compact_pool_revamp/include/parrot/runcore_api.h
   branches/compact_pool_revamp/include/parrot/string.h
   branches/compact_pool_revamp/include/parrot/string_funcs.h
   branches/compact_pool_revamp/include/parrot/string_primitives.h
   branches/compact_pool_revamp/include/parrot/sub.h
   branches/compact_pool_revamp/include/parrot/vtables.h
   branches/compact_pool_revamp/lib/Parrot/Configure/Options/Conf.pm
   branches/compact_pool_revamp/lib/Parrot/Configure/Options/Conf/Shared.pm
   branches/compact_pool_revamp/lib/Parrot/Configure/Options/Test/Prepare.pm
   branches/compact_pool_revamp/lib/Parrot/Configure/Step/List.pm
   branches/compact_pool_revamp/lib/Parrot/Distribution.pm
   branches/compact_pool_revamp/lib/Parrot/Docs/Section/Compilers.pm
   branches/compact_pool_revamp/lib/Parrot/Harness/DefaultTests.pm
   branches/compact_pool_revamp/lib/Parrot/Harness/Options.pm
   branches/compact_pool_revamp/lib/Parrot/Harness/Smoke.pm
   branches/compact_pool_revamp/lib/Parrot/Manifest.pm
   branches/compact_pool_revamp/lib/Parrot/OpTrans.pm
   branches/compact_pool_revamp/lib/Parrot/OpTrans/C.pm
   branches/compact_pool_revamp/lib/Parrot/Ops2c/Auxiliary.pm
   branches/compact_pool_revamp/lib/Parrot/Ops2c/Utils.pm
   branches/compact_pool_revamp/lib/Parrot/Pmc2c/MethodEmitter.pm
   branches/compact_pool_revamp/lib/Parrot/Pmc2c/PCCMETHOD.pm
   branches/compact_pool_revamp/lib/Parrot/Pmc2c/PMC/Null.pm
   branches/compact_pool_revamp/lib/Parrot/Pmc2c/PMC/Object.pm
   branches/compact_pool_revamp/lib/Parrot/Pmc2c/PMC/default.pm
   branches/compact_pool_revamp/lib/Parrot/Pmc2c/PMCEmitter.pm
   branches/compact_pool_revamp/ports/cygwin/README
   branches/compact_pool_revamp/ports/debian/control.in
   branches/compact_pool_revamp/ports/ubuntu/control.in
   branches/compact_pool_revamp/runtime/parrot/library/JSON.pir
   branches/compact_pool_revamp/runtime/parrot/library/TAP/Formatter.pir
   branches/compact_pool_revamp/runtime/parrot/library/TAP/Harness.pir
   branches/compact_pool_revamp/runtime/parrot/library/TAP/Parser.pir
   branches/compact_pool_revamp/runtime/parrot/library/Test/Builder.pir
   branches/compact_pool_revamp/runtime/parrot/library/Test/Builder/Output.pir
   branches/compact_pool_revamp/runtime/parrot/library/Test/Builder/Test.pir
   branches/compact_pool_revamp/runtime/parrot/library/Test/More.pir
   branches/compact_pool_revamp/runtime/parrot/library/distutils.pir
   branches/compact_pool_revamp/runtime/parrot/library/osutils.pir
   branches/compact_pool_revamp/src/call/args.c
   branches/compact_pool_revamp/src/call/context.c
   branches/compact_pool_revamp/src/call/context_accessors.c
   branches/compact_pool_revamp/src/call/pcc.c
   branches/compact_pool_revamp/src/debug.c
   branches/compact_pool_revamp/src/dynext.c
   branches/compact_pool_revamp/src/dynoplibs/Defines.in
   branches/compact_pool_revamp/src/dynoplibs/Rules.in
   branches/compact_pool_revamp/src/embed.c
   branches/compact_pool_revamp/src/gc/alloc_resources.c
   branches/compact_pool_revamp/src/gc/gc_ms.c
   branches/compact_pool_revamp/src/gc/mark_sweep.c
   branches/compact_pool_revamp/src/hash.c
   branches/compact_pool_revamp/src/hll.c
   branches/compact_pool_revamp/src/interp/inter_misc.c
   branches/compact_pool_revamp/src/io/api.c
   branches/compact_pool_revamp/src/io/buffer.c
   branches/compact_pool_revamp/src/io/filehandle.c
   branches/compact_pool_revamp/src/io/utf8.c
   branches/compact_pool_revamp/src/io/win32.c
   branches/compact_pool_revamp/src/key.c
   branches/compact_pool_revamp/src/library.c
   branches/compact_pool_revamp/src/main.c
   branches/compact_pool_revamp/src/oo.c
   branches/compact_pool_revamp/src/ops/bit.ops
   branches/compact_pool_revamp/src/ops/core.ops
   branches/compact_pool_revamp/src/ops/ops.num
   branches/compact_pool_revamp/src/ops/set.ops
   branches/compact_pool_revamp/src/ops/string.ops
   branches/compact_pool_revamp/src/packdump.c
   branches/compact_pool_revamp/src/packfile.c
   branches/compact_pool_revamp/src/packfile/pf_items.c
   branches/compact_pool_revamp/src/parrot_debugger.c
   branches/compact_pool_revamp/src/pbc_dump.c
   branches/compact_pool_revamp/src/pbc_merge.c
   branches/compact_pool_revamp/src/pmc/bigint.pmc
   branches/compact_pool_revamp/src/pmc/bignum.pmc
   branches/compact_pool_revamp/src/pmc/callcontext.pmc
   branches/compact_pool_revamp/src/pmc/class.pmc
   branches/compact_pool_revamp/src/pmc/codestring.pmc
   branches/compact_pool_revamp/src/pmc/continuation.pmc
   branches/compact_pool_revamp/src/pmc/coroutine.pmc
   branches/compact_pool_revamp/src/pmc/default.pmc
   branches/compact_pool_revamp/src/pmc/eval.pmc
   branches/compact_pool_revamp/src/pmc/eventhandler.pmc
   branches/compact_pool_revamp/src/pmc/exception.pmc
   branches/compact_pool_revamp/src/pmc/filehandle.pmc
   branches/compact_pool_revamp/src/pmc/fixedbooleanarray.pmc
   branches/compact_pool_revamp/src/pmc/fixedfloatarray.pmc
   branches/compact_pool_revamp/src/pmc/fixedintegerarray.pmc
   branches/compact_pool_revamp/src/pmc/fixedpmcarray.pmc
   branches/compact_pool_revamp/src/pmc/fixedstringarray.pmc
   branches/compact_pool_revamp/src/pmc/hash.pmc
   branches/compact_pool_revamp/src/pmc/imageio.pmc
   branches/compact_pool_revamp/src/pmc/key.pmc
   branches/compact_pool_revamp/src/pmc/lexinfo.pmc
   branches/compact_pool_revamp/src/pmc/namespace.pmc
   branches/compact_pool_revamp/src/pmc/object.pmc
   branches/compact_pool_revamp/src/pmc/os.pmc
   branches/compact_pool_revamp/src/pmc/packfileannotations.pmc
   branches/compact_pool_revamp/src/pmc/packfiledirectory.pmc
   branches/compact_pool_revamp/src/pmc/packfilefixupentry.pmc
   branches/compact_pool_revamp/src/pmc/packfilefixuptable.pmc
   branches/compact_pool_revamp/src/pmc/parrotinterpreter.pmc
   branches/compact_pool_revamp/src/pmc/pmcproxy.pmc
   branches/compact_pool_revamp/src/pmc/resizablefloatarray.pmc
   branches/compact_pool_revamp/src/pmc/resizablepmcarray.pmc
   branches/compact_pool_revamp/src/pmc/role.pmc
   branches/compact_pool_revamp/src/pmc/scalar.pmc
   branches/compact_pool_revamp/src/pmc/schedulermessage.pmc
   branches/compact_pool_revamp/src/pmc/string.pmc
   branches/compact_pool_revamp/src/pmc/stringhandle.pmc
   branches/compact_pool_revamp/src/pmc/sub.pmc
   branches/compact_pool_revamp/src/pmc/unmanagedstruct.pmc
   branches/compact_pool_revamp/src/runcore/cores.c
   branches/compact_pool_revamp/src/runcore/main.c
   branches/compact_pool_revamp/src/runcore/profiling.c
   branches/compact_pool_revamp/src/runcore/trace.c
   branches/compact_pool_revamp/src/spf_render.c
   branches/compact_pool_revamp/src/spf_vtable.c
   branches/compact_pool_revamp/src/string/api.c
   branches/compact_pool_revamp/src/string/charset.c
   branches/compact_pool_revamp/src/string/charset/ascii.c
   branches/compact_pool_revamp/src/string/charset/ascii.h
   branches/compact_pool_revamp/src/string/charset/binary.c
   branches/compact_pool_revamp/src/string/charset/binary.h
   branches/compact_pool_revamp/src/string/charset/iso-8859-1.c
   branches/compact_pool_revamp/src/string/charset/iso-8859-1.h
   branches/compact_pool_revamp/src/string/charset/unicode.c
   branches/compact_pool_revamp/src/string/charset/unicode.h
   branches/compact_pool_revamp/src/string/encoding/fixed_8.c
   branches/compact_pool_revamp/src/string/encoding/fixed_8.h
   branches/compact_pool_revamp/src/string/encoding/ucs2.c
   branches/compact_pool_revamp/src/string/encoding/ucs2.h
   branches/compact_pool_revamp/src/string/encoding/utf16.c
   branches/compact_pool_revamp/src/string/encoding/utf16.h
   branches/compact_pool_revamp/src/string/encoding/utf8.c
   branches/compact_pool_revamp/src/string/encoding/utf8.h
   branches/compact_pool_revamp/src/string/primitives.c
   branches/compact_pool_revamp/src/sub.c
   branches/compact_pool_revamp/src/thread.c
   branches/compact_pool_revamp/t/codingstd/c_function_docs.t
   branches/compact_pool_revamp/t/compilers/imcc/reg/spill.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/file.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/labels.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/objects.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/op.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/regressions.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/scope.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/subflags.t
   branches/compact_pool_revamp/t/compilers/imcc/syn/veracity.t
   branches/compact_pool_revamp/t/compilers/pct/complete_workflow.t
   branches/compact_pool_revamp/t/compilers/pge/02-match.t
   branches/compact_pool_revamp/t/compilers/pge/03-optable.t
   branches/compact_pool_revamp/t/compilers/pge/04-compile.t
   branches/compact_pool_revamp/t/compilers/pge/perl6regex/01-regex.t
   branches/compact_pool_revamp/t/compilers/pge/pge-hs.t
   branches/compact_pool_revamp/t/compilers/tge/basic.t
   branches/compact_pool_revamp/t/compilers/tge/parser.t
   branches/compact_pool_revamp/t/configure/testlib/adefectivefoobar
   branches/compact_pool_revamp/t/configure/testlib/bdefectivefoobar
   branches/compact_pool_revamp/t/configure/testlib/cdefectivefoobar
   branches/compact_pool_revamp/t/configure/testlib/ddefectivefoobar
   branches/compact_pool_revamp/t/configure/testlib/verbosefoobar
   branches/compact_pool_revamp/t/dynoplibs/math.t
   branches/compact_pool_revamp/t/dynoplibs/obscure.t
   branches/compact_pool_revamp/t/dynpmc/foo2.t
   branches/compact_pool_revamp/t/dynpmc/rational.t
   branches/compact_pool_revamp/t/dynpmc/subproxy.t
   branches/compact_pool_revamp/t/examples/shootout.t
   branches/compact_pool_revamp/t/examples/tutorial.t
   branches/compact_pool_revamp/t/harness
   branches/compact_pool_revamp/t/include/fp_equality.t
   branches/compact_pool_revamp/t/library/configure.t
   branches/compact_pool_revamp/t/library/getopt_obj.t
   branches/compact_pool_revamp/t/library/hllmacros.t
   branches/compact_pool_revamp/t/library/md5.t
   branches/compact_pool_revamp/t/library/mime_base64.t
   branches/compact_pool_revamp/t/library/parrotlib.t
   branches/compact_pool_revamp/t/library/pcre.t
   branches/compact_pool_revamp/t/library/protoobject.t
   branches/compact_pool_revamp/t/library/rand.t
   branches/compact_pool_revamp/t/library/range.t
   branches/compact_pool_revamp/t/library/tap_parser.t
   branches/compact_pool_revamp/t/library/test_builder_tester.t
   branches/compact_pool_revamp/t/library/test_class.t
   branches/compact_pool_revamp/t/library/test_more.t
   branches/compact_pool_revamp/t/library/uuid.t
   branches/compact_pool_revamp/t/native_pbc/annotations.pbc
   branches/compact_pool_revamp/t/native_pbc/integer_1.pbc
   branches/compact_pool_revamp/t/native_pbc/number_1.pbc
   branches/compact_pool_revamp/t/native_pbc/string_1.pbc
   branches/compact_pool_revamp/t/oo/attributes.t
   branches/compact_pool_revamp/t/oo/composition.t
   branches/compact_pool_revamp/t/oo/inheritance.t
   branches/compact_pool_revamp/t/oo/isa.t
   branches/compact_pool_revamp/t/oo/metamodel.t
   branches/compact_pool_revamp/t/oo/methods.t
   branches/compact_pool_revamp/t/oo/mro-c3.t
   branches/compact_pool_revamp/t/oo/names.t
   branches/compact_pool_revamp/t/oo/new.t
   branches/compact_pool_revamp/t/oo/ops.t
   branches/compact_pool_revamp/t/oo/proxy.t
   branches/compact_pool_revamp/t/oo/root_new.t
   branches/compact_pool_revamp/t/oo/subclass.t
   branches/compact_pool_revamp/t/oo/vtableoverride.t
   branches/compact_pool_revamp/t/op/00ff-dos.t
   branches/compact_pool_revamp/t/op/00ff-unix.t
   branches/compact_pool_revamp/t/op/64bit.t
   branches/compact_pool_revamp/t/op/annotate-old.t
   branches/compact_pool_revamp/t/op/annotate.t
   branches/compact_pool_revamp/t/op/arithmetics.t
   branches/compact_pool_revamp/t/op/arithmetics_pmc.t
   branches/compact_pool_revamp/t/op/box.t
   branches/compact_pool_revamp/t/op/cc_params.t
   branches/compact_pool_revamp/t/op/cmp-nonbranch.t
   branches/compact_pool_revamp/t/op/comp.t
   branches/compact_pool_revamp/t/op/copy.t
   branches/compact_pool_revamp/t/op/debuginfo.t
   branches/compact_pool_revamp/t/op/errorson.t
   branches/compact_pool_revamp/t/op/fetch.t
   branches/compact_pool_revamp/t/op/gc-leaky.t
   branches/compact_pool_revamp/t/op/gc.t
   branches/compact_pool_revamp/t/op/globals.t
   branches/compact_pool_revamp/t/op/ifunless.t
   branches/compact_pool_revamp/t/op/inf_nan.t
   branches/compact_pool_revamp/t/op/integer.t
   branches/compact_pool_revamp/t/op/interp.t
   branches/compact_pool_revamp/t/op/io.t
   branches/compact_pool_revamp/t/op/lexicals.t
   branches/compact_pool_revamp/t/op/literal.t
   branches/compact_pool_revamp/t/op/number.t
   branches/compact_pool_revamp/t/op/sprintf2.t
   branches/compact_pool_revamp/t/op/string.t
   branches/compact_pool_revamp/t/op/string_cmp.t
   branches/compact_pool_revamp/t/op/time.t
   branches/compact_pool_revamp/t/op/trans.t
   branches/compact_pool_revamp/t/op/vivify.t
   branches/compact_pool_revamp/t/pharness/02-get_test_prog_args.t
   branches/compact_pool_revamp/t/pir/macro.t
   branches/compact_pool_revamp/t/pir/registernames.t
   branches/compact_pool_revamp/t/pmc/addrregistry.t
   branches/compact_pool_revamp/t/pmc/arrayiterator.t
   branches/compact_pool_revamp/t/pmc/bigint.t
   branches/compact_pool_revamp/t/pmc/boolean.t
   branches/compact_pool_revamp/t/pmc/callcontext.t
   branches/compact_pool_revamp/t/pmc/capture.t
   branches/compact_pool_revamp/t/pmc/class.t
   branches/compact_pool_revamp/t/pmc/codestring.t
   branches/compact_pool_revamp/t/pmc/complex.t
   branches/compact_pool_revamp/t/pmc/context.t
   branches/compact_pool_revamp/t/pmc/continuation.t
   branches/compact_pool_revamp/t/pmc/default.t
   branches/compact_pool_revamp/t/pmc/env.t
   branches/compact_pool_revamp/t/pmc/eventhandler.t
   branches/compact_pool_revamp/t/pmc/exception.t
   branches/compact_pool_revamp/t/pmc/exceptionhandler.t
   branches/compact_pool_revamp/t/pmc/fixedbooleanarray.t
   branches/compact_pool_revamp/t/pmc/fixedfloatarray.t
   branches/compact_pool_revamp/t/pmc/fixedintegerarray.t
   branches/compact_pool_revamp/t/pmc/fixedpmcarray.t
   branches/compact_pool_revamp/t/pmc/fixedstringarray.t
   branches/compact_pool_revamp/t/pmc/float.t
   branches/compact_pool_revamp/t/pmc/handle.t
   branches/compact_pool_revamp/t/pmc/hash.t
   branches/compact_pool_revamp/t/pmc/hashiterator.t
   branches/compact_pool_revamp/t/pmc/imageio.t
   branches/compact_pool_revamp/t/pmc/imageiosize.t
   branches/compact_pool_revamp/t/pmc/integer.t
   branches/compact_pool_revamp/t/pmc/key.t
   branches/compact_pool_revamp/t/pmc/lexinfo.t
   branches/compact_pool_revamp/t/pmc/lexpad.t
   branches/compact_pool_revamp/t/pmc/managedstruct.t
   branches/compact_pool_revamp/t/pmc/namespace-subs.t
   branches/compact_pool_revamp/t/pmc/namespace.t
   branches/compact_pool_revamp/t/pmc/null.t
   branches/compact_pool_revamp/t/pmc/object.t
   branches/compact_pool_revamp/t/pmc/objects.t
   branches/compact_pool_revamp/t/pmc/opcode.t
   branches/compact_pool_revamp/t/pmc/oplib.t
   branches/compact_pool_revamp/t/pmc/packfile.t
   branches/compact_pool_revamp/t/pmc/packfileannotation.t
   branches/compact_pool_revamp/t/pmc/packfileannotations.t
   branches/compact_pool_revamp/t/pmc/packfileconstanttable.t
   branches/compact_pool_revamp/t/pmc/packfiledirectory.t
   branches/compact_pool_revamp/t/pmc/packfilefixupentry.t
   branches/compact_pool_revamp/t/pmc/packfilefixuptable.t
   branches/compact_pool_revamp/t/pmc/packfilerawsegment.t
   branches/compact_pool_revamp/t/pmc/packfilesegment.t
   branches/compact_pool_revamp/t/pmc/parrotclass.t
   branches/compact_pool_revamp/t/pmc/parrotinterpreter.t
   branches/compact_pool_revamp/t/pmc/parrotlibrary.t
   branches/compact_pool_revamp/t/pmc/parrotrunningthread.t
   branches/compact_pool_revamp/t/pmc/parrotthread.t
   branches/compact_pool_revamp/t/pmc/pmcproxy.t
   branches/compact_pool_revamp/t/pmc/pointer.t
   branches/compact_pool_revamp/t/pmc/prop.t
   branches/compact_pool_revamp/t/pmc/resizablebooleanarray.t
   branches/compact_pool_revamp/t/pmc/resizablefloatarray.t
   branches/compact_pool_revamp/t/pmc/resizableintegerarray.t
   branches/compact_pool_revamp/t/pmc/resizablepmcarray.t
   branches/compact_pool_revamp/t/pmc/ro.t
   branches/compact_pool_revamp/t/pmc/role.t
   branches/compact_pool_revamp/t/pmc/scalar.t
   branches/compact_pool_revamp/t/pmc/scheduler.t
   branches/compact_pool_revamp/t/pmc/schedulermessage.t
   branches/compact_pool_revamp/t/pmc/sockaddr.t
   branches/compact_pool_revamp/t/pmc/socket.t
   branches/compact_pool_revamp/t/pmc/string.t
   branches/compact_pool_revamp/t/pmc/stringiterator.t
   branches/compact_pool_revamp/t/pmc/undef.t
   branches/compact_pool_revamp/t/pmc/unmanagedstruct.t
   branches/compact_pool_revamp/t/run/exit.t
   branches/compact_pool_revamp/t/src/basic.t
   branches/compact_pool_revamp/t/src/embed.t
   branches/compact_pool_revamp/t/src/extend.t
   branches/compact_pool_revamp/t/src/warnings.t
   branches/compact_pool_revamp/t/tools/install/testlib/README
   branches/compact_pool_revamp/t/tools/ops2cutils/01-new.t
   branches/compact_pool_revamp/t/tools/ops2cutils/03-print_c_header_file.t
   branches/compact_pool_revamp/t/tools/ops2cutils/04-print_c_source_top.t
   branches/compact_pool_revamp/t/tools/ops2cutils/05-print_c_source_bottom.t
   branches/compact_pool_revamp/t/tools/ops2cutils/06-dynamic.t
   branches/compact_pool_revamp/t/tools/ops2cutils/07-make_incdir.t
   branches/compact_pool_revamp/t/tools/ops2cutils/08-nolines.t
   branches/compact_pool_revamp/t/tools/ops2cutils/09-dynamic_nolines.t
   branches/compact_pool_revamp/t/tools/ops2cutils/10-print_c_source_file.t
   branches/compact_pool_revamp/tools/build/ops2c.pl
   branches/compact_pool_revamp/tools/dev/checkdepend.pl
   branches/compact_pool_revamp/tools/dev/mk_inno.pl
   branches/compact_pool_revamp/tools/dev/mk_manifest_and_skip.pl
   branches/compact_pool_revamp/tools/dev/nci_thunk_gen.pir
   branches/compact_pool_revamp/tools/dev/parrot-fuzzer
   branches/compact_pool_revamp/tools/dev/pbc_to_exe.pir
   branches/compact_pool_revamp/tools/dev/tapir.pir
   branches/compact_pool_revamp/tools/docs/filename_and_chapter.pl
   branches/compact_pool_revamp/tools/install/smoke.pl
   branches/compact_pool_revamp/tools/util/parrot-config.pir
   branches/compact_pool_revamp/tools/util/release.json

Added: branches/compact_pool_revamp/.gitignore
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/compact_pool_revamp/.gitignore	Mon Apr 26 06:15:29 2010	(r46022)
@@ -0,0 +1,581 @@
+# ex: set ro:
+# $Id$
+# generated by tools/dev/mk_gitignore.pl Sat Apr 24 05:11:34 2010 UT
+#
+# This file should contain a transcript of the svn:ignore properties
+# of the directories in the Parrot subversion repository.
+# The .gitignore file is a convenience for developers  working with git-svn.
+# See http://www.kernel.org/pub/software/scm/git/docs/gitignore.html for the
+# format of this file.
+#
+# generated from svn:ignore of './'
+/*.core
+/*.def
+/*.exe
+/*.exp
+/*.ilk
+/*.lib
+/*.manifest
+/*.ncb
+/*.o
+/*.obj
+/*.patch
+/*.pdb
+/*.sln
+/*.sto
+/*.suo
+/*.tmp
+/*.vcproj*
+/.git
+/.parrot_current_rev
+/CFLAGS
+/MANIFEST.configure.generated
+/Makefile
+/TAGS
+/all_cstring.str
+/blib
+/config_lib.pir
+/cover_db
+/install_config.fpmc
+/installable*
+/libparrot.def
+/libparrot.dll
+/miniparrot
+/myconfig
+/parrot
+/parrot-nqp
+/parrot-nqp.c
+/parrot-nqp.pbc
+/parrot.ilk
+/parrot.iss
+/parrot.pc
+/parrot.pdb
+/parrot_config
+/parrot_config.c
+/parrot_config.pbc
+/parrot_debugger
+/parrot_nci_thunk_gen
+/parrot_nci_thunk_gen.c
+/parrot_nci_thunk_gen.pbc
+/parrot_test_run.tar.gz
+/pbc_disassemble
+/pbc_dump
+/pbc_info
+/pbc_merge
+/pbc_to_exe
+/pbc_to_exe.*
+/perl6
+/pirc
+/tags
+/tapir
+/tapir.*
+/temp.file
+/test
+/test.c
+/test.cco
+/test.err
+/test.ilk
+/test.ldo
+/test.out
+/test.pdb
+/vc60.pdb
+/vc70.pdb
+/vtable.dump
+# generated from svn:ignore of 'compilers/data_json/'
+/compilers/data_json/data_json.pbc
+# generated from svn:ignore of 'compilers/data_json/data_json/'
+/compilers/data_json/data_json/*.pbc
+/compilers/data_json/data_json/*.pir
+# generated from svn:ignore of 'compilers/imcc/'
+/compilers/imcc/*.flag
+/compilers/imcc/*.o
+/compilers/imcc/*.obj
+/compilers/imcc/*.tmp
+/compilers/imcc/Rules.mak
+/compilers/imcc/imcc
+/compilers/imcc/imclexer.c
+/compilers/imcc/imcparser.c
+/compilers/imcc/imcparser.h
+/compilers/imcc/imcparser.output
+# generated from svn:ignore of 'compilers/pct/src/PAST/'
+/compilers/pct/src/PAST/*.pbc
+# generated from svn:ignore of 'compilers/pct/src/PCT/'
+/compilers/pct/src/PCT/*.pbc
+# generated from svn:ignore of 'compilers/pct/src/POST/'
+/compilers/pct/src/POST/*.pbc
+/compilers/pct/src/POST/Grammar_gen.pir
+# generated from svn:ignore of 'compilers/pge/'
+/compilers/pge/PGE.pbc
+# generated from svn:ignore of 'compilers/pge/PGE/'
+/compilers/pge/PGE/*.dll
+/compilers/pge/PGE/builtins_gen.pir
+# generated from svn:ignore of 'compilers/pirc/'
+/compilers/pirc/*.o
+/compilers/pirc/*.obj
+/compilers/pirc/*.pbd
+/compilers/pirc/pirc
+/compilers/pirc/pirc.exe
+# generated from svn:ignore of 'compilers/pirc/t/'
+/compilers/pirc/t/basic_?.pir
+/compilers/pirc/t/basic_??.pir
+/compilers/pirc/t/heredoc_?.pir
+/compilers/pirc/t/macro_?.pir
+/compilers/pirc/t/stmts_?.pir
+/compilers/pirc/t/subflags_?.pir
+# generated from svn:ignore of 'compilers/tge/'
+/compilers/tge/tgc.pbc
+# generated from svn:ignore of 'compilers/tge/TGE/'
+/compilers/tge/TGE/Parser.pir
+# generated from svn:ignore of 'docs/'
+/docs/*.tmp
+/docs/Makefile
+/docs/doc-prep
+/docs/html
+/docs/packfile-c.pod
+/docs/packfile-perl.pod
+# generated from svn:ignore of 'docs/book/'
+/docs/book/*.html
+# generated from svn:ignore of 'docs/ops/'
+/docs/ops/*.pod
+# generated from svn:ignore of 'editor/'
+/editor/Makefile
+/editor/imc.vim
+/editor/imcc.xml
+/editor/pir.vim
+# generated from svn:ignore of 'examples/languages/abc/'
+/examples/languages/abc/*.c
+/examples/languages/abc/*.exe
+/examples/languages/abc/*.iss
+/examples/languages/abc/*.o
+/examples/languages/abc/*.obj
+/examples/languages/abc/*.pbc
+/examples/languages/abc/MANIFEST
+/examples/languages/abc/abc
+/examples/languages/abc/installable_abc
+/examples/languages/abc/man
+# generated from svn:ignore of 'examples/languages/abc/src/'
+/examples/languages/abc/src/gen_actions.pir
+/examples/languages/abc/src/gen_builtins.pir
+/examples/languages/abc/src/gen_grammar.pir
+# generated from svn:ignore of 'examples/languages/abc/t/'
+/examples/languages/abc/t/*_*.out
+/examples/languages/abc/t/*_*.pir
+# generated from svn:ignore of 'examples/languages/squaak/'
+/examples/languages/squaak/*.c
+/examples/languages/squaak/*.exe
+/examples/languages/squaak/*.iss
+/examples/languages/squaak/*.o
+/examples/languages/squaak/*.obj
+/examples/languages/squaak/*.pbc
+/examples/languages/squaak/MANIFEST
+/examples/languages/squaak/installable_squaak
+/examples/languages/squaak/squaak
+# generated from svn:ignore of 'examples/languages/squaak/src/'
+/examples/languages/squaak/src/gen_*.pir
+# generated from svn:ignore of 'examples/mops/'
+/examples/mops/*.o
+/examples/mops/mops
+# generated from svn:ignore of 'examples/nci/'
+/examples/nci/*.pbc
+# generated from svn:ignore of 'examples/pasm/'
+/examples/pasm/hello
+/examples/pasm/hello.o
+/examples/pasm/hello.pbc
+# generated from svn:ignore of 'examples/pir/befunge/'
+/examples/pir/befunge/*.c
+/examples/pir/befunge/*.exe
+/examples/pir/befunge/*.iss
+/examples/pir/befunge/*.o
+/examples/pir/befunge/*.obj
+/examples/pir/befunge/*.pbc
+/examples/pir/befunge/MANIFEST
+/examples/pir/befunge/befunge
+/examples/pir/befunge/installable_befunge
+# generated from svn:ignore of 'ext/'
+/ext/Makefile
+# generated from svn:ignore of 'ext/Parrot-Embed/'
+/ext/Parrot-Embed/*.bs
+/ext/Parrot-Embed/*.bundle
+/ext/Parrot-Embed/*.c
+/ext/Parrot-Embed/*.def
+/ext/Parrot-Embed/*.dll
+/ext/Parrot-Embed/*.dump
+/ext/Parrot-Embed/*.dylib
+/ext/Parrot-Embed/*.exe
+/ext/Parrot-Embed/*.exp
+/ext/Parrot-Embed/*.h
+/ext/Parrot-Embed/*.ilk
+/ext/Parrot-Embed/*.lib
+/ext/Parrot-Embed/*.manifest
+/ext/Parrot-Embed/*.o
+/ext/Parrot-Embed/*.obj
+/ext/Parrot-Embed/*.old
+/ext/Parrot-Embed/*.pdb
+/ext/Parrot-Embed/*.pdb
+/ext/Parrot-Embed/*.so
+/ext/Parrot-Embed/*.tmp
+/ext/Parrot-Embed/*.xs
+/ext/Parrot-Embed/Build
+/ext/Parrot-Embed/Build.bat
+/ext/Parrot-Embed/Makefile
+/ext/Parrot-Embed/Makefile.PL
+/ext/Parrot-Embed/_build
+/ext/Parrot-Embed/blib
+/ext/Parrot-Embed/dll.base
+/ext/Parrot-Embed/pm_to_blib
+# generated from svn:ignore of 'ext/Parrot-Embed/lib/Parrot/'
+/ext/Parrot-Embed/lib/Parrot/*.c
+/ext/Parrot-Embed/lib/Parrot/*.obj
+# generated from svn:ignore of 'ext/Parrot-Embed/t/'
+/ext/Parrot-Embed/t/*.pbc
+# generated from svn:ignore of 'include/parrot/'
+/include/parrot/*.tmp
+/include/parrot/config.h
+/include/parrot/core_pmcs.h
+/include/parrot/extend_vtable.h
+/include/parrot/feature.h
+/include/parrot/has_header.h
+/include/parrot/opsenum.h
+/include/parrot/pbcversion.h
+/include/parrot/platform.h
+/include/parrot/platform_interface.h
+/include/parrot/platform_limits.h
+/include/parrot/vtable.h
+# generated from svn:ignore of 'include/parrot/oplib/'
+/include/parrot/oplib/*_ops.h
+/include/parrot/oplib/*_ops_cg*.h
+/include/parrot/oplib/*_ops_switch.h
+/include/parrot/oplib/ops.h
+# generated from svn:ignore of 'include/pmc/'
+/include/pmc/*.h
+# generated from svn:ignore of 'lib/'
+/lib/DumbLink.pm
+# generated from svn:ignore of 'lib/Parrot/'
+/lib/Parrot/*.tmp
+/lib/Parrot/Jit.pm
+/lib/Parrot/Makefile
+/lib/Parrot/OpLib
+/lib/Parrot/PMC.pm
+/lib/Parrot/PakFile2.bs
+/lib/Parrot/PakFile2.c
+/lib/Parrot/blib
+/lib/Parrot/pm_to_blib
+# generated from svn:ignore of 'lib/Parrot/Config/'
+/lib/Parrot/Config/Generated.pm
+# generated from svn:ignore of 'lib/Parrot/Pmc2c/'
+/lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm
+# generated from svn:ignore of 'runtime/parrot/dynext/'
+/runtime/parrot/dynext/*.bundle
+/runtime/parrot/dynext/*.def
+/runtime/parrot/dynext/*.dll
+/runtime/parrot/dynext/*.dylib
+/runtime/parrot/dynext/*.exe
+/runtime/parrot/dynext/*.exp
+/runtime/parrot/dynext/*.ilk
+/runtime/parrot/dynext/*.lib
+/runtime/parrot/dynext/*.manifest
+/runtime/parrot/dynext/*.obj
+/runtime/parrot/dynext/*.pdb
+/runtime/parrot/dynext/*.so
+/runtime/parrot/dynext/libnci.*
+# generated from svn:ignore of 'runtime/parrot/include/'
+/runtime/parrot/include/*.fpmc
+/runtime/parrot/include/*.pasm
+/runtime/parrot/include/*.pbc
+# generated from svn:ignore of 'runtime/parrot/languages/'
+/runtime/parrot/languages/data_json
+# generated from svn:ignore of 'runtime/parrot/library/'
+/runtime/parrot/library/*.pbc
+/runtime/parrot/library/OpenGL_funcs.pir
+/runtime/parrot/library/PAST
+/runtime/parrot/library/config.pir
+# generated from svn:ignore of 'runtime/parrot/library/CGI/'
+/runtime/parrot/library/CGI/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Config/'
+/runtime/parrot/library/Config/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Configure/'
+/runtime/parrot/library/Configure/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Data/'
+/runtime/parrot/library/Data/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Data/Dumper/'
+/runtime/parrot/library/Data/Dumper/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Digest/'
+/runtime/parrot/library/Digest/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Getopt/'
+/runtime/parrot/library/Getopt/Obj.pbc
+# generated from svn:ignore of 'runtime/parrot/library/MIME/'
+/runtime/parrot/library/MIME/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Math/'
+/runtime/parrot/library/Math/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/NCI/'
+/runtime/parrot/library/NCI/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/OpenGL/'
+/runtime/parrot/library/OpenGL/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/PCT/'
+/runtime/parrot/library/PCT/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/PGE/'
+/runtime/parrot/library/PGE/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Parrot/'
+/runtime/parrot/library/Parrot/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/ProfTest/'
+/runtime/parrot/library/ProfTest/*.pbc
+/runtime/parrot/library/ProfTest/*.pir
+# generated from svn:ignore of 'runtime/parrot/library/Stream/'
+/runtime/parrot/library/Stream/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/String/'
+/runtime/parrot/library/String/Utils.pbc
+# generated from svn:ignore of 'runtime/parrot/library/TAP/'
+/runtime/parrot/library/TAP/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Tcl/'
+/runtime/parrot/library/Tcl/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Test/'
+/runtime/parrot/library/Test/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Test/Builder/'
+/runtime/parrot/library/Test/Builder/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/'
+/runtime/parrot/library/YAML/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/Dumper/'
+/runtime/parrot/library/YAML/Dumper/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/Parser/'
+/runtime/parrot/library/YAML/Parser/*.pbc
+# generated from svn:ignore of 'src/'
+/src/*.o
+/src/*.obj
+/src/*.str
+/src/asmfun.*
+/src/core_pmcs.c
+/src/exec_cpu.c
+/src/exec_dep.c
+/src/exec_dep.h
+/src/extend_vtable.c
+/src/extra_nci_thunks.c
+/src/fingerprint.c
+/src/glut_callbacks.c
+/src/glut_nci_thunks.c
+/src/glut_nci_thunks.nci
+/src/install_config.c
+/src/jit_cpu.c
+/src/jit_defs.c
+/src/jit_emit.h
+/src/null_config.c
+/src/parrot_config.c
+/src/parrot_config.h
+/src/platform.c
+/src/platform_asm.s
+/src/revision.c
+# generated from svn:ignore of 'src/atomic/'
+/src/atomic/*.gcda
+/src/atomic/*.o
+# generated from svn:ignore of 'src/call/'
+/src/call/*.o
+/src/call/*.obj
+/src/call/*.str
+# generated from svn:ignore of 'src/dynoplibs/'
+/src/dynoplibs/*.bundle
+/src/dynoplibs/*.c
+/src/dynoplibs/*.dll
+/src/dynoplibs/*.exp
+/src/dynoplibs/*.h
+/src/dynoplibs/*.ilk
+/src/dynoplibs/*.lib
+/src/dynoplibs/*.manifest
+/src/dynoplibs/*.o
+/src/dynoplibs/*.obj
+/src/dynoplibs/*.pdb
+/src/dynoplibs/*.so
+/src/dynoplibs/Defines.mak
+/src/dynoplibs/Rules.mak
+# generated from svn:ignore of 'src/dynpmc/'
+/src/dynpmc/*.bundle
+/src/dynpmc/*.c
+/src/dynpmc/*.def
+/src/dynpmc/*.dll
+/src/dynpmc/*.dump
+/src/dynpmc/*.dylib
+/src/dynpmc/*.exe
+/src/dynpmc/*.exp
+/src/dynpmc/*.h
+/src/dynpmc/*.ilk
+/src/dynpmc/*.lib
+/src/dynpmc/*.manifest
+/src/dynpmc/*.o
+/src/dynpmc/*.obj
+/src/dynpmc/*.pdb
+/src/dynpmc/*.so
+/src/dynpmc/Makefile
+/src/dynpmc/md2.pmc
+/src/dynpmc/md4.pmc
+/src/dynpmc/md5.pmc
+/src/dynpmc/ripemd160.pmc
+/src/dynpmc/sha.pmc
+/src/dynpmc/sha1.pmc
+/src/dynpmc/sha256.pmc
+/src/dynpmc/sha512.pmc
+# generated from svn:ignore of 'src/gc/'
+/src/gc/*.bundle
+/src/gc/*.def
+/src/gc/*.dll
+/src/gc/*.dump
+/src/gc/*.dylib
+/src/gc/*.exe
+/src/gc/*.exp
+/src/gc/*.h
+/src/gc/*.ilk
+/src/gc/*.lib
+/src/gc/*.manifest
+/src/gc/*.o
+/src/gc/*.obj
+/src/gc/*.pdb
+/src/gc/*.so
+/src/gc/Makefile
+# generated from svn:ignore of 'src/interp/'
+/src/interp/*.o
+/src/interp/*.str
+# generated from svn:ignore of 'src/io/'
+/src/io/*.o
+/src/io/*.obj
+/src/io/*.str
+# generated from svn:ignore of 'src/nci/'
+/src/nci/*.o
+/src/nci/*.obj
+/src/nci/*.str
+# generated from svn:ignore of 'src/ops/'
+/src/ops/*.c
+/src/ops/*.o
+/src/ops/*.obj
+# generated from svn:ignore of 'src/packfile/'
+/src/packfile/*.o
+/src/packfile/*.obj
+# generated from svn:ignore of 'src/pmc/'
+/src/pmc/*.c
+/src/pmc/*.dump
+/src/pmc/*.h
+/src/pmc/*.o
+/src/pmc/*.obj
+/src/pmc/*.str
+/src/pmc/*.tmp
+/src/pmc/Makefile
+# generated from svn:ignore of 'src/runcore/'
+/src/runcore/*.o
+/src/runcore/*.obj
+/src/runcore/*.str
+# generated from svn:ignore of 'src/string/'
+/src/string/*.o
+/src/string/*.obj
+/src/string/*.str
+/src/string/private_cstring.h
+# generated from svn:ignore of 'src/string/charset/'
+/src/string/charset/*.o
+/src/string/charset/*.obj
+# generated from svn:ignore of 'src/string/encoding/'
+/src/string/encoding/*.o
+/src/string/encoding/*.obj
+# generated from svn:ignore of 't/benchmark/'
+/t/benchmark/*.pasm
+/t/benchmark/*.pir
+# generated from svn:ignore of 't/compilers/data_json/'
+/t/compilers/data_json/*.pbc
+/t/compilers/data_json/*.pir
+/t/compilers/data_json/*_pbcexe
+# generated from svn:ignore of 't/compilers/imcc/'
+/t/compilers/imcc/*.pbc
+# generated from svn:ignore of 't/compilers/imcc/imcpasm/'
+/t/compilers/imcc/imcpasm/*.pasm
+/t/compilers/imcc/imcpasm/*.pbc
+/t/compilers/imcc/imcpasm/*.pir
+/t/compilers/imcc/imcpasm/*_pbcexe
+# generated from svn:ignore of 't/compilers/imcc/reg/'
+/t/compilers/imcc/reg/*.pasm
+/t/compilers/imcc/reg/*.pbc
+/t/compilers/imcc/reg/*.pir
+/t/compilers/imcc/reg/*_pbcexe*
+# generated from svn:ignore of 't/compilers/imcc/syn/'
+/t/compilers/imcc/syn/*.pasm
+/t/compilers/imcc/syn/*.pbc
+/t/compilers/imcc/syn/*.pir
+/t/compilers/imcc/syn/*_pbcexe*
+# generated from svn:ignore of 't/compilers/pct/'
+/t/compilers/pct/*.pbc
+/t/compilers/pct/*.pir
+# generated from svn:ignore of 't/compilers/pge/'
+/t/compilers/pge/*.pasm
+/t/compilers/pge/*.pbc
+/t/compilers/pge/*.pir
+/t/compilers/pge/*_pbcexe
+# generated from svn:ignore of 't/compilers/pge/p5regex/'
+/t/compilers/pge/p5regex/*.pir
+# generated from svn:ignore of 't/compilers/pge/perl6regex/'
+/t/compilers/pge/perl6regex/*.pbc
+/t/compilers/pge/perl6regex/*.pir
+# generated from svn:ignore of 't/compilers/tge/'
+/t/compilers/tge/*.pbc
+/t/compilers/tge/*.pir
+/t/compilers/tge/*_pbcexe
+# generated from svn:ignore of 't/dynoplibs/'
+/t/dynoplibs/*.pasm
+/t/dynoplibs/*.pbc
+/t/dynoplibs/*.pir
+# generated from svn:ignore of 't/dynpmc/'
+/t/dynpmc/*.pasm
+/t/dynpmc/*.pbc
+/t/dynpmc/*.pir
+/t/dynpmc/*_pbcexe*
+/t/dynpmc/md2.t
+/t/dynpmc/md4.t
+/t/dynpmc/md5.t
+/t/dynpmc/ripemd160.t
+/t/dynpmc/sha.t
+/t/dynpmc/sha1.t
+/t/dynpmc/sha256.t
+/t/dynpmc/sha512.t
+# generated from svn:ignore of 't/examples/'
+/t/examples/*.pasm
+/t/examples/*.pbc
+/t/examples/*.pir
+/t/examples/*_pbcexe*
+# generated from svn:ignore of 't/library/'
+/t/library/*.out
+/t/library/*.pasm
+/t/library/*.pbc
+/t/library/*.pir
+/t/library/*_pbcexe*
+# generated from svn:ignore of 't/native_pbc/'
+/t/native_pbc/*_pbcexe*
+# generated from svn:ignore of 't/oo/'
+/t/oo/*.pbc
+/t/oo/*.pir
+# generated from svn:ignore of 't/op/'
+/t/op/*.out
+/t/op/*.pasm
+/t/op/*.pbc
+/t/op/*.pir
+/t/op/*_pbcexe*
+# generated from svn:ignore of 't/perl/'
+/t/perl/Parrot_Test_1.pasm
+/t/perl/Parrot_Test_1.pir
+# generated from svn:ignore of 't/pmc/'
+/t/pmc/*.out
+/t/pmc/*.pasm
+/t/pmc/*.pbc
+/t/pmc/*.pir
+/t/pmc/*_pbcexe*
+# generated from svn:ignore of 't/src/'
+/t/src/*_*
+# generated from svn:ignore of 't/stress/'
+/t/stress/*.out
+/t/stress/*.pasm
+/t/stress/*.pbc
+/t/stress/*.pir
+/t/stress/*_pbcexe*
+# generated from svn:ignore of 't/tools/'
+/t/tools/*.pbc
+/t/tools/*.pir
+/t/tools/pdb.t.*
+/t/tools/pmc2c.*.c
+/t/tools/pmc2c.*.dump
+/t/tools/pmc2c.*.h
+/t/tools/pmc2c.*.pmc
+# Local variables:
+#   mode: text
+#   buffer-read-only: t
+# End:

Modified: branches/compact_pool_revamp/CREDITS
==============================================================================
--- branches/compact_pool_revamp/CREDITS	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/CREDITS	Mon Apr 26 06:15:29 2010	(r46022)
@@ -402,7 +402,7 @@
 
 N: Gerd Pokorra
 E: pokorra at uni-siegen.de
-D: Release manager for 1.9.0
+D: Release manager for 1.9.0 and 2.3.0
 
 N: Goplat
 D: Win98 and other fixes.

Modified: branches/compact_pool_revamp/ChangeLog
==============================================================================
--- branches/compact_pool_revamp/ChangeLog	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/ChangeLog	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,5 +1,9 @@
 #1 $Id$
 
+2010.04.20     Gerd
+	* Released 2.3.0
+	See NEWS for more.
+
 2010.03.16     cotto
 	* Released 2.2.0
 	See NEWS for more.

Modified: branches/compact_pool_revamp/Configure.pl
==============================================================================
--- branches/compact_pool_revamp/Configure.pl	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/Configure.pl	Mon Apr 26 06:15:29 2010	(r46022)
@@ -343,10 +343,6 @@
 
 Use the given ops files.
 
-=item C<--cgoto=0>
-
-Don't build cgoto core. This is recommended when you are short of memory.
-
 =item C<--jitcapable>
 
 Use JIT system.
@@ -623,7 +619,6 @@
     auto::jit
     auto::frames
     auto::cpu
-    auto::cgoto
     auto::inline
     auto::gc
     auto::memalign
@@ -632,10 +627,8 @@
     auto::env
     auto::gmp
     auto::readline
-    auto::gdbm
     auto::pcre
     auto::opengl
-    auto::crypto
     auto::gettext
     auto::snprintf
     # auto::perldoc
@@ -644,7 +637,6 @@
     auto::icu
     gen::config_h
     gen::core_pmcs
-    gen::crypto
     gen::opengl
     gen::makefiles
     gen::platform

Modified: branches/compact_pool_revamp/DEPRECATED.pod
==============================================================================
--- branches/compact_pool_revamp/DEPRECATED.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/DEPRECATED.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -7,8 +7,8 @@
 
 =head1 Experimental Status
 
-These features are not considered stable, even though they may
-have shipped in a stable release of parrot[2]. Use them at your own
+These features are not considered supported, even though they may
+have shipped in a supported release of parrot[2]. Use them at your own
 risk, as they can be removed or changed in any release. These
 items are marked below with C<[experimental]>.
 
@@ -37,11 +37,9 @@
 
 =over 4
 
-=item RetContinuation [eligible in 2.4]
+=item gziphandle [experimental]
 
-In future, just use Continuation.
-
-L<https://trac.parrot.org/parrot/ticket/1427>
+L<https://trac.parrot.org/parrot/ticket/1580>
 
 =item moved to dynpmc [eligible in 1.1]
 
@@ -66,22 +64,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/103>
 
-=item Digest dynpmcs [eligible in 2.4]
-
-The digest dynpmcs are, since the posting of this notice, available on
-http://gitorious.org/digest-dynpmcs and will no longer be distributed
-with parrot after 2.3.
-
-L<https://trac.parrot.org/parrot/ticket/1467>
-
-=item gdbmhash dynpmc [eligible in 2.4]
-
-The gdbmhash dynpmc is, since the posting of this notice, available on
-http://gitorious.org/dbm-dynpmcs and will no longer be distributed
-with parrot after 2.3.
-
-L<https://trac.parrot.org/parrot/ticket/1469>
-
 =item NCI without signature ("raw" pointers) [eligible in 2.4]
 
 No equivalent functionality is promised. You shouldn't be using this. Here be
@@ -121,6 +103,26 @@
 
 L<https://trac.parrot.org/parrot/ticket/1554>
 
+=item Auto-vivification of nested aggregates [eligible in 2.4]
+
+Auto-vivifation of nested aggregated is deprecated.
+
+E.g.
+
+  $P0 = new ['Hash']
+  $S1 = $P0['foo';'bar';'baz']
+
+will not auto-vivify nested hashes and return PMCNULL early.
+
+L<https://trac.parrot.org/parrot/ticket/1561>
+
+=item PMC must use manual_attrs or auto_attrs flag [eligible in 2.4]
+
+PMCs must no longer use default value for manual/auto attribute allocation,
+manual_attrs or auto_attrs must be specified.
+
+L<http://trac.parrot.org/parrot/ticket/1506>
+
 =back
 
 =head1 Opcodes
@@ -170,14 +172,20 @@
 Ability to get the string name of the current GC core from the interpinfo_s_i.
 See r43900 and r43904 for details.
 
+L<https://trac.parrot.org/parrot/ticket/1581>
+
 =item NCI_FB_CB and NCI_FB_UD in iglobals [experimental]
 
 Hooks allowing a runtime-loadable dynamic frame builder.
 
+L<https://trac.parrot.org/parrot/ticket/1582>
+
 =item loadlib_p_s_p [experimental]
 
 Ability to use non-default dynamic loading behaviour.
 
+L<https://trac.parrot.org/parrot/ticket/1583>
+
 =item pushaction, pushmark, popmark [eligible in 2.4]
 
 L<https://trac.parrot.org/parrot/ticket/876>
@@ -188,12 +196,39 @@
 
 L<https://trac.parrot.org/parrot/ticket/1548>
 
+=item dlfunc and new_callback signature string format [eligible in 2.4]
+
+These will be changed to allow more flexibility in types.
+
+L<https://trac.parrot.org/parrot/ticket/1565>
+
 =item find_lex [eligible in 2.4]
 
 find_lex will not throw exception for non-existing lexicals.
 
 L<https://trac.parrot.org/parrot/ticket/1207>
 
+=item substr_s_i_i_s [eligible in 2.4]
+
+This op will be replaced with replace_s_s_i_i_s op to clearly indicate
+semantic. Part of COW removal.
+
+L<https://trac.parrot.org/parrot/ticket/1540>
+
+=item substr_s_s_i_i_s [eligible in 2.4]
+
+This op is deprecated. Use replace_s_s_i_i_s or substr_s_s_i_i (or both)
+instead. Part of COW removal.
+
+L<https://trac.parrot.org/parrot/ticket/1540>
+
+=item inplace string updates. [eligible in 2.4]
+
+All "inplace" string update ops are deprecated. E.g. "chopn_s", etc.
+Part of COW removal.
+
+L<https://trac.parrot.org/parrot/ticket/1540>
+
 =back
 
 =head1 Bytecode
@@ -244,14 +279,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/907>
 
-=item Subs marked with C<:vtable>/C<:method> aren't in namespace [eligible in 1.1]
-
-Subs marked with C<:vtable> or C<:method> flags are no longer given a
-namespace entry by default.  Use the C<:nsentry> flag to cause this
-to happen.
-
-L<https://trac.parrot.org/parrot/ticket/389>
-
 =item C API coding standards cleanup [eligible in 1.1]
 
 All C API functions that aren't currently named according to the
@@ -266,21 +293,27 @@
  Parrot_gc_free_pmc_attributes
 
 These items and related helper functions are added as experimental support
-for L<https://trac.parrot.org/parrot/ticket/895>
+for L<https://trac.parrot.org/parrot/ticket/1506>
 
 =item STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
 
 All STRING modification functions will return a STRING pointer; capture and use
 this rather than relying on in-place modification of an existing pointer.
 
+L<https://trac.parrot.org/parrot/ticket/1584>
+
 =item STRING_is_null function [eligible in 2.4]
 
 renamed to Parrot_str_is_null
 
+L<https://trac.parrot.org/parrot/ticket/1585>
+
 =item Parrot_string_* [eligible in 2.4]
 
 rename Parrot_string_cstring to Parrot_str_cstring
 
+L<https://trac.parrot.org/parrot/ticket/1586>
+
 =item STRING COW [eligible in 2.4]
 
 COW strings are to be removed. All "inplace" string modification
@@ -298,6 +331,8 @@
   Parrot_PMC_set_vtable
   Parrot_PMC_newclass
 
+L<https://trac.parrot.org/parrot/ticket/1587>
+
 =item Parrot_VTABLE, Parrot_get_vtable, Parrot_PMC_set_vtable [eligible in 2.4]
 
 These do not expose any functionality that should be available to code outside
@@ -306,6 +341,8 @@
 These might get revived in some form to allow for creating new types and adding
 vtable-overrides, if that functionality becomes desired.
 
+L<https://trac.parrot.org/parrot/ticket/1588>
+
 =back
 
 =head1 Compiler tools
@@ -358,23 +395,6 @@
 
 =back
 
-=head1 Compilers
-
-=over 4
-
-=item json [eligible in 2.4]
-
-The json compiler was dupicated into data_json some time ago. If you're
-using json, just use data_json instead, it's the same code. See TT #1461.
-
-=item nqp [eligible in 2.4]
-
-Replaced by ext/nqp-rx and parrot-nqp.
-
-L<http://trac.parrot.org/parrot/ticket/1462>
-
-=back
-
 =head1 Parrot library
 
 =over 4
@@ -386,7 +406,7 @@
 A way to provide an equivalent of -L and -I parrot command line options
 to language that doesn't support it.
 
-=item JSON, JSON, and Config;JSON [eligible in 1.5]
+=item JSON, and Config;JSON [eligible in 1.5]
 
 L<https://trac.parrot.org/parrot/ticket/508>
 
@@ -411,7 +431,7 @@
 =item 2
 
 For an item to be considered experimental, it can B<never> have shipped in
-a stable release without the C<[experimental]> tag; otherwise, it must be
+a supported release without the C<[experimental]> tag; otherwise, it must be
 deprecated normally before removal or incompatible change.
 
 =back

Modified: branches/compact_pool_revamp/MANIFEST
==============================================================================
--- branches/compact_pool_revamp/MANIFEST	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/MANIFEST	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,12 +1,13 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Tue Apr 13 12:41:20 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat Apr 24 03:05:21 2010 UT
 #
 # See below for documentation on the format of this file.
 #
 # See docs/submissions.pod on how to recreate this file after SVN
 # has been told about new or deleted files.
+.gitignore                                                  []
 CREDITS                                                     [main]doc
 ChangeLog                                                   []
 Configure.pl                                                []
@@ -17,8 +18,6 @@
 MANIFEST                                                    []
 MANIFEST.SKIP                                               []
 MANIFEST.generated                                          []
-META.yml                                                    []
-Makefile.PL                                                 []
 NEWS                                                        [main]doc
 PBC_COMPAT                                                  [main]doc
 PLATFORMS                                                   [devel]doc
@@ -62,72 +61,6 @@
 compilers/imcc/symreg.c                                     [imcc]
 compilers/imcc/symreg.h                                     [imcc]
 compilers/imcc/unit.h                                       [imcc]
-compilers/json/Defines.mak                                  [json]
-compilers/json/JSON.pir                                     [json]
-compilers/json/JSON/grammar.pg                              [json]
-compilers/json/JSON/pge2pir.tg                              [json]
-compilers/json/Rules.mak                                    [json]
-compilers/ncigen/MAINTAINER                                 [ncigen]
-compilers/ncigen/NCIGEN.TODO                                [ncigen]
-compilers/ncigen/NCIGENP6.pm                                [ncigen]
-compilers/ncigen/README                                     []doc
-compilers/ncigen/config/makefiles/ncigen.in                 [ncigen]
-compilers/ncigen/lib/Parrot/Test/NCIGENAST.pm               [ncigen]
-compilers/ncigen/ncigen.pir                                 [ncigen]
-compilers/ncigen/ncigen.pl                                  [ncigen]
-compilers/ncigen/src/NCIGENAST.pir                          [ncigen]
-compilers/ncigen/src/NCIPIR.pir                             [ncigen]
-compilers/ncigen/src/builtins/say.pir                       [ncigen]
-compilers/ncigen/src/parser/actions.pm                      [ncigen]
-compilers/ncigen/src/parser/grammar.pg                      [ncigen]
-compilers/ncigen/t/NCIGENAST/struct_00.t                    [test]
-compilers/ncigen/t/NCIGENAST/typedef_00.t                   [test]
-compilers/ncigen/t/harness                                  [test]
-compilers/ncigen/t/parse_00.t                               [test]
-compilers/ncigen/t/parse_01.t                               [test]
-compilers/ncigen/t/parse_02.t                               [test]
-compilers/nqp/Defines.mak                                   [nqp]
-compilers/nqp/README.pod                                    []doc
-compilers/nqp/Rules.mak                                     [nqp]
-compilers/nqp/TODO.pod                                      [nqp]
-compilers/nqp/bootstrap/actions.pm                          [nqp]
-compilers/nqp/bootstrap/nqp.pir                             [nqp]
-compilers/nqp/bootstrap/t/harness                           [test]
-compilers/nqp/nqp.pir                                       [nqp]
-compilers/nqp/src/Grammar.pg                                [nqp]
-compilers/nqp/src/Grammar/Actions.pir                       [nqp]
-compilers/nqp/src/builtins.pir                              [nqp]
-compilers/nqp/t/01-literals.t                               [test]
-compilers/nqp/t/02-if-else.t                                [test]
-compilers/nqp/t/02-if.t                                     [test]
-compilers/nqp/t/03-unless.t                                 [test]
-compilers/nqp/t/04-comments.t                               [test]
-compilers/nqp/t/05-pod.t                                    [test]
-compilers/nqp/t/06-args-pos.t                               [test]
-compilers/nqp/t/07-boolean.t                                [test]
-compilers/nqp/t/08-blocks.t                                 [test]
-compilers/nqp/t/09-var.t                                    [test]
-compilers/nqp/t/10-sub.t                                    [test]
-compilers/nqp/t/11-cmp.t                                    [test]
-compilers/nqp/t/12-list.t                                   [test]
-compilers/nqp/t/13-logical.t                                [test]
-compilers/nqp/t/14-op.t                                     [test]
-compilers/nqp/t/15-module.t                                 [test]
-compilers/nqp/t/16-while.t                                  [test]
-compilers/nqp/t/17-class.t                                  [test]
-compilers/nqp/t/18-inline.t                                 [test]
-compilers/nqp/t/19-hash_access.t                            [test]
-compilers/nqp/t/20-list_access.t                            [test]
-compilers/nqp/t/22-optional_args.t                          [test]
-compilers/nqp/t/23-named_args.t                             [test]
-compilers/nqp/t/24-scalar_context.t                         [test]
-compilers/nqp/t/25-list_context.t                           [test]
-compilers/nqp/t/26-method_ops.t                             [test]
-compilers/nqp/t/27-ternary.t                                [test]
-compilers/nqp/t/28-return.t                                 [test]
-compilers/nqp/t/29-self.t                                   [test]
-compilers/nqp/t/30-subclass.t                               [test]
-compilers/nqp/t/harness                                     [test]
 compilers/pct/Defines.mak                                   [pct]
 compilers/pct/PCT.pir                                       [pct]
 compilers/pct/README.pod                                    []doc
@@ -225,8 +158,6 @@
 config/auto/backtrace/test_dlinfo_c.in                      []
 config/auto/byteorder.pm                                    []
 config/auto/byteorder/test_c.in                             []
-config/auto/cgoto.pm                                        []
-config/auto/cgoto/test_c.in                                 []
 config/auto/cpu.pm                                          []
 config/auto/cpu/i386/auto.pm                                []
 config/auto/cpu/i386/test_gcc_cmpxchg_c.in                  []
@@ -235,8 +166,6 @@
 config/auto/cpu/sun4/auto.pm                                []
 config/auto/cpu/sun4/test_atomic_c.in                       []
 config/auto/cpu/x86_64/auto.pm                              []
-config/auto/crypto.pm                                       []
-config/auto/crypto/crypto_c.in                              []
 config/auto/ctags.pm                                        []
 config/auto/env.pm                                          []
 config/auto/env/test_setenv_c.in                            []
@@ -250,8 +179,6 @@
 config/auto/gc/test_c.in                                    []
 config/auto/gcc.pm                                          []
 config/auto/gcc/test_c.in                                   []
-config/auto/gdbm.pm                                         []
-config/auto/gdbm/gdbm_c.in                                  []
 config/auto/gettext.pm                                      []
 config/auto/gettext/gettext_c.in                            []
 config/auto/glibc.pm                                        []
@@ -303,6 +230,8 @@
 config/auto/va_ptr/test_c.in                                []
 config/auto/warnings.pm                                     []
 config/auto/warnings/test_c.in                              []
+config/auto/zlib.pm                                         []
+config/auto/zlib/zlib_c.in                                  []
 config/gen/config_h.pm                                      []
 config/gen/config_h/config_h.in                             []
 config/gen/config_h/feature_h.in                            []
@@ -313,9 +242,6 @@
 config/gen/config_pm/config_pir.in                          []
 config/gen/config_pm/myconfig.in                            []
 config/gen/core_pmcs.pm                                     []
-config/gen/crypto.pm                                        []
-config/gen/crypto/digest_pmc.in                             []
-config/gen/crypto/digest_t.in                               []
 config/gen/makefiles.pm                                     []
 config/gen/makefiles/docs.in                                []
 config/gen/makefiles/dynpmc.in                              []
@@ -925,15 +851,6 @@
 ext/Parrot-Embed/tools/check_embed_coverage.pl              []
 ext/Parrot-Embed/tools/write_typemap.pl                     []
 ext/Parrot-Embed/typemap                                    []
-ext/SQLite3/DBDI.pm                                         []
-ext/SQLite3/DBDI/Driver/SQLite3.pm                          []
-ext/SQLite3/Makefile.PL                                     []
-ext/SQLite3/Makefile.in                                     []
-ext/SQLite3/SQLite3.pir                                     []
-ext/SQLite3/gen_sqlite3.pl                                  []
-ext/SQLite3/t/test.p6                                       [test]
-ext/SQLite3/test.pir                                        []
-ext/nqp-rx/.gitignore                                       []
 ext/nqp-rx/CREDITS                                          []
 ext/nqp-rx/Defines.mak                                      []
 ext/nqp-rx/LICENSE                                          []
@@ -1124,10 +1041,6 @@
 lib/Parrot/Op.pm                                            [devel]lib
 lib/Parrot/OpTrans.pm                                       [devel]lib
 lib/Parrot/OpTrans/C.pm                                     [devel]lib
-lib/Parrot/OpTrans/CGP.pm                                   [devel]lib
-lib/Parrot/OpTrans/CGoto.pm                                 [devel]lib
-lib/Parrot/OpTrans/CPrederef.pm                             [devel]lib
-lib/Parrot/OpTrans/CSwitch.pm                               [devel]lib
 lib/Parrot/Ops2c/Auxiliary.pm                               [devel]lib
 lib/Parrot/Ops2c/Utils.pm                                   [devel]lib
 lib/Parrot/Ops2pm.pm                                        [devel]lib
@@ -1261,7 +1174,6 @@
 runtime/parrot/library/SDL/Sprite.pir                       [library]
 runtime/parrot/library/SDL/StopWatch.pir                    [library]
 runtime/parrot/library/SDL/Surface.pir                      [library]
-runtime/parrot/library/SQLite3.pir                          [library]
 runtime/parrot/library/Stream/Base.pir                      [library]
 runtime/parrot/library/Stream/Combiner.pir                  [library]
 runtime/parrot/library/Stream/Coroutine.pir                 [library]
@@ -1324,7 +1236,7 @@
 src/dynpmc/ext.pir                                          []
 src/dynpmc/foo.pmc                                          []
 src/dynpmc/foo2.pmc                                         []
-src/dynpmc/gdbmhash.pmc                                     []
+src/dynpmc/gziphandle.pmc                                   []
 src/dynpmc/main.pasm                                        []
 src/dynpmc/pccmethod_test.pmc                               []
 src/dynpmc/rational.pmc                                     []
@@ -1473,7 +1385,6 @@
 src/pmc/resizableintegerarray.pmc                           []
 src/pmc/resizablepmcarray.pmc                               []
 src/pmc/resizablestringarray.pmc                            []
-src/pmc/retcontinuation.pmc                                 []
 src/pmc/role.pmc                                            []
 src/pmc/scalar.pmc                                          []
 src/pmc/scheduler.pmc                                       []
@@ -1560,6 +1471,8 @@
 t/codingstd/svn_id.t                                        [test]
 t/codingstd/tabs.t                                          [test]
 t/codingstd/trailing_space.t                                [test]
+t/compilers/data_json/from_parrot.t                         [test]
+t/compilers/data_json/to_parrot.t                           [test]
 t/compilers/imcc/imcpasm/cfg.t                              [test]
 t/compilers/imcc/imcpasm/opt0.t                             [test]
 t/compilers/imcc/imcpasm/opt1.t                             [test]
@@ -1589,8 +1502,6 @@
 t/compilers/imcc/syn/symbols.t                              [test]
 t/compilers/imcc/syn/tail.t                                 [test]
 t/compilers/imcc/syn/veracity.t                             [test]
-t/compilers/json/from_parrot.t                              [test]
-t/compilers/json/to_parrot.t                                [test]
 t/compilers/pct/complete_workflow.t                         [test]
 t/compilers/pct/past.t                                      [test]
 t/compilers/pct/pct_hllcompiler.t                           [test]
@@ -1696,13 +1607,12 @@
 t/configure/testlib/verbosefoobar                           [test]
 t/distro/file_metadata.t                                    [test]
 t/distro/manifest.t                                         [test]
-t/distro/meta_yml.t                                         [test]
 t/dynoplibs/math.t                                          [test]
 t/dynoplibs/obscure.t                                       [test]
 t/dynpmc/dynlexpad.t                                        [test]
 t/dynpmc/foo.t                                              [test]
 t/dynpmc/foo2.t                                             [test]
-t/dynpmc/gdbmhash.t                                         [test]
+t/dynpmc/gziphandle.t                                       [test]
 t/dynpmc/pccmethod_test.t                                   [test]
 t/dynpmc/rational.t                                         [test]
 t/dynpmc/rotest.t                                           [test]
@@ -1721,6 +1631,7 @@
 t/examples/subs.t                                           [test]
 t/examples/tutorial.t                                       [test]
 t/harness                                                   [test]
+t/harness.pir                                               [test]
 t/include/fp_equality.t                                     [test]
 t/library/cgi_query_hash.t                                  [test]
 t/library/configure.t                                       [test]
@@ -1731,6 +1642,7 @@
 t/library/iter.t                                            [test]
 t/library/md5.t                                             [test]
 t/library/mime_base64.t                                     [test]
+t/library/osutils.t                                         [test]
 t/library/p6object.t                                        [test]
 t/library/parrotlib.t                                       [test]
 t/library/pcre.t                                            [test]
@@ -1956,7 +1868,6 @@
 t/pmc/resizableintegerarray.t                               [test]
 t/pmc/resizablepmcarray.t                                   [test]
 t/pmc/resizablestringarray.t                                [test]
-t/pmc/retcontinuation.t                                     [test]
 t/pmc/ro.t                                                  [test]
 t/pmc/role.t                                                [test]
 t/pmc/scalar.t                                              [test]
@@ -1995,16 +1906,13 @@
 t/steps/auto/attributes-01.t                                [test]
 t/steps/auto/backtrace-01.t                                 [test]
 t/steps/auto/byteorder-01.t                                 [test]
-t/steps/auto/cgoto-01.t                                     [test]
 t/steps/auto/cpu-01.t                                       [test]
-t/steps/auto/crypto-01.t                                    [test]
 t/steps/auto/ctags-01.t                                     [test]
 t/steps/auto/env-01.t                                       [test]
 t/steps/auto/format-01.t                                    [test]
 t/steps/auto/frames-01.t                                    [test]
 t/steps/auto/gc-01.t                                        [test]
 t/steps/auto/gcc-01.t                                       [test]
-t/steps/auto/gdbm-01.t                                      [test]
 t/steps/auto/gettext-01.t                                   [test]
 t/steps/auto/glibc-01.t                                     [test]
 t/steps/auto/gmp-01.t                                       [test]
@@ -2032,6 +1940,7 @@
 t/steps/auto/thread-01.t                                    [test]
 t/steps/auto/va_ptr-01.t                                    [test]
 t/steps/auto/warnings-01.t                                  [test]
+t/steps/auto/zlib-01.t                                      [test]
 t/steps/gen/config_h-01.t                                   [test]
 t/steps/gen/config_pm-01.t                                  [test]
 t/steps/gen/core_pmcs-01.t                                  [test]

Modified: branches/compact_pool_revamp/MANIFEST.SKIP
==============================================================================
--- branches/compact_pool_revamp/MANIFEST.SKIP	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/MANIFEST.SKIP	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Apr 15 17:41:44 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat Apr 24 05:11:30 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -188,37 +188,6 @@
 ^compilers/imcc/imcparser\.h/
 ^compilers/imcc/imcparser\.output$
 ^compilers/imcc/imcparser\.output/
-# generated from svn:ignore of 'compilers/json/'
-^compilers/json/JSON\.pbc$
-^compilers/json/JSON\.pbc/
-# generated from svn:ignore of 'compilers/json/JSON/'
-^compilers/json/JSON/.*\.pbc$
-^compilers/json/JSON/.*\.pbc/
-^compilers/json/JSON/.*\.pir$
-^compilers/json/JSON/.*\.pir/
-# generated from svn:ignore of 'compilers/ncigen/'
-^compilers/ncigen/Makefile$
-^compilers/ncigen/Makefile/
-^compilers/ncigen/ncigen\.pbc$
-^compilers/ncigen/ncigen\.pbc/
-# generated from svn:ignore of 'compilers/ncigen/src/'
-^compilers/ncigen/src/gen_actions\.pir$
-^compilers/ncigen/src/gen_actions\.pir/
-^compilers/ncigen/src/gen_builtins\.pir$
-^compilers/ncigen/src/gen_builtins\.pir/
-^compilers/ncigen/src/gen_grammar\.pir$
-^compilers/ncigen/src/gen_grammar\.pir/
-# generated from svn:ignore of 'compilers/nqp/'
-^compilers/nqp/nqp\.pbc$
-^compilers/nqp/nqp\.pbc/
-# generated from svn:ignore of 'compilers/nqp/bootstrap/'
-^compilers/nqp/bootstrap/gen_actions\.pir$
-^compilers/nqp/bootstrap/gen_actions\.pir/
-^compilers/nqp/bootstrap/nqp\.pbc$
-^compilers/nqp/bootstrap/nqp\.pbc/
-# generated from svn:ignore of 'compilers/nqp/src/'
-^compilers/nqp/src/Grammar_gen\.pir$
-^compilers/nqp/src/Grammar_gen\.pir/
 # generated from svn:ignore of 'compilers/pct/src/PAST/'
 ^compilers/pct/src/PAST/.*\.pbc$
 ^compilers/pct/src/PAST/.*\.pbc/
@@ -554,6 +523,9 @@
 ^runtime/parrot/include/.*\.pasm/
 ^runtime/parrot/include/.*\.pbc$
 ^runtime/parrot/include/.*\.pbc/
+# generated from svn:ignore of 'runtime/parrot/languages/'
+^runtime/parrot/languages/data_json$
+^runtime/parrot/languages/data_json/
 # generated from svn:ignore of 'runtime/parrot/library/'
 ^runtime/parrot/library/.*\.pbc$
 ^runtime/parrot/library/.*\.pbc/
@@ -781,8 +753,6 @@
 # generated from svn:ignore of 'src/gc/'
 ^src/gc/.*\.bundle$
 ^src/gc/.*\.bundle/
-^src/gc/.*\.c$
-^src/gc/.*\.c/
 ^src/gc/.*\.def$
 ^src/gc/.*\.def/
 ^src/gc/.*\.dll$
@@ -892,6 +862,13 @@
 ^t/benchmark/.*\.pasm/
 ^t/benchmark/.*\.pir$
 ^t/benchmark/.*\.pir/
+# generated from svn:ignore of 't/compilers/data_json/'
+^t/compilers/data_json/.*\.pbc$
+^t/compilers/data_json/.*\.pbc/
+^t/compilers/data_json/.*\.pir$
+^t/compilers/data_json/.*\.pir/
+^t/compilers/data_json/.*_pbcexe$
+^t/compilers/data_json/.*_pbcexe/
 # generated from svn:ignore of 't/compilers/imcc/'
 ^t/compilers/imcc/.*\.pbc$
 ^t/compilers/imcc/.*\.pbc/
@@ -922,13 +899,6 @@
 ^t/compilers/imcc/syn/.*\.pir/
 ^t/compilers/imcc/syn/.*_pbcexe.*$
 ^t/compilers/imcc/syn/.*_pbcexe.*/
-# generated from svn:ignore of 't/compilers/json/'
-^t/compilers/json/.*\.pbc$
-^t/compilers/json/.*\.pbc/
-^t/compilers/json/.*\.pir$
-^t/compilers/json/.*\.pir/
-^t/compilers/json/.*_pbcexe$
-^t/compilers/json/.*_pbcexe/
 # generated from svn:ignore of 't/compilers/pct/'
 ^t/compilers/pct/.*\.pbc$
 ^t/compilers/pct/.*\.pbc/

Modified: branches/compact_pool_revamp/MANIFEST.generated
==============================================================================
--- branches/compact_pool_revamp/MANIFEST.generated	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/MANIFEST.generated	Mon Apr 26 06:15:29 2010	(r46022)
@@ -2,16 +2,12 @@
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
 # Please re-sort this file after *EVERY* modification
-blib/lib/libparrot.2.2.0.dylib                    [main]lib
+blib/lib/libparrot.2.3.0.dylib                    [main]lib
 blib/lib/libparrot.a                              [main]lib
 blib/lib/libparrot.dylib                          [main]lib
-blib/lib/libparrot.so.2.2.0                       [main]lib
+blib/lib/libparrot.so.2.3.0                       [main]lib
 blib/lib/libparrot.so                             [main]lib
 compilers/data_json/data_json.pbc                 [data_json]
-compilers/json/JSON.pbc                           [json]
-compilers/json/JSON/grammar.pbc                   [json]
-compilers/json/JSON/pge2pir.pbc                   [json]
-compilers/nqp/nqp.pbc                             [nqp]
 config/gen/call_list/opengl.in                    []
 docs/ops/bit.pod                                  [doc]
 docs/ops/cmp.pod                                  [doc]
@@ -37,10 +33,7 @@
 include/parrot/extend_vtable.h                    [main]include
 include/parrot/feature.h                          [main]include
 include/parrot/has_header.h                       [main]include
-include/parrot/oplib/core_ops_cg.h                [main]include
-include/parrot/oplib/core_ops_cgp.h               [main]include
 include/parrot/oplib/core_ops.h                   [main]include
-include/parrot/oplib/core_ops_switch.h            [main]include
 include/parrot/oplib/ops.h                        [main]include
 include/parrot/pbcversion.h                       [devel]include
 include/parrot/platform.h                         [main]include
@@ -75,30 +68,18 @@
 lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm                [devel]lib
 lib/Parrot/PMC.pm                                 [devel]lib
 parrot.pc                                         [main]pkgconfig
-runtime/parrot/dynext/digest_group.bundle         [library]
-runtime/parrot/dynext/digest_group.dll            [library]
-runtime/parrot/dynext/digest_group.dylib          [library]
-runtime/parrot/dynext/digest_group.so             [library]
 runtime/parrot/dynext/dynlexpad.bundle            [library]
 runtime/parrot/dynext/dynlexpad.dll               [library]
 runtime/parrot/dynext/dynlexpad.dylib             [library]
 runtime/parrot/dynext/dynlexpad.so                [library]
-runtime/parrot/dynext/gdbmhash.bundle             [library]
-runtime/parrot/dynext/gdbmhash.dll                [library]
-runtime/parrot/dynext/gdbmhash.dylib              [library]
-runtime/parrot/dynext/gdbmhash.so                 [library]
+runtime/parrot/dynext/gziphandle.bundle           [library]
+runtime/parrot/dynext/gziphandle.dll              [library]
+runtime/parrot/dynext/gziphandle.dylib            [library]
+runtime/parrot/dynext/gziphandle.so               [library]
 runtime/parrot/dynext/libglutcb.bundle            [library]
 runtime/parrot/dynext/libglutcb.dll               [library]
 runtime/parrot/dynext/libglutcb.dylib             [library]
 runtime/parrot/dynext/libglutcb.so                [library]
-runtime/parrot/dynext/libnci_test.bundle          [library]
-runtime/parrot/dynext/libnci_test.dll             [library]
-runtime/parrot/dynext/libnci_test.dylib           [library]
-runtime/parrot/dynext/libnci_test.so              [library]
-runtime/parrot/dynext/match_group.bundle          [library]
-runtime/parrot/dynext/match_group.dll             [library]
-runtime/parrot/dynext/match_group.dylib           [library]
-runtime/parrot/dynext/match_group.so              [library]
 runtime/parrot/dynext/math_ops.so                 [library]
 runtime/parrot/dynext/math_ops.bundle             [library]
 runtime/parrot/dynext/math_ops.dll                [library]
@@ -111,10 +92,6 @@
 runtime/parrot/dynext/rational.dll                [library]
 runtime/parrot/dynext/rational.dylib              [library]
 runtime/parrot/dynext/rational.so                 [library]
-runtime/parrot/dynext/subproxy.bundle             [library]
-runtime/parrot/dynext/subproxy.dll                [library]
-runtime/parrot/dynext/subproxy.dylib              [library]
-runtime/parrot/dynext/subproxy.so                 [library]
 runtime/parrot/include/call_bits.pasm             [main]
 runtime/parrot/include/cclass.pasm                [main]
 runtime/parrot/include/config.fpmc                []
@@ -229,8 +206,6 @@
 src/jit_emit.h                                    []
 src/nci.c                                         []
 src/null_config.c                                 []
-src/ops/core_ops_cgp.c                            []
-src/ops/core_ops_switch.c                         []
 src/parrot_config.c                               []
 src/pmc/boolean.dump                              [devel]src
 src/pmc/continuation.dump                         [devel]src

Deleted: branches/compact_pool_revamp/META.yml
==============================================================================
--- branches/compact_pool_revamp/META.yml	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,41 +0,0 @@
-# $Id$
-#
-# This file describes the CPAN distribution for Parrot.
-# See http://module-build.sourceforge.net/META-spec-current.html for details.
----
-name: parrot
-version: 2.2.0
-author: parrot-dev at lists.parrot.org
-abstract: a virtual machine designed for dynamic languages
-license: artistic2
-no_index:
-    directory:
-        - config
-        - languages
-        - lib
-        - lib/Digest
-        - lib/File
-        - lib/Parse
-        - lib/Perl/Critic
-        - lib/Pod
-        - t
-        - tools
-    file:
-        - lib/IO/CaptureOutput.pm
-        - lib/SmartLink.pm
-    package:
-        - DB
-        - Parrot::Test::DB
-        - Parrot::Distribution
-        - Parrot::Docs::HTMLPage
-        - Parrot::OpTrans::CGP
-        - Parrot::OpTrans::CSwitch
-        - Parrot::OpsFile
-requires:
-  Storable: 2.12
-  perl: 5.8.4
-resources:
-    homepage:   'http://parrot.org/'
-    license:    'http://opensource.org/licenses/artistic-license-2.0.php'
-    bugtracker: 'https://trac.parrot.org/parrot/'
-generated_by: Humans

Deleted: branches/compact_pool_revamp/Makefile.PL
==============================================================================
--- branches/compact_pool_revamp/Makefile.PL	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,45 +0,0 @@
-#! perl
-
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Makefile.PL - CPAN installer passthrough to configure Parrot
-
-=head1 DESCRIPTION
-
-This file exists only to allow users of a CPAN shell to configure and build
-Parrot.  If you're reading this yourself, use F<Configure.pl>
-
-=cut
-
-use strict;
-use warnings;
-
-BEGIN { require 5.008 }
-
-my %translations =
-(
-    INSTALL_BASE => 'prefix',
-    LIB          => 'lib',
-    PREFIX       => 'prefix',
-);
-
-my @commands;
-
-for my $arg (@ARGV)
-{
-    my ($name, $value) = split /=/, $arg, 2;
-    next unless exists $translations{ $name };
-    push @commands, "--$name=$value";
-}
-
-system( $^X, 'Configure.pl', @commands );
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: branches/compact_pool_revamp/NEWS
==============================================================================
--- branches/compact_pool_revamp/NEWS	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/NEWS	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,25 +1,29 @@
 # $Id$
 
+New in 2.4.0
+- Deprecations
+  + Tools to distribute on CPAN were removed
+
 New in 2.3.0
-- Features
 - Core
   + Allow passing parameters to the dynamic linker ('dlopen' improved)
   + loadlib opcode added
-  + Merge of pcc_hackatron branch
+  + Calling conventions are now much more consistent, and follows natural
+    semantics of handling arguments and return values
   + Recursive make for src/dynpmc removed
   + Datatype STRINGNULL for a single Null STRING added
-- Compilers
-- Deprecations
-- API
+  + config_lib.pasm replaced with config_lib.pir
 - Platforms
   + Improved handling of new compilers
-- Bugfix
-- Tests
+  + Cygwin packages will be updated again with Parrot releases
+  + Fedora packages add desktop files
+  + gzip and bzip2 compressed tar files for releases
 - Tools
   + tapir executable added; tapir is a TAP test harness
-- Documentation
+  + Added TAP options --merge --ignore-exit
 - Miscellaneous
   + 3 month cycle for supported releases
+  + Review and vote of GSoC applications
 
 New in 2.2.0
 - Core changes

Modified: branches/compact_pool_revamp/PBC_COMPAT
==============================================================================
--- branches/compact_pool_revamp/PBC_COMPAT	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/PBC_COMPAT	Mon Apr 26 06:15:29 2010	(r46022)
@@ -27,6 +27,8 @@
 
 # please insert tab separated entries at the top of the list
 
+6.7	2010.04.22	coke	remove RetContinuation PMC
+6.6	2010.04.17	bacek	add replace op
 6.5	2010.03.09	cotto	remove cpu_ret op
 6.4	2010.03.02	cotto	remove prederef__ and reserved
 6.3	2010.02.16	whiteknight	Add OpLib and Opcode PMCs

Modified: branches/compact_pool_revamp/README
==============================================================================
--- branches/compact_pool_revamp/README	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/README	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,4 @@
-This is Parrot, version 2.2.0
+This is Parrot, version 2.3.0
 ------------------------------
 
 Parrot is Copyright (C) 2001-2010, Parrot Foundation.
@@ -92,14 +92,6 @@
 
     perldoc -F docs/intro.pod
 
-NOTES
------
-
-On some older computers with little RAM, the computed-goto dispatch core
-(ops/core_ops_cg.c) may take a while to compile or may fail to compile at all.
-You can pass a flag to Configure.pl (--cgoto=0) to disable the computed-goto
-core, at a slight cost in runtime speed.
-
 CHANGES
 -------
 

Modified: branches/compact_pool_revamp/README_cygwin.pod
==============================================================================
--- branches/compact_pool_revamp/README_cygwin.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/README_cygwin.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -25,22 +25,22 @@
 
 Runtime requirements:
 
-  libreadline6 ncurses libintl8 libgmp3 libgdbm4
+  libreadline6 ncurses libintl8 libgmp3
 
 Optional requirements:
 
-  libicu38 libpq5 openssl
+  libicu38 libpq5
 
   for opengl: w32api opengl or libglut3 xorg-x11-base xorg-x11-bin-dlls
 
 Build requirements:
 
   gcc make perl parrot readline libncurses-devel libgmp-devel
-  libgdbm-devel pcre-devel
+  pcre-devel
 
 Optional build requirements:
 
-  libicu-devel openssl-devel
+  libicu-devel
 
   for Cygwin/X opengl: freeglut libglut-devel xorg-x11-devel
 

Modified: branches/compact_pool_revamp/README_win32.pod
==============================================================================
--- branches/compact_pool_revamp/README_win32.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/README_win32.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -85,15 +85,9 @@
 
 The availability of these libraries is checked by Configure.pl.
 
-B<libcrypto> - a part of libssl / OpenSSL
-L<http://gnuwin32.sourceforge.net/>
-
 B<gettext> - library and tools for native language support
 L<http://gnuwin32.sourceforge.net/>
 
-B<gdbm> - GNU database manager
-L<http://gnuwin32.sourceforge.net/>
-
 B<GMP> - GNU multiple precision arithmetic library
 L<http://developer.berlios.de/projects/win32gmp/>
 

Modified: branches/compact_pool_revamp/VERSION
==============================================================================
--- branches/compact_pool_revamp/VERSION	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/VERSION	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1 +1 @@
-2.2.0
+2.3.0

Modified: branches/compact_pool_revamp/compilers/data_json/Defines.mak
==============================================================================
--- branches/compact_pool_revamp/compilers/data_json/Defines.mak	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/data_json/Defines.mak	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,6 +1,6 @@
-DATA_JSON_LIB_PBCS = $(LIBRARY_DIR)/data_json.pbc
+DATA_JSON_LIB_PBCS = runtime/parrot/languages/data_json/data_json.pbc
 
-DATA_JSON_CLEANUPS = $(LIBRARY_DIR)/data_json.pbc \
+DATA_JSON_CLEANUPS = $(DATA_JSON_LIB_PBCS) \
     compilers/data_json/data_json.pbc \
     compilers/data_json/data_json/grammar.pir \
     compilers/data_json/data_json/pge2pir.pir

Modified: branches/compact_pool_revamp/compilers/data_json/Rules.mak
==============================================================================
--- branches/compact_pool_revamp/compilers/data_json/Rules.mak	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/data_json/Rules.mak	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,5 @@
-$(LIBRARY_DIR)/data_json.pbc: compilers/data_json/data_json.pbc
+runtime/parrot/languages/data_json/data_json.pbc: compilers/data_json/data_json.pbc
+	$(MKPATH) runtime/parrot/languages/data_json
 	$(CP) compilers/data_json/data_json.pbc $@
 
 compilers/data_json/data_json.pbc : \

Modified: branches/compact_pool_revamp/compilers/imcc/Rules.in
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/Rules.in	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/Rules.in	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,5 @@
 compilers/imcc/pcc$(O) : \
+    compilers/imcc/pcc.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -12,6 +13,7 @@
     $(PARROT_H_HEADERS)
 
 compilers/imcc/instructions$(O) : \
+    compilers/imcc/instructions.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -25,6 +27,7 @@
     $(PARROT_H_HEADERS)
 
 compilers/imcc/pbc$(O) : \
+    compilers/imcc/pbc.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -38,6 +41,7 @@
     include/pmc/pmc_sub.h
 
 compilers/imcc/parser_util$(O) : \
+    compilers/imcc/parser_util.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -56,6 +60,7 @@
     include/pmc/pmc_sub.h
 
 compilers/imcc/imc$(O) : \
+    compilers/imcc/imc.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -68,6 +73,7 @@
     $(PARROT_H_HEADERS)
 
 compilers/imcc/cfg$(O) : \
+    compilers/imcc/cfg.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -80,6 +86,7 @@
     $(PARROT_H_HEADERS)
 
 compilers/imcc/debug$(O) : \
+    compilers/imcc/debug.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -126,6 +133,7 @@
 	$(CC) $(CFLAGS) @optimize::compilers/imcc/imcparser.c@ @ccwarn::compilers/imcc/imcparser.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/imcparser.c
 
 compilers/imcc/main$(O) : \
+    compilers/imcc/main.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -159,6 +167,7 @@
 	$(CC) $(CFLAGS) @optimize::compilers/imcc/optimizer.c@ @ccwarn::compilers/imcc/optimizer.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/optimizer.c
 
 compilers/imcc/reg_alloc$(O) : \
+    compilers/imcc/reg_alloc.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -171,6 +180,7 @@
     $(PARROT_H_HEADERS)
 
 compilers/imcc/sets$(O) : \
+    compilers/imcc/sets.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \
@@ -182,6 +192,7 @@
     $(PARROT_H_HEADERS)
 
 compilers/imcc/symreg$(O) : \
+    compilers/imcc/symreg.c \
     compilers/imcc/cfg.h \
     compilers/imcc/debug.h \
     compilers/imcc/imc.h \

Modified: branches/compact_pool_revamp/compilers/imcc/imcc.l
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/imcc.l	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/imcc.l	Mon Apr 26 06:15:29 2010	(r46022)
@@ -87,6 +87,8 @@
 
 static void include_file(PARROT_INTERP, char *file_name, ARGMOD(void *yyscanner));
 
+static int handle_identifier(PARROT_INTERP, YYSTYPE *valp, ARGIN(const char *id));
+
 #define YY_DECL int yylex(YYSTYPE *valp, yyscan_t yyscanner, PARROT_INTERP)
 
 #define YYCHOP() (yytext[--yyleng] = '\0')
@@ -133,7 +135,7 @@
 STRINGCONSTANT  {SQ_STRING}|{DQ_STRING}
 SQ_STRING       \'[^'\n]*\'
 RANKSPEC        \[[,]*\]
-EOL        \r?\n
+EOL             \r?\n
 WS              [\t\f\r\x1a ]
 SP              [ ]
 
@@ -167,7 +169,10 @@
             return 0;
         }
 
+<*>^{WS}*            { IMCC_INFO(interp)->line++; }
+
 <heredoc1>.*{EOL} {
+            IMCC_INFO(interp)->line++;
             IMCC_INFO(interp)->frames->heredoc_rest = mem_sys_strdup(yytext);
             BEGIN(heredoc2);
     }
@@ -177,7 +182,6 @@
          * arrange them before all wildcard state matches */
 
         /* Newline in the heredoc. Realloc and cat on. */
-        IMCC_INFO(interp)->line++;
         IMCC_INFO(interp)->heredoc_content =
             (char*)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
                             strlen(IMCC_INFO(interp)->heredoc_content) +
@@ -187,6 +191,7 @@
     }
 
 <heredoc2>.* {
+        IMCC_INFO(interp)->line++;
         /* Are we at the end of the heredoc? */
         if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
             /* End of the heredoc. */
@@ -209,7 +214,7 @@
             yy_pop_state(yyscanner);
             yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest, yyscanner);
 
-            /* the EOF rule will increment the line number; decrement here */
+            /* not sure we need this decrement; more testing needed */
             IMCC_INFO(interp)->line--;
             return STRINGC;
         }
@@ -252,7 +257,6 @@
 
 <cmt4>.*{EOL} {
         yy_pop_state(yyscanner);
-        IMCC_INFO(interp)->line++;
     }
 
 <INITIAL,emit>{EOL} {
@@ -260,7 +264,6 @@
             BEGIN(INITIAL);
 
         IMCC_INFO(interp)->expect_pasm = 0;
-        IMCC_INFO(interp)->line++;
 
         return '\n';
     }
@@ -276,7 +279,6 @@
             yy_pop_state(yyscanner);
 
         IMCC_INFO(interp)->expect_pasm = 0;
-        IMCC_INFO(interp)->line++;
 
         return '\n';
     }
@@ -288,19 +290,20 @@
 }
 
 <INITIAL,emit,macro>^"=" {
+        IMCC_INFO(interp)->line++;
         IMCC_INFO(interp)->in_pod = 1;
         yy_push_state(pod, yyscanner);
     }
 
 <pod>^"=cut"{EOL} {
+        IMCC_INFO(interp)->line++;
         IMCC_INFO(interp)->in_pod = 0;
         yy_pop_state(yyscanner);
-        IMCC_INFO(interp)->line++;
     }
 
-<pod>.*         { /*ignore*/ }
+<pod>.* { IMCC_INFO(interp)->line++; }
 
-<pod>{EOL}      { IMCC_INFO(interp)->line++; }
+<pod>{EOL}      { /* ignore */ }
 
 <*>".line"               return TK_LINE;
 <*>".file"               return TK_FILE;
@@ -337,7 +340,7 @@
 ":instanceof"              return SUB_INSTANCE_OF;
 ":subid"                   return SUBID;
 
-".get_result"                  return RESULT;
+".get_result"              return RESULT;
 ".get_results"             return GET_RESULTS;
 ".yield"                   return YIELDT;
 ".set_yield"               return SET_YIELD;
@@ -447,6 +450,8 @@
     }
 
 <emit,INITIAL>".macro" {
+        /* the initial whitespace catcher misses this one */
+        IMCC_INFO(interp)->line++;
         return read_macro(valp, interp, yyscanner);
     }
 
@@ -485,7 +490,6 @@
     }
 
 <emit,INITIAL>{ID}"$" {
-
         if (valp) {
             char *label;
             size_t len;
@@ -635,34 +639,8 @@
         return REG;
     }
 
-<emit,INITIAL>{ID} {
-        if (!IMCC_INFO(interp)->is_def) {
-            SymReg *r = find_sym(interp, yytext);
-
-            if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
-                valp->sr = r;
-                return VAR;
-            }
-
-            if (IMCC_INFO(interp)->cur_unit
-            &&  IMCC_INFO(interp)->cur_unit->instructions
-            && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
-            &&  r->pcc_sub)
-            {
-                if (((r->pcc_sub->pragma & P_METHOD)
-                ||   (IMCC_INFO(interp)->cur_unit->is_vtable_method))
-                &&   !strcmp(yytext, "self")) {
-                    valp->sr = mk_ident(interp, "self", 'P');
-                    IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
-                    return VAR;
-                }
-            }
-        }
-
-        valp->s = mem_sys_strdup(yytext);
-        return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
-    }
 
+<emit,INITIAL>{ID} { return handle_identifier(interp, valp, yytext); }
 
 <emit,INITIAL>{WS}+ /* skip */;
 
@@ -684,10 +662,13 @@
 
 <INITIAL><<EOF>> yyterminate();
 
-<macro>".endm"         DUP_AND_RET(valp, ENDM);
+<macro>".endm"         {
+        /* the initial whitespace catcher misses this one */
+        IMCC_INFO(interp)->line++;
+        DUP_AND_RET(valp, ENDM);
+}
 
 <macro>{WS}*{EOL} {
-        IMCC_INFO(interp)->line++;
         DUP_AND_RET(valp, '\n');
     }
 
@@ -745,7 +726,6 @@
     return IDENTIFIER;
 }
 
-<macro>^{WS}+                       /* skip leading ws */;
 <macro>{WS}+                        DUP_AND_RET(valp, ' ');
 <macro>[SNIP]{DIGITS}               DUP_AND_RET(valp, REG);
 <macro>"$"[SNIP]{DIGITS}            DUP_AND_RET(valp, REG);
@@ -814,6 +794,9 @@
     frame->s.next             = (parser_state_t *)IMCC_INFO(interp)->frames;
     IMCC_INFO(interp)->frames = frame;
 
+    /* start at the effective *starting line* of the macro */
+    IMCC_INFO(interp)->line   = frame->s.line - 2;
+
     yy_scan_string(expansion, yyscanner);
 }
 
@@ -1069,9 +1052,6 @@
     IMCC_INFO(interp)->macro_buffer   = NULL;
     IMCC_INFO(interp)->cur_macro_name = NULL;
 
-    /* the ENDM rule doesn't set the line number */
-    IMCC_INFO(interp)->line--;
-
     return MACRO;
 }
 
@@ -1232,8 +1212,6 @@
             }
         }
 
-        /* let the normal EOF rules match line numbers */
-        IMCC_INFO(interp)->line = m->line - 1;
         scan_string(frame, m->expansion, yyscanner);
 
         return 1;
@@ -1283,15 +1261,19 @@
 scan_file(PARROT_INTERP, macro_frame_t *frame, FILE *file, void *yyscanner)
 {
     yyguts_t * const yyg      = (yyguts_t *)yyscanner;
+    const      int   oldline  = IMCC_INFO(interp)->line;
     frame->buffer             = YY_CURRENT_BUFFER;
     frame->s.next             = (parser_state_t *)IMCC_INFO(interp)->frames;
     IMCC_INFO(interp)->frames = frame;
     IMCC_INFO(interp)->state  = (parser_state_t *)IMCC_INFO(interp)->frames;
 
-    IMCC_INFO(interp)->line   = 1;
+    /* let the start of line rule increment this to 1 */
+    IMCC_INFO(interp)->line   = 0;
 
     yy_switch_to_buffer(yy_create_buffer(file, YY_BUF_SIZE, yyscanner),
         yyscanner);
+
+    IMCC_INFO(interp)->line   = oldline;
 }
 
 void
@@ -1469,6 +1451,36 @@
     return yyg->yy_hold_char == '\0';
 }
 
+static int
+handle_identifier(PARROT_INTERP, YYSTYPE *valp, const char *text)
+{
+    if (!IMCC_INFO(interp)->is_def) {
+        SymReg *r = find_sym(interp, text);
+
+        if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
+            valp->sr = r;
+            return VAR;
+        }
+
+        if (IMCC_INFO(interp)->cur_unit
+        &&  IMCC_INFO(interp)->cur_unit->instructions
+        && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
+        &&  r->pcc_sub)
+        {
+            if (((r->pcc_sub->pragma & P_METHOD)
+            ||   (IMCC_INFO(interp)->cur_unit->is_vtable_method))
+            &&   !strcmp(text, "self")) {
+                valp->sr = mk_ident(interp, "self", 'P');
+                IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
+                return VAR;
+            }
+        }
+    }
+
+    valp->s = mem_sys_strdup(text);
+    return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
+}
+
 /*
  * Local variables:
  *   c-file-style: "parrot"

Modified: branches/compact_pool_revamp/compilers/imcc/imcc.y
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/imcc.y	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/imcc.y	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1085,7 +1085,7 @@
 %nonassoc '\n'
 %nonassoc <t> PARAM
 
-%token <t> HLL TK_LINE TK_FILE
+%token <t> SOL HLL TK_LINE TK_FILE
 %token <t> GOTO ARG IF UNLESS PNULL SET_RETURN SET_YIELD
 %token <t> ADV_FLAT ADV_SLURPY ADV_OPTIONAL ADV_OPT_FLAG ADV_NAMED ADV_ARROW
 %token <t> NEW ADV_INVOCANT ADV_CALL_SIG
@@ -2510,26 +2510,19 @@
      * before the newline, and thus, line is the line *after* the
      * error. Instead of duplicating code for both cases (the 'newline' and
      * non-newline case, do the test twice; efficiency is not important when
-     * we have an error anyway.
-     */
+     * we have an error anyway. */
     if (!at_eof(yyscanner)) {
-        if (*chr == '\n') {
-            IMCC_INFO(interp)->line--;
-        }
-
         IMCC_warning(interp, "error:imcc:%s", s);
+
         /* don't print the current token if it is a newline */
-        if (*chr != '\n') {
+        if (*chr != '\n')
             IMCC_warning(interp, " ('%s')", chr);
-        }
-        IMCC_print_inc(interp);
-
-        if (*chr == '\n') {
-            IMCC_INFO(interp)->line++;
-        }
 
+        IMCC_print_inc(interp);
     }
-    else { /* scanner is at end of file; just to be sure, do not print "current" token. */
+
+    /* scanner is at EOF; just to be sure, don't print "current" token */
+    else {
         IMCC_warning(interp, "error:imcc:%s", s);
         IMCC_print_inc(interp);
     }

Modified: branches/compact_pool_revamp/compilers/imcc/imclexer.c
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/imclexer.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/imclexer.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -385,125 +385,127 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[1062] =
+static yyconst flex_int16_t yy_accept[1090] =
     {   0,
-        0,    0,    0,    0,    0,    0,   16,   16,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        3,    3,  149,  135,  134,   10,  134,  135,  135,   11,
-      135,  135,  135,  135,  135,  135,  115,  135,   95,  135,
-      119,  119,  135,   87,  135,   89,  133,  133,  133,  133,
-      133,  133,  133,  133,  135,  135,   14,  134,  134,  135,
-      135,  135,  135,  133,   14,  147,  142,  137,  142,  147,
-      147,  147,  147,  147,  119,  119,  147,  145,  145,  145,
-      141,  141,   14,   16,   17,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,  148,  135,    8,    8,
-
-      135,  135,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,  135,    9,  135,  135,  135,  135,  135,
-      119,  119,  135,  135,  135,  135,   12,  135,  135,  135,
-      135,  135,  119,  119,  135,  135,  135,  148,    1,  148,
-      148,  148,  148,  148,  119,  119,  148,  148,  148,    3,
-        2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,  134,    0,   10,   92,    0,  124,    0,  131,  131,
-      131,  131,  131,  100,   84,  103,    0,   93,   98,    0,
-      119,   96,   97,  118,  109,  117,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+        0,    1,    0,    1,    0,    1,   17,    1,    0,    1,
+        0,    1,    0,    1,    0,    1,    0,    1,    0,    1,
+        4,    1,  149,  136,  135,   11,  135,  136,  136,   12,
+      136,  136,  136,  136,  136,  136,  116,  136,   96,  136,
+      120,  120,  136,   88,  136,   90,  134,  134,  134,  134,
+      134,  134,  134,  134,  136,  136,    1,    1,   15,  135,
+      135,  136,  136,  136,  136,  134,    1,    1,   15,  147,
+      142,  138,  142,  147,  147,  147,  147,  147,  120,  120,
+      147,  145,  145,  145,    1,    1,   15,   17,   18,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,    1,
+
+        1,   17,  148,  136,    9,    9,  136,  136,    1,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    1,
+        6,  136,   10,  136,  136,  136,  136,  136,  120,  120,
+      136,  136,  136,    1,    1,  136,   13,  136,  136,  136,
+      136,  136,  120,  120,  136,  136,  136,    1,    1,  148,
+        2,  148,  148,  148,  148,  148,  120,  120,  148,  148,
+      148,    1,    1,    4,    3,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    1,    1,  135,    0,   11,
+       93,    0,  125,    0,  132,  132,  132,  132,  132,  101,
+       85,  104,    0,   94,   99,    0,  120,   97,   98,  119,
+
+      110,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  102,  100,
+      119,    0,    0,  124,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   82,   89,
+       92,   65,   91,   83,  115,    0,  134,  117,  133,  134,
+       75,  134,  134,  134,  134,  134,  134,  105,   86,  106,
+       87,    1,    0,  135,  118,  118,  118,  118,  118,  118,
+        0,    0,    0,    0,    1,  142,  138,  142,    0,    0,
+        0,  146,  146,  146,  146,  145,    0,  143,  145,    1,
+        1,   17,   18,   17,   17,   17,   17,   17,   17,   17,
 
-      117,  117,  101,   99,  118,    0,    0,  123,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   81,   88,   91,   64,   90,   82,  114,    0,
-      133,  116,  132,  133,   74,  133,  133,  133,  133,  133,
-      133,  104,   85,  105,   86,    0,  134,  117,  117,  117,
-      117,  117,  117,    0,    0,    0,    0,  142,  137,  142,
-        0,    0,    0,  146,  146,  146,  146,  145,    0,  143,
-      145,  141,  141,   16,   17,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,    0,    0,    8,    0,    4,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,   17,    1,   17,    0,    0,    9,    0,    1,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    1,    0,   10,
+        0,    0,    0,  125,    0,    0,    0,    0,  120,  119,
+        0,    0,  119,    0,    0,  124,    0,    0,    0,    0,
+        0,    0,    1,    1,    0,   13,    0,    0,    0,  125,
+        0,    0,    0,    0,  120,  119,    0,    0,  119,    0,
+        0,  124,    0,    0,    0,    0,    0,    0,    1,    1,
+        0,    2,    0,    0,    0,  125,    0,    0,    0,    0,
 
+      120,  119,    0,    0,  119,    0,    0,  124,    0,    0,
+        0,    0,    0,    0,    1,    1,    4,    3,    4,    4,
         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    0,    9,    0,
-        0,    0,  124,    0,    0,    0,    0,  119,  118,    0,
-        0,  118,    0,    0,  123,    0,    0,    0,    0,    0,
-        0,    0,   12,    0,    0,    0,  124,    0,    0,    0,
-        0,  119,  118,    0,    0,  118,    0,    0,  123,    0,
-        0,    0,    0,    0,    0,    0,    1,    0,    0,    0,
-      124,    0,    0,    0,    0,  119,  118,    0,    0,  118,
-        0,    0,  123,    0,    0,    0,    0,    0,    0,    3,
-        2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-       94,  127,  128,  130,  129,    0,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
-      117,  102,  118,  121,    0,  118,  122,  120,    0,    0,
+        4,    4,    4,    4,    4,    4,    4,    1,   95,  128,
+      129,  131,  130,    0,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  103,
+      119,  122,    0,  119,  123,  121,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  107,
-      106,   83,  113,    0,    0,  132,  133,   77,  133,   78,
-       79,  133,  133,  133,    0,  117,  117,    0,    0,  138,
-      144,  140,  146,  146,  146,  146,  146,  145,   16,   16,
-
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,    0,    0,    0,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    0,    0,
-        0,  118,  121,    0,  118,  122,  120,    0,    0,    0,
-        0,    0,    0,    0,    0,  118,  121,    0,  118,  122,
-      120,    0,    0,    0,    0,    0,    0,    0,    0,  118,
-      121,    0,  118,  122,  120,    0,    0,    0,    0,    0,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    0,  118,   68,  117,  117,  117,
-      117,   24,  117,  117,  117,  117,  117,   21,  117,  117,
+        0,    0,    0,    0,    0,    0,    0,  108,  107,   84,
 
-      117,  117,  117,  117,  117,  117,  117,  117,  117,   23,
-      117,  117,    0,    0,    0,    0,    0,    0,    0,   45,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  125,    0,    0,  108,    0,  126,
-        0,    0,    0,   73,   76,  133,  133,  133,  133,    0,
-      140,  146,  146,  146,  146,  145,  145,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,    0,    0,    0,    0,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    0,  118,    0,
-        0,    0,    0,  125,    0,    0,    0,    0,    0,  126,
-
-        0,    0,    0,    0,    0,    0,  118,    0,    0,    0,
-        0,  125,    0,    0,    0,    0,    0,  126,    0,    0,
-        0,    0,    0,    0,  118,    0,    0,    0,    0,  125,
-        0,    0,    0,    0,    0,  126,    0,    0,    0,    0,
-        0,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,  117,  117,   27,  117,
-      117,   19,  117,  117,  117,  117,   18,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,   43,
-        0,   59,    0,   40,    0,    0,   39,   38,    0,    0,
+      114,    0,    0,  133,  134,   78,  134,   79,   80,  134,
+      134,  134,    0,  118,  118,    0,    0,  139,  144,  141,
+      146,  146,  146,  146,  146,  145,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,    0,    0,    0,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    0,    0,    0,  119,
+      122,    0,  119,  123,  121,    0,    0,    0,    0,    0,
+        0,    0,    0,  119,  122,    0,  119,  123,  121,    0,
+        0,    0,    0,    0,    0,    0,    0,  119,  122,    0,
+      119,  123,  121,    0,    0,    0,    0,    0,    4,    4,
+
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    0,  119,   69,  118,  118,  118,  118,   25,
+      118,  118,  118,  118,  118,   22,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,   24,  118,  118,
+        0,    0,    0,    0,    0,    0,    0,   46,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  126,    0,    0,  109,    0,  127,    0,    0,
+        0,   74,   77,  134,  134,  134,  134,    0,  141,  146,
+      146,  146,  146,  145,  145,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+
+       17,    0,    0,    0,    0,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    0,  119,    0,    0,    0,
+        0,  126,    0,    0,    0,    0,    0,  127,    0,    0,
+        0,    0,    0,    0,  119,    0,    0,    0,    0,  126,
+        0,    0,    0,    0,    0,  127,    0,    0,    0,    0,
+        0,    0,  119,    0,    0,    0,    0,  126,    0,    0,
+        0,    0,    0,  127,    0,    0,    0,    0,    0,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,  118,  118,   28,  118,  118,   20,
+      118,  118,  118,  118,   19,  118,  118,  118,  118,  118,
 
-      133,  133,  133,  133,   13,    0,  136,   19,  146,   18,
-      145,  145,   16,   16,   16,   16,   15,   16,   19,   18,
-        0,    0,    4,    4,    4,    4,   19,   18,    0,    0,
-       19,   18,    0,    0,   19,   18,    0,    0,    3,    3,
-        3,    3,  117,  117,   70,  117,  117,  117,  117,  117,
-      117,  117,  117,   69,  111,  117,  117,  117,   72,  117,
-      117,  117,  117,  117,  117,   53,    0,    0,    0,    0,
-        0,   37,   63,    0,    0,    0,   44,    0,    0,   50,
-        0,    0,  133,  133,   80,   75,  146,  145,  145,   16,
-       16,    0,    0,    4,    4,    0,    0,    0,    0,    0,
-
-        0,    3,    3,  117,  117,  117,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,   55,  117,
-      117,  117,  117,    0,    0,    0,    0,   36,    0,    0,
-        0,    0,   60,    0,   46,  133,  133,  139,  145,  145,
-       16,   16,    0,    0,    4,    4,    0,    0,    0,    0,
-        0,    0,    3,    3,  117,  117,  117,  117,  117,  117,
-      117,  117,  117,  112,  117,   58,  117,  117,  117,  117,
-       31,   22,  117,  117,  117,    0,    0,    0,    0,   47,
-        0,    0,    0,    0,    0,    7,   16,    7,    4,    4,
-        0,    7,    0,    7,    0,    7,    3,    3,   20,  117,
-
-      117,  117,   26,  117,  117,  117,  117,   30,  117,  117,
-      117,   28,  117,  117,   57,   66,    0,    0,   65,   62,
-       61,   42,    0,    6,    6,    6,    6,    6,    3,  117,
-      117,  117,  117,   35,  117,  117,  117,   29,   67,  117,
-       54,   41,    0,    0,   25,  117,  117,   33,   51,  117,
-      117,   56,   49,   48,  117,   34,   52,   71,  110,   32,
-        0
+      118,  118,  118,  118,  118,  118,  118,   44,    0,   60,
+        0,   41,    0,    0,   40,   39,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  134,  134,
+      134,  134,   14,    0,  137,   20,  146,   19,  145,  145,
+       17,   17,   17,   17,   16,   17,   20,   19,    0,    0,
+        5,    5,    5,    5,   20,   19,    0,    0,   20,   19,
+        0,    0,   20,   19,    0,    0,    4,    4,    4,    4,
+      118,  118,   71,  118,  118,  118,  118,  118,  118,  118,
+      118,   70,  112,  118,  118,  118,   73,  118,  118,  118,
+      118,  118,  118,   54,    0,    0,    0,    0,    0,   38,
+
+       64,    0,    0,    0,   45,    0,    0,   51,    0,    0,
+      134,  134,   81,   76,  146,  145,  145,   17,   17,    0,
+        0,    5,    5,    0,    0,    0,    0,    0,    0,    4,
+        4,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,   56,  118,  118,  118,
+      118,    0,    0,    0,    0,   37,    0,    0,    0,    0,
+       61,    0,   47,  134,  134,  140,  145,  145,   17,   17,
+        0,    0,    5,    5,    0,    0,    0,    0,    0,    0,
+        4,    4,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  113,  118,   59,  118,  118,  118,  118,   32,   23,
+
+      118,  118,  118,    0,    0,    0,    0,   48,    0,    0,
+        0,    0,    0,    8,   17,    8,    5,    5,    0,    8,
+        0,    8,    0,    8,    4,    4,   21,  118,  118,  118,
+       27,  118,  118,  118,  118,   31,  118,  118,  118,   29,
+      118,  118,   58,   67,    0,    0,   66,   63,   62,   43,
+        0,    7,    7,    7,    7,    7,    4,  118,  118,  118,
+      118,   36,  118,  118,  118,   30,   68,  118,   55,   42,
+        0,    0,   26,  118,  118,   34,   52,  118,  118,   57,
+       50,   49,  118,   35,   53,   72,  111,   33,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -549,283 +551,287 @@
        10,   10,   10,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1213] =
+static yyconst flex_int16_t yy_base[1241] =
     {   0,
-        0, 4304,   64, 4303,  129,   81,  194, 4302,  259,    0,
-      324,    0,   72,   77,  389,    0,  454,    0,  519,    0,
-      584,    0, 4326, 6980,   98, 6980,  106, 4300,   64, 6980,
-       83, 4299,  102, 4311,   82,  633, 6980,  640,  647,  638,
-      694,  724,  729,   48,  100,  645,  703,  741,  711,  769,
-      709,  743,  777,  782,  704,  710,  771,  734,  799,  789,
-      812,  777, 4298,  798, 4277, 6980,  837, 6980,  843,  715,
-      816, 4308,  857,  863,    0,  869, 4291,  726,  885,  797,
-      890,  914, 4270,    0, 6980, 4310,  810, 4300,  903,  907,
-      942,  903, 4285, 1004, 1069, 4243, 6980,  928,  914, 1015,
-
-     4263,  641,    0,    0,  854,  970,  947, 1118,  941, 4261,
-     1180, 1245,  819,  821, 6980,  830,  934,  909, 1021, 1085,
-     1308, 1087,  927, 1370, 1435,  877, 6980,  893, 1050,  940,
-     1043, 1099, 1498, 1171,  996, 1560, 1625,  952, 6980,  979,
-     1156, 1047, 1209, 1273, 1688, 1180, 1093, 1750, 1815,    0,
-     6980, 4281,  933, 4271, 1091, 1123, 1864, 1236, 4258, 1926,
-     1991, 1151, 1096, 6980, 6980,  946, 6980,    0,    0, 1156,
-     1216, 1261, 1267, 6980, 6980, 6980, 4269, 6980, 6980, 1280,
-     1381, 6980, 6980, 1285, 6980,    0, 4246, 4226, 4232, 1013,
-     4224, 4223,  721, 4219,  947,   59,  709,  856, 4225,  671,
-
-     4228, 4219, 4239, 6980, 1313, 1105, 1336, 6980, 1108,    0,
-     4210, 4220, 4210, 1113,  977, 1006,  810,  739, 4206,   16,
-     4206, 4199, 1215, 6980, 6980, 6980, 6980, 1176, 4234, 4233,
-     1330, 4248, 1397, 1398, 1381, 1446, 1455, 1447, 1457, 1456,
-     1473, 6980, 6980, 6980, 6980, 4194, 1213, 4199, 4199, 1267,
-     4209, 4139, 4136, 1214, 4121, 4118,  995, 1361, 6980, 1420,
-     4154, 1409,    0,    0, 4123, 4125, 1049, 1010, 4167, 1526,
-     1451, 1481, 1490,    0, 6980, 1032,    0,    0, 4161, 1534,
-     1571, 1576, 4122, 4121, 1633, 1254, 1588,    0, 1348, 2038,
-     1155, 2085, 2150, 2215, 4110, 4119, 4118, 1639, 1099,    0,
-
-     1311,    0, 1560, 1682, 1750, 4117, 4116, 1762, 1277, 1599,
-        0, 1502, 2262, 1296, 2309, 2374, 2439, 1337, 6980, 1345,
-     1536, 1671, 1357, 1388, 1500, 1526, 1716, 2502, 1832, 1643,
-     1663, 1844, 1677, 1783, 1405, 1726, 2546, 1736, 2593, 2658,
-     2723, 1473, 6980, 1484, 1791, 1803, 1494, 1505, 1547, 1683,
-     1892, 2786, 1942, 1673, 1729, 1964, 1853, 1901, 1522, 1856,
-     2830, 1885, 2877, 2942, 3007, 1532, 6980, 1554, 1842, 1967,
-     1608, 1641, 1797, 1944, 1956, 3070, 2008, 1808, 1866, 2031,
-     1905, 2101, 1679, 2020, 3114, 2066, 3161, 3226, 3291,    0,
-     6980, 1192,    0,    0, 4153, 1960, 2107, 2215, 4114, 4113,
-
-     2227, 1695, 2124,    0, 1934, 3338, 1582, 3385, 3450, 3515,
-     1897, 1999, 2023, 2027, 2043, 2244,    0, 4128, 4108, 4112,
-     4108, 4104, 4111, 4104, 4095, 4099, 1070, 4090, 4098, 1014,
-     4106, 4090, 4096, 4097, 4089, 4101, 4081, 4080, 4095, 4087,
-     4088, 6980, 2232, 1706, 2111, 2248, 2055,    0, 4058, 4060,
-     4068, 4057, 1727, 4046, 4065, 4056, 4046, 4053, 4051, 4056,
-     4039, 4038, 4038, 4035, 4051, 4039, 4046, 1201, 4075, 6980,
-     6980, 4061, 6980, 1681, 4062, 2277, 2457, 2278, 2279, 2280,
-     2320, 2461, 2322, 2451, 4025, 4039, 4040, 4031, 4057, 6980,
-     2331,    0,    0, 4034, 4027, 4034, 4023, 2445, 2341, 3955,
-
-     3952, 2469, 1848, 2320, 2345, 2093, 3562, 1982, 3992, 2094,
-     3609, 3674, 3944, 3951, 3948, 1647, 2519, 3949, 3946, 2507,
-     1938, 2349, 2523, 2223, 3721, 2469, 3768, 3833, 2609, 2068,
-     2272, 2739, 2482, 2551, 2558, 2617, 3896, 2506, 2344, 2761,
-     3943, 4008, 2631, 2295, 2556, 2751, 2623, 2772, 2792, 2806,
-     4071, 2795, 2513, 2814, 4118, 4183, 2825, 2479, 2579, 2893,
-     2636, 2905, 2915, 2901, 4246, 2858, 2741, 3035, 4293, 4358,
-     3029, 3947, 3944, 3007, 2006, 2565, 2758, 2474, 4405, 2099,
-     3984, 2480, 4452, 4517, 2847, 2909,    0, 3941, 3944, 3942,
-     3934, 3950, 3944, 3948, 3945, 3936, 3932,    0, 3939, 3939,
-
-     3940, 3924, 3931, 3933, 3937, 3935, 3935, 3915, 3933,    0,
-     3922, 3921, 3918, 3919, 3906, 3918, 3904, 3903, 3905, 6980,
-     3892, 3883, 3886, 3875, 3887, 3879,  861, 3885, 3871, 3872,
-     3878, 3871, 3880, 2507, 6980,    0, 3910, 6980, 2511, 6980,
-        0, 3898, 3913, 2814, 2815, 3045, 3046, 3054, 2848, 2029,
-        0, 3867, 3868, 3867, 3866, 1821, 2484, 3037, 3059, 3865,
-     3864, 2524,    0,    0, 3897, 2574,    0,    0, 4582, 3901,
-     4647, 3857, 2132, 3860, 3859,  724, 1376, 3063, 3089, 3858,
-     3857, 2904,    0, 4712, 3895, 4777, 3851, 3102, 3109, 3094,
-     3099, 3143, 3148, 2144, 2268, 3032, 3177, 3321, 3323, 2355,
-
-     2455, 4842, 3134, 4907, 3790, 3187, 3191, 3150, 3307, 3329,
-     3331, 2553, 2645, 3211, 3309, 3336, 3338, 2747, 2753, 4972,
-     3195, 5037, 3781, 3200, 3401, 3316, 3319, 3545, 3547, 2763,
-     2780, 3403, 3414, 3553, 3555, 2839, 2852, 5102, 3344, 5167,
-     3780, 3353, 3408, 3783, 3782, 2779,    0,    0, 3815, 2808,
-        0,    0, 5232, 3819, 5297, 3775, 3765, 3770,    0, 3763,
-     3057,    0, 3764, 3778, 3759, 3774,    0, 3766, 3765, 3761,
-     3773, 3755, 3768, 3759, 3752, 3752, 3307, 3763, 3761, 6980,
-     3764, 6980, 3759, 6980, 3757, 3746, 6980, 6980, 3734, 3737,
-     3739, 3716, 3715, 3707, 3701, 3713, 3693, 3702, 3684, 3626,
-
-     3552, 3736, 3554, 3737, 6980, 3669,    0,    0, 3619,    0,
-     3396, 3519,    0,    0, 5362, 1118, 6980, 3661, 6980, 6980,
-     1128,  765,    0,    0, 5427, 1480, 2929, 3037, 3014, 1171,
-     3090, 3122, 3098, 1211, 3189, 3213, 3363, 1266,    0,    0,
-     3381, 1336, 3617, 3616,    0, 3614, 3608, 3602, 3604, 3596,
-     3600, 3596, 3581,    0, 3589, 3581, 3545, 3557,    0, 3534,
-     3535, 3529, 3527, 3519, 3523,    0, 3479, 3484, 3465, 3374,
-     3356, 6980, 6980, 3331, 3326, 3301, 6980, 3292, 3281, 6980,
-     3291, 3283, 3555, 3620, 3425, 3430, 3431, 2847, 3520, 1611,
-     1698, 1299, 1618, 2512, 2595, 1193, 1553, 1622, 1743, 1841,
-
-     1919, 2425, 2754, 3259, 3161, 3149, 3138, 3136, 3081, 3083,
-     3073, 3062, 3056, 3044, 3044, 3034, 3016, 3017,    0, 3004,
-     2987, 2988, 2972, 2860, 2794, 2730, 2709, 6980, 2689, 2697,
-     2612, 2592, 6980, 2511, 6980, 3632, 3635, 3438, 3623, 3637,
-     1400, 1463, 2254, 2817, 2564, 2848, 1937, 3127, 3302, 3374,
-     3526, 3539, 3548, 3562, 2432, 2427, 2409, 2396, 2293, 2277,
-     2277, 2256, 2243,    0, 2226,    0, 2202, 2199, 2187, 2167,
-        0,    0, 2082, 2056, 2037, 2031, 1977, 1967, 1914, 6980,
-     1881, 1868, 1851, 1793, 1609, 1837, 2111, 1829, 2617, 1808,
-     3658, 3542, 3664, 3751, 3793, 3798, 2933, 1786,    0, 1727,
-
-     1707, 1695,    0, 1649, 1655, 1633, 1570,    0, 1534, 1460,
-     1444,    0, 1397, 1388,    0, 6980, 1366, 1282, 6980, 6980,
-     6980, 6980, 1280, 6980,    0, 3434, 3441, 3593,    0, 1233,
-     1218, 1201, 1158,    0, 1128, 1115, 1027,    0,    0,  907,
-        0, 6980,  898,  839,    0,  816,  767,    0,  719,  662,
-      614,    0, 6980, 6980,  598,    0,    0,    0,    0,    0,
-     6980, 5492, 5498, 5508, 5516, 5520, 5528, 5535, 5546, 5557,
-     5568, 5579, 5586, 5597, 5608, 5619, 5630, 5641, 5652, 5663,
-     5674, 5685, 5696, 5707, 5718, 5729, 5740, 5751, 5762, 5773,
-     5784, 5795, 5801, 5811, 5817, 5823, 5828, 5836, 5845, 5851,
-
-     5855, 5861, 5868, 5879, 5890, 5901, 5912, 5923, 5934, 5945,
-     5956, 5967, 5978, 5989, 6000, 6011, 6022, 6033, 6044, 6055,
-     6066, 6077, 6088, 6099, 6110, 6121, 6127, 6132, 6138, 6147,
-     6158, 6169, 6176, 6184, 6190, 6196, 6202, 6209, 6220, 6231,
-     6242, 6253, 6264, 6271, 6282, 6293, 6304, 6315, 6326, 6337,
-     6348, 6359, 6370, 6381, 6392, 6403, 6414, 6425, 6436, 6447,
-     6458, 6469, 6480, 6491, 6502, 6513, 6524, 6530, 6541, 6552,
-     6563, 6570, 6578, 6584, 6590, 6597, 6608, 6619, 6630, 6641,
-     6652, 6659, 6670, 6681, 6692, 6703, 6714, 6725, 6736, 6747,
-     6758, 6769, 6780, 6791, 6802, 6813, 6824, 6835, 6846, 6857,
-
-     6868, 6879, 6890, 6901, 6912, 6918, 6926, 6932, 6939, 6950,
-     6957, 6968
+        0,   64,   88,   70,  153,   75,  218,   82,  283,  113,
+      348,  117,  109,  412,  434,  121,  499,  130,  564,  135,
+      629,  140, 4564, 7041,  693, 7041,  697, 4538,   63, 7041,
+      385, 4537,   56, 4549,   58,  686, 7041,  696,  703,   60,
+      750,  780,  785,   72,   83,  124,  703,  797,  767,  825,
+      765,  759,  769,  833,   63,  766,  848,  856,  837,  422,
+      864,  863,  862,  846, 4536,  848,  803,  872, 4515, 7041,
+      887, 7041,  924,   84,  897, 4546,  919,  924,    0,  930,
+     4533,  405,  946,  908,  953,  975, 4512,    0, 7041, 4552,
+      689, 4542,  964,  968, 1003,  964, 4528, 1065, 1130,  990,
+
+      994, 4507, 7041,  989, 1008, 1076, 4527,   87, 1000,    0,
+        0,  791, 1031, 1065, 1179, 1002, 4525, 1241, 1306, 1012,
+      815,  426, 7041,  820, 1110,  899, 1104, 1159, 1369, 1128,
+     1031, 1431, 1496, 1056, 1097,  919, 7041,  969, 1162, 1009,
+     1217, 1275, 1559, 1299, 1148, 1621, 1686, 1156, 1181, 1040,
+     7041, 1059, 1184, 1115, 1265, 1336, 1749, 1305, 1208, 1811,
+     1876, 1224, 1258,    0, 7041, 4545,  897, 4535, 1253, 1355,
+     1925, 1368, 4522, 1987, 2052, 1212, 1286, 1296, 1345, 7041,
+     7041,  902, 7041,    0,    0, 1343, 1359, 1373, 1397, 7041,
+     7041, 7041, 4533, 7041, 7041, 1405, 1442, 7041, 7041, 1447,
+
+     7041,    0, 4510, 4490, 4496, 1050, 4488, 4490,  658, 4482,
+     1143,  105,  851,  874, 4488,  727, 4491, 4482, 4504, 7041,
+     1504, 1154, 1459, 7041, 1184,    0, 4463, 4465, 4455, 1178,
+      907, 1291,  685,  946, 4451,   22, 4451, 4444, 1108, 7041,
+     7041, 7041, 7041, 1251, 4479, 4478, 1405, 4493, 1524, 1532,
+     1442, 1542, 1548, 1543, 1559, 1594, 1561, 7041, 7041, 7041,
+     7041, 1513, 4439, 1364, 4444, 4444, 1436, 4451, 4450, 4447,
+     1240, 4432, 4429, 1228, 1380, 1604, 7041, 1638, 4394, 1633,
+        0,    0, 4363, 4365,  932,  828, 4407, 1643, 1468, 1665,
+     1669,    0, 7041, 1264,    0,    0, 4401, 1656, 1697, 1703,
+
+     4362, 4361, 1715, 1283, 1743,    0, 1518, 2099, 1389, 2146,
+     2211, 2276, 1448, 4350, 4359, 4358, 1822, 1424, 1527,    0,
+     1482,    0, 1660, 1828, 1754, 4357, 4356, 1884, 1390, 1777,
+        0, 1553, 2323, 1480, 2370, 2435, 2500, 1581, 1550, 7041,
+     1593, 1737, 1798, 1611, 1616, 1645, 1703, 1850, 2563, 1904,
+     1680, 1717, 2003, 1735, 1917, 1725, 1892, 2607, 1945, 2654,
+     2719, 2784, 1804, 1828, 1743, 7041, 1777, 1857, 1925, 1783,
+     1786, 1906, 1963, 2015, 2847, 2025, 1959, 1966, 2069, 2011,
+     2081, 1862, 2090, 2891, 1969, 2938, 3003, 3068, 1980, 2036,
+     1974, 7041, 2017, 2127, 2133, 2039, 2076, 2101, 2120, 2162,
+
+     3131, 2292, 2083, 2135, 2304, 2171, 2173, 2078, 2300, 3175,
+     2193, 3222, 3287, 3352, 2199, 2204,    0, 7041, 1320,    0,
+        0, 4393, 2308, 2381, 2386, 4354, 4353, 2500, 2087, 2340,
+        0, 2159, 3399, 1604, 3446, 3511, 3576, 2313, 2344, 2370,
+     2398, 2402, 2409, 2513,    0, 4368, 4348, 4352, 4348, 4345,
+     4352, 4345, 4336, 4339,  786, 4330, 4338, 1067, 4346, 4330,
+     4336, 4337, 4329, 4341, 4325, 4324, 4339, 4331, 4330, 7041,
+     2517, 2106, 2522, 2529, 2312,    0, 4321, 4323, 4331, 4318,
+     2248, 4286, 4305, 4296, 4286, 4293, 4291, 4296, 4282, 4281,
+     4281, 4278, 4291, 4283, 4290, 1509, 4319, 7041, 7041, 4305,
+
+     7041, 1597, 4302, 2545, 2546, 2563, 2565, 2578, 2580, 2583,
+     2582, 2598, 4265, 4279, 4280, 4271, 4297, 7041, 2619,    0,
+        0, 4274, 4267, 4274, 4263, 2596, 2667, 4264, 4261, 2654,
+     2179, 2556, 2603, 2393, 3623, 1787, 4301, 1833, 3670, 3735,
+     4253, 4191, 4188, 2505, 2676, 4189, 4186, 2784, 2317, 2682,
+     2686, 2690, 3782, 2601, 3829, 3894, 2812, 2567, 2808, 2816,
+     2836, 2838, 2867, 2871, 3957, 2814, 2841, 2869, 4004, 4069,
+     2954, 2642, 2875, 3084, 2879, 2881, 2903, 2911, 4132, 3106,
+     2893, 3114, 4179, 4244, 2963, 2914, 3086, 3137, 2968, 2977,
+     3165, 3169, 4307, 3122, 2988, 3140, 4354, 4419, 3192, 4187,
+
+     4184, 3077, 2338, 2693, 3179, 2974, 4466, 1852, 4224, 1920,
+     4513, 4578, 3222, 3230,    0, 4181, 4184, 4182, 4174, 4190,
+     4184, 4188, 4185, 4176, 4172,    0, 4179, 4179, 4181, 4165,
+     4172, 4174, 4177, 4175, 4175, 4155, 4173,    0, 4162, 4161,
+     4158, 4159, 4150, 4162, 4148, 4147, 4147, 7041, 4155, 4146,
+     4149, 4136, 4127, 4119,  829, 4125, 4111, 4112, 4118, 4111,
+     4123, 1946, 7041,    0, 4153, 7041, 2010, 7041,    0, 4141,
+     4156, 3115, 3193, 3363, 3364, 3372, 3373, 2360,    0, 4107,
+     4112, 4111, 4110, 1031, 3099, 3234, 3238, 4109, 4104, 2128,
+        0,    0, 4137, 2550,    0,    0, 4643, 4141, 4708, 4097,
+
+     2422, 4100, 4099, 1169, 1544, 3244, 3248, 4098, 4097, 3163,
+        0, 4773, 4135, 4838, 4091, 3380, 3387, 2819, 2923, 3390,
+     3433, 2713, 2956, 3108, 3133, 3474, 3606, 2986, 3097, 4903,
+     3268, 4968, 4090, 3463, 3471, 3419, 3430, 3608, 3614, 3160,
+     3178, 3270, 3273, 3616, 3621, 3188, 3275, 5033, 3277, 5098,
+     4089, 3476, 3484, 3592, 3601, 3623, 3698, 3400, 3435, 3496,
+     3594, 3810, 3816, 3498, 3604, 5163, 3629, 5228, 4088, 3638,
+     3670, 4091, 4021, 2608,    0,    0, 4054, 2840,    0,    0,
+     5293, 4058, 5358, 4014, 4004, 4009,    0, 4001, 3405,    0,
+     4002, 4016, 3997, 4012,    0, 4004, 4003, 3999, 4011, 3993,
+
+     4006, 3997, 3990, 3990, 2628, 4002, 4000, 7041, 4002, 7041,
+     3997, 7041, 3999, 3996, 7041, 7041, 3985, 3987, 3991, 3976,
+     3987, 3979, 3975, 3982, 3968, 3951, 3934, 3938, 3850, 3972,
+     3842, 3799, 7041, 3889,    0,    0, 3835,    0, 3681, 3382,
+        0,    0, 5423, 1124, 7041, 3877, 7041, 7041,  940, 1719,
+        0,    0, 5488, 1292, 3646, 3695, 3656, 1096, 3705, 3708,
+     3663, 1230, 3712, 3714, 3669, 1652,    0,    0, 3671, 2567,
+     3822, 3821,    0, 3803, 3790, 3771, 3772, 3765, 3688, 3661,
+     3623,    0, 3623, 3618, 3584, 3592,    0, 3571, 3576, 3565,
+     3568, 3553, 3537,    0, 3451, 3457, 3441, 3447, 3387, 7041,
+
+     7041, 3369, 3373, 3362, 7041, 3358, 3347, 7041, 3339, 3328,
+     3974, 4015, 3851, 3852, 3721, 3946, 3947, 1662, 1905, 1489,
+     1546, 1957, 2246, 1424, 1710, 1817, 1869, 2062, 2779, 2858,
+     3678, 3312, 3819, 3317, 3224, 3215, 3157, 3166, 3161, 3118,
+     3117, 3111, 3100, 3086, 3068, 3073,    0, 2953, 2927, 2908,
+     2878, 2866, 2821, 2808, 2774, 7041, 2750, 2758, 2657, 2630,
+     7041, 2561, 7041, 3959, 3975, 3725, 2381, 3079, 1349, 1753,
+      772, 1912, 1975, 2063,  804, 1805, 1893, 2305, 3188, 3587,
+     3650, 3681, 2549, 2531, 2507, 2495, 2480, 2456, 2456, 2373,
+     2355,    0, 2340,    0, 2323, 2296, 2295, 2254,    0,    0,
+
+     2219, 2163, 2137, 2114, 2090, 2076, 2037, 7041, 2035, 2023,
+     1993, 1975, 1653, 1985, 2553, 1969, 2626, 1953, 3802, 3867,
+     3874, 3880, 3884, 3962, 3169, 1852,    0, 1795, 1723, 1702,
+        0, 1593, 1545, 1505, 1475,    0, 1407, 1378, 1374,    0,
+     1356, 1291,    0, 7041, 1279, 1245, 7041, 7041, 7041, 7041,
+     1211, 7041,    0, 3845, 3968, 3970,    0, 1197, 1163, 1156,
+     1115,    0, 1069, 1045, 1036,    0,    0, 1015,    0, 7041,
+      912,  900,    0,  776,  675,    0,  367,  356,   61,    0,
+     7041, 7041,   23,    0,    0,    0,    0,    0, 7041, 5553,
+     5559, 5569, 5577, 5581, 5589, 5596, 5607, 5618, 5629, 5640,
+
+     5647, 5658, 5669, 5680, 5691, 5702, 5713, 5724, 5735, 5746,
+     5757, 5768, 5779, 5790, 5801, 5812, 5823, 5834, 5845, 5856,
+     5862, 5872, 5878, 5884, 5889, 5897, 5906, 5912, 5916, 5922,
+     5929, 5940, 5951, 5962, 5973, 5984, 5995, 6006, 6017, 6028,
+     6039, 6050, 6061, 6072, 6083, 6094, 6105, 6116, 6127, 6138,
+     6149, 6160, 6171, 6182, 6188, 6193, 6199, 6208, 6219, 6230,
+     6237, 6245, 6251, 6257, 6263, 6270, 6281, 6292, 6303, 6314,
+     6325, 6332, 6343, 6354, 6365, 6376, 6387, 6398, 6409, 6420,
+     6431, 6442, 6453, 6464, 6475, 6486, 6497, 6508, 6519, 6530,
+     6541, 6552, 6563, 6574, 6585, 6591, 6602, 6613, 6624, 6631,
+
+     6639, 6645, 6651, 6658, 6669, 6680, 6691, 6702, 6713, 6720,
+     6731, 6742, 6753, 6764, 6775, 6786, 6797, 6808, 6819, 6830,
+     6841, 6852, 6863, 6874, 6885, 6896, 6907, 6918, 6929, 6940,
+     6951, 6962, 6973, 6979, 6987, 6993, 7000, 7011, 7018, 7029
     } ;
 
-static yyconst flex_int16_t yy_def[1213] =
+static yyconst flex_int16_t yy_def[1241] =
     {   0,
-     1061,    1,    1,    3, 1061,    5, 1061,    7, 1061,    9,
-     1061,   11,    9,    9, 1061,   15, 1061,   17, 1061,   19,
-     1061,   21, 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1061,
-     1063, 1061, 1061, 1064, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1061, 1061, 1061, 1061, 1061, 1061,
-       39, 1061, 1061, 1065, 1061, 1061, 1061, 1061, 1061, 1062,
-     1066, 1064, 1061, 1067,   41, 1061, 1061, 1068, 1068, 1068,
-     1061, 1061, 1061, 1069, 1061, 1069, 1070, 1071, 1069, 1069,
-     1069,   91, 1069, 1072, 1072, 1069, 1061, 1061,   41, 1061,
-
-     1073, 1073, 1074, 1074, 1075, 1074, 1074, 1074,  108, 1074,
-     1076, 1076, 1062, 1077, 1061, 1077, 1078, 1079, 1077, 1077,
-     1077,  121, 1077, 1080, 1080, 1081, 1061, 1081, 1082, 1083,
-     1081, 1081, 1081,  133, 1081, 1084, 1084, 1085, 1061, 1085,
-     1086, 1087, 1085, 1085, 1085,  145, 1085, 1088, 1088, 1089,
-     1061, 1089, 1090, 1091, 1089, 1089, 1089,  157, 1089, 1092,
-     1092, 1061, 1061, 1061, 1061, 1062, 1061, 1062, 1093, 1093,
-     1093, 1093, 1093, 1061, 1061, 1061, 1094, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1095, 1095, 1095, 1095, 1095,
-     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
-
-     1095, 1095, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1096,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1097,
-     1098, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
-     1098, 1061, 1061, 1061, 1061, 1061, 1061, 1095, 1095, 1095,
-     1095, 1095, 1095, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1100, 1100, 1101, 1102, 1102, 1102, 1102, 1103, 1099, 1103,
-     1103, 1061, 1061, 1104, 1061, 1105, 1104, 1105, 1106, 1104,
-     1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
-     1104, 1107, 1061, 1107, 1104, 1061, 1061, 1061, 1097, 1108,
-
-     1109, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
-     1108, 1108, 1108, 1108, 1110, 1061, 1110, 1111, 1061, 1111,
-     1112, 1112, 1111, 1112, 1113, 1113, 1111, 1111, 1111, 1111,
-     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1114, 1061,
-     1114, 1115, 1061, 1115, 1116, 1116, 1115, 1116, 1117, 1117,
-     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
-     1115, 1115, 1118, 1061, 1118, 1119, 1061, 1119, 1120, 1120,
-     1119, 1120, 1121, 1121, 1119, 1119, 1119, 1119, 1119, 1119,
-     1119, 1119, 1119, 1119, 1119, 1119, 1122, 1061, 1122, 1123,
-     1061, 1124, 1123, 1124, 1125, 1123, 1123, 1123, 1123, 1123,
-
-     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1126, 1061, 1126,
-     1061, 1127, 1127, 1127, 1127, 1061, 1128, 1128, 1128, 1128,
-     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
-     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
-     1128, 1061, 1061, 1061, 1061, 1061, 1061, 1129, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1130, 1131, 1061,
-     1061, 1061, 1061, 1132, 1133, 1134, 1134, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1061, 1128, 1128, 1061, 1135, 1061,
-     1135, 1136, 1137, 1137, 1137, 1137, 1137, 1138, 1139, 1139,
-
-     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1141, 1142,
-     1143, 1061, 1139, 1061, 1061, 1144, 1145, 1145, 1145, 1145,
-     1145, 1145, 1145, 1145, 1145, 1146, 1147, 1061, 1148, 1148,
-     1148, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1150, 1151,
-     1152, 1061, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
-     1153, 1154, 1155, 1156, 1157, 1061, 1158, 1158, 1158, 1158,
-     1158, 1158, 1158, 1158, 1158, 1159, 1160, 1161, 1162, 1061,
-     1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1164,
-     1165, 1166, 1167, 1061, 1061, 1061, 1168, 1168, 1168, 1168,
-     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
-
-     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
-     1168, 1168, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1169, 1061, 1169, 1170, 1061, 1171, 1061,
-     1171, 1172, 1061, 1173, 1173, 1173, 1173, 1173, 1173, 1061,
-     1174, 1175, 1175, 1175, 1175, 1176, 1176, 1177, 1177, 1177,
-     1177, 1178, 1177, 1178, 1179, 1180, 1177, 1180, 1181, 1177,
-     1061,  671, 1177, 1061, 1061, 1182, 1182, 1183, 1183, 1183,
-     1183, 1184, 1183, 1185, 1183, 1061,  686, 1186, 1186, 1186,
-     1186, 1187, 1187, 1186, 1187, 1188, 1188, 1189, 1189, 1186,
-
-     1189, 1190, 1186, 1061,  704, 1191, 1191, 1191, 1191, 1192,
-     1192, 1191, 1192, 1193, 1193, 1194, 1194, 1191, 1194, 1195,
-     1191, 1061,  722, 1196, 1196, 1196, 1196, 1197, 1197, 1196,
-     1197, 1198, 1198, 1199, 1199, 1196, 1199, 1200, 1196, 1061,
-      740, 1201, 1201, 1201, 1201, 1202, 1201, 1202, 1203, 1204,
-     1201, 1204, 1205, 1201, 1061,  755, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
-     1207, 1207, 1207, 1207, 1061, 1061, 1208, 1208, 1208, 1208,
-     1209, 1209, 1210, 1210, 1061,  815, 1061, 1210, 1061, 1061,
-     1211, 1211, 1212, 1212, 1061,  825, 1186, 1186,  704,  704,
-     1191, 1191,  722,  722, 1196, 1196,  740,  740, 1201, 1201,
-      755,  755, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1207, 1207, 1207, 1207, 1208, 1209, 1209,  815,
-      815, 1211, 1211,  825,  825,  704,  704,  722,  722,  740,
-
-      740,  755,  755, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1207, 1207, 1061, 1209, 1209,
-      815,  815, 1211, 1211,  825,  825,  704,  704,  722,  722,
-      740,  740,  755,  755, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1210, 1210, 1212, 1212,
-     1186, 1186, 1191, 1191, 1196, 1196, 1201, 1201, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1210, 1186, 1191, 1196, 1201, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1061, 1061, 1061, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1061, 1061, 1206, 1206, 1206, 1206, 1206, 1206,
-        0, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061
+     1089,    1,    1,    3, 1089,    5, 1089,    7, 1089,    9,
+     1089,   11,    9,    9, 1089,   15, 1089,   17, 1089,   19,
+     1089,   21, 1089, 1089, 1089, 1089, 1089, 1089, 1090, 1089,
+     1091, 1089, 1089, 1092, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1093, 1093, 1093, 1093,
+     1093, 1093, 1093, 1093, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089,   39, 1089, 1089, 1093, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1090, 1094, 1092, 1089, 1095,   41, 1089,
+     1089, 1096, 1096, 1096, 1089, 1089, 1089, 1097, 1089, 1097,
+     1098, 1099, 1097, 1097, 1097,   95, 1097, 1100, 1100, 1097,
+
+     1097, 1097, 1089, 1089,   41, 1089, 1101, 1101, 1089, 1102,
+     1102, 1103, 1102, 1102, 1102,  115, 1102, 1104, 1104, 1102,
+     1090, 1105, 1089, 1105, 1106, 1107, 1105, 1105, 1105,  129,
+     1105, 1108, 1108, 1105, 1105, 1109, 1089, 1109, 1110, 1111,
+     1109, 1109, 1109,  143, 1109, 1112, 1112, 1109, 1109, 1113,
+     1089, 1113, 1114, 1115, 1113, 1113, 1113,  157, 1113, 1116,
+     1116, 1113, 1113, 1117, 1089, 1117, 1118, 1119, 1117, 1117,
+     1117,  171, 1117, 1120, 1120, 1117, 1117, 1089, 1089, 1089,
+     1089, 1090, 1089, 1090, 1121, 1121, 1121, 1121, 1121, 1089,
+     1089, 1089, 1122, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
+     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1124, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1125, 1126, 1127, 1126, 1126,
+     1126, 1126, 1126, 1126, 1126, 1126, 1126, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1123, 1123, 1123, 1123, 1123, 1123,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1128, 1128,
+     1129, 1130, 1130, 1130, 1130, 1131, 1127, 1131, 1131, 1089,
+     1089, 1132, 1089, 1133, 1132, 1133, 1134, 1132, 1132, 1132,
+
+     1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1135,
+     1089, 1135, 1132, 1132, 1089, 1089, 1089, 1125, 1089, 1136,
+     1137, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
+     1136, 1136, 1136, 1136, 1138, 1089, 1138, 1136, 1139, 1089,
+     1139, 1140, 1140, 1139, 1140, 1141, 1141, 1139, 1139, 1139,
+     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1142,
+     1089, 1142, 1139, 1139, 1143, 1089, 1143, 1144, 1144, 1143,
+     1144, 1145, 1145, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
+     1143, 1143, 1143, 1143, 1143, 1146, 1089, 1146, 1143, 1143,
+     1147, 1089, 1147, 1148, 1148, 1147, 1148, 1149, 1149, 1147,
+
+     1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+     1147, 1150, 1089, 1150, 1147, 1147, 1151, 1089, 1152, 1151,
+     1152, 1153, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+     1151, 1151, 1151, 1151, 1154, 1089, 1154, 1151, 1089, 1155,
+     1155, 1155, 1155, 1089, 1156, 1156, 1156, 1156, 1156, 1156,
+     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
+     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1089,
+     1089, 1089, 1089, 1089, 1089, 1157, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1158, 1159, 1089, 1089, 1089,
+
+     1089, 1160, 1161, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+     1162, 1162, 1089, 1156, 1156, 1089, 1163, 1089, 1163, 1164,
+     1165, 1165, 1165, 1165, 1165, 1166, 1167, 1167, 1167, 1167,
+     1167, 1167, 1167, 1167, 1167, 1168, 1169, 1170, 1171, 1089,
+     1167, 1089, 1089, 1172, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1174, 1175, 1089, 1176, 1176, 1176, 1176,
+     1176, 1176, 1176, 1176, 1176, 1177, 1178, 1179, 1180, 1089,
+     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182,
+     1183, 1184, 1185, 1089, 1186, 1186, 1186, 1186, 1186, 1186,
+     1186, 1186, 1186, 1187, 1188, 1189, 1190, 1089, 1191, 1191,
+
+     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1193, 1194,
+     1195, 1089, 1089, 1089, 1196, 1196, 1196, 1196, 1196, 1196,
+     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1197, 1089, 1197, 1198, 1089, 1199, 1089, 1199, 1200,
+     1089, 1201, 1201, 1201, 1201, 1201, 1201, 1089, 1202, 1203,
+     1203, 1203, 1203, 1204, 1204, 1205, 1205, 1205, 1205, 1206,
+     1205, 1206, 1207, 1208, 1205, 1208, 1209, 1205, 1089,  699,
+
+     1205, 1089, 1089, 1210, 1210, 1211, 1211, 1211, 1211, 1212,
+     1211, 1213, 1211, 1089,  714, 1214, 1214, 1214, 1214, 1215,
+     1215, 1214, 1215, 1216, 1216, 1217, 1217, 1214, 1217, 1218,
+     1214, 1089,  732, 1219, 1219, 1219, 1219, 1220, 1220, 1219,
+     1220, 1221, 1221, 1222, 1222, 1219, 1222, 1223, 1219, 1089,
+      750, 1224, 1224, 1224, 1224, 1225, 1225, 1224, 1225, 1226,
+     1226, 1227, 1227, 1224, 1227, 1228, 1224, 1089,  768, 1229,
+     1229, 1229, 1229, 1230, 1229, 1230, 1231, 1232, 1229, 1232,
+     1233, 1229, 1089,  783, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1235, 1235,
+     1235, 1235, 1089, 1089, 1236, 1236, 1236, 1236, 1237, 1237,
+     1238, 1238, 1089,  843, 1089, 1238, 1089, 1089, 1239, 1239,
+     1240, 1240, 1089,  853, 1214, 1214,  732,  732, 1219, 1219,
+      750,  750, 1224, 1224,  768,  768, 1229, 1229,  783,  783,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1235, 1235, 1235, 1235, 1236, 1237, 1237,  843,  843, 1239,
+     1239,  853,  853,  732,  732,  750,  750,  768,  768,  783,
+      783, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1235, 1235, 1089, 1237, 1237,  843,  843,
+     1239, 1239,  853,  853,  732,  732,  750,  750,  768,  768,
+      783,  783, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+
+     1234, 1234, 1234, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1238, 1238, 1240, 1240, 1214, 1214,
+     1219, 1219, 1224, 1224, 1229, 1229, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1238, 1214, 1219, 1224, 1229, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1089,
+     1089, 1089, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1089, 1089, 1234, 1234, 1234, 1234, 1234, 1234,    0, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089
     } ;
 
-static yyconst flex_int16_t yy_nxt[7046] =
+static yyconst flex_int16_t yy_nxt[7107] =
     {   0,
        24,   25,   26,   27,   25,   28,   29,   30,   31,   32,
        33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
@@ -833,778 +839,785 @@
        47,   47,   48,   47,   48,   47,   48,   48,   47,   24,
        47,   47,   47,   47,   47,   47,   47,   49,   47,   50,
        47,   47,   51,   47,   52,   47,   47,   53,   47,   54,
-       47,   47,   47,   55,   56,   58,  464,   59,   58,   24,
-      167,  223,  224,   24,   24,  465,   24,   60,  113,   60,
-       61,   24,   81,  113,   82,   81,   62,   63,   24,   24,
-       41,   42,   42,   42,  178,   41,   42,   42,   42,  162,
-
-      431,  162,  162,  168,  432,   83,  179,  162,  164,  162,
-      162,   47,  175,   47,  163,  170,   47,  171,   47,  172,
-      173,   64,  163,   47,  225,  226,  176,   24,   24,   66,
-       67,   68,   69,   67,   66,   70,   66,   71,   66,   66,
-       72,   66,   73,   66,   73,   74,   66,   75,   76,   76,
-       76,   66,   77,   66,   66,   78,   78,   78,   78,   78,
-       78,   79,   78,   79,   78,   79,   79,   78,   66,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   80,   78,   78,   78,
-       78,   78,   66,   66,   84,   84,   85,   86,   84,   84,
-
-       87,   84,   84,   84,   84,   88,   84,   89,   84,   89,
-       90,   84,   91,   92,   92,   92,   84,   93,   84,   84,
-       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   84,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   95,   94,   94,   94,   94,   94,   84,   84,   24,
-       24,   97,   24,   24,   24,   29,   24,   24,   24,   24,
-       34,   24,   60,   24,   60,   98,   24,   99,  100,  100,
-      100,   24,   63,   24,   24,  101,  101,  101,  101,  101,
-      101,  101,  101,  101,  101,  101,  101,  101,   24,  101,
-
-      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
-      101,  101,  101,  101,  101,  101,  102,  101,  101,  101,
-      101,  101,   24,   24,  103,  103,  104,  103,  103,  103,
-       29,  103,  103,  103,  103,  105,  103,  106,  103,  106,
-      107,  103,  108,  109,  109,  109,  103,  110,  103,  103,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  103,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  112,  111,  111,  111,  111,  111,  103,  103,  114,
-      114,  115,  116,  114,  114,  117,  114,  114,  114,  114,
-
-      118,  114,  119,  114,  119,  120,  114,  121,  122,  122,
-      122,  114,  123,  114,  114,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  114,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  125,  124,  124,  124,
-      124,  124,  114,  114,  126,  126,  127,  128,  126,  126,
-      129,  126,  126,  126,  126,  130,  126,  131,  126,  131,
-      132,  126,  133,  134,  134,  134,  126,  135,  126,  126,
-      136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
-      136,  136,  136,  126,  136,  136,  136,  136,  136,  136,
-
-      136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
-      136,  137,  136,  136,  136,  136,  136,  126,  126,  138,
-      138,  139,  140,  138,  138,  141,  138,  138,  138,  138,
-      142,  138,  143,  138,  143,  144,  138,  145,  146,  146,
-      146,  138,  147,  138,  138,  148,  148,  148,  148,  148,
-      148,  148,  148,  148,  148,  148,  148,  148,  138,  148,
-      148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  148,  148,  148,  148,  149,  148,  148,  148,
-      148,  148,  138,  138,  150,  150,  151,  152,  150,  150,
+       47,   47,   47,   55,   56,   57,  191,   58,   57,  183,
+      194,   67,  492,   68,   67, 1088,   85,  219,   86,   85,
+      192,  493,  195,  100,  220,  101,  100,  258,   59,   60,
+      183,   61,   60,   24,   69,  239,  240,   24,   24,   87,
+
+       24,   62,  184,   62,   63,   24,  102,  241,  242,  287,
+       64,   65,   24,   24,  109,  121,  109,  109,  120, 1087,
+      120,  120,  134,  184,  135,  134,  259,   41,   42,   42,
+       42,  148,  318,  149,  148,   47,  162,   47,  163,  162,
+       47,  176,   47,  177,  176,   66,  459,   47,  243,  244,
+      460,   24,   24,   70,   71,   72,   73,   71,   70,   74,
+       70,   75,   70,   70,   76,   70,   77,   70,   77,   78,
+       70,   79,   80,   80,   80,   70,   81,   70,   70,   82,
+       82,   82,   82,   82,   82,   83,   82,   83,   82,   83,
+       83,   82,   70,   82,   82,   82,   82,   82,   82,   82,
+
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       84,   82,   82,   82,   82,   82,   70,   70,   88,   88,
+       89,   90,   88,   88,   91,   88,   88,   88,   88,   92,
+       88,   93,   88,   93,   94,   88,   95,   96,   96,   96,
+       88,   97,   88,   88,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   88,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   99,   98,   98,   98,   98,
+       98,   88,   88,   24,   24,  103,   24,   24,   24,   29,
+       24,   24,   24,   24,   34,   24,   62,   24,   62,  104,
+
+       24,  105,  106,  106,  106,   24,   65,   24,   24,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,   24,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      108,  107,  107,  107,  107,  107,   24,   24,  110,  110,
+      111,  110,  110,  110,   29,  110,  110,  110,  110,  112,
+      110,  113,  110,  113,  114,  110,  115,  116,  116,  116,
+      110,  117,  110,  110,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  110,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+
+      118,  118,  118,  118,  118,  119,  118,  118,  118,  118,
+      118,  110,  110,  109, 1086,  109,  109,  186,  121,  187,
+      246,  188,  189,  264, 1085,  264,  264,  287,  340,  341,
+       41,   42,   42,   42,  122,  122,  123,  124,  122,  122,
+      125,  122,  122,  122,  122,  126,  122,  127,  122,  127,
+      128,  122,  129,  130,  130,  130,  122,  131,  122,  122,
+      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+      132,  132,  132,  122,  132,  132,  132,  132,  132,  132,
+      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+      132,  133,  132,  132,  132,  132,  132,  122,  122,  136,
+
+      136,  137,  138,  136,  136,  139,  136,  136,  136,  136,
+      140,  136,  141,  136,  141,  142,  136,  143,  144,  144,
+      144,  136,  145,  136,  136,  146,  146,  146,  146,  146,
+      146,  146,  146,  146,  146,  146,  146,  146,  136,  146,
+      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
+      146,  146,  146,  146,  146,  146,  147,  146,  146,  146,
+      146,  146,  136,  136,  150,  150,  151,  152,  150,  150,
       153,  150,  150,  150,  150,  154,  150,  155,  150,  155,
-
       156,  150,  157,  158,  158,  158,  150,  159,  150,  150,
       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+
       160,  160,  160,  150,  160,  160,  160,  160,  160,  160,
       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
-      160,  161,  160,  160,  160,  160,  160,  150,  150,  180,
-     1060,  181,  181,  181,  181,  203,  180,  182,  181,  181,
-      181,  181,  204,  269,  183,  184,  184,  184,  184,  227,
-      228,  185, 1059,  186,  186,  186,  186,  186,  187,  186,
-      186,  186,  186,  186,  186,  186,  299,  186,  188,  189,
-      190,  186,  191,  192,  193,  186,  194,  195,  196,  197,
-
-      186,  198,  186,  199,  200,  201,  186,  186,  186,  202,
-      205,  229,  181,  181,  181,  181,  438,  229,  230,  229,
-     1058,  167,  206,  207,  230,  232,  230,  208,  242,  209,
-      439,  232,  210,  232,  244,  247,  206,  247,  247,  207,
-      205,  230,  181,  181,  181,  181,  269,  209,  269,  229,
-      433,  229,  434,  207,  168,  210,  230,  208,  230,  233,
-      233,  233,  233,  232,  234,  232,  425,  243,  237,  207,
-      211,  426,  212,  821,  245,  213, 1057,  229,  214,  215,
-      216,  217,  218,  219,  230,  229,  220,  269,  221,  222,
-      229,  232,  230,  461,  238,  225,  226,  230,  462,  232,
-
-      247,  164,  247,  247,  232,  180,  229,  181,  181,  181,
-      181, 1056,  230,  230,  246,  235,  277,  893,  211,  269,
-      232,  236,  239,  319,  320,  167,  254,  215,  216,  255,
-      256,  219,  319,  320,  241,  240, 1061,  222,  258,  259,
-      260,  258,  271,  239,  258,  259,  260,  258,  262,  278,
-      262,  459,  262,  262,  186,  248,  300,  186,  168,  186,
-      177,  249,  250,  251,  252,  302,  253,  460,  186,  186,
-      186,  263, 1055,  180,  186,  181,  181,  181,  181,  343,
-      344,  184,  184,  184,  184,  205, 1054,  181,  181,  181,
-      181,  272,  259,  273,  272,  343,  344,  435,  207,  436,
-
-      230,  793,  208,  270,  270,  270,  270,  269,  265,  266,
-      794,  319,  326,  267,  207,  272,  259,  273,  272,  280,
-      323,  281,  281,  281,  281,  282,  282,  282,  282,  319,
-      320,  274,  298,  298,  298,  298,  319,  322,  274,  393,
-      323,  274,  343,  350, 1053,  274,  184,  184,  184,  184,
-      338,  347,  167,  283,  367,  368,  274,  284,  285, 1052,
-      281,  281,  281,  281,  274,  305,  305,  305,  305,  300,
-      286,  287,  394,  324,  296,  288,  300,  289,  297,  300,
-      290,  367,  368,  300,  286,  168,  303,  287,  304,  304,
-      304,  304,  428,  306,  300,  289,  429,  307,  343,  344,
-
-      430,  468,  300,  290,  274,  274,  469,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  362,
-      274,  274,  454,  319,  320,  230,  293,  274,  274,  274,
-      455,  205,  269,  298,  298,  298,  298,  327,  277,  328,
-      328,  328,  328,  274,  207,  343,  344,  456,  208,  367,
-      374,  457,  343,  346,  421,  600,  347,  601,  371,  351,
-      207,  352,  352,  352,  352,  458,  422,  274,  274,  274,
-      274,  278,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274, 1051,  274,  274,  319,  320,  348,
-      496,  293,  274,  274,  274,  367,  368,  411,  497,  411,
-
-      411,  343,  344,  329,  329,  329,  329,  396,  274,  397,
-      397,  397,  397,  596,  294,  318,  386,  353,  353,  353,
-      353,  269,  318,  444,  444,  318,  447,  447,  447,  318,
-      597,  330,  274,  274,  308,  331,  304,  304,  304,  304,
-      318,  398,  398,  398,  398,  354,  309,  310,  318,  355,
-      269,  311,  162,  312,  162,  162,  313,  516,  367,  370,
-      309,  508,  371,  310,  452,  453,  509,  163,  292,  399,
-      891,  312, 1050,  400,  412,  412,  412,  412,  892,  313,
-      300,  300,  300,  300,  300,  300, 1049,  300,  300,  300,
-      300,  300,  300,  300,  300,  372,  300,  300,  393,  342,
-
-      471,  472,  316,  300,  300,  300,  342,  635,  366,  342,
-     1048,  367,  368,  342,  247,  366,  247,  247,  366,  300,
-      339,  468,  366,  897,  342,  375,  469,  376,  376,  376,
-      376,  394,  342,  366,  413,  413,  413,  413,  947,  470,
-      636,  366,  339,  300,  300,  300,  300,  300,  300,  300,
-      300, 1047,  300,  300,  300,  300,  300,  300,  300,  300,
-      363,  300,  300,  899,  390,  452,  488,  316,  300,  300,
-      300,  390,  503,  503,  390,  367,  368, 1046,  390,  414,
-      414,  414,  414, 1045,  300,  415,  415,  415,  415,  390,
-      317,  377,  377,  377,  377,  521,  521,  390,  184,  184,
-
-      184,  184,  468,  184,  184,  184,  184,  526,  300,  300,
-      319,  320,  428,  300,  416,  387,  429,  177,  901,  378,
-      487,  269,  302,  379,  332, 1044,  328,  328,  328,  328,
-      416,  443,  443,  443,  443, 1043,  333,  334,  229,  319,
-      320,  335,  416,  336,  943,  230,  337,  319,  320,  445,
-      333,  445,  232,  334,  446,  446,  446,  446,  416,  319,
-      320,  336,  258,  259,  260,  258,  506,  506,  506,  337,
-      318,  318,  319,  320,  318,  318,  318,  318,  318,  318,
-      318,  318,  318,  318,  318,  408,  318,  318,  903,  229,
-      319,  322,  340,  318,  318,  318,  230,  205,  269,  181,
-
-      181,  181,  181,  232,  987,  229,  229,  319,  320,  318,
-      207, 1042,  230,  230,  208,  476,  476,  476,  476,  232,
-      232,  258,  259,  260,  258,  822,  207,  491,  491,  491,
-      491,  490, 1041,  318,  318,  318,  318,  319,  320,  318,
-      318,  318,  318,  318,  318,  318,  318,  318,  318,  318,
-      292,  318,  318, 1040,  229,  229,  477,  340,  318,  318,
-      318,  230,  230,  229,  229,  229,  230,  988,  232,  232,
-      230,  230,  230,  269,  318,  343,  344,  232,  232,  232,
-      341,  229,  272,  259,  273,  272,  343,  344,  230, 1039,
-      481,  272,  259,  273,  272,  232,  343,  344,  318,  318,
-
-      343,  344,  319,  326,  478,  479,  480,  343,  346,  498,
-     1038,  323,  483,  292,  356,  482,  352,  352,  352,  352,
-      524,  524,  524,  484,  343,  344,  357,  358,  319,  326,
-      315,  359,  895,  360,  367,  368,  361,  323,  319,  322,
-      357,  230,  323,  358,  270,  270,  270,  270,  269,  343,
-      350,  360,  282,  282,  282,  282,  367,  368,  347,  361,
-      342,  342,  343,  344,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  324,  342,  342,  305,  305,
-      305,  305,  364,  342,  342,  342, 1037,  285,  580,  281,
-      281,  281,  281,  581,  282,  282,  282,  282,  948,  342,
-
-      287,  504,  339,  504,  288,  499,  505,  505,  505,  505,
-      367,  368,  522,  985,  522, 1024,  287,  523,  523,  523,
-      523,  499, 1036,  342,  342,  342,  342,  343,  344,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      269,  342,  342,  367,  370,  319,  320,  364,  342,  342,
-      342,  502,  502,  502,  502,  205,  941,  298,  298,  298,
-      298,  292,  499,  944,  342,  319,  320,  949,  207,  269,
-      365,  363,  208,  319,  322,  343,  344,  323,  499,  319,
-      320,  367,  368, 1035,  207,  343,  350,  640,  342,  342,
-      367,  368,  530,  676,  347,  533,  533,  677,  308, 1034,
-
-      304,  304,  304,  304,  380, 1033,  376,  376,  376,  376,
-      324,  310,  531,  575,  575,  311,  381,  382,  319,  320,
-      641,  383,  544,  384,  444,  444,  385,  310,  319,  320,
-      381,  343,  344,  382,  329,  329,  329,  329,  319,  320,
-     1032,  384,  538,  942,  536,  536,  536,  539,  292,  385,
-      366,  366,  367,  368,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366, 1031,  366,  366,  305,  305,
-      305,  305,  388,  366,  366,  366,  617, 1030,  545,  517,
-      520,  520,  520,  520,  618,  319,  320,  619,  950,  366,
-      998,  517,  363,  343,  346,  517,  534,  347,  534,  367,
-
-      374,  535,  535,  535,  535,  343,  346,  517,  371,  347,
-      367,  368,  990,  366,  366,  366,  366,  367,  368,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
-      348,  366,  366,  988,  319,  320,  230,  388,  366,  366,
-      366,  986,  348,  269,  367,  370,  319,  320,  371, 1023,
-      329,  329,  329,  329,  366,  343,  344,  558,  343,  344,
-      389,  529,  532,  532,  532,  532,  503,  503,  367,  368,
-      811,  547,  547,  529,  550,  550,  550,  529,  366,  366,
-      401,  372,  397,  397,  397,  397,  951,  343,  344,  529,
-      387,  552,  402,  403,  343,  344,  553,  404,  411,  405,
-
-      411,  411,  406,  343,  344, 1022,  402,  367,  368,  403,
-      353,  353,  353,  353,  548,  559,  548,  405, 1021,  549,
-      549,  549,  549,  561,  561,  406,  390,  390, 1020,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  991,  390,  390,  343,  344,  367,  374,  409,  390,
-      390,  390,  578,  578,  578,  371,  521,  521,  367,  368,
-      353,  353,  353,  353,  952,  390,  343,  344,  387,  367,
-      370,  543, 1019,  371,  377,  377,  377,  377,  398,  398,
-      398,  398,  546,  546,  546,  546,  339,  543,  663,  390,
-      390,  390,  390,  543,  390,  390,  390,  390,  390,  390,
-
-      390,  390,  390,  390,  390,  390,  372,  390,  390,  543,
-      367,  368, 1018,  409,  390,  390,  390,  412,  412,  412,
-      412,  664,  367,  368,  575,  575,  377,  377,  377,  377,
-      390,  805,  806,  367,  368, 1017,  410,  557,  564,  564,
-      564,  413,  413,  413,  413,  414,  414,  414,  414,  560,
-      560,  560,  560,  557,  390,  390,  507,  507,  507,  507,
-      557,  415,  415,  415,  415,  507,  507,  507,  367,  368,
-      319,  320,  566,  447,  447,  447,  557,  567, 1016,  507,
-      507,  507,  507,  507,  507,  274,  274, 1015,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-
-      667,  274,  274,  367,  368,  747, 1014,  293,  274,  274,
-      274,  506,  506,  506,  562,  987,  562, 1025,  690,  563,
-      563,  563,  563,  401,  274,  397,  397,  397,  397,  446,
-      446,  446,  446,  668,  817,  818,  403,  576,  748,  576,
-      404, 1013,  577,  577,  577,  577,  319,  320,  274,  274,
-      274,  274,  403,  274,  274,  274,  510,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  511,  511,  511,  511,
-      511,  511,  511,  511,  511,  511,  511,  511,  511,  274,
-      511,  511,  511,  511,  511,  511,  511,  511,  511,  511,
-
-      511,  511,  511,  511,  511,  511,  511,  511,  511,  511,
-      511,  511,  511,  274,  274,  274,  274, 1012,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-     1011,  274,  274,  398,  398,  398,  398,  293,  274,  274,
-      274,  524,  524,  524,  571,  574,  574,  574,  574, 1010,
-      443,  443,  443,  443,  274, 1009,  571,  585,  985,  585,
-      571,  416,  586,  586,  586,  586,  446,  446,  446,  446,
-      319,  693,  571,  512,  319,  320,  269,  416,  274,  274,
-      525,  525,  525,  525, 1008,  229,  229,  229,  229,  525,
-      525,  525,  230,  230,  230,  230, 1007,  343,  344,  232,
-
-      232,  232,  232,  525,  525,  525,  525,  525,  525,  300,
-      300,  300,  300,  300,  300, 1006,  300,  300,  300,  300,
-      300,  300,  300,  300,  691,  300,  300, 1005,  229,  645,
-      229,  316,  300,  300,  300,  230, 1004,  230,  505,  505,
-      505,  505,  232, 1003,  232,  708,  319,  697,  300,  491,
-      491,  491,  491,  490,  658,  694,  658,  319,  320,  659,
-      659,  659,  659,  505,  505,  505,  505,  523,  523,  523,
-      523,  648,  300,  300,  300,  300,  300,  300,  300,  300,
-      474,  300,  300,  300,  300,  300,  300,  300,  300,  300,
-      300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
-
-      527,  527,  527,  527,  527,  527,  527,  527,  527,  527,
-      527,  527,  527,  300,  527,  527,  527,  527,  527,  527,
-      527,  527,  527,  527,  527,  527,  527,  527,  527,  527,
-      527,  527,  527,  527,  527,  527,  527,  300,  300,  300,
-      300,  300,  300,  300,  300, 1002,  300,  300,  300,  300,
-      300,  300,  300,  300, 1001,  300,  300,  319,  699,  229,
-      230,  316,  300,  300,  300,  229,  230,  269, 1000,  229,
-      953,  300,  230,  232,  408,  637,  230,  999,  300,  232,
-      683,  367,  368,  232,  319,  320,  751,  502,  502,  502,
-      502,  656,  578,  578,  578,  657,  649,  528,  499,  230,
-
-      533,  533,  300,  300,  319,  320,  269,  646,  319,  693,
-      644,  647,  694,  635,  499,  343,  715,  640,  332,  752,
-      328,  328,  328,  328,  712,  520,  520,  520,  520,  726,
-      663,  334,  678,  812,  678,  335,  517,  679,  679,  679,
-      679,  523,  523,  523,  523,  695,  636,  334,  319,  320,
-      641,  984,  517,  319,  320,  343,  344,  945,  343,  344,
-      319,  320,  315,  664,  537,  537,  537,  537,  989,  535,
-      535,  535,  535,  537,  537,  537,  535,  535,  535,  535,
-      667,  367,  368,  577,  577,  577,  577,  537,  537,  537,
-      537,  537,  537,  318,  318,  319,  320,  318,  318,  318,
-
-      318,  318,  318,  318,  318,  318,  318,  318,  709,  318,
-      318,  319,  320,  668,  315,  340,  318,  318,  318,  319,
-      320,  989,  688, 1024,  688,  343,  344,  689,  689,  689,
-      689,  727,  318,  343,  344,  536,  536,  536,  367,  368,
-      946,  547,  547,  983,  706,  315,  706,  343,  711,  707,
-      707,  707,  707,  982,  561,  561,  318,  318,  318,  318,
-      319,  320,  318,  318,  540,  318,  318,  318,  318,  318,
-      318,  318,  318,  318,  318,  318,  318,  318,  318,  318,
-      318,  318,  318,  318,  541,  541,  541,  541,  541,  541,
-      541,  541,  541,  541,  541,  541,  541,  318,  541,  541,
-
-      541,  541,  541,  541,  541,  541,  541,  541,  541,  541,
-      541,  541,  541,  541,  541,  541,  541,  541,  541,  541,
-      541,  318,  318,  318,  318,  319,  320,  318,  318,  318,
-      318,  318,  318,  318,  318,  318,  318,  318,  981,  318,
-      318,  319,  320,  367,  733,  340,  318,  318,  318,  343,
-      344,  980,  730,  343,  344,  343,  717,  532,  532,  532,
-      532,  979,  318,  319,  699,  367,  368,  700,  529,  546,
-      546,  546,  546,  978,  343,  344,  577,  577,  577,  577,
-      543,  542,  367,  729,  529,  747,  318,  318,  343,  344,
-      549,  549,  549,  549,  343,  344,  543,  343,  711,  954,
-
-      701,  712,  356,  408,  352,  352,  352,  352,  343,  344,
-      549,  549,  549,  549,  751,  358,  343,  717,  748,  359,
-      718,  986,  229,  229,  550,  550,  550,  367,  368,  230,
-      230,  358,  343,  344,  713,  977,  232,  232,  724,  269,
-      724,  367,  368,  725,  725,  725,  725,  752,  551,  551,
-      551,  551,  990,  719,  367,  735,  229,  551,  551,  551,
-      367,  729,  230,  230,  730,  586,  586,  586,  586,  269,
-      232,  551,  551,  551,  551,  551,  551,  342,  342,  343,
-      344,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  939,  342,  342,  367,  368,  731,  315,  364,
-
-      342,  342,  342,  367,  368,  804,  300,  367,  368,  976,
-      637,  560,  560,  560,  560,  683,  342,  367,  368,  564,
-      564,  564,  557,  563,  563,  563,  563,  586,  586,  586,
-      586,  319,  320,  563,  563,  563,  563,  997,  557, 1029,
-      342,  342,  342,  342,  343,  344,  342,  342,  554,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  342,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      160,  161,  160,  160,  160,  160,  160,  150,  150,  164,
+      164,  165,  166,  164,  164,  167,  164,  164,  164,  164,
+      168,  164,  169,  164,  169,  170,  164,  171,  172,  172,
+      172,  164,  173,  164,  164,  174,  174,  174,  174,  174,
+      174,  174,  174,  174,  174,  174,  174,  174,  164,  174,
+      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+      174,  174,  174,  174,  174,  174,  175,  174,  174,  174,
+      174,  174,  164,  164,  178,  295,  178,  178,  178,  180,
+
+      178,  178,  196,  453,  197,  197,  197,  197,  454,  179,
+      198,  245,  196,  179,  197,  197,  197,  197,  246, 1084,
+      199,  200,  200,  200,  200,  248,  487,  201,  296,  202,
+      202,  202,  202,  202,  203,  202,  202,  202,  202,  202,
+      202,  202,  488,  202,  204,  205,  206,  202,  207,  208,
+      209,  202,  210,  211,  212,  213,  202,  214,  202,  215,
+      216,  217,  202,  202,  202,  218,  221,  245,  197,  197,
+      197,  197,  466,  245,  246,  245, 1013,  245,  222,  223,
+      246,  248,  246,  224,  246,  225,  467,  248,  226,  248,
+      260,  248,  222,  320,  287,  223,  221,  193,  197,  197,
+
+      197,  197,  322,  225,  275,  245,  275,  275, 1019,  223,
+      254,  226,  246,  224,  255,  249,  249,  249,  249,  248,
+      250,  183,  340,  341,  253,  223,  227,  256,  228,  624,
+      261,  229, 1083,  245,  230,  231,  232,  233,  234,  235,
+      246,  245,  236,  246,  237,  238,  625,  248,  246,  262,
+      287,  262,  262,  360,  184,  248,  245,  262,  180,  262,
+      262,  241,  242,  246,  179,  264,  180,  264,  264,  821,
+      248,  251,  179,  275,  180,  275,  275,  252,  822,  196,
+      263,  197,  197,  197,  197,  257, 1089,  227,  276,  277,
+      278,  276,  461,  255,  462,  271,  231,  232,  272,  273,
+
+      235,  340,  347,  420,  202,  265,  238,  202,  183,  202,
+      344,  266,  267,  268,  269,  463,  270,  464,  202,  202,
+      202,  366,  367,  246,  202,  276,  277,  278,  276,  280,
+      287,  280,  281,  280,  280,  196,  421,  197,  197,  197,
+      197,  184,  200,  200,  200,  200,  221, 1082,  197,  197,
+      197,  197,  482,  289,  290,  277,  291,  290, 1081,  223,
+      483,  246,  287,  224,  288,  288,  288,  288,  287,  283,
+      284,  366,  367,  524,  285,  223,  290,  277,  291,  290,
+      298,  525,  299,  299,  299,  299,  300,  300,  300,  300,
+      920,  313,  292,  313,  313,  313,  293,  313,  313,  292,
+
+      489,  319,  292,  319,  319,  490,  292,  200,  200,  200,
+      200,  366,  373,  338,  301,  338,  338,  292,  302,  303,
+      370,  299,  299,  299,  299,  292,  317,  317,  317,  317,
+      320,  304,  305,  340,  341,  315,  306,  320,  307,  316,
+      320,  308,  392,  393,  320,  304,  246,  323,  305,  324,
+      324,  324,  324,  287,  359,  320,  307,  363,  340,  364,
+      363,  392,  393,  320,  308,  292,  292, 1080,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      839,  292,  292,  325,  325,  325,  325,  311,  292,  292,
+      292,  449,  221, 1079,  317,  317,  317,  317,  363,  340,
 
-      555,  555,  555,  555,  555,  342,  342,  342,  342,  343,
-      344,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  975,  342,  342,  574,  574,  574,  574,  364,
-      342,  342,  342,  974,  319,  697,  571,  367,  735,  319,
-      320,  736,  742,  694,  742,  973,  342,  743,  743,  743,
-      743,  972,  571,  229,  229,  659,  659,  659,  659,  971,
-      230,  230,  229,  339,  896,  556,  970,  232,  232,  230,
-      342,  342,  367,  368,  737,  969,  232,  659,  659,  659,
-      659,  679,  679,  679,  679,  968,  380,  967,  376,  376,
-      376,  376,  343,  344,  801,  802,  319,  320,  966,  382,
-
-      846,  319,  320,  383,  319,  320,  803,  679,  679,  679,
-      679,  319,  320,  847,  965,  382,  367,  368,  964,  848,
-      689,  689,  689,  689,  343,  344,  963,  689,  689,  689,
-      689,  992,  565,  565,  565,  565,  319,  320,  962,  827,
-      540,  565,  565,  565,  828,  319,  693,  363,  898,  694,
-      319,  693,  343,  344,  694,  565,  565,  565,  565,  565,
-      565,  366,  366,  367,  368,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  339,  366,  366,  319,
-      697,  961,  695,  388,  366,  366,  366,  695,  694,  343,
-      344,  367,  368,  343,  344,  831,  960,  343,  344,  959,
-
-      366,  554,  367,  368,  956,  707,  707,  707,  707,  707,
-      707,  707,  707,  343,  715,  367,  368,  957,  725,  725,
-      725,  725,  712,  958,  366,  366,  366,  366,  367,  368,
-      366,  366,  568,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  569,  569,  569,  569,  569,  569,  569,  569,
-      569,  569,  569,  569,  569,  366,  569,  569,  569,  569,
-      569,  569,  569,  569,  569,  569,  569,  569,  569,  569,
-      569,  569,  569,  569,  569,  569,  569,  569,  569,  366,
-      366,  366,  366,  367,  368,  366,  366,  366,  366,  366,
+      364,  363, 1078,  450,  292,  223,  340,  341,  628,  224,
+      629,  326,  340,  343,  496,  327,  344,  392,  399,  497,
+      348,  223,  349,  349,  349,  349,  396, 1077,  292,  292,
+      292,  292,  498,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  360,  292,  292,  925,  345,
+      366,  367,  311,  292,  292,  292,  339,  389,  366,  390,
+      389,  340,  341,  339,  366,  369,  339, 1076,  370,  292,
+      339,  385,  472,  472,  310,  312,  919,  350,  350,  350,
+      350,  339,  389,  366,  390,  389,  392,  395,  456,  339,
+      396,  287,  457,  292,  292,  328,  458,  324,  324,  324,
+
+      324,  371,  475,  475,  475,  351, 1075,  329,  330,  352,
+      392,  393,  331,  438,  332,  438,  438,  333,  849,  366,
+      367,  329, 1074,  397,  330,  415,  392,  416,  415,  480,
+      481,  411,  332,  374,  496,  375,  375,  375,  375,  497,
+      333,  320,  320,  320,  320,  320,  320, 1073,  320,  320,
+      320,  320,  320,  320,  320,  320, 1072,  320,  320,  415,
+      392,  416,  415,  336,  320,  320,  320,  392,  393,  423,
+      295,  424,  424,  424,  424,  499,  500,  366,  367,  386,
+      320,  400,  927,  401,  401,  401,  401,  438,  418,  438,
+      438,  480,  516,  376,  376,  376,  376,  178, 1071,  178,
+
+      178,  531,  531,  296,  320,  320,  320,  320,  320,  320,
+      320,  320,  179,  320,  320,  320,  320,  320,  320,  320,
+      320,  377,  320,  320, 1070,  378,  420,  365,  336,  320,
+      320,  320,  484,  391,  365, 1069,  485,  365,  392,  393,
+      391,  365,  335,  391,  923,  320,  439,  391,  439,  439,
+      486,  337,  365, 1015,  402,  402,  402,  402,  391,  421,
+      365,  440,  440,  440,  440,  264,  391,  264,  264,  320,
+      320,  340,  341,  425,  425,  425,  425,  441,  441,  441,
+      441,  275,  403,  275,  275,  353,  404,  349,  349,  349,
+      349,  442,  442,  442,  442,  536,  417,  354,  355,  310,
+
+      537,  426,  356,  417,  357,  427,  417,  358,  549,  549,
+      417,  354, 1068,  245,  355,  443,  443,  443,  443, 1067,
+      246,  417,  357,  200,  200,  200,  200,  248, 1066,  417,
+      358,  339,  339,  340,  341,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  287,  339,  339,  313,
+      245,  313,  313,  361,  339,  339,  339,  246,  221, 1065,
+      197,  197,  197,  197,  248,  200,  200,  200,  200,  975,
+      339,  223,  473,  360,  473,  224,  444,  474,  474,  474,
+      474,  456,  544,  246,  320,  457,  496,  223,  193,  515,
+      287,  554,  444,  322,  339,  339,  339,  339,  340,  341,
 
-      366,  366,  366,  366,  366,  366,  993,  366,  366,  343,
-      344,  343,  715,  388,  366,  366,  366,  955,  367,  368,
-      712,  367,  368,  319,  699,  319,  699,  700,  935,  700,
-      366,  343,  711,  343,  711,  712,  934,  712,  343,  717,
-      343,  717,  718,  933,  718,  932,  367,  368,  862,  570,
-      568,  363,  832,  931,  366,  366,  579,  579,  579,  579,
-      701,  835,  701,  863,  836,  579,  579,  579,  713,  864,
-      713,  743,  743,  743,  743,  719,  930,  719,  994,  579,
-      579,  579,  579,  579,  579,  390,  390,  929,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-
-      928,  390,  390,  367,  368,  367,  733,  409,  390,  390,
-      390,  230,  387,  900,  730,  927,  367,  733,  269,  725,
-      725,  725,  725,  363,  390,  730,  743,  743,  743,  743,
-      408,  902,  938,  229,  938,  938,  319,  320,  229,  938,
-      230,  938,  938,  343,  344,  230,  888,  232,  390,  390,
-      390,  390,  232,  390,  390,  390,  582,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  583,  583,  583,  583,
-      583,  583,  583,  583,  583,  583,  583,  583,  583,  390,
-      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  287,  339,  339,  262,  663,  262,  262,  361,  339,
+      339,  339,  471,  471,  471,  471,  526, 1064,  319,  179,
+      319,  319,  245,  444,  971,  339,  534,  534,  534,  246,
+      245,  362,  504,  504,  504,  504,  248,  246,  664,  444,
+      245,  245,  340,  341,  248, 1063,  245,  246,  246,  339,
+      339,  366,  367,  246,  248,  248,  287,  245,  287,  245,
+      248,  552,  552,  552,  246,  379,  246,  375,  375,  375,
+      375,  248,  338,  248,  338,  338,  509,  380,  381, 1062,
+      505,  972,  382,  850,  383,  340,  341,  384,  507,  508,
+
+      506,  380,  245,  668,  381,  276,  277,  278,  276,  246,
+      608,  512,  383,  340,  341,  609,  248,  510,  340,  343,
+      384,  365,  365,  366,  367,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  669,  365,  365,  276,
+      277,  278,  276,  387,  365,  365,  365,  340,  347, 1061,
+      511,  519,  519,  519,  519,  518,  344, 1013,  246, 1052,
+      365,  288,  288,  288,  288,  287,  290,  277,  291,  290,
+      290,  277,  291,  290,  300,  300,  300,  300,  325,  325,
+      325,  325,  340,  341,  365,  365,  365,  365,  366,  367,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
 
-      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
-      583,  583,  583,  390,  390,  390,  390,  926,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      995,  390,  390,  925,  230,  230,  924,  409,  390,  390,
-      390,  269,  269,  996,  319,  320,  992,  367,  729,  367,
-      729,  730,  997,  730,  390,  367,  735,  367,  735,  736,
-      229,  736,  229,  229,  923,  940,  998,  230,  922,  230,
-      230,  889,  921,  584,  232,  387,  232,  232,  390,  390,
-      507,  507,  507,  507,  731,  920,  731,  919,  387,  507,
-      507,  507,  737,  918,  737,  367,  368,  408,  917,  916,
-
-      936,  885,  883,  507,  507,  507,  507,  507,  507,  274,
-      274,  408,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  915,  274,  274,  985,  229,  914,
-      913,  670,  274,  274,  274,  230,  985,  912,  230,  986,
-      229,  986,  232,  229,  911,  269,  910,  230,  274,  909,
-      230,  908,  230,  907,  232,  906,  905,  232,  904,  269,
-      319,  320,  991,  817, 1026,  937,  343,  344,  993,  887,
-     1027,  805,  274,  274,  274,  274,  882,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  292,
-      274,  274,  292,  292,  292,  292,  293,  274,  274,  274,
+      365,  412,  365,  365,  929,  340,  347,  969,  387,  365,
+      365,  365,  310,  303,  344,  299,  299,  299,  299,  340,
+      341,  300,  300,  300,  300,  365,  305,  340,  341,  558,
+      306,  388,  527,  530,  530,  530,  530,  340,  341,  340,
+      343,  287,  305,  344,  527,  366,  367, 1060,  527,  365,
+      365,  392,  393,  561,  561,  976,  532, 1016,  532,  360,
+      527,  533,  533,  533,  533,  405,  559,  401,  401,  401,
+      401,  921,  325,  325,  325,  325,  345,  406,  407,  366,
+      367, 1059,  408,  545,  409,  366,  367,  410,  366,  369,
+      550,  406,  550,  691,  407,  551,  551,  551,  551,  545,
+
+      340,  343,  409,  310,  344,  363,  340,  364,  363, 1020,
+      410,  391,  391,  392,  393,  391,  391,  391,  391,  391,
+      391,  391,  391,  391,  391,  391,  692,  391,  391,  363,
+      340,  364,  363,  413,  391,  391,  391,  345,  221,  695,
+      317,  317,  317,  317,  328, 1058,  324,  324,  324,  324,
+      391,  223,  340,  341,  360,  224, 1026,  330,  775,  366,
+      369,  331,  977,  370,  366,  367,  386,  223,  350,  350,
+      350,  350,  696,  330,  391,  391,  391,  391,  392,  393,
+      391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
+      391,  776,  391,  391,  340,  341,  371, 1021,  413,  391,
+
+      391,  391,  548,  548,  548,  548,  340,  341,  366,  373,
+      564,  564,  564,  545,  978,  391, 1014,  370,  386,  340,
+      341,  414,  350,  350,  350,  350,  779,  366,  369,  545,
+      562,  370,  562,  557,  287,  563,  563,  563,  563,  391,
+      391,  428,  386,  424,  424,  424,  424,  340,  341,  557,
+      970,  566,  663,  429,  430,  310,  567, 1018,  431,  780,
+      432,  366,  367,  433,  371,  366,  373,  429,  366,  367,
+      430,  366,  367, 1016,  370,  580,  392,  393,  432, 1017,
+      581,  389,  366,  390,  389,  664,  433,  417,  417, 1014,
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+
+      417,  417,  973,  417,  417,  340,  341,  335,  572,  436,
+      417,  417,  417,  366,  367,  573,  668,  366,  367,  392,
+      393,  560,  560,  560,  560,  335,  417,  366,  367,  575,
+      575, 1051,  557,  376,  376,  376,  376,  389,  366,  390,
+      389,  392,  393,  376,  376,  376,  376, 1050,  557,  669,
+      417,  417,  417,  417,  571,  417,  417,  417,  417,  417,
+      417,  417,  417,  417,  417,  417,  417, 1018,  417,  417,
+      571,  366,  367, 1049,  436,  417,  417,  417,  392,  395,
+      392,  393, 1048,  366,  367,  392,  393,  574,  574,  574,
+      574,  417,  366,  367,  576, 1047,  576,  437,  571,  577,
+
+      577,  577,  577,  392,  399,  603,  603,  979,  578,  578,
+      578,  412,  396,  335,  571,  417,  417,  535,  535,  535,
+      535, 1046,  392,  399,  472,  472,  535,  535,  535,  392,
+      395,  396,  586,  396,  691,  392,  395,  392,  393,  396,
+      535,  535,  535,  535,  535,  535,  292,  292, 1045,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292, 1044,  292,  292,  392,  393,  397,  692,  311,  292,
+      292,  292,  397,  392,  393,  392,  393,  606,  606,  606,
+      402,  402,  402,  402,  587,  292,  590, 1043,  590,  589,
+      589,  591,  591,  591,  591,  392,  393,  531,  531,  594,
 
+      415,  392,  416,  415,  595,  415,  392,  416,  415,  292,
+      292,  292,  292, 1042,  292,  292,  292,  538,  292,  292,
       292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  274,  292,  292,  292,  292,  292,  292,
-      671,  292,  292,  292,  672,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  274,  274,  525,
-      525,  525,  525,  881,  229,  229,  880,  879,  525,  525,
-      525,  230,  230,  343,  344,  994,  878,  877,  232,  232,
-      876,  875,  525,  525,  525,  525,  525,  525,  300,  300,
-      300,  300,  300,  300,  874,  300,  300,  300,  300,  300,
-      300,  300,  300,  873,  300,  300,  872,  871,  884,  870,
-      685,  300,  300,  300,  886,  367,  368,  995,  869, 1028,
-
-      367,  368,  996,  868,  867,  866,  865,  300,  861,  860,
-      859,  858,  857,  856,  855,  854,  853,  852,  851,  850,
-      849,  845,  844,  843,  842,  582,  747,  840,  839,  838,
-      834,  300,  300,  300,  300,  300,  300,  300,  300,  830,
-      300,  300,  300,  300,  300,  300,  300,  300,  315,  300,
-      300,  315,  315,  315,  315,  316,  300,  300,  300,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  300,  315,  315,  315,  315,  315,  315,  686,
-      315,  315,  315,  687,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  300,  300,  319,  320,
-
-      826,  474,  824,  823,  820,  819,  816,  510,  663,  814,
-      813,  810,  809,  808,  537,  537,  537,  537,  807,  474,
-      643,  635,  800,  537,  537,  537,  799,  798,  797,  796,
-      795,  792,  791,  790,  789,  788,  787,  537,  537,  537,
-      537,  537,  537,  318,  318,  319,  320,  318,  318,  318,
-      318,  318,  318,  318,  318,  318,  318,  318,  786,  318,
-      318,  785,  784,  783,  782,  703,  318,  318,  318,  781,
-      780,  779,  778,  777,  776,  775,  774,  773,  772,  771,
-      770,  769,  318,  768,  767,  766,  765,  764,  763,  762,
-      761,  760,  759,  758,  757,  747,  745,  744,  681,  680,
-
-      675,  674,  673,  663,  661,  660,  318,  318,  318,  318,
-      319,  320,  318,  318,  318,  318,  318,  318,  318,  318,
-      318,  318,  318,  339,  318,  318,  339,  339,  339,  339,
-      340,  318,  318,  318,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  318,  339,  339,
-      339,  339,  339,  339,  704,  339,  339,  339,  705,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  318,  318,  343,  344,  655,  654,  653,  652,  490,
-      617,  600,  596,  650,  643,  638,  635,  633,  632,  551,
-      551,  551,  551,  631,  630,  629,  628,  627,  551,  551,
-
-      551,  626,  625,  624,  623,  622,  621,  620,  616,  615,
-      614,  613,  551,  551,  551,  551,  551,  551,  342,  342,
-      343,  344,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  612,  342,  342,  611,  610,  609,  608,
-      721,  342,  342,  342,  607,  606,  605,  604,  603,  602,
-      599,  598,  595,  594,  593,  592,  591,  342,  590,  589,
-      588,  587,  573,  572,  393,  519,  518,  515,  514,  513,
-      501,  500,  277,  474,  495,  494,  490,  462,  460,  436,
-      433,  342,  342,  342,  342,  343,  344,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  363,  342,
-
-      342,  363,  363,  363,  363,  364,  342,  342,  342,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  342,  363,  363,  363,  363,  363,  363,  722,
-      363,  363,  363,  723,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  342,  342,  367,  368,
-      431,  486,  422,  485,  474,  269,  473,  467,  466,  463,
-      451,  450,  449,  442,  565,  565,  565,  565,  441,  440,
-      437,  427,  424,  565,  565,  565,  423,  420,  419,  418,
-      167,  407,  393,  391,  314,  269,  295,  565,  565,  565,
-      565,  565,  565,  366,  366,  367,  368,  366,  366,  366,
-
-      366,  366,  366,  366,  366,  366,  366,  366,  291,  366,
-      366,  277,  275,  246,  257,  739,  366,  366,  366,  167,
-      246,  257,  167,  174,  165, 1061,   96,   65,   57, 1061,
-     1061, 1061,  366, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061,  366,  366,  366,  366,
-      367,  368,  366,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  387,  366,  366,  387,  387,  387,  387,
-      388,  366,  366,  366,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  366,  387,  387,
+      292,  292,  292,  292,  292,  292,  292,  539,  539,  539,
+      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
+      292,  539,  539,  539,  539,  539,  539,  539,  539,  539,
+      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
+      539,  539,  539,  539,  292,  292,  292,  292, 1041,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  974,  292,  292,  392,  393,  335,  645,  311,  292,
 
-      387,  387,  387,  387,  740,  387,  387,  387,  741,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  366,  366,  579,  579,  579,  579, 1061, 1061, 1061,
-     1061, 1061,  579,  579,  579, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061,  579,  579,  579,  579,
-      579,  579,  390,  390, 1061,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390, 1061,  390,  390,
-     1061, 1061, 1061, 1061,  754,  390,  390,  390, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061,  390, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061,  390,  390,  390,  390, 1061,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  408,  390,  390,  408,  408,  408,  408,  409,
-      390,  390,  390,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  390,  408,  408,  408,
-      408,  408,  408,  755,  408,  408,  408,  756,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      390,  390,  274,  274, 1061,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274, 1061,  274,  274,
-
-     1061, 1061, 1061, 1061,  670,  274,  274,  274, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061,  274, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061,  274,  274,  274,  274, 1061,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  292,  274,  274,  292,  292,  292,  292,  293,
-      274,  274,  274,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  274,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  815,  292,  292,  292,
+      292,  292,  392,  393, 1040,  646,  392,  393,  647, 1022,
+      402,  402,  402,  402,  438,  292,  438,  438,  592,  592,
+      592,  585,  588,  588,  588,  588,  425,  425,  425,  425,
+      475,  475,  475,  585,  540,  549,  549,  585, 1039,  292,
+      292,  553,  553,  553,  553,  439, 1038,  439,  439,  585,
+      553,  553,  553,  604,  386,  604,  603,  603,  605,  605,
+      605,  605,  833,  834,  553,  553,  553,  553,  553,  553,
+      320,  320,  320,  320,  320,  320, 1037,  320,  320,  320,
+      320,  320,  320,  320,  320, 1013,  320,  320,  440,  440,
+      440,  440,  336,  320,  320,  320,  246,  428, 1036,  424,
+
+      424,  424,  424,  287,  425,  425,  425,  425, 1035,  320,
+      430,  534,  534,  534,  431,  599,  441,  441,  441,  441,
+      442,  442,  442,  442,  845,  846,  430,  443,  443,  443,
+      443,  599, 1034,  320,  320,  320,  320,  320,  320,  320,
+      320,  502,  320,  320,  320,  320,  320,  320,  320,  320,
+      320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
+      320,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  320,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  320,  320,
 
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      274,  274,  300,  300,  300,  300,  300,  300, 1061,  300,
-      300,  300,  300,  300,  300,  300,  300, 1061,  300,  300,
-     1061, 1061, 1061, 1061,  685,  300,  300,  300, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061,  300, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061,  300,  300,  300,  300,  300,
-      300,  300,  300, 1061,  300,  300,  300,  300,  300,  300,
-      300,  300,  315,  300,  300,  315,  315,  315,  315,  316,
-
-      300,  300,  300,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  300,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  825,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      300,  300,  318,  318,  319,  320,  318,  318,  318,  318,
-      318,  318,  318,  318,  318,  318,  318, 1061,  318,  318,
-     1061, 1061, 1061, 1061,  703,  318,  318,  318, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061,  318, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
-     1061, 1061, 1061, 1061, 1061,  318,  318,  318,  318,  319,
-      320,  318,  318,  318,  318,  318,  318,  318,  318,  318,
-      318,  318,  339,  318,  318,  339,  339,  339,  339,  340,
-      318,  318,  318,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  318,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  829,  339,  339,  339,
+      320,  320,  320,  320,  320,  320, 1033,  320,  320,  320,
+      320,  320,  320,  320,  320, 1032,  320,  320,  602,  602,
+      602,  602,  336,  320,  320,  320,  613,  287,  613,  599,
+     1031,  614,  614,  614,  614,  471,  471,  471,  471,  320,
+      474,  474,  474,  474, 1030,  599,  444,  474,  474,  474,
+      474,  704, 1029,  245,  245,  705,  695, 1015,  556, 1053,
+      246,  246,  444,  320,  320,  340,  341,  248,  248,  340,
+      341,  245, 1028,  245,  533,  533,  533,  533,  246,  353,
+      246,  349,  349,  349,  349,  248,  245,  248,  245,  696,
+      245,  245,  355,  246, 1027,  246,  356,  246,  246,  672,
+
+      248, 1012,  248,  320,  248,  248,  245,  665,  355,  340,
+      341,  246,  711,  246,  775,  673,  435,  718,  287,  931,
+      248,  533,  533,  533,  533,  565,  565,  565,  565,  674,
+     1017,  676, 1052,  675,  565,  565,  565,  519,  519,  519,
+      519,  518,  684,  677,  366,  367,  685,  776,  565,  565,
+      565,  565,  565,  565,  339,  339,  340,  341,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  890,
+      339,  339,  530,  530,  530,  530,  361,  339,  339,  339,
+      686, 1011,  686,  527,  891,  687,  687,  687,  687,  706,
+      892,  706,  736,  339,  707,  707,  707,  707, 1010,  527,
+
+      551,  551,  551,  551,  551,  551,  551,  551,  552,  552,
+      552,  605,  605,  605,  605,  340,  341,  339,  339,  339,
+      339,  340,  341,  339,  339,  568,  339,  339,  339,  339,
       339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      318,  318,  342,  342,  343,  344,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  342, 1061,  342,  342,
-     1061, 1061, 1061, 1061,  721,  342,  342,  342, 1061, 1061,
-
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061,  342, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061,  342,  342,  342,  342,  343,
-      344,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  363,  342,  342,  363,  363,  363,  363,  364,
-      342,  342,  342,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  342,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  833,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-
-      342,  342,  366,  366,  367,  368,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  366, 1061,  366,  366,
-     1061, 1061, 1061, 1061,  739,  366,  366,  366, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061,  366, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061,  366,  366,  366,  366,  367,
-      368,  366,  366,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  387,  366,  366,  387,  387,  387,  387,  388,
-      366,  366,  366,  387,  387,  387,  387,  387,  387,  387,
+      339,  339,  339,  339,  339,  569,  569,  569,  569,  569,
+      569,  569,  569,  569,  569,  569,  569,  569,  339,  569,
+      569,  569,  569,  569,  569,  569,  569,  569,  569,  569,
+      569,  569,  569,  569,  569,  569,  569,  569,  569,  569,
+      569,  569,  339,  339,  339,  339,  340,  341,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339, 1009,
 
-      387,  387,  387,  387,  387,  387,  366,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  837,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      366,  366,  390,  390, 1061,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390, 1061,  390,  390,
-     1061, 1061, 1061, 1061,  754,  390,  390,  390, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061,  390, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061,  390,  390,  390,  390, 1061,
-
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  408,  390,  390,  408,  408,  408,  408,  409,
-      390,  390,  390,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  390,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  841,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      390,  390,  274,  274, 1061,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  292,  274,  274,
-      292,  292,  292,  292,  293,  274,  274,  274,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      339,  339,  548,  548,  548,  548,  361,  339,  339,  339,
+      340,  341, 1008,  545,  340,  341,  340,  721,  340,  341,
+      722,  340,  341,  339,  980,  716, 1007,  716,  412,  545,
+      717,  717,  717,  717,  560,  560,  560,  560,  340,  341,
+      340,  341,  570,  340,  725,  557,  779,  339,  339,  366,
+      367, 1006,  722,  723,  561,  561,  563,  563,  563,  563,
+      719,  557, 1005,  379,  855,  375,  375,  375,  375,  340,
+      341,  340,  727,  340,  341,  728,  381,  366,  367,  780,
+      382,  366,  367,  366,  367,  563,  563,  563,  563,  564,
+      564,  564,  381,  366,  367,  366,  743,  575,  575,  577,
+
+      577,  577,  577,  981,  740,  366,  367,  435,  729,  579,
+      579,  579,  579,  366,  367, 1004,  392,  393,  579,  579,
+      579,  577,  577,  577,  577,  340,  341,  737, 1003,  578,
+      578,  578,  579,  579,  579,  579,  579,  579,  365,  365,
+      366,  367,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365, 1002,  365,  365,  366,  367,  340,  721,
+      387,  365,  365,  365,  754,  392,  393,  734,  856,  734,
+      392,  393,  735,  735,  735,  735,  752,  365,  752,  392,
+      393,  753,  753,  753,  753, 1001,  589,  589,  340,  341,
+      392,  761,  606,  606,  606,  591,  591,  591,  591,  758,
 
-      292,  274,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  890,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  274,  274,  300,  300,  300,
-      300,  300,  300, 1061,  300,  300,  300,  300,  300,  300,
-      300,  300,  315,  300,  300,  315,  315,  315,  315,  316,
-      300,  300,  300,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  300,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  894,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      300,  300,  166, 1061,  166,  166,  166,  166,  166,  166,
-
-      166,  166,  166,  169, 1061, 1061,  169,  169,  177, 1061,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  231,
-      231,  231,  231,  231,  231,  231,  231,  261,  261,  261,
-      261,  264, 1061,  264, 1061,  264,  264,  264,  264,  268,
-      268,  268,  268,  268,  268,  268,  274, 1061,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  276, 1061,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  279, 1061,
-      279,  279,  279,  279,  279,  279,  279,  279,  279,  292,
-     1061,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      230,  230,  230,  230,  230,  230,  230,  300,  300, 1061,
-
-      300,  300,  300,  300,  300,  300,  300,  300,  301,  301,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  315,
-      315, 1061,  315,  315,  315,  315,  315,  315,  315,  315,
-      318,  318,  318,  318,  318,  318,  318,  318,  318,  318,
-      318,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      321,  321,  325,  325,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  345,  345,  345,  345,  345,
-      345,  345,  345,  345,  345,  345,  349,  349,  349,  349,
-
-      349,  349,  349,  349,  349,  349,  349,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  366,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  366,  369,
-      369,  369,  369,  369,  369,  369,  369,  369,  369,  369,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  390, 1061,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  392, 1061,  392,  392,  392,  392,  392,
-      392,  392,  392,  392,  395, 1061,  395,  395,  395,  395,
-      395,  395,  395,  395,  395,  408, 1061,  408,  408,  408,
-
-      408,  408,  408,  408,  408,  408,  169, 1061, 1061,  169,
-      169,  177, 1061,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  417, 1061, 1061,  417,  417,  417,  448, 1061,
-     1061,  448,  230,  230,  230,  230,  230,  230,  230,  231,
-      231,  231,  231,  231,  231,  231,  231,  475, 1061, 1061,
-     1061, 1061,  475,  475,  475,  475,  489,  489,  489,  489,
-      489,  489,  492,  492,  492,  492,  493, 1061,  493,  493,
-      493,  493,  268,  268,  268,  268,  268,  268,  268,  274,
-     1061,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      276, 1061,  276,  276,  276,  276,  276,  276,  276,  276,
-
-      276,  279, 1061,  279,  279,  279,  279,  279,  279,  279,
-      279,  279,  292, 1061,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  300,  300, 1061,  300,  300,  300,  300,
-      300,  300,  300,  300,  301,  301,  301,  301,  301,  301,
-      301,  301,  301,  301,  301,  315,  315, 1061,  315,  315,
-      315,  315,  315,  315,  315,  315,  318,  318,  318,  318,
-      318,  318,  318,  318,  318,  318,  318,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+     1000,  365,  365,  365,  365,  366,  367,  365,  365,  582,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  583,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  365,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  583,  583,  365,  365,  365,  365,
+      366,  367,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365, 1014,  365,  365,  366,  367,  392,  393,
+      387,  365,  365,  365,  246,  602,  602,  602,  602,  340,
+
+      727,  287,  574,  574,  574,  574,  599,  365,  366,  739,
+      340,  725,  740,  571,  246,  999,  366,  745,  998,  722,
+      746,  287,  599,  245,  392,  757,  584,  997,  758,  571,
+      246,  365,  365,  392,  393,  340,  725,  248,  755,  392,
+      393,  996,  392,  763,  722,  741,  764,  405,  840,  401,
+      401,  401,  401,  747,  995,  588,  588,  588,  588,  994,
+      407,  759,  366,  367,  408,  320,  585,  392,  393,  665,
+      993,  392,  393, 1025,  711, 1057,  407,  392,  393,  765,
+      366,  739,  585,  591,  591,  591,  591,  592,  592,  592,
+      366,  367, 1023,  593,  593,  593,  593,  605,  605,  605,
+
+      605,  245,  593,  593,  593,  770,  992,  770,  246,  991,
+      771,  771,  771,  771,  990,  248,  593,  593,  593,  593,
+      593,  593,  391,  391,  392,  393,  391,  391,  391,  391,
+      391,  391,  391,  391,  391,  391,  391,  412,  391,  391,
+      614,  614,  614,  614,  413,  391,  391,  391,  614,  614,
+      614,  614,  687,  687,  687,  687,  687,  687,  687,  687,
+      989,  391,  707,  707,  707,  707,  707,  707,  707,  707,
+      340,  341,  366,  743,  568,  366,  743,  366,  745,  366,
+      367,  740,  988,  582,  740,  391,  391,  391,  391,  392,
+      393,  391,  391,  596,  391,  391,  391,  391,  391,  391,
+
+      391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
+      391,  391,  391,  597,  597,  597,  597,  597,  597,  597,
+      597,  597,  597,  597,  597,  597,  391,  597,  597,  597,
+      597,  597,  597,  597,  597,  597,  597,  597,  597,  597,
+      597,  597,  597,  597,  597,  597,  597,  597,  597,  597,
+      391,  391,  391,  391,  392,  393,  391,  391,  391,  391,
+      391,  391,  391,  391,  391,  391,  391,  987,  391,  391,
+      983,  245,  245,  963,  413,  391,  391,  391,  246,  246,
+      245,  245,  340,  341,  962,  248,  248,  246,  246,  340,
+      341,  391,  340,  721,  248,  248,  722,  246,  717,  717,
+
+      717,  717,  392,  393,  287,  717,  717,  717,  717,  961,
+      598,  960,  829,  830,  959,  391,  391,  607,  607,  607,
+      607,  366,  367,  958,  831,  957,  607,  607,  607,  723,
+      832,  956,  366,  367,  917,  340,  721,  392,  757,  722,
+      607,  607,  607,  607,  607,  607,  417,  417,  874,  417,
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      417,  875,  417,  417,  859,  366,  367,  876,  436,  417,
+      417,  417,  723,  366,  367,  860,  340,  727,  392,  393,
+      728,  735,  735,  735,  735,  417,  392,  393,  955,  735,
+      735,  735,  735,  954,  753,  753,  753,  753,  392,  761,
+
+      392,  393,  753,  753,  753,  753,  953,  758,  952,  417,
+      417,  417,  417,  729,  417,  417,  417,  610,  417,  417,
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      417,  417,  417,  417,  417,  417,  417,  611,  611,  611,
+      611,  611,  611,  611,  611,  611,  611,  611,  611,  611,
+      417,  611,  611,  611,  611,  611,  611,  611,  611,  611,
+      611,  611,  611,  611,  611,  611,  611,  611,  611,  611,
+      611,  611,  611,  611,  417,  417,  417,  417,  951,  417,
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      417, 1024,  417,  417,  392,  393,  392,  761,  436,  417,
+
+      417,  417,  950,  392,  393,  758,  392,  763,  340,  727,
+      366,  739,  728,  949,  740,  417,  366,  739,  366,  745,
+      740,  948,  746,  366,  745,  392,  757,  746,  947,  758,
+      946,  392,  393,  945,  612,  596,  412,  863,  944,  417,
+      417,  535,  535,  535,  535,  729,  864,  741,  340,  341,
+      535,  535,  535,  741, 1025,  747,  771,  771,  771,  771,
+      747,  943,  759,  942,  535,  535,  535,  535,  535,  535,
+      292,  292,  941,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292, 1026,  292,  292,  771,  771,
+      771,  771,  698,  292,  292,  292,  246,  340,  341,  435,
+
+      392,  757,  940,  287,  758,  360,  924,  366,  367,  292,
+      366,  367,  386,  926,  392,  393,  392,  393,  412,  928,
+      435,  930,  966,  982,  966,  966,  966,  435,  966,  966,
+      435,  916,  939,  292,  292,  292,  292,  759,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      310,  292,  292,  310,  310,  310,  310,  311,  292,  292,
+      292,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  292,  310,  310,  310,  310,  310,
+      310,  699,  310,  310,  310,  700,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  292,  292,
+
+      553,  553,  553,  553,  340,  341, 1019,  245, 1054,  553,
+      553,  553,  392,  763,  246,  938,  764,  937,  392,  763,
+      936,  248,  764,  553,  553,  553,  553,  553,  553,  320,
+      320,  320,  320,  320,  320,  935,  320,  320,  320,  320,
+      320,  320,  320,  320,  934,  320,  320,  340,  341,  765,
+      245,  713,  320,  320,  320,  765,  914,  246,  245,  245,
+      245,  933,  984,  932,  248,  246,  246,  246,  320,  340,
+      341, 1020,  248,  248,  248,  985,  366,  367, 1021,  845,
+     1055,  986,  366,  367, 1022,  915,  392,  393, 1023,  913,
+     1056,  833,  320,  320,  320,  320,  320,  320,  320,  320,
+
+      911,  320,  320,  320,  320,  320,  320,  320,  320,  335,
+      320,  320,  335,  335,  335,  335,  336,  320,  320,  320,
+      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
+      335,  335,  335,  320,  335,  335,  335,  335,  335,  335,
+      714,  335,  335,  335,  715,  335,  335,  335,  335,  335,
+      335,  335,  335,  335,  335,  335,  335,  320,  320,  340,
+      341,  246,  246, 1013,  392,  393, 1024,  245,  287,  287,
+      366,  367,  392,  393,  246,  565,  565,  565,  565, 1014,
+      245,  248,  245,  245,  565,  565,  565,  246,  910,  246,
+      246,  967,  968,  909,  248,  908,  248,  248,  565,  565,
+
+      565,  565,  565,  565,  339,  339,  340,  341,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  964,
+      339,  339,  907,  245,  912,  906,  731,  339,  339,  339,
+      246,  905,  904,  903,  902,  901,  900,  248,  899,  898,
+      897,  896,  895,  339,  894,  893,  889,  888,  887,  886,
+      885,  884,  883,  882,  881,  880,  879,  878,  877,  873,
+      965,  872,  871,  870,  610,  775,  868,  339,  339,  339,
+      339,  340,  341,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  360,  339,  339,  360,  360,  360,
+      360,  361,  339,  339,  339,  360,  360,  360,  360,  360,
+
+      360,  360,  360,  360,  360,  360,  360,  360,  339,  360,
+      360,  360,  360,  360,  360,  732,  360,  360,  360,  733,
+      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
+      360,  360,  339,  339,  366,  367,  867,  866,  862,  858,
+      854,  502,  852,  851,  848,  847,  844,  538,  691,  842,
+      579,  579,  579,  579,  841,  838,  837,  836,  835,  579,
+      579,  579,  502,  671,  663,  828,  827,  826,  825,  824,
+      823,  820,  819,  579,  579,  579,  579,  579,  579,  365,
+      365,  366,  367,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  818,  365,  365,  817,  816,  815,
+
+      814,  749,  365,  365,  365,  813,  812,  811,  810,  809,
+      808,  807,  806,  805,  804,  803,  802,  801,  365,  800,
+      799,  798,  797,  796,  795,  794,  793,  792,  791,  790,
+      789,  788,  787,  786,  785,  775,  773,  772,  709,  708,
+      703,  702,  365,  365,  365,  365,  366,  367,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  386,
+      365,  365,  386,  386,  386,  386,  387,  365,  365,  365,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+      386,  386,  386,  365,  386,  386,  386,  386,  386,  386,
+      750,  386,  386,  386,  751,  386,  386,  386,  386,  386,
+
+      386,  386,  386,  386,  386,  386,  386,  365,  365,  392,
+      393,  701,  691,  689,  688,  683,  682,  681,  680,  518,
+      645,  628,  624,  678,  671,  593,  593,  593,  593,  666,
+      663,  661,  660,  659,  593,  593,  593,  658,  657,  656,
+      655,  654,  653,  652,  651,  650,  649,  648,  593,  593,
+      593,  593,  593,  593,  391,  391,  392,  393,  391,  391,
+      391,  391,  391,  391,  391,  391,  391,  391,  391,  644,
+      391,  391,  643,  642,  641,  640,  767,  391,  391,  391,
+      639,  638,  637,  636,  635,  634,  633,  632,  631,  630,
+      627,  626,  623,  391,  622,  621,  620,  619,  618,  617,
+
+      616,  615,  601,  600,  420,  547,  546,  543,  542,  541,
+      529,  528,  295,  502,  523,  522,  518,  391,  391,  391,
+      391,  392,  393,  391,  391,  391,  391,  391,  391,  391,
+      391,  391,  391,  391,  412,  391,  391,  412,  412,  412,
+      412,  413,  391,  391,  391,  412,  412,  412,  412,  412,
+      412,  412,  412,  412,  412,  412,  412,  412,  391,  412,
+      412,  412,  412,  412,  412,  768,  412,  412,  412,  769,
+      412,  412,  412,  412,  412,  412,  412,  412,  412,  412,
+      412,  412,  391,  391,  607,  607,  607,  607,  490,  488,
+      464,  461,  459,  607,  607,  607,  514,  450,  513,  502,
+
+      287,  501,  495,  494,  491,  479,  478,  607,  607,  607,
+      607,  607,  607,  417,  417,  477,  417,  417,  417,  417,
+      417,  417,  417,  417,  417,  417,  417,  417,  470,  417,
+      417,  469,  468,  465,  455,  782,  417,  417,  417,  452,
+      451,  448,  447,  446,  183,  434,  420,  418,  334,  287,
+      314,  309,  417,  295,  293,  263,  274,  183,  263,  274,
+      183,  190,  181, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089,  417,  417,  417,  417,
+     1089,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      417,  417,  417,  435,  417,  417,  435,  435,  435,  435,
+
+      436,  417,  417,  417,  435,  435,  435,  435,  435,  435,
+      435,  435,  435,  435,  435,  435,  435,  417,  435,  435,
+      435,  435,  435,  435,  783,  435,  435,  435,  784,  435,
+      435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+      435,  417,  417,  292,  292, 1089,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292, 1089,  292,
+      292, 1089, 1089, 1089, 1089,  698,  292,  292,  292, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089,  292, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1089, 1089, 1089, 1089, 1089,  292,  292,  292,  292,
+     1089,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  310,  292,  292,  310,  310,  310,  310,
+      311,  292,  292,  292,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  292,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  843,  310,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  292,  292,  320,  320,  320,  320,  320,  320, 1089,
+      320,  320,  320,  320,  320,  320,  320,  320, 1089,  320,
+      320, 1089, 1089, 1089, 1089,  713,  320,  320,  320, 1089,
+
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089,  320, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089,  320,  320,  320,  320,
+      320,  320,  320,  320, 1089,  320,  320,  320,  320,  320,
+      320,  320,  320,  335,  320,  320,  335,  335,  335,  335,
+      336,  320,  320,  320,  335,  335,  335,  335,  335,  335,
+      335,  335,  335,  335,  335,  335,  335,  320,  335,  335,
+      335,  335,  335,  335,  335,  335,  335,  853,  335,  335,
+      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
+
+      335,  320,  320,  339,  339,  340,  341,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339, 1089,  339,
+      339, 1089, 1089, 1089, 1089,  731,  339,  339,  339, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089,  339, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089,  339,  339,  339,  339,
+      340,  341,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  360,  339,  339,  360,  360,  360,  360,
+      361,  339,  339,  339,  360,  360,  360,  360,  360,  360,
+
+      360,  360,  360,  360,  360,  360,  360,  339,  360,  360,
+      360,  360,  360,  360,  360,  360,  360,  857,  360,  360,
+      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
+      360,  339,  339,  365,  365,  366,  367,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365, 1089,  365,
+      365, 1089, 1089, 1089, 1089,  749,  365,  365,  365, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089,  365, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089,  365,  365,  365,  365,
+
+      366,  367,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  386,  365,  365,  386,  386,  386,  386,
+      387,  365,  365,  365,  386,  386,  386,  386,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  365,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  861,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+      386,  365,  365,  391,  391,  392,  393,  391,  391,  391,
+      391,  391,  391,  391,  391,  391,  391,  391, 1089,  391,
+      391, 1089, 1089, 1089, 1089,  767,  391,  391,  391, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1089,  391, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089,  391,  391,  391,  391,
+      392,  393,  391,  391,  391,  391,  391,  391,  391,  391,
+      391,  391,  391,  412,  391,  391,  412,  412,  412,  412,
+      413,  391,  391,  391,  412,  412,  412,  412,  412,  412,
+      412,  412,  412,  412,  412,  412,  412,  391,  412,  412,
+      412,  412,  412,  412,  412,  412,  412,  865,  412,  412,
+      412,  412,  412,  412,  412,  412,  412,  412,  412,  412,
+      412,  391,  391,  417,  417, 1089,  417,  417,  417,  417,
+
+      417,  417,  417,  417,  417,  417,  417,  417, 1089,  417,
+      417, 1089, 1089, 1089, 1089,  782,  417,  417,  417, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089,  417, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089,  417,  417,  417,  417,
+     1089,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      417,  417,  417,  435,  417,  417,  435,  435,  435,  435,
+      436,  417,  417,  417,  435,  435,  435,  435,  435,  435,
+      435,  435,  435,  435,  435,  435,  435,  417,  435,  435,
+
+      435,  435,  435,  435,  435,  435,  435,  869,  435,  435,
+      435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+      435,  417,  417,  292,  292, 1089,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  310,  292,
+      292,  310,  310,  310,  310,  311,  292,  292,  292,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  292,  310,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  918,  310,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  310,  310,  292,  292,  320,  320,
+      320,  320,  320,  320, 1089,  320,  320,  320,  320,  320,
+
+      320,  320,  320,  335,  320,  320,  335,  335,  335,  335,
+      336,  320,  320,  320,  335,  335,  335,  335,  335,  335,
+      335,  335,  335,  335,  335,  335,  335,  320,  335,  335,
+      335,  335,  335,  335,  335,  335,  335,  335,  922,  335,
+      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
+      335,  320,  320,  182, 1089,  182,  182,  182,  182,  182,
+      182,  182,  182,  182,  185, 1089, 1089,  185,  185,  193,
+     1089,  193,  193,  193,  193,  193,  193,  193,  193,  193,
+      247,  247,  247,  247,  247,  247,  247,  247,  279,  279,
+      279,  279,  282, 1089,  282, 1089,  282,  282,  282,  282,
+
+      286,  286,  286,  286,  286,  286,  286,  292, 1089,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  294, 1089,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  297,
+     1089,  297,  297,  297,  297,  297,  297,  297,  297,  297,
+      310, 1089,  310,  310,  310,  310,  310,  310,  310,  310,
+      310,  246,  246,  246,  246,  246,  246,  246,  320,  320,
+     1089,  320,  320,  320,  320,  320,  320,  320,  320,  321,
+      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
+      335,  335, 1089,  335,  335,  335,  335,  335,  335,  335,
+      335,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+
+      339,  339,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  342,  342,  346,  346,  346,  346,  346,  346,  346,
+      346,  346,  346,  346,  360,  360,  360,  360,  360,  360,
+      360,  360,  360,  360,  360,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  372,  372,  372,
+      372,  372,  372,  372,  372,  372,  372,  372,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  391,
+      391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
+      394,  394,  394,  394,  394,  394,  394,  394,  394,  394,
+
+      394,  398,  398,  398,  398,  398,  398,  398,  398,  398,
+      398,  398,  412,  412,  412,  412,  412,  412,  412,  412,
+      412,  412,  412,  417, 1089,  417,  417,  417,  417,  417,
+      417,  417,  417,  417,  419, 1089,  419,  419,  419,  419,
+      419,  419,  419,  419,  419,  422, 1089,  422,  422,  422,
+      422,  422,  422,  422,  422,  422,  435, 1089,  435,  435,
+      435,  435,  435,  435,  435,  435,  435,  185, 1089, 1089,
+      185,  185,  193, 1089,  193,  193,  193,  193,  193,  193,
+      193,  193,  193,  445, 1089, 1089,  445,  445,  445,  476,
+     1089, 1089,  476,  246,  246,  246,  246,  246,  246,  246,
+
+      247,  247,  247,  247,  247,  247,  247,  247,  503, 1089,
+     1089, 1089, 1089,  503,  503,  503,  503,  517,  517,  517,
+      517,  517,  517,  520,  520,  520,  520,  521, 1089,  521,
+      521,  521,  521,  286,  286,  286,  286,  286,  286,  286,
+      292, 1089,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  294, 1089,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  297, 1089,  297,  297,  297,  297,  297,  297,
+      297,  297,  297,  310, 1089,  310,  310,  310,  310,  310,
+      310,  310,  310,  310,  320,  320, 1089,  320,  320,  320,
+      320,  320,  320,  320,  320,  321,  321,  321,  321,  321,
+
+      321,  321,  321,  321,  321,  321,  335,  335, 1089,  335,
+      335,  335,  335,  335,  335,  335,  335,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  342,  342,
+      342,  342,  342,  342,  342,  342,  342,  342,  342,  346,
+      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
+      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
+      360,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  372,  372,  372,  372,  372,  372,  372,
+      372,  372,  372,  372,  386,  386,  386,  386,  386,  386,
+
+      386,  386,  386,  386,  386,  391,  391,  391,  391,  391,
+      391,  391,  391,  391,  391,  391,  394,  394,  394,  394,
+      394,  394,  394,  394,  394,  394,  394,  398,  398,  398,
+      398,  398,  398,  398,  398,  398,  398,  398,  412,  412,
+      412,  412,  412,  412,  412,  412,  412,  412,  412,  417,
+     1089,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      419, 1089,  419,  419,  419,  419,  419,  419,  419,  419,
+      419,  422, 1089,  422,  422,  422,  422,  422,  422,  422,
+      422,  422,  435, 1089,  435,  435,  435,  435,  435,  435,
+      435,  435,  435,  185, 1089, 1089,  185,  185,  445, 1089,
+
+     1089,  445,  445,  445,  476, 1089, 1089,  476,  662, 1089,
+      662,  662,  662,  662,  662,  662,  662,  662,  662,  665,
+     1089,  665,  665,  665,  665,  665,  665,  665,  665,  665,
+      667, 1089,  667,  667,  667,  667,  667,  667,  667,  667,
+      667,  670,  670,  670,  670,  670,  670,  670,  247,  247,
+      247,  247,  247,  247,  247,  247,  517,  517,  517,  517,
+      517,  517,  679, 1089,  679,  679,  679,  679,  521, 1089,
+      521,  521,  521,  521,  286,  286,  286,  286,  286,  286,
+      286,  292, 1089,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  690, 1089,  690,  690,  690,  690,  690,  690,
+
+      690,  690,  690,  693, 1089,  693,  693,  693,  693,  693,
+      693,  693,  693,  693,  694, 1089,  694,  694,  694,  694,
+      694,  694,  694,  694,  694,  697, 1089,  697,  697,  697,
+      697,  697,  697,  697,  697,  697,  246,  246,  246,  246,
+      246,  246,  246,  320,  320, 1089,  320,  320,  320,  320,
+      320,  320,  320,  320,  710,  710,  710,  710,  710,  710,
+      710,  710,  710,  710,  710,  712,  712, 1089,  712,  712,
+      712,  712,  712,  712,  712,  712,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  720,  720,  720,
+      720,  720,  720,  720,  720,  720,  720,  720,  724,  724,
+
+      724,  724,  724,  724,  724,  724,  724,  724,  724,  726,
+      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
+      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
+      730,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  738,  738,  738,  738,  738,  738,  738,  738,
+      738,  738,  738,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  744,  744,  744,  744,  744,  744,
+      744,  744,  744,  744,  744,  748,  748,  748,  748,  748,
+      748,  748,  748,  748,  748,  748,  391,  391,  391,  391,
+      391,  391,  391,  391,  391,  391,  391,  756,  756,  756,
+
+      756,  756,  756,  756,  756,  756,  756,  756,  760,  760,
+      760,  760,  760,  760,  760,  760,  760,  760,  760,  762,
+      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
+      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
+      766,  417, 1089,  417,  417,  417,  417,  417,  417,  417,
+      417,  417,  774, 1089,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  777, 1089,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  778, 1089,  778,  778,  778,  778,
+      778,  778,  778,  778,  778,  781, 1089,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  445, 1089, 1089,  445,
+
+      445,  445,  662, 1089,  662,  662,  662,  662,  662,  662,
+      662,  662,  662,  665, 1089,  665,  665,  665,  665,  665,
+      665,  665,  665,  665,  667, 1089,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  670,  670,  670,  670,  670,
+      670,  670,  247,  247,  247,  247,  247,  247,  247,  247,
+      679, 1089,  679,  679,  679,  679,  521, 1089,  521,  521,
+      521,  521,  286,  286,  286,  286,  286,  286,  286,  292,
+     1089,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      690, 1089,  690,  690,  690,  690,  690,  690,  690,  690,
+      690,  693, 1089,  693,  693,  693,  693,  693,  693,  693,
+
+      693,  693,  694, 1089,  694,  694,  694,  694,  694,  694,
+      694,  694,  694,  697, 1089,  697,  697,  697,  697,  697,
+      697,  697,  697,  697,  246,  246,  246,  246,  246,  246,
+      246,  320,  320, 1089,  320,  320,  320,  320,  320,  320,
+      320,  320,  710,  710,  710,  710,  710,  710,  710,  710,
+      710,  710,  710,  712,  712, 1089,  712,  712,  712,  712,
+      712,  712,  712,  712,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  720,  720,  720,  720,  720,
+      720,  720,  720,  720,  720,  720,  724,  724,  724,  724,
+      724,  724,  724,  724,  724,  724,  724,  726,  726,  726,
 
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  345,  345,  345,  345,  345,  345,  345,  345,  345,
-      345,  345,  349,  349,  349,  349,  349,  349,  349,  349,
-      349,  349,  349,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  369,  369,  369,  369,  369,
-      369,  369,  369,  369,  369,  369,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  390, 1061,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  392,
-
-     1061,  392,  392,  392,  392,  392,  392,  392,  392,  392,
-      395, 1061,  395,  395,  395,  395,  395,  395,  395,  395,
-      395,  408, 1061,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  169, 1061, 1061,  169,  169,  417, 1061, 1061,
-      417,  417,  417,  448, 1061, 1061,  448,  634, 1061,  634,
-      634,  634,  634,  634,  634,  634,  634,  634,  637, 1061,
-      637,  637,  637,  637,  637,  637,  637,  637,  637,  639,
-     1061,  639,  639,  639,  639,  639,  639,  639,  639,  639,
-      642,  642,  642,  642,  642,  642,  642,  231,  231,  231,
-      231,  231,  231,  231,  231,  489,  489,  489,  489,  489,
-
-      489,  651, 1061,  651,  651,  651,  651,  493, 1061,  493,
-      493,  493,  493,  268,  268,  268,  268,  268,  268,  268,
-      274, 1061,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  662, 1061,  662,  662,  662,  662,  662,  662,  662,
-      662,  662,  665, 1061,  665,  665,  665,  665,  665,  665,
-      665,  665,  665,  666, 1061,  666,  666,  666,  666,  666,
-      666,  666,  666,  666,  669, 1061,  669,  669,  669,  669,
-      669,  669,  669,  669,  669,  230,  230,  230,  230,  230,
-      230,  230,  300,  300, 1061,  300,  300,  300,  300,  300,
-      300,  300,  300,  682,  682,  682,  682,  682,  682,  682,
-
-      682,  682,  682,  682,  684,  684, 1061,  684,  684,  684,
-      684,  684,  684,  684,  684,  318,  318,  318,  318,  318,
-      318,  318,  318,  318,  318,  318,  692,  692,  692,  692,
-      692,  692,  692,  692,  692,  692,  692,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  696,  696,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  698,  698,  702,
-      702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  714,  714,  714,  714,  714,  714,  714,  714,
-
-      714,  714,  714,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  732,  732,  732,
-      732,  732,  732,  732,  732,  732,  732,  732,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  738,
+      726,  726,  726,  726,  726,  726,  726,  726,  730,  730,
+      730,  730,  730,  730,  730,  730,  730,  730,  730,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
       738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
-      390, 1061,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  746, 1061,  746,  746,  746,  746,  746,  746,  746,
+      738,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  744,  744,  744,  744,  744,  744,  744,  744,
+      744,  744,  744,  748,  748,  748,  748,  748,  748,  748,
+      748,  748,  748,  748,  391,  391,  391,  391,  391,  391,
+      391,  391,  391,  391,  391,  756,  756,  756,  756,  756,
+      756,  756,  756,  756,  756,  756,  760,  760,  760,  760,
+
+      760,  760,  760,  760,  760,  760,  760,  762,  762,  762,
+      762,  762,  762,  762,  762,  762,  762,  762,  766,  766,
+      766,  766,  766,  766,  766,  766,  766,  766,  766,  417,
+     1089,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      774, 1089,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  777, 1089,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  778, 1089,  778,  778,  778,  778,  778,  778,
+      778,  778,  778,  781, 1089,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  445, 1089, 1089,  445,  445,  445,
+      247,  247,  247,  247,  247,  247,  247,  247,  521, 1089,
+
+      521,  521,  521,  521,  286,  286,  286,  286,  286,  286,
+      286,  292, 1089,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  246,  246,  246,  246,  246,  246,  246,  320,
+      320, 1089,  320,  320,  320,  320,  320,  320,  320,  320,
+       23, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
 
-      746,  746,  749, 1061,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  750, 1061,  750,  750,  750,  750,  750,
-      750,  750,  750,  750,  753, 1061,  753,  753,  753,  753,
-      753,  753,  753,  753,  753,  417, 1061, 1061,  417,  417,
-      417,  634, 1061,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  637, 1061,  637,  637,  637,  637,  637,  637,
-      637,  637,  637,  639, 1061,  639,  639,  639,  639,  639,
-      639,  639,  639,  639,  642,  642,  642,  642,  642,  642,
-      642,  231,  231,  231,  231,  231,  231,  231,  231,  651,
-     1061,  651,  651,  651,  651,  493, 1061,  493,  493,  493,
-
-      493,  268,  268,  268,  268,  268,  268,  268,  274, 1061,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  662,
-     1061,  662,  662,  662,  662,  662,  662,  662,  662,  662,
-      665, 1061,  665,  665,  665,  665,  665,  665,  665,  665,
-      665,  666, 1061,  666,  666,  666,  666,  666,  666,  666,
-      666,  666,  669, 1061,  669,  669,  669,  669,  669,  669,
-      669,  669,  669,  230,  230,  230,  230,  230,  230,  230,
-      300,  300, 1061,  300,  300,  300,  300,  300,  300,  300,
-      300,  682,  682,  682,  682,  682,  682,  682,  682,  682,
-      682,  682,  684,  684, 1061,  684,  684,  684,  684,  684,
-
-      684,  684,  684,  318,  318,  318,  318,  318,  318,  318,
-      318,  318,  318,  318,  692,  692,  692,  692,  692,  692,
-      692,  692,  692,  692,  692,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,  696,  698,  698,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  702,  702,  702,
-      702,  702,  702,  702,  702,  702,  702,  702,  342,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-
-      716,  716,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  732,  732,  732,  732,  732,
-      732,  732,  732,  732,  732,  732,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  738,  738,  738,
-      738,  738,  738,  738,  738,  738,  738,  738,  390, 1061,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  746,
-     1061,  746,  746,  746,  746,  746,  746,  746,  746,  746,
-      749, 1061,  749,  749,  749,  749,  749,  749,  749,  749,
-
-      749,  750, 1061,  750,  750,  750,  750,  750,  750,  750,
-      750,  750,  753, 1061,  753,  753,  753,  753,  753,  753,
-      753,  753,  753,  417, 1061, 1061,  417,  417,  417,  231,
-      231,  231,  231,  231,  231,  231,  231,  493, 1061,  493,
-      493,  493,  493,  268,  268,  268,  268,  268,  268,  268,
-      274, 1061,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  230,  230,  230,  230,  230,  230,  230,  300,  300,
-     1061,  300,  300,  300,  300,  300,  300,  300,  300,   23,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061
+     1089, 1089, 1089, 1089, 1089, 1089
     } ;
 
-static yyconst flex_int16_t yy_chk[7046] =
+static yyconst flex_int16_t yy_chk[7107] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1612,775 +1625,782 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    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,  220,    3,    3,    3,
-       29,   44,   44,    3,    3,  220,    3,    3,   13,    3,
-        3,    3,    6,   14,    6,    6,    3,    3,    3,    3,
-       13,   13,   13,   13,   35,   14,   14,   14,   14,   25,
-
-      196,   25,   25,   29,  196,    6,   35,   27,   27,   27,
-       27,    3,   33,    3,   25,   31,    3,   31,    3,   31,
-       31,    3,   27,    3,   45,   45,   33,    3,    3,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        1,    1,    1,    1,    1,    2,   33,    2,    2,   29,
+       35,    4,  236,    4,    4, 1083,    6,   40,    6,    6,
+       33,  236,   35,    8,   40,    8,    8,   55,    2,    3,
+       74,    3,    3,    3,    4,   44,   44,    3,    3,    6,
+
+        3,    3,   29,    3,    3,    3,    8,   45,   45,  108,
+        3,    3,    3,    3,   10,   13,   10,   10,   12, 1079,
+       12,   12,   16,   74,   16,   16,   55,   13,   13,   13,
+       13,   18,  108,   18,   18,    3,   20,    3,   20,   20,
+        3,   22,    3,   22,   22,    3,  212,    3,   46,   46,
+      212,    3,    3,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    7,    7,    7,    7,    7,    7,
 
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,   11,   11,   11,   11,   11,   11,
+        9,    9,    9,    9,    9,    9,    9,    9,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   14, 1078,   14,   14,   31,   14,   31,
+       82,   31,   31,   60, 1077,   60,   60,   82,  122,  122,
+       14,   14,   14,   14,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   17,   17,   17,   17,   17,   17,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   17,
+
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-       17,   17,   17,   17,   17,   17,   17,   17,   17,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   21,   21,   21,   21,   21,   21,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   36,
-     1055,   36,   36,   36,   36,   40,   38,   36,   38,   38,
-       38,   38,   40,  102,   38,   39,   39,   39,   39,   46,
-       46,   39, 1051,   39,   39,   39,   39,   39,   39,   39,
-       39,   39,   39,   39,   39,   39,  102,   39,   39,   39,
-       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
+       21,   21,   21,   21,   25,   91,   25,   25,   27,   27,
 
+       27,   27,   36,  209,   36,   36,   36,   36,  209,   25,
+       36,   47,   38,   27,   38,   38,   38,   38,   47, 1075,
+       38,   39,   39,   39,   39,   47,  233,   39,   91,   39,
        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
-       41,   47,   41,   41,   41,   41,  200,   51,   47,   49,
-     1050,   70,   41,   41,   51,   47,   49,   41,   55,   41,
-      200,   51,   41,   49,   56,   58,   41,   58,   58,   41,
-       42,   78,   42,   42,   42,   42,  676,   41,   78,   48,
-      197,   52,  197,   42,   70,   41,   48,   42,   52,   48,
-       48,   48,   48,   48,   49,   52,  193,   55,   51,   42,
-       43,  193,   43,  676,   56,   43, 1049,   50,   43,   43,
-       43,   43,   43,   43,   50,   53,   43,  822,   43,   43,
-       54,   50,   53,  218,   52,   57,   57,   54,  218,   53,
-
-       59,   59,   59,   59,   54,   60,   64,   60,   60,   60,
-       60, 1047,   80,   64,   57,   50,   87,  822,   62,   80,
-       64,   50,   53,  114,  114,  113,   62,   62,   62,   62,
-       62,   62,  116,  116,   54,   53,   61,   62,   67,   67,
-       67,   67,   80,   64,   69,   69,   69,   69,   71,   87,
-       71,  217,   71,   71,   61,   61,  105,   61,  113,   61,
-      105,   61,   61,   61,   61,  105,   61,  217,   61,   61,
-       61,   74, 1046,   73,   61,   73,   73,   73,   73,  126,
-      126,   74,   74,   74,   74,   76, 1044,   76,   76,   76,
-       76,   81,   81,   81,   81,  128,  128,  198,   76,  198,
-
-       79,  627,   76,   79,   79,   79,   79,   79,   74,   74,
-      627,  118,  118,   74,   76,   82,   82,   82,   82,   89,
-      118,   89,   89,   89,   89,   90,   90,   90,   90,  123,
-      123,   92,   99,   99,   99,   99,  117,  117,   92,  153,
-      117,   92,  130,  130, 1043,   92,   98,   98,   98,   98,
-      123,  130,  166,   90,  138,  138,   92,   90,   91, 1040,
-       91,   91,   91,   91,   92,  107,  107,  107,  107,  109,
-       91,   91,  153,  117,   98,   91,  109,   91,   98,  109,
-       91,  140,  140,  109,   91,  166,  106,   91,  106,  106,
-      106,  106,  195,  107,  109,   91,  195,  107,  135,  135,
-
-      195,  257,  109,   91,   94,   94,  257,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,   94,   94,   94,  135,
-       94,   94,  215,  119,  119,  268,   94,   94,   94,   94,
-      215,  100,  268,  100,  100,  100,  100,  119,  276,  119,
-      119,  119,  119,   94,  100,  131,  131,  216,  100,  142,
-      142,  216,  129,  129,  190,  430,  129,  430,  142,  131,
-      100,  131,  131,  131,  131,  216,  190,   94,   94,   95,
-       95,  276,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95, 1037,   95,   95,  120,  120,  129,
-      267,   95,   95,   95,   95,  147,  147,  163,  267,  163,
-
-      163,  132,  132,  120,  120,  120,  120,  155,   95,  155,
-      155,  155,  155,  427,   95,  122,  147,  132,  132,  132,
-      132,  299,  122,  206,  206,  122,  209,  209,  209,  122,
-      427,  120,   95,   95,  108,  120,  108,  108,  108,  108,
-      122,  156,  156,  156,  156,  132,  108,  108,  122,  132,
-      821,  108,  162,  108,  162,  162,  108,  299,  141,  141,
-      108,  291,  141,  108,  214,  214,  291,  162,  816,  156,
-      816,  108, 1036,  156,  170,  170,  170,  170,  821,  108,
-      111,  111,  111,  111,  111,  111, 1035,  111,  111,  111,
-      111,  111,  111,  111,  111,  141,  111,  111,  392,  134,
-
-      228,  228,  111,  111,  111,  111,  134,  468,  146,  134,
-     1033,  143,  143,  134,  247,  146,  247,  247,  146,  111,
-      830,  223,  146,  830,  134,  143,  223,  143,  143,  143,
-      143,  392,  134,  146,  171,  171,  171,  171,  896,  223,
-      468,  146,  896,  111,  111,  112,  112,  112,  112,  112,
-      112, 1032,  112,  112,  112,  112,  112,  112,  112,  112,
-      834,  112,  112,  834,  158,  254,  254,  112,  112,  112,
-      112,  158,  286,  286,  158,  144,  144, 1031,  158,  172,
-      172,  172,  172, 1030,  112,  173,  173,  173,  173,  158,
-      112,  144,  144,  144,  144,  309,  309,  158,  180,  180,
-
-      180,  180,  314,  184,  184,  184,  184,  314,  112,  112,
-      121,  121,  250,  301,  184,  838,  250,  301,  838,  144,
-      250,  892,  301,  144,  121, 1023,  121,  121,  121,  121,
-      184,  205,  205,  205,  205, 1018,  121,  121,  231,  318,
-      318,  121,  205,  121,  892,  231,  121,  320,  320,  207,
-      121,  207,  231,  121,  207,  207,  207,  207,  205,  323,
-      323,  121,  258,  258,  258,  258,  289,  289,  289,  121,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  842,  124,  124,  842,  235,
-      324,  324,  124,  124,  124,  124,  235,  181,  677,  181,
-
-      181,  181,  181,  235,  941,  233,  234,  335,  335,  124,
-      181, 1017,  233,  234,  181,  233,  233,  233,  233,  233,
-      234,  260,  260,  260,  260,  677,  181,  262,  262,  262,
-      262,  262, 1014,  124,  124,  125,  125,  125,  125,  125,
-      125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-      941,  125,  125, 1013,  236,  238,  234,  125,  125,  125,
-      125,  236,  238,  237,  240,  239,  271,  942,  236,  238,
-      237,  240,  239,  271,  125,  342,  342,  237,  240,  239,
-      125,  241,  272,  272,  272,  272,  344,  344,  241, 1011,
-      238,  273,  273,  273,  273,  241,  347,  347,  125,  125,
-
-      133,  133,  325,  325,  236,  237,  237,  348,  348,  271,
-     1010,  325,  240,  942,  133,  239,  133,  133,  133,  133,
-      312,  312,  312,  241,  359,  359,  133,  133,  326,  326,
-      826,  133,  826,  133,  366,  366,  133,  326,  321,  321,
-      133,  270,  321,  133,  270,  270,  270,  270,  270,  349,
-      349,  133,  280,  280,  280,  280,  368,  368,  349,  133,
-      136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
-      136,  136,  136,  136,  136,  321,  136,  136,  303,  303,
-      303,  303,  136,  136,  136,  136, 1009,  281,  407,  281,
-      281,  281,  281,  407,  282,  282,  282,  282,  897,  136,
-
-      281,  287,  897,  287,  281,  282,  287,  287,  287,  287,
-      371,  371,  310,  985,  310,  985,  281,  310,  310,  310,
-      310,  282, 1007,  136,  136,  137,  137,  137,  137,  137,
-      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
-      893,  137,  137,  372,  372,  330,  330,  137,  137,  137,
-      137,  285,  285,  285,  285,  298,  890,  298,  298,  298,
-      298,  890,  285,  893,  137,  331,  331,  898,  298,  516,
-      137,  898,  298,  322,  322,  354,  354,  322,  285,  333,
-      333,  383,  383, 1006,  298,  350,  350,  474,  137,  137,
-      145,  145,  330,  516,  350,  333,  333,  516,  304, 1005,
-
-      304,  304,  304,  304,  145, 1004,  145,  145,  145,  145,
-      322,  304,  331,  402,  402,  304,  145,  145,  327,  327,
-      474,  145,  354,  145,  444,  444,  145,  304,  336,  336,
-      145,  355,  355,  145,  327,  327,  327,  327,  338,  338,
-     1002,  145,  338,  891,  336,  336,  336,  338,  891,  145,
-      148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  148,  148,  148, 1001,  148,  148,  305,  305,
-      305,  305,  148,  148,  148,  148,  453, 1000,  355,  305,
-      308,  308,  308,  308,  453,  334,  334,  453,  899,  148,
-      998,  308,  899,  345,  345,  305,  334,  345,  334,  373,
-
-      373,  334,  334,  334,  334,  346,  346,  308,  373,  346,
-      378,  378,  990,  148,  148,  149,  149,  149,  149,  149,
-      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
-      345,  149,  149,  988,  329,  329,  656,  149,  149,  149,
-      149,  986,  346,  656,  369,  369,  332,  332,  369,  984,
-      329,  329,  329,  329,  149,  357,  357,  378,  360,  360,
-      149,  329,  332,  332,  332,  332,  503,  503,  379,  379,
-      656,  357,  357,  332,  360,  360,  360,  329,  149,  149,
-      157,  369,  157,  157,  157,  157,  900,  362,  362,  332,
-      900,  362,  157,  157,  351,  351,  362,  157,  411,  157,
-
-      411,  411,  157,  358,  358,  983,  157,  381,  381,  157,
-      351,  351,  351,  351,  358,  379,  358,  157,  982,  358,
-      358,  358,  358,  381,  381,  157,  160,  160,  981,  160,
-      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
-      160,  947,  160,  160,  353,  353,  374,  374,  160,  160,
-      160,  160,  405,  405,  405,  374,  521,  521,  375,  375,
-      353,  353,  353,  353,  901,  160,  356,  356,  901,  370,
-      370,  353,  979,  370,  375,  375,  375,  375,  396,  396,
-      396,  396,  356,  356,  356,  356,  947,  353,  508,  160,
-      160,  161,  161,  356,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  370,  161,  161,  356,
-      377,  377,  978,  161,  161,  161,  161,  412,  412,  412,
-      412,  508,  384,  384,  575,  575,  377,  377,  377,  377,
-      161,  650,  650,  380,  380,  977,  161,  377,  384,  384,
-      384,  413,  413,  413,  413,  414,  414,  414,  414,  380,
-      380,  380,  380,  377,  161,  161,  290,  290,  290,  290,
-      380,  415,  415,  415,  415,  290,  290,  290,  386,  386,
-      530,  530,  386,  447,  447,  447,  380,  386,  976,  290,
-      290,  290,  290,  290,  290,  292,  292,  975,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-
-      510,  292,  292,  382,  382,  580,  974,  292,  292,  292,
-      292,  506,  506,  506,  382,  987,  382,  987,  530,  382,
-      382,  382,  382,  397,  292,  397,  397,  397,  397,  445,
-      445,  445,  445,  510,  673,  673,  397,  403,  580,  403,
-      397,  973,  403,  403,  403,  403,  694,  694,  292,  292,
-      293,  293,  397,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  294,  294,  970,  294,  294,
-      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
-      969,  294,  294,  398,  398,  398,  398,  294,  294,  294,
-      294,  524,  524,  524,  398,  401,  401,  401,  401,  968,
-      443,  443,  443,  443,  294,  967,  401,  416,  943,  416,
-      398,  443,  416,  416,  416,  416,  446,  446,  446,  446,
-      695,  695,  401,  294,  531,  531,  943,  443,  294,  294,
-      313,  313,  313,  313,  965,  476,  478,  479,  480,  313,
-      313,  313,  476,  478,  479,  480,  963,  544,  544,  476,
-
-      478,  479,  480,  313,  313,  313,  313,  313,  313,  315,
-      315,  315,  315,  315,  315,  962,  315,  315,  315,  315,
-      315,  315,  315,  315,  531,  315,  315,  961,  481,  479,
-      483,  315,  315,  315,  315,  481,  960,  483,  504,  504,
-      504,  504,  481,  959,  483,  544,  539,  539,  315,  491,
-      491,  491,  491,  491,  499,  539,  499,  700,  700,  499,
-      499,  499,  499,  505,  505,  505,  505,  522,  522,  522,
-      522,  483,  315,  315,  316,  316,  316,  316,  316,  316,
-      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
-      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
-
-      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
-      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
-      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
-      316,  316,  316,  316,  316,  316,  316,  316,  316,  317,
-      317,  317,  317,  317,  317,  958,  317,  317,  317,  317,
-      317,  317,  317,  317,  957,  317,  317,  701,  701,  484,
-      498,  317,  317,  317,  317,  477,  484,  498,  956,  482,
-      902,  526,  477,  484,  902,  526,  482,  955,  317,  477,
-      526,  558,  558,  482,  533,  533,  582,  502,  502,  502,
-      502,  498,  578,  578,  578,  498,  484,  317,  502,  657,
-
-      533,  533,  317,  317,  328,  328,  657,  482,  538,  538,
-      477,  482,  538,  634,  502,  553,  553,  639,  328,  582,
-      328,  328,  328,  328,  553,  520,  520,  520,  520,  558,
-      662,  328,  517,  657,  517,  328,  520,  517,  517,  517,
-      517,  523,  523,  523,  523,  538,  634,  328,  337,  337,
-      639,  934,  520,  534,  534,  712,  712,  894,  545,  545,
-      535,  535,  894,  662,  337,  337,  337,  337,  945,  534,
-      534,  534,  534,  337,  337,  337,  535,  535,  535,  535,
-      666,  559,  559,  576,  576,  576,  576,  337,  337,  337,
-      337,  337,  337,  339,  339,  339,  339,  339,  339,  339,
-
-      339,  339,  339,  339,  339,  339,  339,  339,  545,  339,
-      339,  529,  529,  666,  945,  339,  339,  339,  339,  536,
-      536,  989,  529,  989,  529,  547,  547,  529,  529,  529,
-      529,  559,  339,  543,  543,  536,  536,  536,  561,  561,
-      895,  547,  547,  932,  543,  895,  543,  713,  713,  543,
-      543,  543,  543,  931,  561,  561,  339,  339,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  930,  341,
-      341,  532,  532,  567,  567,  341,  341,  341,  341,  718,
-      718,  929,  567,  546,  546,  719,  719,  532,  532,  532,
-      532,  927,  341,  540,  540,  730,  730,  540,  532,  546,
-      546,  546,  546,  926,  548,  548,  577,  577,  577,  577,
-      546,  341,  731,  731,  532,  746,  341,  341,  352,  352,
-      548,  548,  548,  548,  549,  549,  546,  552,  552,  903,
-
-      540,  552,  352,  903,  352,  352,  352,  352,  550,  550,
-      549,  549,  549,  549,  750,  352,  554,  554,  746,  352,
-      554,  944,  644,  645,  550,  550,  550,  557,  557,  644,
-      645,  352,  361,  361,  552,  925,  644,  645,  557,  944,
-      557,  736,  736,  557,  557,  557,  557,  750,  361,  361,
-      361,  361,  946,  554,  737,  737,  649,  361,  361,  361,
-      566,  566,  888,  649,  566,  585,  585,  585,  585,  888,
-      649,  361,  361,  361,  361,  361,  361,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  888,  363,  363,  560,  560,  566,  946,  363,
-
-      363,  363,  363,  564,  564,  649,  682,  562,  562,  924,
-      682,  560,  560,  560,  560,  682,  363,  563,  563,  564,
-      564,  564,  560,  562,  562,  562,  562,  586,  586,  586,
-      586,  827,  827,  563,  563,  563,  563,  997,  560,  997,
-      363,  363,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+       39,   39,  233,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   41,   52,   41,   41,
+       41,   41,  216,   51,   52,   49,  971,   53,   41,   41,
+       51,   52,   49,   41,   53,   41,  216,   51,   41,   49,
+       56,   53,   41,  112,  971,   41,   42,  112,   42,   42,
+
+       42,   42,  112,   41,   67,   48,   67,   67,  975,   42,
+       52,   41,   48,   42,   53,   48,   48,   48,   48,   48,
+       49,  121,  124,  124,   51,   42,   43,   53,   43,  455,
+       56,   43, 1074,   50,   43,   43,   43,   43,   43,   43,
+       50,   54,   43,  286,   43,   43,  455,   50,   54,   57,
+      286,   57,   57,  975,  121,   54,   66,   58,   58,   58,
+       58,   59,   59,   66,   57,   61,   61,   61,   61,  655,
+       66,   50,   58,   68,   68,   68,   68,   50,  655,   62,
+       59,   62,   62,   62,   62,   54,   63,   64,   71,   71,
+       71,   71,  213,   66,  213,   64,   64,   64,   64,   64,
+
+       64,  126,  126,  167,   63,   63,   64,   63,  182,   63,
+      126,   63,   63,   63,   63,  214,   63,  214,   63,   63,
+       63,  136,  136,   84,   63,   73,   73,   73,   73,   75,
+       84,   75,   78,   75,   75,   77,  167,   77,   77,   77,
+       77,  182,   78,   78,   78,   78,   80, 1072,   80,   80,
+       80,   80,  231,   84,   85,   85,   85,   85, 1071,   80,
+      231,   83,  849,   80,   83,   83,   83,   83,   83,   78,
+       78,  138,  138,  285,   78,   80,   86,   86,   86,   86,
+       93,  285,   93,   93,   93,   93,   94,   94,   94,   94,
+      849,  100,   96,  100,  100,  101,  101,  101,  101,   96,
+
+      234,  109,   96,  109,  109,  234,   96,  104,  104,  104,
+      104,  140,  140,  120,   94,  120,  120,   96,   94,   95,
+      140,   95,   95,   95,   95,   96,  105,  105,  105,  105,
+      116,   95,   95,  131,  131,  104,   95,  116,   95,  104,
+      116,   95,  150,  150,  116,   95,  684,  113,   95,  113,
+      113,  113,  113,  684,  131,  116,   95,  134,  134,  134,
+      134,  152,  152,  116,   95,   98,   98, 1068,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+      684,   98,   98,  114,  114,  114,  114,   98,   98,   98,
+       98,  206,  106, 1065,  106,  106,  106,  106,  135,  135,
+
+      135,  135, 1064,  206,   98,  106,  127,  127,  458,  106,
+      458,  114,  125,  125,  239,  114,  125,  154,  154,  239,
+      127,  106,  127,  127,  127,  127,  154, 1063,   98,   98,
+       99,   99,  239,   99,   99,   99,   99,   99,   99,   99,
+       99,   99,   99,   99,   99,  858,   99,   99,  858,  125,
+      145,  145,   99,   99,   99,   99,  130,  148,  148,  148,
+      148,  128,  128,  130,  139,  139,  130, 1061,  139,   99,
+      130,  145,  222,  222,  844,   99,  844,  128,  128,  128,
+      128,  130,  149,  149,  149,  149,  153,  153,  211,  130,
+      153,  704,  211,   99,   99,  115,  211,  115,  115,  115,
+
+      115,  139,  225,  225,  225,  128, 1060,  115,  115,  128,
+      159,  159,  115,  176,  115,  176,  176,  115,  704,  141,
+      141,  115, 1059,  153,  115,  162,  162,  162,  162,  230,
+      230,  159,  115,  141,  274,  141,  141,  141,  141,  274,
+      115,  118,  118,  118,  118,  118,  118, 1058,  118,  118,
+      118,  118,  118,  118,  118,  118, 1051,  118,  118,  163,
+      163,  163,  163,  118,  118,  118,  118,  155,  155,  169,
+      294,  169,  169,  169,  169,  244,  244,  142,  142,  862,
+      118,  155,  862,  155,  155,  155,  155,  177,  177,  177,
+      177,  271,  271,  142,  142,  142,  142,  178, 1046,  178,
+
+      178,  304,  304,  294,  118,  118,  119,  119,  119,  119,
+      119,  119,  178,  119,  119,  119,  119,  119,  119,  119,
+      119,  142,  119,  119, 1045,  142,  419,  144,  119,  119,
+      119,  119,  232,  158,  144, 1042,  232,  144,  156,  156,
+      158,  144,  854,  158,  854,  119,  179,  158,  179,  179,
+      232,  119,  144,  969,  156,  156,  156,  156,  158,  419,
+      144,  186,  186,  186,  186,  264,  158,  264,  264,  119,
+      119,  129,  129,  170,  170,  170,  170,  187,  187,  187,
+      187,  275,  156,  275,  275,  129,  156,  129,  129,  129,
+      129,  188,  188,  188,  188,  309,  172,  129,  129,  969,
+
+      309,  170,  129,  172,  129,  170,  172,  129,  329,  329,
+      172,  129, 1041,  247,  129,  189,  189,  189,  189, 1039,
+      247,  172,  129,  196,  196,  196,  196,  247, 1038,  172,
+      129,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+      132,  132,  132,  132,  132,  132,  318,  132,  132,  313,
+      251,  313,  313,  132,  132,  132,  132,  251,  197, 1037,
+      197,  197,  197,  197,  251,  200,  200,  200,  200,  924,
+      132,  197,  223,  924,  223,  197,  200,  223,  223,  223,
+      223,  267,  318,  289,  321,  267,  334,  197,  321,  267,
+      289,  334,  200,  321,  132,  132,  133,  133,  133,  133,
+
+      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
+      133,  920,  133,  133,  262,  496,  262,  262,  133,  133,
+      133,  133,  221,  221,  221,  221,  289, 1035,  319,  262,
+      319,  319,  249,  221,  920,  133,  307,  307,  307,  249,
+      250,  133,  249,  249,  249,  249,  249,  250,  496,  221,
+      252,  254,  339,  339,  250, 1034,  253,  252,  254,  133,
+      133,  143,  143,  253,  252,  254,  705,  255,  921,  257,
+      253,  332,  332,  332,  255,  143,  257,  143,  143,  143,
+      143,  255,  338,  257,  338,  338,  254,  143,  143, 1033,
+      250,  921,  143,  705,  143,  341,  341,  143,  253,  253,
+
+      252,  143,  256,  502,  143,  276,  276,  276,  276,  256,
+      434,  257,  143,  344,  344,  434,  256,  255,  345,  345,
+      143,  146,  146,  146,  146,  146,  146,  146,  146,  146,
+      146,  146,  146,  146,  146,  146,  502,  146,  146,  278,
+      278,  278,  278,  146,  146,  146,  146,  346,  346, 1032,
+      256,  280,  280,  280,  280,  280,  346, 1013,  288, 1013,
+      146,  288,  288,  288,  288,  288,  290,  290,  290,  290,
+      291,  291,  291,  291,  298,  298,  298,  298,  323,  323,
+      323,  323,  351,  351,  146,  146,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+
+      147,  866,  147,  147,  866,  347,  347,  918,  147,  147,
+      147,  147,  918,  299,  347,  299,  299,  299,  299,  352,
+      352,  300,  300,  300,  300,  147,  299,  356,  356,  351,
+      299,  147,  300,  303,  303,  303,  303,  354,  354,  342,
+      342,  850,  299,  342,  303,  365,  365, 1030,  300,  147,
+      147,  157,  157,  354,  354,  925,  305,  970,  305,  925,
+      303,  305,  305,  305,  305,  157,  352,  157,  157,  157,
+      157,  850,  325,  325,  325,  325,  342,  157,  157,  367,
+      367, 1029,  157,  325,  157,  370,  370,  157,  371,  371,
+      330,  157,  330,  536,  157,  330,  330,  330,  330,  325,
+
+      343,  343,  157,  970,  343,  363,  363,  363,  363,  976,
+      157,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  536,  160,  160,  364,
+      364,  364,  364,  160,  160,  160,  160,  343,  317,  538,
+      317,  317,  317,  317,  324, 1028,  324,  324,  324,  324,
+      160,  317,  348,  348,  976,  317, 1026,  324,  608,  368,
+      368,  324,  926,  368,  382,  382,  926,  317,  348,  348,
+      348,  348,  538,  324,  160,  160,  161,  161,  161,  161,
+      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+      161,  608,  161,  161,  357,  357,  368,  977,  161,  161,
+
+      161,  161,  328,  328,  328,  328,  350,  350,  372,  372,
+      357,  357,  357,  328,  927,  161,  972,  372,  927,  355,
+      355,  161,  350,  350,  350,  350,  610,  369,  369,  328,
+      355,  369,  355,  350,  972,  355,  355,  355,  355,  161,
+      161,  171,  977,  171,  171,  171,  171,  359,  359,  350,
+      919,  359,  662,  171,  171,  919,  359, 1018,  171,  610,
+      171,  377,  377,  171,  369,  373,  373,  171,  378,  378,
+      171,  385,  385, 1016,  373,  385,  391,  391,  171,  973,
+      385,  389,  389,  389,  389,  662,  171,  174,  174, 1014,
+      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+
+      174,  174,  922,  174,  174,  353,  353,  922,  377,  174,
+      174,  174,  174,  380,  380,  378,  667,  374,  374,  393,
+      393,  353,  353,  353,  353,  973,  174,  376,  376,  380,
+      380, 1012,  353,  374,  374,  374,  374,  390,  390,  390,
+      390,  396,  396,  376,  376,  376,  376, 1011,  353,  667,
+      174,  174,  175,  175,  376,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  175,  175,  175,  974,  175,  175,
+      376,  379,  379, 1010,  175,  175,  175,  175,  397,  397,
+      408,  408, 1009,  381,  381,  403,  403,  379,  379,  379,
+      379,  175,  383,  383,  381, 1007,  381,  175,  379,  381,
+
+      381,  381,  381,  398,  398,  429,  429,  928,  383,  383,
+      383,  928,  398,  974,  379,  175,  175,  308,  308,  308,
+      308, 1006,  399,  399,  472,  472,  308,  308,  308,  394,
+      394,  399,  403,  394,  690,  395,  395,  404,  404,  395,
+      308,  308,  308,  308,  308,  308,  310,  310, 1005,  310,
+      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
+      310, 1004,  310,  310,  400,  400,  394,  690,  310,  310,
+      310,  310,  395,  406,  406,  407,  407,  432,  432,  432,
+      400,  400,  400,  400,  404,  310,  407, 1003,  407,  406,
+      406,  407,  407,  407,  407,  411,  411,  531,  531,  411,
+
+      415,  415,  415,  415,  411,  416,  416,  416,  416,  310,
+      310,  311,  311, 1002,  311,  311,  311,  311,  311,  311,
+      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
+      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
+      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
+      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
+      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
+      311,  311,  311,  311,  311,  311,  312,  312, 1001,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  923,  312,  312,  402,  402,  923,  481,  312,  312,
+
+      312,  312,  409,  409,  998,  481,  405,  405,  481,  978,
+      402,  402,  402,  402,  438,  312,  438,  438,  409,  409,
+      409,  402,  405,  405,  405,  405,  423,  423,  423,  423,
+      475,  475,  475,  405,  312,  549,  549,  402,  997,  312,
+      312,  333,  333,  333,  333,  439,  996,  439,  439,  405,
+      333,  333,  333,  430,  978,  430,  603,  603,  430,  430,
+      430,  430,  678,  678,  333,  333,  333,  333,  333,  333,
+      335,  335,  335,  335,  335,  335,  995,  335,  335,  335,
+      335,  335,  335,  335,  335,  967,  335,  335,  440,  440,
+      440,  440,  335,  335,  335,  335,  967,  424,  993,  424,
+
+      424,  424,  424,  967,  425,  425,  425,  425,  991,  335,
+      424,  534,  534,  534,  424,  425,  441,  441,  441,  441,
+      442,  442,  442,  442,  701,  701,  424,  443,  443,  443,
+      443,  425,  990,  335,  335,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+
+      337,  337,  337,  337,  337,  337,  989,  337,  337,  337,
+      337,  337,  337,  337,  337,  988,  337,  337,  428,  428,
+      428,  428,  337,  337,  337,  337,  444,  544,  444,  428,
+      987,  444,  444,  444,  444,  471,  471,  471,  471,  337,
+      473,  473,  473,  473,  986,  428,  471,  474,  474,  474,
+      474,  544,  985,  504,  505,  544,  694, 1015,  337, 1015,
+      504,  505,  471,  337,  337,  349,  349,  504,  505,  558,
+      558,  506,  984,  507,  532,  532,  532,  532,  506,  349,
+      507,  349,  349,  349,  349,  506,  508,  507,  509,  694,
+      511,  510,  349,  508,  983,  509,  349,  511,  510,  505,
+
+      508,  962,  509,  554,  511,  510,  512,  554,  349,  358,
+      358,  526,  554,  512,  774,  507,  870,  558,  526,  870,
+      512,  533,  533,  533,  533,  358,  358,  358,  358,  510,
+     1017,  511, 1017,  510,  358,  358,  358,  519,  519,  519,
+      519,  519,  526,  512,  572,  572,  526,  774,  358,  358,
+      358,  358,  358,  358,  360,  360,  360,  360,  360,  360,
+      360,  360,  360,  360,  360,  360,  360,  360,  360,  805,
+      360,  360,  530,  530,  530,  530,  360,  360,  360,  360,
+      527,  960,  527,  530,  805,  527,  527,  527,  527,  545,
+      805,  545,  572,  360,  545,  545,  545,  545,  959,  530,
+
+      550,  550,  550,  550,  551,  551,  551,  551,  552,  552,
+      552,  604,  604,  604,  604,  722,  722,  360,  360,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  958,
+
+      362,  362,  548,  548,  548,  548,  362,  362,  362,  362,
+      559,  559,  957,  548,  557,  557,  566,  566,  560,  560,
+      566,  718,  718,  362,  929,  557,  955,  557,  929,  548,
+      557,  557,  557,  557,  560,  560,  560,  560,  561,  561,
+      562,  562,  362,  567,  567,  560,  778,  362,  362,  375,
+      375,  954,  567,  566,  561,  561,  562,  562,  562,  562,
+      559,  560,  953,  375,  718,  375,  375,  375,  375,  563,
+      563,  568,  568,  564,  564,  568,  375,  573,  573,  778,
+      375,  575,  575,  576,  576,  563,  563,  563,  563,  564,
+      564,  564,  375,  384,  384,  581,  581,  575,  575,  576,
+
+      576,  576,  576,  930,  581,  577,  577,  930,  568,  384,
+      384,  384,  384,  578,  578,  952,  586,  586,  384,  384,
+      384,  577,  577,  577,  577,  719,  719,  573,  951,  578,
+      578,  578,  384,  384,  384,  384,  384,  384,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+      386,  386,  386,  950,  386,  386,  571,  571,  723,  723,
+      386,  386,  386,  386,  586,  585,  585,  571,  719,  571,
+      589,  589,  571,  571,  571,  571,  585,  386,  585,  590,
+      590,  585,  585,  585,  585,  949,  589,  589,  728,  728,
+      595,  595,  606,  606,  606,  590,  590,  590,  590,  595,
 
-      364,  364,  364,  364,  364,  364,  364,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  923,  365,  365,  574,  574,  574,  574,  365,
-      365,  365,  365,  922,  696,  696,  574,  568,  568,  828,
-      828,  568,  571,  696,  571,  921,  365,  571,  571,  571,
-      571,  920,  574,  646,  647,  658,  658,  658,  658,  918,
-      646,  647,  648,  829,  829,  365,  917,  646,  647,  648,
-      365,  365,  376,  376,  568,  916,  648,  659,  659,  659,
-      659,  678,  678,  678,  678,  915,  376,  914,  376,  376,
-      376,  376,  831,  831,  646,  647,  690,  690,  913,  376,
-
-      761,  691,  691,  376,  688,  688,  648,  679,  679,  679,
-      679,  689,  689,  761,  912,  376,  385,  385,  911,  761,
-      688,  688,  688,  688,  832,  832,  910,  689,  689,  689,
-      689,  948,  385,  385,  385,  385,  703,  703,  909,  690,
-      703,  385,  385,  385,  691,  692,  692,  833,  833,  692,
-      693,  693,  708,  708,  693,  385,  385,  385,  385,  385,
-      385,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  948,  387,  387,  697,
-      697,  908,  692,  387,  387,  387,  387,  693,  697,  706,
-      706,  835,  835,  707,  707,  708,  907,  721,  721,  906,
-
-      387,  721,  724,  724,  905,  706,  706,  706,  706,  707,
-      707,  707,  707,  714,  714,  836,  836,  905,  724,  724,
-      724,  724,  714,  905,  387,  387,  388,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      948,  386,  386,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  388,  388,
       388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  389,  389,  389,  389,  389,  389,  389,  389,  389,
+      388,  388,  388,  968,  388,  388,  574,  574,  587,  587,
+      388,  388,  388,  388,  968,  602,  602,  602,  602,  729,
 
-      389,  389,  389,  389,  389,  389,  949,  389,  389,  709,
-      709,  715,  715,  389,  389,  389,  389,  904,  726,  726,
-      715,  727,  727,  698,  698,  699,  699,  698,  882,  699,
-      389,  710,  710,  711,  711,  710,  881,  711,  716,  716,
-      717,  717,  716,  879,  717,  878,  739,  739,  777,  389,
-      739,  949,  709,  876,  389,  389,  406,  406,  406,  406,
-      698,  726,  699,  777,  727,  406,  406,  406,  710,  777,
-      711,  742,  742,  742,  742,  716,  875,  717,  950,  406,
-      406,  406,  406,  406,  406,  408,  408,  874,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-
-      871,  408,  408,  725,  725,  732,  732,  408,  408,  408,
-      408,  811,  837,  837,  732,  870,  733,  733,  811,  725,
-      725,  725,  725,  950,  408,  733,  743,  743,  743,  743,
-      841,  841,  887,  885,  887,  887, 1026, 1026,  886,  938,
-      885,  938,  938, 1027, 1027,  886,  811,  885,  408,  408,
-      409,  409,  886,  409,  409,  409,  409,  409,  409,  409,
-      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
-      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
-      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
-      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
-
-      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
-      409,  409,  409,  409,  409,  410,  410,  869,  410,  410,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      951,  410,  410,  868,  812,  889,  867,  410,  410,  410,
-      410,  812,  889,  952,  992,  992,  992,  728,  728,  729,
-      729,  728,  953,  729,  410,  734,  734,  735,  735,  734,
-      801,  735,  803,  883,  865,  889,  954,  801,  864,  803,
-      883,  812,  863,  410,  801,  951,  803,  883,  410,  410,
-      507,  507,  507,  507,  728,  862,  729,  861,  952,  507,
-      507,  507,  734,  860,  735, 1028, 1028,  953,  858,  857,
-
-      883,  803,  801,  507,  507,  507,  507,  507,  507,  511,
-      511,  954,  511,  511,  511,  511,  511,  511,  511,  511,
-      511,  511,  511,  511,  856,  511,  511,  939,  884,  855,
-      853,  511,  511,  511,  511,  884,  936,  852,  939,  937,
-      936,  940,  884,  937,  851,  939,  850,  936,  511,  849,
-      937,  848,  940,  847,  936,  846,  844,  937,  843,  940,
-      991,  991,  991,  818,  991,  884,  993,  993,  993,  809,
-      993,  806,  511,  511,  512,  512,  800,  512,  512,  512,
-      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
-      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
-
-      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
-      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
-      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
-      512,  512,  512,  512,  512,  512,  512,  512,  512,  525,
-      525,  525,  525,  799,  802,  804,  798,  797,  525,  525,
-      525,  802,  804,  994,  994,  994,  796,  795,  802,  804,
-      794,  793,  525,  525,  525,  525,  525,  525,  527,  527,
-      527,  527,  527,  527,  792,  527,  527,  527,  527,  527,
-      527,  527,  527,  791,  527,  527,  790,  789,  802,  786,
-      527,  527,  527,  527,  804,  995,  995,  995,  785,  995,
-
-      996,  996,  996,  783,  781,  779,  778,  527,  776,  775,
-      774,  773,  772,  771,  770,  769,  768,  766,  765,  764,
-      763,  760,  758,  757,  756,  754,  749,  745,  744,  741,
-      723,  527,  527,  528,  528,  528,  528,  528,  528,  705,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  537,  537,
-
-      687,  685,  681,  680,  675,  674,  672,  670,  665,  661,
-      660,  655,  654,  653,  537,  537,  537,  537,  652,  643,
-      642,  637,  633,  537,  537,  537,  632,  631,  630,  629,
-      628,  626,  625,  624,  623,  622,  621,  537,  537,  537,
-      537,  537,  537,  541,  541,  541,  541,  541,  541,  541,
-      541,  541,  541,  541,  541,  541,  541,  541,  619,  541,
-      541,  618,  617,  616,  615,  541,  541,  541,  541,  614,
-      613,  612,  611,  609,  608,  607,  606,  605,  604,  603,
-      602,  601,  541,  600,  599,  597,  596,  595,  594,  593,
-      592,  591,  590,  589,  588,  581,  573,  572,  519,  518,
-
-      515,  514,  513,  509,  501,  500,  541,  541,  542,  542,
-      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
-      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
-      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
-      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
-      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
-      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
-      542,  542,  542,  551,  551,  497,  496,  495,  494,  489,
-      488,  487,  486,  485,  475,  472,  469,  467,  466,  551,
-      551,  551,  551,  465,  464,  463,  462,  461,  551,  551,
+      729,  968,  574,  574,  574,  574,  602,  388,  580,  580,
+      724,  724,  580,  574,  685,  946,  582,  582,  945,  724,
+      582,  685,  602,  672,  594,  594,  388,  944,  594,  574,
+      672,  388,  388,  401,  401,  725,  725,  672,  587,  588,
+      588,  943,  596,  596,  725,  580,  596,  401,  685,  401,
+      401,  401,  401,  582,  942,  588,  588,  588,  588,  941,
+      401,  594,  740,  740,  401,  710,  588,  591,  591,  710,
+      940,  592,  592, 1025,  710, 1025,  401,  410,  410,  596,
+      741,  741,  588,  591,  591,  591,  591,  592,  592,  592,
+      746,  746,  979,  410,  410,  410,  410,  605,  605,  605,
+
+      605,  673,  410,  410,  410,  599,  939,  599,  673,  938,
+      599,  599,  599,  599,  937,  673,  410,  410,  410,  410,
+      410,  410,  412,  412,  412,  412,  412,  412,  412,  412,
+      412,  412,  412,  412,  412,  412,  412,  979,  412,  412,
+      613,  613,  613,  613,  412,  412,  412,  412,  614,  614,
+      614,  614,  686,  686,  686,  686,  687,  687,  687,  687,
+      936,  412,  706,  706,  706,  706,  707,  707,  707,  707,
+      731,  731,  742,  742,  731,  743,  743,  747,  747,  749,
+      749,  742,  935,  749,  743,  412,  412,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  414,  414,  414,  414,  414,  414,  414,  414,
+      414,  414,  414,  414,  414,  414,  414,  934,  414,  414,
+      932,  674,  675,  910,  414,  414,  414,  414,  674,  675,
+      676,  677,  716,  716,  909,  674,  675,  676,  677,  717,
+      717,  414,  720,  720,  676,  677,  720,  840,  716,  716,
+
+      716,  716,  758,  758,  840,  717,  717,  717,  717,  907,
+      414,  906,  674,  675,  904,  414,  414,  433,  433,  433,
+      433,  736,  736,  903,  676,  902,  433,  433,  433,  720,
+      677,  899,  737,  737,  840,  721,  721,  759,  759,  721,
+      433,  433,  433,  433,  433,  433,  435,  435,  789,  435,
+      435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+      435,  789,  435,  435,  736,  734,  734,  789,  435,  435,
+      435,  435,  721,  735,  735,  737,  726,  726,  752,  752,
+      726,  734,  734,  734,  734,  435,  753,  753,  898,  735,
+      735,  735,  735,  897,  752,  752,  752,  752,  760,  760,
+
+      764,  764,  753,  753,  753,  753,  896,  760,  895,  435,
+      435,  436,  436,  726,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  437,  437,  893,  437,
+      437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
+      437,  980,  437,  437,  754,  754,  761,  761,  437,  437,
+
+      437,  437,  892,  755,  755,  761,  765,  765,  727,  727,
+      738,  738,  727,  891,  738,  437,  739,  739,  744,  744,
+      739,  890,  744,  745,  745,  756,  756,  745,  889,  756,
+      888,  767,  767,  886,  437,  767,  980,  754,  885,  437,
+      437,  535,  535,  535,  535,  727,  755,  738,  855,  855,
+      535,  535,  535,  739,  981,  744,  770,  770,  770,  770,
+      745,  884,  756,  883,  535,  535,  535,  535,  535,  535,
+      539,  539,  881,  539,  539,  539,  539,  539,  539,  539,
+      539,  539,  539,  539,  539,  982,  539,  539,  771,  771,
+      771,  771,  539,  539,  539,  539,  839,  856,  856,  981,
+
+      757,  757,  880,  839,  757,  857,  857,  859,  859,  539,
+      860,  860,  861,  861,  863,  863,  864,  864,  865,  865,
+      869,  869,  915,  931,  915,  915,  966,  931,  966,  966,
+      982,  839,  879,  539,  539,  540,  540,  757,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
+
+      553,  553,  553,  553, 1019, 1019, 1019,  832, 1019,  553,
+      553,  553,  762,  762,  832,  878,  762,  877,  763,  763,
+      876,  832,  763,  553,  553,  553,  553,  553,  553,  555,
+      555,  555,  555,  555,  555,  875,  555,  555,  555,  555,
+      555,  555,  555,  555,  874,  555,  555, 1054, 1054,  762,
+      831,  555,  555,  555,  555,  763,  832,  831,  829,  913,
+      914,  872,  933,  871,  831,  829,  913,  914,  555, 1020,
+     1020, 1020,  829,  913,  914,  933, 1021, 1021, 1021,  846,
+     1021,  933, 1022, 1022, 1022,  837, 1023, 1023, 1023,  831,
+     1023,  834,  555,  555,  556,  556,  556,  556,  556,  556,
 
-      551,  460,  459,  458,  457,  456,  455,  454,  452,  451,
-      450,  449,  551,  551,  551,  551,  551,  551,  555,  555,
-      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
-      555,  555,  555,  441,  555,  555,  440,  439,  438,  437,
-      555,  555,  555,  555,  436,  435,  434,  433,  432,  431,
-      429,  428,  426,  425,  424,  423,  422,  555,  421,  420,
-      419,  418,  400,  399,  395,  307,  306,  297,  296,  295,
-      284,  283,  279,  269,  266,  265,  261,  256,  255,  253,
-      252,  555,  555,  556,  556,  556,  556,  556,  556,  556,
+      829,  556,  556,  556,  556,  556,  556,  556,  556,  556,
       556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-
       556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
       556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
       556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
-      556,  556,  556,  556,  556,  556,  556,  556,  565,  565,
-      251,  249,  248,  246,  232,  230,  229,  222,  221,  219,
-      213,  212,  211,  203,  565,  565,  565,  565,  202,  201,
-      199,  194,  192,  565,  565,  565,  191,  189,  188,  187,
-      177,  159,  154,  152,  110,  101,   96,  565,  565,  565,
-      565,  565,  565,  569,  569,  569,  569,  569,  569,  569,
-
-      569,  569,  569,  569,  569,  569,  569,  569,   93,  569,
-      569,   88,   86,   83,   77,  569,  569,  569,  569,   72,
-       65,   63,   34,   32,   28,   23,    8,    4,    2,    0,
-        0,    0,  569,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  569,  569,  570,  570,
-      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      556,  556,  556,  556,  556,  556,  556,  556,  556,  565,
+      565,  916,  917,  964, 1024, 1024, 1024,  964,  916,  917,
+     1055, 1055, 1056, 1056,  964,  565,  565,  565,  565,  965,
+      830,  964,  911,  965,  565,  565,  565,  830,  828,  911,
+      965,  916,  917,  827,  830,  826,  911,  965,  565,  565,
+
+      565,  565,  565,  565,  569,  569,  569,  569,  569,  569,
+      569,  569,  569,  569,  569,  569,  569,  569,  569,  911,
+      569,  569,  825,  912,  830,  824,  569,  569,  569,  569,
+      912,  823,  822,  821,  820,  819,  818,  912,  817,  814,
+      813,  811,  809,  569,  807,  806,  804,  803,  802,  801,
+      800,  799,  798,  797,  796,  794,  793,  792,  791,  788,
+      912,  786,  785,  784,  782,  777,  773,  569,  569,  570,
       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
 
       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
-      570,  570,  570,  579,  579,  579,  579,    0,    0,    0,
-        0,    0,  579,  579,  579,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  579,  579,  579,  579,
-      579,  579,  583,  583,    0,  583,  583,  583,  583,  583,
-      583,  583,  583,  583,  583,  583,  583,    0,  583,  583,
-        0,    0,    0,    0,  583,  583,  583,  583,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  583,    0,    0,    0,    0,    0,    0,    0,    0,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  579,  579,  772,  769,  751,  733,
+      715,  713,  709,  708,  703,  702,  700,  698,  693,  689,
+      579,  579,  579,  579,  688,  683,  682,  681,  680,  579,
+      579,  579,  671,  670,  665,  661,  660,  659,  658,  657,
+      656,  654,  653,  579,  579,  579,  579,  579,  579,  583,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  652,  583,  583,  651,  650,  649,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  583,  583,  584,  584,    0,
-      584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
+      647,  583,  583,  583,  583,  646,  645,  644,  643,  642,
+      641,  640,  639,  637,  636,  635,  634,  633,  583,  632,
+      631,  630,  629,  628,  627,  625,  624,  623,  622,  621,
+      620,  619,  618,  617,  616,  609,  601,  600,  547,  546,
+      543,  542,  583,  583,  584,  584,  584,  584,  584,  584,
       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
-      584,  584,  669,  669,    0,  669,  669,  669,  669,  669,
-      669,  669,  669,  669,  669,  669,  669,    0,  669,  669,
 
-        0,    0,    0,    0,  669,  669,  669,  669,    0,    0,
+      584,  584,  584,  584,  584,  584,  584,  584,  584,  593,
+      593,  541,  537,  529,  528,  525,  524,  523,  522,  517,
+      516,  515,  514,  513,  503,  593,  593,  593,  593,  500,
+      497,  495,  494,  493,  593,  593,  593,  492,  491,  490,
+      489,  488,  487,  486,  485,  484,  483,  482,  593,  593,
+      593,  593,  593,  593,  597,  597,  597,  597,  597,  597,
+      597,  597,  597,  597,  597,  597,  597,  597,  597,  480,
+      597,  597,  479,  478,  477,  469,  597,  597,  597,  597,
+      468,  467,  466,  465,  464,  463,  462,  461,  460,  459,
+      457,  456,  454,  597,  453,  452,  451,  450,  449,  448,
+
+      447,  446,  427,  426,  422,  327,  326,  316,  315,  314,
+      302,  301,  297,  287,  284,  283,  279,  597,  597,  598,
+      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,  607,  607,  607,  607,  273,  272,
+      270,  269,  268,  607,  607,  607,  266,  265,  263,  248,
+
+      246,  245,  238,  237,  235,  229,  228,  607,  607,  607,
+      607,  607,  607,  611,  611,  227,  611,  611,  611,  611,
+      611,  611,  611,  611,  611,  611,  611,  611,  219,  611,
+      611,  218,  217,  215,  210,  611,  611,  611,  611,  208,
+      207,  205,  204,  203,  193,  173,  168,  166,  117,  107,
+      102,   97,  611,   92,   90,   87,   81,   76,   69,   65,
+       34,   32,   28,   23,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  611,  611,  612,  612,
+        0,  612,  612,  612,  612,  612,  612,  612,  612,  612,
+      612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
+
+      612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
+      612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
+      612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
+      612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
+      612,  612,  612,  697,  697,    0,  697,  697,  697,  697,
+      697,  697,  697,  697,  697,  697,  697,  697,    0,  697,
+      697,    0,    0,    0,    0,  697,  697,  697,  697,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  669,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  697,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  669,  669,  671,  671,    0,
-      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
-      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
-      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
-      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
-      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
-
-      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
-      671,  671,  684,  684,  684,  684,  684,  684,    0,  684,
-      684,  684,  684,  684,  684,  684,  684,    0,  684,  684,
-        0,    0,    0,    0,  684,  684,  684,  684,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  684,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  684,  684,  686,  686,  686,
-      686,  686,  686,    0,  686,  686,  686,  686,  686,  686,
-      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
-
-      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
-      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
-      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
-      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
-      686,  686,  702,  702,  702,  702,  702,  702,  702,  702,
-      702,  702,  702,  702,  702,  702,  702,    0,  702,  702,
-        0,    0,    0,    0,  702,  702,  702,  702,    0,    0,
+
+        0,    0,    0,    0,    0,    0,  697,  697,  699,  699,
+        0,  699,  699,  699,  699,  699,  699,  699,  699,  699,
+      699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
+      699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
+      699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
+      699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
+      699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
+      699,  699,  699,  712,  712,  712,  712,  712,  712,    0,
+      712,  712,  712,  712,  712,  712,  712,  712,    0,  712,
+      712,    0,    0,    0,    0,  712,  712,  712,  712,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  702,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  712,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  712,  712,  714,  714,
+      714,  714,  714,  714,    0,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
 
-        0,    0,    0,    0,    0,  702,  702,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,    0,  720,  720,
-        0,    0,    0,    0,  720,  720,  720,  720,    0,    0,
-
+      714,  714,  714,  730,  730,  730,  730,  730,  730,  730,
+      730,  730,  730,  730,  730,  730,  730,  730,    0,  730,
+      730,    0,    0,    0,    0,  730,  730,  730,  730,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  720,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  730,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  720,  720,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-
-      722,  722,  738,  738,  738,  738,  738,  738,  738,  738,
-      738,  738,  738,  738,  738,  738,  738,    0,  738,  738,
-        0,    0,    0,    0,  738,  738,  738,  738,    0,    0,
+        0,    0,    0,    0,    0,    0,  730,  730,  732,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  748,  748,  748,  748,  748,  748,  748,
+      748,  748,  748,  748,  748,  748,  748,  748,    0,  748,
+      748,    0,    0,    0,    0,  748,  748,  748,  748,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  738,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  748,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  738,  738,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  753,  753,    0,  753,  753,  753,  753,  753,
-      753,  753,  753,  753,  753,  753,  753,    0,  753,  753,
-        0,    0,    0,    0,  753,  753,  753,  753,    0,    0,
+        0,    0,    0,    0,    0,    0,  748,  748,  750,  750,
+
+      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  766,  766,  766,  766,  766,  766,  766,
+      766,  766,  766,  766,  766,  766,  766,  766,    0,  766,
+      766,    0,    0,    0,    0,  766,  766,  766,  766,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  753,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  766,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  753,  753,  755,  755,    0,
+        0,    0,    0,    0,    0,    0,  766,  766,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  781,  781,    0,  781,  781,  781,  781,
 
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  815,  815,    0,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  815,  815,  815,  815,  815,  815,  825,  825,  825,
-      825,  825,  825,    0,  825,  825,  825,  825,  825,  825,
-      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
-      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
-      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
-      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
-      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
-      825,  825, 1062,    0, 1062, 1062, 1062, 1062, 1062, 1062,
-
-     1062, 1062, 1062, 1063,    0,    0, 1063, 1063, 1064,    0,
-     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066,
-     1066, 1067,    0, 1067,    0, 1067, 1067, 1067, 1067, 1068,
-     1068, 1068, 1068, 1068, 1068, 1068, 1069,    0, 1069, 1069,
-     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,    0, 1070,
-     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071,    0,
-     1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072,
-        0, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
-     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074,    0,
-
-     1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075,
-     1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076,
-     1076,    0, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
-     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
-     1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
-     1078, 1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
-     1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
-     1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1081, 1081,
-     1081, 1081, 1081, 1081, 1081, 1082, 1082, 1082, 1082, 1082,
-     1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083,
-
-     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084,
-     1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1085, 1085,
-     1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1086,
-     1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
-     1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
-     1087, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-     1088, 1088, 1089,    0, 1089, 1089, 1089, 1089, 1089, 1089,
-     1089, 1089, 1089, 1090,    0, 1090, 1090, 1090, 1090, 1090,
-     1090, 1090, 1090, 1090, 1091,    0, 1091, 1091, 1091, 1091,
-     1091, 1091, 1091, 1091, 1091, 1092,    0, 1092, 1092, 1092,
-
-     1092, 1092, 1092, 1092, 1092, 1092, 1093,    0,    0, 1093,
-     1093, 1094,    0, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
-     1094, 1094, 1095,    0,    0, 1095, 1095, 1095, 1096,    0,
-        0, 1096, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,
-     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,    0,    0,
-        0,    0, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100,
-     1100, 1100, 1101, 1101, 1101, 1101, 1102,    0, 1102, 1102,
-     1102, 1102, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104,
-        0, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
-     1105,    0, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
-
-     1105, 1106,    0, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
-     1106, 1106, 1107,    0, 1107, 1107, 1107, 1107, 1107, 1107,
-     1107, 1107, 1107, 1108, 1108,    0, 1108, 1108, 1108, 1108,
-     1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109, 1109,
-     1109, 1109, 1109, 1109, 1109, 1110, 1110,    0, 1110, 1110,
-     1110, 1110, 1110, 1110, 1110, 1110, 1111, 1111, 1111, 1111,
-     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112,
-     1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1114,
+      781,  781,  781,  781,  781,  781,  781,  781,    0,  781,
+      781,    0,    0,    0,    0,  781,  781,  781,  781,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  781,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  781,  781,  783,  783,
+        0,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  843,  843,    0,  843,  843,  843,  843,
+      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
+      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
+      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
+      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
+      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
+      843,  843,  843,  843,  843,  843,  843,  843,  853,  853,
+      853,  853,  853,  853,    0,  853,  853,  853,  853,  853,
+
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853, 1090,    0, 1090, 1090, 1090, 1090, 1090,
+     1090, 1090, 1090, 1090, 1091,    0,    0, 1091, 1091, 1092,
+        0, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 1094,
+     1094, 1094, 1095,    0, 1095,    0, 1095, 1095, 1095, 1095,
+
+     1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097,    0, 1097,
+     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,    0,
+     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,
+        0, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
+     1100,    0, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
+     1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1102, 1102,
+        0, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
+     1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
+     1104, 1104,    0, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
+     1104, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
+
+     1105, 1105, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
+     1106, 1106, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
+     1107, 1107, 1107, 1107, 1108, 1108, 1108, 1108, 1108, 1108,
+     1108, 1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109,
+     1109, 1109, 1109, 1109, 1109, 1109, 1110, 1110, 1110, 1110,
+     1110, 1110, 1110, 1110, 1110, 1110, 1110, 1111, 1111, 1111,
+     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112,
+     1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1113,
+     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
      1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
 
-     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
-     1115, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
-     1116, 1116, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
-     1117, 1117, 1117, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
-     1118, 1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119,
-     1119, 1119, 1119, 1119, 1119, 1120, 1120, 1120, 1120, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121,
-     1121, 1121, 1121, 1121, 1121, 1121, 1121, 1122, 1122, 1122,
-     1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1123,    0,
-     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124,
-
-        0, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
-     1125,    0, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
-     1125, 1126,    0, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
-     1126, 1126, 1127,    0,    0, 1127, 1127, 1128,    0,    0,
-     1128, 1128, 1128, 1129,    0,    0, 1129, 1130,    0, 1130,
-     1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1131,    0,
-     1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1132,
-        0, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
-     1133, 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1134, 1135, 1135, 1135, 1135, 1135,
-
-     1135, 1136,    0, 1136, 1136, 1136, 1136, 1137,    0, 1137,
-     1137, 1137, 1137, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
-     1139,    0, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
-     1139, 1140,    0, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
-     1140, 1140, 1141,    0, 1141, 1141, 1141, 1141, 1141, 1141,
-     1141, 1141, 1141, 1142,    0, 1142, 1142, 1142, 1142, 1142,
-     1142, 1142, 1142, 1142, 1143,    0, 1143, 1143, 1143, 1143,
-     1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144, 1144, 1144,
-     1144, 1144, 1145, 1145,    0, 1145, 1145, 1145, 1145, 1145,
-     1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
-
-     1146, 1146, 1146, 1146, 1147, 1147,    0, 1147, 1147, 1147,
-     1147, 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148, 1148,
-     1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1149, 1149,
-     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1150, 1150, 1150,
-     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1151,
-     1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
-     1153, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
-
-     1155, 1155, 1155, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
-     1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157,
-     1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158,
-     1158, 1158, 1158, 1158, 1158, 1158, 1159, 1159, 1159, 1159,
-     1159, 1159, 1159, 1159, 1159, 1159, 1159, 1160, 1160, 1160,
-     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1161, 1161,
-     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162,
-     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
-     1163,    0, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
-     1163, 1164,    0, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
-
-     1164, 1164, 1165,    0, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1166,    0, 1166, 1166, 1166, 1166, 1166,
-     1166, 1166, 1166, 1166, 1167,    0, 1167, 1167, 1167, 1167,
-     1167, 1167, 1167, 1167, 1167, 1168,    0,    0, 1168, 1168,
-     1168, 1169,    0, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
-     1169, 1169, 1170,    0, 1170, 1170, 1170, 1170, 1170, 1170,
-     1170, 1170, 1170, 1171,    0, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172, 1172, 1172,
-     1172, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1174,
-        0, 1174, 1174, 1174, 1174, 1175,    0, 1175, 1175, 1175,
-
-     1175, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177,    0,
-     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178,
-        0, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
-     1179,    0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
-     1179, 1180,    0, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
-     1180, 1180, 1181,    0, 1181, 1181, 1181, 1181, 1181, 1181,
-     1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
-     1183, 1183,    0, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
-     1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
-     1184, 1184, 1185, 1185,    0, 1185, 1185, 1185, 1185, 1185,
-
-     1185, 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
-     1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187,
-     1187, 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1188,
-     1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1190, 1190, 1190,
-     1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192,
-     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
-     1193, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
-
-     1194, 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
-     1196, 1196, 1196, 1196, 1197, 1197, 1197, 1197, 1197, 1197,
-     1197, 1197, 1197, 1197, 1197, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1199, 1199, 1199, 1199,
-     1199, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200,
-     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201,    0,
-     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202,
-        0, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
-     1203,    0, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
-
-     1203, 1204,    0, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1205,    0, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1206,    0,    0, 1206, 1206, 1206, 1207,
-     1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208,    0, 1208,
-     1208, 1208, 1208, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1210,    0, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
-     1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212, 1212,
-        0, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061
+     1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
+     1115, 1115, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+     1116, 1116, 1116, 1117,    0, 1117, 1117, 1117, 1117, 1117,
+     1117, 1117, 1117, 1117, 1118,    0, 1118, 1118, 1118, 1118,
+     1118, 1118, 1118, 1118, 1118, 1119,    0, 1119, 1119, 1119,
+     1119, 1119, 1119, 1119, 1119, 1119, 1120,    0, 1120, 1120,
+     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121,    0,    0,
+     1121, 1121, 1122,    0, 1122, 1122, 1122, 1122, 1122, 1122,
+     1122, 1122, 1122, 1123,    0,    0, 1123, 1123, 1123, 1124,
+        0,    0, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+
+     1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1127,    0,
+        0,    0,    0, 1127, 1127, 1127, 1127, 1128, 1128, 1128,
+     1128, 1128, 1128, 1129, 1129, 1129, 1129, 1130,    0, 1130,
+     1130, 1130, 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
+     1132,    0, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
+     1132, 1133,    0, 1133, 1133, 1133, 1133, 1133, 1133, 1133,
+     1133, 1133, 1134,    0, 1134, 1134, 1134, 1134, 1134, 1134,
+     1134, 1134, 1134, 1135,    0, 1135, 1135, 1135, 1135, 1135,
+     1135, 1135, 1135, 1135, 1136, 1136,    0, 1136, 1136, 1136,
+     1136, 1136, 1136, 1136, 1136, 1137, 1137, 1137, 1137, 1137,
+
+     1137, 1137, 1137, 1137, 1137, 1137, 1138, 1138,    0, 1138,
+     1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1139, 1139,
+     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1140,
+     1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1141,
+     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
+     1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
+     1142, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
+     1143, 1143, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
+     1144, 1144, 1144, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
+     1145, 1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, 1146,
+
+     1146, 1146, 1146, 1146, 1146, 1147, 1147, 1147, 1147, 1147,
+     1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148,
+     1148, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1149,
+     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1150, 1150,
+     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151,
+        0, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+     1152,    0, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1153,    0, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+     1153, 1153, 1154,    0, 1154, 1154, 1154, 1154, 1154, 1154,
+     1154, 1154, 1154, 1155,    0,    0, 1155, 1155, 1156,    0,
+
+        0, 1156, 1156, 1156, 1157,    0,    0, 1157, 1158,    0,
+     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1159,
+        0, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
+     1160,    0, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
+     1160, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162, 1162,
+     1162, 1162, 1162, 1162, 1162, 1162, 1163, 1163, 1163, 1163,
+     1163, 1163, 1164,    0, 1164, 1164, 1164, 1164, 1165,    0,
+     1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166, 1166,
+     1166, 1167,    0, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
+     1167, 1167, 1168,    0, 1168, 1168, 1168, 1168, 1168, 1168,
+
+     1168, 1168, 1168, 1169,    0, 1169, 1169, 1169, 1169, 1169,
+     1169, 1169, 1169, 1169, 1170,    0, 1170, 1170, 1170, 1170,
+     1170, 1170, 1170, 1170, 1170, 1171,    0, 1171, 1171, 1171,
+     1171, 1171, 1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172,
+     1172, 1172, 1172, 1173, 1173,    0, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1174, 1174, 1174, 1174, 1174, 1174,
+     1174, 1174, 1174, 1174, 1174, 1175, 1175,    0, 1175, 1175,
+     1175, 1175, 1175, 1175, 1175, 1175, 1176, 1176, 1176, 1176,
+     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 1177, 1177,
+     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 1178,
+
+     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179,
+     1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+     1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+     1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
+     1182, 1182, 1182, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
+     1183, 1183, 1183, 1183, 1184, 1184, 1184, 1184, 1184, 1184,
+     1184, 1184, 1184, 1184, 1184, 1185, 1185, 1185, 1185, 1185,
+     1185, 1185, 1185, 1185, 1185, 1185, 1186, 1186, 1186, 1186,
+     1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187, 1187, 1187,
+
+     1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1188, 1188,
+     1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1189,
+     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
+     1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+     1190, 1191,    0, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+     1191, 1191, 1192,    0, 1192, 1192, 1192, 1192, 1192, 1192,
+     1192, 1192, 1192, 1193,    0, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1194,    0, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1195,    0, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1196,    0,    0, 1196,
+
+     1196, 1196, 1197,    0, 1197, 1197, 1197, 1197, 1197, 1197,
+     1197, 1197, 1197, 1198,    0, 1198, 1198, 1198, 1198, 1198,
+     1198, 1198, 1198, 1198, 1199,    0, 1199, 1199, 1199, 1199,
+     1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200, 1200, 1200,
+     1200, 1200, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1202,    0, 1202, 1202, 1202, 1202, 1203,    0, 1203, 1203,
+     1203, 1203, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1205,
+        0, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
+     1206,    0, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1207,    0, 1207, 1207, 1207, 1207, 1207, 1207, 1207,
+
+     1207, 1207, 1208,    0, 1208, 1208, 1208, 1208, 1208, 1208,
+     1208, 1208, 1208, 1209,    0, 1209, 1209, 1209, 1209, 1209,
+     1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210, 1210, 1210,
+     1210, 1211, 1211,    0, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
+     1212, 1212, 1212, 1213, 1213,    0, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1214, 1214, 1214, 1214, 1214, 1214,
+     1214, 1214, 1214, 1214, 1214, 1215, 1215, 1215, 1215, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1216, 1216, 1216, 1216,
+     1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, 1217, 1217,
+
+     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218,
+     1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219,
+     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
+     1221, 1221, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1224, 1224, 1224, 1224, 1224, 1224,
+     1224, 1224, 1224, 1224, 1224, 1225, 1225, 1225, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1226, 1226, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 1227,
+     1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1228, 1228,
+     1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229,
+        0, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
+     1230,    0, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+     1230, 1231,    0, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231, 1232,    0, 1232, 1232, 1232, 1232, 1232, 1232,
+     1232, 1232, 1232, 1233,    0, 1233, 1233, 1233, 1233, 1233,
+     1233, 1233, 1233, 1233, 1234,    0,    0, 1234, 1234, 1234,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236,    0,
+
+     1236, 1236, 1236, 1236, 1237, 1237, 1237, 1237, 1237, 1237,
+     1237, 1238,    0, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
+     1238, 1238, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240,
+     1240,    0, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1089, 1089, 1089, 1089, 1089
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2460,6 +2480,8 @@
 
 static void include_file(PARROT_INTERP, char *file_name, ARGMOD(void *yyscanner));
 
+static int handle_identifier(PARROT_INTERP, YYSTYPE *valp, ARGIN(const char *id));
+
 #define YY_DECL int yylex(YYSTYPE *valp,yyscan_t yyscanner,PARROT_INTERP)
 
 #define YYCHOP() (yytext[--yyleng] = '\0')
@@ -2489,7 +2511,7 @@
 
 
 
-#line 2493 "compilers/imcc/imclexer.c"
+#line 2515 "compilers/imcc/imclexer.c"
 
 #define INITIAL 0
 #define emit 1
@@ -2734,7 +2756,7 @@
 	register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 152 "compilers/imcc/imcc.l"
+#line 154 "compilers/imcc/imcc.l"
 
         /* for emacs "*/
         if (IMCC_INFO(interp)->expect_pasm == 1 && !IMCC_INFO(interp)->in_pod) {
@@ -2753,7 +2775,7 @@
             return 0;
         }
 
-#line 2757 "compilers/imcc/imclexer.c"
+#line 2779 "compilers/imcc/imclexer.c"
 
 	if ( !yyg->yy_init )
 		{
@@ -2807,13 +2829,13 @@
 			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 >= 1062 )
+				if ( yy_current_state >= 1090 )
 					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 != 1061 );
+		while ( yy_current_state != 1089 );
 		yy_cp = yyg->yy_last_accepting_cpos;
 		yy_current_state = yyg->yy_last_accepting_state;
 
@@ -2834,24 +2856,29 @@
 			goto yy_find_action;
 
 case 1:
-/* rule 1 can match eol */
 YY_RULE_SETUP
-#line 170 "compilers/imcc/imcc.l"
+#line 172 "compilers/imcc/imcc.l"
+{ IMCC_INFO(interp)->line++; }
+	YY_BREAK
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 174 "compilers/imcc/imcc.l"
 {
+            IMCC_INFO(interp)->line++;
             IMCC_INFO(interp)->frames->heredoc_rest = mem_sys_strdup(yytext);
             BEGIN(heredoc2);
     }
 	YY_BREAK
-case 2:
-/* rule 2 can match eol */
+case 3:
+/* rule 3 can match eol */
 YY_RULE_SETUP
-#line 175 "compilers/imcc/imcc.l"
+#line 180 "compilers/imcc/imcc.l"
 {
         /* heredocs have highest priority
          * arrange them before all wildcard state matches */
 
         /* Newline in the heredoc. Realloc and cat on. */
-        IMCC_INFO(interp)->line++;
         IMCC_INFO(interp)->heredoc_content =
             (char*)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
                             strlen(IMCC_INFO(interp)->heredoc_content) +
@@ -2860,10 +2887,11 @@
                strlen(IMCC_INFO(interp)->heredoc_content), yytext);
     }
 	YY_BREAK
-case 3:
+case 4:
 YY_RULE_SETUP
-#line 189 "compilers/imcc/imcc.l"
+#line 193 "compilers/imcc/imcc.l"
 {
+        IMCC_INFO(interp)->line++;
         /* Are we at the end of the heredoc? */
         if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
             /* End of the heredoc. */
@@ -2886,7 +2914,7 @@
             yy_pop_state(yyscanner);
             yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest,yyscanner);
 
-            /* the EOF rule will increment the line number; decrement here */
+            /* not sure we need this decrement; more testing needed */
             IMCC_INFO(interp)->line--;
             return STRINGC;
         }
@@ -2901,10 +2929,10 @@
         }
     }
 	YY_BREAK
-case 4:
-/* rule 4 can match eol */
+case 5:
+/* rule 5 can match eol */
 YY_RULE_SETUP
-#line 227 "compilers/imcc/imcc.l"
+#line 232 "compilers/imcc/imcc.l"
 {
         yy_pop_state(yyscanner);
         yy_push_state(cmt3, yyscanner);
@@ -2915,27 +2943,27 @@
         return FILECOMMENT;
     }
 	YY_BREAK
-case 5:
+case 6:
 YY_RULE_SETUP
-#line 237 "compilers/imcc/imcc.l"
+#line 242 "compilers/imcc/imcc.l"
 {
         yy_pop_state(yyscanner);
         yy_push_state(cmt4, yyscanner);
     }
 	YY_BREAK
-case 6:
+case 7:
 YY_RULE_SETUP
-#line 242 "compilers/imcc/imcc.l"
+#line 247 "compilers/imcc/imcc.l"
 { yy_push_state(cmt2, yyscanner); }
 	YY_BREAK
-case 7:
+case 8:
 YY_RULE_SETUP
-#line 244 "compilers/imcc/imcc.l"
+#line 249 "compilers/imcc/imcc.l"
 { yy_push_state(cmt1, yyscanner);  }
 	YY_BREAK
-case 8:
+case 9:
 YY_RULE_SETUP
-#line 246 "compilers/imcc/imcc.l"
+#line 251 "compilers/imcc/imcc.l"
 {
         IMCC_INFO(interp)->line = atoi(yytext);
         yy_pop_state(yyscanner);
@@ -2943,40 +2971,38 @@
         return LINECOMMENT;
     }
 	YY_BREAK
-case 9:
-/* rule 9 can match eol */
+case 10:
+/* rule 10 can match eol */
 YY_RULE_SETUP
-#line 253 "compilers/imcc/imcc.l"
+#line 258 "compilers/imcc/imcc.l"
 {
         yy_pop_state(yyscanner);
-        IMCC_INFO(interp)->line++;
     }
 	YY_BREAK
-case 10:
-/* rule 10 can match eol */
+case 11:
+/* rule 11 can match eol */
 YY_RULE_SETUP
-#line 258 "compilers/imcc/imcc.l"
+#line 262 "compilers/imcc/imcc.l"
 {
         if (IMCC_INFO(interp)->expect_pasm == 2)
             BEGIN(INITIAL);
 
         IMCC_INFO(interp)->expect_pasm = 0;
-        IMCC_INFO(interp)->line++;
 
         return '\n';
     }
 	YY_BREAK
-case 11:
+case 12:
 YY_RULE_SETUP
-#line 268 "compilers/imcc/imcc.l"
+#line 271 "compilers/imcc/imcc.l"
 {
         yy_push_state(cmt5, yyscanner);
     }
 	YY_BREAK
-case 12:
-/* rule 12 can match eol */
+case 13:
+/* rule 13 can match eol */
 YY_RULE_SETUP
-#line 272 "compilers/imcc/imcc.l"
+#line 275 "compilers/imcc/imcc.l"
 {
         if (IMCC_INFO(interp)->expect_pasm == 2)
             BEGIN(INITIAL);
@@ -2984,512 +3010,512 @@
             yy_pop_state(yyscanner);
 
         IMCC_INFO(interp)->expect_pasm = 0;
-        IMCC_INFO(interp)->line++;
 
         return '\n';
     }
 	YY_BREAK
-case 13:
-/* rule 13 can match eol */
+case 14:
+/* rule 14 can match eol */
 YY_RULE_SETUP
-#line 285 "compilers/imcc/imcc.l"
+#line 287 "compilers/imcc/imcc.l"
 {
     /* this is a stand-alone =cut, but we're not in POD mode, so ignore.  */
     IMCC_INFO(interp)->line++;
 }
 	YY_BREAK
-case 14:
+case 15:
 YY_RULE_SETUP
-#line 290 "compilers/imcc/imcc.l"
+#line 292 "compilers/imcc/imcc.l"
 {
+        IMCC_INFO(interp)->line++;
         IMCC_INFO(interp)->in_pod = 1;
         yy_push_state(pod, yyscanner);
     }
 	YY_BREAK
-case 15:
-/* rule 15 can match eol */
+case 16:
+/* rule 16 can match eol */
 YY_RULE_SETUP
-#line 295 "compilers/imcc/imcc.l"
+#line 298 "compilers/imcc/imcc.l"
 {
+        IMCC_INFO(interp)->line++;
         IMCC_INFO(interp)->in_pod = 0;
         yy_pop_state(yyscanner);
-        IMCC_INFO(interp)->line++;
     }
 	YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 301 "compilers/imcc/imcc.l"
-{ /*ignore*/ }
-	YY_BREAK
 case 17:
-/* rule 17 can match eol */
 YY_RULE_SETUP
-#line 303 "compilers/imcc/imcc.l"
+#line 304 "compilers/imcc/imcc.l"
 { IMCC_INFO(interp)->line++; }
 	YY_BREAK
 case 18:
+/* rule 18 can match eol */
 YY_RULE_SETUP
-#line 305 "compilers/imcc/imcc.l"
-return TK_LINE;
+#line 306 "compilers/imcc/imcc.l"
+{ /* ignore */ }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 306 "compilers/imcc/imcc.l"
-return TK_FILE;
+#line 308 "compilers/imcc/imcc.l"
+return TK_LINE;
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 307 "compilers/imcc/imcc.l"
-return ANNOTATE;
+#line 309 "compilers/imcc/imcc.l"
+return TK_FILE;
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 308 "compilers/imcc/imcc.l"
-return LEXICAL;
+#line 310 "compilers/imcc/imcc.l"
+return ANNOTATE;
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 309 "compilers/imcc/imcc.l"
-return ARG;
+#line 311 "compilers/imcc/imcc.l"
+return LEXICAL;
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 310 "compilers/imcc/imcc.l"
-return SUB;
+#line 312 "compilers/imcc/imcc.l"
+return ARG;
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 311 "compilers/imcc/imcc.l"
-return ESUB;
+#line 313 "compilers/imcc/imcc.l"
+return SUB;
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 312 "compilers/imcc/imcc.l"
-return PCC_BEGIN;
+#line 314 "compilers/imcc/imcc.l"
+return ESUB;
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 313 "compilers/imcc/imcc.l"
-return PCC_END;
+#line 315 "compilers/imcc/imcc.l"
+return PCC_BEGIN;
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 314 "compilers/imcc/imcc.l"
-return PCC_CALL;
+#line 316 "compilers/imcc/imcc.l"
+return PCC_END;
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 315 "compilers/imcc/imcc.l"
-return NCI_CALL;
+#line 317 "compilers/imcc/imcc.l"
+return PCC_CALL;
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 316 "compilers/imcc/imcc.l"
-return METH_CALL;
+#line 318 "compilers/imcc/imcc.l"
+return NCI_CALL;
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 317 "compilers/imcc/imcc.l"
-return INVOCANT;
+#line 319 "compilers/imcc/imcc.l"
+return METH_CALL;
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 318 "compilers/imcc/imcc.l"
-return PCC_SUB;
+#line 320 "compilers/imcc/imcc.l"
+return INVOCANT;
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 319 "compilers/imcc/imcc.l"
-return PCC_BEGIN_RETURN;
+#line 321 "compilers/imcc/imcc.l"
+return PCC_SUB;
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 320 "compilers/imcc/imcc.l"
-return PCC_END_RETURN;
+#line 322 "compilers/imcc/imcc.l"
+return PCC_BEGIN_RETURN;
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 321 "compilers/imcc/imcc.l"
-return PCC_BEGIN_YIELD;
+#line 323 "compilers/imcc/imcc.l"
+return PCC_END_RETURN;
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 322 "compilers/imcc/imcc.l"
-return PCC_END_YIELD;
+#line 324 "compilers/imcc/imcc.l"
+return PCC_BEGIN_YIELD;
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 324 "compilers/imcc/imcc.l"
-return METHOD;
+#line 325 "compilers/imcc/imcc.l"
+return PCC_END_YIELD;
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 325 "compilers/imcc/imcc.l"
-return MULTI;
+#line 327 "compilers/imcc/imcc.l"
+return METHOD;
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 326 "compilers/imcc/imcc.l"
-return MAIN;
+#line 328 "compilers/imcc/imcc.l"
+return MULTI;
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 327 "compilers/imcc/imcc.l"
-return LOAD;
+#line 329 "compilers/imcc/imcc.l"
+return MAIN;
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 328 "compilers/imcc/imcc.l"
-return INIT;
+#line 330 "compilers/imcc/imcc.l"
+return LOAD;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 329 "compilers/imcc/imcc.l"
-return IMMEDIATE;
+#line 331 "compilers/imcc/imcc.l"
+return INIT;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 330 "compilers/imcc/imcc.l"
-return POSTCOMP;
+#line 332 "compilers/imcc/imcc.l"
+return IMMEDIATE;
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 331 "compilers/imcc/imcc.l"
-return ANON;
+#line 333 "compilers/imcc/imcc.l"
+return POSTCOMP;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 332 "compilers/imcc/imcc.l"
-return OUTER;
+#line 334 "compilers/imcc/imcc.l"
+return ANON;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 333 "compilers/imcc/imcc.l"
-return NEED_LEX;
+#line 335 "compilers/imcc/imcc.l"
+return OUTER;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 334 "compilers/imcc/imcc.l"
-return VTABLE_METHOD;
+#line 336 "compilers/imcc/imcc.l"
+return NEED_LEX;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 335 "compilers/imcc/imcc.l"
-return NS_ENTRY;
+#line 337 "compilers/imcc/imcc.l"
+return VTABLE_METHOD;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 336 "compilers/imcc/imcc.l"
-return UNIQUE_REG;
+#line 338 "compilers/imcc/imcc.l"
+return NS_ENTRY;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 337 "compilers/imcc/imcc.l"
-return SUB_INSTANCE_OF;
+#line 339 "compilers/imcc/imcc.l"
+return UNIQUE_REG;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 338 "compilers/imcc/imcc.l"
-return SUBID;
+#line 340 "compilers/imcc/imcc.l"
+return SUB_INSTANCE_OF;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 340 "compilers/imcc/imcc.l"
-return RESULT;
+#line 341 "compilers/imcc/imcc.l"
+return SUBID;
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 341 "compilers/imcc/imcc.l"
-return GET_RESULTS;
+#line 343 "compilers/imcc/imcc.l"
+return RESULT;
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 342 "compilers/imcc/imcc.l"
-return YIELDT;
+#line 344 "compilers/imcc/imcc.l"
+return GET_RESULTS;
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 343 "compilers/imcc/imcc.l"
-return SET_YIELD;
+#line 345 "compilers/imcc/imcc.l"
+return YIELDT;
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 344 "compilers/imcc/imcc.l"
-return RETURN;
+#line 346 "compilers/imcc/imcc.l"
+return SET_YIELD;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 345 "compilers/imcc/imcc.l"
-return SET_RETURN;
+#line 347 "compilers/imcc/imcc.l"
+return RETURN;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 346 "compilers/imcc/imcc.l"
-return TAILCALL;
+#line 348 "compilers/imcc/imcc.l"
+return SET_RETURN;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 347 "compilers/imcc/imcc.l"
-return LOADLIB;
+#line 349 "compilers/imcc/imcc.l"
+return TAILCALL;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 349 "compilers/imcc/imcc.l"
-return ADV_FLAT;
+#line 350 "compilers/imcc/imcc.l"
+return LOADLIB;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 350 "compilers/imcc/imcc.l"
-return ADV_SLURPY;
+#line 352 "compilers/imcc/imcc.l"
+return ADV_FLAT;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 351 "compilers/imcc/imcc.l"
-return ADV_OPTIONAL;
+#line 353 "compilers/imcc/imcc.l"
+return ADV_SLURPY;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 352 "compilers/imcc/imcc.l"
-return ADV_OPT_FLAG;
+#line 354 "compilers/imcc/imcc.l"
+return ADV_OPTIONAL;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 353 "compilers/imcc/imcc.l"
-return ADV_NAMED;
+#line 355 "compilers/imcc/imcc.l"
+return ADV_OPT_FLAG;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 354 "compilers/imcc/imcc.l"
-return ADV_ARROW;
+#line 356 "compilers/imcc/imcc.l"
+return ADV_NAMED;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 355 "compilers/imcc/imcc.l"
-return ADV_INVOCANT;
+#line 357 "compilers/imcc/imcc.l"
+return ADV_ARROW;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 356 "compilers/imcc/imcc.l"
-return ADV_CALL_SIG;
+#line 358 "compilers/imcc/imcc.l"
+return ADV_INVOCANT;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 358 "compilers/imcc/imcc.l"
-return NAMESPACE;
+#line 359 "compilers/imcc/imcc.l"
+return ADV_CALL_SIG;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 359 "compilers/imcc/imcc.l"
-return HLL;
+#line 361 "compilers/imcc/imcc.l"
+return NAMESPACE;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 361 "compilers/imcc/imcc.l"
+#line 362 "compilers/imcc/imcc.l"
+return HLL;
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 364 "compilers/imcc/imcc.l"
 return LOCAL;
 	YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 362 "compilers/imcc/imcc.l"
+#line 365 "compilers/imcc/imcc.l"
 return CONST;
 	YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 363 "compilers/imcc/imcc.l"
+#line 366 "compilers/imcc/imcc.l"
 return GLOBAL_CONST;
 	YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 364 "compilers/imcc/imcc.l"
+#line 367 "compilers/imcc/imcc.l"
 return PARAM;
 	YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 365 "compilers/imcc/imcc.l"
+#line 368 "compilers/imcc/imcc.l"
 return GOTO;
 	YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 366 "compilers/imcc/imcc.l"
+#line 369 "compilers/imcc/imcc.l"
 return IF;
 	YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 367 "compilers/imcc/imcc.l"
+#line 370 "compilers/imcc/imcc.l"
 return UNLESS;
 	YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 368 "compilers/imcc/imcc.l"
+#line 371 "compilers/imcc/imcc.l"
 return PNULL;
 	YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 369 "compilers/imcc/imcc.l"
+#line 372 "compilers/imcc/imcc.l"
 return INTV;
 	YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 370 "compilers/imcc/imcc.l"
+#line 373 "compilers/imcc/imcc.l"
 return FLOATV;
 	YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 372 "compilers/imcc/imcc.l"
+#line 375 "compilers/imcc/imcc.l"
 return PMCV;
 	YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 373 "compilers/imcc/imcc.l"
+#line 376 "compilers/imcc/imcc.l"
 return STRINGV;
 	YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 374 "compilers/imcc/imcc.l"
+#line 377 "compilers/imcc/imcc.l"
 return SHIFT_LEFT;
 	YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 375 "compilers/imcc/imcc.l"
+#line 378 "compilers/imcc/imcc.l"
 return SHIFT_RIGHT;
 	YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 376 "compilers/imcc/imcc.l"
+#line 379 "compilers/imcc/imcc.l"
 return SHIFT_RIGHT_U;
 	YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 377 "compilers/imcc/imcc.l"
+#line 380 "compilers/imcc/imcc.l"
 return LOG_AND;
 	YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 378 "compilers/imcc/imcc.l"
+#line 381 "compilers/imcc/imcc.l"
 return LOG_OR;
 	YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 379 "compilers/imcc/imcc.l"
+#line 382 "compilers/imcc/imcc.l"
 return LOG_XOR;
 	YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 380 "compilers/imcc/imcc.l"
+#line 383 "compilers/imcc/imcc.l"
 return RELOP_LT;
 	YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 381 "compilers/imcc/imcc.l"
+#line 384 "compilers/imcc/imcc.l"
 return RELOP_LTE;
 	YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 382 "compilers/imcc/imcc.l"
+#line 385 "compilers/imcc/imcc.l"
 return RELOP_GT;
 	YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 383 "compilers/imcc/imcc.l"
+#line 386 "compilers/imcc/imcc.l"
 return RELOP_GTE;
 	YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 384 "compilers/imcc/imcc.l"
+#line 387 "compilers/imcc/imcc.l"
 return RELOP_EQ;
 	YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 385 "compilers/imcc/imcc.l"
+#line 388 "compilers/imcc/imcc.l"
 return RELOP_NE;
 	YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 386 "compilers/imcc/imcc.l"
+#line 389 "compilers/imcc/imcc.l"
 return POW;
 	YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 388 "compilers/imcc/imcc.l"
+#line 391 "compilers/imcc/imcc.l"
 return CONCAT;
 	YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 389 "compilers/imcc/imcc.l"
+#line 392 "compilers/imcc/imcc.l"
 return DOT;
 	YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 391 "compilers/imcc/imcc.l"
+#line 394 "compilers/imcc/imcc.l"
 return PLUS_ASSIGN;
 	YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 392 "compilers/imcc/imcc.l"
+#line 395 "compilers/imcc/imcc.l"
 return MINUS_ASSIGN;
 	YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 393 "compilers/imcc/imcc.l"
+#line 396 "compilers/imcc/imcc.l"
 return MUL_ASSIGN;
 	YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 394 "compilers/imcc/imcc.l"
+#line 397 "compilers/imcc/imcc.l"
 return DIV_ASSIGN;
 	YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 395 "compilers/imcc/imcc.l"
+#line 398 "compilers/imcc/imcc.l"
 return MOD_ASSIGN;
 	YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 396 "compilers/imcc/imcc.l"
+#line 399 "compilers/imcc/imcc.l"
 return FDIV;
 	YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 397 "compilers/imcc/imcc.l"
+#line 400 "compilers/imcc/imcc.l"
 return FDIV_ASSIGN;
 	YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 398 "compilers/imcc/imcc.l"
+#line 401 "compilers/imcc/imcc.l"
 return BAND_ASSIGN;
 	YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 399 "compilers/imcc/imcc.l"
+#line 402 "compilers/imcc/imcc.l"
 return BOR_ASSIGN;
 	YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 400 "compilers/imcc/imcc.l"
+#line 403 "compilers/imcc/imcc.l"
 return BXOR_ASSIGN;
 	YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 401 "compilers/imcc/imcc.l"
+#line 404 "compilers/imcc/imcc.l"
 return SHR_ASSIGN;
 	YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 402 "compilers/imcc/imcc.l"
+#line 405 "compilers/imcc/imcc.l"
 return SHL_ASSIGN;
 	YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 403 "compilers/imcc/imcc.l"
+#line 406 "compilers/imcc/imcc.l"
 return SHR_U_ASSIGN;
 	YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 404 "compilers/imcc/imcc.l"
+#line 407 "compilers/imcc/imcc.l"
 return CONCAT_ASSIGN;
 	YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 406 "compilers/imcc/imcc.l"
+#line 409 "compilers/imcc/imcc.l"
 {
         char *macro_name   = NULL;
         int   start_cond   = YY_START;
@@ -3533,16 +3559,18 @@
         return MACRO;
     }
 	YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 449 "compilers/imcc/imcc.l"
+#line 452 "compilers/imcc/imcc.l"
 {
+        /* the initial whitespace catcher misses this one */
+        IMCC_INFO(interp)->line++;
         return read_macro(valp, interp, yyscanner);
     }
 	YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 453 "compilers/imcc/imcc.l"
+#line 458 "compilers/imcc/imcc.l"
 {
         const int c = yylex(valp,yyscanner,interp);
 
@@ -3555,9 +3583,9 @@
         include_file(interp, yytext + 1, yyscanner);
     }
 	YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 465 "compilers/imcc/imcc.l"
+#line 470 "compilers/imcc/imcc.l"
 {
         if (valp) {
             char *label;
@@ -3580,11 +3608,10 @@
         return LABEL;
     }
 	YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 487 "compilers/imcc/imcc.l"
+#line 492 "compilers/imcc/imcc.l"
 {
-
         if (valp) {
             char *label;
             size_t len;
@@ -3604,14 +3631,14 @@
         return IDENTIFIER;
      }
 	YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 508 "compilers/imcc/imcc.l"
+#line 512 "compilers/imcc/imcc.l"
 return COMMA;
 	YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 510 "compilers/imcc/imcc.l"
+#line 514 "compilers/imcc/imcc.l"
 {
         /* trim last ':' */
         YYCHOP();
@@ -3622,9 +3649,9 @@
         return LABEL;
     }
 	YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 520 "compilers/imcc/imcc.l"
+#line 524 "compilers/imcc/imcc.l"
 {
         char   * const macro_name = mem_sys_strdup(yytext + 1);
         int failed = expand_macro(interp, macro_name, yyscanner);
@@ -3635,34 +3662,34 @@
         }
     }
 	YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 532 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, FLOATC);
-	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 533 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, INTC);
+#line 536 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, FLOATC);
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 534 "compilers/imcc/imcc.l"
+#line 537 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 535 "compilers/imcc/imcc.l"
+#line 538 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 536 "compilers/imcc/imcc.l"
+#line 539 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 538 "compilers/imcc/imcc.l"
+#line 540 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, INTC);
+	YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 542 "compilers/imcc/imcc.l"
 {
         valp->s = mem_sys_strdup(yytext);
 
@@ -3673,18 +3700,18 @@
         return STRINGC;
     }
 	YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 548 "compilers/imcc/imcc.l"
+#line 552 "compilers/imcc/imcc.l"
 {
         valp->s = mem_sys_strdup(yytext);
 
         return STRINGC;
     }
 	YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 554 "compilers/imcc/imcc.l"
+#line 558 "compilers/imcc/imcc.l"
 {
         macro_frame_t *frame;
 
@@ -3713,9 +3740,9 @@
         yy_push_state(heredoc1, yyscanner);
     }
 	YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 582 "compilers/imcc/imcc.l"
+#line 586 "compilers/imcc/imcc.l"
 {
         /* charset:"..." */
         valp->s = mem_sys_strdup(yytext);
@@ -3724,9 +3751,9 @@
         return USTRINGC;
     }
 	YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 590 "compilers/imcc/imcc.l"
+#line 594 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3735,9 +3762,9 @@
         return IREG;
     }
 	YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 598 "compilers/imcc/imcc.l"
+#line 602 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3746,9 +3773,9 @@
         return NREG;
     }
 	YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 606 "compilers/imcc/imcc.l"
+#line 610 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3757,9 +3784,9 @@
         return SREG;
     }
 	YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 614 "compilers/imcc/imcc.l"
+#line 618 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3768,17 +3795,17 @@
         return PREG;
     }
 	YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 622 "compilers/imcc/imcc.l"
+#line 626 "compilers/imcc/imcc.l"
 {
         IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
             "'%s' is not a valid register name", yytext);
     }
 	YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 627 "compilers/imcc/imcc.l"
+#line 631 "compilers/imcc/imcc.l"
 {
         if (IMCC_INFO(interp)->state->pasm_file == 0)
             IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3790,52 +3817,26 @@
         return REG;
     }
 	YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 638 "compilers/imcc/imcc.l"
-{
-        if (!IMCC_INFO(interp)->is_def) {
-            SymReg *r = find_sym(interp, yytext);
-
-            if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
-                valp->sr = r;
-                return VAR;
-            }
-
-            if (IMCC_INFO(interp)->cur_unit
-            &&  IMCC_INFO(interp)->cur_unit->instructions
-            && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
-            &&  r->pcc_sub)
-            {
-                if (((r->pcc_sub->pragma & P_METHOD)
-                ||   (IMCC_INFO(interp)->cur_unit->is_vtable_method))
-                &&   !strcmp(yytext, "self")) {
-                    valp->sr = mk_ident(interp, "self", 'P');
-                    IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
-                    return VAR;
-                }
-            }
-        }
-
-        valp->s = mem_sys_strdup(yytext);
-        return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
-    }
+#line 643 "compilers/imcc/imcc.l"
+{ return handle_identifier(interp, valp, yytext); }
 	YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 667 "compilers/imcc/imcc.l"
+#line 645 "compilers/imcc/imcc.l"
 /* skip */;
 	YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 669 "compilers/imcc/imcc.l"
+#line 647 "compilers/imcc/imcc.l"
 {
         /* catch all except for state macro */
         return yytext[0];
     }
 	YY_BREAK
 case YY_STATE_EOF(emit):
-#line 674 "compilers/imcc/imcc.l"
+#line 652 "compilers/imcc/imcc.l"
 {
         BEGIN(INITIAL);
 
@@ -3848,31 +3849,34 @@
     }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 685 "compilers/imcc/imcc.l"
+#line 663 "compilers/imcc/imcc.l"
 yyterminate();
 	YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 687 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, ENDM);
-	YY_BREAK
 case 137:
-/* rule 137 can match eol */
 YY_RULE_SETUP
-#line 689 "compilers/imcc/imcc.l"
+#line 665 "compilers/imcc/imcc.l"
 {
+        /* the initial whitespace catcher misses this one */
         IMCC_INFO(interp)->line++;
+        DUP_AND_RET(valp, ENDM);
+}
+	YY_BREAK
+case 138:
+/* rule 138 can match eol */
+YY_RULE_SETUP
+#line 671 "compilers/imcc/imcc.l"
+{
         DUP_AND_RET(valp, '\n');
     }
 	YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 694 "compilers/imcc/imcc.l"
+#line 675 "compilers/imcc/imcc.l"
 return LABEL;
 	YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 696 "compilers/imcc/imcc.l"
+#line 677 "compilers/imcc/imcc.l"
 {
 
         if (yylex(valp,yyscanner,interp) != LABEL)
@@ -3897,9 +3901,9 @@
         return LABEL;
     }
 	YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 720 "compilers/imcc/imcc.l"
+#line 701 "compilers/imcc/imcc.l"
 {
     if (valp) {
         if (!IMCC_INFO(interp)->cur_macro_name) {
@@ -3928,51 +3932,46 @@
     return IDENTIFIER;
 }
 	YY_BREAK
-case 141:
-YY_RULE_SETUP
-#line 748 "compilers/imcc/imcc.l"
-/* skip leading ws */;
-	YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 749 "compilers/imcc/imcc.l"
+#line 729 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, ' ');
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 750 "compilers/imcc/imcc.l"
+#line 730 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, REG);
 	YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 751 "compilers/imcc/imcc.l"
+#line 731 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, REG);
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 752 "compilers/imcc/imcc.l"
+#line 732 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, IDENTIFIER);
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 753 "compilers/imcc/imcc.l"
+#line 733 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, MACRO);
 	YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 754 "compilers/imcc/imcc.l"
+#line 734 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, yytext[0]);
 	YY_BREAK
 case YY_STATE_EOF(macro):
-#line 755 "compilers/imcc/imcc.l"
+#line 735 "compilers/imcc/imcc.l"
 yyterminate();
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 757 "compilers/imcc/imcc.l"
+#line 737 "compilers/imcc/imcc.l"
 ECHO;
 	YY_BREAK
-#line 3976 "compilers/imcc/imclexer.c"
+#line 3975 "compilers/imcc/imclexer.c"
 case YY_STATE_EOF(pod):
 case YY_STATE_EOF(cmt1):
 case YY_STATE_EOF(cmt2):
@@ -4275,7 +4274,7 @@
 		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 >= 1062 )
+			if ( yy_current_state >= 1090 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4304,11 +4303,11 @@
 	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 >= 1062 )
+		if ( yy_current_state >= 1090 )
 			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 == 1061);
+	yy_is_jam = (yy_current_state == 1089);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5174,7 +5173,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 757 "compilers/imcc/imcc.l"
+#line 737 "compilers/imcc/imcc.l"
 
 
 
@@ -5236,6 +5235,9 @@
     frame->s.next             = (parser_state_t *)IMCC_INFO(interp)->frames;
     IMCC_INFO(interp)->frames = frame;
 
+    /* start at the effective *starting line* of the macro */
+    IMCC_INFO(interp)->line   = frame->s.line - 2;
+
     yy_scan_string(expansion,yyscanner);
 }
 
@@ -5491,9 +5493,6 @@
     IMCC_INFO(interp)->macro_buffer   = NULL;
     IMCC_INFO(interp)->cur_macro_name = NULL;
 
-    /* the ENDM rule doesn't set the line number */
-    IMCC_INFO(interp)->line--;
-
     return MACRO;
 }
 
@@ -5654,8 +5653,6 @@
             }
         }
 
-        /* let the normal EOF rules match line numbers */
-        IMCC_INFO(interp)->line = m->line - 1;
         scan_string(frame, m->expansion, yyscanner);
 
         return 1;
@@ -5705,14 +5702,18 @@
 scan_file(PARROT_INTERP, macro_frame_t *frame, FILE *file, void *yyscanner)
 {
     yyguts_t * const yyg      = (yyguts_t *)yyscanner;
+    const      int   oldline  = IMCC_INFO(interp)->line;
     frame->buffer             = YY_CURRENT_BUFFER;
     frame->s.next             = (parser_state_t *)IMCC_INFO(interp)->frames;
     IMCC_INFO(interp)->frames = frame;
     IMCC_INFO(interp)->state  = (parser_state_t *)IMCC_INFO(interp)->frames;
 
-    IMCC_INFO(interp)->line   = 1;
+    /* let the start of line rule increment this to 1 */
+    IMCC_INFO(interp)->line   = 0;
 
     yy_switch_to_buffer(yy_create_buffer(file,YY_BUF_SIZE,yyscanner),yyscanner);
+
+    IMCC_INFO(interp)->line   = oldline;
 }
 
 void
@@ -5889,6 +5890,36 @@
     return yyg->yy_hold_char == '\0';
 }
 
+static int
+handle_identifier(PARROT_INTERP, YYSTYPE *valp, const char *text)
+{
+    if (!IMCC_INFO(interp)->is_def) {
+        SymReg *r = find_sym(interp, text);
+
+        if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
+            valp->sr = r;
+            return VAR;
+        }
+
+        if (IMCC_INFO(interp)->cur_unit
+        &&  IMCC_INFO(interp)->cur_unit->instructions
+        && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
+        &&  r->pcc_sub)
+        {
+            if (((r->pcc_sub->pragma & P_METHOD)
+            ||   (IMCC_INFO(interp)->cur_unit->is_vtable_method))
+            &&   !strcmp(text, "self")) {
+                valp->sr = mk_ident(interp, "self", 'P');
+                IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
+                return VAR;
+            }
+        }
+    }
+
+    valp->s = mem_sys_strdup(text);
+    return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
+}
+
 /*
  * Local variables:
  *   c-file-style: "parrot"

Modified: branches/compact_pool_revamp/compilers/imcc/imcparser.c
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/imcparser.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/imcparser.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1184,245 +1184,247 @@
    enum yytokentype {
      LOW_PREC = 258,
      PARAM = 259,
-     HLL = 260,
-     TK_LINE = 261,
-     TK_FILE = 262,
-     GOTO = 263,
-     ARG = 264,
-     IF = 265,
-     UNLESS = 266,
-     PNULL = 267,
-     SET_RETURN = 268,
-     SET_YIELD = 269,
-     ADV_FLAT = 270,
-     ADV_SLURPY = 271,
-     ADV_OPTIONAL = 272,
-     ADV_OPT_FLAG = 273,
-     ADV_NAMED = 274,
-     ADV_ARROW = 275,
-     NEW = 276,
-     ADV_INVOCANT = 277,
-     ADV_CALL_SIG = 278,
-     NAMESPACE = 279,
-     DOT_METHOD = 280,
-     SUB = 281,
-     SYM = 282,
-     LOCAL = 283,
-     LEXICAL = 284,
-     CONST = 285,
-     ANNOTATE = 286,
-     INC = 287,
-     DEC = 288,
-     GLOBAL_CONST = 289,
-     PLUS_ASSIGN = 290,
-     MINUS_ASSIGN = 291,
-     MUL_ASSIGN = 292,
-     DIV_ASSIGN = 293,
-     CONCAT_ASSIGN = 294,
-     BAND_ASSIGN = 295,
-     BOR_ASSIGN = 296,
-     BXOR_ASSIGN = 297,
-     FDIV = 298,
-     FDIV_ASSIGN = 299,
-     MOD_ASSIGN = 300,
-     SHR_ASSIGN = 301,
-     SHL_ASSIGN = 302,
-     SHR_U_ASSIGN = 303,
-     SHIFT_LEFT = 304,
-     SHIFT_RIGHT = 305,
-     INTV = 306,
-     FLOATV = 307,
-     STRINGV = 308,
-     PMCV = 309,
-     LOG_XOR = 310,
-     RELOP_EQ = 311,
-     RELOP_NE = 312,
-     RELOP_GT = 313,
-     RELOP_GTE = 314,
-     RELOP_LT = 315,
-     RELOP_LTE = 316,
-     RESULT = 317,
-     RETURN = 318,
-     TAILCALL = 319,
-     YIELDT = 320,
-     GET_RESULTS = 321,
-     POW = 322,
-     SHIFT_RIGHT_U = 323,
-     LOG_AND = 324,
-     LOG_OR = 325,
-     COMMA = 326,
-     ESUB = 327,
-     DOTDOT = 328,
-     PCC_BEGIN = 329,
-     PCC_END = 330,
-     PCC_CALL = 331,
-     PCC_SUB = 332,
-     PCC_BEGIN_RETURN = 333,
-     PCC_END_RETURN = 334,
-     PCC_BEGIN_YIELD = 335,
-     PCC_END_YIELD = 336,
-     NCI_CALL = 337,
-     METH_CALL = 338,
-     INVOCANT = 339,
-     MAIN = 340,
-     LOAD = 341,
-     INIT = 342,
-     IMMEDIATE = 343,
-     POSTCOMP = 344,
-     METHOD = 345,
-     ANON = 346,
-     OUTER = 347,
-     NEED_LEX = 348,
-     MULTI = 349,
-     VTABLE_METHOD = 350,
-     LOADLIB = 351,
-     SUB_INSTANCE_OF = 352,
-     SUBID = 353,
-     NS_ENTRY = 354,
-     UNIQUE_REG = 355,
-     LABEL = 356,
-     EMIT = 357,
-     EOM = 358,
-     IREG = 359,
-     NREG = 360,
-     SREG = 361,
-     PREG = 362,
-     IDENTIFIER = 363,
-     REG = 364,
-     MACRO = 365,
-     ENDM = 366,
-     STRINGC = 367,
-     INTC = 368,
-     FLOATC = 369,
-     USTRINGC = 370,
-     PARROT_OP = 371,
-     VAR = 372,
-     LINECOMMENT = 373,
-     FILECOMMENT = 374,
-     DOT = 375,
-     CONCAT = 376
+     SOL = 260,
+     HLL = 261,
+     TK_LINE = 262,
+     TK_FILE = 263,
+     GOTO = 264,
+     ARG = 265,
+     IF = 266,
+     UNLESS = 267,
+     PNULL = 268,
+     SET_RETURN = 269,
+     SET_YIELD = 270,
+     ADV_FLAT = 271,
+     ADV_SLURPY = 272,
+     ADV_OPTIONAL = 273,
+     ADV_OPT_FLAG = 274,
+     ADV_NAMED = 275,
+     ADV_ARROW = 276,
+     NEW = 277,
+     ADV_INVOCANT = 278,
+     ADV_CALL_SIG = 279,
+     NAMESPACE = 280,
+     DOT_METHOD = 281,
+     SUB = 282,
+     SYM = 283,
+     LOCAL = 284,
+     LEXICAL = 285,
+     CONST = 286,
+     ANNOTATE = 287,
+     INC = 288,
+     DEC = 289,
+     GLOBAL_CONST = 290,
+     PLUS_ASSIGN = 291,
+     MINUS_ASSIGN = 292,
+     MUL_ASSIGN = 293,
+     DIV_ASSIGN = 294,
+     CONCAT_ASSIGN = 295,
+     BAND_ASSIGN = 296,
+     BOR_ASSIGN = 297,
+     BXOR_ASSIGN = 298,
+     FDIV = 299,
+     FDIV_ASSIGN = 300,
+     MOD_ASSIGN = 301,
+     SHR_ASSIGN = 302,
+     SHL_ASSIGN = 303,
+     SHR_U_ASSIGN = 304,
+     SHIFT_LEFT = 305,
+     SHIFT_RIGHT = 306,
+     INTV = 307,
+     FLOATV = 308,
+     STRINGV = 309,
+     PMCV = 310,
+     LOG_XOR = 311,
+     RELOP_EQ = 312,
+     RELOP_NE = 313,
+     RELOP_GT = 314,
+     RELOP_GTE = 315,
+     RELOP_LT = 316,
+     RELOP_LTE = 317,
+     RESULT = 318,
+     RETURN = 319,
+     TAILCALL = 320,
+     YIELDT = 321,
+     GET_RESULTS = 322,
+     POW = 323,
+     SHIFT_RIGHT_U = 324,
+     LOG_AND = 325,
+     LOG_OR = 326,
+     COMMA = 327,
+     ESUB = 328,
+     DOTDOT = 329,
+     PCC_BEGIN = 330,
+     PCC_END = 331,
+     PCC_CALL = 332,
+     PCC_SUB = 333,
+     PCC_BEGIN_RETURN = 334,
+     PCC_END_RETURN = 335,
+     PCC_BEGIN_YIELD = 336,
+     PCC_END_YIELD = 337,
+     NCI_CALL = 338,
+     METH_CALL = 339,
+     INVOCANT = 340,
+     MAIN = 341,
+     LOAD = 342,
+     INIT = 343,
+     IMMEDIATE = 344,
+     POSTCOMP = 345,
+     METHOD = 346,
+     ANON = 347,
+     OUTER = 348,
+     NEED_LEX = 349,
+     MULTI = 350,
+     VTABLE_METHOD = 351,
+     LOADLIB = 352,
+     SUB_INSTANCE_OF = 353,
+     SUBID = 354,
+     NS_ENTRY = 355,
+     UNIQUE_REG = 356,
+     LABEL = 357,
+     EMIT = 358,
+     EOM = 359,
+     IREG = 360,
+     NREG = 361,
+     SREG = 362,
+     PREG = 363,
+     IDENTIFIER = 364,
+     REG = 365,
+     MACRO = 366,
+     ENDM = 367,
+     STRINGC = 368,
+     INTC = 369,
+     FLOATC = 370,
+     USTRINGC = 371,
+     PARROT_OP = 372,
+     VAR = 373,
+     LINECOMMENT = 374,
+     FILECOMMENT = 375,
+     DOT = 376,
+     CONCAT = 377
    };
 #endif
 /* Tokens.  */
 #define LOW_PREC 258
 #define PARAM 259
-#define HLL 260
-#define TK_LINE 261
-#define TK_FILE 262
-#define GOTO 263
-#define ARG 264
-#define IF 265
-#define UNLESS 266
-#define PNULL 267
-#define SET_RETURN 268
-#define SET_YIELD 269
-#define ADV_FLAT 270
-#define ADV_SLURPY 271
-#define ADV_OPTIONAL 272
-#define ADV_OPT_FLAG 273
-#define ADV_NAMED 274
-#define ADV_ARROW 275
-#define NEW 276
-#define ADV_INVOCANT 277
-#define ADV_CALL_SIG 278
-#define NAMESPACE 279
-#define DOT_METHOD 280
-#define SUB 281
-#define SYM 282
-#define LOCAL 283
-#define LEXICAL 284
-#define CONST 285
-#define ANNOTATE 286
-#define INC 287
-#define DEC 288
-#define GLOBAL_CONST 289
-#define PLUS_ASSIGN 290
-#define MINUS_ASSIGN 291
-#define MUL_ASSIGN 292
-#define DIV_ASSIGN 293
-#define CONCAT_ASSIGN 294
-#define BAND_ASSIGN 295
-#define BOR_ASSIGN 296
-#define BXOR_ASSIGN 297
-#define FDIV 298
-#define FDIV_ASSIGN 299
-#define MOD_ASSIGN 300
-#define SHR_ASSIGN 301
-#define SHL_ASSIGN 302
-#define SHR_U_ASSIGN 303
-#define SHIFT_LEFT 304
-#define SHIFT_RIGHT 305
-#define INTV 306
-#define FLOATV 307
-#define STRINGV 308
-#define PMCV 309
-#define LOG_XOR 310
-#define RELOP_EQ 311
-#define RELOP_NE 312
-#define RELOP_GT 313
-#define RELOP_GTE 314
-#define RELOP_LT 315
-#define RELOP_LTE 316
-#define RESULT 317
-#define RETURN 318
-#define TAILCALL 319
-#define YIELDT 320
-#define GET_RESULTS 321
-#define POW 322
-#define SHIFT_RIGHT_U 323
-#define LOG_AND 324
-#define LOG_OR 325
-#define COMMA 326
-#define ESUB 327
-#define DOTDOT 328
-#define PCC_BEGIN 329
-#define PCC_END 330
-#define PCC_CALL 331
-#define PCC_SUB 332
-#define PCC_BEGIN_RETURN 333
-#define PCC_END_RETURN 334
-#define PCC_BEGIN_YIELD 335
-#define PCC_END_YIELD 336
-#define NCI_CALL 337
-#define METH_CALL 338
-#define INVOCANT 339
-#define MAIN 340
-#define LOAD 341
-#define INIT 342
-#define IMMEDIATE 343
-#define POSTCOMP 344
-#define METHOD 345
-#define ANON 346
-#define OUTER 347
-#define NEED_LEX 348
-#define MULTI 349
-#define VTABLE_METHOD 350
-#define LOADLIB 351
-#define SUB_INSTANCE_OF 352
-#define SUBID 353
-#define NS_ENTRY 354
-#define UNIQUE_REG 355
-#define LABEL 356
-#define EMIT 357
-#define EOM 358
-#define IREG 359
-#define NREG 360
-#define SREG 361
-#define PREG 362
-#define IDENTIFIER 363
-#define REG 364
-#define MACRO 365
-#define ENDM 366
-#define STRINGC 367
-#define INTC 368
-#define FLOATC 369
-#define USTRINGC 370
-#define PARROT_OP 371
-#define VAR 372
-#define LINECOMMENT 373
-#define FILECOMMENT 374
-#define DOT 375
-#define CONCAT 376
+#define SOL 260
+#define HLL 261
+#define TK_LINE 262
+#define TK_FILE 263
+#define GOTO 264
+#define ARG 265
+#define IF 266
+#define UNLESS 267
+#define PNULL 268
+#define SET_RETURN 269
+#define SET_YIELD 270
+#define ADV_FLAT 271
+#define ADV_SLURPY 272
+#define ADV_OPTIONAL 273
+#define ADV_OPT_FLAG 274
+#define ADV_NAMED 275
+#define ADV_ARROW 276
+#define NEW 277
+#define ADV_INVOCANT 278
+#define ADV_CALL_SIG 279
+#define NAMESPACE 280
+#define DOT_METHOD 281
+#define SUB 282
+#define SYM 283
+#define LOCAL 284
+#define LEXICAL 285
+#define CONST 286
+#define ANNOTATE 287
+#define INC 288
+#define DEC 289
+#define GLOBAL_CONST 290
+#define PLUS_ASSIGN 291
+#define MINUS_ASSIGN 292
+#define MUL_ASSIGN 293
+#define DIV_ASSIGN 294
+#define CONCAT_ASSIGN 295
+#define BAND_ASSIGN 296
+#define BOR_ASSIGN 297
+#define BXOR_ASSIGN 298
+#define FDIV 299
+#define FDIV_ASSIGN 300
+#define MOD_ASSIGN 301
+#define SHR_ASSIGN 302
+#define SHL_ASSIGN 303
+#define SHR_U_ASSIGN 304
+#define SHIFT_LEFT 305
+#define SHIFT_RIGHT 306
+#define INTV 307
+#define FLOATV 308
+#define STRINGV 309
+#define PMCV 310
+#define LOG_XOR 311
+#define RELOP_EQ 312
+#define RELOP_NE 313
+#define RELOP_GT 314
+#define RELOP_GTE 315
+#define RELOP_LT 316
+#define RELOP_LTE 317
+#define RESULT 318
+#define RETURN 319
+#define TAILCALL 320
+#define YIELDT 321
+#define GET_RESULTS 322
+#define POW 323
+#define SHIFT_RIGHT_U 324
+#define LOG_AND 325
+#define LOG_OR 326
+#define COMMA 327
+#define ESUB 328
+#define DOTDOT 329
+#define PCC_BEGIN 330
+#define PCC_END 331
+#define PCC_CALL 332
+#define PCC_SUB 333
+#define PCC_BEGIN_RETURN 334
+#define PCC_END_RETURN 335
+#define PCC_BEGIN_YIELD 336
+#define PCC_END_YIELD 337
+#define NCI_CALL 338
+#define METH_CALL 339
+#define INVOCANT 340
+#define MAIN 341
+#define LOAD 342
+#define INIT 343
+#define IMMEDIATE 344
+#define POSTCOMP 345
+#define METHOD 346
+#define ANON 347
+#define OUTER 348
+#define NEED_LEX 349
+#define MULTI 350
+#define VTABLE_METHOD 351
+#define LOADLIB 352
+#define SUB_INSTANCE_OF 353
+#define SUBID 354
+#define NS_ENTRY 355
+#define UNIQUE_REG 356
+#define LABEL 357
+#define EMIT 358
+#define EOM 359
+#define IREG 360
+#define NREG 361
+#define SREG 362
+#define PREG 363
+#define IDENTIFIER 364
+#define REG 365
+#define MACRO 366
+#define ENDM 367
+#define STRINGC 368
+#define INTC 369
+#define FLOATC 370
+#define USTRINGC 371
+#define PARROT_OP 372
+#define VAR 373
+#define LINECOMMENT 374
+#define FILECOMMENT 375
+#define DOT 376
+#define CONCAT 377
 
 
 
@@ -1443,7 +1445,7 @@
 
 
 /* Line 214 of yacc.c  */
-#line 1436 "compilers/imcc/imcparser.c"
+#line 1438 "compilers/imcc/imcparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -1455,7 +1457,7 @@
 
 
 /* Line 264 of yacc.c  */
-#line 1448 "compilers/imcc/imcparser.c"
+#line 1450 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1670,10 +1672,10 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  31
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   659
+#define YYLAST   686
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  139
+#define YYNTOKENS  140
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  126
 /* YYNRULES -- Number of rules.  */
@@ -1683,7 +1685,7 @@
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   376
+#define YYMAXUTOK   377
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1694,16 +1696,16 @@
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        4,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   129,     2,     2,     2,   135,   136,     2,
-     126,   127,   133,   132,     2,   131,     2,   134,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   138,
-       2,   123,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   130,     2,     2,     2,   136,   137,     2,
+     127,   128,   134,   133,     2,   132,     2,   135,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   139,
+       2,   124,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   124,     2,   125,     2,     2,     2,     2,     2,     2,
+       2,   125,     2,   126,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     128,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,   137,     2,   130,     2,     2,     2,
+     129,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,   138,     2,   131,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1728,7 +1730,7 @@
       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
      106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122
+     116,   117,   118,   119,   120,   121,   122,   123
 };
 
 #if YYDEBUG
@@ -1775,102 +1777,102 @@
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     140,     0,    -1,   141,    -1,   142,    -1,   141,   142,    -1,
-     162,    -1,   147,    -1,   164,    -1,   159,    -1,   111,     4,
-      -1,   143,    -1,   144,    -1,     4,    -1,   146,     4,    -1,
-      97,   113,     4,    -1,     7,   114,    72,   113,     4,    -1,
-       8,   113,     4,    -1,    32,   113,    72,   264,    -1,     6,
-     113,    -1,    -1,    31,   148,   223,   109,   123,   264,    -1,
-      -1,    31,   150,   114,   255,   123,   152,    -1,    -1,    31,
-     151,   113,   255,   123,   152,    -1,   113,    -1,   116,    -1,
-     154,    -1,   153,   154,    -1,   212,   155,     4,    -1,   111,
-       4,    -1,   120,    -1,   119,    -1,   162,    -1,   149,    -1,
-     143,    -1,    -1,   156,   117,   158,    -1,    -1,    78,   157,
-     186,   102,    -1,    13,   256,    -1,    30,   113,    72,   110,
-      -1,    -1,   249,    -1,    -1,   103,   160,   161,   104,    -1,
-      -1,   153,    -1,    25,   163,     4,    -1,   124,   257,   125,
-      -1,   124,   125,    -1,    -1,    -1,    -1,    27,   165,   252,
-     166,   186,     4,   167,   168,   181,    73,    -1,    -1,     4,
-      -1,   168,   169,     4,    -1,    -1,     5,   170,   171,    -1,
-     223,   109,   195,    -1,    95,   126,   179,   127,    -1,    93,
-     126,   113,   127,    -1,    93,   126,   109,   127,    -1,    96,
-      -1,    96,   126,   113,   127,    -1,    91,    -1,    91,   126,
-     152,   127,    -1,   100,    -1,   100,   126,   152,   127,    -1,
-      98,   126,   113,   127,    -1,    99,    -1,    99,   126,   152,
-     127,    -1,    -1,   179,    72,   180,    -1,   180,    -1,    52,
-      -1,    53,    -1,    55,    -1,    54,    -1,   109,    -1,   113,
-      -1,   124,   257,   125,    -1,    -1,   209,    -1,    -1,    75,
-       4,   183,   190,   185,   189,   184,   192,    76,    -1,    -1,
-     214,     4,    -1,    -1,    85,   256,     4,    -1,    -1,   187,
-      -1,   188,    -1,   187,   188,    -1,    87,    -1,    88,    -1,
-      86,    -1,    89,    -1,    90,    -1,    92,    -1,    94,    -1,
-     172,    -1,   173,    -1,   174,    -1,   175,    -1,   176,    -1,
-     177,    -1,   178,    -1,    77,   256,    72,   256,     4,    -1,
-      77,   256,     4,    -1,    83,   256,     4,    -1,    84,   248,
-       4,    -1,    84,   113,     4,    -1,    84,   248,    72,   256,
-       4,    -1,    84,   113,    72,   256,     4,    -1,    -1,   190,
-     191,     4,    -1,    10,   238,    -1,    -1,   192,   193,     4,
-      -1,    63,   248,   195,    -1,    -1,    29,   194,   223,   217,
-      -1,    -1,   195,   196,    -1,    17,    -1,    18,    -1,    19,
-      -1,    20,    -1,    20,   126,   113,   127,    -1,    20,   126,
-     116,   127,    -1,   101,    -1,    24,    -1,    -1,    79,     4,
-     198,   201,    80,    -1,   205,    -1,    -1,    81,     4,   200,
-     202,    82,    -1,    -1,   201,     4,    -1,   201,   203,     4,
-      -1,    -1,   202,     4,    -1,   202,   204,     4,    -1,    14,
-     256,   239,    -1,    15,   256,   239,    -1,    -1,   207,   126,
-     206,   208,   127,    -1,    64,    -1,    66,    -1,    -1,   238,
-      -1,   113,    21,   256,    -1,   208,    72,   238,    -1,   208,
-      72,   113,    21,   256,    -1,   211,    -1,   209,   211,    -1,
-      -1,   210,   215,    -1,   111,     4,    -1,   120,    -1,   119,
-      -1,   144,    -1,   145,    -1,    -1,   213,    -1,   213,   214,
-      -1,   214,    -1,   102,    -1,   212,   219,     4,    -1,     1,
-       4,    -1,   217,    -1,   216,    72,   217,    -1,   109,   218,
-      -1,    -1,   101,    -1,   225,    -1,   243,    -1,    -1,    29,
-     220,   223,   216,    -1,    30,   113,    72,   248,    -1,    30,
-     116,    72,   248,    -1,    -1,    31,   221,   223,   109,   123,
-     264,    -1,   149,    -1,    -1,    35,   222,   223,   109,   123,
-     264,    -1,    65,   235,    -1,     9,   254,    -1,   117,   249,
-      -1,    13,   256,    -1,   235,    -1,   182,    -1,   197,    -1,
-     199,    -1,    -1,    52,    -1,    53,    -1,    54,    -1,    55,
-      -1,   109,    -1,   248,   123,   256,    -1,   248,   123,   227,
-     256,    -1,   248,   123,   256,   228,   256,    -1,   248,   123,
-     256,   124,   257,   125,    -1,   248,   124,   257,   125,   123,
-     256,    -1,   248,   123,   128,   224,   124,   257,   125,    -1,
-     248,   123,   235,    -1,    -1,   126,   226,   242,   127,   123,
-     234,   126,   237,   127,    -1,   229,    -1,   231,    -1,   233,
-      -1,   248,   123,    13,    -1,   129,    -1,   130,    -1,   131,
-      -1,   131,    -1,   132,    -1,   133,    -1,   134,    -1,   135,
-      -1,    44,    -1,    68,    -1,   122,    -1,    57,    -1,    58,
-      -1,    59,    -1,    60,    -1,    61,    -1,    62,    -1,    50,
-      -1,    51,    -1,    69,    -1,    70,    -1,    71,    -1,    56,
-      -1,   136,    -1,   137,    -1,   130,    -1,    -1,    67,   230,
-     126,   242,   127,    -1,   248,   232,   256,    -1,    36,    -1,
-      37,    -1,    38,    -1,    39,    -1,    46,    -1,    45,    -1,
-      40,    -1,    41,    -1,    42,    -1,    43,    -1,    47,    -1,
-      48,    -1,    49,    -1,   248,   123,   117,   158,    -1,   109,
-      -1,   113,    -1,   116,    -1,   248,    -1,   248,   121,   253,
-      -1,   248,   121,   116,    -1,   248,   121,   113,    -1,   248,
-     121,   248,    -1,    -1,   234,   236,   126,   237,   127,    -1,
-      -1,   237,    72,   238,    -1,   238,    -1,   237,    72,   113,
-      21,   256,    -1,   256,    21,   256,    -1,   113,    21,   256,
-      -1,   256,   239,    -1,    -1,   239,   240,    -1,    16,    -1,
-      20,    -1,    24,    -1,    20,   126,   116,   127,    -1,    20,
-     126,   113,   127,    -1,   248,   195,    -1,   242,    72,   241,
-      -1,   242,    72,   113,    21,   248,    -1,   241,    -1,   113,
-      21,   248,    -1,    -1,   245,    -1,   244,    -1,    12,   256,
-     247,   256,     9,   254,    -1,    12,    13,   256,     9,   254,
-      -1,    12,   256,   246,   254,    -1,    11,   256,   246,   254,
-      -1,    11,   256,   247,   256,     9,   254,    -1,    11,    13,
-     256,     9,   254,    -1,    72,    -1,     9,    -1,    57,    -1,
-      58,    -1,    59,    -1,    60,    -1,    61,    -1,    62,    -1,
-     118,    -1,   263,    -1,    -1,   250,    -1,   250,    72,   251,
-      -1,   251,    -1,   255,    -1,   248,   124,   257,   125,    -1,
-     124,   259,   125,    -1,   253,    -1,   113,    -1,   116,    -1,
-     109,    -1,   117,    -1,   109,    -1,   117,    -1,   254,    -1,
-     256,    -1,   248,    -1,   264,    -1,    -1,   258,   261,    -1,
-      -1,   260,   261,    -1,   262,    -1,   261,   138,   262,    -1,
-     256,    -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,
-     110,    -1,   114,    -1,   115,    -1,   113,    -1,   116,    -1
+     141,     0,    -1,   142,    -1,   143,    -1,   142,   143,    -1,
+     163,    -1,   148,    -1,   165,    -1,   160,    -1,   112,     4,
+      -1,   144,    -1,   145,    -1,     4,    -1,   147,     4,    -1,
+      98,   114,     4,    -1,     8,   115,    73,   114,     4,    -1,
+       9,   114,     4,    -1,    33,   114,    73,   265,    -1,     7,
+     114,    -1,    -1,    32,   149,   224,   110,   124,   265,    -1,
+      -1,    32,   151,   115,   256,   124,   153,    -1,    -1,    32,
+     152,   114,   256,   124,   153,    -1,   114,    -1,   117,    -1,
+     155,    -1,   154,   155,    -1,   213,   156,     4,    -1,   112,
+       4,    -1,   121,    -1,   120,    -1,   163,    -1,   150,    -1,
+     144,    -1,    -1,   157,   118,   159,    -1,    -1,    79,   158,
+     187,   103,    -1,    14,   257,    -1,    31,   114,    73,   111,
+      -1,    -1,   250,    -1,    -1,   104,   161,   162,   105,    -1,
+      -1,   154,    -1,    26,   164,     4,    -1,   125,   258,   126,
+      -1,   125,   126,    -1,    -1,    -1,    -1,    28,   166,   253,
+     167,   187,     4,   168,   169,   182,    74,    -1,    -1,     4,
+      -1,   169,   170,     4,    -1,    -1,     5,   171,   172,    -1,
+     224,   110,   196,    -1,    96,   127,   180,   128,    -1,    94,
+     127,   114,   128,    -1,    94,   127,   110,   128,    -1,    97,
+      -1,    97,   127,   114,   128,    -1,    92,    -1,    92,   127,
+     153,   128,    -1,   101,    -1,   101,   127,   153,   128,    -1,
+      99,   127,   114,   128,    -1,   100,    -1,   100,   127,   153,
+     128,    -1,    -1,   180,    73,   181,    -1,   181,    -1,    53,
+      -1,    54,    -1,    56,    -1,    55,    -1,   110,    -1,   114,
+      -1,   125,   258,   126,    -1,    -1,   210,    -1,    -1,    76,
+       4,   184,   191,   186,   190,   185,   193,    77,    -1,    -1,
+     215,     4,    -1,    -1,    86,   257,     4,    -1,    -1,   188,
+      -1,   189,    -1,   188,   189,    -1,    88,    -1,    89,    -1,
+      87,    -1,    90,    -1,    91,    -1,    93,    -1,    95,    -1,
+     173,    -1,   174,    -1,   175,    -1,   176,    -1,   177,    -1,
+     178,    -1,   179,    -1,    78,   257,    73,   257,     4,    -1,
+      78,   257,     4,    -1,    84,   257,     4,    -1,    85,   249,
+       4,    -1,    85,   114,     4,    -1,    85,   249,    73,   257,
+       4,    -1,    85,   114,    73,   257,     4,    -1,    -1,   191,
+     192,     4,    -1,    11,   239,    -1,    -1,   193,   194,     4,
+      -1,    64,   249,   196,    -1,    -1,    30,   195,   224,   218,
+      -1,    -1,   196,   197,    -1,    18,    -1,    19,    -1,    20,
+      -1,    21,    -1,    21,   127,   114,   128,    -1,    21,   127,
+     117,   128,    -1,   102,    -1,    25,    -1,    -1,    80,     4,
+     199,   202,    81,    -1,   206,    -1,    -1,    82,     4,   201,
+     203,    83,    -1,    -1,   202,     4,    -1,   202,   204,     4,
+      -1,    -1,   203,     4,    -1,   203,   205,     4,    -1,    15,
+     257,   240,    -1,    16,   257,   240,    -1,    -1,   208,   127,
+     207,   209,   128,    -1,    65,    -1,    67,    -1,    -1,   239,
+      -1,   114,    22,   257,    -1,   209,    73,   239,    -1,   209,
+      73,   114,    22,   257,    -1,   212,    -1,   210,   212,    -1,
+      -1,   211,   216,    -1,   112,     4,    -1,   121,    -1,   120,
+      -1,   145,    -1,   146,    -1,    -1,   214,    -1,   214,   215,
+      -1,   215,    -1,   103,    -1,   213,   220,     4,    -1,     1,
+       4,    -1,   218,    -1,   217,    73,   218,    -1,   110,   219,
+      -1,    -1,   102,    -1,   226,    -1,   244,    -1,    -1,    30,
+     221,   224,   217,    -1,    31,   114,    73,   249,    -1,    31,
+     117,    73,   249,    -1,    -1,    32,   222,   224,   110,   124,
+     265,    -1,   150,    -1,    -1,    36,   223,   224,   110,   124,
+     265,    -1,    66,   236,    -1,    10,   255,    -1,   118,   250,
+      -1,    14,   257,    -1,   236,    -1,   183,    -1,   198,    -1,
+     200,    -1,    -1,    53,    -1,    54,    -1,    55,    -1,    56,
+      -1,   110,    -1,   249,   124,   257,    -1,   249,   124,   228,
+     257,    -1,   249,   124,   257,   229,   257,    -1,   249,   124,
+     257,   125,   258,   126,    -1,   249,   125,   258,   126,   124,
+     257,    -1,   249,   124,   129,   225,   125,   258,   126,    -1,
+     249,   124,   236,    -1,    -1,   127,   227,   243,   128,   124,
+     235,   127,   238,   128,    -1,   230,    -1,   232,    -1,   234,
+      -1,   249,   124,    14,    -1,   130,    -1,   131,    -1,   132,
+      -1,   132,    -1,   133,    -1,   134,    -1,   135,    -1,   136,
+      -1,    45,    -1,    69,    -1,   123,    -1,    58,    -1,    59,
+      -1,    60,    -1,    61,    -1,    62,    -1,    63,    -1,    51,
+      -1,    52,    -1,    70,    -1,    71,    -1,    72,    -1,    57,
+      -1,   137,    -1,   138,    -1,   131,    -1,    -1,    68,   231,
+     127,   243,   128,    -1,   249,   233,   257,    -1,    37,    -1,
+      38,    -1,    39,    -1,    40,    -1,    47,    -1,    46,    -1,
+      41,    -1,    42,    -1,    43,    -1,    44,    -1,    48,    -1,
+      49,    -1,    50,    -1,   249,   124,   118,   159,    -1,   110,
+      -1,   114,    -1,   117,    -1,   249,    -1,   249,   122,   254,
+      -1,   249,   122,   117,    -1,   249,   122,   114,    -1,   249,
+     122,   249,    -1,    -1,   235,   237,   127,   238,   128,    -1,
+      -1,   238,    73,   239,    -1,   239,    -1,   238,    73,   114,
+      22,   257,    -1,   257,    22,   257,    -1,   114,    22,   257,
+      -1,   257,   240,    -1,    -1,   240,   241,    -1,    17,    -1,
+      21,    -1,    25,    -1,    21,   127,   117,   128,    -1,    21,
+     127,   114,   128,    -1,   249,   196,    -1,   243,    73,   242,
+      -1,   243,    73,   114,    22,   249,    -1,   242,    -1,   114,
+      22,   249,    -1,    -1,   246,    -1,   245,    -1,    13,   257,
+     248,   257,    10,   255,    -1,    13,    14,   257,    10,   255,
+      -1,    13,   257,   247,   255,    -1,    12,   257,   247,   255,
+      -1,    12,   257,   248,   257,    10,   255,    -1,    12,    14,
+     257,    10,   255,    -1,    73,    -1,    10,    -1,    58,    -1,
+      59,    -1,    60,    -1,    61,    -1,    62,    -1,    63,    -1,
+     119,    -1,   264,    -1,    -1,   251,    -1,   251,    73,   252,
+      -1,   252,    -1,   256,    -1,   249,   125,   258,   126,    -1,
+     125,   260,   126,    -1,   254,    -1,   114,    -1,   117,    -1,
+     110,    -1,   118,    -1,   110,    -1,   118,    -1,   255,    -1,
+     257,    -1,   249,    -1,   265,    -1,    -1,   259,   262,    -1,
+      -1,   261,   262,    -1,   263,    -1,   262,   139,   263,    -1,
+     257,    -1,   106,    -1,   107,    -1,   108,    -1,   109,    -1,
+     111,    -1,   115,    -1,   116,    -1,   114,    -1,   117,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1918,8 +1920,8 @@
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "LOW_PREC", "'\\n'", "PARAM", "HLL",
-  "TK_LINE", "TK_FILE", "GOTO", "ARG", "IF", "UNLESS", "PNULL",
+  "$end", "error", "$undefined", "LOW_PREC", "'\\n'", "PARAM", "SOL",
+  "HLL", "TK_LINE", "TK_FILE", "GOTO", "ARG", "IF", "UNLESS", "PNULL",
   "SET_RETURN", "SET_YIELD", "ADV_FLAT", "ADV_SLURPY", "ADV_OPTIONAL",
   "ADV_OPT_FLAG", "ADV_NAMED", "ADV_ARROW", "NEW", "ADV_INVOCANT",
   "ADV_CALL_SIG", "NAMESPACE", "DOT_METHOD", "SUB", "SYM", "LOCAL",
@@ -1984,48 +1986,48 @@
      344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
      354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
      364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   375,   376,    61,    91,    93,    40,    41,   110,    33,
-     126,    45,    43,    42,    47,    37,    38,   124,    59
+     374,   375,   376,   377,    61,    91,    93,    40,    41,   110,
+      33,   126,    45,    43,    42,    47,    37,    38,   124,    59
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   139,   140,   141,   141,   142,   142,   142,   142,   142,
-     142,   142,   142,   143,   143,   144,   144,   145,   146,   148,
-     147,   150,   149,   151,   149,   152,   152,   153,   153,   154,
-     154,   154,   154,   154,   154,   154,   156,   155,   157,   155,
-     155,   155,   155,   158,   160,   159,   161,   161,   162,   163,
-     163,   165,   166,   167,   164,   168,   168,   168,   170,   169,
-     171,   172,   173,   173,   174,   174,   175,   175,   176,   176,
-     177,   178,   178,   179,   179,   179,   180,   180,   180,   180,
-     180,   180,   180,   181,   181,   183,   182,   184,   184,   185,
-     185,   186,   186,   187,   187,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   189,
-     189,   189,   189,   189,   189,   189,   190,   190,   191,   192,
-     192,   193,   194,   193,   195,   195,   196,   196,   196,   196,
-     196,   196,   196,   196,   198,   197,   197,   200,   199,   201,
-     201,   201,   202,   202,   202,   203,   204,   206,   205,   207,
-     207,   208,   208,   208,   208,   208,   209,   209,   210,   211,
-     211,   211,   211,   211,   211,   212,   212,   213,   213,   214,
-     215,   215,   216,   216,   217,   218,   218,   219,   219,   220,
-     219,   219,   219,   221,   219,   219,   222,   219,   219,   219,
-     219,   219,   219,   219,   219,   219,   219,   223,   223,   223,
-     223,   224,   225,   225,   225,   225,   225,   225,   225,   226,
-     225,   225,   225,   225,   225,   227,   227,   227,   228,   228,
-     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
-     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
-     228,   230,   229,   231,   232,   232,   232,   232,   232,   232,
-     232,   232,   232,   232,   232,   232,   232,   233,   234,   234,
-     234,   234,   234,   234,   234,   234,   236,   235,   237,   237,
-     237,   237,   237,   237,   238,   239,   239,   240,   240,   240,
-     240,   240,   241,   242,   242,   242,   242,   242,   243,   243,
-     244,   244,   244,   245,   245,   245,   246,   246,   247,   247,
-     247,   247,   247,   247,   248,   248,   249,   249,   250,   250,
-     251,   251,   251,   252,   252,   252,   253,   253,   254,   254,
-     255,   255,   256,   256,   258,   257,   260,   259,   261,   261,
-     262,   263,   263,   263,   263,   263,   264,   264,   264,   264
+       0,   140,   141,   142,   142,   143,   143,   143,   143,   143,
+     143,   143,   143,   144,   144,   145,   145,   146,   147,   149,
+     148,   151,   150,   152,   150,   153,   153,   154,   154,   155,
+     155,   155,   155,   155,   155,   155,   157,   156,   158,   156,
+     156,   156,   156,   159,   161,   160,   162,   162,   163,   164,
+     164,   166,   167,   168,   165,   169,   169,   169,   171,   170,
+     172,   173,   174,   174,   175,   175,   176,   176,   177,   177,
+     178,   179,   179,   180,   180,   180,   181,   181,   181,   181,
+     181,   181,   181,   182,   182,   184,   183,   185,   185,   186,
+     186,   187,   187,   188,   188,   189,   189,   189,   189,   189,
+     189,   189,   189,   189,   189,   189,   189,   189,   189,   190,
+     190,   190,   190,   190,   190,   190,   191,   191,   192,   193,
+     193,   194,   195,   194,   196,   196,   197,   197,   197,   197,
+     197,   197,   197,   197,   199,   198,   198,   201,   200,   202,
+     202,   202,   203,   203,   203,   204,   205,   207,   206,   208,
+     208,   209,   209,   209,   209,   209,   210,   210,   211,   212,
+     212,   212,   212,   212,   212,   213,   213,   214,   214,   215,
+     216,   216,   217,   217,   218,   219,   219,   220,   220,   221,
+     220,   220,   220,   222,   220,   220,   223,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   224,   224,   224,
+     224,   225,   226,   226,   226,   226,   226,   226,   226,   227,
+     226,   226,   226,   226,   226,   228,   228,   228,   229,   229,
+     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
+     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
+     229,   231,   230,   232,   233,   233,   233,   233,   233,   233,
+     233,   233,   233,   233,   233,   233,   233,   234,   235,   235,
+     235,   235,   235,   235,   235,   235,   237,   236,   238,   238,
+     238,   238,   238,   238,   239,   240,   240,   241,   241,   241,
+     241,   241,   242,   243,   243,   243,   243,   243,   244,   244,
+     245,   245,   245,   246,   246,   246,   247,   247,   248,   248,
+     248,   248,   248,   248,   249,   249,   250,   250,   251,   251,
+     252,   252,   252,   253,   253,   253,   254,   254,   255,   255,
+     256,   256,   257,   257,   259,   258,   261,   260,   262,   262,
+     263,   264,   264,   264,   264,   264,   265,   265,   265,   265
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2152,79 +2154,79 @@
 #define YYPACT_NINF -424
 static const yytype_int16 yypact[] =
 {
-     219,  -424,   -86,   -55,   -62,   -58,  -424,  -424,    -8,  -424,
-      82,   163,   219,  -424,  -424,  -424,   169,  -424,  -424,  -424,
-    -424,  -424,    93,   171,    58,   184,    95,   166,   188,    70,
-    -424,  -424,  -424,  -424,    90,  -424,  -424,    81,   439,  -424,
+     212,  -424,   -90,   -80,   -21,   -28,  -424,  -424,     9,  -424,
+     118,   151,   212,  -424,  -424,  -424,   149,  -424,  -424,  -424,
+    -424,  -424,    93,   153,    32,   163,   154,   125,   171,   180,
+    -424,  -424,  -424,  -424,    68,  -424,  -424,    66,   441,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-     100,  -424,   109,  -424,   220,  -424,  -424,  -424,  -424,   160,
-    -424,   129,  -424,    67,   133,  -424,   232,  -424,  -424,  -424,
+      94,  -424,    89,  -424,   204,  -424,  -424,  -424,  -424,   247,
+    -424,   104,  -424,    13,   108,  -424,   209,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-      99,  -424,  -424,  -424,   421,   117,   131,   135,  -424,  -424,
-    -424,   439,   136,  -424,   250,   134,  -424,  -424,   439,  -424,
-    -424,  -424,  -424,  -424,   130,  -424,   132,  -424,   137,   142,
-     146,   147,   149,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-     251,   421,  -424,   115,   425,   425,  -424,   204,   421,  -424,
-     350,  -424,    48,   -19,   161,   164,   165,    48,    48,  -424,
-    -424,  -424,  -424,  -424,  -424,   159,  -424,   177,   182,   200,
-    -424,  -424,   179,  -424,   234,  -424,  -424,  -424,  -424,   180,
-     181,   183,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -64,
-    -424,   186,   190,   191,   192,   300,    48,    48,  -424,  -424,
-     196,   439,  -424,   350,  -424,  -424,  -424,   198,   161,  -424,
-    -424,  -424,  -424,  -424,  -424,    49,  -424,  -424,  -424,    99,
-     199,  -424,  -424,  -424,  -424,   213,   323,  -424,  -424,  -424,
-    -424,   324,   256,    60,     8,  -424,  -424,   166,   259,  -424,
-    -424,  -424,  -424,   328,   230,  -424,  -424,   224,   115,  -424,
-     -67,   253,   270,   439,  -424,    71,    42,  -424,  -424,   509,
-    -424,  -424,   330,   337,   338,  -424,  -424,  -424,   350,  -424,
-    -424,  -424,  -424,  -424,  -424,   223,   341,  -424,  -424,  -424,
-    -424,  -424,  -424,  -424,  -424,  -424,   405,  -424,  -424,  -424,
-     439,   229,   439,   229,  -424,   166,   278,   290,   166,   166,
-    -424,   243,   244,  -424,  -424,  -424,  -424,   523,  -424,  -424,
-     246,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,  -424,  -424,   379,    22,  -424,   439,     5,   364,
-    -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -67,   439,
-     365,   -67,   439,   272,   247,   247,   280,   281,   523,  -424,
-    -424,  -424,   358,  -424,   -39,  -424,   453,   467,  -424,  -424,
-    -424,  -424,  -424,   261,   265,   350,   283,  -424,  -424,  -424,
-     439,  -424,    28,   369,   268,  -424,  -424,  -424,  -424,   271,
-    -424,  -424,  -424,   -67,  -424,   385,   -67,  -424,   389,   298,
-     329,  -424,  -424,  -424,   282,   284,   -36,     0,    27,    11,
-     247,   532,   285,     5,   382,   -27,  -424,  -424,   388,   -24,
-    -424,   393,  -424,  -424,   293,  -424,  -424,  -424,  -424,  -424,
+      75,  -424,  -424,  -424,   483,    91,   103,   114,  -424,  -424,
+    -424,   441,   115,  -424,   226,   113,  -424,  -424,   441,  -424,
+    -424,  -424,  -424,  -424,   106,  -424,   109,  -424,   119,   121,
+     122,   123,   124,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
+     231,   483,  -424,    74,   255,   255,  -424,   172,   483,  -424,
+     426,  -424,   -40,   -69,   387,   141,   142,   -40,   -40,  -424,
+    -424,  -424,  -424,  -424,  -424,   133,  -424,   134,   152,   159,
+    -424,  -424,   145,  -424,   193,  -424,  -424,  -424,  -424,   146,
+     147,   148,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -58,
+    -424,   160,   161,   162,   174,   273,   -40,   -40,  -424,  -424,
+     156,   441,  -424,   426,  -424,  -424,  -424,   165,   387,  -424,
+    -424,  -424,  -424,  -424,  -424,    29,  -424,  -424,  -424,    75,
+     177,  -424,  -424,  -424,  -424,   166,   283,  -424,  -424,  -424,
+    -424,   300,   232,    34,    18,  -424,  -424,   125,   234,  -424,
+    -424,  -424,  -424,   304,   229,  -424,  -424,   203,    74,  -424,
+     -85,   272,   320,   441,  -424,    -7,    24,  -424,  -424,   535,
+    -424,  -424,   313,   314,   315,  -424,  -424,  -424,   426,  -424,
+    -424,  -424,  -424,  -424,  -424,   194,   318,  -424,  -424,  -424,
+    -424,  -424,  -424,  -424,  -424,  -424,   444,  -424,  -424,  -424,
+     441,   164,   441,   164,  -424,   125,   250,   253,   125,   125,
+    -424,   205,   215,  -424,  -424,  -424,  -424,   549,  -424,  -424,
+     227,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
+    -424,  -424,  -424,  -424,   396,    54,  -424,   441,    38,   322,
+    -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -85,   441,
+     339,   -85,   441,   243,   222,   222,   245,   248,   549,  -424,
+    -424,  -424,   335,  -424,   -47,  -424,   479,   493,  -424,  -424,
+    -424,  -424,  -424,   233,   249,   426,   265,  -424,  -424,  -424,
+     441,  -424,   -18,   393,   251,  -424,  -424,  -424,  -424,   257,
+    -424,  -424,  -424,   -85,  -424,   375,   -85,  -424,   380,   290,
+     321,  -424,  -424,  -424,   269,   274,   -37,     2,     8,     4,
+     222,   558,   275,    38,   379,   -33,  -424,  -424,   381,   -27,
+    -424,   383,  -424,  -424,   281,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-     439,   301,    85,  -424,   -67,  -424,   -67,  -424,  -424,   272,
-     115,   115,  -424,   439,   439,   -37,   402,  -424,   439,  -424,
-     417,  -424,   439,  -424,   419,  -424,   413,  -424,   509,   439,
-     481,  -424,   162,   439,   495,  -424,   439,  -424,   310,  -424,
-     439,   309,   322,  -424,  -424,  -424,  -424,  -424,  -424,   457,
-     439,   439,   541,   133,  -424,  -424,  -424,  -424,  -424,   247,
-     336,  -424,   450,  -424,  -424,   347,  -424,  -424,  -424,   455,
-    -424,  -424,   352,  -424,  -424,  -424,  -424,  -424,    10,   475,
-      12,    26,  -424,   477,   162,   162,  -424,   467,   439,    86,
-     439,  -424,  -424,   439,  -424,  -424,   439,  -424,   439,    94,
-    -424,   -23,  -424,   355,   356,  -424,   486,   490,   494,  -424,
-     247,  -424,   514,  -424,  -424,  -424,  -424,  -424,  -424,   166,
-    -424,  -424,   272,     5,  -424
+     441,   284,    84,  -424,   -85,  -424,   -85,  -424,  -424,   243,
+      74,    74,  -424,   441,   441,   -12,   403,  -424,   441,  -424,
+     405,  -424,   441,  -424,   409,  -424,   392,  -424,   535,   441,
+     507,  -424,   131,   441,   521,  -424,   441,  -424,   271,  -424,
+     441,   289,   291,  -424,  -424,  -424,  -424,  -424,  -424,   416,
+     441,   441,   567,   108,  -424,  -424,  -424,  -424,  -424,   222,
+     294,  -424,   401,  -424,  -424,   297,  -424,  -424,  -424,   408,
+    -424,  -424,   299,  -424,  -424,  -424,  -424,  -424,     5,   442,
+       6,    17,  -424,   443,   131,   131,  -424,   493,   441,    85,
+     441,  -424,  -424,   441,  -424,  -424,   441,  -424,   441,    41,
+    -424,   -22,  -424,   329,   330,  -424,   445,   455,   456,  -424,
+     222,  -424,   457,  -424,  -424,  -424,  -424,  -424,  -424,   125,
+    -424,  -424,   243,    38,  -424
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -424,  -424,  -424,   510,    -1,  -161,  -424,  -424,  -424,  -424,
-     299,  -424,  -424,   -68,  -424,   465,  -424,  -424,  -424,   203,
-    -424,  -424,  -424,     3,  -424,  -424,  -424,  -424,  -424,  -424,
+    -424,  -424,  -424,   436,    10,  -166,  -424,  -424,  -424,  -424,
+     242,  -424,  -424,   -62,  -424,   412,  -424,  -424,  -424,   128,
+    -424,  -424,  -424,    23,  -424,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,   339,  -424,  -424,  -424,  -424,  -424,   397,  -424,   415,
+    -424,   279,  -424,  -424,  -424,  -424,  -424,   340,  -424,   353,
     -424,  -424,  -424,  -424,  -424,  -424,  -330,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,   343,   348,  -424,   -63,  -424,  -424,  -423,  -424,
+    -424,  -424,   263,   282,  -424,   -63,  -424,  -424,  -423,  -424,
     -424,  -424,  -424,  -424,  -214,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,  -424,  -424,  -424,    89,  -226,  -424,    43,  -292,
-    -329,  -424,   170,   236,  -424,  -424,  -424,   292,   297,  -128,
-     331,  -424,   395,  -424,   286,  -219,   -47,   -38,  -164,  -424,
-    -424,  -424,   403,   478,  -424,  -116
+    -424,  -424,  -424,  -424,  -424,    31,  -225,  -424,   -30,  -320,
+    -344,  -424,   117,   167,  -424,  -424,  -424,   216,   235,  -128,
+     252,  -424,   316,  -424,   207,  -219,    -8,   -38,  -164,  -424,
+    -424,  -424,   328,   419,  -424,  -116
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -2234,203 +2236,209 @@
 #define YYTABLE_NINF -262
 static const yytype_int16 yytable[] =
 {
-      79,    96,   152,   227,   187,   383,   465,   141,   188,   223,
-     433,   269,  -165,   280,   512,   441,   515,  -165,   200,  -165,
-    -165,  -165,   356,   357,   358,   359,   442,    21,    57,   360,
-     517,   437,    62,   381,   209,   342,   381,  -165,  -165,  -165,
-     470,   438,   142,  -165,   386,   450,   471,   472,   454,   454,
-     143,    23,   209,   126,   204,   152,     3,     4,    57,    22,
-      79,   323,    62,   189,   326,   327,    24,     3,     4,   173,
-     174,   -42,  -165,  -165,  -165,  -165,     2,   145,   147,   351,
-      91,   205,   513,  -165,   516,   434,    30,  -165,   382,  -165,
-     160,   432,   205,   443,   161,     5,   266,    92,   518,   364,
-     451,    52,   367,   455,   533,    28,   361,   439,   196,   197,
-      53,   281,   268,  -165,  -165,  -165,  -165,  -165,  -165,   544,
-     152,  -165,   -83,   529,  -165,  -165,  -165,    68,    69,    70,
-      71,   245,    72,   -84,  -165,   343,    74,    75,   344,   345,
-      77,   468,   354,    79,   423,    93,   504,   425,   505,   304,
-     346,   347,   348,   349,  -261,   -23,   -21,   530,   483,   335,
-     206,   157,   490,    31,   158,    34,     2,     8,   207,   208,
-     531,   206,    53,    33,   -46,    35,   340,   352,   484,   207,
-     208,    54,   485,    36,   276,     5,   486,   277,    39,    55,
-      56,    52,    51,   271,   273,   274,   372,   373,   461,   523,
-     335,   462,   524,    66,    40,   463,    67,   464,    41,    85,
-     543,    42,    43,   162,   163,   164,   165,   152,    46,    47,
-      48,    49,   -23,     1,    88,     2,     3,     4,    73,    74,
-      75,    76,   309,    90,   320,    53,    97,    98,   310,   230,
-     123,   231,   232,   233,     5,   124,     6,   458,   125,   127,
-       7,   130,   445,   335,   129,   139,   132,     8,   133,   234,
-     235,   236,    53,   134,   -47,   237,   270,   353,   135,   355,
-     166,    54,   136,   137,   167,   138,   148,   171,   172,    55,
-      56,   365,   176,   272,   368,   168,   311,   312,   313,   314,
-     315,   316,   178,   492,   238,   239,   240,   241,   387,   391,
-     177,   317,   179,   182,   194,   242,   183,   184,   185,   243,
-     186,   244,   395,   190,   466,   467,     8,   191,   192,   193,
-     281,   198,     9,   202,   216,   542,   218,   219,   220,   221,
-      10,   228,   229,   267,   283,    68,    69,    70,    71,   245,
-      72,   284,   285,   246,   501,   289,   247,   248,    77,   288,
-     324,   506,    68,    69,    70,    71,   249,    72,    68,    69,
-      70,    71,   325,    72,   304,    77,    73,    74,    75,    76,
-     328,    77,   337,   363,   366,    68,    69,    70,    71,   380,
-      72,   369,   459,    73,    74,    75,    76,  -259,    77,   374,
-     375,  -260,   393,   421,   424,   387,   469,   422,   426,   427,
-     475,   429,   540,   449,   477,   430,   474,   431,   448,   453,
-     503,   481,   387,   396,   456,   488,   387,   457,   491,   397,
-     398,   476,   494,   478,   460,   399,   400,   401,   402,   403,
-     404,   405,   498,   499,   479,   493,   495,   406,   407,   408,
-     409,   291,   292,   293,   294,   295,   296,   297,   298,   496,
-     299,   300,   301,   302,   303,    68,    69,    70,    71,   142,
-      72,   497,   507,    73,    74,    75,    76,   143,    77,   391,
-     522,   508,   525,   509,   150,   526,   510,   511,   527,   514,
-     528,   520,   534,   535,    68,    69,    70,    71,    40,    72,
-     536,   410,   338,   411,   537,   339,    43,    77,   538,   412,
-     413,   414,   415,   416,   417,   418,   419,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   541,   110,
-     111,   112,    32,   250,    89,   149,   304,   203,   305,   306,
-      68,    69,    70,    71,   142,    72,   140,   480,    73,    74,
-      75,    76,   143,    77,    68,    69,    70,    71,   392,    72,
-     521,   447,    73,    74,    75,    76,   222,    77,    68,    69,
-      70,    71,   224,    72,   376,   321,   384,    74,    75,    76,
-     322,    77,    68,    69,    70,    71,   131,    72,   201,   286,
-     388,    74,    75,    76,   199,    77,    68,    69,    70,    71,
-     341,    72,     0,     0,   482,    74,    75,    76,     0,    77,
-      68,    69,    70,    71,     0,    72,     0,     0,   489,    74,
-      75,    76,     0,    77,    68,    69,    70,    71,   245,    72,
-       0,     0,   246,     0,     0,   247,     0,    77,    68,    69,
-      70,    71,     0,    72,     0,     0,   332,    68,    69,    70,
-      71,    77,    72,     0,     0,   446,    68,    69,    70,    71,
-      77,    72,     0,     0,   500,     0,     0,     0,     0,    77
+      79,    96,   152,   227,   187,   383,   465,   141,   441,   512,
+     515,   269,   437,   433,   280,   188,   386,   -42,   200,   223,
+     442,   517,  -165,   438,    21,   142,   381,    91,  -165,   209,
+    -165,  -165,  -165,   143,   204,    22,   381,     3,     4,    57,
+     450,   160,     3,     4,    92,   161,   454,   209,  -165,  -165,
+    -165,   454,    62,   126,  -165,   152,   356,   357,   358,   359,
+      79,   323,   205,   360,   326,   327,   470,   205,   342,    57,
+     189,   529,   471,   472,   157,   173,   174,   158,   513,   516,
+     351,   382,    62,  -165,  -165,  -165,  -165,   443,   434,   439,
+     518,   432,    93,    23,  -165,   451,   266,    24,  -165,   364,
+    -165,   455,   367,   -83,   304,   530,   533,   276,   -84,  -261,
+     277,   281,   268,   468,   196,   197,   145,   147,   531,   544,
+     152,    53,    30,    28,  -165,  -165,  -165,  -165,  -165,  -165,
+     483,   504,  -165,   505,   490,  -165,  -165,  -165,   -23,   -21,
+     361,   206,   354,    79,   423,  -165,   206,   425,   484,   207,
+     208,    31,   485,    33,   207,   208,   486,    35,    36,   335,
+      68,    69,    70,    71,   245,    72,    34,    39,   343,    74,
+      75,   344,   345,    77,   310,    51,   340,   352,    46,    47,
+      48,    49,    66,   346,   347,   348,   349,     2,    73,    74,
+      75,    76,    67,   271,   273,   274,   372,   373,   461,   523,
+     335,   462,   524,   -23,    85,   463,     5,   464,    88,    90,
+     543,    53,    52,    97,    98,   123,     1,   152,   124,     2,
+       3,     4,   311,   312,   313,   314,   315,   316,   125,   127,
+     129,   130,   309,   132,   320,   139,   133,   317,     5,   230,
+       6,   231,   232,   233,     7,   148,   134,   458,   135,   136,
+     137,   138,   445,   335,     2,   171,   172,   176,   177,   234,
+     235,   236,   179,   178,    40,   237,   183,   353,    41,   355,
+     182,    42,    43,     5,   184,   185,   186,   194,     8,    52,
+     218,   365,   198,    53,   368,   -46,   270,   219,   190,   191,
+     192,   202,    54,   492,   238,   239,   240,   241,   387,   391,
+      55,    56,   193,   216,   220,   242,   221,   228,   229,   243,
+       8,   244,   395,   267,   466,   467,     9,   283,   284,   285,
+     281,   288,   289,   324,    10,   542,   325,   304,    68,    69,
+      70,    71,   363,    72,   272,    68,    69,    70,    71,   245,
+      72,    77,   328,   246,   501,     8,   247,   248,    77,   366,
+      53,   506,   -47,   369,   337,   374,   249,   380,   375,    54,
+    -259,    68,    69,    70,    71,   142,    72,    55,    56,    73,
+      74,    75,    76,   143,    77,   393,  -260,   421,    68,    69,
+      70,    71,   459,    72,   422,   424,    73,    74,    75,    76,
+     426,    77,   427,   430,   429,   387,   469,   493,   431,   448,
+     475,   449,   540,   453,   477,   456,   457,   474,   460,   476,
+     503,   481,   387,   478,   479,   488,   387,   495,   491,   496,
+     497,   507,   494,   508,   509,   511,    68,    69,    70,    71,
+     510,    72,   498,   499,    73,    74,    75,    76,   396,    77,
+     162,   163,   164,   165,   397,   398,   514,   520,    32,   536,
+     399,   400,   401,   402,   403,   404,   405,   534,   535,   537,
+     538,   541,   406,   407,   408,   409,   250,   203,   149,   391,
+     522,    89,   525,   392,   140,   526,   222,   521,   527,   480,
+     528,   291,   292,   293,   294,   295,   296,   297,   298,   321,
+     299,   300,   301,   302,   303,   376,   224,   166,   447,   201,
+     286,   167,    68,    69,    70,    71,    40,    72,   322,   199,
+     338,   341,   168,   339,    43,    77,   410,   131,   411,     0,
+       0,     0,     0,     0,   412,   413,   414,   415,   416,   417,
+     418,   419,    68,    69,    70,    71,   142,    72,     0,     0,
+      73,    74,    75,    76,   143,    77,     0,    68,    69,    70,
+      71,   150,    72,     0,     0,    73,    74,    75,    76,     0,
+      77,     0,     0,     0,     0,     0,   304,     0,   305,   306,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,     0,   110,   111,   112,    68,    69,    70,    71,     0,
+      72,     0,     0,   384,    74,    75,    76,     0,    77,    68,
+      69,    70,    71,     0,    72,     0,     0,   388,    74,    75,
+      76,     0,    77,    68,    69,    70,    71,     0,    72,     0,
+       0,   482,    74,    75,    76,     0,    77,    68,    69,    70,
+      71,     0,    72,     0,     0,   489,    74,    75,    76,     0,
+      77,    68,    69,    70,    71,   245,    72,     0,     0,   246,
+       0,     0,   247,     0,    77,    68,    69,    70,    71,     0,
+      72,     0,     0,   332,    68,    69,    70,    71,    77,    72,
+       0,     0,   446,    68,    69,    70,    71,    77,    72,     0,
+       0,   500,     0,     0,     0,     0,    77
 };
 
 static const yytype_int16 yycheck[] =
 {
-      38,    64,   130,   217,   168,   335,   429,   123,    72,     1,
-      10,   230,     4,   239,     4,     4,     4,     9,   182,    11,
-      12,    13,    17,    18,    19,    20,    15,   113,    29,    24,
-       4,     4,    29,    72,   195,    13,    72,    29,    30,    31,
-      77,    14,   109,    35,   336,    72,    83,    84,    72,    72,
-     117,   113,   213,    91,     5,   183,     7,     8,    59,   114,
-      98,   275,    59,   127,   278,   279,   124,     7,     8,   137,
-     138,     4,    64,    65,    66,    67,     6,   124,   125,   305,
-      13,    32,    72,    75,    72,    85,     4,    79,   127,    81,
-     109,   127,    32,    82,   113,    25,   224,    30,    72,   318,
-     127,    31,   321,   127,   127,   113,   101,    80,   176,   177,
-     102,   239,   228,   105,   106,   107,   108,   109,   110,   542,
-     248,   113,    73,    29,   116,   117,   118,   105,   106,   107,
-     108,   109,   110,    73,   126,   113,   114,   115,   116,   117,
-     118,   433,   306,   181,   363,    78,   475,   366,   477,   121,
-     128,   129,   130,   131,   126,   113,   114,    63,   450,   287,
-     111,   113,   454,     0,   116,    72,     6,    97,   119,   120,
-      76,   111,   102,     4,   104,     4,   304,   305,    16,   119,
-     120,   111,    20,   125,   113,    25,    24,   116,     4,   119,
-     120,    31,     4,   231,   232,   233,   324,   325,   113,   113,
-     328,   116,   116,   113,   109,   424,   125,   426,   113,   109,
-     540,   116,   117,    52,    53,    54,    55,   345,    52,    53,
-      54,    55,   113,     4,     4,     6,     7,     8,   113,   114,
-     115,   116,   270,   104,   272,   102,     4,   138,     9,     9,
-     123,    11,    12,    13,    25,   114,    27,   411,   113,   113,
-      31,   117,   380,   381,     4,     4,   126,    97,   126,    29,
-      30,    31,   102,   126,   104,    35,    13,   305,   126,   307,
-     109,   111,   126,   126,   113,   126,    72,   113,   113,   119,
-     120,   319,   123,    13,   322,   124,    57,    58,    59,    60,
-      61,    62,   110,   457,    64,    65,    66,    67,   336,   337,
-     123,    72,   102,   124,     4,    75,    72,   127,   127,    79,
-     127,    81,   350,   127,   430,   431,    97,   127,   127,   127,
-     448,   125,   103,   125,   125,   539,   113,     4,     4,    73,
-     111,    72,     4,   109,     4,   105,   106,   107,   108,   109,
-     110,     4,     4,   113,   472,     4,   116,   117,   118,   126,
-      72,   479,   105,   106,   107,   108,   126,   110,   105,   106,
-     107,   108,    72,   110,   121,   118,   113,   114,   115,   116,
-     126,   118,   126,     9,     9,   105,   106,   107,   108,    21,
-     110,   109,   420,   113,   114,   115,   116,   126,   118,   109,
-     109,   126,   109,   125,     9,   433,   434,   126,     9,   101,
-     438,    72,   530,    21,   442,   123,     4,   123,   123,    21,
-     473,   449,   450,    44,    21,   453,   454,   124,   456,    50,
-      51,     4,   460,     4,   123,    56,    57,    58,    59,    60,
-      61,    62,   470,   471,    21,   125,   127,    68,    69,    70,
-      71,    36,    37,    38,    39,    40,    41,    42,    43,   127,
-      45,    46,    47,    48,    49,   105,   106,   107,   108,   109,
-     110,     4,   126,   113,   114,   115,   116,   117,   118,   507,
-     508,    21,   510,   126,   124,   513,    21,   125,   516,     4,
-     518,     4,   127,   127,   105,   106,   107,   108,   109,   110,
-       4,   122,   113,   124,     4,   116,   117,   118,     4,   130,
-     131,   132,   133,   134,   135,   136,   137,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,     4,    98,
-      99,   100,    12,   224,    59,   128,   121,   188,   123,   124,
-     105,   106,   107,   108,   109,   110,   121,   448,   113,   114,
-     115,   116,   117,   118,   105,   106,   107,   108,   345,   110,
-     507,   381,   113,   114,   115,   116,   213,   118,   105,   106,
-     107,   108,   214,   110,   328,   273,   113,   114,   115,   116,
-     273,   118,   105,   106,   107,   108,    98,   110,   183,   248,
-     113,   114,   115,   116,   181,   118,   105,   106,   107,   108,
-     304,   110,    -1,    -1,   113,   114,   115,   116,    -1,   118,
-     105,   106,   107,   108,    -1,   110,    -1,    -1,   113,   114,
-     115,   116,    -1,   118,   105,   106,   107,   108,   109,   110,
-      -1,    -1,   113,    -1,    -1,   116,    -1,   118,   105,   106,
-     107,   108,    -1,   110,    -1,    -1,   113,   105,   106,   107,
-     108,   118,   110,    -1,    -1,   113,   105,   106,   107,   108,
-     118,   110,    -1,    -1,   113,    -1,    -1,    -1,    -1,   118
+      38,    64,   130,   217,   168,   335,   429,   123,     4,     4,
+       4,   230,     4,    11,   239,    73,   336,     4,   182,     1,
+      16,     4,     4,    15,   114,   110,    73,    14,    10,   195,
+      12,    13,    14,   118,     5,   115,    73,     8,     9,    29,
+      73,   110,     8,     9,    31,   114,    73,   213,    30,    31,
+      32,    73,    29,    91,    36,   183,    18,    19,    20,    21,
+      98,   275,    33,    25,   278,   279,    78,    33,    14,    59,
+     128,    30,    84,    85,   114,   137,   138,   117,    73,    73,
+     305,   128,    59,    65,    66,    67,    68,    83,    86,    81,
+      73,   128,    79,   114,    76,   128,   224,   125,    80,   318,
+      82,   128,   321,    74,   122,    64,   128,   114,    74,   127,
+     117,   239,   228,   433,   176,   177,   124,   125,    77,   542,
+     248,   103,     4,   114,   106,   107,   108,   109,   110,   111,
+     450,   475,   114,   477,   454,   117,   118,   119,   114,   115,
+     102,   112,   306,   181,   363,   127,   112,   366,    17,   120,
+     121,     0,    21,     4,   120,   121,    25,     4,   126,   287,
+     106,   107,   108,   109,   110,   111,    73,     4,   114,   115,
+     116,   117,   118,   119,    10,     4,   304,   305,    53,    54,
+      55,    56,   114,   129,   130,   131,   132,     7,   114,   115,
+     116,   117,   126,   231,   232,   233,   324,   325,   114,   114,
+     328,   117,   117,   114,   110,   424,    26,   426,     4,   105,
+     540,   103,    32,     4,   139,   124,     4,   345,   115,     7,
+       8,     9,    58,    59,    60,    61,    62,    63,   114,   114,
+       4,   118,   270,   127,   272,     4,   127,    73,    26,    10,
+      28,    12,    13,    14,    32,    73,   127,   411,   127,   127,
+     127,   127,   380,   381,     7,   114,   114,   124,   124,    30,
+      31,    32,   103,   111,   110,    36,    73,   305,   114,   307,
+     125,   117,   118,    26,   128,   128,   128,     4,    98,    32,
+     114,   319,   126,   103,   322,   105,    14,     4,   128,   128,
+     128,   126,   112,   457,    65,    66,    67,    68,   336,   337,
+     120,   121,   128,   126,     4,    76,    74,    73,     4,    80,
+      98,    82,   350,   110,   430,   431,   104,     4,     4,     4,
+     448,   127,     4,    73,   112,   539,    73,   122,   106,   107,
+     108,   109,    10,   111,    14,   106,   107,   108,   109,   110,
+     111,   119,   127,   114,   472,    98,   117,   118,   119,    10,
+     103,   479,   105,   110,   127,   110,   127,    22,   110,   112,
+     127,   106,   107,   108,   109,   110,   111,   120,   121,   114,
+     115,   116,   117,   118,   119,   110,   127,   126,   106,   107,
+     108,   109,   420,   111,   127,    10,   114,   115,   116,   117,
+      10,   119,   102,   124,    73,   433,   434,   126,   124,   124,
+     438,    22,   530,    22,   442,    22,   125,     4,   124,     4,
+     473,   449,   450,     4,    22,   453,   454,   128,   456,   128,
+       4,   127,   460,    22,   127,   126,   106,   107,   108,   109,
+      22,   111,   470,   471,   114,   115,   116,   117,    45,   119,
+      53,    54,    55,    56,    51,    52,     4,     4,    12,     4,
+      57,    58,    59,    60,    61,    62,    63,   128,   128,     4,
+       4,     4,    69,    70,    71,    72,   224,   188,   128,   507,
+     508,    59,   510,   345,   121,   513,   213,   507,   516,   448,
+     518,    37,    38,    39,    40,    41,    42,    43,    44,   273,
+      46,    47,    48,    49,    50,   328,   214,   110,   381,   183,
+     248,   114,   106,   107,   108,   109,   110,   111,   273,   181,
+     114,   304,   125,   117,   118,   119,   123,    98,   125,    -1,
+      -1,    -1,    -1,    -1,   131,   132,   133,   134,   135,   136,
+     137,   138,   106,   107,   108,   109,   110,   111,    -1,    -1,
+     114,   115,   116,   117,   118,   119,    -1,   106,   107,   108,
+     109,   125,   111,    -1,    -1,   114,   115,   116,   117,    -1,
+     119,    -1,    -1,    -1,    -1,    -1,   122,    -1,   124,   125,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    -1,    99,   100,   101,   106,   107,   108,   109,    -1,
+     111,    -1,    -1,   114,   115,   116,   117,    -1,   119,   106,
+     107,   108,   109,    -1,   111,    -1,    -1,   114,   115,   116,
+     117,    -1,   119,   106,   107,   108,   109,    -1,   111,    -1,
+      -1,   114,   115,   116,   117,    -1,   119,   106,   107,   108,
+     109,    -1,   111,    -1,    -1,   114,   115,   116,   117,    -1,
+     119,   106,   107,   108,   109,   110,   111,    -1,    -1,   114,
+      -1,    -1,   117,    -1,   119,   106,   107,   108,   109,    -1,
+     111,    -1,    -1,   114,   106,   107,   108,   109,   119,   111,
+      -1,    -1,   114,   106,   107,   108,   109,   119,   111,    -1,
+      -1,   114,    -1,    -1,    -1,    -1,   119
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,     4,     6,     7,     8,    25,    27,    31,    97,   103,
-     111,   140,   141,   142,   143,   144,   146,   147,   159,   162,
-     164,   113,   114,   113,   124,   163,   165,   148,   113,   160,
-       4,     0,   142,     4,    72,     4,   125,   257,   258,     4,
-     109,   113,   116,   117,   252,   253,    52,    53,    54,    55,
-     223,     4,    31,   102,   111,   119,   120,   143,   149,   153,
-     154,   161,   162,   212,   213,   214,   113,   125,   105,   106,
-     107,   108,   110,   113,   114,   115,   116,   118,   248,   256,
-     261,   262,   263,   264,   166,   109,   150,   151,     4,   154,
-     104,    13,    30,    78,   155,   156,   214,     4,   138,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      98,    99,   100,   172,   173,   174,   175,   176,   177,   178,
-     186,   187,   188,   123,   114,   113,   256,   113,   157,     4,
-     117,   262,   126,   126,   126,   126,   126,   126,   126,     4,
-     188,   264,   109,   117,   254,   255,   256,   255,    72,   186,
-     124,   158,   248,   249,   250,   251,   255,   113,   116,   152,
-     109,   113,    52,    53,    54,    55,   109,   113,   124,   179,
-     180,   113,   113,   152,   152,   167,   123,   123,   110,   102,
-     259,   260,   124,    72,   127,   127,   127,   257,    72,   127,
-     127,   127,   127,   127,     4,   168,   152,   152,   125,   261,
-     257,   251,   125,   180,     5,    32,   111,   119,   120,   144,
-     145,   169,   181,   209,   210,   211,   125,   170,   113,     4,
-       4,    73,   211,     1,   212,   215,   171,   223,    72,     4,
-       9,    11,    12,    13,    29,    30,    31,    35,    64,    65,
-      66,    67,    75,    79,    81,   109,   113,   116,   117,   126,
-     149,   182,   197,   199,   205,   207,   219,   225,   229,   231,
-     233,   234,   235,   243,   244,   245,   248,   109,   264,   254,
-      13,   256,    13,   256,   256,   220,   113,   116,   221,   222,
-     235,   248,   230,     4,     4,     4,   249,   226,   126,     4,
-     236,    36,    37,    38,    39,    40,    41,    42,    43,    45,
-      46,    47,    48,    49,   121,   123,   124,   232,   195,   256,
-       9,    57,    58,    59,    60,    61,    62,    72,   246,   247,
-     256,   246,   247,   223,    72,    72,   223,   223,   126,   183,
-     198,   200,   113,   241,   242,   248,   206,   126,   113,   116,
-     248,   253,    13,   113,   116,   117,   128,   129,   130,   131,
-     227,   235,   248,   256,   257,   256,    17,    18,    19,    20,
-      24,   101,   196,     9,   254,   256,     9,   254,   256,   109,
-     216,   217,   248,   248,   109,   109,   242,   190,   201,   202,
-      21,    72,   127,   195,   113,   208,   238,   256,   113,   237,
-     238,   256,   158,   109,   224,   256,    44,    50,    51,    56,
-      57,    58,    59,    60,    61,    62,    68,    69,    70,    71,
-     122,   124,   130,   131,   132,   133,   134,   135,   136,   137,
-     228,   125,   126,   254,     9,   254,     9,   101,   218,    72,
-     123,   123,   127,    10,    85,   185,   191,     4,    14,    80,
-     203,     4,    15,    82,   204,   248,   113,   241,   123,    21,
-      72,   127,   239,    21,    72,   127,    21,   124,   257,   256,
-     123,   113,   116,   254,   254,   217,   264,   264,   238,   256,
-      77,    83,    84,   189,     4,   256,     4,   256,     4,    21,
-     234,   256,   113,   238,    16,    20,    24,   240,   256,   113,
-     238,   256,   257,   125,   256,   127,   127,     4,   256,   256,
-     113,   248,   184,   214,   239,   239,   248,   126,    21,   126,
-      21,   125,     4,    72,     4,     4,    72,     4,    72,   192,
-       4,   237,   256,   113,   116,   256,   256,   256,   256,    29,
-      63,    76,   193,   127,   127,   127,     4,     4,     4,   194,
-     248,     4,   223,   195,   217
+       0,     4,     7,     8,     9,    26,    28,    32,    98,   104,
+     112,   141,   142,   143,   144,   145,   147,   148,   160,   163,
+     165,   114,   115,   114,   125,   164,   166,   149,   114,   161,
+       4,     0,   143,     4,    73,     4,   126,   258,   259,     4,
+     110,   114,   117,   118,   253,   254,    53,    54,    55,    56,
+     224,     4,    32,   103,   112,   120,   121,   144,   150,   154,
+     155,   162,   163,   213,   214,   215,   114,   126,   106,   107,
+     108,   109,   111,   114,   115,   116,   117,   119,   249,   257,
+     262,   263,   264,   265,   167,   110,   151,   152,     4,   155,
+     105,    14,    31,    79,   156,   157,   215,     4,   139,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      99,   100,   101,   173,   174,   175,   176,   177,   178,   179,
+     187,   188,   189,   124,   115,   114,   257,   114,   158,     4,
+     118,   263,   127,   127,   127,   127,   127,   127,   127,     4,
+     189,   265,   110,   118,   255,   256,   257,   256,    73,   187,
+     125,   159,   249,   250,   251,   252,   256,   114,   117,   153,
+     110,   114,    53,    54,    55,    56,   110,   114,   125,   180,
+     181,   114,   114,   153,   153,   168,   124,   124,   111,   103,
+     260,   261,   125,    73,   128,   128,   128,   258,    73,   128,
+     128,   128,   128,   128,     4,   169,   153,   153,   126,   262,
+     258,   252,   126,   181,     5,    33,   112,   120,   121,   145,
+     146,   170,   182,   210,   211,   212,   126,   171,   114,     4,
+       4,    74,   212,     1,   213,   216,   172,   224,    73,     4,
+      10,    12,    13,    14,    30,    31,    32,    36,    65,    66,
+      67,    68,    76,    80,    82,   110,   114,   117,   118,   127,
+     150,   183,   198,   200,   206,   208,   220,   226,   230,   232,
+     234,   235,   236,   244,   245,   246,   249,   110,   265,   255,
+      14,   257,    14,   257,   257,   221,   114,   117,   222,   223,
+     236,   249,   231,     4,     4,     4,   250,   227,   127,     4,
+     237,    37,    38,    39,    40,    41,    42,    43,    44,    46,
+      47,    48,    49,    50,   122,   124,   125,   233,   196,   257,
+      10,    58,    59,    60,    61,    62,    63,    73,   247,   248,
+     257,   247,   248,   224,    73,    73,   224,   224,   127,   184,
+     199,   201,   114,   242,   243,   249,   207,   127,   114,   117,
+     249,   254,    14,   114,   117,   118,   129,   130,   131,   132,
+     228,   236,   249,   257,   258,   257,    18,    19,    20,    21,
+      25,   102,   197,    10,   255,   257,    10,   255,   257,   110,
+     217,   218,   249,   249,   110,   110,   243,   191,   202,   203,
+      22,    73,   128,   196,   114,   209,   239,   257,   114,   238,
+     239,   257,   159,   110,   225,   257,    45,    51,    52,    57,
+      58,    59,    60,    61,    62,    63,    69,    70,    71,    72,
+     123,   125,   131,   132,   133,   134,   135,   136,   137,   138,
+     229,   126,   127,   255,    10,   255,    10,   102,   219,    73,
+     124,   124,   128,    11,    86,   186,   192,     4,    15,    81,
+     204,     4,    16,    83,   205,   249,   114,   242,   124,    22,
+      73,   128,   240,    22,    73,   128,    22,   125,   258,   257,
+     124,   114,   117,   255,   255,   218,   265,   265,   239,   257,
+      78,    84,    85,   190,     4,   257,     4,   257,     4,    22,
+     235,   257,   114,   239,    17,    21,    25,   241,   257,   114,
+     239,   257,   258,   126,   257,   128,   128,     4,   257,   257,
+     114,   249,   185,   215,   240,   240,   249,   127,    22,   127,
+      22,   126,     4,    73,     4,     4,    73,     4,    73,   193,
+       4,   238,   257,   114,   117,   257,   257,   257,   257,    30,
+      64,    77,   194,   128,   128,   128,     4,     4,     4,   195,
+     249,     4,   224,   196,   218
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -5853,7 +5861,7 @@
 
 
 /* Line 1455 of yacc.c  */
-#line 5846 "compilers/imcc/imcparser.c"
+#line 5854 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6093,26 +6101,19 @@
      * before the newline, and thus, line is the line *after* the
      * error. Instead of duplicating code for both cases (the 'newline' and
      * non-newline case, do the test twice; efficiency is not important when
-     * we have an error anyway.
-     */
+     * we have an error anyway. */
     if (!at_eof(yyscanner)) {
-        if (*chr == '\n') {
-            IMCC_INFO(interp)->line--;
-        }
-
         IMCC_warning(interp, "error:imcc:%s", s);
+
         /* don't print the current token if it is a newline */
-        if (*chr != '\n') {
+        if (*chr != '\n')
             IMCC_warning(interp, " ('%s')", chr);
-        }
-        IMCC_print_inc(interp);
-
-        if (*chr == '\n') {
-            IMCC_INFO(interp)->line++;
-        }
 
+        IMCC_print_inc(interp);
     }
-    else { /* scanner is at end of file; just to be sure, do not print "current" token. */
+
+    /* scanner is at EOF; just to be sure, don't print "current" token */
+    else {
         IMCC_warning(interp, "error:imcc:%s", s);
         IMCC_print_inc(interp);
     }

Modified: branches/compact_pool_revamp/compilers/imcc/imcparser.h
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/imcparser.h	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/imcparser.h	Mon Apr 26 06:15:29 2010	(r46022)
@@ -52,245 +52,247 @@
    enum yytokentype {
      LOW_PREC = 258,
      PARAM = 259,
-     HLL = 260,
-     TK_LINE = 261,
-     TK_FILE = 262,
-     GOTO = 263,
-     ARG = 264,
-     IF = 265,
-     UNLESS = 266,
-     PNULL = 267,
-     SET_RETURN = 268,
-     SET_YIELD = 269,
-     ADV_FLAT = 270,
-     ADV_SLURPY = 271,
-     ADV_OPTIONAL = 272,
-     ADV_OPT_FLAG = 273,
-     ADV_NAMED = 274,
-     ADV_ARROW = 275,
-     NEW = 276,
-     ADV_INVOCANT = 277,
-     ADV_CALL_SIG = 278,
-     NAMESPACE = 279,
-     DOT_METHOD = 280,
-     SUB = 281,
-     SYM = 282,
-     LOCAL = 283,
-     LEXICAL = 284,
-     CONST = 285,
-     ANNOTATE = 286,
-     INC = 287,
-     DEC = 288,
-     GLOBAL_CONST = 289,
-     PLUS_ASSIGN = 290,
-     MINUS_ASSIGN = 291,
-     MUL_ASSIGN = 292,
-     DIV_ASSIGN = 293,
-     CONCAT_ASSIGN = 294,
-     BAND_ASSIGN = 295,
-     BOR_ASSIGN = 296,
-     BXOR_ASSIGN = 297,
-     FDIV = 298,
-     FDIV_ASSIGN = 299,
-     MOD_ASSIGN = 300,
-     SHR_ASSIGN = 301,
-     SHL_ASSIGN = 302,
-     SHR_U_ASSIGN = 303,
-     SHIFT_LEFT = 304,
-     SHIFT_RIGHT = 305,
-     INTV = 306,
-     FLOATV = 307,
-     STRINGV = 308,
-     PMCV = 309,
-     LOG_XOR = 310,
-     RELOP_EQ = 311,
-     RELOP_NE = 312,
-     RELOP_GT = 313,
-     RELOP_GTE = 314,
-     RELOP_LT = 315,
-     RELOP_LTE = 316,
-     RESULT = 317,
-     RETURN = 318,
-     TAILCALL = 319,
-     YIELDT = 320,
-     GET_RESULTS = 321,
-     POW = 322,
-     SHIFT_RIGHT_U = 323,
-     LOG_AND = 324,
-     LOG_OR = 325,
-     COMMA = 326,
-     ESUB = 327,
-     DOTDOT = 328,
-     PCC_BEGIN = 329,
-     PCC_END = 330,
-     PCC_CALL = 331,
-     PCC_SUB = 332,
-     PCC_BEGIN_RETURN = 333,
-     PCC_END_RETURN = 334,
-     PCC_BEGIN_YIELD = 335,
-     PCC_END_YIELD = 336,
-     NCI_CALL = 337,
-     METH_CALL = 338,
-     INVOCANT = 339,
-     MAIN = 340,
-     LOAD = 341,
-     INIT = 342,
-     IMMEDIATE = 343,
-     POSTCOMP = 344,
-     METHOD = 345,
-     ANON = 346,
-     OUTER = 347,
-     NEED_LEX = 348,
-     MULTI = 349,
-     VTABLE_METHOD = 350,
-     LOADLIB = 351,
-     SUB_INSTANCE_OF = 352,
-     SUBID = 353,
-     NS_ENTRY = 354,
-     UNIQUE_REG = 355,
-     LABEL = 356,
-     EMIT = 357,
-     EOM = 358,
-     IREG = 359,
-     NREG = 360,
-     SREG = 361,
-     PREG = 362,
-     IDENTIFIER = 363,
-     REG = 364,
-     MACRO = 365,
-     ENDM = 366,
-     STRINGC = 367,
-     INTC = 368,
-     FLOATC = 369,
-     USTRINGC = 370,
-     PARROT_OP = 371,
-     VAR = 372,
-     LINECOMMENT = 373,
-     FILECOMMENT = 374,
-     DOT = 375,
-     CONCAT = 376
+     SOL = 260,
+     HLL = 261,
+     TK_LINE = 262,
+     TK_FILE = 263,
+     GOTO = 264,
+     ARG = 265,
+     IF = 266,
+     UNLESS = 267,
+     PNULL = 268,
+     SET_RETURN = 269,
+     SET_YIELD = 270,
+     ADV_FLAT = 271,
+     ADV_SLURPY = 272,
+     ADV_OPTIONAL = 273,
+     ADV_OPT_FLAG = 274,
+     ADV_NAMED = 275,
+     ADV_ARROW = 276,
+     NEW = 277,
+     ADV_INVOCANT = 278,
+     ADV_CALL_SIG = 279,
+     NAMESPACE = 280,
+     DOT_METHOD = 281,
+     SUB = 282,
+     SYM = 283,
+     LOCAL = 284,
+     LEXICAL = 285,
+     CONST = 286,
+     ANNOTATE = 287,
+     INC = 288,
+     DEC = 289,
+     GLOBAL_CONST = 290,
+     PLUS_ASSIGN = 291,
+     MINUS_ASSIGN = 292,
+     MUL_ASSIGN = 293,
+     DIV_ASSIGN = 294,
+     CONCAT_ASSIGN = 295,
+     BAND_ASSIGN = 296,
+     BOR_ASSIGN = 297,
+     BXOR_ASSIGN = 298,
+     FDIV = 299,
+     FDIV_ASSIGN = 300,
+     MOD_ASSIGN = 301,
+     SHR_ASSIGN = 302,
+     SHL_ASSIGN = 303,
+     SHR_U_ASSIGN = 304,
+     SHIFT_LEFT = 305,
+     SHIFT_RIGHT = 306,
+     INTV = 307,
+     FLOATV = 308,
+     STRINGV = 309,
+     PMCV = 310,
+     LOG_XOR = 311,
+     RELOP_EQ = 312,
+     RELOP_NE = 313,
+     RELOP_GT = 314,
+     RELOP_GTE = 315,
+     RELOP_LT = 316,
+     RELOP_LTE = 317,
+     RESULT = 318,
+     RETURN = 319,
+     TAILCALL = 320,
+     YIELDT = 321,
+     GET_RESULTS = 322,
+     POW = 323,
+     SHIFT_RIGHT_U = 324,
+     LOG_AND = 325,
+     LOG_OR = 326,
+     COMMA = 327,
+     ESUB = 328,
+     DOTDOT = 329,
+     PCC_BEGIN = 330,
+     PCC_END = 331,
+     PCC_CALL = 332,
+     PCC_SUB = 333,
+     PCC_BEGIN_RETURN = 334,
+     PCC_END_RETURN = 335,
+     PCC_BEGIN_YIELD = 336,
+     PCC_END_YIELD = 337,
+     NCI_CALL = 338,
+     METH_CALL = 339,
+     INVOCANT = 340,
+     MAIN = 341,
+     LOAD = 342,
+     INIT = 343,
+     IMMEDIATE = 344,
+     POSTCOMP = 345,
+     METHOD = 346,
+     ANON = 347,
+     OUTER = 348,
+     NEED_LEX = 349,
+     MULTI = 350,
+     VTABLE_METHOD = 351,
+     LOADLIB = 352,
+     SUB_INSTANCE_OF = 353,
+     SUBID = 354,
+     NS_ENTRY = 355,
+     UNIQUE_REG = 356,
+     LABEL = 357,
+     EMIT = 358,
+     EOM = 359,
+     IREG = 360,
+     NREG = 361,
+     SREG = 362,
+     PREG = 363,
+     IDENTIFIER = 364,
+     REG = 365,
+     MACRO = 366,
+     ENDM = 367,
+     STRINGC = 368,
+     INTC = 369,
+     FLOATC = 370,
+     USTRINGC = 371,
+     PARROT_OP = 372,
+     VAR = 373,
+     LINECOMMENT = 374,
+     FILECOMMENT = 375,
+     DOT = 376,
+     CONCAT = 377
    };
 #endif
 /* Tokens.  */
 #define LOW_PREC 258
 #define PARAM 259
-#define HLL 260
-#define TK_LINE 261
-#define TK_FILE 262
-#define GOTO 263
-#define ARG 264
-#define IF 265
-#define UNLESS 266
-#define PNULL 267
-#define SET_RETURN 268
-#define SET_YIELD 269
-#define ADV_FLAT 270
-#define ADV_SLURPY 271
-#define ADV_OPTIONAL 272
-#define ADV_OPT_FLAG 273
-#define ADV_NAMED 274
-#define ADV_ARROW 275
-#define NEW 276
-#define ADV_INVOCANT 277
-#define ADV_CALL_SIG 278
-#define NAMESPACE 279
-#define DOT_METHOD 280
-#define SUB 281
-#define SYM 282
-#define LOCAL 283
-#define LEXICAL 284
-#define CONST 285
-#define ANNOTATE 286
-#define INC 287
-#define DEC 288
-#define GLOBAL_CONST 289
-#define PLUS_ASSIGN 290
-#define MINUS_ASSIGN 291
-#define MUL_ASSIGN 292
-#define DIV_ASSIGN 293
-#define CONCAT_ASSIGN 294
-#define BAND_ASSIGN 295
-#define BOR_ASSIGN 296
-#define BXOR_ASSIGN 297
-#define FDIV 298
-#define FDIV_ASSIGN 299
-#define MOD_ASSIGN 300
-#define SHR_ASSIGN 301
-#define SHL_ASSIGN 302
-#define SHR_U_ASSIGN 303
-#define SHIFT_LEFT 304
-#define SHIFT_RIGHT 305
-#define INTV 306
-#define FLOATV 307
-#define STRINGV 308
-#define PMCV 309
-#define LOG_XOR 310
-#define RELOP_EQ 311
-#define RELOP_NE 312
-#define RELOP_GT 313
-#define RELOP_GTE 314
-#define RELOP_LT 315
-#define RELOP_LTE 316
-#define RESULT 317
-#define RETURN 318
-#define TAILCALL 319
-#define YIELDT 320
-#define GET_RESULTS 321
-#define POW 322
-#define SHIFT_RIGHT_U 323
-#define LOG_AND 324
-#define LOG_OR 325
-#define COMMA 326
-#define ESUB 327
-#define DOTDOT 328
-#define PCC_BEGIN 329
-#define PCC_END 330
-#define PCC_CALL 331
-#define PCC_SUB 332
-#define PCC_BEGIN_RETURN 333
-#define PCC_END_RETURN 334
-#define PCC_BEGIN_YIELD 335
-#define PCC_END_YIELD 336
-#define NCI_CALL 337
-#define METH_CALL 338
-#define INVOCANT 339
-#define MAIN 340
-#define LOAD 341
-#define INIT 342
-#define IMMEDIATE 343
-#define POSTCOMP 344
-#define METHOD 345
-#define ANON 346
-#define OUTER 347
-#define NEED_LEX 348
-#define MULTI 349
-#define VTABLE_METHOD 350
-#define LOADLIB 351
-#define SUB_INSTANCE_OF 352
-#define SUBID 353
-#define NS_ENTRY 354
-#define UNIQUE_REG 355
-#define LABEL 356
-#define EMIT 357
-#define EOM 358
-#define IREG 359
-#define NREG 360
-#define SREG 361
-#define PREG 362
-#define IDENTIFIER 363
-#define REG 364
-#define MACRO 365
-#define ENDM 366
-#define STRINGC 367
-#define INTC 368
-#define FLOATC 369
-#define USTRINGC 370
-#define PARROT_OP 371
-#define VAR 372
-#define LINECOMMENT 373
-#define FILECOMMENT 374
-#define DOT 375
-#define CONCAT 376
+#define SOL 260
+#define HLL 261
+#define TK_LINE 262
+#define TK_FILE 263
+#define GOTO 264
+#define ARG 265
+#define IF 266
+#define UNLESS 267
+#define PNULL 268
+#define SET_RETURN 269
+#define SET_YIELD 270
+#define ADV_FLAT 271
+#define ADV_SLURPY 272
+#define ADV_OPTIONAL 273
+#define ADV_OPT_FLAG 274
+#define ADV_NAMED 275
+#define ADV_ARROW 276
+#define NEW 277
+#define ADV_INVOCANT 278
+#define ADV_CALL_SIG 279
+#define NAMESPACE 280
+#define DOT_METHOD 281
+#define SUB 282
+#define SYM 283
+#define LOCAL 284
+#define LEXICAL 285
+#define CONST 286
+#define ANNOTATE 287
+#define INC 288
+#define DEC 289
+#define GLOBAL_CONST 290
+#define PLUS_ASSIGN 291
+#define MINUS_ASSIGN 292
+#define MUL_ASSIGN 293
+#define DIV_ASSIGN 294
+#define CONCAT_ASSIGN 295
+#define BAND_ASSIGN 296
+#define BOR_ASSIGN 297
+#define BXOR_ASSIGN 298
+#define FDIV 299
+#define FDIV_ASSIGN 300
+#define MOD_ASSIGN 301
+#define SHR_ASSIGN 302
+#define SHL_ASSIGN 303
+#define SHR_U_ASSIGN 304
+#define SHIFT_LEFT 305
+#define SHIFT_RIGHT 306
+#define INTV 307
+#define FLOATV 308
+#define STRINGV 309
+#define PMCV 310
+#define LOG_XOR 311
+#define RELOP_EQ 312
+#define RELOP_NE 313
+#define RELOP_GT 314
+#define RELOP_GTE 315
+#define RELOP_LT 316
+#define RELOP_LTE 317
+#define RESULT 318
+#define RETURN 319
+#define TAILCALL 320
+#define YIELDT 321
+#define GET_RESULTS 322
+#define POW 323
+#define SHIFT_RIGHT_U 324
+#define LOG_AND 325
+#define LOG_OR 326
+#define COMMA 327
+#define ESUB 328
+#define DOTDOT 329
+#define PCC_BEGIN 330
+#define PCC_END 331
+#define PCC_CALL 332
+#define PCC_SUB 333
+#define PCC_BEGIN_RETURN 334
+#define PCC_END_RETURN 335
+#define PCC_BEGIN_YIELD 336
+#define PCC_END_YIELD 337
+#define NCI_CALL 338
+#define METH_CALL 339
+#define INVOCANT 340
+#define MAIN 341
+#define LOAD 342
+#define INIT 343
+#define IMMEDIATE 344
+#define POSTCOMP 345
+#define METHOD 346
+#define ANON 347
+#define OUTER 348
+#define NEED_LEX 349
+#define MULTI 350
+#define VTABLE_METHOD 351
+#define LOADLIB 352
+#define SUB_INSTANCE_OF 353
+#define SUBID 354
+#define NS_ENTRY 355
+#define UNIQUE_REG 356
+#define LABEL 357
+#define EMIT 358
+#define EOM 359
+#define IREG 360
+#define NREG 361
+#define SREG 362
+#define PREG 363
+#define IDENTIFIER 364
+#define REG 365
+#define MACRO 366
+#define ENDM 367
+#define STRINGC 368
+#define INTC 369
+#define FLOATC 370
+#define USTRINGC 371
+#define PARROT_OP 372
+#define VAR 373
+#define LINECOMMENT 374
+#define FILECOMMENT 375
+#define DOT 376
+#define CONCAT 377
 
 
 
@@ -311,7 +313,7 @@
 
 
 /* Line 1676 of yacc.c  */
-#line 304 "compilers/imcc/imcparser.h"
+#line 306 "compilers/imcc/imcparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */

Modified: branches/compact_pool_revamp/compilers/imcc/instructions.c
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/instructions.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/instructions.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -813,6 +813,8 @@
 
 =item C<static int e_file_close(PARROT_INTERP, void *param)>
 
+Close STDOUT
+
 =cut
 
 */
@@ -832,6 +834,8 @@
 =item C<static int e_file_emit(PARROT_INTERP, void *param, const IMC_Unit *unit,
 const Instruction *ins)>
 
+emit the Instruction C<ins> to the given IMC_Unit C<unit>, passing C<param>
+
 =cut
 
 */

Modified: branches/compact_pool_revamp/compilers/imcc/main.c
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/main.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/main.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -78,7 +78,7 @@
     int obj_file,
     ARGIN_NULLOK(const char *output_file),
     int argc,
-    ARGIN(char **argv))
+    ARGIN(const char **argv))
         __attribute__nonnull__(1)
         __attribute__nonnull__(5);
 
@@ -251,13 +251,6 @@
         if (strchr(opt->opt_arg, '2')) {
             IMCC_INFO(interp)->optimizer_level |= (OPT_PRE | OPT_CFG);
         }
-        if (strchr(opt->opt_arg, 't')) {
-#ifdef HAVE_COMPUTED_GOTO
-            *core = PARROT_CGP_CORE;
-#else
-            *core = PARROT_SWITCH_CORE;
-#endif
-        }
         break;
 
       default:
@@ -414,12 +407,6 @@
     if (opt_level & OPT_SUB)
         opt_desc[i++] = 'c';
 
-    if (PARROT_RUNCORE_JIT_OPS_TEST(interp->run_core))
-        opt_desc[i++] = 'j';
-
-    if (PARROT_RUNCORE_PREDEREF_OPS_TEST(interp->run_core))
-        opt_desc[i++] = 't';
-
     opt_desc[i] = '\0';
     return;
 }
@@ -462,7 +449,7 @@
 /*
 
 =item C<static void imcc_run_pbc(PARROT_INTERP, int obj_file, const char
-*output_file, int argc, char **argv)>
+*output_file, int argc, const char **argv)>
 
 Write out or run Parrot bytecode.
 
@@ -472,7 +459,7 @@
 
 static void
 imcc_run_pbc(PARROT_INTERP, int obj_file, ARGIN_NULLOK(const char *output_file),
-        int argc, ARGIN(char **argv))
+        int argc, ARGIN(const char **argv))
 {
     ASSERT_ARGS(imcc_run_pbc)
     if (IMCC_INFO(interp)->imcc_warn)
@@ -692,7 +679,7 @@
 
 /*
 
-=item C<int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, char
+=item C<int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, const char
 **argv)>
 
 Entry point of IMCC, as invoked by Parrot's main function.
@@ -705,7 +692,7 @@
 
 int
 imcc_run(PARROT_INTERP, ARGIN(const char *sourcefile), int argc,
-        ARGIN(char **argv))
+        ARGIN(const char **argv))
 {
     int                obj_file;
     yyscan_t           yyscanner   = IMCC_INFO(interp)->yyscanner;

Modified: branches/compact_pool_revamp/compilers/imcc/optimizer.c
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/optimizer.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/optimizer.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
  */
 
 /*
@@ -256,6 +256,10 @@
 
 =item C<int optimize(PARROT_INTERP, IMC_Unit *unit)>
 
+Runs after the CFG is built and handles constant propogation.
+
+used_once ... deletes assignments, when LHS is unused
+
 =cut
 
 */
@@ -1225,6 +1229,11 @@
 =item C<static int branch_cond_loop_swap(PARROT_INTERP, IMC_Unit *unit,
 Instruction *branch, Instruction *start, Instruction *cond)>
 
+Converts conditional loops to post-test
+
+Returns TRUE if any optimizations were performed. Otherwise, returns
+FALSE.
+
 =cut
 
 */
@@ -1461,6 +1470,10 @@
 
 =item C<static int dead_code_remove(PARROT_INTERP, IMC_Unit *unit)>
 
+dead code elimination
+... unreachable blocks
+... unreachable instructions
+
 =cut
 
 */
@@ -1541,6 +1554,8 @@
 
 =item C<static int used_once(PARROT_INTERP, IMC_Unit *unit)>
 
+used_once ... deletes assignments, when LHS is unused
+
 =cut
 
 */

Modified: branches/compact_pool_revamp/compilers/imcc/parser_util.c
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/parser_util.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/parser_util.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -708,7 +708,7 @@
         sub_data->seg        = new_cs;
         sub_data->start_offs = 0;
         sub_data->end_offs   = new_cs->base.size;
-        sub_data->name       = Parrot_str_copy(interp, name);
+        sub_data->name       = name;
 
         *error_message = NULL;
     }
@@ -935,11 +935,13 @@
     IMCC_push_parser_state(interp);
     {
         /* Store a copy, in order to know how to free it later */
-        char *copyname = mem_sys_strdup(fullname);
+        char *copyname                 = mem_sys_strdup(fullname);
         IMCC_INFO(interp)->state->file = copyname;
         ext                            = strrchr(copyname, '.');
     }
-    IMCC_INFO(interp)->line        = 1;
+
+    /* start over; let the start of line rule increment this to 1 */
+    IMCC_INFO(interp)->line = 0;
 
     /*
      * the Parrot_str_compare() called from pmc_type() triggers GC

Modified: branches/compact_pool_revamp/compilers/imcc/pbc.c
==============================================================================
--- branches/compact_pool_revamp/compilers/imcc/pbc.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/imcc/pbc.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -983,31 +983,32 @@
     ASSERT_ARGS(add_const_str)
 
     PackFile_ConstTable *table = interp->code->const_table;
-    STRING * const s = IMCC_string_from_reg(interp, r);
-    int k = -1;
+    STRING * const       s     = IMCC_string_from_reg(interp, r);
     int i;
+
     for (i = 0; i < table->const_count; ++i) {
         PackFile_Constant * const constant = table->constants[i];
         if (constant->type == PFC_STRING) {
             STRING * const sc = constant->u.string;
-            if (Parrot_charset_number_of_str(interp, s) ==
-                    Parrot_charset_number_of_str(interp, sc) &&
-                    Parrot_encoding_number_of_str(interp, s) ==
-                    Parrot_encoding_number_of_str(interp, sc) &&
-                    Parrot_str_equal(interp, s, sc)) {
-                k = i;
-                break;
+            if (Parrot_charset_number_of_str(interp, s)
+            ==  Parrot_charset_number_of_str(interp, sc)
+            &&  Parrot_encoding_number_of_str(interp, s)
+            ==  Parrot_encoding_number_of_str(interp, sc)
+            &&  Parrot_str_equal(interp, s, sc)) {
+                return i;
             }
         }
     }
-    if (k < 0) {
-        PackFile_Constant * constant;
-        k = add_const_table(interp);
-        constant = table->constants[k];
-        constant->type     = PFC_STRING;
-        constant->u.string = s;
+
+    /* otherwise... */
+    {
+        int                k        = add_const_table(interp);
+        PackFile_Constant *constant = table->constants[k];
+        constant->type              = PFC_STRING;
+        constant->u.string          = s;
+
+        return k;
     }
-    return k;
 }
 
 
@@ -1336,8 +1337,10 @@
         unit->subid = r;
     else {
         /* trim the quotes  */
+        char *oldname     = unit->subid->name;
         unit->subid->name = mem_sys_strdup(unit->subid->name + 1);
         unit->subid->name[strlen(unit->subid->name) - 1] = 0;
+        mem_sys_free(oldname);
 
         /* create string constant for it. */
         unit->subid->color = add_const_str(interp, unit->subid);
@@ -1536,13 +1539,14 @@
 build_key(PARROT_INTERP, ARGIN(SymReg *key_reg))
 {
     ASSERT_ARGS(build_key)
-#define KEYLEN 21
-    SymReg   *reg;
+#define MAX_KEY_LEN 10
+#define MAX_KEYNAME_LEN 20
+    SymReg   *reg = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
 
-    char      s_key[KEYLEN * 10];
-    opcode_t  key[KEYLEN + 1]; /* [0] -> length, [1..] -> keys */
+    char      s_key[MAX_KEY_LEN * MAX_KEYNAME_LEN];
+    opcode_t  key[MAX_KEY_LEN * 2 + 1];
     opcode_t  size;
-    int       key_length;     /* P0["hi;there"; S0; 2] has length 3 */
+    int       key_length = 0;     /* P0["hi;there"; S0; 2] has length 3 */
     int       k;
 
     /* 0 is length */
@@ -1552,15 +1556,14 @@
     char     *s  = s_key;
 
     *s           = 0;
-    reg          = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
 
     for (key_length = 0; reg ; reg = reg->nextkey, key_length++) {
         SymReg *r = reg;
         int     type;
 
-        if ((pc - key - 2) >= KEYLEN)
+        if (key_length >= MAX_KEY_LEN)
             IMCC_fatal(interp, 1, "build_key:"
-                    "key too complex increase KEYLEN\n");
+                    "Key too long, increase MAX_KEY_LEN.\n");
 
         /* if key is a register, the original sym is in r->reg */
         type = r->type;

Deleted: branches/compact_pool_revamp/compilers/json/Defines.mak
==============================================================================
--- branches/compact_pool_revamp/compilers/json/Defines.mak	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,6 +0,0 @@
-JSON_LIB_PBCS = compilers/json/JSON.pbc
-JSON_CLEANUPS = $(JSON_LIB_PBCS) \
-    compilers/json/JSON/grammar.pir \
-    compilers/json/JSON/pge2pir.pir \
-    compilers/json/JSON/grammar.pbc \
-    compilers/json/JSON/pge2pir.pbc

Deleted: branches/compact_pool_revamp/compilers/json/JSON.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/json/JSON.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,83 +0,0 @@
-# Copyright (C) 2005-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-JSON (JavaScript Object Notation) is a lightweight data-interchange format.
-
-=head1 SYNOPSIS
-
-Given a valid JSON string, the compiler will return a PMC containing the
-appropriate values. For example:
-
- .local pmc JSON
- JSON = compreg 'JSON'
- $P0 = JSON('[1,2,3]')
-
-Will create a pmc that C<does> array, contains the values 1, 2, and 3, and
-store it in register C<$P0>.
-
-For more information about the structure of the JSON representation, see the
-documentation at L<http://www.json.org/>.
-
-=cut
-
-.namespace [ 'JSON' ]
-
-.sub '__onload' :load
-    load_bytecode 'PGE.pbc'
-    load_bytecode 'PGE/Util.pbc'
-    load_bytecode 'TGE.pbc'
-
-    load_bytecode 'compilers/json/JSON/grammar.pbc'
-    load_bytecode 'compilers/json/JSON/pge2pir.pbc'
-
-    $P1 = get_global '__compiler'
-    compreg "JSON", $P1
-
-    $P1 = new 'Hash'
-    $P1['\"'] = '"'
-    $P1['\\'] = "\\"
-    $P1['\/'] = '/'
-    $P1['\b'] = "\b"
-    $P1['\f'] = "\f"
-    $P1['\n'] = "\n"
-    $P1['\r'] = "\r"
-    $P1['\t'] = "\t"
-
-    set_root_global [ 'JSON' ], '$escapes', $P1
-.end
-
-.sub '__compiler'
-    .param string json_string
-
-   .local pmc parse, match
-   parse = get_root_global ['parrot'; 'JSON'], 'value'
-
-   $P0 = get_root_global ['parrot'; 'PGE'], 'Match'
-   match = $P0.'new'(json_string)
-   match.'to'(0)
-   match = parse(match)
-   unless match goto failed
-
-   .local pmc pirgrammar, pirbuilder, pir
-   pirgrammar = new ['JSON'; 'PIR']
-   pirbuilder = pirgrammar.'apply'(match)
-   pir = pirbuilder.'get'('result')
-
-   .local pmc pirc, result
-   pirc = compreg "PIR"
-   result = pirc(pir)
-   .tailcall result()
-
-  failed:
-   $P0 = new 'Exception'
-   $P0[0] = "invalid JSON value"
-   throw $P0
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/compilers/json/JSON/grammar.pg
==============================================================================
--- branches/compact_pool_revamp/compilers/json/JSON/grammar.pg	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,38 +0,0 @@
-# From http://www.json.org/
-
-grammar JSON;
-
-rule object { '{' <members>?  '}' }
-rule array  { '[' ']' | '[' <elements> ']' }
-rule string { \"<char>*\" }
-
-rule  members { <string> ':' <value> [',' <string> ':' <value> ]* }
-
-rule  elements { <value> [',' <value> ]* }
-
-token value {
-  | <object>
-  | <array>
-  | <string>
-  | <number>
-  | true
-  | false
-  | null
-  | <?PGE::Util::die 'not a valid JSON value'>
-}
-
-# XXX need to add "except control char" to the final charclass here.
-token char {
-  | \\<["\\/bfnrt]>
-  | \\u<xdigit>**{4}
-  | <-[\\"]>
-}
-
-token number {
- <.ws>
- '-'?
- [ <[1..9]> <[0..9]>+ | <[0..9]> ]
- [ '.' <[0..9]>+ ]?
- [ <[Ee]> <[+\-]>? <[0..9]>+ ]?
- <.ws>
-}

Deleted: branches/compact_pool_revamp/compilers/json/JSON/pge2pir.tg
==============================================================================
--- branches/compact_pool_revamp/compilers/json/JSON/pge2pir.tg	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,210 +0,0 @@
-grammar JSON::PIR is TGE::Grammar;
-
-transform result (ROOT) {
-    .local pmc pir
-    .local string result
-
-    $S0 = tree.'get'('pir', node, 'value')
-
-    pir = new 'CodeString'
-    pir.'emit'('.sub anon :anon')
-    pir.'emit'($S0)
-    result = node['ret']
-    pir.'emit'('    .return (%0)',result)
-    pir.'emit'('.end')
-
-   .return(pir)
-}
-
-transform pir (value) {
-
-    .local pmc sub_node, transform_result
-    .local pmc pir, result
-    .local string value, type
-
-    type = 'string'
-    sub_node = node[type]
-    unless null sub_node goto got_type
-
-    type = 'number'
-    sub_node = node[type]
-    unless null sub_node goto got_type
-
-    type = 'object'
-    sub_node = node[type]
-    unless null sub_node goto got_type
-
-    type = 'array'
-    sub_node = node[type]
-    unless null sub_node goto got_type
-
-    value = node
-    if value == 'true'  goto got_true
-    if value == 'false' goto got_false
-    if value == 'null'  goto got_null
-
-    .return ('') # should never reach this.
-
-  got_type:
-    pir = tree.'get'('pir', sub_node, type)
-    $S0 = sub_node['ret']
-    node['ret'] = $S0
-    .return (pir)
-
-  got_true:
-    pir = new 'CodeString'
-    result = pir.'unique'('$P')
-    $S0 = node
-    pir.'emit'("    %0 = new 'Boolean'", result)
-    pir.'emit'('    %0 = 1', result, $S0)
-    node['ret'] = result
-    .return(pir)
-
-  got_false:
-    pir = new 'CodeString'
-    result = pir.'unique'('$P')
-    $S0 = node
-    pir.'emit'("    %0 = new 'Boolean'", result)
-    pir.'emit'('    %0 = 0', result, $S0)
-    node['ret'] = result
-    .return(pir)
-
-  got_null:
-    pir = new 'CodeString'
-    result = pir.'unique'('$P')
-    $S0 = node
-    pir.'emit'('    null %0', result)
-    node['ret'] = result
-    .return(pir)
-}
-
-transform pir (object) {
-    .local pmc pir
-    pir = new 'CodeString'
-    .local string result, child_result, key_result
-    result = pir.'unique'('$P')
-    pir.'emit'("    %0 = new 'Hash'", result)
-
-    .local pmc items
-
-    items = node['members']
-    if null items goto end
-
-    items = items[0]
-
-    .local pmc keys
-    keys  = items['string']
-    items = items['value']
-
-    .local pmc it, key_iter, child, key
-    key_iter = iter keys
-    it       = iter items
-
-    # the two iters should be in lockstep as a result of the PGE grammar
-loop:
-    unless it goto end
-    child = shift it
-    $P0 = tree.'get'('pir', child, 'value')
-    $S0 = $P0
-    pir .= $S0
-    child_result = child['ret']
-
-    key   = shift key_iter
-    $P0 = tree.'get'('pir', key, 'string')
-    $S0 = $P0
-    pir .= $S0
-    key_result = key['ret']
-
-    pir.'emit'('    %0[%1] = %2', result, key_result, child_result)
-
-
-    goto loop
-end:
-    node['ret'] = result
-
-   .return (pir)
-}
-
-transform pir (array) {
-    .local pmc pir
-    pir = new 'CodeString'
-    .local string result, child_result
-    result = pir.'unique'('$P')
-    pir.'emit'("    %0 = new 'ResizablePMCArray'", result)
-
-    .local pmc items
-
-
-    items = node['elements']
-    if null items goto end
-
-    items = items['value']
-
-    .local pmc it, child
-    it = iter items
-loop:
-    unless it goto end
-    child = shift it
-    $P0 = tree.'get'('pir', child, 'value')
-    $S0 = $P0
-    pir .= $S0
-
-    child_result = child['ret']
-    pir.'emit'('    push %0, %1', result, child_result)
-    goto loop
-end:
-    node['ret'] = result
-
-   .return (pir)
-}
-
-transform pir (string) {
-    .local pmc pir, result, children, it, child
-    .local string tmp
-    tmp = ''
-    pir = new 'CodeString'
-    children = node['char']
-    if null children goto loop_end
-    it = iter children
-  loop:
-    push_eh loop_end
-      child = shift it
-    pop_eh
-    unless child goto loop_end
-    $S0 = child
-    $I0 = length $S0
-    if $I0 == 1 goto char
-    if $I0 == 2 goto escape
-  unicode:
-    $P1 = new 'String'
-    $S1 = substr $S0, 2, 4
-    $P1 = $S1
-    $I0 = $P1.'to_int'(16)
-    $S0 = chr $I0
-    goto char
-  escape:
-    $P0 = get_root_global [ 'JSON' ],  '$escapes'
-    $S0 = $P0[$S0]
-  char:
-    tmp .= $S0
-    goto loop
-  loop_end:
-
-    result = pir.'unique'('$P')
-    $S1 = pir.'escape'(tmp)
-    pir.'emit'("    %0 = new 'String'", result)
-    pir.'emit'('    %0 = %1', result, $S1)
-    node['ret'] = result
-   .return(pir)
-}
-
-transform pir (number) {
-    .local pmc pir, result
-    pir = new 'CodeString'
-    result = pir.'unique'('$P')
-    $S0 = node
-    pir.'emit'("    %0 = new 'Integer'", result)
-    pir.'emit'('    %0 = %1', result, $S0)
-    node['ret'] = result
-   .return(pir)
-}

Deleted: branches/compact_pool_revamp/compilers/json/Rules.mak
==============================================================================
--- branches/compact_pool_revamp/compilers/json/Rules.mak	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,16 +0,0 @@
-compilers/json/JSON.pbc : \
-    $(LIBRARY_DIR)/PGE.pbc \
-    $(LIBRARY_DIR)/PGE/Util.pbc \
-    $(LIBRARY_DIR)/TGE.pbc \
-    compilers/json/JSON/grammar.pbc \
-    compilers/json/JSON/pge2pir.pbc \
-    compilers/json/JSON.pir
-	$(PARROT) -o $@ compilers/json/JSON.pir
-
-compilers/json/JSON/grammar.pir : compilers/json/JSON/grammar.pg \
-    $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc
-	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc --output=$@ compilers/json/JSON/grammar.pg
-
-compilers/json/JSON/pge2pir.pir : compilers/json/JSON/pge2pir.tg \
-    $(LIBRARY_DIR)/TGE.pbc
-	$(PARROT) compilers/tge/tgc.pir --output=$@ compilers/json/JSON/pge2pir.tg

Deleted: branches/compact_pool_revamp/compilers/ncigen/MAINTAINER
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/MAINTAINER	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,4 +0,0 @@
-# $Id$
-
-N: Kevin Tew
-E: kevintew at tewk.com

Deleted: branches/compact_pool_revamp/compilers/ncigen/NCIGEN.TODO
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/NCIGEN.TODO	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,6 +0,0 @@
-Add option to generate dlfuncs for certain h files not all includes.
-*** Allow typedefs and structs with the same name in the symbol table.
-Generate ManagedStructs definitions for structs and typedefs.
-Generate parrot_builtin_type entries in the AST such as INT NUM STR o PMC
-Add -I include support to ncigen.pl
-Convert ncigen.pl to ncigen.pir

Deleted: branches/compact_pool_revamp/compilers/ncigen/NCIGENP6.pm
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/NCIGENP6.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,147 +0,0 @@
-#!/home/tewk/srcs/parrot/perl6
-
-# $Id$
-# Copyright (C) 2008, Parrot Foundation.
-
-use v6;
-class NCIGENAST::FuncDecl {
-}
-
-evalfile('./ncigen.pbc', lang => 'Parrot');
-
-sub parse_ast($fn) {
-    my $pp_fn = mktempfile('ptemp');
-
-    run("gcc -x c -E $fn > $pp_fn");
-    my $compiler = compreg('NCIGEN');
-    my $match = $compiler.parse(slurp($pp_fn));
-    unlink $pp_fn;
-    $match.ast;
-}
-
-sub compreg {
-    my $a = q:PIR { %r = compreg 'NCIGEN' };
-    return $a;
-}
-
-sub mktempfile($prefix) {
-    sub nonce() { ".{$*PID}." ~ int 1000.rand }
-    $prefix ~ nonce;
-}
-
-sub gen_preamble($nsname, $libname) {
-    my $fmt = ".namespace ['$nsname']\n";
-    $fmt ~= ".sub __load_lib_dlfunc_init__ :anon :init :load\n";
-
-    if $libname {
-        $fmt ~= "loadlib \$P1, '$libname'\nif \$P1 goto has_lib\n";
-    }
-    else {
-        $fmt ~= "\$P1 = null\ngoto has_lib\n";
-    }
-
-    $fmt ~=
-        qq{{\$P2 = new 'Exception'
-\$P2[0] = 'error loading $libname - loadlib failed'
-throw \$P2
-has_lib:
-}};
-
-    return $fmt;
-}
-
-sub gen_postamble() {
-    return ".end\n";
-}
-
-sub dump_node($node) {
-    say "====================================================";
-    say $node.perl;
-    for ($node.list) -> $x {
-        say $x.perl;
-    }
-}
-
-=begin
-multi sub pir($node) {
-    say $node.WHAT;
-    return  pir_children($node);
-}
-=end
-
-#multi sub pir(NCIGENAST::TypeDef $node) { return ""; }
-#multi sub pir(NCIGENAST::VarDecl $node) { return ""; }
-multi sub pir(NCIGENAST::FuncDecl $node) {
-## return type
-    my $type = param_to_code($node, 1);
-
-##  get list of arguments to operation
-    for ($node.list()) -> $x {
-        $type ~= param_to_code($x);
-    }
-    return ($node.name, $type, $node.source());
-}
-
-sub format_func_decl($pirname, $cname, $type) {
-    return qq{{dlfunc \$P2, \$P1, '$cname', '$type'
-store_global '$pirname', \$P2}};
-}
-
-sub param_to_code($node, $returncode = 0) {
-    my $pt = $node.'primitive_type'();
-
-    if ($node.pointer()) {
-        if ($node.pointer_cnt() > 1 ) { return "V"; } #out params
-        given $pt {
-          when 'void' {
-            if ($returncode) { return "p"; } #probably should be "V"
-            else { return "p"; }
-          }
-          when 'int'    { return "V"; }
-          when 'long'   { return "V"; }
-          when 'char'   { return "t"; }
-          when 'short'  { return "V"; }
-          when 'double' { return "V"; }
-          when 'floag'  { return "V"; }
-          default {
-=begin
-            say "ERROR";
-            say $node.perl;
-            say "what is this";
-=end
-              return "p";
-          }
-        }
-    }
-    else {
-        given $pt {
-            when 'void' {
-                if ($returncode) { return ""; } # void return code
-                else { return "v"; }
-            }
-            when 'int'      { return "i"; }
-            when 'long'     { return "l"; }
-            when 'char'     { return "c"; }
-            when 'short'    { return "s"; }
-            when 'double'   { return "d"; }
-            when 'floag'    { return "f"; }
-            default         { return "p"; }
-        }
-    }
-}
-
-sub pir_children($node) {
-    my $code = "";
-    for ($node.kv) -> $k, $v {
-        $code ~= pir($v);
-    }
-    return $code;
-}
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab ft=perl6 shiftwidth=2
-
-

Deleted: branches/compact_pool_revamp/compilers/ncigen/README
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/README	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,9 +0,0 @@
-./nci_gen.pl is currently written to run on Linux, feel free to add portability if you wish
-
-./nci_gen.pl also requires the perl module IPC::Run3
-
-EXAMPLES:
-perl ./nci_gen.pl postgres/spi.h              - PARSE SUCCESSFUL
-perl ./nci_gen.pl /usr/include/sqlite3.h      - PARSE SUCCESSFUL
-perl ./nci_gen.pl /usr/include/X11/Xlib.h     - PARSE SUCCESSFUL
-perl ./nci_gen.pl /usr/include/mysql/mysql.h  - PARSE SUCCESSFUL

Deleted: branches/compact_pool_revamp/compilers/ncigen/config/makefiles/ncigen.in
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/config/makefiles/ncigen.in	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,115 +0,0 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
-## $Id$
-
-## arguments we want to run parrot with
-PARROT_ARGS =
-
-## configuration settings
-BUILD_DIR     = @build_dir@
-LOAD_EXT      = @load_ext@
-O             = @o@
-
-## Setup some commands
-LN_S          = @lns@
-PERL          = @perl@
-RM_RF         = @rm_rf@
-CP            = @cp@
-PARROT        = ../../parrot at exe@
-CAT           = @cat@
-RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-
-## places to look for things
-PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
-PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
-NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
-
-PMC_DIR       = src/pmc
-
-all: ncigen.pbc
-
-SOURCES = ncigen.pir \
-  src/gen_grammar.pir \
-  src/gen_actions.pir \
-  src/gen_builtins.pir \
-  src/NCIGENAST.pir \
-  src/NCIPIR.pir
-
-BUILTINS_PIR = \
-  src/builtins/say.pir \
-
-# PMCS = c
-# PMC_SOURCES = $(PMC_DIR)/c.pmc
-
-# the default target
-ncigen.pbc: $(PARROT) $(SOURCES)
-	$(PARROT) $(PARROT_ARGS) -o ncigen.pbc ncigen.pir
-
-src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
-	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
-	    --output=src/gen_grammar.pir \
-	    src/parser/grammar.pg
-
-src/gen_actions.pir: $(NQP) $(PCT) src/parser/actions.pm
-	$(PARROT) $(PARROT_ARGS) $(NQP) --output=src/gen_actions.pir \
-	    --target=pir src/parser/actions.pm
-
-src/gen_builtins.pir: $(BUILTINS_PIR)
-	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
-
-# This is a listing of all targets, that are meant to be called by users
-help:
-	@echo ""
-	@echo "Following targets are available for the user:"
-	@echo ""
-	@echo "  all:               ncigen.pbc"
-	@echo "                     This is the default."
-	@echo "Testing:"
-	@echo "  test:              Run the test suite."
-	@echo "  testclean:         Clean up test results."
-	@echo ""
-	@echo "Cleaning:"
-	@echo "  clean:             Basic cleaning up."
-	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
-	@echo "  distclean:         Removes also anything built, in theory"
-	@echo ""
-	@echo "Misc:"
-	@echo "  help:              Print this help message."
-	@echo ""
-
-test: all
-	$(PERL) t/harness
-
-# this target has nothing to do
-testclean:
-
-CLEANUPS = \
-  ncigen.pbc \
-  src/gen_grammar.pir \
-  src/gen_actions.pir \
-  src/gen_builtins.pir \
-  $(PMC_DIR)/*.h \
-  $(PMC_DIR)/*.c \
-  $(PMC_DIR)/*.dump \
-  $(PMC_DIR)/*$(O) \
-  $(PMC_DIR)/*$(LOAD_EXT) \
-  $(PMC_DIR)/*.exp \
-  $(PMC_DIR)/*.ilk \
-  $(PMC_DIR)/*.manifest \
-  $(PMC_DIR)/*.pdb \
-  $(PMC_DIR)/*.lib \
-
-
-clean:
-	$(RM_RF) $(CLEANUPS)
-
-realclean: clean
-	$(RM_RF) Makefile
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Deleted: branches/compact_pool_revamp/compilers/ncigen/lib/Parrot/Test/NCIGENAST.pm
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/lib/Parrot/Test/NCIGENAST.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,167 +0,0 @@
-# $Id$
-# Copyright (C) 2006-2008, Parrot Foundation.
-
-package Parrot::Test::NCIGENAST;
-
-
-use strict;
-use warnings;
-
-use Cwd;
-use File::Spec;
-use File::Basename;
-use Parrot::Test;
-use Data::Dumper;
-
-use Parrot::Config;
-
-require Exporter;
-require Test::Builder;
-require Test::More;
-
-our @EXPORT = qw( ast parse plan skip like istypedef ispointer decl_ident_is type_is is_builtin parse_failure parse_success contains);
-our @EXPORT_OK = qw();
-
-use base qw( Exporter );
-
-# Memoize functions with a fixed output
-# Memoize::memoize('path_to_parrot');
-#
-# # Tell parrot it's being tested--disables searching of installed libraries.
-# # (see Parrot_get_runtime_prefix in src/library.c).
-# $ENV{PARROT_TEST} = 1 unless defined $ENV{PARROT_TEST};
-#
-my $builder = Test::Builder->new();
-
-our $ME = new();
-$ME->{builder}        = $builder;
-$ME->{path_to_parrot} = Parrot::Test::path_to_parrot();
-$ME->{parrot}         = File::Spec->join( $ME->{path_to_parrot}, 'parrot' . $PConfig{exe} );
-our $results;
-
-
-sub import {
-    my ( $class, $plan, @args ) = @_;
-
-    $builder->plan( $plan, @args );
-
-    __PACKAGE__->export_to_level( 1, __PACKAGE__ );
-}
-
-*plan = \&Test::More::plan;
-*skip = \&Test::More::skip;
-
-=head1 Parrot::Test::C99
-
-Provide language specific testing routines here...
-
-This is currently alarmingly similar to the generated subs in Parrot::Test.
-Perhaps someone can do a better job of delegation here.
-
-=cut
-
-sub new {
-    return bless {};
-}
-
-sub ast {
-  my ( $code ) = @_;
-  $results = $ME->ncigenit($code, '--target=nci_ast');
-}
-
-sub parse {
-  my ( $code ) = @_;
-  $results = $ME->ncigenit($code, '--target=parse');
-}
-
-sub like {
-    return $ME->testit('like', @$results, @_);
-}
-
-sub istypedef {
-  return like( qr/NCIGENAST;TypeDef/, @_);
-}
-sub ispointer {
-  return like( qr/<pointer> => 1/, @_);
-}
-
-sub decl_ident_is {
-  my $id = shift @_;
-  return like( qr/<name> => \"$id/, @_);
-}
-sub type_is {
-  my $id = shift @_;
-  return like( qr/<type> => \"$id/, @_);
-}
-sub is_builtin{
-  return like( qr/<builtin_type> => 1/, @_);
-}
-
-sub contains {
-  my $it = shift @_;
-  return like( qr/$it/, @_);
-}
-
-sub parse_failure {
-  $ME->{builder}->ok( $results->[3] == 1, @_ );
-}
-
-sub parse_success {
-  my $code = shift @_;
-  $results = $ME->ncigenit($code, '--target=parse');
-  $ME->{builder}->ok( $results->[3] == 0, @_ );
-}
-
-sub ncigenit {
-    my ( $self, $code, $ncigenargs ) = @_;
-
-    my $count = $self->{builder}->current_test + 1;
-    my $parrotdir       = dirname $self->{parrot};
-
-    my @fns = map { File::Spec->rel2abs( Parrot::Test::per_test( $_, $count ) ) } ( '.c', '.out' );
-    my ( $lang_f, $out_f ) = @fns;
-
-    Parrot::Test::write_code_to_file( $code, $lang_f );
-
-    my $args = $ENV{TEST_PROG_ARGS} || '';
-
-    my $cmd       = "$self->{parrot} $args $parrotdir/compilers/ncigen/ncigen.pbc $ncigenargs $lang_f";
-    my $exit_code = Parrot::Test::run_command(
-            $cmd,
-            CD     => $self->{relpath},
-            STDOUT => $out_f,
-            STDERR => $out_f
-            );
-    my $output = Parrot::Test::slurp_file($out_f);
-
-    unless ( $ENV{POSTMORTEM} ) {
-        unlink $lang_f;
-        unlink $out_f;
-    }
-
-    my @results = ($code, $cmd, $output, $exit_code, $count);
-    wantarray ? return @results : return [ @results ];
-}
-
-sub testit {
-    my ( $self, $method, $code, $cmd, $output, $exit_code, $count, $expected, $desc ) = @_;
-    #print "$cmd, $exit_code, $count, $expected, $desc \n";
-
-    $desc = "NCIGENAST Test $count" unless $desc;
-    my $pass = $self->{builder}->$method( $output, $expected, $desc );
-    if ($exit_code or not $pass)  {
-      $self->{builder}->diag("'$cmd' failed with exit code $exit_code") if $exit_code or not $pass;
-      $self->{builder}->diag("CODE:\n$code"."CODE");
-    }
-
-    return $pass;
-}
-
-1;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/compilers/ncigen/ncigen.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/ncigen.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,138 +0,0 @@
-# $Id$
-# Copyright (C) 2008, Parrot Foundation.
-
-=head1 TITLE
-
-ncigen.pir - A NCI stub compiler.
-
-=head2 Description
-
-This is the base file for the NCI stub compiler.
-
-This file includes the parsing and grammar rules from
-the src/ directory, loads the relevant PGE libraries,
-and registers the compiler under the name 'NCIGEN'.
-
-=head2 Functions
-
-=over 4
-
-=item onload()
-
-Creates the C compiler using a C<PCT::HLLCompiler>
-object.
-
-=cut
-
-.namespace [ 'NCIGEN';'Compiler' ]
-
-.loadlib 'ncigen_group'
-
-.sub 'onload' :anon :load :init
-    load_bytecode 'PCT.pbc'
-
-    .local pmc p6meta
-    p6meta = new 'P6metaclass'
-    p6meta.'new_class'('NCIGEN::Compiler', 'parent'=>'PCT::HLLCompiler')
-.end
-
-=item main(args :slurpy)  :main
-
-Start compilation by passing any command line C<args>
-to the C compiler.
-
-=cut
-
-.sub 'init' :vtable :method
-    self.'language'('NCIGEN')
-    self.'parsegrammar'('C99::Grammar')
-    self.'parseactions'('NCIGEN::Grammar::Actions')
-    $P0 = split ' ', 'parse nci_ast gen_nci_pir'
-    setattribute self, '@stages', $P0
-    $P0 = split ' ', 'e=s help|h target=s trace|t=s encoding=s output|o=s combine version|v libname|l=s nsname|n=s raw|r'
-    setattribute self, '@cmdoptions', $P0
-
-    ##  set the $usage attribute
-    $P0 = new 'String'
-    $P0 = <<'USAGE'
-Usage: ncigen [switches] [--] [preprocessedfile] [arguments]
-  -l, --libname        library to load symbols from
-  -n  --nsname         pir namepsace to place symbols into
-  -r  --raw            dump dlfunc pir statements only
-
-Standard HLLCompiler Options:
-  -e program           one line of program
-  -h, --help           display this help text
-  --target=[stage]     specify compilation stage to emit
-  -t, --trace=[flags]  enable trace flags
-  --encoding=[mode]    specify string encoding mode
-  -o, --output=[name]  specify name of output file
-  -v, --version        display version information
-USAGE
-    setattribute self, '$usage', $P0
-.end
-
-.sub 'main' :main
-    .param pmc args
-    $P0 = compreg 'NCIGEN'
-    $P2 = $P0.'command_line'(args)
-.end
-
-.namespace [ 'PCT';'HLLCompiler' ]
-
-.sub 'nci_ast' :method
-    .param pmc source
-    .param pmc adverbs         :slurpy :named
-
-  compile_match:
-    push_eh err_past
-    .local pmc ast
-    ast = source.'item'()
-    pop_eh
-    $I0 = isa ast, ['NCIGENAST';'Decls']
-    unless $I0 goto err_past
-    .return (ast)
-
-  err_past:
-    $S0 = typeof source
-    .tailcall self.'panic'('Unable to obtain NCIGENAST from ', $S0)
-.end
-
-.sub 'gen_nci_pir' :method
-    .param pmc source
-    .param pmc adverbs         :slurpy :named
-
-    $P0 = compreg 'NCIPIR'
-    $P1 = $P0.'to_pir'(source, adverbs :flat :named)
-    say $P1
-    .return ($P1)
-.end
-
-
-.include 'src/NCIGENAST.pir'
-.include 'src/NCIPIR.pir'
-.include 'src/gen_builtins.pir'
-.include 'src/gen_grammar.pir'
-.include 'src/gen_actions.pir'
-
-
-.namespace [ 'C99';'Grammar' ]
-
-.sub 'debug'
-    .param pmc match
-    .param pmc arg
-    .param pmc attrs :slurpy
-    printerr arg
-    printerr "\n"
-.end
-
-=back
-
-=cut
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
-

Deleted: branches/compact_pool_revamp/compilers/ncigen/ncigen.pl
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/ncigen.pl	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,102 +0,0 @@
-#! perl
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use Getopt::Long;
-use Pod::Usage;
-use File::Temp;
-use File::Spec;
-use IPC::Run3;
-
-my $man = 0;
-my $help = 0;
-my $PARROT = "../../parrot";
-my ($incpaths,$libname,$nsname);
-
-GetOptions('help|?'   => \$help,
-            man       => \$man,
-            libname   => \$libname,
-            nsname    => \$nsname,
-            "I=s@"    => \$incpaths) or pod2usage(2);
-pod2usage(1) if $help;
-pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-
-#sub usage()
-
-sub cc_preprocess {
-  my ($file) = @_;
-  my ($volume, $directories, $fileonly) = File::Spec->splitpath( $file );
-  print "$fileonly\n";
-
-  my $ofile = mktemp( $fileonly . "_XXXX");
-  #execit("gcc -x c -fdirectives-only -E $file > $ofile");
-  execit("gcc -x c -E $file > $ofile");
-  return $ofile;
-}
-
-sub gen_NCI_signatures {
-  my ( $file, $more_args ) = @_;
-  return execit("make; $PARROT ncigen.pbc $more_args $file");
-}
-
-sub execit {
-  my ($cmd) = @_;
-  print "$cmd\n";
-  my $output = `$cmd`;
-  return $output;
-}
-
-sub main {
-  my $more_args = "";
-  $ARGV[0] = 't/spi.c' unless $ARGV[0];
-  $libname = "libexamplelib"      unless $libname;
-  $nsname  = "CLIB::examplelib"   unless $nsname;
-
-  #$more_args = "--target=parse --libname=fred --nsname=GO::Mojo";
-  $more_args = "--libname=$libname --nsname=$nsname";
-  my $preproc_fn = cc_preprocess($ARGV[0]);
-
-  my $nci_sigs = gen_NCI_signatures($preproc_fn, $more_args);
-  unlink($preproc_fn);
-  print $nci_sigs;
-}
-
-main();
-
-__END__
-
-=head1 NAME
-
-sample - Using nci_gen.pl
-
-=head1 SYNOPSIS
-
-nci_gen [options] [file ...]
-
-Options:
--help            brief help message
--man             full documentation
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<-help>
-
-Print a brief help message and exits.
-
-=item B<-man>
-
-Prints the manual page and exits.
-
-=back
-
-=head1 DESCRIPTION
-
-B<nci_gen> will read the given input file c header file and create a pir interface file.
-
-=cut
-

Deleted: branches/compact_pool_revamp/compilers/ncigen/src/NCIGENAST.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/src/NCIGENAST.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,332 +0,0 @@
-# $Id$
-
-=head1 NAME
-
-NCIGENAST - NCIGEN abstract syntax tree
-
-=head1 DESCRIPTION
-
-This file implements the various abstract syntax tree nodes
-for doing syntax analysis on c99 programs.
-
-=cut
-
-.namespace [ 'NCIGENAST';'Node' ]
-
-.sub 'onload' :anon :load :init
-    ##   create the NCIGENAST::Node base class
-    .local pmc p6meta, base, vardecl
-    p6meta = new 'P6metaclass'
-    base = p6meta.'new_class'('NCIGENAST::Node', 'parent'=>'PCT::Node')
-
-    vardecl = p6meta.'new_class'('NCIGENAST::VarDecl', 'parent'=>base)
-    p6meta.'new_class'('NCIGENAST::Decls',     'parent'=>base)
-
-    p6meta.'new_class'('NCIGENAST::TypeDef',   'parent'=>vardecl)
-    p6meta.'new_class'('NCIGENAST::FuncDecl',  'parent'=>vardecl)
-    p6meta.'new_class'('NCIGENAST::Param',     'parent'=>vardecl)
-    p6meta.'new_class'('NCIGENAST::Struct',    'parent'=>vardecl)
-    p6meta.'new_class'('NCIGENAST::Union',     'parent'=>vardecl)
-
-    .return ()
-.end
-
-.sub 'clone' :method
-    $P0 = clone self
-    .return ($P0)
-.end
-
-.sub 'item' :method
-    .return (self)
-.end
-
-=head1 NCIGENAST Node types
-
-=head2 NCIGENAST::Node
-
-C<NCIGENAST::Node> is the base class for all NCIGENAST nodes, and is
-derived from PCT::Node.  A node has an array component to
-hold its children, and a hash component for its attributes.
-However, we tend to use accessor methods for accessing the node's
-attributes instead of accessing the hash directly.
-
-Every NCIGENAST node inherits C<name>, C<source>, and C<pos> attributes
-from C<PCT::Node>.  The C<name> attribute is the node's name, if
-any, while C<source> and C<pos> are used to identify the location
-in the original source code for the node.  The C<source> and C<pos>
-values are generally set by the C<node> method inherited from
-C<PCT::Node>.
-
-Other node attributes are generally defined by subclasses of C<NCIGENAST::Node>.
-
-=over 4
-
-=item returns([value])
-
-Accessor method -- sets/returns the return type for the invocant.
-
-=cut
-
-.sub 'returns' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('returns', value, has_value)
-.end
-
-
-=item arity([value])
-
-Accessor method -- sets/returns the arity (number of expected arguments)
-for the node.
-
-=cut
-
-.sub 'arity' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('arity', value, has_value)
-.end
-
-
-=item named([value])
-
-Accessor method -- for named arguments, sets/returns the name to be
-associated with the argument.
-
-=cut
-
-.sub 'named' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('named', value, has_value)
-.end
-
-
-=item flat([value]
-
-Accessor method -- sets/returns the "flatten" flag on arguments.
-
-=cut
-
-.sub 'flat' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('flat', value, has_value)
-.end
-
-
-=back
-
-=head2 NCIGENAST::TypeDef
-
-C<NCIGENAST::Val> nodes represent constant values in the abstract
-syntax tree.  The C<name> attribute represents the value of the
-node.
-
-=over 4
-
-=item value([value])
-
-Get/set the constant value for this node.
-
-=cut
-
-.namespace [ 'NCIGENAST';'TypeDef' ]
-
-.sub 'value' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('value', value, has_value)
-.end
-
-=back
-
-=head2 NCIGENAST::Var
-
-C<NCIGENAST::Var> nodes represent variables within the abstract
-syntax tree.  The variable name (if any) is given as the node's
-C<name> attribute.
-
-=over 4
-
-=item scope([value])
-
-Get/set the NCIGENAST::Var node's "scope" (i.e., how the variable
-is accessed or set).  Allowable values include "package", "lexical",
-"parameter", and "keyed", representing HLL global, lexical, block
-parameter, and array/hash variables respectively.
-
-=cut
-
-.namespace [ 'NCIGENAST';'VarDecl' ]
-
-.sub 'source' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('source', value, has_value)
-.end
-
-.sub 'type' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('type', value, has_value)
-.end
-
-.sub 'extern' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('extern', value, has_value)
-.end
-
-.sub 'pointer' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('pointer', value, has_value)
-.end
-
-.sub 'builtin_type' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('builtin_type', value, has_value)
-.end
-
-.sub 'complex' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('complex', value, has_value)
-.end
-
-.sub 'primitive_type' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('primitive_type', value, has_value)
-.end
-
-.sub 'pointer_cnt' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('pointer_cnt', value, has_value)
-.end
-
-.sub 'scope' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('scope', value, has_value)
-.end
-
-
-=item isdecl([flag])
-
-Get/set the node's C<isdecl> attribute (for lexical variables) to C<flag>.
-A true value of C<isdecl> indicates that the variable given by
-this node is to be created within the current lexical scope.
-Otherwise, the node refers to a lexical variable from an outer scope.
-
-=cut
-
-.sub 'isdecl' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('isdecl', value, has_value)
-.end
-
-
-=item lvalue([flag])
-
-Get/set the C<lvalue> attribute, which indicates whether this
-variable is being used in an lvalue context.
-
-=cut
-
-.sub 'lvalue' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('lvalue', value, has_value)
-.end
-
-
-=item namespace([namespace])
-
-Get/set the variable's namespace attribute to the array of strings
-given by C<namespace>.  Useful only for variables with a C<scope>
-of 'package'.
-
-=cut
-
-.sub 'namespace' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('namespace', value, has_value)
-.end
-
-
-=item slurpy([flag])
-
-Get/set the node's C<slurpy> attribute (for parameter variables) to C<flag>.
-A true value of C<slurpy> indicates that the parameter variable given by this
-node is to be created as a slurpy parameter (consuming all remaining arguments
-passed in).
-
-=cut
-
-.sub 'slurpy' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('slurpy', value, has_value)
-.end
-
-
-=item viviself([type])
-
-If the variable needs to be instantiated, then C<type> indicates
-either the type of the value to create for the node or (future
-implementation) a NCIGENAST tree to create the value.
-
-=cut
-
-.sub 'viviself' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('viviself', value, has_value)
-.end
-
-
-=item vivibase([type])
-
-For keyed nodes, C<type> indicates the type of aggregate to
-create for the base if the base doesn't specify its own 'viviself'
-attribute.
-
-=cut
-
-.sub 'vivibase' :method
-    .param pmc value           :optional
-    .param int has_value       :opt_flag
-    .tailcall self.'attr'('vivibase', value, has_value)
-.end
-
-
-=back
-
-=head2 NCIGENAST::Op
-
-C<NCIGENAST::Op> nodes represent the operations in an abstract syntax
-tree.  The primary function of the node is given by its C<pasttype>,
-secondary functions may be given by the node's C<name>, C<pirop>,
-or other attributes.
-
-
-=head1 HISTORY
-
-
-=head1 COPYRIGHT
-
-Copyright (C) 2006-2008, Parrot Foundation.
-
-=cut
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/compilers/ncigen/src/NCIPIR.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/src/NCIPIR.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,367 +0,0 @@
-# $Id$
-
-=head1 NAME
-
-NCIPIR::Compiler - NCI PIR Compiler for NCIGENAST trees.
-
-=head1 DESCRIPTION
-
-NCIPIR::Compiler defines a compiler that converts a NCIGENAST tree into PIR
-
-=head1 METHODS
-
-=over
-
-=cut
-
-.namespace [ 'NCIPIR';'Compiler' ]
-
-.sub '__onload' :load :init
-    .local pmc p6meta, cproto
-    p6meta = new 'P6metaclass'
-    cproto = p6meta.'new_class'('NCIPIR::Compiler', 'parent'=>'PCT::HLLCompiler', 'attr'=>'$!code')
-    cproto.'language'('NCIPIR')
-    $P1 = split ' ', 'pir evalpmc'
-    cproto.'stages'($P1)
-
-    $P0 = new 'String'
-    set_global '$?NAMESPACE', $P0
-    .return ()
-.end
-
-
-.sub 'to_pir' :method
-    .param pmc ast
-    .param pmc adverbs         :slurpy :named
-
-    .local pmc newself
-    newself = new ['NCIPIR';'Compiler']
-
-    ##  start with empty code
-    .local pmc code
-    code = new 'CodeString'
-    newself.'code'(code)
-
-    ##  if the root node isn't a Sub, wrap it
-    $I0 = isa ast, ['NCIGENAST';'Decls']
-    if $I0 goto have_sub
-    $P0 = get_hll_global ['NCIGENAST'], 'Decls'
-    ast = $P0.'new'(ast, 'name'=>'anon')
-  have_sub:
-
-    .local string raw
-
-    raw = adverbs['raw']
-    if raw goto Lgenpir
-    $P0 = newself.'gen_preamble'(adverbs :flat :named)
-  Lgenpir:
-    ##  now generate the pir
-    newself.'pir'(ast)
-
-    ##  and return whatever code was generated
-    .tailcall newself.'code'()
-.end
-
-.sub 'gen_preamble' :method
-    .param pmc adverbs         :slurpy :named
-    .local string nsname
-    .local string libname
-    .local string fmt
-
-    nsname = adverbs['nsname']
-    libname = adverbs['libname']
-
-fmt = <<'FMT'
-.namespace ['%n']
-.sub __load_lib_dlfunc_init__ :anon :init :load
-FMT
-
-    .local pmc code
-    code = new 'CodeString'
-    code.'emit'(fmt, 'n'=>nsname)
-    if null libname goto LNOLIBNAME
-fmt = <<'FMT'
-loadlib $P1, '%l'
-if $P1 goto has_lib
-FMT
-    goto LEMITLIBNAME
-  LNOLIBNAME:
-fmt = <<'FMT'
-$P1 = null
-goto has_lib
-FMT
-  LEMITLIBNAME:
-    code.'emit'(fmt, 'l'=>libname)
-
-
-fmt = <<'FMT'
-$P2 = new 'Exception'
-$P2[0] = 'error loading %l - loadlib failed'
-throw $P2
-has_lib:
-FMT
-    code.'emit'(fmt, 'l'=>libname)
-    $P0 = self.'code'()
-    $P0 .= code
-    .return(code)
-.end
-
-
-=item code([str])
-
-Get/set the code generated by this compiler.
-
-=cut
-
-.sub 'code' :method
-    .param pmc code            :optional
-    .param int has_code        :opt_flag
-
-    if has_code goto set_code
-    code = getattribute self, '$!code'
-    .return (code)
-  set_code:
-    setattribute self, '$!code', code
-    .return (code)
-.end
-
-
-=item pir_children(node)
-
-Return generated PIR for C<node> and all of its children.
-
-=cut
-
-.sub 'pir_children' :method
-    .param pmc node
-    .local pmc code, it
-    code = new 'CodeString'
-    it   = iter node
-  iter_loop:
-    unless it goto iter_end
-    .local string key
-    .local pmc cast
-    key = shift it
-    cast = node[key]
-    $P0 = self.'pir'(cast)
-    code .= $P0
-    goto iter_loop
-  iter_end:
-    .return (code)
-.end
-
-
-=item pir(Any node)
-
-Return generated pir for any POST::Node.  Returns
-the generated pir of C<node>'s children.
-
-=cut
-
-.sub 'pir' :method :multi(_,_)
-    .param pmc node
-    .local string code
-    code = self.'pir_children'(node)
-    $P0 = self.'code'()
-    $P0 .= code
-    .return ($P0)
-.end
-
-
-=item pir(POST::Op node)
-
-Return pir for an operation node.
-
-=cut
-
-.sub 'pir' :method :multi(_,['NCIGENAST';'FuncDecl'])
-    .param pmc node
-
-    ##  get list of arguments to operation
-    .local pmc arglist
-    arglist = node.'list'()
-
-    .local string fmt, name, type
-    type = param_to_code(node, 1)
-
-    .local pmc itera
-    .local pmc param
-    iter itera, arglist
-    LIS:
-    unless itera, LI0
-    param = shift itera
-    $S0 = param_to_code(param)
-    #say $S0
-    type .= $S0
-    goto LIS
-
-    LI0:
-    name = node.'name'()
-    fmt = "dlfunc $P2, $P1, '%n', '%s'\nstore_global '%n', $P2"
-
-    #$S0 = "##"
-    #$S1 = node.'attr'('source', '', 0)
-    #$S0 .= $S1
-    #print $S0
-
-    .local pmc code
-    code = new 'CodeString'
-    code.'emit'(fmt, 's'=>type, 'n'=>name)
-    #$S0 = code
-    #say $S0
-
-    .return (code)
-.end
-
-.sub 'param_to_code'
-  .param pmc node
-  .param int returncode :optional
-  $I0 = node.'pointer'()
-  $I2 = node.'pointer_cnt'()
-  $S0 = node.'primitive_type'()
-
-
-  if $I0, LPOINTER
-
-  iseq $I1, $S0, 'void'
-  unless $I1, LL2
-  if returncode, LL11
-    .return("")
-  LL11:
-    .return("v")
-  LL2:
-  iseq $I1, $S0, 'int'
-  unless $I1, LL3
-    .return("i")
-  LL3:
-  iseq $I1, $S0, 'long'
-  unless $I1, LL4
-    .return("l")
-  LL4:
-  iseq $I1, $S0, 'char'
-  unless $I1, LL5
-    .return("c")
-  LL5:
-  iseq $I1, $S0, 'short'
-  unless $I1, LL6
-    .return("s")
-  LL6:
-    .return("p")
-
-  LPOINTER:
-  isgt $I3, $I2, 1
-  if $I3, LL18 # pointer_cnt > 1
-
-  iseq $I1, $S0, 'void' #void *
-  unless $I1, LL7
-  if returncode, LL111
-    .return("p")
-  LL111:
-    .return("p")
-#    .return("V") #probably should be this
-  LL7:
-  iseq $I1, $S0, 'char' #char *
-  unless $I1, LL8
-    .return("t")
-  LL8:
-  iseq $I1, $S0, 'int' #int *
-  unless $I1, LL13
-    .return("V")
-  LL13:
-  iseq $I1, $S0, 'long' #long *
-  unless $I1, LL14
-    .return("V")
-  LL14:
-  iseq $I1, $S0, 'short' #short *
-  unless $I1, LL15
-    .return("V")
-  LL15: #struct *, typedef *,
-    say "ERROR"
-    say $S0
-    say "what is this"
-    .return("p")
-
-#something **
-  LL18:
-    .return("V")
-.end
-
-=item pir(POST::Label node)
-
-Generate a label.
-
-=cut
-
-.sub 'pir' :method :multi(_, ['NCIGENAST';'TypeDef'])
-    .param pmc node
-    .return ('')
-    .tailcall pir_dump(node)
-.end
-
-=item pir(POST::Label node)
-
-Generate a label.
-
-=cut
-
-.sub 'pir' :method :multi(_, ['NCIGENAST';'VarDecl'])
-    .param pmc node
-    .return ('')
-    .tailcall pir_dump(node)
-.end
-
-=item pir(POST::Label node)
-
-Generate a label.
-
-=cut
-
-.sub 'pir_dump'
-    .param pmc node
-    .local string code
-    code = '#'
-    code .= 'typedef '
-    $S0 = node.'type'()
-    code .= $S0
-    code .= ' '
-    $S0 = node.'name'()
-    code .= $S0
-    $S0 = node.'builtin_type'()
-    unless $S0 goto LN1
-    code .= ' builtin '
-    code .= $S0
-  LN1:
-    $S0 = node.'pointer'()
-    unless $S0 goto LN2
-    code .= ' pointer '
-    code .= $S0
-  LN2:
-    code .= ":\n"
-    print code
-    .return ('')
-.end
-
-
-=back
-
-=head1 AUTHOR
-
-Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
-Please send patches and suggestions to the Parrot porters or
-Perl 6 compilers mailing lists.
-
-=head1 HISTORY
-
-2007-11-21  Significant refactor as part of Parrot Compiler Toolkit
-
-=head1 COPYRIGHT
-
-Copyright (C) 2006-2008, Parrot Foundation.
-
-=cut
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/compilers/ncigen/src/builtins/say.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/src/builtins/say.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,85 +0,0 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
-# $Id$
-
-=head1
-
-say.pir -- simple implementation of a say function
-
-=cut
-
-.namespace []
-
-.sub 'say'
-    .param pmc args            :slurpy
-    .local pmc it
-    it = iter args
-  iter_loop:
-    unless it goto iter_end
-    $P0 = shift it
-    print $P0
-    goto iter_loop
-  iter_end:
-    print "\n"
-    .return ()
-.end
-
-.sub 'printf'
-    .param pmc format
-    .param pmc args   :slurpy
-    .local pmc it
-    it = iter args
-  iter_loop:
-    unless it goto iter_end
-    $P0 = shift it
-    print $P0
-    goto iter_loop
-  iter_end:
-.end
-
-.sub 'puts'
-    .param pmc str
-    print str
-    print "\n"
-.end
-
-.sub 'infix:<'
-    .param pmc a
-    .param pmc b
-    islt $I0, a, b
-    .return ($I0)
-.end
-
-.sub 'postfix:++'
-    .param pmc arg
-    $P0 = clone arg
-    inc $P0
-    .return (arg)
-.end
-
-.sub 'postfix:--'
-    .param pmc arg
-    $P0 = clone arg
-    dec $P0
-    .return (arg)
-.end
-
-.sub 'prefix:++'
-    .param pmc arg
-    inc arg
-    .return (arg)
-.end
-
-.sub 'prefix:--'
-    .param pmc arg
-    dec arg
-    .return (arg)
-.end
-
-
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
-

Deleted: branches/compact_pool_revamp/compilers/ncigen/src/parser/actions.pm
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/src/parser/actions.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,261 +0,0 @@
-# $Id$
-# Copyright (C) 2008, Parrot Foundation.
-
-=begin comments
-
-NCIGEN::Grammar::Actions - ast transformations for NCIGEN
-
-This file contains the methods that are used by the parse grammar
-to build the PAST representation of an C program.
-Each method below corresponds to a rule in F<src/parser/grammar.pg>,
-and is invoked at the point where C<{*}> appears in the rule,
-with the current match object as the first argument.  If the
-line containing C<{*}> also has a C<#= key> comment, then the
-value of the comment is passed as the second argument to the method.
-
-=end comments
-
-
-class NCIGEN::Grammar::Actions;
-
-our $decls := NCIGENAST::Decls.new();
-our $NCIGENDEBUG :=0;
-
-method TOP($/) {
-    if $NCIGENDEBUG { _dumper($decls); }
-    make $decls;
-}
-
-sub parse_decl_specs($/, $ast) {
-    if $/ {
-        for $/ {
-            $ast.attr( strip_spaces(~$_), 1, 1);
-        }
-    }
-}
-
-sub typedef($/) {
-    if $/ {
-        for $/ {
-            if ('typedef' eq strip_spaces(~$_) ) { return 1; }
-        }
-    }
-    return 0;
-}
-
-method declaration($/) {
-    my $ast := NCIGENAST::VarDecl.new() ;
-    my $type := "";
-
-#    say("=================================================================================================");
-#    _dumper($/);
-#    make $decls;
-#    return 1;
-    my $decl_specs := $<declaration_specifiers><repeatable_declaration_specifiers>;
-    if typedef($decl_specs) {
-        $ast := NCIGENAST::TypeDef.new( );
-        $type := "TypeDef";
-    }
-    elsif $/<init_declarator><init_declarator><declarator><direct_declarator><declarator_suffix><declarator_suffix><parameter_type_list> {
-        $ast := NCIGENAST::FuncDecl.new( );
-        $type := "FuncDecl";
-    }
-#    elsif $<declaration_specifiers><type_specifier><type> {
-#        $ast := NCIGENAST::Struct.new( :node($/) );
-#        $type := "Struct";
-#    }
-    else {
-        $ast := NCIGENAST::VarDecl.new( );
-        $type := "VarDecl";
-    }
-    parse_decl_specs( $<declaration_specifiers><repeatable_declaration_specifiers>, $ast );
-
-    #  TYPE
-    settype($<declaration_specifiers><type_specifier>, $ast);
-
-    if ($type eq "FuncDecl") {
-        if (+$<init_declarator> != 1) {
-            say("ERROR FuncDecl has more than one <init_declarator>");
-        }
-
-        #assert(+$<init_declarator><declarator><direct_declarator><declarator_suffix>  == 1);
-        my $params := $<init_declarator><declarator><declarator><direct_declarator><declarator_suffix><parameter_type_list><parameter_type_list><parameter_list><parameter_declaration>;
-        for $params {
-            my $param := NCIGENAST::Param.new( );
-
-            settype($_<declaration_specifiers><type_specifier>, $param);
-            my $param_ident := $_<declarator>;
-            if $param_ident { setname( $_, $param ); }
-            ispointer($_, $param);
-            $ast.push( $param );
-        }
-        my $declarator := $<init_declarator><declarator>;
-        my $name := setname($declarator, $ast);
-        $decls{ $name } := $ast;
-        ispointer($declarator, $ast);
-        #if $NCIGENDEBUG { _dumper($ast); }
-        #say($name);
-    }
-    #elsif ($type eq "VarDecl") {
-    #elsif $<init_declarator> {
-    else {
-        for $<init_declarator> {
-            my $l_ast := $ast.clone();
-
-            my $name := setname($_, $l_ast);
-            $decls{ $name } := $l_ast;
-            ispointer($_, $l_ast);
-            #if $NCIGENDEBUG { _dumper($l_ast); }
-            #say($name);
-        }
-    }
-    #else {
-    #    say("OPAQUE STRUCT OR UNTION");
-    #    _dumper($/);
-    #}
-
-    make $decls;
-}
-
-sub countpointer($/) {
-    if $<pointer> {
-        return countpointer($<pointer>) + 1;
-    }
-    else {
-        return 0;
-    }
-}
-
-sub ispointer($/, $ast) {
-    if $/ {
-        if ($<declarator><pointer>)  {
-            $ast.pointer(1);
-            $ast.pointer_cnt(countpointer($<declarator><pointer>));
-        }
-        if ($<abstract_declarator><pointer>)  {
-            $ast.pointer(1);
-            $ast.pointer_cnt(countpointer($<abstract_declarator><pointer>));
-        }
-    }
-
-    my $lookup_ast := $ast;
-    repeat {
-=begin comment
-        if $lookup_ast.pointer() {
-            $ast.pointer(1);
-            my $pc := +$ast.pointer_cnt();
-            $pc++;
-            $ast.pointer_cnt($pc);
-        }
-=end comment
-
-        if $lookup_ast.builtin_type() {
-            $ast.primitive_type(~($lookup_ast.type()));
-            return 1;
-        }
-        my $type_name := $lookup_ast.type();
-        my $lookup_ast_name := $lookup_ast.name();
-
-        #FIXME struct or union typedef
-        if ($lookup_ast.name() eq $type_name) {
-            return 1;
-        }
-
-        $lookup_ast := $decls{$type_name};
-        unless $lookup_ast {
-            #say("Parent " ~~ $lookup_ast_name ~~ " " ~~ $type_name ~~ " not defined");
-            return 1;
-        }
-        if $lookup_ast.pointer() {
-            $ast.pointer(1);
-            my $pc := +$ast.pointer_cnt();
-            $pc := $pc + $lookup_ast.pointer_cnt();
-            $ast.pointer_cnt($pc);
-        }
-    } while (1);
-    #_dumper($ast);
-}
-
-sub settype($/, $ast) {
-    if $/ {
-        #is it a struct or union
-        my $struct_or_union := strip_spaces(~$<type>);
-        if $struct_or_union {
-            my $ident := $<struct_or_union_specifier><identifier><identifier>;
-            if $ident {
-                $ident := strip_spaces(~$ident);
-            }
-            else {
-                $ident := $<struct_or_union_specifier><identifier>;
-                if $ident {
-                    $ident := strip_spaces(~$ident);
-                }
-                else {
-                    $ident := "anonymous_" ~~ $struct_or_union~~ "1";
-                }
-            }
-            $ast.type($ident);
-            my $s_or_u := $<struct_or_union_specifier><struct_declaration>;
-            if $s_or_u {
-                my $su;
-                if ($struct_or_union eq "struct" ) {
-                    $su := NCIGENAST::Struct.new( );
-                }
-                else {
-                    $su := NCIGENAST::Union.new( );
-                }
-                $su.name($ident);
-                build_struct_or_union($s_or_u, $su);
-                $ast.complex($su);
-            }
-        }
-        else {
-            $ast.type(strip_spaces(~$/));
-            #  BUILTIN_TYPE
-            if $<builtin_type> { $ast.builtin_type(1); }
-        }
-    }
-    else {
-        say("ERROR no type specifier");
-    }
-}
-
-sub strip_spaces($_) {
-    $_.replace(' ', '');
-    return $_;
-}
-
-sub build_struct_or_union($/, $ast) {
-    for $/ {
-        my $smt := NCIGENAST::VarDecl.new( );
-        settype( $_<specifier_qualifier_list><type_specifier>, $smt );
-        for $_<struct_declarator_list> {
-            my $sm := $smt.clone();
-            my $declarator := $_<struct_declarator><declarator>;
-            $sm.name(strip_spaces(~$declarator));
-            ispointer($declarator, $sm);
-            $ast.push($sm);
-        }
-    }
-}
-
-sub setname($/, $ast) {
-    my $name_node := $<declarator><direct_declarator><declarator_prefix>;
-    if $name_node {
-        $ast.name( ~$name_node );
-        return ~$name_node;
-    }
-    else {
-        say("ERROR node doesn't have <direct_declarator><declarator_prefix>");
-        _dumper($/);
-    }
-}
-
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 syntax=perl6:
-

Deleted: branches/compact_pool_revamp/compilers/ncigen/src/parser/grammar.pg
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/src/parser/grammar.pg	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,775 +0,0 @@
-# $Id$
-# Copyright (C) 2008, Parrot Foundation.
-
-=begin overview
-
-This is the grammar for C99 written as a sequence of Perl 6 rules.
-
-
-taken from n869.pdf
-google for n869.pdf
-http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n869/n869.pdf.gz
-
-=end overview
-
-grammar C99::Grammar is PCT::Grammar;
-
-## A.2.4 External definitions
-##
-## {{ _dumper(match) }}
-
-token TOP {
-    ^
-    <external_declaration>+
-    [ $ || <.panic: Syntax error> ]
-    {*}
-}
-
-rule external_declaration {
-    | <declaration> {*}                                   #= declaration
-    | <function_definition> {*}                           #= function_definition
-#    <declaration_specifiers>
-#    [
-#    | <declaration2>
-#    | <func_decl2>
-#    ]
-}
-
-rule func_decl2 {
-    <declarator>
-    <declaration>*
-    <compound_statement>
-    {*}
-}
-
-rule declaration2 {
-    [ <init_declarator> [',' <init_declarator>]* ]?
-    ';'
-    {*}
-}
-
-rule function_definition {
-    <declaration_specifiers>
-    <declarator>
-    <declaration>*
-    <compound_statement>
-    {*}
-}
-
-
-## A.2.2
-##
-
-rule declaration {
-    <declaration_specifiers>
-    [ <init_declarator> [',' <init_declarator>]* ]?
-    ';'
-    {*}
-}
-
-rule declaration_specifiers {
-    <repeatable_declaration_specifiers>*
-    <type_specifier>
-    <repeatable_declaration_specifiers>*
-    {*}
-}
-#rule declaration_specifiers_orig { [ <storage_class_specifier> | <type_specifier> | <type_qualifier> | <function_specifier> ]+ {*} }
-#rule declaration_specifiers { [ <declaration_specifiers_inside> ]+ {*} }
-#rule declaration_specifiers_inside { [ <storage_class_specifier> | <type_specifier> | <type_qualifier> | <function_specifier> ] {{ _dumper(match) }} }
-token builtin_type_specifier { 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | '_Bool' | '_Complex' | '_Imaginary' }
-
-
-rule repeatable_declaration_specifiers {
-    [
-    | <storage_class_specifier>
-    | <type_qualifier>
-    | <function_specifier>
-    ]
-}
-
-rule function_specifier {
-    | 'inline'
-    | '__inline__'
-}
-
-rule init_declarator {
-    <declarator> ['=' <initializer>]?
-    {*}
-}
-
-rule storage_class_specifier {
-    [
-    | $<typedef>=['typedef']                    {*} #= typedef
-    | $<extern>=['extern']                      {*} #= extern
-    | $<static>=['static']                      {*} #= static
-    | $<auto>=['auto']                          {*} #= auto
-    | $<register>=['register']                  {*} #= register
-    | $<__extension__>=['__extension__']        {*} #= __extension__
-    ]
-}
-
-rule type_specifier {
-    #| <builtin_type_specifier>
-    | <builtin_type>
-    | $<type>=[ 'struct' | 'union' ] <struct_or_union_specifier>
-    | 'enum' <enum_specifier>
-    | $<typedef_name>=<identifier>
-}
-
-token builtin_type {
-  [
-    [
-      $<signed>=[ 'signed' | 'unsigned' ] <.ws> 
-    ]?
-    [
-    | 'void'
-    | 'char'
-    | 'short' <.ws> 'int' >>
-    | 'short'
-    | 'int'
-    | 'long' <.ws> 'long' <.ws> 'int' >>
-    | 'long' <.ws> 'long' >>
-    | 'long' <.ws> 'int' >>
-    | 'long' <.ws> 'double' >>
-    | 'long'
-    | 'float'
-    | 'double'
-    | '_Bool'
-    | '_Complex'
-    | '_Imaginary'
-    ]
-    >>
-  | 'unsigned'
-  | 'signed'
-  ]
-}
-
-rule struct_or_union_specifier {
-    | <identifier>? '{' <struct_declaration>+ '}'
-    | <identifier>
-}
-
-rule struct_declaration {
-    <specifier_qualifier_list> <struct_declarator_list>* ';'
-}
-
-rule specifier_qualifier_list {
-    <type_qualifier>*
-    <type_specifier>
-    <type_qualifier>*
-#    [
-#    | <type_specifier>
-#    | <type_qualifier>
-#    ]+
-}
-
-rule struct_declarator_list {
-    <struct_declarator> [',' <struct_declarator>]*
-}
-
-rule struct_declarator {
-    | <declarator>? ':' <constant_expression>
-    | <declarator>
-}
-
-rule enum_specifier {
-    | <identifier>? '{' <enumerator_list> [',']? '}'
-    | <identifier>
-}
-
-rule enumerator_list {
-    <enumerator> [',' <enumerator>]*
-}
-
-rule enumerator {
-    <enumeration_constant> ['=' <constant_expression>]?
-}
-
-rule type_qualifier {
-    $<qualifier>=[
-    |'const'
-    |'restrict'
-    |'volatile'
-    |'__const'       # gcc version of const
-    |'__restrict'    # gcc version of restricted
-    |'__volatile'    # gcc version of volatile
-    |'__extension__' # gcc extension
-    ]
-}
-
-rule declarator {
-    <pointer>?
-    <direct_declarator>
-    {*}
-}
-
-rule direct_declarator {
-    <declarator_prefix>
-    <declarator_suffix>*
-    <gcc_asm>?
-    <gcc_attribute>*
-    {*}
-}
-
-rule declarator_prefix {
-    | '(' <declarator> ')' {*}       #= declarator
-    | <identifier> {*}               #= identifier
-}
-
-rule declarator_suffix {
-    | '(' <parameter_type_list> ')' {*}    #= parameter_type_list
-    | '(' <identifier_list>? ')' {*}       #= identifier_list ## old-style C parameter declarations
-    | '[' <assignment_expression>? ']'
-    | '[' '*' ']'
-}
-
-rule gcc_attribute {
-    '__attribute__' '((' <gcc_attributes_list>'))'
-}
-
-rule gcc_attributes_list {
-    [<gcc_attr> [',' <gcc_attr>]* ]?
-
-}
-
-rule gcc_attr {
-    | 'noreturn'
-    | '__noreturn__'
-    | [ 'format' | '__format__' ] '(' <gcc_attr_formats> ',' <digit>+ ',' <digit>+ ')'
-    | '__const__'
-    | '__const'
-    | '__nothrow__'
-    | '__aligned__' '(' <digit>+ ')'
-    | '__format_arg__' '(' <digit>+ ')'
-    | '__nonnull__' '(' <digit_list_plus> ')'
-    | '__mode__' '(' <gcc_attr_mode> ')'
-    | '__sentinel__' '(' <digit>+ ')'
-    | '__malloc__'
-    | '__pure__'
-    | '__warn_unused_result__'
-}
-
-rule digit_list_plus {
-  <digit>+ [',' <digit>+ ]*
-  {*}
-}
-
-
-token gcc_attr_mode {
-    | '__QI__'
-    | '__DI__'
-    | '__SI__'
-    | '__HI__'
-    | 'byte'
-    | '__byte__'
-    | 'word'
-    | '__word__'
-    | 'pointer'
-    | '__pointer__'
-}
-
-token gcc_attr_formats {
-    | printf
-    | __printf__
-    | scanf
-    | strftime
-    | gnu_printf
-    | gnu_scanf
-    | gnu_strftime
-    | strfmon
-    | __printf__
-    | __scanf__
-    | __strftime__
-    | __strfmon__
-    | ms_printf
-    | ms_scanf
-    | ms_strftime
-}
-
-rule gcc_asm {
-    [ 'asm' | '__asm__' ]
-    '('
-    [<c_string_literal> ]*
-    ')'
-}
-
-rule pointer {
-    |'*' [ <type_qualifier> ]* <pointer>
-    |'*' [ <type_qualifier> ]*
-}
-
-rule parameter_type_list {
-    <parameter_list>  [$<vararg>=[',' '...']]?
-    {*}
-}
-
-rule parameter_list {
-    <parameter_declaration> [',' <parameter_declaration>]*
-    {*}
-}
-
-rule parameter_declaration {
-    <declaration_specifiers>
-    [
-    | <declarator> {*}               #= declarator
-    | <abstract_declarator>? {*}     #= abstract_declarator
-    ]
-    <repeatable_declaration_specifiers>*
-}
-
-rule identifier_list {
-    <identifier> [',' <identifier>]*
-}
-
-rule type_name {
-    <specifier_qualifier_list> <abstract_declarator>?
-}
-
-rule abstract_declarator {
-    | <pointer>
-    | <pointer>? <direct_abstract_declarator>
-}
-
-rule direct_abstract_declarator {
-    [
-    | '(' <abstract_declarator> ')'
-    | '[' <assignment_expression>? ']'
-    | '[' '*' ']'
-    | '(' <parameter_type_list> ')'
-    ]
-    <direct_abstract_declarator_1>*
-}
-
-rule direct_abstract_declarator_1 {
-    | '[' <assignment_expression>? ']'
-    | '[' '*' ']'
-    | '(' <parameter_type_list> ')'
-}
-
-rule typedef_name_DEAD_CODE {
-
-## a typedef name can be a return type specifier. This is ambiguous, because
-## the parser doesn't know if it's a return type thingie or the name of the
-## function. Therefore, typedef'd names must be stored in a %hash, so that
-## this rule is not calling <identifier>, but inspecting the registered
-## typedef'd names. For now, specify 'SOME_TYPEDEF_NAME' as the only typedef'd name.
-##
-    <identifier>
-    #'SOME_TYPEDEF_NAME'
-}
-
-rule initializer {
-    | <assignment_expression>
-    | '{' <initializer_list> [',']? '}'
-}
-
-rule initializer_list {
-    <initializer_item> [',' <initializer_item>]*
-}
-
-rule initializer_item {
-    <designation>? <initializer>
-}
-
-rule designation {
-    <designator>+ '='
-}
-
-rule designator {
-    | '[' <constant_expression> ']'
-    | '.' <identifier>
-}
-
-
-## A.2.3 Statements
-##
-
-rule statement {
-    | <labeled_statement>
-    | <compound_statement> {*}        #= compound_statement
-    | <expression_statement> {*}      #= expression_statement
-    | <if_statement> {*}              #= if_statement
-    | <switch_statement>
-    | <while_statement> {*}           #= while_statement
-    | <do_while_statement> {*}        #= do_while_statement
-    | <for1_statement> {*}            #= for1_statement
-    | <for2_statement> {*}            #= for2_statement
-    | <jump_statement> {*}            #= jump_statement
-}
-
-rule labeled_statement {
-    | <identifier> ':' <statement>
-    | 'case' <constant_expression> ':' <statement>
-    | 'default' ':' <statement>
-}
-
-rule compound_statement {
-    '{' <block_item>* '}'
-    {*}
-}
-
-rule block_item {
-    | <declaration> {*}    #= declaration
-    | <statement> {*}      #= statement
-}
-
-rule expression_statement {
-    <expression>? ';'
-    {*}
-}
-
-rule if_statement {
-    'if' '(' <expression> ')' <statement> ['else' $<else>=<statement>]?
-    {*}
-}
-
-rule switch_statement {
-    'switch' '(' <expression> ')' <statement>
-}
-
-rule while_statement {
-    'while' '(' <expression> ')' <statement>
-    {*}
-}
-
-rule do_while_statement {
-    'do' <statement> 'while' '(' <expression> ')' ';'
-    {*}
-}
-
-rule for1_statement {
-    'for' '(' [$<init>=<expression>]? ';' [$<cond>=<expression>]? ';' [$<step>=<expression>]? ')'
-    <statement>
-    {*}
-}
-
-rule for2_statement {
-    'for' '(' <declaration> [$<cond>=<expression>]? ';' [$<step>=<expression>]? ')' <statement>
-    {*}
-}
-
-rule jump_statement {
-    | 'goto' <identifier> ';' {*}         #= goto
-    | 'continue' ';' {*}                  #= continue
-    | 'break' ';' {*}                     #= break
-    | 'return' <expression>? ';' {*}      #= return
-}
-
-
-## A.1.1 Lexical elements
-##
-##rule token {
-##  | <keyword>
-##  | <identifier>
-##  | <constant>
-##  | <c_string_literal>
-##  | <punctuator>
-##}
-
-## A.1.2 Keywords
-##
-token keyword {
-  [ auto      | enum      | restrict  | unsigned
-  | break     | extern    | return    | void
-  | case      | float     | short     | volatile
-  | char      | for       | signed    | while
-  | const     | goto      | sizeof    | _Bool
-  | continue  | if        | static    | _Complex
-  | default   | inline    | struct    | _Imaginary
-  | do        | int       | switch
-  | double    | long      | typedef
-  | else      | register  | union     ]>>
-
-}
-
-token reserved_word {
-    <keyword>
-}
-
-
-token identifier {
-    <!reserved_word>
-    <.identifier_nondigit> [ <.identifier_nondigit> | <.digit> ]*
-    {*}
-}
-
-token identifier_nondigit {
-    <alpha> | <[_]> | <universal_character_name>
-}
-
-## A.1.4 Universal character names
-##
-token universal_character_name {
-  | '\u' <xdigit>**{4}
-  | '\U' <xdigit>**{8}
-}
-
-
-## A.1.5 Constants
-##
-token constant {
-    | <floating_constant> {*}       #= floating_constant
-    | <integer_constant> {*}        #= integer_constant
-    | <enumeration_constant> {*}    #= enumeration_constant
-    | <character_constant> {*}      #= character_constant
-}
-
-token integer_constant {
-    [ <decimal_constant>
-    | <hexadecimal_constant>
-    | <octal_constant>
-    ]
-    <integer_suffix>?
-    {*}
-}
-
-token decimal_constant {
-    <[1..9]> <digit>*
-}
-
-token octal_constant {
-    0 <[0..7]>*
-}
-
-token hexadecimal_constant {
-    0 <[xX]> <xdigit>+
-}
-
-token integer_suffix {
-    | <[uU]> [ll?|LL?]?
-    | [ll?|LL?] <[uU]>?
-}
-
-token floating_constant {
-    [
-    | <decimal_floating_constant>
-    | <hexadecimal_floating_constant>
-    ]
-    {*}
-}
-
-token decimal_floating_constant {
-    [
-    | <fractional_constant> <exponent_part>?
-    | <digit_sequence> <exponent_part>
-    ]
-    <floating_suffix>?
-}
-
-token hexadecimal_prefix {
-  0 <[xX]>
-}
-
-token hexadecimal_floating_constant {
-  <hexadecimal_prefix>
-  [
-  | <hexadecimal_fractional_constant>
-  | <hexadecimal_digit_sequence>
-  ]
-  <binary_exponent_part> <floating_suffix>?
-}
-
-token fractional_constant {
-  | <digit_sequence>? \. <digit_sequence>
-  | <digit_sequence> \.
-}
-
-token exponent_part {
-  <[eE]> ['+'|'-']? <digit_sequence>
-}
-
-token digit_sequence { <digit>+ }
-
-token hexadecimal_fractional_constant {
-  | <hexadecimal_digit_sequence>? \. <hexadecimal_digit_sequence>
-  | <hexadecimal_digit_sequence> \.
-}
-
-token binary_exponent_part {
-  <[pP]> ['+'|'-']? <digit_sequence>
-}
-
-token hexadecimal_digit_sequence { <xdigit>+ }
-
-token floating_suffix { <[fFlL]> }
-
-token enumeration_constant { <identifier> }
-
-token character_constant { [L]? \' <c_char>+ \' }
-
-token <c_char> { <-['\\\n]> | <escape_sequence> }
-
-token escape_sequence {
-  \\
-  [ <['"?\\abfnrtv]>
-  | <octal_digit>**{1..3}
-  | x <xdigit>+
-  | <universal_character_name>
-  ]
-}
-
-## A.1.6 String literals
-token c_string_literal {
-    [L]? '"' <string_literal: '"'> '"'
-    {*}
-}
-
-##\" <s_char>* \"
-
-token s_char { <-["\\\n]> | <escape_sequence> }
-
-
-## A.2 Phrase structure grammar
-##
-
-## A.2.1 Expressions
-##
-
-rule constant_expression {
-    <conditional_expression>
-    {*}
-}
-
-rule expression {
-    <assignment_expression> [',' <assignment_expression>]*
-    {*}
-}
-
-rule assignment_expression {
-    [<unary_expression> <assign_op>]* <conditional_expression>
-    {*}
-}
-
-rule assign_op { '='|'*='|'/='|'%='|'+='|'-='|'<<='|'>>='|'&='|'^='|'|=' }
-
-rule conditional_expression {
-    <logical_expression> ['?' <expression> ':' <conditional_expression>]?
-    {*}
-}
-
-rule logical_expression is optable { ... }
-
-proto 'infix:||' is precedence('1') { ... }
-
-proto 'infix:&&' is tighter('infix:||') { ... }
-
-proto 'infix:|' is tighter('infix:&&') { ... }
-
-proto 'infix:^' is tighter('infix:|') { ... }
-
-proto 'infix:&' is tighter('infix:^') { ... }
-
-proto 'infix:==' is tighter('infix:&') { ... }
-proto 'infix:!=' is equiv('infix:==') { ... }
-
-proto 'infix:<' is tighter('infix:==') { ... }
-proto 'infix:>' is equiv('infix:<') { ... }
-proto 'infix:>=' is equiv('infix:<') { ... }
-proto 'infix:<=' is equiv('infix:<') { ... }
-
-proto 'infix:<<' is equiv('infix:<') { ... }
-proto 'infix:>>' is equiv('infix:<') { ... }
-
-proto 'infix:+' is tighter('infix:<<') is pirop('n_add') { ... }
-proto 'infix:-' is equiv('infix:+') is pirop('n_sub') { ... }
-
-proto 'infix:*' is tighter('infix:+') is pirop('n_mul') { ... }
-proto 'infix:/' is equiv('infix:*') is pirop('n_div') { ... }
-proto 'infix:%' is equiv('infix:*') is pirop('n_mod') { ... }
-
-proto 'term:' is tighter('infix:*')
-              is parsed(&cast_expression) { ... }
-
-
-rule postfix_expression_prefix {
-    | <primary_expression> {*}                                  #= primary_expression
-    | '(' <type_name> ')' '{' <initializer_list> [',']? '}' {*} #= #type_name
-}
-
-rule postfix_expression {
-    <postfix_expression_prefix>
-    <postfix_expression_suffix>*
-    {*}
-}
-
-rule postfix_expression_suffix {
-    | <index> {*}                           #= index
-    | <arguments>  {*}                      #= arguments
-    | <direct_field> {*}                    #= direct_field
-    | <indirect_field> {*}                  #= indirect_field
-    | <inc_or_dec> {*}                      #= inc_or_dec
-}
-
-rule inc_or_dec {
-    $<op>=['++'|'--']
-    {*}
-}
-
-rule index {
-    '[' <expression> ']'
-    {*}
-}
-
-rule direct_field {
-    '.' <identifier>
-    {*}
-}
-
-rule indirect_field {
-    '->' <identifier>
-    {*}
-}
-
-rule arguments {
-    '(' <argument_expression_list>? ')'
-    {*}
-}
-
-rule argument_expression_list {
-    <assignment_expression> [',' <assignment_expression>]*
-    {*}
-}
-
-rule unary_expression {
-    | <postfix_expression> {*}              #= postfix_expression
-    | <prefix_expression> {*}               #= prefix_expression
-    | <unary_operator> <cast_expression> {*} #= unary_operator
-    | 'sizeof' <unary_expression>        {*} #= sizeof
-    | 'sizeof' '(' <type_name> ')'       {*} #= sizeof_type
-}
-
-rule prefix_expression {
-    $<op>=['++'|'--'] <unary_expression>
-    {*}
-}
-
-rule unary_operator {
-    '&' | '*' | '+' | '-' | '~' | '!'
-}
-
-rule cast_expression {
-    ['(' <type_name> ')']* <unary_expression>
-    {*}
-}
-
-rule primary_expression {
-    | <identifier> {*}             #= identifier
-    | <constant> {*}               #= constant
-    | <c_string_literal> {*}       #= c_string_literal
-    | '(' <expression> ')' {*}     #= expression
-}
-
-token ws {
-  [
-  | '//' \N* \n
-  | '/*' .*? '*/'
-  | \s+
-  | <.gcc_preprocess_id>
-  #| ^^ '#' \N \n
-  #| '#' \N* \n {*} #= origin
-  ]*
-}
-
-token gcc_preprocess_id {
-  ^^ '#' \s+ $<line>=[<.digit>+] \s+ <c_string_literal> $<ilist>=[ \s+ <.digit>+ ]* $$ {*} #= origin
-}

Deleted: branches/compact_pool_revamp/compilers/ncigen/t/NCIGENAST/struct_00.t
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/t/NCIGENAST/struct_00.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,30 +0,0 @@
-#!perl
-# Copyright (C) 2008-2010, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use lib ('./lib', '../../lib');
-use Parrot::Test::NCIGENAST;
-
-plan tests => 1;
-ast(<<'CODE');
-typedef struct SPITupleTable
-{
-  MemoryContext tuptabcxt;  /* memory context of result table */
-  uint32    alloced;    /* # of alloced vals */
-  uint32    free;     /* # of free vals */
-  TupleDesc tupdesc;    /* tuple descriptor */
-  HeapTuple  *vals;     /* tuples */
-} SPITupleTable;
-CODE
-
-contains("<complex> => PMC 'NCIGENAST;Struct'");
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/compilers/ncigen/t/NCIGENAST/typedef_00.t
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/t/NCIGENAST/typedef_00.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,38 +0,0 @@
-#!perl
-# Copyright (C) 2008-2010, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use lib ('./lib', '../../lib');
-use Parrot::Test::NCIGENAST;
-
-plan tests => 10;
-ast('extern void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid);');
-SKIP: {
-skip("This feature is commented out");
-contains("Parent isCommit bool not defined");
-}
-
-ast('typedef void * void_pointer_type;');
-istypedef;
-ispointer;
-decl_ident_is("void_pointer_type");
-type_is("void");
-is_builtin;
-
-ast('typedef int a, b, c;');
-decl_ident_is("a");
-decl_ident_is("b");
-decl_ident_is("c");
-
-parse('int a(), b(), c()');
-parse_failure;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/compilers/ncigen/t/harness
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/t/harness	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,7 +0,0 @@
-#!/usr/bin/perl
-
-# $Id$
-
-use FindBin;
-use lib qw( . lib ../lib ../../lib ../../lib );
-use Parrot::Test::Harness language => 'ncigen'

Deleted: branches/compact_pool_revamp/compilers/ncigen/t/parse_00.t
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/t/parse_00.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,187 +0,0 @@
-#!perl
-# Copyright (C) 2008-2010, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use lib ('./lib', '../../lib');
-use Parrot::Test::NCIGENAST;
-
-plan tests => 20;
-
-parse_success(<<'CODE', '__extension__00.c');
-extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
-
-enum { MSG_OOB = 0x01 };
-__extension__ typedef signed long long int __int64_t;
-
-__extension__ typedef struct { int __val[2]; } __fsid_t;
-extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict);
-
-struct random_data
-{
-  int32_t rand_type;
-};
-
-struct _IO_FILE {
-char _unused2[15 * 6];
-char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
-};
-
-struct random_data
-{
-  int32_t rand_type;
-};
-
-int a = 8 - sizeof(int);
-char _unused2 = 15 + 6;
-int b = 12;
-int a = 10 * sizeof(int) * 13;
-int a = 8 * 3;
-typedef int Oid;
-int32_t Oid;
-int Oid;
-typedef unsigned int Oid;
-typedef union
-{
-  char __size[4];
-  int __align;
-} pthread_mutexattr_t;
-
-typedef union
-{
-  struct __pthread_mutex_s
-  {
-    int __lock;
-    unsigned int __count;
-    int __owner;
-    int __kind;
-    unsigned int __nusers;
-    __extension__ union
-    {
-      int __spins;
-      __pthread_slist_t __list;
-    };
-
-  } __data;
-  char __size[24];
-  long int __align;
-} pthread_mutex_t;
-__extension__ typedef void * __timer_t;
-CODE
-
-parse_success(<<'CODE', '__attribute__.c');
-extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
-CODE
-
-parse_success(<<'CODE', 'enums.c');
-enum { MSG_OOB = 0x01 };
-CODE
-
-parse_success(<<'CODE', '__extension__01.c');
-__extension__ typedef signed long long int __int64_t;
-CODE
-
-parse_success(<<'CODE', '__extension__02.c');
-__extension__ typedef struct { int __val[2]; } __fsid_t;
-CODE
-
-parse_success(<<'CODE', 'gnu_va_arg.c');
-extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict);
-CODE
-
-parse_success(<<'CODE', 'int_32_t_declaration.c');
-struct random_data
-{
-  int32_t rand_type;
-};
-CODE
-
-parse_success(<<'CODE', 'struct_declaration_00.c');
-struct _IO_FILE {
-char _unused2[15 * 6];
-char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
-};
-CODE
-
-parse_success(<<'CODE', 'struct_declaration_01.c' );
-struct random_data
-{
-  int32_t rand_type;
-};
-CODE
-
-parse_success(<<'CODE', 'times_01.c');
-int a = 8 - sizeof(int);
-CODE
-
-parse_success(<<'CODE', 'times_02.c');
-char _unused2 = 15 + 6;
-CODE
-
-parse_success(<<'CODE', 'times_03.c');
-int b = 12;
-int a = 10 * sizeof(int) * 13;
-CODE
-
-parse_success(<<'CODE', 'times_04.c');
-int a = 8 * 3;
-CODE
-
-parse_success(<<'CODE', 'typedef_01.c');
-typedef int Oid;
-CODE
-
-parse_success(<<'CODE', 'typedef_02.c');
-int32_t Oid;
-CODE
-
-parse_success(<<'CODE', 'typedef_03.c');
-int Oid;
-CODE
-
-parse_success(<<'CODE', 'typedef.c');
-typedef unsigned int Oid;
-CODE
-
-parse_success(<<'CODE', 'typedef_union_00.c');
-typedef union
-{
-  char __size[4];
-  int __align;
-} pthread_mutexattr_t;
-CODE
-
-parse_success(<<'CODE', 'typedef_union_01.c');
-typedef union
-{
-  struct __pthread_mutex_s
-  {
-    int __lock;
-    unsigned int __count;
-    int __owner;
-    int __kind;
-    unsigned int __nusers;
-    __extension__ union
-    {
-      int __spins;
-      __pthread_slist_t __list;
-    };
-
-  } __data;
-  char __size[24];
-  long int __align;
-} pthread_mutex_t;
-CODE
-
-parse_success(<<'CODE', 'void_star.c');
-__extension__ typedef void * __timer_t;
-CODE
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/compilers/ncigen/t/parse_01.t
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/t/parse_01.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,40 +0,0 @@
-#!perl
-# Copyright (C) 2008-2010, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use lib ('./lib', '../../lib');
-use Parrot::Test::NCIGENAST;
-
-plan tests => 5;
-
-parse_success(<<'CODE', 'typedef.c');
-typedef int (*sqlite3_callbackkk)(void*,int,char*, char*);
-CODE
-
-parse_success(<<'CODE', 'typedef.c');
-int sqlite3_callbackk(void*,int,char*, char*);
-CODE
-
-parse_success(<<'CODE', 'typedef.c');
-typedef int (*sqlite3_callback)(void*,int,char**, char**);
-CODE
-
-parse_success(<<'CODE', 'typedef.c');
-typedef struct sqlite3 sqlite3;
-CODE
-
-parse_success(<<'CODE', 'typedefstartstar.c');
-typedef struct sqlite3 sqlite3;
-int sqlite3_open( const char *filename, sqlite3 **ppDb);
-CODE
-
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/compilers/ncigen/t/parse_02.t
==============================================================================
--- branches/compact_pool_revamp/compilers/ncigen/t/parse_02.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,84 +0,0 @@
-#!perl
-# Copyright (C) 2008-2010, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use lib ('./lib', '../../lib');
-use Parrot::Test::NCIGENAST;
-
-plan tests => 2;
-
-parse_success(<<'CODE', 'Xlib.h');
-typedef struct
-
-
-
-{
- XExtData *ext_data;
- struct _XPrivate *private1;
- int fd;
- int private2;
- int proto_major_version;
- int proto_minor_version;
- char *vendor;
-        XID private3;
- XID private4;
- XID private5;
- int private6;
- XID (*resource_alloc)(
-  struct _XDisplay*
- );
- int byte_order;
- int bitmap_unit;
- int bitmap_pad;
- int bitmap_bit_order;
- int nformats;
- ScreenFormat *pixmap_format;
- int private8;
- int release;
- struct _XPrivate *private9, *private10;
- int qlen;
- unsigned long last_request_read;
- unsigned long request;
- XPointer private11;
- XPointer private12;
- XPointer private13;
- XPointer private14;
- unsigned max_request_size;
- struct _XrmHashBucketRec *db;
- int (*private15)(
-  struct _XDisplay*
-  );
- char *display_name;
- int default_screen;
- int nscreens;
- Screen *screens;
- unsigned long motion_buffer;
- unsigned long private16;
- int min_keycode;
- int max_keycode;
- XPointer private17;
- XPointer private18;
- int private19;
- char *xdefaults;
-
-}
-
-
-
-*_XPrivDisplay;
-CODE
-
-
-parse_success(<<'CODE', 'Xlib.h 2');
-extern int (*XSetAfterFunction( Display* , int (*) ( Display*)))( Display*);
-CODE
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/compilers/nqp/Defines.mak
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/Defines.mak	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,7 +0,0 @@
-NQP_LIB_PBCS = compilers/nqp/nqp.pbc
-
-NQP_CLEANUPS = \
-    compilers/nqp/nqp.pbc \
-    compilers/nqp/src/Grammar_gen.pir \
-    compilers/nqp/bootstrap/gen_actions.pir \
-    compilers/nqp/bootstrap/nqp.pbc

Deleted: branches/compact_pool_revamp/compilers/nqp/README.pod
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/README.pod	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,95 +0,0 @@
-## $Id$
-
-=head1 NQP - Not Quite Perl (6)
-
-This is "Not Quite Perl" -- a compiler for quickly generating PIR
-routines from Perl6-like code.  The key feature of NQP is that it's
-designed to be a very small compiler (as compared with, say, perl6
-or Rakudo) and is focused on being a high-level way to create 
-transformers for Parrot (especially hll compilers).  In addition, 
-unlike Rakudo, NQP attempts to restrict itself to generating code 
-that can run in Parrot without the existence of any NQP-specific 
-runtime libraries.
-
-One way that NQP aims to be a lighter version of Perl 6 is by
-avoiding syntactic sugar and "dwimminess" that isn't needed
-for the types of routines that are written.  Sometimes this
-makes coding a bit more work, but it also lowers the learning
-curve somewhat.
-
-
-=head2 Things that NQP has (or should have)
-
-This list isn't exhaustive; for now it's intended to identify the
-language constructs that we explicitly know will be supported
-
-=over 4
-
-=item * scalars
-
-=item * binding
-
-=item * lexical 'my', package 'our'
-
-=item * method calls (including named, optional, and slurpy arguments)
-
-=item * subroutine calls (including named, optional, and slurpy arguments)
-
-=item * method definitions
-
-=item * subroutine definitions
-
-=item * '...'                 # string constants
-
-=item * "..."                 # string value with escapes (non-interpolating)
-
-=item * postcircumfix:<[ ]>   # array subscript
-
-=item * postcircumfix:<{ }>   # hash subscript
-
-=item * postcircumfix:«< >»   # constant hash subscript
-
-=item * $<...>                # constant hash subscript of $/
-
-=item * $(...)                # scalar context
-
-=item * prefix:~              # string context
-
-=item * prefix:+              # numeric context
-
-=item * say(), print()        # output
-
-=item * if/unless             # conditional
-
-=item * for                   # iterative loop
-
-=item * PIR q<>, PIR q:to:<END> # inline PIR
-
-=back
-
-=head2 Things that aren't in NQP
-
-There are a large number of Perl 6 constructs and idioms that
-aren't supported or expected to be supported in NQP.  This
-is by design -- the point of NQP is to provide a lightweight
-HLL for generating PIR subroutines while adhering to a Perl 6
-syntax.
-
-Some items not planned for NQP:
-
-=over 4
-
-=item * string interpolation
-
-=item * listops
-
-=item * quoted lists
-
-=item * array and hash slices
-
-=back
-
-Of course, if we later decide that some item is vitally
-important for NQP programs, we can add it -- but for now
-the point is to maintain a minimal set of constructs.
-

Deleted: branches/compact_pool_revamp/compilers/nqp/Rules.mak
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/Rules.mak	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,21 +0,0 @@
-compilers/nqp/nqp.pbc : compilers/nqp/src/builtins.pir \
-    compilers/nqp/src/Grammar/Actions.pir \
-    compilers/nqp/src/Grammar_gen.pir \
-    $(LIBRARY_DIR)/PCT.pbc \
-    $(LIBRARY_DIR)/PGE.pbc
-
-compilers/nqp/src/Grammar_gen.pir : $(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pir compilers/nqp/src/Grammar.pg $(LIBRARY_DIR)/PCT/HLLCompiler.pbc $(LIBRARY_DIR)/PGE.pbc
-	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pir --output=$@ compilers/nqp/src/Grammar.pg
-
-# Developer target to regnerate bootstrap. Unused?
-nqp-boot: \
-    compilers/nqp/bootstrap/nqp.pir \
-    compilers/nqp/bootstrap/gen_actions.pir
-
-compilers/nqp/bootstrap/gen_actions.pir : $(PARROT) \
-    compilers/nqp/nqp.pbc \
-    compilers/nqp/bootstrap/actions.pm
-	$(PARROT) compilers/nqp/nqp.pbc --output=$@ --target=pir \
-	    compilers/nqp/bootstrap/actions.pm
-
-compilers/nqp/bootstrap/nqp.pbc : $(LIBRARY)/PCT.pbc

Deleted: branches/compact_pool_revamp/compilers/nqp/TODO.pod
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/TODO.pod	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,84 +0,0 @@
-## $Id$
-
-=head1 Things that NQP needs
-
-This list is based on discussions with pmichaud and unimplemented
-items in the grammar, C<src/Grammar.pg>.
-
-Last updated: 2007-11-24
-
-=head2 Code
-
-=over 4
-
-=item * C<&> sigil
-
-Handle the mapping between C<&foo> and 'foo' subroutines.
-
-=item * C<return> statement
-
-While it seems like implementing C<return> would be a simple
-matter of generating PIR C<.return> statements, it's not quite
-that simple, because C<return> statements can occur inside of
-nested blocks.
-
-So, we need an NQP C<return> statement to throw a "return exception",
-which is then caught by the outermost block of the currently
-executing subroutine and then used as the argument to C<.return>.
-
-Fortunately, the new design of S05 means that we don't really need
-return statements for developing action grammars, so this is no
-longer as much of a priority as it was.
-
-=back
-
-=head2 Tests
-
-=over 4
-
-=item * More tests for method ops
-
-We should be able to load an external module (Pm suggests Test.pbc)
-and exercise methods using that.
-
-=item * Match variable access C<$/>
-
-=item * More tests for scalar context $( ... )
-
-=item * More tests for list context @( ... )
-
-=item * Variables with twigils
-
-=item * More tests for optional arguments and parameters
-
-=item * More tests for named arguments and parameters
-
-=back
-
-=head2 Bootstrap
-
-The directory C<bootstrap> contains the necessary files to implement NPQ
-in NQP. While this is not a major goal, it is interesting to compare the
-speed of NQP implemented in PIR and in NQP. For this to work, some things
-must be fixed. The bootstrap version can be tested with
-
-  cd bootstrap && perl t/harness
-
-=over 4
-
-=item * it seems that the action for the C<for-statement> is broken.
-
-=item * NQP should not have a runtime containing support routines. The
-original NQP (in PIR) implements all operators as PIR instructions. This
-should also be the case for the bootstrapped NQP. Currently, the optable
-action does not handle the "inline" specifications.
-
-=item * Some actions are not complete. For instance, the action method
-C<package_declarator>, where classes can be defined.
-
-=item * the NQP compiler driver should accept a commandline option indicating
-which Actions object should be used: the PIR or NQP version. HLLCompiler
-has support for adding commandline options, this could be used.
-
-=back
-

Deleted: branches/compact_pool_revamp/compilers/nqp/bootstrap/actions.pm
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/bootstrap/actions.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,1035 +0,0 @@
-# Copyright (C) 2008-2008, Parrot Foundation.
-# $Id$
-
-
-
-
-class NQP::Grammar::Actions;
-
-
-method TOP($/) {
-    my $past := $($<statement_block>);
-    $past.blocktype('declaration');
-    make $past;
-}
-##.sub 'TOP' :method
-##    .param pmc match
-##    .local pmc past
-##    $P0 = match['statement_block']
-##    past = $P0.'get_scalar'()
-##    past.'blocktype'('declaration')
-##    match.'result_object'(past)
-##.end
-
-
-#### Blocks and Statements ####
-
-method statement_block($/, $key) {
-    our $?BLOCK;
-    our @?BLOCK;
-    if ($key eq 'open') {
-        $?BLOCK := PAST::Block.new( PAST::Stmts.new( :node($/) ),
-                                    :blocktype('immediate'),
-                                    :node($/) );
-        @?BLOCK.unshift($?BLOCK);
-    }
-    else {
-        my $past := @?BLOCK.shift();
-        $?BLOCK := @?BLOCK[0];
-        $past.push($($<statement_list>));
-        make $past;
-    }
-}
-##.sub 'statement_block' :method
-##    .param pmc match
-##    .param string key
-##    if key == 'close' goto block_close
-##  block_open:
-##    .local pmc past
-##    $P1 = get_hll_global ['PAST'], 'Stmts'
-##    $P2 = $P1.'new'()
-##    $P0 = get_hll_global ['PAST'], 'Block'
-##    past = $P0.'new'($P2, 'blocktype'=>'immediate', 'node'=>match)
-##    set_global '$?BLOCK', past
-##    $P0 = get_global '@?BLOCK'
-##    unshift $P0, past
-##    .return ()
-##  block_close:
-##    $P0 = get_global '@?BLOCK'
-##    past = shift $P0
-##    $P1 = $P0[0]
-##    set_global '$?BLOCK', $P1
-##    $P2 = match['statement_list']
-##    $P3 = $P2.'get_scalar'()
-##    past.'push'($P3)
-##    match.'result_object'(past)
-##.end
-
-
-method statement_list($/) {
-    my $past := PAST::Stmts.new(:node($/));
-    for $<statement> {
-        $past.push($($_));
-    }
-    make $past;
-}
-##.sub 'statement_list' :method
-##    .param pmc match
-##    .local pmc past
-##    $P0 = get_hll_global ['PAST'], 'Stmts'
-##    past = $P0.'new'('node'=>match)
-##    $P1 = match['statement']
-##    if null $P1 goto iter_end
-##    .local pmc iter
-##    iter = new 'Iterator', $P1
-##  iter_loop:
-##    unless iter goto iter_end
-##    $P2 = shift iter
-##    $P2 = $P2.'get_scalar'()
-##    past.'push'($P2)
-##    goto iter_loop
-##  iter_end:
-##    match.'result_object'(past)
-##.end
-
-
-method statement($/, $key) {
-    make $($/{$key});
-}
-
-##.sub 'statement' :method
-##    .param pmc match
-##    .param string key
-##    $P0 = match[key]
-##    $P1 = $P0.'get_scalar'()
-##    match.'result_object'($P1)
-##.end
-
-
-method if_statement($/) {
-    my $cond := +$<EXPR> - 1;
-    my $past := PAST::Op.new( $( $<EXPR>[$cond] ),
-                              $( $<block>[$cond] ),
-                              :pasttype('if'),
-                              :node( $/ )
-                            );
-    if ( $<else> ) {
-        $past.push( $( $<else>[0] ) );
-    }
-    while ($cond != 0) {
-        $cond := $cond - 1;
-        $past := PAST::Op.new( $( $<EXPR>[$cond] ),
-                               $( $<block>[$cond] ),
-                               $past,
-                               :pasttype('if'),
-                               :node( $/ )
-                             );
-    }
-    make $past;
-}
-##.sub 'if_statement' :method
-##    .param pmc match
-##    .local pmc expr, block, past
-##    .local int cond
-##    cond = match['EXPR']
-##    cond -= 1
-##    bsr get_expr
-##    bsr get_block
-##    $P2 = get_hll_global ['PAST'], 'Op'
-##    past = $P2.'new'(expr, block, 'pasttype'=>'if', 'node'=>match)
-##
-##    $I0 = exists match['else']
-##    unless $I0 goto while
-##    block = match['else']
-##    block = block[0]
-##    block = block.'get_scalar'()
-##    past.'push'( block )
-##
-##  while:
-##    unless cond != 0 goto end_while
-##    cond -= 1
-##    bsr get_expr
-##    bsr get_block
-##    past = $P2.'new'(expr, block, past, 'pasttype'=>'if', 'node'=>match)
-##    goto while
-##
-##  end_while:
-##    goto end
-##
-##  get_expr:
-##    expr = match['EXPR']
-##    expr = expr[cond]
-##    expr = expr.'get_scalar'()
-##    ret
-##  get_block:
-##    block = match['block']
-##    block = block[cond]
-##    block = block.'get_scalar'()
-##    ret
-##  end:
-##    match.'result_object'(past)
-##.end
-
-
-method unless_statement($/) {
-    my $past := PAST::Op.new( $( $<EXPR> ),
-                              $( $<block> ),
-                              :pasttype('unless'),
-                              :node( $/ )
-                            );
-    make $past;
-}
-##.sub 'unless_statement' :method
-##    .param pmc match
-##    .local pmc expr, block, past
-##    expr = match['EXPR']
-##    expr = expr
-##    expr = expr.'get_scalar'()
-##    block = match['block']
-##    block = block
-##    block = block.'get_scalar'()
-##    $P0 = get_hll_global ['PAST'], 'Op'
-##    past = $P0.'new'(expr, block, 'pasttype'=>'unless', 'node'=>match)
-##    match.'result_object'(past)
-##.end
-
-
-method repeat_statement($/) {
-    make PAST::Op.new( $($<EXPR>),
-                       $($<block>),
-                       :pasttype( 'repeat_' ~ $<sym> ),
-                       :node( $/ )
-                     );
-}
-##.sub 'repeat_statement' :method
-##    .param pmc match
-##    $P1 = match['EXPR']
-##    $P1 = $P1.'get_scalar'()
-##    $P2 = match['block']
-##    $P2 = $P2.'get_scalar'()
-##    $S0 = match['sym']
-##    $S0 = concat 'repeat_', $S0
-##    $P0 = get_hll_global ['PAST'], 'Op'
-##    $P5 = $P0.'new'( $P1, $P2, 'pasttype'=>$S0, 'node'=>match)
-##    match.'result_object'($P5)
-##.end
-
-
-method while_statement($/) {
-    make PAST::Op.new( $($<EXPR>),
-                       $($<block>),
-                       :pasttype( ~$<sym> ),
-                       :node( $/ )
-                     );
-}
-##.sub 'while_statement' :method
-##    .param pmc match
-##    $P1 = match['EXPR']
-##    $P1 = $P1.'get_scalar'()
-##    $P2 = match['block']
-##    $P2 = $P2.'get_scalar'()
-##    $S0 = match['sym']
-##    $P0 = get_hll_global ['PAST'], 'Op'
-##    $P5 = $P0.'new'( $P1, $P2, 'pasttype'=>$S0, 'node'=>match)
-##    match.'result_object'($P5)
-##.end
-
-
-method for_statement($/) {
-    my $block := $( $<block> );
-    $block.blocktype('declaration');
-    $block.symbol( '$_', :scope('lexical'));
-    my $topic_var := PAST::Var.new(:name('$_'), :scope('parameter'));
-    $block[0].push($topic_var);
-    my $past := PAST::Op.new($($<EXPR>),
-                             $($<block>),
-                             :pasttype(~$<sym>),
-                             :node($/));
-    make $past;
-}
-##.sub 'for_statement' :method
-##    .param pmc match
-##    .local pmc block, past
-##    $P0  = match['EXPR']
-##    $P0  = $P0.'get_scalar'()
-##    $P1  = match['block']
-##    block = $P1.'get_scalar'()
-##    block.'blocktype'('sub')
-##    .local pmc params, topic_var
-##    params = block[0]
-##    $P3 = get_hll_global ['PAST'], 'Var'
-##    topic_var = $P3.'new'('name'=>'$_', 'scope'=>'parameter')
-##    params.'push'(topic_var)
-##    block.'symbol'('$_', 'scope'=>'lexical')
-##    $P2  = get_hll_global ['PAST'], 'Op'
-##    $S1  = match['sym']
-##    past = $P2.'new'($P0, block, 'pasttype'=>$S1, 'node'=>match)
-##    match.'result_object'(past)
-##.end
-
-
-method make_statement($/) {
-    make PAST::Op.new( PAST::Var.new( :name('$/'),
-                                      :scope('lexical') ),
-                       $($<EXPR>),
-                       :name('result_object'),
-                       :pasttype('callmethod') );
-}
-##.sub 'make_statement' :method
-##    .param pmc match
-##    $P0 = get_hll_global ['PAST'], 'Var'
-##    $P1 = $P0.'new'( 'name'=>'$/', 'scope'=>'lexical' )
-##    $P2 = match['EXPR']
-##    $P3 = $P2.'get_scalar'()
-##    $P4 = get_hll_global ['PAST'], 'Op'
-##    $P5 = $P4.'new'($P1, $P3, 'name'=>'result_object', 'pasttype'=>'callmethod')
-##    match.'result_object'($P5)
-##.end
-
-
-method inline_pir_statement($/, $key) {
-    my $inline;
-    if ($key eq 'quote')   { $inline := ~$($<quote><string_literal>) }
-    if ($key eq 'heredoc') { $inline := ~$/<text> }
-
-    make PAST::Op.new( :inline( $inline ),
-                       :pasttype('inline'),
-                       :node( $/ )
-                     );
-}
-##.sub 'inline_pir_statement' :method
-##    .param pmc match
-##    .param pmc key
-##    .local pmc inline
-##    if key != 'quote' goto not_quote
-##    $P0 = match['quote']
-##    $P0 = $P0['string_literal']
-##    inline = $P0.'get_scalar'()
-##    goto make
-##  not_quote:
-##    if key != 'heredoc' goto not_heredoc
-##    $P0 = match['text']
-##    inline = $P0.'text'()
-##  not_heredoc:
-##  make:
-##    $P1 = get_hll_global ['PAST'], 'Op'
-##    $P2 = $P1.'new'( 'inline'=>inline, 'pasttype'=>'inline', 'node'=>match)
-##    match.'result_object'($P2)
-##.end
-
-
-method block($/) {
-    make $($<statement_block>);
-}
-##.sub 'block' :method
-##    .param pmc match
-##    $P0 = match['statement_block']
-##    $P0 = $P0.'get_scalar'()
-##    match.'result_object'($P0)
-##.end
-
-
-#### Subroutine and method definitions ####
-
-method routine_def($/) {
-    my $past := $($<block>);
-    $past.name(~$<ident>);
-    $past.node($/);
-    $past.blocktype('declaration');
-    my $params := $past[0];
-    if $<declarator> eq 'method' {
-        $past.blocktype('method');
-        unshift $past, PAST::Op.new('inline'=>'.lex "self", self',
-            'pasttype'=>'inline');
-    }
-    for $<signature>[0] {
-        my $parameter := $($_<parameter>);
-        $past.symbol($parameter.name(), :scope('lexical'));
-        $params.push($parameter);
-    }
-    make $past;
-}
-##.sub 'routine_def' :method
-##    .param pmc match
-##    .local pmc past
-##    $P0 = match['block']
-##    past = $P0.'get_scalar'()
-##    $S0 = match['ident']
-##    past.'name'($S0)
-##    past.'node'(match)
-##    past.'blocktype'('declaration')
-##    .local pmc params
-##    params = past[0]
-##    $S0 = match['declarator']
-##    if $S0 != 'method' goto add_signature
-##    past.'blocktype'('method')
-##  add_signature:
-##    $P0 = match['signature']
-##    $P0 = $P0[0]
-##    unless $P0 goto param_end
-##    .local pmc iter
-##    iter = new 'Iterator', $P0
-##  param_loop:
-##    unless iter goto param_end
-##    $P1 = shift iter
-##    .local pmc parameter
-##    $P2 = $P1['parameter']
-##    parameter = $P2.'get_scalar'()
-##    $S0 = parameter.'name'()
-##    past.'symbol'($S0, 'scope'=>'lexical')
-##    params.'push'(parameter)
-##    goto param_loop
-##  param_end:
-##    match.'result_object'(past)
-##.end
-
-
-method parameter($/, $key) {
-    my $past := $( $<param_var> );
-    my $sigil := $<param_var><sigil>;
-    if $key eq 'slurp' {              # slurpy
-        $past.slurpy( $sigil eq '@' || $sigil eq '%' );
-        $past.named( $sigil eq '%' );
-    }
-    else {
-        if $<named> eq ':' {          # named
-            $past.named(~$<param_var><ident>);
-            if $<quant> ne '!' {      #  required (optional is default)
-                $past.viviself('Undef');
-            }
-        }
-        else {                        # positional
-            if $<quant> eq '?' {      #  optional (required is default)
-                $past.viviself('Undef');
-            }
-        }
-    }
-    make $past;
-}
-##.sub 'parameter' :method
-##    .param pmc match
-##    .param pmc key
-##    .local pmc past, sigil
-##    past = match['param_var']
-##    past = past.'get_scalar'()
-##    sigil = match['param_var';'sigil']
-##    if key != 'slurp' goto not_slurp
-##    if sigil != '@' goto not_slurpy_array
-##    past.'slurpy'(1)
-##  not_slurpy_array:
-##    if sigil != '%' goto not_slurpy_hash
-##    past.'slurpy'(1)
-##  not_slurpy_hash:
-##    if sigil != '%' goto not_slurp
-##    past.'named'(1)
-##    goto make_past
-##  not_slurp:
-##    $S0 = match['named']
-##    if $S0 != ':' goto not_named
-##    $S0 = match['param_var';'ident']
-##    past.'named'($S0)
-##    $S0 = match['quant']
-##    if $S0 == '!' goto not_named
-##    past.'viviself'('Undef')
-##  not_named:
-##    $S0 = match['quant']
-##    if $S0 != '?' goto make_past
-##    past.'viviself'('Undef')
-##  make_past:
-##    match.'result_object'(past)
-##.end
-
-
-method param_var($/) {
-    make PAST::Var.new(:name(~$/),
-                       :scope('parameter'),
-                       :node($/) );
-}
-##.sub 'param_var' :method
-##    .param pmc match
-##    $S0 = match
-##    $P0 = get_hll_global ['PAST'], 'Var'
-##    $P1 = $P0.'new'('name'=>$S0, 'scope'=>'parameter', 'node'=>match)
-##    match.'result_object'($P1)
-##.end
-
-
-#### Terms and expressions ####
-
-method term($/, $key) {
-    my $past := $($<noun>);
-    for $<postfix> {
-        my $term := $past;
-        $past := $($_);
-        #print("term()");
-        $past.unshift($term);
-    }
-    make $past;
-}
-##.sub 'term' :method
-##    .param pmc match
-##    .param pmc key
-##    .local pmc past
-##    $P0 = match['noun']
-##    past = $P0.'get_scalar'()
-##    $P1 = match['postfix']
-##    if null $P1 goto end
-##    .local pmc iter, term
-##    iter = new 'Iterator', $P1
-##  iter_loop:
-##    unless iter goto end
-##    $P2 = shift iter
-##    term = past
-##    past = $P2.'get_scalar'()
-##    past.'unshift'(term)
-##    goto iter_loop
-##  end:
-##    match.'result_object'(past)
-##.end
-
-
-method postfix($/, $key) {
-    make $($/{$key});
-}
-##.sub 'postfix' :method
-##    .param pmc match
-##    .param string key
-##    $P0 = match[key]
-##    $P1 = $P0.'get_scalar'()
-##    match.'result_object'($P1)
-##.end
-
-
-method methodop($/, $key) {
-    my $past := $($<arglist>);
-    $past.name(~$<ident>);
-    $past.pasttype('callmethod');
-    $past.node($/);
-    make $past;
-}
-##.sub 'methodop' :method
-##    .param pmc match
-##    .param string key
-##    .local pmc past
-##    $P0 = match['arglist']
-##    past = $P0.'get_scalar'()
-##    $S0 = match['ident']
-##    past.'name'($S0)
-##    past.'pasttype'('callmethod')
-##    past.'node'(match)
-##    match.'result_object'(past)
-##.end
-
-
-method postcircumfix($/, $key) {
-    if $key eq '( )' {
-        my $past := $($<arglist>);
-        $past.pasttype('call');
-        $past.node($/);
-        make $past;
-    }
-    elsif $key eq '< >' {
-        my $value := PAST::Val.new( :value( $($<string_literal>) ) );
-        make PAST::Var.new( $value,
-                            :scope('keyed'),
-                            :vivibase('Hash'),
-                            :viviself('Undef'),
-                            :node( $/ ) );
-    }
-    else {
-        my $vivibase; ## := ($key eq '{ }') ? 'Hash' : 'ResizablePMCArray';
-        if $key eq '{ }' {
-            $vivibase := 'Hash';
-        }
-        else {
-            $vivibase := 'ResizablePMCArray';
-        }
-        make PAST::Var.new( $($<EXPR>),
-                            :scope('keyed'),
-                            :vivibase($vivibase),
-                            :viviself('Undef'),
-                            :node($/) );
-    }
-}
-##.sub 'postcircumfix' :method
-##    .param pmc match
-##    .param string key
-##    .local pmc past
-##    if key == '( )' goto subcall
-##    if key == '< >' goto keyed_const
-##  keyed_var:
-##    .local string vivibase
-##    vivibase = 'ResizablePMCArray'
-##    if key != '{ }' goto keyed_array
-##    vivibase = 'Hash'
-##  keyed_array:
-##    $P0 = get_hll_global ['PAST'], 'Var'
-##    $P1 = match['EXPR']
-##    $P2 = $P1.'get_scalar'()
-##    $P3 = $P0.'new'( $P2, 'scope'=>'keyed', 'vivibase'=>vivibase, 'viviself'=>'Undef', 'node'=>match )
-##    match.'result_object'($P3)
-##    .return ()
-##  subcall:
-##    $P0 = match['arglist']
-##    past = $P0.'get_scalar'()
-##    past.'pasttype'('call')
-##    past.'node'(match)
-##    match.'result_object'(past)
-##    .return ()
-##  keyed_const:
-##    $P0 = get_hll_global ['PAST'], 'Val'
-##    $P1 = match['string_literal']
-##    $P2 = $P1.'get_scalar'()
-##    .local pmc value
-##    value = $P0.'new'( 'value' => $P2, 'node'=> $P1 )
-##    $P0 = get_hll_global ['PAST'], 'Var'
-##    $P1 = $P0.'new'( value, 'scope'=>'keyed', 'vivibase'=>'Hash', 'viviself'=>'Undef', 'node'=>match)
-##    match.'result_object'($P1)
-##.end
-
-
-method circumfix($/, $key) {
-    my $expr := $($<EXPR>[0]);
-    if $key eq '@( )' {
-        make PAST::Op.new( $expr,
-                           :name('get_array'),
-                           :pasttype('callmethod'),
-                           :node($/) );
-    }
-    if $key eq '$( )' {
-        make PAST::Op.new( $expr,
-                           :name('get_scalar'),
-                           :pasttype('callmethod'),
-                           :node($/) );
-    }
-    make $expr;
-}
-##.sub 'circumfix' :method
-##    .param pmc match
-##    .param string key
-##    .local pmc past
-##    $P0 = match['EXPR']
-##    unless null $P0 goto have_expr
-##    $P1 = match
-##    goto get_past
-##  have_expr:
-##    $P1 = $P0[0]
-##  get_past:
-##    $P1 = $P1.'get_scalar'()
-##    $P0 = get_hll_global ['PAST'], 'Op'
-##    if key == '@( )' goto list_context
-##    if key == '$( )' goto scalar_context
-##  parenthetical:
-##    match.'result_object'($P1)
-##    .return ()
-##  list_context:
-##    past = $P0.'new'($P1, 'name' => 'get_array',  'pasttype'=>'callmethod', 'node'=>match)
-##    match.'result_object'(past)
-##    .return ()
-##  scalar_context:
-##    past = $P0.'new'($P1, 'name' => 'get_scalar', 'pasttype'=>'callmethod', 'node'=>match)
-##    match.'result_object'(past)
-##.end
-
-#sub callarg($arg) {
-#        if $arg.returns() eq 'Pair' {
-#            $arg[1].named($arg[0]);
-#            $arg := $arg[1];
-#        }
-#        return $arg;
-#}
-
-method arglist($/) {
-    my $past := PAST::Op.new( :node($/) );
-    if ($<EXPR>) {
-        my $expr := $($<EXPR>[0]);
-        if ($expr.name() eq 'infix:,') {
-            for @($expr) {
-                if $_.returns() eq 'Pair' {
-                    $_[1].named($_[0]);
-                    $_ := $_[1];
-                }
-                $past.push( $_ );
-            }
-        }
-        else {
-            if $expr.returns() eq 'Pair' {
-                $expr[1].named($expr[0]);
-                $expr := $expr[1];
-            }
-            $past.push( $expr );
-        }
-    }
-    make $past;
-}
-##.sub 'arglist' :method
-##    .param pmc match
-##    .local pmc past
-##    $P0 = get_hll_global ['PAST'], 'Op'
-##    past = $P0.'new'( 'node'=>match )
-##    $P1 = match['EXPR']
-##    if null $P1 goto end
-##    .local pmc expr, iter
-##    $P2 = $P1[0]
-##    expr = $P2.'get_scalar'()
-##    $S0 = expr.'name'()
-##    if $S0 != 'infix:,' goto one_arg
-##  comma_arg:
-##    .local pmc iter
-##    iter = expr.'iterator'()
-##  iter_loop:
-##    unless iter goto end
-##    $P0 = shift iter
-##    $P0 = 'callarg'($P0)
-##    past.'push'($P0)
-##    goto iter_loop
-##  one_arg:
-##    $P0 = 'callarg'(expr)
-##    past.'push'($P0)
-##  end:
-##    match.'result_object'(past)
-##.end
-
-
-##.sub 'callarg'
-##    .param pmc arg
-##    $S0 = arg.'returns'()
-##    unless $S0 == 'Pair' goto end
-##    $P0 = arg[0]
-##    $P1 = arg[1]
-##    $P1.'named'($P0)
-##    arg = $P1
-##  end:
-##    .return (arg)
-##.end
-
-
-method noun($/, $key) {
-    if $key eq 'self' {
-        make PAST::Var.new('name'=>'self', 'node'=>$/);
-    }
-    else {
-        make $($/{$key});
-    }
-}
-##.sub 'noun' :method
-##    .param pmc match
-##    .param pmc key
-##    $P0 = match[key]
-##    $P1 = $P0.'get_scalar'()
-##    match.'result_object'($P1)
-##.end
-
-
-method colonpair($/) {
-    make PAST::Op.new( PAST::Val.new( :value(~$<ident>),
-                                      :node($<ident>)),
-                       $($<EXPR>),
-                       :name('infix:=>'),
-                       :returns('Pair'),
-                       :node($/)
-                     );
-}
-##.sub 'colonpair' :method
-##    .param pmc match
-##    $S0 = match['ident']
-##    $P0 = match['ident']
-##    $P9 = get_hll_global ['PAST'], 'Val'
-##    $P1 = $P9.'new'('value'=>$S0, 'node'=>$P0)
-##    $P2 = match['EXPR']
-##    $P2 = $P2.'get_scalar'()
-##    $P9 = get_hll_global ['PAST'], 'Op'
-##    $P3 = $P9.'new'($P1, $P2, 'name'=>'infix:=>', 'returns'=>'Pair', 'node'=>match)
-##    match.'result_object'($P3)
-##.end
-
-
-method package_declarator($/, $key) {
-    my $past := $($/{$key});
-    $past.namespace($<name><ident>);
-    $past.blocktype('declaration');
-    $past.pirflags(':init :load');
-    $past.lexical(0);
-
-    #if ($<sym> eq 'class') { ...code to make class... }
-
-    make $past;
- #    PIR q< $P0 = get_hll_global ['NQP';'Grammar';'Actions'], 'package_declarator_helper' >;
- #    PIR q< $P1 = find_lex '$/'                          >;
- #    PIR q< $P2 = find_lex '$key'                        >;
- #    PIR q< $P0($P1, $P2)                                >;
-}
-#
-##.sub 'package_declarator' :method
-##    .param pmc match
-##    .param pmc key
-##    .local pmc past
-##    $P0 = match[key]
-##    past = $P0.'get_scalar'()
-##    $P1 = match['name']
-##    $P1 = $P1['ident']
-##    past.'namespace'($P1)
-##    past.'blocktype'('declaration')
-##    past.'pirflags'(':init :load')
-##    past.'lexical'(0)
-##    $S0 = match['sym']
-##    if $S0 != 'class' goto class_done
-##    .local string inline
-##    inline = <<'        INLINE'
-##        $P0 = get_hll_global 'Protomaker'
-##        $P1 = split '::', '%s'
-##        push_eh subclass_done
-##        $P2 = $P0.'new_subclass'('Protoobject', $P1)
-##        pop_eh
-##      subclass_done:
-##        INLINE
-##    $S0 = match['name']
-##    $I0 = index inline, '%s'
-##    substr inline, $I0, 2, $S0
-##    $P0 = get_hll_global ['PAST'], 'Op'
-##    $P1 = $P0.'new'('inline'=>inline, 'pasttype'=>'inline')
-##    $P2 = past[0]
-##    $P2.'push'($P1)
-##  class_done:
-##    match.'result_object'(past)
-##.end
-
-
-method scope_declarator($/) {
-     my $past := $($<variable>);
-     my $name := $past.name();
-     our $?BLOCK;
-     unless $?BLOCK.symbol($name) {
-         $past.isdecl(1);
-         #my $scope := ($<declarator> eq 'my') ? 'lexical' : 'package';
-         my $scope;
-         if $<declarator> eq 'my' {
-             $scope := 'lexical';
-         }
-         else {
-             $scope := 'package';
-         }
-         $?BLOCK.symbol($name, :scope($scope));
-     }
-     make $past;
-}
-##.sub 'scope_declarator' :method
-##    .param pmc match
-##    .local pmc past, block
-##    .local string name
-##    $P0 = match['variable']
-##    past = $P0.'get_scalar'()
-##    name = past.'name'()
-##    block = get_global '$?BLOCK'
-##    $P0 = block.'symbol'(name)
-##    if $P0 goto end
-##    past.'isdecl'(1)
-##    .local string scope
-##    scope = 'package'
-##    $S0 = match['declarator']
-##    if $S0 != 'my' goto have_scope
-##    scope = 'lexical'
-##  have_scope:
-##    block.'symbol'(name, 'scope'=>scope)
-##  end:
-##    match.'result_object'(past)
-##.end
-
-
-method variable($/, $key) {
-    if ($key eq '$< >') {
-        say("variable", ~$/[0]);
-        make PAST::Var.new(
-                 PAST::Var.new(:scope('lexical'), :name('$/')),
-                 PAST::Val.new(:value(~$/[0])),
-                 :scope('keyed'),
-                 :viviself('Undef') );
-    }
-    else {
-        make PAST::Var.new(:node($/), :name(~$/) );
-    }
-}
-##.sub 'variable' :method
-##    .param pmc match
-##    .param pmc key
-##    if key != '$< >' goto past_var
-##  past_match_keyed:
-##    $P0 = get_hll_global ['PAST'], 'Var'
-##    $P1 = $P0.'new'('scope'=>'lexical', 'name'=>'$/')
-##    $P2 = get_hll_global ['PAST'], 'Val'
-##    $S0 = match[0]
-##    $P3 = $P2.'new'('value'=>$S0)
-##    $P4 = $P0.'new'($P1, $P3, 'scope'=>'keyed', 'viviself'=>'Undef')
-##    match.'result_object'($P4)
-##    .return ()
-##  past_var:
-##    $S0 = match
-##    $S1 = match['sigil']
-##    $S2 = 'Undef'
-##    if $S1 != '%' goto past_sigil_is_array
-##    $S2 = 'Hash'
-##    goto past_sigil
-##  past_sigil_is_array:
-##    if $S1 != '@' goto past_sigil
-##    $S2 = 'ResizablePMCArray'
-##    goto past_sigil
-##  past_sigil:
-##    $P0 = get_hll_global ['PAST'], 'Var'
-##    $P1 = $P0.'new'('node'=>match, 'name'=>$S0, 'viviself'=>$S2)
-##    match.'result_object'($P1)
-##.end
-
-
-method value($/, $key) {
-    make $($/{$key});
-}
-###.sub 'value' :method
-###    .param pmc match
-###    .param pmc key
-###    $P0 = match[key]
-###    $P1 = $P0.'get_scalar'()
-###    match.'result_object'($P1)
-###.end
-
-
-method quote($/) {
-    make PAST::Val.new(:node($/), :value(~($<string_literal>)));
-}
-##.sub 'quote' :method
-##    .param pmc match
-##    .param pmc key             :optional
-##    .local string value
-##    $P0 = match['string_literal']
-##    value = $P0.'get_scalar'()
-##    $P0 = get_hll_global ['PAST'], 'Val'
-##    $P1 = $P0.'new'('node'=>match, 'value'=>value)
-##    match.'result_object'($P1)
-##.end
-
-
-
-
-method typename($/, $key) {
-    my $ns := $<name><ident>;
-    my $shortname;
-    PIR q<    $P0 = find_lex '$ns'         >;
-    PIR q<    $P0 = clone $P0              >;
-    PIR q<    $P1 = pop $P0                >;
-    PIR q<    store_lex '$ns', $P0         >;
-    PIR q<    store_lex '$shortname', $P1  >;
-    make PAST::Var.new( :name($shortname),
-                        :namespace($ns),
-                        :scope('package'),
-                        :node($/)
-                      );
-}
-
-
-##.sub 'typename' :method
-##    .param pmc match
-##    .param pmc key
-##    .local pmc ns, name
-##    $P0 = match['name']
-##    $P0 = $P0['ident']
-##    ns = clone $P0
-##    name = pop ns
-##    $P0 = get_hll_global ['PAST'], 'Var'
-##    $P1 = $P0.'new'('node'=>match, 'scope'=>'package', 'name'=>name, 'namespace'=>ns)
-##    match.'result_object'($P1)
-##.end
-
-
-method number($/    ) {
-    make PAST::Val.new(:node($/), :value(~$/), :returns('Integer'));
-}
-##.sub 'number' :method
-##    .param pmc match
-##    .param pmc key             :optional
-##    .local pmc past
-##    $I0 = match
-##    $P0 = get_hll_global ['PAST'], 'Val'
-##    past = $P0.'new'('node'=>match, 'value'=>$I0)
-##    match.'result_object'(past)
-##.end
-
-
-method subcall($/) {
-    my $past := $($<arglist>);
-    $past.name(~$<ident>);
-    $past.pasttype('call');
-    $past.node($/);
-    make $past;
-}
-##.sub 'subcall' :method
-##    .param pmc match
-##    .param pmc key             :optional
-##    .local pmc past
-##    $P0 = match['arglist']
-##    past = $P0.'get_scalar'()
-##    $S0 = match['ident']
-##    past.'name'($S0)
-##    past.'pasttype'('call')
-##    past.'node'(match)
-##    match.'result_object'(past)
-##.end
-
-
-#### Expressions and operators ####
-method EXPR($/, $key) {
-    if ($key eq 'end') {
-        make $($<expr>);
-    }
-    else {
-        my $past := PAST::Op.new( :name($<type>),
-                                  :pasttype($<top><pasttype>),
-                                  :pirop($<top><pirop>),
-                                  :inline($<top><inline>),
-                                  :lvalue($<top><lvalue>),
-                                  :node($/)
-                                );
-        for @($/) {
-            $past.push( $($_) );
-        }
-        make $past;
-    }
-}
-
-
-##.sub 'EXPR' :method
-##    .param pmc match
-##    .param pmc key
-##    if key != 'end' goto expr_reduce
-##  expr_end:
-##    $P0 = match['expr']
-##    $P1 = $P0.'get_scalar'()
-##    match.'result_object'($P1)
-##    .return ()
-##  expr_reduce:
-##    .local pmc past
-##    .local string name, pirop, pasttype, inline, lvalue
-##    name = match['type']
-##    pirop = match['top';'pirop']
-##    pasttype = match['top'; 'pasttype']
-##    inline = match['top'; 'inline']
-##    lvalue = match['top'; 'lvalue']
-##    $P0 = get_hll_global ['PAST'], 'Op'
-##    past = $P0.'new'('node'=>match, 'name'=>name, 'pirop'=>pirop, 'pasttype'=>pasttype, 'inline'=>inline, 'lvalue'=>lvalue)
-##    $P1 = match.'get_array'()
-##    if null $P1 goto iter_end
-##    .local pmc iter
-##    iter = new 'Iterator', $P1
-##  iter_loop:
-##    unless iter goto iter_end
-##    $P2 = shift iter
-##    $P2 = $P2.'get_scalar'()
-##    past.'push'($P2)
-##    goto iter_loop
-##  iter_end:
-##    match.'result_object'(past)
-##.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/compilers/nqp/bootstrap/nqp.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/bootstrap/nqp.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,212 +0,0 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
-# $Id$
-
-=head1 TITLE
-
-nqp.pir - A nqp compiler.
-
-=head2 Description
-
-This is the base file for the nqp compiler.
-
-This file includes the parsing and grammar rules from
-the src/ directory, loads the relevant PGE libraries,
-and registers the compiler under the name 'nqp'.
-
-=head2 Functions
-
-=over 4
-
-=item onload()
-
-Creates the nqp compiler using a C<PCT::HLLCompiler>
-object.
-
-=cut
-
-.namespace [ 'NQP';'Compiler' ]
-
-.loadlib 'nqp_group'
-
-.sub 'onload' :anon :load :init
-    load_bytecode 'PCT.pbc'
-
-    $P0 = get_hll_global ['PCT'], 'HLLCompiler'
-    $P1 = $P0.'new'()
-    $P1.'language'('NQP')
-    $P1.'parsegrammar'('NQP::Grammar')
-    $P1.'parseactions'('NQP::Grammar::Actions')
-.end
-
-=item main(args :slurpy)  :main
-
-Start compilation by passing any command line C<args>
-to the nqp compiler.
-
-=cut
-
-.sub 'main' :main
-    .param pmc args
-
-    $P0 = compreg 'NQP'
-    $P1 = $P0.'command_line'(args)
-.end
-
-.include 'compilers/nqp/src/builtins.pir'
-.include 'compilers/nqp/src/Grammar_gen.pir'
-.include 'compilers/nqp/bootstrap/gen_actions.pir'
-
-
-.namespace []
-
-.sub 'initlist' :anon :load :init
-    subclass $P0, 'ResizablePMCArray', 'List'
-    $P0 = new 'List'
-    set_hll_global ['NQP';'Grammar';'Actions'], '@?BLOCK', $P0
-.end
-
-
-.namespace [ 'List' ]
-
-.sub 'unshift' :method
-    .param pmc obj
-    unshift self, obj
-.end
-
-.sub 'shift' :method
-    shift $P0, self
-    .return ($P0)
-.end
-
-.sub 'push' :method
-    .param pmc obj
-    push self, obj
-.end
-
-
-#.namespace [ 'NQP';'Grammar';'Actions' ]
-#
-#.sub 'package_declarator_helper'
-#    .param pmc match
-#    .param pmc key
-#    .local pmc past
-#    $P0 = match[key]
-#    past = $P0.'get_scalar'()
-#    $P1 = match['name']
-#    $P1 = $P1['ident']
-#    past.'namespace'($P1)
-#    past.'blocktype'('declaration')
-#    past.'pirflags'(':init :load')
-#    past.'lexical'(0)
-#    $S0 = match['sym']
-#    if $S0 != 'class' goto class_done
-#    .local string inline
-#    inline = <<'        INLINE'
-#        $P0 = get_hll_global 'Protomaker'
-#        $P1 = split '::', '%s'
-#        push_eh subclass_done
-#        $P2 = $P0.'new_subclass'('Protoobject', $P1)
-#        pop_eh
-#      subclass_done:
-#        INLINE
-#    $S0 = match['name']
-#    $I0 = index inline, '%s'
-#    substr inline, $I0, 2, $S0
-#    $P0 = get_hll_global ['PAST'], 'Op'
-#    $P1 = $P0.'new'('inline'=>inline, 'pasttype'=>'inline')
-#    $P2 = past[0]
-#    $P2.'push'($P1)
-#  class_done:
-#    match.'result_object'(past)
-#.end
-
-
-
-.sub '__onload' :init :load
-
-    ##  initialize optable with inline PIR
-    .local pmc optable
-    optable = get_hll_global [ 'NQP';'Grammar' ], '$optable'
-    optable['prefix:~'; 'inline'] = <<"        END"
-        ##  inline prefix:~
-        $S0 = %0
-        %r = new 'String'
-        %r = $S0
-        END
-
-    optable['prefix:+'; 'inline'] = <<"        END"
-        ##  inline prefix:+
-        $N0 = %0
-        %r = new 'Float'
-        %r = $N0
-        END
-
-    optable['infix:=='; 'inline'] = <<"        END"
-        ##  inline infix:==
-        $I0 = cmp_num %0, %1
-        $I0 = iseq $I0, 0
-        %r = new 'Integer'
-        %r = $I0
-        END
-
-    optable['infix:!='; 'inline'] = <<"        END"
-        ##  inline infix:!=
-        $I0 = cmp_num %0, %1
-        $I0 = isne $I0, 0
-        %r = new 'Integer'
-        %r = $I0
-        END
-
-    optable['infix:eq'; 'inline'] = <<"        END"
-        ##  inline infix:eq
-        $S0 = %0
-        $S1 = %1
-        $I0 = iseq $S0, $S1
-        %r = new 'Integer'
-        %r = $I0
-        END
-
-    optable['infix:ne'; 'inline'] = <<"        END"
-        ##  inline infix:ne
-        $S0 = %0
-        $S1 = %1
-        $I0 = isne $S0, $S1
-        %r = new 'Integer'
-        %r = $I0
-        END
-
-    optable['infix:=:='; 'inline'] = <<"        END"
-        ##  inline infix:=:=
-        $I0 = issame %0, %1
-        %r = new 'Integer'
-        %r = $I0
-        END
-
-    optable['prefix:!'; 'inline'] = <<"        END"
-        ##  inline prefix:!
-        $I0 = isfalse %0
-        %r = new 'Integer'
-        %r = $I0
-        END
-
-    optable['prefix:?'; 'inline'] = <<"        END"
-        ##  inline prefix:?
-        $I0 = istrue %0
-        %r = new 'Integer'
-        %r = $I0
-        END
-
-    .return ()
-.end
-
-
-=back
-
-=cut
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
-

Deleted: branches/compact_pool_revamp/compilers/nqp/bootstrap/t/harness
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/bootstrap/t/harness	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,14 +0,0 @@
-#! perl
-
-# $Id$
-
-use strict;
-use warnings;
-
-use FindBin;
-use lib "$FindBin::Bin/../../../../lib";
-
-use Parrot::Test::Harness
-    language => 'nqp',
-    exec     => [ '../../../parrot', 'nqp.pbc' ],
-    files    => [ '../t/*.t' ];

Deleted: branches/compact_pool_revamp/compilers/nqp/nqp.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/nqp.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,35 +0,0 @@
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-
-.namespace [ 'NQP';'Compiler' ]
-
-.sub '__onload' :load :init
-    load_bytecode 'PGE.pbc'
-    load_bytecode 'PCT.pbc'
-
-    $P0 = new [ 'PCT';'HLLCompiler' ]
-    $P0.'language'('NQP')
-    $P0.'parsegrammar'('NQP::Grammar')
-    $P0.'parseactions'('NQP::Grammar::Actions')
-
-    $P0 = new 'Integer'
-    set_hll_global ['NQP';'Grammar'], '$!endstmt', $P0
-.end
-
-.sub 'main' :main
-    .param pmc args
-    $P0 = compreg 'NQP'
-    .tailcall $P0.'command_line'(args, 'encoding'=>'utf8', 'transcode'=>'ascii')
-.end
-
-.include 'compilers/nqp/src/Grammar_gen.pir'
-
-.include 'compilers/nqp/src/Grammar/Actions.pir'
-
-.include 'compilers/nqp/src/builtins.pir'
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/compilers/nqp/src/Grammar.pg
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/src/Grammar.pg	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,507 +0,0 @@
-# Copyright (C) 2007-2009, Parrot Foundation.
-# $Id$
-
-
-=begin overview
-
-The following is the grammar for nqp written as a sequence of
-Perl 6 rules.  In each of the rules, the special notation C<{*}>
-marks a point in the rule where the corresponding action in
-NQP::Grammar::Actions is to be invoked (see F<src/Grammar/Actions.pir>).
-These actions are then used to construct the AST nodes for
-the program.
-
-The C<#=> markers at the ends of lines are used to distinguish
-among multiple C<{*}> actions within a rule, by passing the value
-after the marker as a 'key' argument to the action method.
-
-=end overview
-
-grammar NQP::Grammar is PCT::Grammar;
-
-
-token TOP {
-  <statement_block>
-  [ $ || <panic: 'Syntax error'> ]
-  {*}
-}
-
-##  The <ws> and <pod_comment> rules handle whitespace and comments.
-##  These are taken from an earlier draft of Perl 6, so they do not
-##  yet handle all valid forms of Perl 6 whitespace.
-token ws {
-    {{  $P0 = match.'to'()
-        $P1 = get_hll_global [ 'NQP';'Grammar' ], '$!ws'
-        if null $P1 goto set_new_ws
-        $P2 = $P1.'to'()
-        if $P0 != $P2 goto set_new_ws
-        .return (1)
-      set_new_ws:
-        set_hll_global [ 'NQP';'Grammar' ], '$!ws', match
-    }}
-    [ \s+
-    | ^^ [ \# \N*
-         | <.pod_comment>
-         ]
-    | \# \N*
-    ]*
-}
-
-
-token afterws {
-    ##  <?{ $¢ == $!ws_to != $!ws_from }>
-    {{  $P0 = match.'to'()
-        $P1 = get_hll_global [ 'NQP';'Grammar' ], '$!ws'
-        $P2 = $P1.'to'()
-        if $P0 != $P2 goto end
-        $P2 = $P1.'from'()
-        if $P0 == $P1 goto end
-        .return (1)
-      end:
-    }}
-    <!>
-}
-
-
-regex pod_comment {
-    ^^ '=' [ [ 'cut' \h*: | 'end' [\h\N*]? ]
-           | 'for' [ \h\N+: ] \n [ \N+\n ]*:
-           | \w\N*: \n .*? \n '=' [ 'cut' \h*: | 'end' [\h\N*:]? ]
-           ]
-           [\n|$]
-}
-
-
-#### Blocks and Statements ####
-
-##  A <statement_block> is a statement list that is returned as
-##  a PAST::Block node.
-rule statement_block {
-    {*}                                                    #= open
-    <statement_list>
-    {*}                                                    #= close
-}
-
-##  Parse a list of statements.
-rule statement_list {
-    [ <statement>
-        [  <.statement_end> || <panic: 'Statement not terminated properly'> ]
-    ]*
-    {*}
-}
-
-
-##  Parse a single statement, which may be either a bare block
-##  or an expression.  Any statement termination is handled by
-##  the calling rule.
-rule statement {
-    | <if_statement> {*}                         #= if_statement
-    | <unless_statement> {*}                     #= unless_statement
-    | <while_statement> {*}                      #= while_statement
-    | <repeat_statement> {*}                     #= repeat_statement
-    | <for_statement> {*}                        #= for_statement
-    | <return_statement> {*}                     #= return_statement
-    | <make_statement> {*}                       #= make_statement
-    | <inline_pir_statement> {*}                 #= inline_pir_statement
-    | <block> {*}                                #= block
-    | <EXPR> {*}                                 #= EXPR
-}
-
-
-##  The statement_end rule detects when we're at valid statement
-##  termination point.  A semicolon always acts as a valid
-##  statement ending point, as does the presence of any expression
-##  terminator.  The MARK_STATEMENT_END subrule is used by other
-##  rules to indicate a valid statement end even when a terminator
-##  isn't present (e.g., the closing '}' at the end of a line for
-##  a <block> ).
-
-token terminator { <[ } \] ) ]> | $ }
-
-token statement_end {
-     || ';'
-     || <?before <terminator>>
-     || {{  $P0 = get_hll_global ['NQP';'Grammar'], '$!endstmt'
-            $P1 = get_hll_global ['NQP';'Grammar'], '$!ws'
-            $P2 = $P1.'from'()
-            if $P0 != $P2 goto end
-            .return (1)
-            end:
-        }} <!>
-}
-
-token MARK_STATEMENT_END {
-    {{  $P0 = match.'to'()
-        $P0 = clone $P0
-        set_hll_global ['NQP';'Grammar'], '$!endstmt', $P0
-    }}
-    <.ws>
-}
-
-
-##  The if_statement handles conditional statements such as 'if' and
-##  'unless'.
-
-rule if_statement {
-    $<sym>=['if']
-    <EXPR> <block>
-    [ 'elsif' <EXPR> <block> ]*
-    [ 'else' $<else>=<block> ]?
-    {*}
-}
-
-rule unless_statement {
-    $<sym>=['unless']
-    <EXPR> <block>
-    {*}
-}
-
-rule while_statement {
-    $<sym>=['while'|'until'] <EXPR> <block>
-    {*}
-}
-
-rule repeat_statement {
-    'repeat' <block> $<sym>=['while'|'until'] <EXPR>
-    {*}
-}
-
-rule for_statement {
-    $<sym>=['for'] <EXPR> <block>
-    {*}
-}
-
-
-rule return_statement {
-    $<sym>=['return']
-    [ <EXPR> || <panic: 'Unable to parse argument to "return"'> ]
-    {*}
-}
-
-rule make_statement {
-    $<sym>=['make']
-    [ <EXPR> || <panic: 'Unable to parse argument to "make"'> ]
-    {*}
-}
-
-rule inline_pir_statement {
-    'PIR'
-    [ <quote> {*}                              #= quote
-    | 'q:to:' [ \' (<-['\n]>+) \' | \" (<-["\n]>+) \" | \< (<-[\>\n]>+) \> ]
-      [:sigspace(0):ratchet(0)
-        ';' \h*: \n
-        $<text>=[ [\N*:\n]*? ]
-        ^^ \h*: $0 \h*: \n
-        <.MARK_STATEMENT_END>
-      ] {*}                                    #= heredoc
-    ]
-}
-
-
-##  Parse a block.  If the closing brace is at the end of a line,
-##  then we call <.MARK_STATEMENT_END> so that any following
-##  <statement_end> rule can succeed.
-
-token block {
-    '{'
-    <statement_block>
-    [ '}' || <panic: 'Missing "}"'> ]
-    [ \h* [ \# \N* ]? \n  <.MARK_STATEMENT_END> ]?
-    {*}
-}
-
-
-#### Subroutine and method definitions ####
-
-rule routine_def {
-    $<declarator>=['sub'|'method']
-    $<name>=[<ident>[':sym<'<-[>]>+'>']?]
-    '(' <signature> ')'
-    <block>
-    {*}
-}
-
-rule signature {
-    ( <parameter> ( ',' | <?before ')'> ) )*
-    {*}
-}
-
-token parameter {
-    | [
-        $<named>=[':'?]
-        <param_var>
-        $<quant>=[ <[ ? ! ]>? ]
-      ] {*}                                                #= non-slurp
-    | $<quant>=['*'?] <param_var> {*}                      #= slurp
-}
-
-token param_var {
-    [
-    | '$/'
-    | <sigil> <ident>
-    ]
-    {*}
-}
-
-
-#### Terms ####
-
-token term {
-    <noun>
-    <postfix>*
-    {*}                                                    #= end
-}
-
-token postfix {
-    <!afterws>
-    [ <methodop> {*}                                       #= methodop
-    | <postcircumfix> {*}                                  #= postcircumfix
-    ]
-}
-
-token methodop {
-    '.' <ident>
-    [
-    | '(' ~ ')' <arglist> {*}                              #= arglist
-    | {*}                                                  #= null
-    ]
-}
-
-token postcircumfix {
-    | '(' <arglist> ')' {*}                                #= ( )
-    | '[' <EXPR> <.ws> ']' {*}                             #= [ ]
-    | '{' <EXPR> <.ws> '}' {*}                             #= { }
-    | '<' <string_literal: '>' > '>' {*}                   #= < >
-}
-
-rule arglist {
-    <EXPR>?
-    {*}
-}
-
-token noun {
-    | <colonpair> {*}                                      #= colonpair
-    | <package_declarator> {*}                             #= package_declarator
-    | <scope_declarator> {*}                               #= scope_declarator
-    | <routine_def> {*}                                    #= routine_def
-    | <circumfix> {*}                                      #= circumfix
-    | <variable> {*}                                       #= variable
-    | <subcall> {*}                                        #= subcall
-    | 'self' >> {*}                                        #= self
-    | <value> {*}                                          #= value
-    | <name> {*}                                           #= name
-}
-
-
-token colonpair {
-    | ':' <ident> [ '(' <EXPR> <.ws> ')' ] {*}
-}
-
-
-rule package_declarator {
-    $<sym>=[module|class]
-    <name>
-    [ 'is' <parent=name> ]?
-    [
-    || ';' <statement_block> {*}                           #= statement_block
-    || <block> {*}                                         #= block
-    ]
-}
-
-
-rule scope_declarator {
-    $<declarator>=[my|our]
-    <variable>
-    {*}
-}
-
-
-token circumfix {
-    | '(' <EXPR>? <.ws> ')' {*}                            #= ( )
-    | '$(' <EXPR>? <.ws> ')' {*}                           #= $( )
-    | '@(' <EXPR>? <.ws> ')' {*}                           #= @( )
-}
-
-
-token variable {
-    | '$<' ( <-[\>]>* ) '>' {*}                            #= $< >
-    | '$/' {*}                                             #= $/
-    | <sigil> <twigil>? <ident> {*}                        #= $var
-}
-
-token sigil { <[$@%&]> }
-
-token twigil { <[.!^*+?=]> }
-
-token value {
-    | <quote> {*}                                          #= quote
-    | <number> {*}                                         #= number
-    | <typename> {*}                                       #= typename
-}
-
-token quote {
-    [ \'  <string_literal: '\''> \' {*}                    #= string
-    | '"' <string_literal: '"'> '"' {*}                    #= string
-    | 'q' <.ws> '<' <string_literal: '>'> '>' {*}          #= string
-    | 'Q' <.ws> ':PIR' <.ws>
-        [:ratchet(0) '{{' (.*?) '}}' | '{' (.*?) '}' ] {*} #= PIR
-    ]
-}
-
-
-token typename {
-    <name> {*}                                             #= name
-}
-
-
-token name {
-    <ident> [ '::' <ident> ]*
-    {*}
-}
-
-
-token number { \d+ {*} }
-
-
-token subcall {
-    <ident> '(' <arglist> ')'
-    {*}
-}
-
-
-
-#### Expressions and operators ####
-
-rule EXPR is optable { ... }
-
-## Terms
-proto 'term:' is precedence('z=')
-    is parsed(&term)
-    { ... }
-
-## Postfix operators
-proto postfix:<++> is looser('term:')
-    is pasttype('inline')
-    { ... }
-proto postfix:<--> is equiv(postfix:<++>)
-    is pasttype('inline')
-    { ... }
-
-## Unary prefix operators
-proto prefix:<+> is looser(postfix:<++>)
-    is pirop('set N*')
-    { ... }
-proto prefix:<~> is equiv(prefix:<+>)
-    is pirop('set S*')
-    { ... }
-proto prefix:<-> is equiv(prefix:<+>)
-    is pirop('neg')
-    { ... }
-proto prefix:<!> is equiv(prefix:<+>)
-    is pirop('isfalse')
-    { ... }
-proto prefix:<?> is equiv(prefix:<+>)
-    is pirop('istrue')
-    { ... }
-
-## Multiplicative operators
-proto infix:<*> is looser(prefix:<+>)
-    is pirop('mul')
-    { ... }
-proto infix:</> is equiv(infix:<*>)
-    is pirop('div')
-    { ... }
-proto infix:<%> is equiv(infix:<*>)
-    is pirop('mod')
-    { ... }
-
-
-## Additive operators
-proto infix:<+> is looser(infix:<*>)
-    is pirop('add')
-    { ... }
-proto infix:<-> is equiv(infix:<+>)
-    is pirop('sub')
-    { ... }
-
-## Concatenation operators
-proto infix:<~> is looser(infix:<+>)
-    is pirop('concat')
-    { ... }
-
-## Comparison operators
-proto infix:<==> is looser(infix:<+>)
-    is pirop('iseq INn')
-    { ... }
-proto infix:<!=> is equiv(infix:<==>)
-    is pirop('isne INn')
-    { ... }
-proto infix:«>=» is equiv(infix:<==>)
-    is pirop('isge INn')
-    { ... }
-proto infix:«<=» is equiv(infix:<==>)
-    is pirop('isle INn')
-    { ... }
-proto infix:«>» is equiv(infix:<==>)
-    is pirop('isgt INn')
-    { ... }
-proto infix:«<» is equiv(infix:<==>)
-    is pirop('islt INn')
-    { ... }
-
-proto infix:<eq> is equiv(infix:<==>)
-    is pirop('iseq ISs')
-    { ... }
-proto infix:<ne> is equiv(infix:<==>)
-    is pirop('isne ISs')
-    { ... }
-proto infix:<lt> is equiv(infix:<==>)
-    is pirop('islt ISs')
-    { ... }
-proto infix:<le> is equiv(infix:<==>)
-    is pirop('isle ISs')
-    { ... }
-proto infix:<gt> is equiv(infix:<==>)
-    is pirop('isgt ISs')
-    { ... }
-proto infix:<ge> is equiv(infix:<==>)
-    is pirop('isge ISs')
-    { ... }
-proto infix:<=:=> is equiv(infix:<==>)
-    is pirop('issame')
-    { ... }
-
-## Tight logical operators
-proto infix:<&&> is looser(infix:<==>)
-    is pasttype('if')
-    { ... }
-proto infix:<||> is looser(infix:<&&>)
-    is pasttype('unless')
-    { ... }
-
-## Conditional
-proto ternary:<?? !!> is looser(infix:<||>)
-    is pasttype('if')
-    { ... }
-
-## Binding
-proto infix:<:=> is looser(ternary:<?? !!>)
-    is lvalue(1)
-    is pasttype('bind')
-    { ... }
-
-## Comma
-proto infix:<,> is looser(infix:<:=>)
-    is assoc('list')
-    is pasttype('list')
-    is nullterm
-    { ... }
-
-## loose logical operators
-proto infix:<and> is looser(infix:<,>)
-    is pasttype('if')
-    { .... }
-
-proto infix:<or> is looser(infix:<and>)
-    is pasttype('unless')
-    { ... }

Deleted: branches/compact_pool_revamp/compilers/nqp/src/Grammar/Actions.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/src/Grammar/Actions.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,1075 +0,0 @@
-# Copyright (C) 2007-2009, Parrot Foundation.
-# $Id$
-
-.sub '__onload' :init :load
-    $P0 = get_hll_global 'P6metaclass'
-    $P0 = $P0.'new_class'('NQP::Grammar::Actions')
-
-    ##  create the stack for nested lexical blocks
-    $P0 = new 'ResizablePMCArray'
-    set_hll_global ['NQP';'Grammar';'Actions'], '@?BLOCK', $P0
-
-    ##  initialize optable with inline PIR
-    .local pmc optable
-    optable = get_hll_global [ 'NQP';'Grammar' ], '$optable'
-
-    optable['postfix:++'; 'inline'] = <<"        END"
-        ##  inline postfix:++
-        clone %r, %0
-        inc %0
-        END
-
-    optable['postfix:--'; 'inline'] = <<"        END"
-        ##  inline postfix:--
-        clone %r, %0
-        dec %0
-        END
-
-    .return ()
-.end
-
-.namespace [ 'NQP';'Grammar';'Actions' ]
-
-
-##    method TOP($/, $key) {
-##        my $past := $($<statement_block>);
-##        $past.blocktype('declaration');
-##        make $past;
-##    }
-.sub 'TOP' :method
-    .param pmc match
-    .local pmc past
-    $P0 = match['statement_block']
-    past = $P0.'ast'()
-    past.'blocktype'('declaration')
-    match.'!make'(past)
-.end
-
-
-#### Blocks and Statements ####
-
-##    method statement_block($/, $key) {
-##        our $?BLOCK, @?BLOCK;
-##        if ($key ne 'close') {
-##            $?BLOCK := PAST::Block.new( PAST::Stmts.new(),
-##                                        :blocktype('immediate'),
-##                                        :node($/) );
-##            @?BLOCK.unshift($?BLOCK);
-##        }
-##        else {
-##            my $past := @?BLOCK.shift();
-##            $?BLOCK := @?BLOCK[0];
-##            $past.push($($<statement_list>));
-##            make $past;
-##        }
-##    }
-.sub 'statement_block' :method
-    .param pmc match
-    .param string key
-    if key == 'close' goto block_close
-  block_open:
-    .local pmc past
-    $P1 = get_hll_global ['PAST'], 'Stmts'
-    $P2 = $P1.'new'()
-    $P0 = get_hll_global ['PAST'], 'Block'
-    past = $P0.'new'($P2, 'blocktype'=>'immediate', 'node'=>match)
-    set_global '$?BLOCK', past
-    $P0 = get_global '@?BLOCK'
-    unshift $P0, past
-    .return ()
-  block_close:
-    $P0 = get_global '@?BLOCK'
-    past = shift $P0
-    $P1 = $P0[0]
-    set_global '$?BLOCK', $P1
-    $P2 = match['statement_list']
-    $P3 = $P2.'ast'()
-    past.'push'($P3)
-    match.'!make'(past)
-.end
-
-
-##    method statement_list($/) {
-##        my $past := PAST::Stmts.new(:node($/))
-##        for $<statement> {
-##            $past.push($($_));
-##        }
-##        make $past;
-##    }
-.sub 'statement_list' :method
-    .param pmc match
-    .local pmc past
-    $P0 = get_hll_global ['PAST'], 'Stmts'
-    past = $P0.'new'('node'=>match)
-    $P1 = match['statement']
-    if null $P1 goto iter_end
-    .local pmc it
-    it = iter $P1
-  iter_loop:
-    unless it goto iter_end
-    $P2 = shift it
-    $P2 = $P2.'ast'()
-    past.'push'($P2)
-    goto iter_loop
-  iter_end:
-    match.'!make'(past)
-.end
-
-
-##    method statement($/, $key) {
-##        make $($/{$key});
-##    }
-.sub 'statement' :method
-    .param pmc match
-    .param string key
-    $P0 = match[key]
-    $P1 = $P0.'ast'()
-    match.'!make'($P1)
-.end
-
-
-##    method if_statement($/) {
-##        my $cond := +$<EXPR> - 1;
-##        my $past := PAST::Op.new( $( $<EXPR>[$cond] ),
-##                                  $( $<block>[$cond] ),
-##                                  :pasttype('if'),
-##                                  :node( $/ )
-##                                );
-##        if ( $<else> ) {
-##            $past.push( $( $<else>[0] ) );
-##        }
-##        while ($cond != 0) {
-##            $cond := $cond - 1;
-##            $past := PAST::Op.new( $( $<EXPR>[$cond] ),
-##                                   $( $<block>[$cond] ),
-##                                   $past,
-##                                   :pasttype('if'),
-##                                   :node( $/ )
-##                                 );
-##        }
-##        make $past;
-.sub 'if_statement' :method
-    .param pmc match
-    .local pmc expr, block, past
-    .local int cond
-    .local pmc jmpstack
-    jmpstack = new 'ResizableIntegerArray'
-    cond = match['EXPR']
-    cond -= 1
-    local_branch jmpstack, get_expr
-    local_branch jmpstack, get_block
-    $P2 = get_hll_global ['PAST'], 'Op'
-    past = $P2.'new'(expr, block, 'pasttype'=>'if', 'node'=>match)
-
-    $I0 = exists match['else']
-    unless $I0 goto while
-    block = match['else']
-    block = block[0]
-    block = block.'ast'()
-    past.'push'( block )
-
-  while:
-    unless cond != 0 goto end_while
-    cond -= 1
-    local_branch jmpstack, get_expr
-    local_branch jmpstack, get_block
-    past = $P2.'new'(expr, block, past, 'pasttype'=>'if', 'node'=>match)
-    goto while
-
-  end_while:
-    goto end
-
-  get_expr:
-    expr = match['EXPR']
-    expr = expr[cond]
-    expr = expr.'ast'()
-    local_return jmpstack
-  get_block:
-    block = match['block']
-    block = block[cond]
-    block = block.'ast'()
-    local_return jmpstack
-  end:
-    match.'!make'(past)
-.end
-
-
-##    method unless_statement($/) {
-##        my $past := PAST::Op.new( $( $<EXPR> ),
-##                                  $( $<block> ),
-##                                  :pasttype('unless'),
-##                                  :node( $/ )
-##                                );
-##        make $past;
-##    }
-.sub 'unless_statement' :method
-    .param pmc match
-    .local pmc expr, block, past
-    expr = match['EXPR']
-    expr = expr
-    expr = expr.'ast'()
-    block = match['block']
-    block = block
-    block = block.'ast'()
-    $P0 = get_hll_global ['PAST'], 'Op'
-    past = $P0.'new'(expr, block, 'pasttype'=>'unless', 'node'=>match)
-    match.'!make'(past)
-.end
-
-
-##    method repeat_statement($/) {
-##        make PAST::Op.new( $($<EXPR>),
-##                           $($<block>),
-##                           :pasttype( 'repeat_' ~ $<sym> ),
-##                           :node( $/ )
-##                         );
-##    }
-.sub 'repeat_statement' :method
-    .param pmc match
-    $P1 = match['EXPR']
-    $P1 = $P1.'ast'()
-    $P2 = match['block']
-    $P2 = $P2.'ast'()
-    $S0 = match['sym']
-    $S0 = concat 'repeat_', $S0
-    $P0 = get_hll_global ['PAST'], 'Op'
-    $P5 = $P0.'new'( $P1, $P2, 'pasttype'=>$S0, 'node'=>match)
-    match.'!make'($P5)
-.end
-
-
-##    method while_statement($/) {
-##        make PAST::Op.new( $($<EXPR>),
-##                           $($<block>),
-##                           :pasttype( ~$<sym> ),
-##                           :node( $/ )
-##                         );
-##    }
-.sub 'while_statement' :method
-    .param pmc match
-    $P1 = match['EXPR']
-    $P1 = $P1.'ast'()
-    $P2 = match['block']
-    $P2 = $P2.'ast'()
-    $S0 = match['sym']
-    $P0 = get_hll_global ['PAST'], 'Op'
-    $P5 = $P0.'new'( $P1, $P2, 'pasttype'=>$S0, 'node'=>match)
-    match.'!make'($P5)
-.end
-
-
-##    method for_statement($/) {
-##        my $block := $<block>;
-##        $block.blocktype('immediate');
-##        $block.symbol('$_', :scope('lexical'));
-##        my $topic_var := PAST::Var.new( :name('$_'), :scope('parameter') );
-##        push @($block[0]), $topic_var;
-##        my $past := PAST::Op.new($($<EXPR>),
-##                                 $($<block>),
-##                                 :pasttype(~$<sym>),
-##                                 :node($/) );
-##        make $past;
-.sub 'for_statement' :method
-    .param pmc match
-    .local pmc block, past
-    $P0  = match['EXPR']
-    $P0  = $P0.'ast'()
-    $P1  = match['block']
-    block = $P1.'ast'()
-    block.'blocktype'('immediate')
-    .local pmc params, topic_var
-    params = block[0]
-    $P3 = get_hll_global ['PAST'], 'Var'
-    topic_var = $P3.'new'('name'=>'$_', 'scope'=>'parameter')
-    params.'push'(topic_var)
-    block.'symbol'('$_', 'scope'=>'lexical')
-    block.'arity'(1)
-    $P2  = get_hll_global ['PAST'], 'Op'
-    $S1  = match['sym']
-    past = $P2.'new'($P0, block, 'pasttype'=>$S1, 'node'=>match)
-    match.'!make'(past)
-.end
-
-
-##    method return_statement($/) {
-##        make PAST::Op.new( $($<EXPR>),
-##                           :pasttype('return'),
-##                           :node($/) );
-##    }
-.sub 'return_statement' :method
-    .param pmc match
-    $P0 = match['EXPR']
-    $P0 = $P0.'ast'()
-
-    $P1 = get_hll_global ['PAST'], 'Op'
-    $P1 = $P1.'new'( $P0, 'pasttype'=>'return', 'node'=>match)
-    match.'!make'($P1)
-.end
-
-
-##    method make_statement($/) {
-##        make PAST::Op.new( PAST::Var.new( :name('$/'),
-##                                          :scope('lexical') ),
-##                           $($<EXPR>),
-##                           :name('!make'),
-##                           :pasttype('callmethod') );
-##    }
-.sub 'make_statement' :method
-    .param pmc match
-    $P0 = get_hll_global ['PAST'], 'Var'
-    $P1 = $P0.'new'( 'name'=>'$/', 'scope'=>'lexical' )
-    $P2 = match['EXPR']
-    $P3 = $P2.'ast'()
-    $P4 = get_hll_global ['PAST'], 'Op'
-    $P5 = $P4.'new'($P1, $P3, 'name'=>'!make', 'pasttype'=>'callmethod')
-    match.'!make'($P5)
-.end
-
-
-##    method inline_pir_statement($/, $key) {
-##        my $inline;
-##        if ($key eq 'quote')   { $inline := ~$($<quote><string_literal>) }
-##        if ($key eq 'heredoc') { $inline := ~$/<text> }
-##
-##        make PAST::Op.new( :inline( $inline ),
-##                           :pasttype('inline'),
-##                           :node( $/ )
-##                         );
-##    }
-.sub 'inline_pir_statement' :method
-    .param pmc match
-    .param pmc key
-    .local pmc inline
-    if key != 'quote' goto not_quote
-    $P0 = match['quote']
-    $P0 = $P0['string_literal']
-    inline = $P0.'ast'()
-    goto make
-  not_quote:
-    if key != 'heredoc' goto not_heredoc
-    $P0 = match['text']
-    inline = $P0.'Str'()
-  not_heredoc:
-  make:
-    $P1 = get_hll_global ['PAST'], 'Op'
-    $P2 = $P1.'new'( 'inline'=>inline, 'pasttype'=>'inline', 'node'=>match)
-    match.'!make'($P2)
-.end
-
-
-##    method block($/) {
-##        make $($<statement_block>);
-##    }
-.sub 'block' :method
-    .param pmc match
-    $P0 = match['statement_block']
-    $P0 = $P0.'ast'()
-    match.'!make'($P0)
-.end
-
-
-#### Subroutine and method definitions ####
-
-##    method routine_def($/) {
-##        my $past := $($<block>);
-##        $past.name(~$<name>);
-##        $past.node($/);
-##        $past.blocktype('declaration');
-##        $past.control('return_pir');
-##        my $params := $past[0];
-##        if $<declarator> eq 'method' {
-##            $past.blocktype('method');
-##            $past.push(PAST::Op.new('inline'=>'.lex 'self', self);
-##            $past.symbol('self', :scope('lexical'));
-##        }
-##        for $<signature>[0] {
-##            my $parameter := $($_<parameter>);
-##            $past.symbol($parameter.name(), :scope('lexical'));
-##            $params.push($parameter);
-##        }
-##        make $past;
-##    }
-.sub 'routine_def' :method
-    .param pmc match
-    .local pmc past
-    $P0 = match['block']
-    past = $P0.'ast'()
-    $S0 = match['name']
-    past.'name'($S0)
-    past.'node'(match)
-    past.'blocktype'('declaration')
-    past.'control'('return_pir')
-    .local pmc params
-    params = past[0]
-    $S0 = match['declarator']
-    if $S0 != 'method' goto add_signature
-    past.'blocktype'('method')
-    $P3 = get_hll_global ['PAST'], 'Op'
-    $P4 = $P3.'new'('inline'=>'    .lex "self", self', 'pasttype'=>'inline')
-    unshift past, $P4
-    past.'symbol'('self', 'scope'=>'lexical')
-  add_signature:
-    $P0 = match['signature']
-    $P0 = $P0[0]
-    if null $P0 goto param_end
-    unless $P0 goto param_end
-    .local pmc it
-    it = iter $P0
-  param_loop:
-    unless it goto param_end
-    $P1 = shift it
-    .local pmc parameter
-    $P2 = $P1['parameter']
-    parameter = $P2.'ast'()
-    $S0 = parameter.'name'()
-    past.'symbol'($S0, 'scope'=>'lexical')
-    params.'push'(parameter)
-    goto param_loop
-  param_end:
-    match.'!make'(past)
-.end
-
-
-##    method parameter($/, $key) {
-##        my $past := $( $<param_var> );
-##        my $sigil := $<param_var><sigil>;
-##        if $key eq 'slurp' {              # slurpy
-##            $past.slurpy( $sigil eq '@' || $sigil eq '%' );
-##            $past.named( $sigil eq '%' );
-##        }
-##        else {
-##            if $<named> eq ':' {          # named
-##                $past.named(~$<param_var><ident>);
-##                if $<quant> ne '!' {      #  required (optional is default)
-##                    $past.viviself('Undef');
-##                }
-##            }
-##            else {                        # positional
-##                if $<quant> eq '?' {      #  optional (required is default)
-##                    $past.viviself('Undef');
-##                }
-##            }
-##        }
-##        make $past;
-##    }
-.sub 'parameter' :method
-    .param pmc match
-    .param pmc key
-    .local pmc past, sigil
-    past = match['param_var']
-    past = past.'ast'()
-    sigil = match['param_var';'sigil']
-    if key != 'slurp' goto not_slurp
-    if sigil != '@' goto not_slurpy_array
-    past.'slurpy'(1)
-  not_slurpy_array:
-    if sigil != '%' goto not_slurpy_hash
-    past.'slurpy'(1)
-  not_slurpy_hash:
-    if sigil != '%' goto not_slurp
-    past.'named'(1)
-    goto make_past
-  not_slurp:
-    $S0 = match['named']
-    if $S0 != ':' goto not_named
-    $S0 = match['param_var';'ident']
-    past.'named'($S0)
-    $S0 = match['quant']
-    if $S0 == '!' goto not_named
-    past.'viviself'('Undef')
-  not_named:
-    $S0 = match['quant']
-    if $S0 != '?' goto make_past
-    past.'viviself'('Undef')
-  make_past:
-    match.'!make'(past)
-.end
-
-
-##    method param_var($/) {
-##        make PAST::Var.new(:name(~$/),
-##                           :scope('parameter'),
-##                           :node($/) );
-##    }
-.sub 'param_var' :method
-    .param pmc match
-    $S0 = match
-    $P0 = get_hll_global ['PAST'], 'Var'
-    $P1 = $P0.'new'('name'=>$S0, 'scope'=>'parameter', 'node'=>match)
-    match.'!make'($P1)
-.end
-
-
-#### Terms and expressions ####
-
-##    method term($/, $key) {
-##        my $past := $($<noun>);
-##        for $<postfix> {
-##            my $term := $past;
-##            $past := $($_);
-##            $past.unshift($term);
-##        }
-##        make $past;
-##    }
-.sub 'term' :method
-    .param pmc match
-    .param pmc key
-    .local pmc past
-    $P0 = match['noun']
-    past = $P0.'ast'()
-    $P1 = match['postfix']
-    if null $P1 goto end
-    .local pmc it, term
-    it = iter $P1
-  iter_loop:
-    unless it goto end
-    $P2 = shift it
-    term = past
-    past = $P2.'ast'()
-    past.'unshift'(term)
-    goto iter_loop
-  end:
-    match.'!make'(past)
-.end
-
-
-##    method postfix($/, $key) {
-##        make $($/{$key});
-##    }
-.sub 'postfix' :method
-    .param pmc match
-    .param string key
-    $P0 = match[key]
-    $P1 = $P0.'ast'()
-    match.'!make'($P1)
-.end
-
-
-##    method methodop($/, $key) {
-##        my $past := $key eq 'null'
-##                        ?? PAST::Op.new
-##                        !! $<arglist>.ast;
-##        $past.name(~$<ident>);
-##        $past.pasttype('callmethod');
-##        $past.node($/);
-##        make $past;
-##    }
-.sub 'methodop' :method
-    .param pmc match
-    .param string key
-    .local pmc past
-    unless key == 'null' goto arglist
-    $P0 = get_hll_global ['PAST'], 'Op'
-    past = $P0.'new'()
-    goto have_past
-  arglist:
-    $P0 = match['arglist']
-    past = $P0.'ast'()
-  have_past:
-    $S0 = match['ident']
-    past.'name'($S0)
-    past.'pasttype'('callmethod')
-    past.'node'(match)
-    match.'!make'(past)
-.end
-
-
-##    method postcircumfix($/, $key) {
-##        if $key eq '( )' {
-##            my $past := $($<arglist>);
-##            $past.pasttype('call');
-##            $past.node($/);
-##            make $past;
-##        }
-##        elseif $key eq '< >' {
-##            my $value := PAST::Val.new( :value( $($<string_literal>) ) );
-##            make PAST::Var.new( $value,
-##                                :scope('keyed'),
-##                                :vivibase('Hash'),
-##                                :viviself('Undef'),
-##                                :node( $/ ) );
-##        }
-##        else {
-##            my $vivibase := ($key eq '{ }') ?? 'Hash' !! 'ResizablePMCArray';
-##            make PAST::Var.new( $($<EXPR>),
-##                                :scope('keyed'),
-##                                :vivibase($vivibase),
-##                                :viviself('Undef'),
-##                                :node($/) );
-##        }
-##    }
-.sub 'postcircumfix' :method
-    .param pmc match
-    .param string key
-    .local pmc past
-    if key == '( )' goto subcall
-    if key == '< >' goto keyed_const
-  keyed_var:
-    .local string vivibase, scope
-    vivibase = 'Hash'
-    scope = 'keyed'
-    if key != '[ ]' goto keyed_hash
-    vivibase = 'ResizablePMCArray'
-    scope = 'keyed_int'
-  keyed_hash:
-    $P0 = get_hll_global ['PAST'], 'Var'
-    $P1 = match['EXPR']
-    $P2 = $P1.'ast'()
-    $P3 = $P0.'new'( $P2, 'scope'=>scope, 'vivibase'=>vivibase, 'viviself'=>'Undef', 'node'=>match )
-    match.'!make'($P3)
-    .return ()
-  subcall:
-    $P0 = match['arglist']
-    past = $P0.'ast'()
-    past.'pasttype'('call')
-    past.'node'(match)
-    match.'!make'(past)
-    .return ()
-  keyed_const:
-    $P0 = get_hll_global ['PAST'], 'Val'
-    $P1 = match['string_literal']
-    $P2 = $P1.'ast'()
-    .local pmc value
-    value = $P0.'new'( 'value' => $P2, 'node'=> $P1 )
-    $P0 = get_hll_global ['PAST'], 'Var'
-    $P1 = $P0.'new'( value, 'scope'=>'keyed', 'vivibase'=>'Hash', 'viviself'=>'Undef', 'node'=>match)
-    match.'!make'($P1)
-.end
-
-
-##method circumfix($/, $key) {
-##    my $expr := $($<EXPR>[0]);
-##    if $key eq '@( )' {
-##        make PAST::Op.new( $expr,
-##                           :name('list'),
-##                           :pasttype('callmethod'),
-##                           :node($/) );
-##    }
-##    if $key eq '$( )' {
-##        make PAST::Op.new( $expr,
-##                           :name('ast'),
-##                           :pasttype('callmethod'),
-##                           :node($/) );
-##    }
-##    make $expr;
-##}
-.sub 'circumfix' :method
-    .param pmc match
-    .param string key
-    .local pmc past
-    $P0 = match['EXPR']
-    unless null $P0 goto have_expr
-    $P1 = match
-    goto get_past
-  have_expr:
-    $P1 = $P0[0]
-  get_past:
-    $P1 = $P1.'ast'()
-    $P0 = get_hll_global ['PAST'], 'Op'
-    if key == '@( )' goto list_context
-    if key == '$( )' goto scalar_context
-  parenthetical:
-    match.'!make'($P1)
-    .return ()
-  list_context:
-    past = $P0.'new'($P1, 'name' => 'list',  'pasttype'=>'callmethod', 'node'=>match)
-    match.'!make'(past)
-    .return ()
-  scalar_context:
-    past = $P0.'new'($P1, 'name' => 'ast', 'pasttype'=>'callmethod', 'node'=>match)
-    match.'!make'(past)
-.end
-
-
-##    method arglist($/) {
-##        sub callarg($arg) {
-##            if $arg.returns() eq 'Pair' {
-##                $arg[1].named($arg[0]);
-##                $arg := $arg[1];
-##            }
-##            return $arg;
-##        }
-##
-##        my $past := PAST::Op.new( :node($/) );
-##        if ($<EXPR>) {
-##            my $expr := $($<EXPR>[0]);
-##            if ($expr.name() eq 'infix:,') {
-##                for @($expr) {
-##                    $past.push( callarg($_) );
-##                }
-##            }
-##            else {
-##                $past.push( callarg($expr) );
-##            }
-##        }
-##        make $past;
-##    }
-.sub 'arglist' :method
-    .param pmc match
-    .local pmc past
-    $P0 = get_hll_global ['PAST'], 'Op'
-    past = $P0.'new'( 'node'=>match )
-    $P1 = match['EXPR']
-    if null $P1 goto end
-    .local pmc expr, iter
-    $P2 = $P1[0]
-    expr = $P2.'ast'()
-    $S0 = expr.'name'()
-    if $S0 != 'infix:,' goto one_arg
-  comma_arg:
-    iter = expr.'iterator'()
-  iter_loop:
-    unless iter goto end
-    $P0 = shift iter
-    $P0 = 'callarg'($P0)
-    past.'push'($P0)
-    goto iter_loop
-  one_arg:
-    $P0 = 'callarg'(expr)
-    past.'push'($P0)
-  end:
-    match.'!make'(past)
-.end
-
-.sub 'callarg'
-    .param pmc arg
-    $S0 = arg.'returns'()
-    unless $S0 == 'Pair' goto end
-    $P0 = arg[0]
-    $P1 = arg[1]
-    $P1.'named'($P0)
-    arg = $P1
-  end:
-    .return (arg)
-.end
-
-
-##    method noun($/, $key) {
-##        if $key eq 'self' {
-##            make PAST::Var.new(:name('self'), :scope('lexical'), :node($/));
-##        }
-##        else {
-##            make $($/{$key});
-##        }
-##    }
-.sub 'noun' :method
-    .param pmc match
-    .param pmc key
-
-    $P0 = match[key]
-    if key == 'self' goto make_self
-    $P1 = $P0.'ast'()
-    match.'!make'($P1)
-    .return()
-  make_self:
-    $P9 = get_hll_global ['PAST'], 'Var'
-    $P1 = $P9.'new'('scope'=>'lexical', 'name'=>'self', 'node'=>$P0)
-    match.'!make'($P1)
-.end
-
-
-##    method colonpair($/) {
-##        make PAST::Op.new( PAST::Val.new( :value(~$<ident>),
-##                                          :node($<ident>)),
-##                           $($<EXPR>),
-##                           :name('infix:=>'),
-##                           :returns('Pair'),
-##                           :node($/)
-##                         );
-##    }
-.sub 'colonpair' :method
-    .param pmc match
-    $S0 = match['ident']
-    $P0 = match['ident']
-    $P9 = get_hll_global ['PAST'], 'Val'
-    $P1 = $P9.'new'('value'=>$S0, 'node'=>$P0)
-    $P2 = match['EXPR']
-    $P2 = $P2.'ast'()
-    $P9 = get_hll_global ['PAST'], 'Op'
-    $P3 = $P9.'new'($P1, $P2, 'name'=>'infix:=>', 'returns'=>'Pair', 'node'=>match)
-    match.'!make'($P3)
-.end
-
-
-##    method package_declarator($/, $key) {
-##        my $past := $($/{$key});
-##        $past.namespace($<name><ident>);
-##        $past.blocktype('declaration');
-##        $past.pirflags(':init :load');
-##        if ($<sym> eq 'class') {
-##            my $classpast :=
-##                PAST::Op.new(
-##                    ...P6metaclass...,
-##                    ~$<name>,
-##                    :pasttype('callmethod'), :name('new_class')
-##                );
-##            if $<parent> {
-##                $classpast.push(
-##                    PAST::Val.new( ~$<parent>[0] , :named('parent') )
-##                );
-##            }
-##            $past.push($classpast);
-##        }
-##        make $past;
-##    }
-.sub 'package_declarator' :method
-    .param pmc match
-    .param pmc key
-    .local pmc past
-    $P0 = match[key]
-    past = $P0.'ast'()
-    $P1 = match['name']
-    $P1 = $P1['ident']
-    past.'namespace'($P1)
-    past.'blocktype'('declaration')
-    past.'pirflags'(':init :load')
-    past.'lexical'(0)
-    $S0 = match['sym']
-    if $S0 != 'class' goto class_done
-    .local pmc classvar, classop
-    $P0 = get_hll_global ['PAST'], 'Op'
-    classvar = $P0.'new'( 'inline'=>'%r = get_root_global ["parrot"], "P6metaclass"' )
-    $P0 = get_hll_global ['PAST'], 'Op'
-    $S0 = match['name']
-    classop = $P0.'new'( classvar, $S0, 'pasttype'=>'callmethod', 'name'=>'new_class')
-    $P2 = past[0]
-    .local pmc parent
-    parent = match['parent']
-    if null parent goto parent_done
-    $S0 = parent[0]
-    $P0 = get_hll_global ['PAST'], 'Val'
-    $P1 = $P0.'new'( 'value'=>$S0, 'named'=>'parent' )
-    classop.'push'($P1)
-  parent_done:
-    $P2.'push'(classop)
-  class_done:
-    match.'!make'(past)
-.end
-
-
-##    method scope_declarator($/) {
-##        my $past := $($<variable>);
-##        my $name := $past.name();
-##        our $?BLOCK;
-##        unless $?BLOCK.symbol($name) {
-##            $past.isdecl(1);
-##            my $scope := ($<declarator> eq 'my') ? 'lexical' : 'package';
-##            $?BLOCK.symbol($name, :scope($scope));
-##        }
-##        make $past;
-##   }
-.sub 'scope_declarator' :method
-    .param pmc match
-    .local pmc past, block
-    .local string name
-    $P0 = match['variable']
-    past = $P0.'ast'()
-    name = past.'name'()
-    block = get_global '$?BLOCK'
-    $P0 = block.'symbol'(name)
-    if $P0 goto end
-    past.'isdecl'(1)
-    .local string scope
-    scope = 'package'
-    $S0 = match['declarator']
-    if $S0 != 'my' goto have_scope
-    scope = 'lexical'
-  have_scope:
-    block.'symbol'(name, 'scope'=>scope)
-  end:
-    match.'!make'(past)
-.end
-
-
-##    method variable($/, $key) {
-##        if ($key eq '$< >') {
-##            make PAST::Var.new(
-##                     PAST::Var.new(:scope('lexical'), :name('$/') ),
-##                     PAST::Val.new(:value(~$/[0])),
-##                     :scope('keyed'),
-##                     :viviself('Undef') );
-##        }
-##        else {
-##            make PAST::Var.new( :node($/), :name(~$/) )
-##        }
-##    }
-.sub 'variable' :method
-    .param pmc match
-    .param pmc key
-    if key != '$< >' goto past_var
-  past_match_keyed:
-    $P0 = get_hll_global ['PAST'], 'Var'
-    $P1 = $P0.'new'('scope'=>'lexical', 'name'=>'$/')
-    $P2 = get_hll_global ['PAST'], 'Val'
-    $S0 = match[0]
-    $P3 = $P2.'new'('value'=>$S0)
-    $P4 = $P0.'new'($P1, $P3, 'scope'=>'keyed', 'viviself'=>'Undef')
-    match.'!make'($P4)
-    .return ()
-  past_var:
-    $S0 = match
-    $S1 = match['sigil']
-    $S2 = 'Undef'
-    if $S1 != '%' goto past_sigil_is_array
-    $S2 = 'Hash'
-    goto past_sigil
-  past_sigil_is_array:
-    if $S1 != '@' goto past_sigil
-    $S2 = 'ResizablePMCArray'
-    goto past_sigil
-  past_sigil:
-    $P0 = get_hll_global ['PAST'], 'Var'
-    $P1 = $P0.'new'('node'=>match, 'name'=>$S0, 'viviself'=>$S2)
-    match.'!make'($P1)
-.end
-
-
-##    method value($/, $key) {
-##        make $($/{$key});
-##    }
-.sub 'value' :method
-    .param pmc match
-    .param pmc key
-    $P0 = match[key]
-    $P1 = $P0.'ast'()
-    match.'!make'($P1)
-.end
-
-
-##    method quote($/, $key) {
-##        if $key eq 'PIR' {
-##            make PAST::Op.new( :node($/), :inline(~($[0])) );
-##        }
-##        else {
-##            make PAST::Val.new( :node($/), :value(~($<string_literal>)) );
-##        }
-##    }
-.sub 'quote' :method
-    .param pmc match
-    .param pmc key             :optional
-    .local string value
-    unless key == 'PIR' goto quote_string
-  quote_pir:
-    $S0 = match[0]
-    $P0 = get_hll_global ['PAST'], 'Op'
-    $P1 = $P0.'new'('node'=>match, 'inline'=>$S0)
-    goto end
-  quote_string:
-    $P0 = match['string_literal']
-    value = $P0.'ast'()
-    $P0 = get_hll_global ['PAST'], 'Val'
-    $P1 = $P0.'new'('node'=>match, 'value'=>value)
-  end:
-    match.'!make'($P1)
-.end
-
-
-##    method typename($/, $key) {
-##        my $ns := $<name><ident>.clone();
-##        my $name := $ns.pop();
-##        make PAST::Var.new( :node($/),
-##                            :scope('package'),
-##                            :name($name),
-##                            :namespace($ns)
-##                          );
-##    }
-.sub 'typename' :method
-    .param pmc match
-    .param pmc key
-    .local pmc ns, name
-    $P0 = match['name']
-    $P0 = $P0['ident']
-    ns = clone $P0
-    name = pop ns
-    $P0 = get_hll_global ['PAST'], 'Var'
-    $P1 = $P0.'new'('node'=>match, 'scope'=>'package', 'name'=>name, 'namespace'=>ns)
-    match.'!make'($P1)
-.end
-
-
-##    method number($/, $key?) {
-##        make PAST::Val.new( :node($/), :name(~$/), :returns("Integer") );
-##    }
-.sub 'number' :method
-    .param pmc match
-    .param pmc key             :optional
-    .local pmc past
-    $I0 = match
-    $P0 = get_hll_global ['PAST'], 'Val'
-    past = $P0.'new'('node'=>match, 'value'=>$I0)
-    match.'!make'(past)
-.end
-
-
-##    method subcall($/, $key?) {
-##        my $past := $($<arglist>);
-##        $past.name(~$<ident>);
-##        $past.pasttype('call');
-##        $past.node($/);
-##        make $past;
-##    }
-.sub 'subcall' :method
-    .param pmc match
-    .param pmc key             :optional
-    .local pmc past
-    $P0 = match['arglist']
-    past = $P0.'ast'()
-    $S0 = match['ident']
-    past.'name'($S0)
-    past.'pasttype'('call')
-    past.'node'(match)
-    match.'!make'(past)
-.end
-
-
-#### Expressions and operators ####
-
-##    method EXPR($/, $key) {
-##        if ($key eq 'end') { make $($<expr>); }
-##        my $past := PAST::Op.new( :node($/),
-##                                  :name($<type>),
-##                                  :opattr($<top>),
-##                                );
-##        for @($/) {
-##            $past.push($($_));
-##        }
-##        make $past;
-##    }
-.sub 'EXPR' :method
-    .param pmc match
-    .param pmc key
-    if key != 'end' goto expr_reduce
-  expr_end:
-    $P0 = match['expr']
-    $P1 = $P0.'ast'()
-    match.'!make'($P1)
-    .return ()
-  expr_reduce:
-    .local pmc past, opattr
-    .local string name
-    name = match['type']
-    opattr = match['top']
-    $P0 = get_hll_global ['PAST'], 'Op'
-    past = $P0.'new'('node'=>match, 'name'=>name, 'opattr'=>opattr)
-    $P1 = match.'list'()
-    if null $P1 goto iter_end
-    .local pmc it
-    it = iter $P1
-  iter_loop:
-    unless it goto iter_end
-    $P2 = shift it
-    $I0 = $P2.'from'()
-    $I1 = $P2.'to'()
-    if $I0 == $I1 goto iter_loop
-    $P2 = $P2.'ast'()
-    past.'push'($P2)
-    goto iter_loop
-  iter_end:
-    match.'!make'(past)
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/compilers/nqp/src/builtins.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/src/builtins.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,156 +0,0 @@
-# Copyright (C) 2007-2009, Parrot Foundation.
-# $Id$
-
-.namespace []
-
-=over 4
-
-=item C<print(...)>
-
-Implementing a Perl 6 style print statement.
-
-=cut
-
-.sub 'print'
-    .param pmc list            :slurpy
-    .local pmc it
-
-    it = iter list
-  iter_loop:
-    unless it goto iter_end
-    $P0 = shift it
-    print $P0
-    goto iter_loop
-  iter_end:
-    .return (1)
-.end
-
-
-=item C<say(...)>
-
-Implementing a Perl 6 style say statement, which automatically appends
-a newline to the end of what is printed.
-
-=cut
-
-.sub 'say'
-    .param pmc list            :slurpy
-    .tailcall 'print'(list :flat, "\n")
-.end
-
-
-=item C<infix:,>
-
-Build a list from the arguments sent to the operator.
-
-=cut
-
-.sub 'infix:,'
-    .param pmc args            :slurpy
-    .local pmc list
-    list = new 'ResizablePMCArray'
-  args_loop:
-    unless args goto end
-    $P0 = shift args
-    push list, $P0
-    goto args_loop
-  end:
-    .return (list)
-.end
-
-=item C<ok(...)>
-
-Internal implementation of the Test::More 'ok'.  It increments
-the internal test counter and handles making test output.
-
-=cut
-
-.sub 'ok'
-    .param pmc    condition
-    .param string description :optional
-    .param int    has_desc    :opt_flag
-    if condition goto it_was_ok
-        print "not "
-  it_was_ok:
-    print "ok "
-    $P0 = get_global "$test_counter"
-    $P0 += 1
-    print $P0
-    unless has_desc goto no_description
-        print " # "
-        print description
-  no_description:
-    print "\n"
-    .return (1)
-.end
-
-
-=item C<plan(...)>
-
-Internal implementation of the Test::More 'plan'.  It sets the internal
-test counter to 0 and outputs the TAP plan line.
-
-=cut
-
-.sub 'plan'
-    .param int quantity
-    $P0 = new 'Integer'
-    $P0 = 0
-    set_global "$test_counter", $P0
-    print "1.."
-    print quantity
-    print "\n"
-.end
-
-.sub 'onload' :init :load
-    #Initialize on load, in case they do not call plan.
-    $P0 = new 'Integer'
-    $P0 = 0
-    set_global "$test_counter", $P0
-.end
-
-=item C<load_bytecode(string)>
-
-=cut
-
-.sub 'load_bytecode'
-    .param string str
-    load_bytecode str
-    .return ()
-.end
-
-=item C<sleep(sec)>
-
-=cut
-
-.sub 'sleep'
-    .param int sec
-    sleep sec
-    .return ()
-.end
-
-=item C<eval(lang,code)>
-
-=cut
-
-.sub 'eval'
-    .param string text
-    .param string lang
-    .local pmc c, code
-    lang = downcase lang
-    load_language lang
-    c = compreg lang
-    code = c.'compile'(text)
-    $P0 = code()
-    .return ($P0)
-.end
-
-=back
-
-=cut
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/compilers/nqp/t/01-literals.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/01-literals.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,18 +0,0 @@
-# check literals
-
-say('1..8');
-
-print("ok ");
-print(1);
-print("\n");
-
-print('ok ');
-say(2);
-
-print("ok 3\n");
-say('ok 4');
-say("ok 5");
-say(q<ok 6>);
-say(q  <ok 7>);
-
-say("\x6f\x6b 8");

Deleted: branches/compact_pool_revamp/compilers/nqp/t/02-if-else.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/02-if-else.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,130 +0,0 @@
-# check control structure 'if ... else'
-
-say('1..14');
-
-if 1 { say("ok 1 # on one line with else"); } else { say("not ok 1 # on one line with else")}
-
-say("ok 2 # statements following if with else are okay");
-
-if 1 {
-    print("ok 3");
-}
-else {
-    print("not ok 3");
-}
-say(" # multi-line if with else");
-
-if 0 {
-    print("not ok 4");
-}
-else {
-    print("ok 4");
-}
-say(" # multi-line if, else branch");
-
-if 0 {
-}
-else {
-    print("ok 5");
-}
-say(" # empty if-block");
-
-if 0 {
-    print("not ok 6");
-}
-else {
-}
-print("ok 6");
-say(" # empty else-block");
-
-if 0 {
-}
-else {
-}
-print("ok 7");
-say(" # empty if- and else-block");
-
-if 0 {
-}
-elsif 0 {
-}
-elsif 0 {
-}
-else {
-}
-print("ok 8");
-say(" # empty if-, elsif-, and else-block");
-
-if 1 {
-    print("ok 9");
-}
-elsif 0 {
-    print("not ok 9 # elsif 1");
-}
-elsif 0 {
-    print("not ok 9 # elsif 2");
-}
-else {
-    print("not ok 9 # else");
-}
-say(" # if expr true in if/elsif/elsif/else");
-
-if 0 {
-    print("not ok 10 # if");
-}
-elsif 1 {
-    print("ok 10");
-}
-elsif 0 {
-    print("not ok 10 # elsif 2");
-}
-else {
-    print("not ok 10 # else");
-}
-say(" # first elsif expr true in if/elsif/elsif/else");
-
-if 0 {
-    print("not ok 11 # if");
-}
-elsif 0 {
-    print("not ok 11 # elsif 1");
-}
-elsif 1 {
-    print("ok 11");
-}
-else {
-    print("not ok 11 # else");
-}
-say(" # second elsif expr true in if/elsif/elsif/else");
-
-if 0 {
-    print("not ok 12 # if");
-}
-elsif 1 {
-    print("ok 12");
-}
-elsif 1 {
-    print("not ok 12 # elsif 2");
-}
-else {
-    print("not ok 12 # else");
-}
-say(" # first and second elsif expr true in if/elsif/elsif/else");
-
-if 0 {
-    print("not ok 13 # if");
-}
-elsif 0 {
-    print("not ok 13 # elsif 1");
-}
-elsif 0 {
-    print("not ok 13 # elsif 2");
-}
-else {
-    print("ok 13");
-}
-say(" # else expr true in if/elsif/elsif/else");
-
-if 0 { } elsif 0 { }
-print("ok 14");
-say(" # no else block in if/elsif")

Deleted: branches/compact_pool_revamp/compilers/nqp/t/02-if.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/02-if.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,16 +0,0 @@
-# check control structure 'if'
-
-say('1..4');
-
-if 1 { say("ok 1 # on one line"); }
-
-say("ok 2 # statements following if are okay");
-
-if 1 {
-    say("ok 3 # multi-line if");
-}
-
-if 0 {
-    print("not ");
-}
-say("ok 4 # multi-line if, false condition causes block not to execute");

Deleted: branches/compact_pool_revamp/compilers/nqp/t/03-unless.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/03-unless.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,16 +0,0 @@
-# check control structure 'unless'
-
-say('1..4');
-
-unless 0 { say("ok 1 # on one line"); }
-
-say("ok 2 # statements following unless are okay");
-
-unless 0 {
-    say("ok 3 # multi-line unless");
-}
-
-unless 1 {
-    print("not ");
-}
-say("ok 4 # testing conditional");

Deleted: branches/compact_pool_revamp/compilers/nqp/t/04-comments.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/04-comments.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,11 +0,0 @@
-# check comments
-
-say('1..2');
-
-#Comment preceding
-say("ok 1");
-
-say("ok 2"); #Comment following
-
-#say("not ok 3");
-#          say("not ok 4");

Deleted: branches/compact_pool_revamp/compilers/nqp/t/05-pod.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/05-pod.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,25 +0,0 @@
-# check pod
-
-say('1..4');
-
-say("ok 1");
-
-=head1 POD comment
-
-This next line should not be executed because it is inside
-of a valid pod statement.
-
-print("not ");
-
-=cut
-
-say("ok 2 # POD comments end");
-
-=for comment
-
-say("ok 3 # = for terminated by a new line");
-
-=for comment
-print("not ");
-
-say("ok 4 # actually comment out something");

Deleted: branches/compact_pool_revamp/compilers/nqp/t/06-args-pos.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/06-args-pos.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,8 +0,0 @@
-# positional arguments
-
-say('1..2');
-
-say("ok ", 1);
-
-print('o', 'k', ' ', 2, "\n");
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/07-boolean.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/07-boolean.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,25 +0,0 @@
-# Testing boolean context operators, ! and ?
-
-plan(8);
-
-##Negation
-ok(!0,   'prefix negation on integer 0');
-ok(!"0", 'prefix negation on string 0');
-
-if !1 {
-    print("not");
-}
-ok(1, "negating integer 1");
-
-ok(!!1, 'double negation on 1');
-
-##Boolean context
-ok(?1,    'prefix negation on integer 1');
-ok(?"10", 'prefix negation on string 10');
-
-if ?0 {
-    print("not");
-}
-ok(1, "boolean integer 0");
-
-ok(!?!?1, 'spaghetti chaining');

Deleted: branches/compact_pool_revamp/compilers/nqp/t/08-blocks.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/08-blocks.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,31 +0,0 @@
-# check blocks and statement enders
-
-say('1..7');
-
-{
-    say("ok 1 # blocks are okay");
-}
-
-{
-    print("ok ");
-    say("2 # last statement in a block does not need a semi-colon")
-}
-
-
-{
-    say("ok 3 # statements can precede blocks");
-    {
-        say("ok 4 # blocks can nest");
-    }
-    say("ok 5 # statements can follow blocks");
-}
-
-
-{ print("ok ") }; { say("6 # multiple blocks on one line need a semi-colon") }
-
-{
-    print("ok ")
-}; {
-    say("7 # blocks following an end brace must be separated by a semicolon")
-}
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/09-var.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/09-var.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,82 +0,0 @@
-# check variables
-
-say('1..14');
-
-my $o1 := 'ok 1'; print($o1); say(" # direct binding and scoping");
-
-my $o2; $o2 := 'ok 2'; print($o2); say(" # first scope and declare, then bind");
-
-my $o3 := 'ok 3';
-my $p3 := $o3;
-print($p3); say(" # bind to another variable");
-
-my $o4 := 'ok 4';
-my $p4 := $o4;
-$o4 := 'not ok 4';
-print($p4); say(" # rebind the original, the bound one does not change");
-
-my $o5 := 'ok 5';
-my $p5 := $o5;
-my $o5 := 'not ok 5';
-unless $p5 {
-    print("not ");
-}
-say("ok 5 # rebind and redeclare the original.  The value is lost");
-
-my $r1 := 'not ok 6';
-my $r2 := 'ok 6';
-my $r3;
-$r3 := $r1;
-$r3 := $r2;
-print($r3); say(' # variables can be rebound');
-
-my $b1 := 'ok 8';
-
-{
-    my $b1 := 'ok 7';
-    print($b1); say(' # my scoping works inside a block');
-}
-
-print($b1); say(' # block does not stomp on out scope');
-
-my $b2 := 'ok 9';
-
-{
-    print($b2); say(' # variables scoped outside of block persists inside the block');
-}
-
-my $b3;
-{
-    my $b4 := 'ok 10';
-    $b3 := $b4;
-}
-print($b3); say(' # variable is bound to the value, not the symbol in the block');
-
-my $b5 := '';
-{
-    my $b5 := 'not ';
-}
-print($b5);say('ok 11 # $b5, defined inside block, does not exist outside');
-
-{
-    our $m1 := 'ok 12 ';
-}
-
-our $m1;
-unless $m1 {
-    print('not ');
-}
-say('ok 12 # our variables have package scope, exists outside of block');
-
-our $m2;
-$m2 := 'ok 13';
-{
-    print($m2); say(' # our variables exist inside blocks');
-}
-
-our $m3;
-$m3 := 'not ok 14';
-{
-    $m3 := 'ok 14';
-}
-print($m3); say(' # our variables written inside block keep their values outside');

Deleted: branches/compact_pool_revamp/compilers/nqp/t/10-sub.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/10-sub.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,74 +0,0 @@
-# check subs
-
-say('1..11');
-
-sub one ( ) {
-    say("ok 1 # sub def and call");
-}
-
-one();
-
-{
-    sub two ( ) {
-        say("ok 2 # sub def and call inside block");
-    }
-    two();
-}
-
-sub three ( ) { say("ok 3 # sub def; sub call on same line"); }; three();
-
-sub four_five ($arg1) {
-    say($arg1);
-}
-four_five('ok 4 # passed in 1 arg');
-
-{
-    four_five('ok 5 # calling sub in outer scope');
-}
-
-{
-    sub six ( ) {
-        say("ok 6 # def in inner scope, called from outer scope");
-    }
-}
-six();
-
-sub seven () {
-    "ok 7 # return string literal from sub";
-}
-
-say(seven());
-
-sub eight () {
-    "ok 8 # bind sub return to variable";
-}
-
-my $retVal := eight();
-
-unless $retVal {
-    print("not ");
-}
-say($retVal);
-
-sub add_stomp ($first, $last) {
-    my $sum := $first + $last;
-    $first  := $last - $first;
-    $sum;
-}
-
-print("ok "); print(add_stomp(3,6)); say(" # returning the result of operating on arguments");
-
-my $five  := 5;
-my $seven := 7;
-
-add_stomp($five, $seven);
-
-if $five != 5 {
-    print("not ");
-}
-say("ok 10 # subroutines that operate on args do not affect the original arg outside the sub");
-
-sub eleven ($arg) {
-    say("ok 11 # parameter with a trailing comma");
-}
-eleven( 'dummy', ); 

Deleted: branches/compact_pool_revamp/compilers/nqp/t/11-cmp.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/11-cmp.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,96 +0,0 @@
-# check comparisons
-
-say('1..19');
-
-##Integers, positive and negative
-
-if 1 == 1 { say("ok 1 # numeric equality, integers"); }
-
-unless 1 == 2 {
-    say("ok 2 # numeric equality, integers, not equal");
-}
-
-if -3 == -3 { say("ok 3 # numeric equality, negative integers"); }
-
-if 1 != 2 { say("ok 4 # numeric inequality, integers"); }
-
-unless 1 != 1 {
-    say("ok 5 # numeric inequality, equal, integers");
-}
-
-unless -2 != -2 {
-    say("ok 6 # numeric inequality, equal, negative integers");
-}
-
-##Strings
-
-if "eq" eq "eq" { say("ok 7 # string equality"); }
-
-unless "one" eq "two" {
-    say("ok 8 # string equality, not equal");
-}
-
-if "ONE" ne "TWO" { say("ok 9 # string inequality"); }
-
-unless "STRING" ne "STRING" {
-    say("ok 10 # string inequality, equal");
-}
-
-##Coerce strings into integers
-
-if "11" ne ~11 {
-    print("not ");
-}
-say("ok 11 # coerce integer 11 into string eleven");
-
-if "-12" ne ~-12 {
-    print("not ");
-}
-say("ok 12 # coerce integer -12 into string twelve");
-
-##Coerce integers into strings
-
-if 13 ne +"13" {
-    print("not ");
-}
-say("ok 13 # coerce string 13 into an integer");
-
-if -14 ne +"-14" {
-    print("not ");
-}
-say("ok 14 # coerce string -14 into an integer");
-
-##Containers
-
-if (1,2) =:= (1,2) {
-    print("not ");
-}
-say("ok 15 # container equality, unnamed arrays");
-
-my @a := (1, 2);
-
-unless @a =:= @a {
-    print("not ");
-}
-say("ok 16 # container equality, self");
-
-my @b := @a;
-
-unless @a =:= @b {
-    print("not ");
-}
-say("ok 17 # container equality, named arrays");
-  
-my $x := 'foo';
-my $y := $x;
-my $z := 'foo';
-
-unless $x =:= $y {
-    print("not ");
-}
-say("ok 18 # container equality, string binding");
-
-if $x =:= $z {
-    print("not ");
-}
-say("ok 19 # container equality, string value");

Deleted: branches/compact_pool_revamp/compilers/nqp/t/12-list.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/12-list.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,10 +0,0 @@
-# lists and for
-
-plan(3);
-
-my $list := (1,2,3);
-my $indexer := 0;
-
-for $list {
-    print("ok "); print($_); say(" checking loop via indices");
-}

Deleted: branches/compact_pool_revamp/compilers/nqp/t/13-logical.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/13-logical.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,19 +0,0 @@
-# check '||' and '&&'
-
-plan(4);
-
-my $or_no_branch := 1;
-$or_no_branch || ( $or_no_branch := 0 );
-ok($or_no_branch, "logical || shortcuts, branch not taken");
-
-my $or_branch := 0;
-0 || ( $or_branch := 1 );
-ok($or_branch, "logical || shortcuts, branch taken");
-
-my $and_no_branch := 0;
-$and_no_branch && ( $and_no_branch := 1 );
-ok(!$and_no_branch, "logical && shortcuts, branch not taken");
-
-my $and_branch := 0;
-1 && ( $and_branch := 1 );
-ok($and_branch, "logicl && shortcuts, branch taken");

Deleted: branches/compact_pool_revamp/compilers/nqp/t/14-op.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/14-op.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,46 +0,0 @@
-# checking basic operands and circumfix:( )
-
-plan(29);
-
-##Additive operators
-ok(      1+2  == 3, 'Checking addition 1+2');
-ok(     10-9  == 1, 'Checking subtraction 10-9');
-ok(   10-3+2  == 9, 'Checking compound statements 10-3+2');
-ok(  10-(3+2) == 5, 'Checking parenthesized statement 10-(3+2)');
-
-##Multiplicative operators
-ok(      6*7  == 42, 'Checking multiplication 6*7');
-ok(     36/6  ==  6, 'Checking division 36/6');
-ok(    4*3+5  == 17, 'Checking compound statements 4*3+5');
-ok(   4*(3+5) == 32, 'Checking parenthesized statements 4*(3+5)');
-ok(   12/4*3  ==  9, 'Checking compound statements 12/4*3');
-ok( 12/(4*3)  ==  1, 'Checking compound statements 12/(4*3)');
-ok(   5-3*2   == -1, 'Checking compound statements 5-3*2');
-
-##Modulo operator
-ok(      8%3  == 2, 'Checking modulo 8%3');
-ok(    8%3+2  == 4, 'Checking compound statement 8%3+2');
-ok(  8%(3+2)  == 3, 'Checking compound statement 8%(3+2)');
-
-##Concatenation operator
-ok( 'a' ~ 'b' eq 'ab', 'Checking concatenation "a" ~ "b"');
-ok(  1  ~ 'b' eq '1b', 'Checking concatenation  1  ~ "b"');
-ok( 'a' ~  2  eq 'a2', 'Checking concatenation "a" ~  2 ');
-
-##Postfix operators
-my $x := 0;
-ok( $x++ == 0 );
-ok( $x   == 1 );
-ok( $x-- == 1 );
-ok( $x   == 0 );
-
-##Relational operators
-ok( ?(1 <  2) );
-ok( !(2 <  1) );
-ok( ?(2 <= 2) );
-ok( !(3 <= 2) );
-ok( ?(2 >  1) );
-ok( !(2 >  3) );
-ok( ?(2 >= 1) );
-ok( !(2 >= 3) );
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/15-module.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/15-module.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,16 +0,0 @@
-# check module
-
-XYZ::sayfoo();
-XYZ::foo('ok 3');
-XYZ::sayfoo();
-
-module XYZ {
-    our $value := 'ok 1';
-    sub foo($x) { $value := $x; }
-    sub sayfoo() { say($value); }
-    say('1..3');
-    sayfoo();
-    foo('ok 2');
-}
-
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/16-while.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/16-while.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,61 +0,0 @@
-# while, until statements
-
-plan(8);
-
-my $a; my $sum;
-
-$a := 1; $sum := 0;
-while $a != 10 {
-    $sum := $sum + $a;
-    $a := $a + 1;
-}
-ok($sum == 45, 'basic while loop test');
-
-$a := 1; $sum := 0;
-until $a == 10 {
-    $sum := $sum + $a;
-    $a := $a + 1;
-}
-ok($sum == 45, 'basic until loop test');
-
-$a := 1; $sum := 0;
-while $a != 1 {
-    $sum := 99;
-    $a := 1;
-}
-ok($sum == 0, 'while loop exits initial false immediately');
-
-$a := 1; $sum := 0;
-until $a == 1 {
-    $sum := 99;
-    $a := 1;
-}
-ok($sum == 0, 'until loop exits initial true immediately');
-
-$a := 1; $sum := 0;
-repeat {
-    $sum := $sum + $a;
-    $a := $a + 1;
-} while $a != 10;
-ok($sum == 45, 'basic repeat_while loop');
-
-$a := 1; $sum := 0;
-repeat {
-    $sum := $sum + $a;
-    $a := $a + 1;
-} until $a == 10;
-ok($sum == 45, 'basic repeat_until loop');
-
-$a := 1; $sum := 0;
-repeat {
-    $sum := 99;
-} while $a != 1;
-ok($sum == 99, 'repeat_while always executes at least once');
-
-$a := 1; $sum := 0;
-repeat {
-    $sum := 99;
-} until $a == 1;
-ok($sum == 99, 'repeat_until always executes at least once');
-
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/17-class.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/17-class.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,14 +0,0 @@
-# class
-
-plan(1);
-
-class XYZ {
-    method foo($x) {
-        say($x);
-    }
-}
-
-
-my $xyz := XYZ.new();
-
-$xyz.foo('ok 1');

Deleted: branches/compact_pool_revamp/compilers/nqp/t/18-inline.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/18-inline.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,22 +0,0 @@
-# inline
-
-plan(7);
-
-PIR q<    say 'ok 1' >;
-PIR q:to:'OK2';
-    say 'ok 2'
-OK2
-
-PIR q:to:<OK4>;
-        say 'ok 3'
-        say 'ok 4'
-    OK4    
-
-PIR q:to:"OK5";
-    say 'ok 5'
-OK5
-
-Q:PIR { say 'ok 6' };
-my $x := Q:PIR { %r = box 'ok 7' };
-say($x);
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/19-hash_access.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/19-hash_access.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,25 +0,0 @@
-# check hash access methods
-
-plan(7);
-
-my %h;
-
-%h<a> := 1;
-say("ok 1 # hash assignment with numeric value works");
-
-say('ok ', %h<a> + 1, ' # hash access to numeric value');
-
-%h<a> := 'ok 3';
-say(%h<a>, ' # hash access to string value');
-
-%h{1} := '4';
-say('ok ', %h{1}, ' # numeric hash access');
-
-say('ok ', %h<1> + 1, ' # numbers stringify');
-
-%h{'b'} := 'ok 6 # curly braces and single quotes work';
-say(%h{'b'});
-
-%h{"foo"} := "ok 7 # curly braces and double quotes work";
-say(%h{"foo"});
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/20-list_access.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/20-list_access.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,21 +0,0 @@
-# check list access methods
-
-plan(7);
-
-my @l := (1,2,3,4,5);
-
-say("ok 1 # list assignment didn't barf");
-say('ok ', @l[1], ' # numeric subscript');
-say('ok ', @l['2'], ' # string subscript');
-
-my $idx := 3;
-
-say('ok ', @l[$idx], ' # variable subscript');
-say('ok ', @l[$idx + 1], ' # expression in subscript');
-
- at l[0] := 'ok 6 # string array element';
-say(@l[0]);
-
- at l[10] := 'ok 7 # automatic expansion';
-say(@l[10]);
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/22-optional_args.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/22-optional_args.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,28 +0,0 @@
-# test optional arguments and parameters
-
-plan(3);
-
-sub f1 ($x, $y!, $z?) {
-  $x;
-}
-say('ok ', f1(1, 2), ' # optional args ignorable');
-say('ok ', f1(2, 2, 2), ' # optional args passable');
-
-sub f2 ($x?, $y?) { 'ok 3 # only optional args'; }
-say(f2());
-
-# TODO we can't parse .defined() yet - jg
-#sub f3 ($x, $y?, $text?) {
-#  if ! $y.defined() && ! $text.defined() {
-#    say('ok 4 # unpassed optional args are undef');
-#  } else {
-#    say('ok ', $x - $y, $text);
-#  }
-#}
-#f3(2);
-#f3(8, 3, ' # optional args get passed values');
-#f3(8, :text(' # optional args specifiable by name'), :y(2));
-
-# XXX: need to be able to test that the following is illegal
-#sub f4 ($x?, $y) { $y; }
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/23-named_args.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/23-named_args.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,18 +0,0 @@
-# test named parameters and arguments
-
-plan(4);
-
-sub f1 ($x, :$y) { $x - $y; }
-say('ok ', f1(2, :y(1)), ' # named args passable');
-
-sub f2 ($x, :$y) { $x; }
-say('ok ', f2(2), ' # named args ignorable');
-
-sub f3 (:$x, :$y) { $x - $y; }
-say('ok ', f3(:y(2), :x(5)), ' # args reorderable');
-
-sub f4 ($w, $x, :$y, :$z) { $w + $x + $y + $z; }
-say('ok ', f4(:z(2), -3, :y(1), 4), ' # named/positional intermixable');
-
-
-# XXX: test mandatory named args are actually mandatory

Deleted: branches/compact_pool_revamp/compilers/nqp/t/24-scalar_context.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/24-scalar_context.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,14 +0,0 @@
-# scalar context
-
-plan(1);
-
-class XYZ {
-    method ast() {
-        'ok 1';
-    }
-}
-
-
-my $xyz := XYZ.new();
-
-say( $( $xyz ) );

Deleted: branches/compact_pool_revamp/compilers/nqp/t/25-list_context.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/25-list_context.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,17 +0,0 @@
-# list context
-
-plan(1);
-
-class XYZ {
-    method list() {
-        'ok ', '1';
-    }
-}
-
-
-my $xyz := XYZ.new();
-
-for @( $xyz ) {
-    print( $_ );
-}
-print( "\n" );

Deleted: branches/compact_pool_revamp/compilers/nqp/t/26-method_ops.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/26-method_ops.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,28 +0,0 @@
-# method ops (just method calls for now)
-
-plan(3);
-
-class Foo {
-  method blarg() {
-    'ok 1 # method calls work';
-  }
-  method blargless() {
-    'ok 3 # argument-less method calls work'
-  }
-}
-
-class Bar {
-  method blarg() {
-    'not ok 1';
-  }
-}
-
-sub blarg() {
-  'ok 2 # regular subs aren\'t confused with methods';
-}
-
-my $foo := Foo.new();
-
-say($foo.blarg());
-say(blarg());
-say($foo.blargless);

Deleted: branches/compact_pool_revamp/compilers/nqp/t/27-ternary.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/27-ternary.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,21 +0,0 @@
-# the ternary ?? !! operator
-
-plan(8);
-
-ok( 1 ?? 1 !! 0 );
-ok( 0 ?? 0 !! 1 );
-
-my $a := 1 ?? 'yes' !! 'no';
-ok( $a eq 'yes' );
-
-my $b := 0 ?? 'yes' !! 'no';
-ok( $b eq 'no' );
-
-my $c := 1 ?? 'yes' !! ( $a := 'no' );
-ok( $c eq 'yes' );
-ok( $a eq 'yes' );
-
-my $d := 0 ?? ( $a := 'no' ) !! 'yes';
-ok( $d eq 'yes' );
-ok( $a eq 'yes' );
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/28-return.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/28-return.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,21 +0,0 @@
-# implicit and explicit returns from subs
-
-plan(3);
-
-sub foo() { 1; }
-
-
-sub bar() {
-    return 2;
-    0;
-}
-
-sub baz() {
-    if (1) { return 3; }
-    0;
-}
-
-ok( foo() == 1 , 'last value in block' );
-ok( bar() == 2 , 'explicit return value in block');
-ok( baz() == 3 , 'explicit return from nested block');
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/29-self.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/29-self.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,26 +0,0 @@
-plan(3);
-
-class Foo {
-    method foo() { 1 };
-
-    method uno() {
-        self.foo();
-    };
-    
-    method des() {
-        if 1 {
-            self.foo();
-        }
-    };
-    
-    method tres($a) {
-        if 1 {
-            self.foo();
-        }
-    };
-};
-
-ok(Foo.new.uno, "Can access self within method");
-ok(Foo.new.des, "Can access self within sub-block");
-ok(Foo.new.tres(42), "Can access self within method with signature");
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/30-subclass.t
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/30-subclass.t	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,32 +0,0 @@
-# class inheritance
-
-plan(6);
-
-class ABC {
-    method foo() {
-        say('ok 1');
-    }
-
-    method bar() {
-        say('ok 3');
-    }
-}
-
-class XYZ is ABC {
-    method foo() {
-        say('ok 2');
-    }
-}
-
-
-my $abc := ABC.new();
-my $xyz := XYZ.new();
-
-$abc.foo();
-$xyz.foo();
-$xyz.bar();
-my $xyzhow := $xyz.HOW;
-if $xyzhow.isa($xyz, ABC) { say('ok 4') }
-if $xyzhow.isa($xyz, XYZ) { say('ok 5') }
-say( $xyzhow.isa($abc, XYZ) ?? 'not ok 6' !! 'ok 6' );
-

Deleted: branches/compact_pool_revamp/compilers/nqp/t/harness
==============================================================================
--- branches/compact_pool_revamp/compilers/nqp/t/harness	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,13 +0,0 @@
-#! perl
-
-# $Id$
-
-use FindBin;
-use lib qw( . lib ../lib ../../lib ../../../lib );
-use Parrot::Test::Harness
-    language  => 'nqp',
-    exec      => [ './parrot', 'compilers/nqp/nqp.pbc' ],
-    files     => [ 'compilers/nqp/t/*.t' ];
-
-    #arguments => [ '--files' ],
-    #verbosity => 1,

Modified: branches/compact_pool_revamp/compilers/pge/PGE/Exp.pir
==============================================================================
--- branches/compact_pool_revamp/compilers/pge/PGE/Exp.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/pge/PGE/Exp.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -718,7 +718,7 @@
 
 .namespace [ 'PGE';'Exp';'CGroup' ]
 
-.sub 'pir' :method
+.sub 'pir' :method :nsentry
     .param pmc code
     .param string label
     .param string next

Modified: branches/compact_pool_revamp/compilers/pirc/Rules.mak
==============================================================================
--- branches/compact_pool_revamp/compilers/pirc/Rules.mak	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/compilers/pirc/Rules.mak	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,5 @@
 compilers/pirc/src/piremit$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/piremit.c \
         compilers/pirc/src/piremit.h \
         compilers/pirc/src/pircompunit.h \
         compilers/pirc/src/pircompiler.h \
@@ -13,6 +14,7 @@
         $(INC_DIR)/oplib/ops.h
 
 compilers/pirc/src/pirparser$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/pirparser.c \
         compilers/pirc/src/pircompiler.h \
         compilers/pirc/src/pircompunit.h \
         compilers/pirc/src/pirdefines.h \
@@ -30,6 +32,7 @@
         $(INC_DIR)/embed.h
 
 compilers/pirc/src/pirerr$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/pirerr.c \
         compilers/pirc/src/pircompiler.h \
         compilers/pirc/src/pircompunit.h \
         compilers/pirc/src/pirdefines.h \
@@ -44,6 +47,7 @@
         $(INC_DIR)/embed.h
 
 compilers/pirc/src/bcgen$(O) :  \
+  compilers/pirc/src/bcgen.c \
   compilers/pirc/src/pirsymbol.h \
   compilers/pirc/src/pircompiler.h \
   compilers/pirc/src/pirregalloc.h \
@@ -57,6 +61,7 @@
   include/pmc/pmc_namespace.h
 
 compilers/pirc/src/pirregalloc$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/pirregalloc.c \
         compilers/pirc/src/pircompiler.h \
         compilers/pirc/src/pircompunit.h \
         compilers/pirc/src/pirdefines.h \
@@ -66,25 +71,30 @@
         compilers/pirc/src/bcgen.h \
         $(INC_DIR)/embed.h
 
-compilers/pirc/heredoc/heredocmain$(O) : $(PARROT_H_HEADERS)
+compilers/pirc/heredoc/heredocmain$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/heredoc/heredocmain.c  \
 
 compilers/pirc/macro/macrolexer$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/macro/macrolexer.c  \
         compilers/pirc/macro/macro.h  \
         compilers/pirc/macro/lexer.h  \
         compilers/pirc/macro/macroparser.h
 
 compilers/pirc/macro/macroparser$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/macro/macroparser.c  \
         compilers/pirc/macro/macro.h  \
         compilers/pirc/macro/lexer.h  \
         compilers/pirc/macro/macroparser.h \
         compilers/pirc/macro/macrolexer.h
 
 compilers/pirc/src/hdocprep$(O) : $(PARROT_H_HEADERS) \
-        $(INC_DIR)/embed.h compilers/pirc/src/pirheredoc.h
+        $(INC_DIR)/embed.h compilers/pirc/src/pirheredoc.h \
+        compilers/pirc/src/hdocprep.c
 
 compilers/pirc/src/main$(O) : \
         $(PARROT_H_HEADERS) \
         $(INC_DIR)/embed.h \
+        compilers/pirc/src/main.c \
         compilers/pirc/src/bcgen.h \
         compilers/pirc/src/pirparser.h \
         compilers/pirc/src/pircompiler.h \
@@ -101,6 +111,7 @@
 
 compilers/pirc/src/pircapi$(O) : \
         $(PARROT_H_HEADERS) \
+        compilers/pirc/src/pircapi.c \
         compilers/pirc/src/bcgen.h \
         compilers/pirc/src/pircompiler.h \
         compilers/pirc/src/pirparser.h \
@@ -116,6 +127,7 @@
         $(INC_DIR)/embed.h
 
 compilers/pirc/src/pircompiler$(O) : \
+        compilers/pirc/src/pircompiler.c \
         compilers/pirc/src/pircompiler.h \
         $(PARROT_H_HEADERS) \
         compilers/pirc/src/piryy.h \
@@ -129,6 +141,7 @@
         $(INC_DIR)/embed.h
 
 compilers/pirc/src/pircompunit$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pircompunit.c \
   compilers/pirc/src/pircompunit.h \
   compilers/pirc/src/pircompiler.h \
   compilers/pirc/src/pirsymbol.h \
@@ -145,6 +158,7 @@
   $(INC_DIR)/embed.h
 
 compilers/pirc/src/pirlexer$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirlexer.c \
   compilers/pirc/src/pirparser.h \
   compilers/pirc/src/pirmacro.h \
   compilers/pirc/src/pirerr.h \
@@ -158,6 +172,7 @@
   $(INC_DIR)/embed.h
 
 compilers/pirc/src/pirmacro$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirmacro.c \
   compilers/pirc/src/pirmacro.h \
   compilers/pirc/src/pircompunit.h \
   compilers/pirc/src/pircompiler.h \
@@ -168,6 +183,7 @@
   $(INC_DIR)/embed.h
 
 compilers/pirc/src/pirop$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirop.c \
   compilers/pirc/src/pircompiler.h \
   compilers/pirc/src/pircompunit.h \
   compilers/pirc/src/pirop.h \
@@ -181,6 +197,7 @@
   $(INC_DIR)/embed.h
 
 compilers/pirc/src/pirpcc$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirpcc.c \
   compilers/pirc/src/pirpcc.h \
   compilers/pirc/src/pircompiler.h \
   compilers/pirc/src/pirerr.h \
@@ -195,6 +212,7 @@
   $(INC_DIR)/embed.h
 
 compilers/pirc/src/pirsymbol$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirsymbol.c \
   compilers/pirc/src/pircompiler.h \
   compilers/pirc/src/pirsymbol.h \
   compilers/pirc/src/piryy.h \

Deleted: branches/compact_pool_revamp/config/auto/cgoto.pm
==============================================================================
--- branches/compact_pool_revamp/config/auto/cgoto.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,82 +0,0 @@
-# Copyright (C) 2001-2005, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/auto/cgoto.pm - Computed C<goto>
-
-=head1 DESCRIPTION
-
-Determines whether the compiler supports computed C<goto>.
-
-=cut
-
-package auto::cgoto;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':auto';
-
-sub _init {
-    my $self = shift;
-    return {
-        'description' => 'Does your compiler support computed goto',
-        'result'      => '',
-    };
-}
-
-sub runstep {
-    my ( $self, $conf ) = @_;
-
-    my $test = _probe_for_cgoto( $conf );
-
-    $self->_evaluate_cgoto($conf, $test);
-
-    return 1;
-}
-
-sub _probe_for_cgoto {
-    my $conf = shift;
-    my $cgoto = $conf->options->get('cgoto');
-    my $test;
-    if ( defined $cgoto ) {
-        $test = $cgoto;
-    }
-    else {
-        $conf->cc_gen('config/auto/cgoto/test_c.in');
-        $test = eval { $conf->cc_build(); 1; } || 0;
-        $conf->cc_clean();
-    }
-    return $test;
-}
-
-sub _evaluate_cgoto {
-    my ($self, $conf, $test) = @_;
-    my $verbose = $conf->options->get('verbose');
-    if ($test) {
-        $conf->data->set(
-            cg_flag => '-DHAVE_COMPUTED_GOTO'
-        );
-        print " (yes) " if $verbose;
-        $self->set_result('yes');
-    }
-    else {
-        $conf->data->set(
-            cg_flag   => ''
-        );
-        print " (no) " if $verbose;
-        $self->set_result('no');
-    }
-}
-
-1;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/config/auto/cgoto/test_c.in
==============================================================================
--- branches/compact_pool_revamp/config/auto/cgoto/test_c.in	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,28 +0,0 @@
-/*
-Copyright (C) 2002-2009, Parrot Foundation.
-$Id$
-
-figure out if we can use computed goto
-*/
-
-int
-main(int argc, char **argv)
-{
-    static void *ptr = &&LABEL;
-    int a;
-
-    goto *ptr;
-
-LABEL: {
-    a = 1;
-}
-
-    return 0;
-}
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Deleted: branches/compact_pool_revamp/config/auto/crypto.pm
==============================================================================
--- branches/compact_pool_revamp/config/auto/crypto.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,93 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/auto/crypto.pm - Test for crypto library (libssl)
-
-=head1 DESCRIPTION
-
-This library is linked to a dynamic PMC.
-
-See L<http://www.openssl.org>
-
-=cut
-
-package auto::crypto;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':auto';
-
-
-sub _init {
-    my $self = shift;
-    my %data;
-    $data{description} = q{Does your platform support crypto};
-    $data{result}      = q{};
-    return \%data;
-}
-
-sub runstep {
-    my ( $self, $conf ) = @_;
-
-    my ( $verbose, $without ) = $conf->options->get(
-        qw|
-            verbose
-            without-crypto
-        |
-    );
-
-    if ($without) {
-        $conf->data->set( has_crypto => 0 );
-        $self->set_result('no');
-        return 1;
-    }
-
-    my $osname = $conf->data->get('osname');
-
-    my $extra_libs = $self->_select_lib( {
-        conf            => $conf,
-        osname          => $osname,
-        cc              => $conf->data->get('cc'),
-        win32_nongcc    => 'libcrypto.lib',
-        default         => '-lcrypto',
-    } );
-
-    $conf->cc_gen('config/auto/crypto/crypto_c.in');
-    eval { $conf->cc_build( q{}, $extra_libs); };
-    my $has_crypto = 0;
-    if ( !$@ ) {
-        my $test = $conf->cc_run();
-        $has_crypto = $self->_evaluate_cc_run($conf, $test, $has_crypto, $verbose);
-    }
-    $conf->data->set( has_crypto => $has_crypto );    # for dynpmc.in & digest.t
-    $self->set_result($has_crypto ? 'yes' : 'no');
-
-    return 1;
-}
-
-sub _evaluate_cc_run {
-    my $self = shift;
-    my ($conf, $test, $has_crypto, $verbose) = @_;
-    if ( $test =~ m/^OpenSSL (\d\.\d\.\d\w?)/ ) {
-        my $version = $1;
-        $has_crypto = 1;
-        $conf->data->set( openssl_version => $version );
-        print " (yes) " if $verbose;
-        $self->set_result("yes, $version");
-    }
-    return $has_crypto;
-}
-
-1;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/config/auto/crypto/crypto_c.in
==============================================================================
--- branches/compact_pool_revamp/config/auto/crypto/crypto_c.in	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,26 +0,0 @@
-/*
-  Copyright (C) 2008, Parrot Foundation.
-  $Id$
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <openssl/opensslv.h>
-#include <openssl/err.h>
-
-int
-main(int argc, char *argv[])
-{
-    unsigned long dummy = ERR_get_error();
-
-    printf("%s\n", OPENSSL_VERSION_TEXT);
-
-    return EXIT_SUCCESS;
-}
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Deleted: branches/compact_pool_revamp/config/auto/gdbm.pm
==============================================================================
--- branches/compact_pool_revamp/config/auto/gdbm.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,96 +0,0 @@
-# Copyright (C) 2001-2005, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/auto/gdbm.pm - Test for GNU dbm (gdbm) library
-
-=head1 DESCRIPTION
-
-Determines whether the platform supports gdbm. This is needed for the dynamic
-GDBMHash PMC.
-
-From L<http://www.gnu.org/software/gdbm/>:  "GNU dbm is a set of database
-routines that use extensible hashing. It works similar to the standard Unix
-dbm routines."
-
-=cut
-
-package auto::gdbm;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':auto';
-
-
-sub _init {
-    my $self = shift;
-    my %data;
-    $data{description} = q{Does your platform support gdbm};
-    $data{result}      = q{};
-    return \%data;
-}
-
-sub runstep {
-    my ( $self, $conf ) = @_;
-
-    my ( $verbose, $without ) = $conf->options->get(
-        qw|
-            verbose
-            without-gdbm
-        |
-    );
-
-    if ($without) {
-        $conf->data->set( has_gdbm => 0 );
-        $self->set_result('no');
-        return 1;
-    }
-
-    my $osname = $conf->data->get('osname');
-
-    my $extra_libs = $self->_select_lib( {
-        conf            => $conf,
-        osname          => $osname,
-        cc              => $conf->data->get('cc'),
-        win32_gcc       => '-llibgdbm',
-        win32_nongcc    => 'gdbm.lib',
-        default         => '-lgdbm',
-    } );
-
-    $conf->cc_gen('config/auto/gdbm/gdbm_c.in');
-    eval { $conf->cc_build( q{}, $extra_libs ); };
-    my $has_gdbm = 0;
-    if ( !$@ ) {
-        my $test = $conf->cc_run();
-        unlink "gdbm_test_db";
-        $has_gdbm = $self->_evaluate_cc_run($test, $has_gdbm, $verbose);
-    }
-    $conf->data->set( has_gdbm => $has_gdbm );    # for gdbmhash.t and dynpmc.in
-    $self->set_result($has_gdbm ? 'yes' : 'no');
-
-    return 1;
-}
-
-sub _evaluate_cc_run {
-    my $self = shift;
-    my ($test, $has_gdbm, $verbose) = @_;
-    if ( $test eq "gdbm is working.\n" ) {
-        $has_gdbm = 1;
-        print " (yes) " if $verbose;
-        $self->set_result('yes');
-    }
-    return $has_gdbm;
-}
-
-1;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/config/auto/gdbm/gdbm_c.in
==============================================================================
--- branches/compact_pool_revamp/config/auto/gdbm/gdbm_c.in	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,48 +0,0 @@
-/*
-  Copyright (C) 2001-2009, Parrot Foundation.
-  $Id$
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <gdbm.h>
-
-int
-main(int argc, char *argv[])
-{
-    GDBM_FILE dbf;
-    datum key, val_in, val_out;
-
-    dbf = gdbm_open("gdbm_test_db", 0, GDBM_NEWDB, 0666, 0);
-    if (!dbf) {
-        fprintf(stderr, "File %s could not be created.\n", argv[1]);
-        exit(2);
-    }
-
-    key.dptr  = "Is gdbm funktional?";
-    key.dsize = 19;
-    val_in.dptr  = "gdbm is working.";
-    val_in.dsize = 17;
-
-    gdbm_store(dbf, key, val_in, GDBM_INSERT);
-
-    val_out = gdbm_fetch(dbf, key);
-
-    if (val_out.dsize > 0) {
-        printf("%s\n", val_out.dptr);
-        free(val_out.dptr);
-    }
-    else {
-        printf("Key not found.\n");
-    }
-    gdbm_close(dbf);
-
-    return EXIT_SUCCESS;
-}
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Modified: branches/compact_pool_revamp/config/auto/warnings.pm
==============================================================================
--- branches/compact_pool_revamp/config/auto/warnings.pm	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/auto/warnings.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -113,6 +113,7 @@
         -Wcomment
         -Wdisabled-optimization
         -Wdiv-by-zero
+        -Wenum-compare
         -Wendif-labels
         -Wextra
         -Wformat
@@ -125,6 +126,7 @@
         -Winit-self
         -Winline
         -Winvalid-pch
+        -Wjump-misses-init
         -Wlogical-op
         -Wmissing-braces
         -Wmissing-field-initializers
@@ -137,7 +139,6 @@
         -Wpointer-sign
         -Wreturn-type
         -Wsequence-point
-        -Wno-shadow
         -Wsign-compare
         -Wstrict-aliasing
         -Wstrict-aliasing=2

Copied and modified: branches/compact_pool_revamp/config/auto/zlib.pm (from r45834, branches/compact_pool_revamp/config/auto/crypto.pm)
==============================================================================
--- branches/compact_pool_revamp/config/auto/crypto.pm	Tue Apr 20 22:11:20 2010	(r45834, copy source)
+++ branches/compact_pool_revamp/config/auto/zlib.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,19 +1,17 @@
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
 
-config/auto/crypto.pm - Test for crypto library (libssl)
+config/auto/zlib.pm - Test for zlib library
 
 =head1 DESCRIPTION
 
 This library is linked to a dynamic PMC.
 
-See L<http://www.openssl.org>
-
 =cut
 
-package auto::crypto;
+package auto::zlib;
 
 use strict;
 use warnings;
@@ -26,7 +24,7 @@
 sub _init {
     my $self = shift;
     my %data;
-    $data{description} = q{Does your platform support crypto};
+    $data{description} = q{Does your platform support zlib};
     $data{result}      = q{};
     return \%data;
 }
@@ -37,12 +35,12 @@
     my ( $verbose, $without ) = $conf->options->get(
         qw|
             verbose
-            without-crypto
+            without-zlib
         |
     );
 
     if ($without) {
-        $conf->data->set( has_crypto => 0 );
+        $conf->data->set( has_zlib => 0 );
         $self->set_result('no');
         return 1;
     }
@@ -53,34 +51,33 @@
         conf            => $conf,
         osname          => $osname,
         cc              => $conf->data->get('cc'),
-        win32_nongcc    => 'libcrypto.lib',
-        default         => '-lcrypto',
+        win32_nongcc    => 'zlib.lib',
+        default         => '-lz',
     } );
 
-    $conf->cc_gen('config/auto/crypto/crypto_c.in');
+    $conf->cc_gen('config/auto/zlib/zlib_c.in');
     eval { $conf->cc_build( q{}, $extra_libs); };
-    my $has_crypto = 0;
+    my $has_zlib = 0;
     if ( !$@ ) {
         my $test = $conf->cc_run();
-        $has_crypto = $self->_evaluate_cc_run($conf, $test, $has_crypto, $verbose);
+        $has_zlib = $self->_evaluate_cc_run($conf, $test, $has_zlib, $verbose);
     }
-    $conf->data->set( has_crypto => $has_crypto );    # for dynpmc.in & digest.t
-    $self->set_result($has_crypto ? 'yes' : 'no');
+    $conf->data->set( has_zlib => $has_zlib );
+    $self->set_result($has_zlib ? 'yes' : 'no');
 
     return 1;
 }
 
 sub _evaluate_cc_run {
     my $self = shift;
-    my ($conf, $test, $has_crypto, $verbose) = @_;
-    if ( $test =~ m/^OpenSSL (\d\.\d\.\d\w?)/ ) {
+    my ($conf, $test, $has_zlib, $verbose) = @_;
+    if ( $test =~ m/^(\d\.\d\.\d)/ ) {
         my $version = $1;
-        $has_crypto = 1;
-        $conf->data->set( openssl_version => $version );
+        $has_zlib = 1;
         print " (yes) " if $verbose;
         $self->set_result("yes, $version");
     }
-    return $has_crypto;
+    return $has_zlib;
 }
 
 1;

Added: branches/compact_pool_revamp/config/auto/zlib/zlib_c.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/compact_pool_revamp/config/auto/zlib/zlib_c.in	Mon Apr 26 06:15:29 2010	(r46022)
@@ -0,0 +1,26 @@
+/*
+  Copyright (C) 2010, Parrot Foundation.
+  $Id$
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <zlib.h>
+
+int
+main(int argc, char *argv[])
+{
+    if (0 == strcmp(ZLIB_VERSION, zlibVersion())) {
+        printf("%s\n", ZLIB_VERSION);
+        return EXIT_SUCCESS;
+    }
+    printf("not same version between include and library\n");
+    return EXIT_FAILURE;
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/compact_pool_revamp/config/gen/config_h/config_h.in
==============================================================================
--- branches/compact_pool_revamp/config/gen/config_h/config_h.in	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/gen/config_h/config_h.in	Mon Apr 26 06:15:29 2010	(r46022)
@@ -152,10 +152,6 @@
 /* Oplib and dynamic ops related. */
 #define PARROT_CORE_OPLIB_NAME "core"
 #define PARROT_CORE_OPLIB_INIT Parrot_DynOp_core_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_PREDEREF_OPLIB_INIT Parrot_DynOp_core_prederef_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_SWITCH_OPLIB_INIT Parrot_DynOp_core_switch_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_CG_OPLIB_INIT Parrot_DynOp_core_cg_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_CGP_OPLIB_INIT Parrot_DynOp_core_cgp_ at MAJOR@_ at MINOR@_ at PATCH@
 
 /* ICU. */
 #define PARROT_HAS_ICU @has_icu@

Deleted: branches/compact_pool_revamp/config/gen/crypto.pm
==============================================================================
--- branches/compact_pool_revamp/config/gen/crypto.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,110 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/gen/crypto.pm - Digest PMC Files
-
-=head1 DESCRIPTION
-
-Generates Digest PMC files.
-
-=cut
-
-package gen::crypto;
-
-use strict;
-use warnings;
-
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':gen';
-
-sub _init {
-    my $self = shift;
-    my %data;
-    $data{description} = q{Generate Digest PMC files};
-    $data{result}      = q{};
-    $data{digest}      = {
-        MD2         => {
-            md_result => 'ab4f496bfb2a530b219ff33031fe06b0',
-        },
-        MD4         => {
-            md_result => 'd9130a8164549fe818874806e1c7014b',
-        },
-        MD5         => {
-            md_result => 'f96b697d7cb7938d525a2f31aaf161d0',
-        },
-        RIPEMD160   => {
-            md_result => '5d0689ef49d2fae572b881b123a85ffa21595f36',
-            md_inc => 'ripemd',
-        },
-        SHA         => {
-            md_result => 'c1b0f222d150ebb9aa36a40cafdc8bcbed830b14',,
-        },
-        SHA1        => {
-            md_result => 'c12252ceda8be8994d5fa0290a47231c1d16aae3',
-            md_inc => 'sha',
-            md_ctx => 'SHA_CTX',
-            md_digest => 'SHA_DIGEST',
-        },
-        SHA256      => {
-            md_result => 'f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650',
-            md_inc => 'sha',
-            version_needed => '0.9.8a',
-        },
-        SHA512      => {
-            md_result => '107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c',
-            md_inc => 'sha',
-            version_needed => '0.9.8a',
-        },
-    };
-    $data{digest_pmc_template} = 'config/gen/crypto/digest_pmc.in';
-    $data{digest_t_template} = 'config/gen/crypto/digest_t.in';
-    return \%data;
-}
-
-sub runstep {
-    my ( $self, $conf ) = @_;
-
-    if ( ! $conf->data->get('has_crypto') ) {
-        $self->set_result('skipped');
-        return 1;
-    }
-
-    my $openssl_version  = $conf->data->get('openssl_version');
-
-    while (my ($md, $val) = each %{ $self->{digest} } ) {
-        my $file = lc $md;
-        $conf->data->set( TEMP_md_name => $md );
-        $conf->data->set( TEMP_md_file => $file );
-        $conf->data->set( TEMP_md_inc => $val->{md_inc} || $file );
-        $conf->data->set( TEMP_md_ctx => $val->{md_ctx} || $md . '_CTX' );
-        $conf->data->set( TEMP_md_digest => $val->{md_digest} || $md . '_DIGEST' );
-        $conf->data->set( TEMP_md_guard => (
-                ( exists $val->{version_needed} )
-                    and
-                ( $openssl_version lt $val->{version_needed} )
-            )
-            ? '#if 0'
-            : '#ifndef OPENSSL_NO_' . $md
-        );
-        $conf->data->set( TEMP_md_skip => $val->{version_needed} || '0.9' );
-        $conf->data->set( TEMP_md_result => $val->{md_result} );
-        $conf->genfile( $self->{digest_pmc_template} => "src/dynpmc/${file}.pmc" );
-        $conf->genfile( $self->{digest_t_template} => "t/dynpmc/${file}.t" );
-    }
-    $conf->cc_clean();
-
-    return 1;
-}
-
-1;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/compact_pool_revamp/config/gen/crypto/digest_pmc.in
==============================================================================
--- branches/compact_pool_revamp/config/gen/crypto/digest_pmc.in	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,161 +0,0 @@
-/*
-Copyright (C) 2008-2010, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/dynpmc/@TEMP_md_file at .pmc - @TEMP_md_name@ wrapper of libcrypto (libssl)
-
-=head1 DESCRIPTION
-
-See L<www.openssl.org>
-
-=head2 Methods
-
-=over 4
-
-=cut
-
-*/
-
-#include <openssl/@TEMP_md_inc at .h>
-
-pmclass @TEMP_md_name@
-    dynpmc
-    group digest_group
-    lib crypto {
-
-/*
-
-=item C<void init()>
-
-=cut
-
-*/
-    VTABLE void init() {
- at TEMP_md_guard@
-        @TEMP_md_ctx@ *c    = mem_gc_allocate_zeroed_typed(INTERP, @TEMP_md_ctx@);
-        PMC_data(SELF) = c;
-        PObj_custom_destroy_SET(SELF);
-#else
-        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ILL_INHERIT,
-            "@TEMP_md_name@ is disabled");
-#endif
-    }
-
-/*
-
-=item C<void destroy()>
-
-=cut
-
-*/
-    VTABLE void destroy() {
- at TEMP_md_guard@
-        @TEMP_md_ctx@ *c = PMC_data_typed(SELF, @TEMP_md_ctx@ *);
-        if (c) {
-            mem_gc_free(INTERP, c);
-            PMC_data(SELF) = NULL;
-        }
-#endif
-    }
-
-/*
-
-=item C<PMC* clone()>
-
-=cut
-
-*/
-    VTABLE PMC* clone() {
- at TEMP_md_guard@
-        PMC     *retval  = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
-        @TEMP_md_ctx@ *c       = mem_allocate_zeroed_typed(@TEMP_md_ctx@);
-
-        memcpy(c, PMC_data(SELF), sizeof (@TEMP_md_ctx@));
-        PMC_data(retval) = c;
-
-        PObj_custom_destroy_SET(retval);
-        return retval;
-#else
-        return NULL;
-#endif
-    }
-
-
-/*
-
-=back
-
-=head2 Specific Methods
-
-=over 4
-
-=item C<void Init()>
-
-=cut
-
-*/
-    METHOD void Init() {
- at TEMP_md_guard@
-        @TEMP_md_ctx@ *c = PMC_data_typed(SELF, @TEMP_md_ctx@ *);
-        (void)@TEMP_md_name at _Init(c);
-#endif
-    }
-
-/*
-
-=item C<void Update(STRING *buf)>
-
-=cut
-
-*/
-    METHOD void Update(STRING *buf) {
- at TEMP_md_guard@
-        @TEMP_md_ctx@ *c = PMC_data_typed(SELF, @TEMP_md_ctx@ *);
-        (void)@TEMP_md_name at _Update(c, (const unsigned char *)Buffer_bufstart(buf), buf->bufused);
-#endif
-    }
-
-/*
-
-=item C<STRING* Final()>
-
-=cut
-
-*/
-    METHOD STRING* Final() {
- at TEMP_md_guard@
-        unsigned char digest[@TEMP_md_digest at _LENGTH];
-        @TEMP_md_ctx@      *c = PMC_data_typed(SELF, @TEMP_md_ctx@ *);
-        STRING       *retval;
-
-        (void)@TEMP_md_name at _Final(digest, c);
-        retval = Parrot_str_new(INTERP, (char *)digest, @TEMP_md_digest at _LENGTH);
-
-        RETURN(STRING *retval);
-#else
-        return;
-#endif
-    }
-
-}
-
-/*
-
-=back
-
-=head1 AUTHORS
-
-Francois Perrad
-
-=cut
-
-*/
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Deleted: branches/compact_pool_revamp/config/gen/crypto/digest_t.in
==============================================================================
--- branches/compact_pool_revamp/config/gen/crypto/digest_t.in	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,79 +0,0 @@
-#! parrot
-# Copyright (C) 2009, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/dynpmc/@TEMP_md_file at .t - test the @TEMP_md_name@ PMC (part of digest_group)
-
-=head1 SYNOPSIS
-
-        % parrot -Ilib t/dynpmc/@TEMP_md_file at .t
-
-=head1 DESCRIPTION
-
-Tests the C<digest_group> a libcrypto wrapper.
-
-=cut
-
-.sub main :main
-    .include 'test_more.pir'
-    .include 'iglobals.pasm'
-    .local pmc config_hash, interp
-
-    plan(2)
-    interp = getinterp
-    config_hash = interp[.IGLOBALS_CONFIG_HASH]
-    $S0 = config_hash['has_crypto']
-    $S1 = config_hash['openssl_version']
-    unless $S0 goto no_crypto
-    if $S1 < '@TEMP_md_skip@' goto old_openssl
-
-    test_typeof()
-    test_digest()
-    .return()
-  no_crypto:
-    skip(2, 'No crypto library available')
-    .return()
-  old_openssl:
-    skip(2, 'Too old openssl library, needs at least @TEMP_md_skip@')
-.end
-
-
-.sub test_typeof
-    $P0 = loadlib 'digest_group'
-    .local pmc md
-    md = new '@TEMP_md_name@'
-    $S0 = typeof md
-    is($S0, '@TEMP_md_name@', '@TEMP_md_name@ typeof')
-.end
-
-.sub test_digest
-    $P0 = loadlib 'digest_group'
-    .local pmc md
-    md = new '@TEMP_md_name@'
-    md.'Init'()
-    $S0 = 'message digest'
-    md.'Update'($S0)
-    $S0 = md.'Final'()
-    $P0 = split '', $S0
-    new $P1, 'FixedPMCArray'
-    set $P1, 1
-    $S3 = ''
-  L1:
-    unless $P0 goto L2
-    $S1 = shift $P0
-    $I1 = ord $S1
-    $P1[0] = $I1
-    $S2 = sprintf '%02x', $P1
-    $S3 .= $S2
-    goto L1
-  L2:
-    is($S3, '@TEMP_md_result@', '@TEMP_md_name@ digest')
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/compact_pool_revamp/config/gen/makefiles.pm
==============================================================================
--- branches/compact_pool_revamp/config/gen/makefiles.pm	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/gen/makefiles.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -48,8 +48,6 @@
             conditioned_lines => 1,
         },
 
-        'compilers/ncigen/Makefile'  =>
-            { SOURCE => 'compilers/ncigen/config/makefiles/ncigen.in' },
         'src/dynpmc/Makefile'        =>
             { SOURCE => 'config/gen/makefiles/dynpmc.in' },
         'editor/Makefile'            =>

Modified: branches/compact_pool_revamp/config/gen/makefiles/dynpmc.in
==============================================================================
--- branches/compact_pool_revamp/config/gen/makefiles/dynpmc.in	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/gen/makefiles/dynpmc.in	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2009, Parrot Foundation.
+# Copyright (C) 2003-2010, Parrot Foundation.
 # $Id$
 
 PERL          = @perl@
@@ -14,7 +14,7 @@
 LD            = @ld@
 LDFLAGS       = @ldflags@ @ld_debug@ @rpath_blib@
 LD_LOAD_FLAGS = @ld_load_flags@
-CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ @optimize@
+CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @gc_flag@ @optimize@
 LIBPARROT     = @libparrot_ldflags@
 
 BUILD_TOOLS_DIR = $(BUILD_DIR)/tools/build
@@ -32,31 +32,10 @@
   foo_group$(LOAD_EXT) \
   pccmethod_test$(LOAD_EXT) \
   rotest$(LOAD_EXT) \
-#IF(has_gdbm):  gdbmhash$(LOAD_EXT) \
   rational$(LOAD_EXT) \
-#IF(has_crypto):  digest_group$(LOAD_EXT) \
+#IF(has_zlib):  gziphandle$(LOAD_EXT) \
   subproxy$(LOAD_EXT)
 
-PMCS_DIGEST = \
-  md2.pmc \
-  md4.pmc \
-  md5.pmc \
-  ripemd160.pmc \
-  sha.pmc \
-  sha1.pmc \
-  sha256.pmc \
-  sha512.pmc
-
-OBJS_DIGEST = \
-  md2$(O) \
-  md4$(O) \
-  md5$(O) \
-  ripemd160$(O) \
-  sha$(O) \
-  sha1$(O) \
-  sha256$(O) \
-  sha512$(O)
-
 PMCS_FOO = \
   foo.pmc \
   foo2.pmc
@@ -65,13 +44,9 @@
   foo$(O) \
   foo2$(O)
 
-#IF(win32 and cc==gcc):LIB_GDBM = -llibgdbm
-#ELSIF(win32):LIB_GDBM = libgdbm.lib
-#ELSE:LIB_GDBM = -lgdbm
-
-#IF(win32 and cc==gcc):LIB_CRYPTO = -lcrypto
-#ELSIF(win32):LIB_CRYPTO = libcrypto.lib
-#ELSE:LIB_CRYPTO = -lcrypto
+#IF(win32 and cc==gcc):LIB_ZLIB = -lz
+#ELSIF(win32):LIB_ZLIB = zlib.lib
+#ELSE:LIB_ZLIB = -lz
 
 CLEANUPS = \
   "*.c" \
@@ -165,19 +140,6 @@
 rotest.dump: rotest.pmc
 	$(PMC2CD) rotest.pmc
 
-gdbmhash$(LOAD_EXT): gdbmhash$(O)
-	$(LD) @ld_out at gdbmhash$(LOAD_EXT) gdbmhash$(O) $(LINKARGS) $(LIB_GDBM)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-gdbmhash$(O): gdbmhash.c
-	$(CC) -c @cc_o_out at gdbmhash$(O) $(INCLUDES) $(CFLAGS) gdbmhash.c
-
-gdbmhash.c: gdbmhash.dump
-	$(PMC2CC) gdbmhash.pmc
-
-gdbmhash.dump: gdbmhash.pmc
-	$(PMC2CD) gdbmhash.pmc
-
 rational$(LOAD_EXT): rational$(O)
 	$(LD) @ld_out at rational$(LOAD_EXT) rational$(O) $(LINKARGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
@@ -191,88 +153,6 @@
 rational.dump: rational.pmc
 	$(PMC2CD) rational.pmc
 
-digest_group$(LOAD_EXT): $(OBJS_DIGEST) lib-digest_group$(O)
-	$(LD) @ld_out at digest_group$(LOAD_EXT) lib-digest_group$(O) $(OBJS_DIGEST) $(LINKARGS) $(LIB_CRYPTO)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-lib-digest_group$(O): digest_group.c
-	$(CC) -c @cc_o_out at lib-digest_group$(O) $(INCLUDES) $(CFLAGS) digest_group.c
-
-digest_group.c: $(OBJS_DIGEST)
-	$(PMC2C) --library digest_group --c $(PMCS_DIGEST)
-
-md2$(O): md2.c
-	$(CC) -c @cc_o_out at md2$(O) $(INCLUDES) $(CFLAGS) md2.c
-
-md2.c: md2.dump
-	$(PMC2CC) md2.pmc
-
-md2.dump: md2.pmc
-	$(PMC2CD) md2.pmc
-
-md4$(O): md4.c
-	$(CC) -c @cc_o_out at md4$(O) $(INCLUDES) $(CFLAGS) md4.c
-
-md4.c: md4.dump
-	$(PMC2CC) md4.pmc
-
-md4.dump: md4.pmc
-	$(PMC2CD) md4.pmc
-
-md5$(O): md5.c
-	$(CC) -c @cc_o_out at md5$(O) $(INCLUDES) $(CFLAGS) md5.c
-
-md5.c: md5.dump
-	$(PMC2CC) md5.pmc
-
-md5.dump: md5.pmc
-	$(PMC2CD) md5.pmc
-
-ripemd160$(O): ripemd160.c
-	$(CC) -c @cc_o_out at ripemd160$(O) $(INCLUDES) $(CFLAGS) ripemd160.c
-
-ripemd160.c: ripemd160.dump
-	$(PMC2CC) ripemd160.pmc
-
-ripemd160.dump: ripemd160.pmc
-	$(PMC2CD) ripemd160.pmc
-
-sha$(O): sha.c
-	$(CC) -c @cc_o_out at sha$(O) $(INCLUDES) $(CFLAGS) sha.c
-
-sha.c: sha.dump
-	$(PMC2CC) sha.pmc
-
-sha.dump: sha.pmc
-	$(PMC2CD) sha.pmc
-
-sha1$(O): sha1.c
-	$(CC) -c @cc_o_out at sha1$(O) $(INCLUDES) $(CFLAGS) sha1.c
-
-sha1.c: sha1.dump
-	$(PMC2CC) sha1.pmc
-
-sha1.dump: sha1.pmc
-	$(PMC2CD) sha1.pmc
-
-sha256$(O): sha256.c
-	$(CC) -c @cc_o_out at sha256$(O) $(INCLUDES) $(CFLAGS) sha256.c
-
-sha256.c: sha256.dump
-	$(PMC2CC) sha256.pmc
-
-sha256.dump: sha256.pmc
-	$(PMC2CD) sha256.pmc
-
-sha512$(O): sha512.c
-	$(CC) -c @cc_o_out at sha512$(O) $(INCLUDES) $(CFLAGS) sha512.c
-
-sha512.c: sha512.dump
-	$(PMC2CC) sha512.pmc
-
-sha512.dump: sha512.pmc
-	$(PMC2CD) sha512.pmc
-
 subproxy$(LOAD_EXT): subproxy$(O)
 	$(LD) @ld_out at subproxy$(LOAD_EXT) subproxy$(O) $(LINKARGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
@@ -286,6 +166,19 @@
 subproxy.dump: subproxy.pmc
 	$(PMC2CD) subproxy.pmc
 
+gziphandle$(LOAD_EXT): gziphandle$(O)
+	$(LD) @ld_out at gziphandle$(LOAD_EXT) gziphandle$(O) $(LINKARGS) $(LIB_ZLIB)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+
+gziphandle$(O): gziphandle.c
+	$(CC) -c @cc_o_out at gziphandle$(O) $(INCLUDES) $(CFLAGS) gziphandle.c
+
+gziphandle.c: gziphandle.dump
+	$(PMC2CC) gziphandle.pmc
+
+gziphandle.dump: gziphandle.pmc
+	$(PMC2CD) gziphandle.pmc
+
 
 test : all
 	cd ../.. && $(PERL) -Ilib t/harness t/dynpmc/*.t

Modified: branches/compact_pool_revamp/config/gen/makefiles/root.in
==============================================================================
--- branches/compact_pool_revamp/config/gen/makefiles/root.in	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/gen/makefiles/root.in	Mon Apr 26 06:15:29 2010	(r46022)
@@ -84,7 +84,7 @@
 CC_SHARED        = @cc_shared@
 CC_O_OUT         = @cc_o_out@
 CC_WARN          = @ccwarn@
-CFLAGS           = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
+CFLAGS           = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @gc_flag@ @clock_best@ $(CC_SHARED)
 LINK_DYNAMIC     = @link_dynamic@
 LINK             = @link@
 LINKFLAGS        = @linkflags@ @link_debug@ @ld_debug@
@@ -118,12 +118,10 @@
 include compilers/imcc/Defines.mak
 include compilers/pirc/Defines.mak
 include compilers/tge/Defines.mak
-include compilers/nqp/Defines.mak
 include compilers/pge/Defines.mak
 include compilers/pct/Defines.mak
 include ext/nqp-rx/Defines.mak
 include compilers/data_json/Defines.mak
-include compilers/json/Defines.mak
 
 ###############################################################################
 #
@@ -140,7 +138,6 @@
 GEN_MAKEFILES = \
     Makefile \
     docs/Makefile \
-    compilers/ncigen/Makefile \
     editor/Makefile \
     ext/Makefile \
     src/dynoplibs/Rules.mak \
@@ -166,28 +163,11 @@
 #IF(has_opengl):    src/glut_nci_thunks.nci \
 #IF(has_glut):    src/glut_callbacks.c \
     src/core_pmcs.c \
-#IF(has_crypto):    src/dynpmc/md2.pmc \
-#IF(has_crypto):    src/dynpmc/md4.pmc \
-#IF(has_crypto):    src/dynpmc/md5.pmc \
-#IF(has_crypto):    src/dynpmc/ripemd160.pmc \
-#IF(has_crypto):    src/dynpmc/sha.pmc \
-#IF(has_crypto):    src/dynpmc/sha1.pmc \
-#IF(has_crypto):    src/dynpmc/sha256.pmc \
-#IF(has_crypto):    src/dynpmc/sha512.pmc \
-#IF(has_crypto):    t/dynpmc/md2.t \
-#IF(has_crypto):    t/dynpmc/md4.t \
-#IF(has_crypto):    t/dynpmc/md5.t \
-#IF(has_crypto):    t/dynpmc/ripemd160.t \
-#IF(has_crypto):    t/dynpmc/sha.t \
-#IF(has_crypto):    t/dynpmc/sha1.t \
-#IF(has_crypto):    t/dynpmc/sha256.t \
-#IF(has_crypto):    t/dynpmc/sha512.t \
     config_lib.pir \
     parrot.pc \
     compilers/imcc/imcc.y.flag \
     compilers/imcc/imcc.l.flag \
-    src/ops/core_ops.c \
-    src/ops/core_ops_switch.c
+    src/ops/core_ops.c
 
 GEN_PASM_INCLUDES = \
 	runtime/parrot/include/cclass.pasm \
@@ -253,7 +233,6 @@
     $(INC_DIR)/vtable.h \
     $(INC_DIR)/oplib/core_ops.h \
     $(INC_DIR)/oplib/ops.h \
-    $(INC_DIR)/oplib/core_ops_switch.h \
     $(INC_DIR)/extend_vtable.h \
     $(INC_DIR)/pbcversion.h
 
@@ -261,7 +240,6 @@
     src/core_ops.c \
     src/nci.c \
     src/glut_nci_thunks.c \
-    src/core_ops_switch.c \
     src/parrot_config.c \
     src/null_config.c \
     src/install_config.c \
@@ -420,12 +398,10 @@
         $(INC_DIR)/core_pmcs.h \
         $(INC_DIR)/compiler.h \
         $(INC_DIR)/cclass.h \
-        include/pmc/pmc_callcontext.h \
-        include/pmc/pmc_parrotinterpreter.h
+        include/pmc/pmc_callcontext.h
 
 # generated list of header files
 GENERAL_H_FILES   = $(NONGEN_HEADERS) $(GEN_HEADERS) \
-#IF(cg_flag): $(INC_DIR)/oplib/core_ops_cg.h $(INC_DIR)/oplib/core_ops_cgp.h
 
 
 CHARSET_O_FILES   = @TEMP_charset_o@
@@ -449,10 +425,7 @@
 
 INTERP_O_FILES = \
     src/string/api$(O) \
-    \
     src/ops/core_ops$(O) \
-    src/ops/core_ops_switch$(O) \
-    \
 #IF(i386_has_gcc_cmpxchg):    src/atomic/gcc_x86$(O) \
     src/byteorder$(O) \
     src/string/charset$(O) \
@@ -516,7 +489,6 @@
     @TEMP_atomic_o@ \
     @TEMP_gc_o@ \
 #IF(platform_asm):    src/platform_asm$(O) \
-#IF(cg_flag):     src/ops/core_ops_cg$(O) src/ops/core_ops_cgp$(O) \
 
 
 OPS_FILES = @ops@ $(GEN_OPSFILES)
@@ -631,7 +603,6 @@
     $(TGE_LIB_PBCS) \
     $(PGE_LIB_PBCS) \
     $(PCT_LIB_PBCS) \
-    $(JSON_LIB_PBCS) \
     $(DATA_JSON_LIB_PBCS) \
     $(NQP_LIB_PBCS) \
     $(GEN_LIBRARY) \
@@ -872,7 +843,7 @@
 
 $(INC_DIR)/context.h : include/pmc/pmc_callcontext.h
 
-$(INC_DIR)/pbcversion.h :
+$(INC_DIR)/pbcversion.h : PBC_COMPAT
 	$(PERL) $(BUILD_TOOLS_DIR)/pbcversion_h.pl > $(INC_DIR)/pbcversion.h
 
 src/parrot_config.c :  runtime/parrot/include/config.fpmc \
@@ -893,28 +864,33 @@
 	@echo "Invoking Parrot to generate install_config.fpmc"
 	$(PARROT) config_lib.pir --install > $@
 
-src/parrot_config$(O) : $(PARROT_H_HEADERS)
+src/parrot_config$(O) : $(PARROT_H_HEADERS) src/parrot_config.c
 
-src/install_config$(O) : $(PARROT_H_HEADERS)
+src/install_config$(O) : $(PARROT_H_HEADERS) src/install_config.c
 
-src/null_config$(O) : $(PARROT_H_HEADERS)
+src/null_config$(O) : $(PARROT_H_HEADERS) src/null_config.c
 
-src/oo$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_class.h include/pmc/pmc_object.h src/oo.str $(INC_DIR)/oo_private.h
+src/oo$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_class.h src/oo.c \
+    include/pmc/pmc_object.h src/oo.str $(INC_DIR)/oo_private.h
 
-src/scheduler$(O) : $(PARROT_H_HEADERS) src/scheduler.str \
+src/scheduler$(O) : $(PARROT_H_HEADERS) src/scheduler.str src/scheduler.c \
         include/pmc/pmc_scheduler.h include/pmc/pmc_task.h \
         include/pmc/pmc_timer.h \
-        $(INC_DIR)/scheduler_private.h
+        $(INC_DIR)/scheduler_private.h \
+        $(INC_DIR)/runcore_api.h
 
-src/io/core$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
+src/io/core$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/core.c
 
-src/io/socket_api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/api.str include/pmc/pmc_socket.h
+src/io/socket_api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+    src/io/api.str include/pmc/pmc_socket.h src/io/socket_api.c
 
-src/io/socket_unix$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_socket.h src/io/io_private.h
+src/io/socket_unix$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_socket.h \
+    src/io/io_private.h src/io/socket_unix.c
 
 src/io/socket_win32$(O) : $(PARROT_H_HEADERS) \
         src/io/io_private.h \
-        include/pmc/pmc_socket.h
+        include/pmc/pmc_socket.h \
+        src/io/socket_win32.c
 
 O_FILES = \
     $(INTERP_O_FILES) \
@@ -967,7 +943,7 @@
 $(INSTALLABLENCITHUNKGEN) : parrot_nci_thunk_gen.pbc $(PBC_TO_EXE) src/install_config$(O)
 	$(PBC_TO_EXE) parrot_nci_thunk_gen.pbc --install
 
-$(INSTALLABLETAPIR) : tapir.pbc $(PBC_TO_EXE)
+$(INSTALLABLETAPIR) : tapir.pbc $(PBC_TO_EXE) src/install_config$(O)
 	$(PBC_TO_EXE) tapir.pbc --install
 
 #
@@ -975,6 +951,7 @@
 #
 
 src/parrot_debugger$(O) : $(INC_DIR)/embed.h \
+        src/parrot_debugger.c \
         $(INC_DIR)/runcore_api.h \
         compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/parser.h \
         compilers/imcc/cfg.h \
@@ -1004,7 +981,8 @@
 # Parrot Disassembler
 #
 
-src/pbc_disassemble$(O) : $(INC_DIR)/embed.h $(PARROT_H_HEADERS)
+src/pbc_disassemble$(O) : $(INC_DIR)/embed.h $(PARROT_H_HEADERS) \
+    src/pbc_disassemble.c
 
 $(DIS) : src/pbc_disassemble$(O) $(LIBPARROT)
 	$(LINK) @ld_out@$@ \
@@ -1022,7 +1000,8 @@
 #
 # Parrot Dump
 #
-src/packdump$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_sub.h include/pmc/pmc_key.h
+src/packdump$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_sub.h \
+    include/pmc/pmc_key.h src/packdump.c
 
 $(PDUMP) : src/pbc_dump$(O) src/packdump$(O) $(LIBPARROT)
 	$(LINK) @ld_out@$@ \
@@ -1031,7 +1010,7 @@
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
 src/pbc_dump$(O) : $(INC_DIR)/embed.h  $(INC_DIR)/oplib/ops.h \
-        $(PARROT_H_HEADERS)
+        $(PARROT_H_HEADERS) src/pbc_dump.c
 
 $(INSTALLABLEPDUMP) : src/pbc_dump$(O) src/packdump$(O) \
 	src/install_config$(O) $(LIBPARROT)
@@ -1239,59 +1218,59 @@
 #
 ###############################################################################
 
-src/byteorder$(O) : $(PARROT_H_HEADERS)
+src/byteorder$(O) : $(PARROT_H_HEADERS) src/byteorder.c
 
-src/datatypes$(O) : $(PARROT_H_HEADERS)
+src/datatypes$(O) : $(PARROT_H_HEADERS) src/datatypes.c
 
 src/extend_vtable$(O) : $(PARROT_H_HEADERS) \
-        $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h
+        $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h src/extend_vtable.c
 
-src/global_setup$(O) : $(PARROT_H_HEADERS) src/global_setup.str
+src/global_setup$(O) : $(PARROT_H_HEADERS) src/global_setup.str src/global_setup.c
 
-src/global$(O) : $(PARROT_H_HEADERS) src/global.str \
+src/global$(O) : $(PARROT_H_HEADERS) src/global.str src/global.c \
 	include/pmc/pmc_sub.h
 
-src/pmc$(O) : include/pmc/pmc_class.h \
+src/pmc$(O) : include/pmc/pmc_class.h src/pmc.c \
 	src/pmc.str $(PARROT_H_HEADERS)
 
-src/pmc_freeze$(O) : $(PARROT_H_HEADERS) src/pmc_freeze.str
+src/pmc_freeze$(O) : $(PARROT_H_HEADERS) src/pmc_freeze.str src/pmc_freeze.c
 
-src/hash$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h
+src/hash$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h src/hash.c
 
-src/library$(O) : $(PARROT_H_HEADERS) src/library.str \
+src/library$(O) : $(PARROT_H_HEADERS) src/library.str src/library.c\
         $(INC_DIR)/dynext.h
 
 $(INC_DIR)/extend_vtable.h src/extend_vtable.c src/vtable.h : src/vtable.tbl $(BUILD_TOOLS_DIR)/vtable_extend.pl lib/Parrot/Vtable.pm
 	$(PERL) $(BUILD_TOOLS_DIR)/vtable_extend.pl
 
-src/key$(O) : $(PARROT_H_HEADERS) src/key.str \
+src/key$(O) : $(PARROT_H_HEADERS) src/key.str src/key.c \
         include/pmc/pmc_key.h
 
-src/gc/mark_sweep$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/mark_sweep$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/mark_sweep.c
 
-src/gc/gc_ms$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/gc_ms$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/gc_ms.c
 
-src/gc/gc_inf$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/gc_inf$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/gc_inf.c
 
-src/gc/api$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/api$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/api.c
 
 src/gc/alloc_resources$(O) : $(PARROT_H_HEADERS) \
-        src/gc/gc_private.h
+        src/gc/gc_private.h src/gc/alloc_resources.c
 
-src/hll$(O) : $(PARROT_H_HEADERS) src/hll.str $(INC_DIR)/dynext.h
+src/hll$(O) : $(PARROT_H_HEADERS) src/hll.str $(INC_DIR)/dynext.h src/hll.c
 
-src/platform$(O) : $(PARROT_H_HEADERS)
+src/platform$(O) : $(PARROT_H_HEADERS) src/platform.c
 
 #IF(platform_asm):src/platform_asm$(O) : $(PARROT_H_HEADERS)
 #IF(platform_asm):
-src/core_pmcs$(O) : $(PARROT_H_HEADERS)
+src/core_pmcs$(O) : $(PARROT_H_HEADERS) src/core_pmcs.c
 
-src/runcore/trace$(O) : include/pmc/pmc_sub.h \
+src/runcore/trace$(O) : include/pmc/pmc_sub.h src/runcore/trace.c \
         $(INC_DIR)/oplib/ops.h $(INC_DIR)/runcore_trace.h \
         $(PARROT_H_HEADERS)
 
 src/debug$(O) : $(INC_DIR)/embed.h $(INC_DIR)/extend.h \
-        $(PARROT_H_HEADERS) \
+        $(PARROT_H_HEADERS) src/debug.c \
         $(INC_DIR)/oplib/ops.h \
         $(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
         src/debug.str include/pmc/pmc_key.h \
@@ -1299,26 +1278,27 @@
         $(INC_DIR)/extend_vtable.h
 
 src/sub$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
-        src/sub.str \
+        src/sub.str src/sub.c \
 	include/pmc/pmc_sub.h include/pmc/pmc_continuation.h
 
 src/string/api$(O) : $(PARROT_H_HEADERS) src/string/api.str \
-        src/string/private_cstring.h
+        src/string/private_cstring.h src/string/api.c
 
-src/string/primitives$(O) : $(PARROT_H_HEADERS)
+src/string/primitives$(O) : $(PARROT_H_HEADERS) src/string/primitives.c
 
-src/longopt$(O) : $(PARROT_H_HEADERS)
+src/longopt$(O) : $(PARROT_H_HEADERS) src/longopt.c
 
 src/dynext$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/dynext.h \
-        src/dynext.str include/pmc/pmc_parrotlibrary.h
+        src/dynext.str include/pmc/pmc_parrotlibrary.h src/dynext.c
 
 src/exceptions$(O) : $(PARROT_H_HEADERS) \
-        src/exceptions.str \
+        src/exceptions.str src/exceptions.c \
 	include/pmc/pmc_continuation.h
 
-src/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h \
+src/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h src/thread.c \
         include/pmc/pmc_sub.h \
-	include/pmc/pmc_parrotinterpreter.h
+	include/pmc/pmc_parrotinterpreter.h \
+	$(INC_DIR)/runcore_api.h
 
 ## SUFFIX OVERRIDE - dynloaded files need cc_shared
 src/extend$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
@@ -1326,14 +1306,15 @@
 	$(CC) $(CFLAGS) @optimize::src/extend.c@ @ccwarn::src/extend.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/extend.c
 
 src/runcore/main$(O) : \
+	src/runcore/main.c \
 	src/runcore/main.str \
 	include/pmc/pmc_parrotlibrary.h \
         $(INC_DIR)/dynext.h $(INC_DIR)/oplib/core_ops.h \
-        $(INC_DIR)/oplib/core_ops_switch.h $(INC_DIR)/oplib/ops.h \
+        $(INC_DIR)/oplib/ops.h \
         $(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h \
         $(INC_DIR)/runcore_profiling.h
 
-src/runcore/profiling$(O) : src/runcore/profiling.str \
+src/runcore/profiling$(O) : src/runcore/profiling.str src/runcore/profiling.c \
 	include/pmc/pmc_sub.h \
 	include/pmc/pmc_namespace.h \
         $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h \
@@ -1342,25 +1323,30 @@
 
 src/call/args$(O) : \
         $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
+	src/call/args.c \
 	src/call/args.str \
 	include/pmc/pmc_key.h \
 	include/pmc/pmc_fixedintegerarray.h
 
-src/call/context_accessors$(O): $(PARROT_H_HEADERS)
+src/call/context_accessors$(O): $(PARROT_H_HEADERS) \
+        src/call/context_accessors.c
 
 src/call/pcc$(O) : $(INC_DIR)/oplib/ops.h \
         $(PARROT_H_HEADERS) \
         $(INC_DIR)/runcore_api.h \
+	src/call/pcc.c \
 	src/call/pcc.str \
 	include/pmc/pmc_key.h include/pmc/pmc_continuation.h
 
 src/call/context$(O) : $(PARROT_H_HEADERS) \
-	include/pmc/pmc_sub.h
+	include/pmc/pmc_sub.h src/call/context.c
 
 src/interp/inter_cb$(O) : $(PARROT_H_HEADERS) \
-	src/interp/inter_cb.str
+        include/pmc/pmc_parrotinterpreter.h \
+	src/interp/inter_cb.str src/interp/inter_cb.c
 
 src/interp/inter_misc$(O) : $(PARROT_H_HEADERS) \
+        src/interp/inter_misc.c \
         src/interp/inter_misc.str \
 	compilers/imcc/imc.h \
 	compilers/imcc/cfg.h \
@@ -1374,6 +1360,8 @@
 
 src/interp/inter_create$(O) : $(PARROT_H_HEADERS) \
 	$(INC_DIR)/oplib/core_ops.h \
+	src/gc/gc_private.h \
+        src/interp/inter_create.c \
         src/interp/inter_create.str \
 	compilers/imcc/imc.h \
 	compilers/imcc/cfg.h \
@@ -1386,33 +1374,43 @@
         $(INC_DIR)/runcore_api.h
 
 src/call/ops$(O) : $(INC_DIR)/oplib/ops.h \
-	$(PARROT_H_HEADERS) include/pmc/pmc_continuation.h
+	$(PARROT_H_HEADERS) include/pmc/pmc_continuation.h \
+        $(INC_DIR)/runcore_api.h src/call/ops.c
 
 src/io/api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+        src/io/api.c \
         src/io/api.str include/pmc/pmc_filehandle.h \
-        include/pmc/pmc_stringhandle.h
+        include/pmc/pmc_stringhandle.h \
+        $(INC_DIR)/extend.h \
+        $(INC_DIR)/extend_vtable.h
 
-src/io/buffer$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
+src/io/buffer$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/buffer.c
 
-src/io/portable$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
+src/io/portable$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/portable.c
 
-src/io/unix$(O) : $(PARROT_H_HEADERS) src/io/io_private.h include/pmc/pmc_filehandle.h
+src/io/unix$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+    include/pmc/pmc_filehandle.h src/io/unix.c
 
-src/io/utf8$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/string/unicode.h
+src/io/utf8$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/string/unicode.h \
+    src/io/utf8.c
 
-src/io/win32$(O) : $(PARROT_H_HEADERS) src/io/io_private.h include/pmc/pmc_filehandle.h
+src/io/win32$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+    include/pmc/pmc_filehandle.h src/io/win32.c
 
-src/gc/alloc_memory$(O) : $(PARROT_H_HEADERS)
+src/gc/alloc_memory$(O) : $(PARROT_H_HEADERS) src/gc/alloc_memory.c
 
 src/main$(O) : $(INC_DIR)/imcc.h $(PARROT_H_HEADERS) \
-        $(INC_DIR)/embed.h
+        $(INC_DIR)/embed.h $(INC_DIR)/runcore_api.h src/gc/gc_private.h \
+        src/main.c
 
 src/multidispatch$(O) : \
+        src/multidispatch.c \
         src/multidispatch.str \
         $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
 	include/pmc/pmc_nci.h include/pmc/pmc_sub.h
 
 src/packfile$(O) : src/packfile.str \
+        src/packfile.c \
 	include/pmc/pmc_sub.h include/pmc/pmc_key.h \
         compilers/imcc/imc.h \
 	compilers/imcc/cfg.h \
@@ -1425,20 +1423,22 @@
         $(INC_DIR)/embed.h $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h \
         $(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h
 
-src/packfile/pf_items$(O) : $(PARROT_H_HEADERS)
+src/packfile/pf_items$(O) : $(PARROT_H_HEADERS) src/packfile/pf_items.c
 
-src/packout$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h
+src/packout$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h src/packout.c
 
 src/parrot$(O) : $(GENERAL_H_FILES)
 
 src/runcore/cores$(O) : src/runcore/cores.str \
+        src/runcore/cores.c \
 	include/pmc/pmc_sub.h \
         $(INC_DIR)/dynext.h $(INC_DIR)/embed.h $(INC_DIR)/oplib/core_ops.h \
-        $(INC_DIR)/oplib/core_ops_switch.h $(INC_DIR)/oplib/ops.h \
+        $(INC_DIR)/oplib/ops.h \
         $(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
         $(PARROT_H_HEADERS)
 
 src/embed$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/embed.h \
+        src/embed.c \
         $(INC_DIR)/oplib/ops.h $(INC_DIR)/runcore_api.h \
         compilers/imcc/imc.h \
         compilers/imcc/cfg.h \
@@ -1451,55 +1451,55 @@
 
 src/dataypes$(O) : $(GENERAL_H_FILES) src/dataypes.c
 
-src/exit$(O) : $(PARROT_H_HEADERS)
+src/exit$(O) : $(PARROT_H_HEADERS) src/exit.c
 
 src/nci/api$(O) : src/nci/api.str \
-        $(PARROT_H_HEADERS) \
-        include/pmc/pmc_unmanagedstruct.h \
-        include/pmc/pmc_nci.h
+        src/nci/api.c \
+        $(PARROT_H_HEADERS)
 
-src/nci/core_thunks$(O) : src/nci/core_thunks.str \
+src/nci/core_thunks$(O) : src/nci/core_thunks.c \
         $(PARROT_H_HEADERS) \
-        include/pmc/pmc_unmanagedstruct.h \
         include/pmc/pmc_nci.h
 
 ## SUFFIX OVERRIDE
-src/nci/extra_thunks$(O) : src/nci/extra_thunks.str \
+src/nci/extra_thunks$(O) : \
     $(PARROT_H_HEADERS) \
-    include/pmc/pmc_unmanagedstruct.h \
     include/pmc/pmc_nci.h \
     src/nci/extra_thunks.c
 	$(CC) $(CFLAGS) @optimize::src/nci/extra_thunks.c@ @ccwarn::src/nci/extra_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/nci/extra_thunks.c
 
 src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
+        src/frame_builder.c \
         include/pmc/pmc_fixedintegerarray.h \
         include/pmc/pmc_unmanagedstruct.h \
         include/pmc/pmc_managedstruct.h \
         $(INC_DIR)/oplib/ops.h
 
-src/vtables$(O) : $(PARROT_H_HEADERS)
+src/vtables$(O) : $(PARROT_H_HEADERS) src/vtables.c
 
 ## SUFFIX OVERRIDE
-src/gc/system$(O) : $(PARROT_H_HEADERS)  src/gc/gc_private.h
+src/gc/system$(O) : $(PARROT_H_HEADERS)  src/gc/gc_private.h src/gc/system.c
 	$(CC) $(CFLAGS) @optimize::src/gc/system.c@ @ccwarn::src/gc/system.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/gc/system.c
 
 src/gc/gc_private.h : $(INC_DIR)/settings.h
 
-src/warnings$(O) : $(PARROT_H_HEADERS)
+src/gc/malloc$(O) : src/gc/malloc.c
+
+src/warnings$(O) : $(PARROT_H_HEADERS) src/warnings.c
 
-src/misc$(O) : $(PARROT_H_HEADERS)
+src/misc$(O) : $(PARROT_H_HEADERS) src/misc.c
 
-src/utils$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_nci.h
+src/utils$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_nci.h src/utils.c
 
 ## SUFFIX OVERRIDE
-src/spf_render$(O) : $(PARROT_H_HEADERS) src/spf_render.str
+src/spf_render$(O) : $(PARROT_H_HEADERS) src/spf_render.str src/spf_render.c
 	$(CC) $(CFLAGS) @optimize::src/spf_render.c@ @ccwarn::src/spf_render.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/spf_render.c
 
-src/spf_vtable$(O) : $(PARROT_H_HEADERS) src/spf_vtable.str
+src/spf_vtable$(O) : $(PARROT_H_HEADERS) src/spf_vtable.str src/spf_vtable.c
 
-src/string/encoding$(O) : $(PARROT_H_HEADERS)
+src/string/encoding$(O) : $(PARROT_H_HEADERS) src/string/encoding.c
 
-src/string/charset$(O) : $(PARROT_H_HEADERS) \
+src/string/charset$(O) : $(PARROT_H_HEADERS) src/string/charset.c \
         src/string/encoding/fixed_8.h \
         src/string/encoding/utf8.h \
         src/string/encoding/utf16.h \
@@ -1509,10 +1509,11 @@
         src/string/charset/iso-8859-1.h \
         src/string/charset/unicode.h
 
-src/pbc_merge$(O) : $(INC_DIR)/embed.h \
+src/pbc_merge$(O) : $(INC_DIR)/embed.h src/pbc_merge.c \
 	include/pmc/pmc_sub.h $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS)
 
-src/io/filehandle$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_filehandle.h src/io/io_private.h
+src/io/filehandle$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_filehandle.h \
+    src/io/io_private.h src/io/filehandle.c
 
 src/dynpmc/subproxy$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
   $(INC_DIR)/dynext.h include/pmc/pmc_subproxy.h \
@@ -1520,11 +1521,12 @@
   include/pmc/pmc_continuation.h include/pmc/pmc_callcontext.h \
   include/pmc/pmc_default.h
 
-src/gc/malloc_trace$(O) : src/gc/malloc.c
+src/gc/malloc_trace$(O) : src/gc/malloc.c src/gc/malloc_trace.c
 
-src/packfile/pf_items$(O) : $(PARROT_H_HEADERS)
+src/packfile/pf_items$(O) : $(PARROT_H_HEADERS) src/packfile/pf_items.c
 
-src/atomic/gcc_x86$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic/gcc_x86.h
+src/atomic/gcc_x86$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic/gcc_x86.h \
+    src/atomic/gcc_x86.c
 
 # core_ops depends upon config.h so that it gets updated along with
 # updates to config.h's version numbers
@@ -1544,41 +1546,6 @@
 	include/pmc/pmc_continuation.h
 	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --core @no_lines_flag@
 
-## SUFFIX OVERRIDE
-src/ops/core_ops_switch$(O) : $(GENERAL_H_FILES) src/ops/core_ops_switch.c \
-	include/pmc/pmc_parrotlibrary.h
-	$(CC) $(CFLAGS) @optimize::src/ops/core_ops_switch.c@ @ccwarn::src/ops/core_ops_switch.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_switch.c
-
-$(INC_DIR)/oplib/core_ops_switch.h : src/ops/core_ops_switch.c
-
-src/ops/core_ops_switch.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl \
-	lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(INC_DIR)/config.h \
-	lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CSwitch.pm \
-	lib/Parrot/OpTrans/CPrederef.pm
-	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CSwitch --core @no_lines_flag@
-
-## SUFFIX OVERRIDE
-src/ops/core_ops_cg$(O): $(GENERAL_H_FILES) src/ops/core_ops_cg.c \
-        include/pmc/pmc_parrotlibrary.h
-	$(CC) $(CFLAGS) @optimize::src/ops/core_ops_cg.c@ @ccwarn::src/ops/core_ops_cg.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cg.c
-
-## SUFFIX OVERRIDE
-src/ops/core_ops_cgp$(O): $(GENERAL_H_FILES) src/ops/core_ops_cgp.c \
-        include/pmc/pmc_parrotlibrary.h
-	$(CC) $(CFLAGS) @optimize::src/ops/core_ops_cgp.c@ @ccwarn::src/ops/core_ops_cgp.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cgp.c
-
-src/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
-
-$(INC_DIR)/oplib/core_ops_cg.h: src/ops/core_ops_cg.c
-
-src/ops/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
-	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --core
-
-$(INC_DIR)/oplib/core_ops_cgp.h: src/ops/core_ops_cgp.c
-
-src/ops/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
-	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --core
-
 @TEMP_gc_c@
 
 @TEMP_pmc_build@
@@ -1735,16 +1702,12 @@
 # integrating them in a single run is difficult.
 
 # Normal test package
-test : test_core nqp_test
+test : test_core
 
 # Test Parrot core.
 test_core: test_prep
 	$(PERL) t/harness $(EXTRA_TEST_ARGS)
 
-# Test the NQP compiler
-nqp_test : test_prep compilers/nqp/nqp.pbc
-	$(PERL) compilers/nqp/t/harness
-
 # run the test suite, create a TAP archive and send it off to smolder
 smolder_test : test_prep
 	$(PERL) t/harness $(EXTRA_TEST_ARGS) --archive --send-to-smolder
@@ -1762,21 +1725,17 @@
 check : test
 
 # Test various run cores and other stuff
-# 'testC', 'testg' and 'testj' are tested only
+# 'testg' and 'testj' are tested only
 # when the needed runcores are available
 fulltest :
 	- at make@ testb \
-#IF(cg_flag):	testC \
 	testf \
-#IF(cg_flag):	testg \
 	testr \
-	testS \
 	src_tests \
 	run_tests \
 	buildtools_tests \
 	perl_tests \
 	library_tests \
-	nqp_test \
 	codetest \
 	benchmark_tests \
 	manifest_tests \
@@ -1787,10 +1746,6 @@
 testb : test_prep
 	$(PERL) t/harness $(EXTRA_TEST_ARGS) -b $(RUNCORE_TEST_FILES)
 
-# CGP core
-testC : test_prep
-	$(PERL) t/harness $(EXTRA_TEST_ARGS) -C $(RUNCORE_TEST_FILES)
-
 # fast core
 testf : test_prep
 	$(PERL) t/harness $(EXTRA_TEST_ARGS) -f $(RUNCORE_TEST_FILES)
@@ -1811,18 +1766,6 @@
 testr : test_prep
 	$(PERL) t/harness $(EXTRA_TEST_ARGS) -r $(RUNCORE_TEST_FILES)
 
-# switched core
-testS : test_prep
-	$(PERL) t/harness $(EXTRA_TEST_ARGS) -S $(RUNCORE_TEST_FILES)
-
-# Computed goto jitted core - target retained, but falls back to standard core
-testCj : test_prep
-	$(PERL) t/harness $(EXTRA_TEST_ARGS) $(RUNCORE_TEST_FILES)
-
-# switched jitted core - target retained, but falls back to standard core
-testSj : test_prep
-	$(PERL) t/harness $(EXTRA_TEST_ARGS) $(RUNCORE_TEST_FILES)
-
 # test the EXEC stuff
 testexec: test_prep
 	$(PERL) t/harness $(EXTRA_TEST_ARGS) --run-exec $(RUNCORE_TEST_FILES)
@@ -1897,12 +1840,11 @@
 #UNLESS(win32):    cover-clean \
     editor-clean
 	$(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c \
-    $(INC_DIR)/oplib/core_ops_cgp.h src/ops/core_ops_cgp.c
 	$(RM_F) chartypes "*.s" "*~"
 	$(RM_F) $(FLUID_FILES_1)
 	$(RM_F) $(FLUID_FILES_2)
 	$(RM_RF) lib/Parrot/OpLib
-	$(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS) $(JSON_CLEANUPS)
+	$(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS)
 	$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS) $(DATA_JSON_CLEANUPS)
 	$(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES) $(DYNOPLIBS_CLEANUPS)
 
@@ -2347,16 +2289,12 @@
 cover: \
     cover.dummy \
     cover-testb \
-#IF(cg_flag):    cover-testC \
     cover-testf \
-#IF(cg_flag):    cover-testg \
     cover-testr \
-    cover-testS \
     cover-src \
     cover-run \
     cover-perl \
     cover-extra \
-    cover-nqp \
     cover-codingstd \
     cover-benchmark \
     cover-manifest \
@@ -2379,9 +2317,6 @@
 cover-testb: cover.dummy
 	- at make@ testb
 
-cover-testC: cover.dummy
-	- at make@ testC
-
 cover-testf: cover.dummy
 	- at make@ testf
 
@@ -2394,9 +2329,6 @@
 cover-testr: cover.dummy
 	- at make@ testr
 
-cover-testS: cover.dummy
-	- at make@ testS
-
 cover-src: cover.dummy
 	- at make@ src_tests
 
@@ -2409,9 +2341,6 @@
 cover-extra: cover.dummy
 	- at make@ library_tests
 
-cover-nqp: cover.dummy
-	- at make@ nqp_test
-
 cover-codingstd: cover.dummy
 	- at make@ codingstd_tests
 
@@ -2520,7 +2449,8 @@
     @ld_out@$@ src/nci_test$(O) $(C_LIBS)
 
 # for use by runtime/parrot/library/OpenGL.pir
-src/glut_callbacks$(O): $(GENERAL_H_FILES)
+src/glut_callbacks$(O): $(PARROT_H_HEADERS) \
+    $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h src/glut_callbacks.c
 
 src/glut_nci_thunks.c: $(NCI_THUNK_GEN)
 	$(NCI_THUNK_GEN) \
@@ -2529,7 +2459,9 @@
 	    --output=src/glut_nci_thunks.c \
 	    <src/glut_nci_thunks.nci
 
-src/glut_nci_thunks$(O): $(GENERAL_H_FILES)
+src/glut_nci_thunks$(O) : $(PARROT_H_HEADERS) \
+    src/glut_nci_thunks.c \
+    include/pmc/pmc_nci.h
 
 $(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O) src/glut_nci_thunks$(O)
 	$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
@@ -2541,7 +2473,8 @@
 	    --output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci
 
 ## SUFFIX OVERRIDE
-src/extra_nci_thunks$(O) : $(GENERAL_H_FILES) src/extra_nci_thunks.c
+src/extra_nci_thunks$(O) : $(PARROT_H_HEADERS) src/extra_nci_thunks.c \
+    include/pmc/pmc_nci.h
 	$(CC) $(CFLAGS) @optimize::src/extra_nci_thunks.c@ @ccwarn::src/extra_nci_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/extra_nci_thunks.c
 
 $(EXTRANCITHUNKS_SO) : $(LIBPARROT) src/extra_nci_thunks$(O)
@@ -2575,11 +2508,11 @@
 tags-vi: tags.vi.dummy
 	$(RM_F) tags
 	@ctags@ \
-    --links=no --totals \
-    -R --exclude=blib --exclude=.svn  \
-    --languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
-    -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK,ARGFREE,ARGFREE_NOTNULL \
-    .
+	--links=no --totals \
+	-R --exclude=blib --exclude=.svn  \
+	--languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
+	-I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK,ARGFREE,ARGFREE_NOTNULL \
+	.
 	$(PERL) $(BUILD_TOOLS_DIR)/addopstags.pl $(OPS_FILES)
 
 tags.vi.dummy:
@@ -2591,6 +2524,7 @@
 
 # Andy's extra-cranky Perl::Critic checking for cage cleaners
 cagecritic:
+	@perl -MPerl::Critic::Bangs -e'$$min=q{1.04};die qq{You need Bangs $$min} unless $$Perl::Critic::Bangs::VERSION ge $$min'
 	perlcritic -1 --profile tools/util/perlcritic-cage.conf $(CRITIC_FILES)
 
 # This target will eventually create all the headers automatically.  If you
@@ -2618,12 +2552,10 @@
 include runtime/parrot/library/Rules.mak
 include compilers/imcc/Rules.mak
 include compilers/pirc/Rules.mak
-include compilers/nqp/Rules.mak
 include compilers/pge/Rules.mak
 include compilers/pct/Rules.mak
 include compilers/tge/Rules.mak
 include compilers/data_json/Rules.mak
-include compilers/json/Rules.mak
 include ext/nqp-rx/Rules.mak
 
 # Local variables:

Modified: branches/compact_pool_revamp/config/gen/opengl.pm
==============================================================================
--- branches/compact_pool_revamp/config/gen/opengl.pm	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/gen/opengl.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -516,6 +516,7 @@
 #         "$ENV{HOME}/src/osx-insane/usr/X11/include/GL/*.h",
 #         "$ENV{HOME}/src/osx-insane/usr/X11/include/GL/internal/*.h",
 #         "$ENV{HOME}/src/osx-insane/usr/X11R6 1/include/GL/*.h",
+#         "$ENV{HOME}/src/osx-10.6.3/Headers/*.h",
     );
 
     # X freeglut only if DISPLAY is set, otherwise use native w32api GLUT
@@ -663,6 +664,9 @@
             next if     /^#/;
             next if     /\btypedef\b/;
 
+            # Work around bug in Mac OS X headers (glext.h as of 10.6.3, at least)
+            next if /^\s*extern\s+\w+\s+\(\*\s+/;
+
             # Skip where we are explicitly told to do so
             next if /\bFGUNUSED\b/;
 

Modified: branches/compact_pool_revamp/config/gen/platform/generic/itimer.c
==============================================================================
--- branches/compact_pool_revamp/config/gen/platform/generic/itimer.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/gen/platform/generic/itimer.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,6 +1,6 @@
 /*
+ * Copyright (C) 2004-2010, Parrot Foundation.
  * $Id$
- * Copyright (C) 2004-2009, Parrot Foundation.
  */
 
 /*
@@ -77,7 +77,7 @@
 */
 
 int
-get_sys_timer_ms(void *handle)
+get_sys_timer_ms(SHIM(void *handle))
 {
     struct itimerval ots;
     getitimer(ITIMER_REAL, &ots);

Modified: branches/compact_pool_revamp/config/init/defaults.pm
==============================================================================
--- branches/compact_pool_revamp/config/init/defaults.pm	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/init/defaults.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -94,9 +94,9 @@
         # Compiler -- used to turn .c files into object files.
         # (Usually cc or cl, or something like that.)
         cc      => $cc_option ? $cc_option : $Config{cc},
-        # If we specify a compiler, we can't use existing ccflags and ccwarn.
+        # If we specify a compiler, we can't use existing ccflags.
         ccflags => $cc_option ? ''         : $Config{ccflags},
-        ccwarn  => $cc_option ? ''         : $Config{ccwarn},
+        ccwarn  => '',
 
         # Flags used to indicate this object file is to be compiled
         # with position-independent code suitable for dynamic loading.

Modified: branches/compact_pool_revamp/config/init/hints/cygwin.pm
==============================================================================
--- branches/compact_pool_revamp/config/init/hints/cygwin.pm	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/init/hints/cygwin.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -36,6 +36,7 @@
     # this later causes problems, it might be worth revisiting.  A. Dougherty
     # 9/9/2002
     $conf->data->set(
+        cp                  => '/bin/cp', # ExtUtils::Command::cp broken cpan #56666
         build_dir           => $build_dir,
         ld                  => $conf->data->get('ld') eq 'ld2'
                                ? 'gcc' # do not use old perl5 linker helper

Modified: branches/compact_pool_revamp/config/init/optimize.pm
==============================================================================
--- branches/compact_pool_revamp/config/init/optimize.pm	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/config/init/optimize.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -74,17 +74,6 @@
     $conf->data->set( cc_debug => '' );
     $conf->data->add( ' ', ccflags => "-DDISABLE_GC_DEBUG=1 -DNDEBUG" );
 
-    # per file overrides - not every compiler can optimize every file.
-
-    # The src/ops/core_ops*.c files are challenging to optimize.
-    # gcc can usually handle it, but don't assume any other compilers can,
-    # until there is specific evidence otherwise.
-    if ( ! defined($gccversion)) {
-        $conf->data->set('optimize::src/ops/core_ops_cg.c','');
-        $conf->data->set('optimize::src/ops/core_ops_cgp.c','');
-        $conf->data->set('optimize::src/ops/core_ops_switch.c','');
-    }
-
     # TT #405
     if ($conf->data->get('cpuarch') eq 'amd64') {
         $conf->data->set('optimize::src/gc/system.c','');

Modified: branches/compact_pool_revamp/docs/book/draft/appc_command_line_options.pod
==============================================================================
--- branches/compact_pool_revamp/docs/book/draft/appc_command_line_options.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/book/draft/appc_command_line_options.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -260,18 +260,6 @@
 
 Run with the I<fast core>.
 
-=item -R cgoto
-
-Run the I<computed goto core> (CGoto).
-
-=item -R cgp
-
-Run with the I<CGoto-Prederefed> core.
-
-=item -R switch
-
-Run with the I<Switched core>.
-
 =item -R gcdebug
 
 Performs a full GC run before every op dispatch

Modified: branches/compact_pool_revamp/docs/configuration.pod
==============================================================================
--- branches/compact_pool_revamp/docs/configuration.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/configuration.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -123,10 +123,6 @@
 
 =over 4
 
-=item F<config/auto/cgoto.pm>
-
-    Does your compiler support computed goto...
-
 =item F<gen/config_h.pm>
 
     Generate C headers...
@@ -136,7 +132,7 @@
 Note that on non-interactive steps, the text I<done> will be printed after the
 description when the step finishes executing; for example, the user will see:
 
-    Does your compiler support computed goto..............done.
+    Determine flags for building shared libraries.....-fPIC
 
 =item C<result>
 

Modified: branches/compact_pool_revamp/docs/embed.pod
==============================================================================
--- branches/compact_pool_revamp/docs/embed.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/embed.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -145,12 +145,6 @@
 
 =item PARROT_FAST_CORE
 
-=item PARROT_SWITCH_CORE
-
-=item PARROT_CGP_CORE
-
-=item PARROT_CGOTO_CORE
-
 =item PARROT_EXEC_CORE
 
 =item PARROT_GC_DEBUG_CORE
@@ -236,7 +230,7 @@
 Creates a "dummy" packfile in lieu of actually creating one from a bytecode
 file on disk.
 
-=item C<void Parrot_load_bytecode(PARROT_INTERP, const char *path)>
+=item C<void Parrot_load_bytecode(PARROT_INTERP, STRING *path)>
 
 Reads and load Parrot bytecode or PIR from the file referenced by C<path>.
 You should create a dummy packfile beforehand; see C<PackFile_new_dummy> for
@@ -1551,8 +1545,6 @@
 
 =item C<Parrot_store_sub_in_namespace>
 
-=item C<Parrot_str_append>
-
 =item C<Parrot_str_boolean>
 
 =item C<Parrot_str_byte_length>

Modified: branches/compact_pool_revamp/docs/parrothist.pod
==============================================================================
--- branches/compact_pool_revamp/docs/parrothist.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/parrothist.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -105,4 +105,6 @@
  chromatic   2.0.0 *        2010-Jan-19     "Inevitable"
  darbelo     2.1.0          2010-Feb-16     "As Scheduled"
  cotto       2.2.0          2010-Mar-16     "Like Clockwork"
+
+ Gerd        2.3.0 *        2010-Apr-20     "Samoan Lory"
 =cut

Modified: branches/compact_pool_revamp/docs/pdds/pdd28_strings.pod
==============================================================================
--- branches/compact_pool_revamp/docs/pdds/pdd28_strings.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/pdds/pdd28_strings.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -379,13 +379,6 @@
 value of flags. If both string arguments are null, return a new string created
 according to the integer flags.
 
-=head4 Parrot_str_append (was string_append)
-
-Append one string to another and return the result. In the default case, the
-return value is the same as the first string argument (modifying that argument
-in place). If the first argument is COW or read-only, then the return value is
-a new string.
-
 =head4 Parrot_str_new (was string_from_cstring)
 
 Return a new string with the default encoding and character set. Accepts two

Modified: branches/compact_pool_revamp/docs/porting_intro.pod
==============================================================================
--- branches/compact_pool_revamp/docs/porting_intro.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/porting_intro.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -13,39 +13,6 @@
 internals.  For each feature, a brief description of its purpose, hints on
 helping to port it, and pointers to more information are included.
 
-=head1 CGoto or CGP (CGoto Predereferenced)
-
-=head2 What it is
-
-"Computed goto" is a non-standard C feature that allows taking a pointer to an
-statement label (e.g. "LOOP:" ) using the unary && operator.  Certain Parrot
-runcores make use of this feature as an optimization.
-
-=head2 How to help
-
-If cgoto is not supported in Parrot by default on your platform, try to compile
-config/auto/cgoto/test_c.in with your C compiler and determine why it fails. If
-the compiler does not support the computed goto concept at all, this feature
-cannot be made to work (don't worry, there are other runcores).  However, if
-the compiler supports it but the test is inadequate, please submit a bug report
-describing how the implementation of this feature differs from what Parrot
-expects.
-
-Note that gcc supports this feature out of the box, though it sometimes
-struggles with it in low-memory situations.  Failures during compilation of
-core_ops_cg.c are frequently caused by insufficient resources rather than bugs
-in gcc or Parrot.
-
-=head2 References
-
-=over 4
-
-=item * F<config/auto/cgoto/test_c.in>
-
-=item * I<make testC>
-
-=back
-
 =head1 Threads
 
 =head2 What it is

Modified: branches/compact_pool_revamp/docs/project/release_manager_guide.pod
==============================================================================
--- branches/compact_pool_revamp/docs/project/release_manager_guide.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/project/release_manager_guide.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -66,7 +66,7 @@
 =item a
 
 Increment the version number in the following files:
-F<VERSION>, F<MANIFEST.generated>, F<META.yml>, F<README>.
+F<VERSION>, F<MANIFEST.generated>, F<README>.
 
 Also update the version number, date, and your name in the
 the file: F<docs/parrothist.pod>.
@@ -213,10 +213,10 @@
 
  $ mkdir ~/ftp/releases/devel/a.b.c
 
-If the release is in the stable series (L<Appendix 1 - Upcoming releases>)
-create the new directory in F<~/ftp/releases/stable> instead.
+If the release is in the supported series (L<Appendix 1 - Upcoming releases>)
+create the new directory in F<~/ftp/releases/supported> instead.
 
- $ mkdir ~/ftp/releases/stable/a.b.c
+ $ mkdir ~/ftp/releases/supported/a.b.c
 
 Copy the different compressed tarballs from your machine into the new directory.
 
@@ -283,10 +283,10 @@
 =item e
 
 Under "Administer" -> "Site building" -> "URL Redirects", change the URL for
-"release/current" to the FTP directory for the new release (for example,
-F<ftp://ftp.parrot.org/pub/parrot/releases/devel/0.8.1>). Also update
-the URL for "release/developer" or "release/supported" depending on
-which type of release this is.
+"release/current" to the FTP file for the new release (for example,
+F<ftp://ftp.parrot.org/pub/parrot/releases/devel/0.8.1/parrot-0.8.1.tar.gz>).
+Also update the URL for "release/developer" or "release/supported" depending
+on which type of release this is.
 
 =item f
 
@@ -294,9 +294,9 @@
 the resources/ and html/ directories created in docs/.
 ssh into the parrotvm, and in the
 webroot for docs.parrot.org, expand these into a release directory (e.g.
-1.4.0). in <webroot>/parrot, there are symbolic links for latest, stable,
+1.4.0). in <webroot>/parrot, there are symbolic links for latest, supported,
 and devel. Update the latest symlink to point to your new directory.
-If this is a stable release, also update the stable symlink. Do not delete
+If this is a supported release, also update the supported symlink. Do not delete
 any old copies of the docs.
 
 =back
@@ -394,10 +394,11 @@
 visible at
 L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
 
- - Apr 20, 2010 - 2.3* - gerd
  - May 18, 2010 - 2.4  - whiteknight
  - Jun 15, 2010 - 2.5  - gerd
  - Jul 20, 2010 - 2.6* - coke
+ - Aug 17, 2010 - 2.7  - ??
+ - Sep 21, 2010 - 2.8  - gerd
 
 =cut
 

Modified: branches/compact_pool_revamp/docs/running.pod
==============================================================================
--- branches/compact_pool_revamp/docs/running.pod	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/docs/running.pod	Mon Apr 26 06:15:29 2010	(r46022)
@@ -135,12 +135,8 @@
 may be available on your system:
 
   slow, bounds  bounds checking core (default)
-  cgoto         computed goto core
-  cgp           computed goto-predereferenced core
-  fast          fast core (no bounds checking, profiling, or tracing)
   gcdebug       performs a full GC run before every op dispatch (good for
                 debugging GC problems)
-  switch        switch core
   trace         bounds checking core w/ trace info (see 'parrot --help-debug')
   profiling     see F<docs/dev/profilling.pod>
 
@@ -249,28 +245,6 @@
 The trace and profile cores are also based on the "slow" core, doing
 full bounds checking, and also printing runtime information to stderr.
 
-The switched core eschews these tiny op functions in favor of cases in a large
-switch statement:
-
-    switch_runcore( op ):
-        while ( op ):
-            switch *op:
-                case NOP:
-                    ...
-                case STORE:
-                    ...
-                ...
-
-Depending on the C compiler implementation, this may be faster than function
-calling.  On older systems, it may fail to compile altogether.
-
-The computed-goto ("cgoto") runcore avoids the overhead of function
-calls by jumping directly to the address where each opcode's function
-starts.  The computed-goto-prederef ("CGP") core takes this one step
-further by replacing opcode numbers in the bytecode with those opfunc
-addresses.  See "Predereferencing" in F<docs/glossary.pod> for a
-fuller explanation.
-
 =head1 Operation table
 
  Command Line          Action         Output

Modified: branches/compact_pool_revamp/examples/benchmarks/oo1.pir
==============================================================================
--- branches/compact_pool_revamp/examples/benchmarks/oo1.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/benchmarks/oo1.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -11,8 +11,6 @@
 # python oo1.py                 1.2 (first time)
 # python oo1.py                 0.51
 
-# parrot -R cgp oo1.pasm            -g           -O3
-
 # original list fixed           4.9     (leaks mem ~ 110 M used)
 # don't clone vtable            4.4
 # Dan's vtable cache            4.3           3.8
@@ -31,9 +29,6 @@
 # Dan's new object layout                     1.00
 
 
-# parrot -R cgp oo1-prop.pasm
-#   invokecc                                  0.75
-#   RetCont out of loop                       0.57
 # parrot -R jit oo1-prop.pasm                     0.54
 
 .namespace [ "Foo" ]

Modified: branches/compact_pool_revamp/examples/benchmarks/oo2.pir
==============================================================================
--- branches/compact_pool_revamp/examples/benchmarks/oo2.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/benchmarks/oo2.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -11,17 +11,11 @@
 # python oo2.py                               2.9 (first time)
 # python oo2.py                               2.4
 
-# parrot -R cgp oo2.pasm            -g           -O3
-#   with reuse regsave mem                    6.15
-# anchor P1                                   6.7
-# Dan's new object layout                     5.1
-
 # parrot -R jit oo2.pasm            -g           -O3
 #   with reuse regsave mem                    6.1
 # anchor P1                                   6.5
 # Dan's new object layout                     4.9
 
-# parrot -R cgp oo2-prop.pasm                     2.8
 # parrot -R jit oo2-prop.pasm                     2.6
 
 .namespace [ "Foo" ]

Modified: branches/compact_pool_revamp/examples/c/test_main.c
==============================================================================
--- branches/compact_pool_revamp/examples/c/test_main.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/c/test_main.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -209,13 +209,6 @@
 static void
 usage(void)
 {
-#ifdef HAVE_COMPUTED_GOTO
-    const char* cgoto_info = "Deactivate computed goto";
-#else
-    const char* cgoto_info =
-        "Deactivate computed goto (not available on this platform)";
-#endif
-
     fprintf(stderr,
 "Usage: parrot [switches] [--] programfile [arguments]\n\
   -b  --bounds-checks           Activate bounds checks\n\
@@ -223,9 +216,6 @@
   -h  --help                    Display this message\n\
   -j  --jit                     Activate Just-In-Time compiler\n\
   -p  --profile                 Activate profiling\n\
-  -P  --predereferenced_core    Activate predereferencing\n\
-  -S  --switched_core           Activate switched core\n\
-  -g  --no-computed-goto        %s\n\
   -t  --trace                   Activate tracing\n\
   -v  --version                 Display version information\n\
   -.  --wait                    Wait for a keypress (gives Windows users\n\
@@ -233,8 +223,7 @@
       --gc-debug\n\
         Enable garbage collection debugging mode. This may also be enabled\n\
         by setting the environment variable $PARROT_GC_DEBUG to 1.\n\
-\n",
-            cgoto_info);
+\n");
 
     Parrot_exit(interp, 0);
 }

Modified: branches/compact_pool_revamp/examples/config/file/configcompiler
==============================================================================
--- branches/compact_pool_revamp/examples/config/file/configcompiler	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/config/file/configcompiler	Mon Apr 26 06:15:29 2010	(r46022)
@@ -50,7 +50,6 @@
 auto::jit
 auto::cpu
 auto::funcptr
-auto::cgoto
 auto::inline
 auto::gc
 auto::memalign

Modified: branches/compact_pool_revamp/examples/config/file/configwithfatalstep
==============================================================================
--- branches/compact_pool_revamp/examples/config/file/configwithfatalstep	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/config/file/configwithfatalstep	Mon Apr 26 06:15:29 2010	(r46022)
@@ -42,7 +42,6 @@
 auto::jit
 auto::cpu
 auto::funcptr
-auto::cgoto
 auto::inline
 auto::gc
 auto::memalign

Modified: branches/compact_pool_revamp/examples/embed/cotorra.c
==============================================================================
--- branches/compact_pool_revamp/examples/embed/cotorra.c	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/embed/cotorra.c	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2009, Parrot Foundation.
+Copyright (C) 2009-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -36,7 +36,7 @@
 Parrot_Run_core_t getruncore(const char *name);
 
 Parrot_String create_string(Parrot_Interp interp, const char *name);
-int cotorra_main(Parrot_Interp interp, int argc, char **argv);
+int cotorra_main(Parrot_Interp interp, int argc, const char **argv);
 
 /**********************************************************************/
 
@@ -108,10 +108,7 @@
 {
     static const struct runcoreinfo cores [] = {
         { PARROT_SLOW_CORE,     "slow" },
-        { PARROT_FAST_CORE,     "fast" },
-        { PARROT_CGOTO_CORE,    "cgoto" },
         { PARROT_GC_DEBUG_CORE, "gcdebug" },
-        { PARROT_SWITCH_CORE,   "switch" }
     };
     static const unsigned int n = sizeof (cores)/sizeof (struct runcoreinfo);
     unsigned int i;
@@ -147,7 +144,7 @@
 
 /*
 
-=item C<int cotorra_main(Parrot_Interp interp, int argc, char **argv)>
+=item C<int cotorra_main(Parrot_Interp interp, int argc, const char **argv)>
 
 Auxiliary function to minimize the size of main.
 
@@ -155,12 +152,13 @@
 
 */
 
-int cotorra_main(Parrot_Interp interp, int argc, char **argv)
+int cotorra_main(Parrot_Interp interp, int argc, const char **argv)
 {
-    char *source;
+    const char *source;
     Parrot_PackFile pf;
     const char *stname = NULL;
     const char *exec = NULL;
+    const char *module = NULL;
     int i;
 
     /* Incompatible options are not checked yet */
@@ -189,6 +187,12 @@
                 fail("Option needs argument");
             stname = argv[i];
         }
+        else if (strcmp(argv[i], "--load") == 0) {
+            ++i;
+            if (i >= argc)
+                fail("Option needs argument");
+            module = argv[i];
+        }
         else if (strcmp(argv[i], "--runcore") == 0) {
             ++i;
             if (i >= argc)
@@ -198,6 +202,8 @@
         else
             break;
     }
+    if (module)
+        Parrot_load_bytecode(interp, create_string(interp, module));
 
     if (exec) {
         Parrot_String compiler = create_string(interp, "PIR");
@@ -207,16 +213,16 @@
         return 0;
     }
 
-    if (i >= argc)
+    if (i >= argc && ! module)
         fail("No file to load");
     source = argv[i];
-
-    pf = Parrot_pbc_read(interp, source, 0);
-    if (! pf)
-        fail("Cannot load file");
-
-    Parrot_pbc_load(interp, pf);
-    Parrot_pbc_fixup_loaded(interp);
+    if (source) {
+        pf = Parrot_pbc_read(interp, source, 0);
+        if (! pf)
+            fail("Cannot load file");
+        Parrot_pbc_load(interp, pf);
+        Parrot_pbc_fixup_loaded(interp);
+    }
 
     if (stname) {
         Parrot_PMC rootns = Parrot_get_root_namespace(interp);
@@ -224,6 +230,8 @@
         Parrot_PMC parrotns = Parrot_PMC_get_pmc_strkey(interp, rootns, parrotname);
         Parrot_String name = create_string(interp, stname);
         Parrot_PMC start = Parrot_PMC_get_pmc_strkey(interp, parrotns, name);
+        if (Parrot_pmc_is_null(interp, start))
+            fail("start sub not found");
         Parrot_ext_call(interp, start, "->");
     }
     else {
@@ -235,7 +243,7 @@
 
 /*
 
-=item C<int main(int argc, char **argv)>
+=item C<int main(int argc, const char **argv)>
 
 Main function. Create the parrot interpreter and call cotorra_main.
 
@@ -243,7 +251,7 @@
 
 */
 
-int main(int argc, char **argv)
+int main(int argc, const char **argv)
 {
     Parrot_Interp interp;
     int r;

Modified: branches/compact_pool_revamp/examples/languages/squaak/setup.pir
==============================================================================
--- branches/compact_pool_revamp/examples/languages/squaak/setup.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/languages/squaak/setup.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -43,7 +43,7 @@
 
     $P2 = new 'Hash'
     $P2['src/gen_actions.pir'] = 'src/parser/actions.pm'
-    $P0['pir_nqp'] = $P2
+    $P0['pir_nqprx'] = $P2
 
     $P3 = new 'Hash'
     $P4 = split "\n", <<'SOURCES'

Modified: branches/compact_pool_revamp/examples/languages/squaak/src/parser/actions.pm
==============================================================================
--- branches/compact_pool_revamp/examples/languages/squaak/src/parser/actions.pm	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/languages/squaak/src/parser/actions.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -36,35 +36,35 @@
         my $past := @?BLOCK.shift();
 
         for $<stat_or_def> {
-            $past.push($($_));
+            $past.push($_.ast);
         }
         make $past;
     }
 }
 
 method stat_or_def($/, $key) {
-    make $( $/{$key} );
+    make $/{$key}.ast;
 }
 
 method statement($/, $key) {
-    make $( $/{$key} );
+    make $/{$key}.ast;
 }
 
 method if_statement($/) {
-    my $cond := $( $<expression> );
-    my $then := $( $<block> );
+    my $cond := $<expression>.ast;
+    my $then := $<block>.ast;
     my $past := PAST::Op.new( $cond, $then, :pasttype('if'), :node($/) );
 
     ## if there's an else clause, add it to the PAST node.
     if $<else> {
-        $past.push( $( $<else>[0] ) );
+        $past.push( $<else>[0].ast );
     }
     make $past;
 }
 
 method while_statement($/) {
-    my $cond := $( $<expression> );
-    my $body := $( $<block> );
+    my $cond := $<expression>.ast;
+    my $body := $<block>.ast;
     make PAST::Op.new( $cond, $body, :pasttype('while'), :node($/) );
 }
 
@@ -83,7 +83,7 @@
     our $?BLOCK;
     our @?BLOCK;
 
-    my $init := $( $<for_init> );
+    my $init := $<for_init>.ast;
 
     ## cache the name of the loop variable
     my $itername := $init.name();
@@ -100,7 +100,7 @@
     my $body := @?BLOCK.shift();
     $?BLOCK  := @?BLOCK[0];
     for $<statement> {
-        $body.push($($_));
+        $body.push( $_.ast );
     }
 
     ## if a step was specified, use that; otherwise, use the default of +1.
@@ -108,7 +108,7 @@
     ##
     my $step;
     if $<step> {
-        my $stepsize := $( $<step>[0] );
+        my $stepsize := $<step>[0].ast;
         $step := PAST::Op.new( $iter, $stepsize, :pirop('add'), :node($/) );
     }
     else { ## default is increment by 1
@@ -117,7 +117,7 @@
     $body.push($step);
 
     ## while loop iterator <= end-expression
-    my $cond := PAST::Op.new( $iter, $( $<expression> ), :name('infix:<=') );
+    my $cond := PAST::Op.new( $iter, $<expression>.ast, :name('infix:<=') );
     my $loop := PAST::Op.new( $cond, $body, :pasttype('while'), :node($/) );
 
     make PAST::Stmts.new( $init, $loop, :node($/) );
@@ -132,12 +132,12 @@
     $?BLOCK := PAST::Block.new( :blocktype('immediate'), :node($/) );
     @?BLOCK.unshift($?BLOCK);
 
-    my $iter := $( $<identifier> );
+    my $iter := $<identifier>.ast;
     ## set a flag that this identifier is being declared
     $iter.isdecl(1);
     $iter.scope('lexical');
     ## the identifier is initialized with this expression
-    $iter.viviself( $( $<expression> ) );
+    $iter.viviself( $<expression>.ast );
 
     ## enter the loop variable as a local into the symbol table.
     $?BLOCK.symbol($iter.name(), :scope('lexical'));
@@ -147,16 +147,16 @@
 
 method try_statement($/) {
     ## get the try block
-    my $try := $( $<try> );
+    my $try := $<try>.ast;
 
     ## create a new PAST::Stmts node for the catch block;
     ## note that no PAST::Block is created, as this currently
     ## has problems with the exception object. For now this will do.
     my $catch := PAST::Stmts.new( :node($/) );
-    $catch.push( $( $<catch> ) );
+    $catch.push( $<catch>.ast );
 
     ## get the exception identifier;
-    my $exc := $( $<exception> );
+    my $exc := $<exception>.ast;
     $exc.isdecl(1);
     $exc.scope('lexical');
     $exc.viviself( PAST::Val.new( :value(0) ) );
@@ -176,14 +176,14 @@
 method exception($/) {
     our $?BLOCK;
 
-    my $exc := $( $<identifier> );
+    my $exc := $<identifier>.ast;
     ## the exception identifier is local to the exception handler
     $?BLOCK.symbol($exc.name(), :scope('lexical'));
     make $exc;
 }
 
 method throw_statement($/) {
-    make PAST::Op.new( $( $<expression> ), :pirop('throw'), :node($/) );
+    make PAST::Op.new( $<expression>.ast, :pirop('throw'), :node($/) );
 }
 
 method block($/, $key) {
@@ -201,24 +201,24 @@
         $?BLOCK  := @?BLOCK[0];
 
         for $<statement> {
-            $past.push($($_));
+            $past.push( $_.ast );
         }
         make $past
     }
 }
 
 method return_statement($/) {
-    my $expr := $( $<expression> );
+    my $expr := $<expression>.ast;
     make PAST::Op.new( $expr, :pasttype('return'), :node($/) );
 }
 
 method do_block($/) {
-    make $( $<block> );
+    make $<block>.ast;
 }
 
 method assignment($/) {
-    my $rhs := $( $<expression> );
-    my $lhs := $( $<primary> );
+    my $rhs := $<expression>.ast;
+    my $lhs := $<primary>.ast;
     $lhs.lvalue(1);
     make PAST::Op.new( $lhs, $rhs, :pasttype('bind'), :node($/) );
 }
@@ -228,13 +228,13 @@
     our $?BLOCK;
 
     ## note that $<parameters> creates a new PAST::Block.
-    my $past := $( $<parameters> );
-    my $name := $( $<identifier> );
+    my $past := $<parameters>.ast;
+    my $name := $<identifier>.ast;
 
     ## set the function name
     $past.name( $name.name() );
     for $<statement> {
-        $past.push($($_));
+        $past.push( $_.ast );
     }
 
     ## remove the block from the scope stack
@@ -249,13 +249,13 @@
 method variable_declaration($/) {
     our $?BLOCK;
 
-    my $past := $( $<identifier> );
+    my $past := $<identifier>.ast;
     $past.isdecl(1);
     $past.scope('lexical');
 
     ## if there's an initialization value, use it to viviself the variable.
     if $<expression> {
-        $past.viviself( $( $<expression>[0] ) );
+        $past.viviself( $<expression>[0].ast );
     }
     else { ## otherwise initialize to undef.
         $past.viviself( 'Undef' );
@@ -281,7 +281,7 @@
 
     my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
     for $<identifier> {
-        my $param := $( $_ );
+        my $param := $_.ast;
         $param.scope('parameter');
         $past.push($param);
 
@@ -297,8 +297,8 @@
 }
 
 method sub_call($/) {
-    my $invocant := $( $<primary> );
-    my $past     := $( $<arguments> );
+    my $invocant := $<primary>.ast;
+    my $past     := $<arguments>.ast;
     ## set the invocant as the first child of the PAST::Op(:pasttype('call')) node
     $past.unshift( $invocant );
     make $past;
@@ -307,15 +307,15 @@
 method arguments($/) {
     my $past := PAST::Op.new( :pasttype('call'), :node($/) );
     for $<expression> {
-        $past.push($($_));
+        $past.push( $_.ast );
     }
     make $past;
 }
 
 method primary($/) {
-    my $past := $( $<identifier> );
+    my $past := $<identifier>.ast ;
     for $<postfix_expression> {
-        my $expr := $( $_ );
+        my $expr := $_.ast;
         ## set the current $past as the first child of $expr;
         ## $expr is either a key or an index; both are "keyed"
         ## variable access, where the first child is assumed
@@ -327,11 +327,11 @@
 }
 
 method postfix_expression($/, $key) {
-    make $( $/{$key} );
+    make $/{$key}.ast;
 }
 
 method key($/) {
-    my $key := $( $<expression> );
+    my $key := $<expression>.ast;
 
     make PAST::Var.new( $key, :scope('keyed'),
                               :vivibase('Hash'),
@@ -341,7 +341,7 @@
 }
 
 method member($/) {
-    my $member := $( $<identifier> );
+    my $member := $<identifier>.ast;
     ## x.y is syntactic sugar for x{"y"}, so stringify the identifier:
     my $key    := PAST::Val.new( :returns('String'), :value($member.name()), :node($/) );
 
@@ -353,7 +353,7 @@
 }
 
 method index($/) {
-    my $index := $( $<expression> );
+    my $index := $<expression>.ast;
 
     make PAST::Var.new( $index, :scope('keyed'),
                                 :vivibase('ResizablePMCArray'),
@@ -362,8 +362,8 @@
 }
 
 method named_field($/) {
-    my $past := $( $<expression> );
-    my $name := $( $<string_constant> );
+    my $past := $<expression>.ast;
+    my $name := $<string_constant>.ast;
     ## the passed expression is in fact a named argument,
     ## use the named() accessor to set that name.
     $past.named($name);
@@ -377,7 +377,7 @@
     ## (which is not a valid Squaak name)
     my $past := PAST::Op.new( :name('!array'), :pasttype('call'), :node($/) );
     for $<expression> {
-        $past.push($($_));
+        $past.push( $_.ast );
     }
     make $past;
 }
@@ -388,13 +388,13 @@
     ## !hash (which is not a valid Squaak name)
     my $past := PAST::Op.new( :name('!hash'), :pasttype('call'), :node($/) );
     for $<named_field> {
-        $past.push($($_));
+        $past.push( $_.ast );
     }
     make $past;
 }
 
 method term($/, $key) {
-    make $( $/{$key} );
+    make $/{$key}.ast;
 }
 
 method identifier($/) {
@@ -413,13 +413,13 @@
 }
 
 method string_constant($/) {
-    make PAST::Val.new( :value( $($<string_literal>) ), :returns('String'), :node($/) );
+    make PAST::Val.new( :value( $<string_literal>.ast ), :returns('String'), :node($/) );
 }
 
 ## Handle the operator precedence table.
 method expression($/, $key) {
     if ($key eq 'end') {
-        make $($<expr>);
+        make $<expr>.ast;
     }
     else {
         my $past := PAST::Op.new( :name($<type>),
@@ -429,7 +429,7 @@
                                   :node($/)
                                 );
         for @($/) {
-            $past.push( $($_) );
+            $past.push( $_.ast );
         }
         make $past;
     }

Added: branches/compact_pool_revamp/examples/languages/squaak/src/parser/grammar.pm
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/compact_pool_revamp/examples/languages/squaak/src/parser/grammar.pm	Mon Apr 26 06:15:29 2010	(r46022)
@@ -0,0 +1,235 @@
+# Copyright (C) 2008, Parrot Foundation.
+# $Id$
+
+
+=begin overview
+
+This is the grammar for Squaak written as a sequence of Perl 6 rules.
+
+=end overview
+
+grammar Squaak::Grammar is PCT::Grammar;
+
+rule TOP {
+    {*}                                      #= open
+    <stat_or_def>*
+    [ $ || <.panic: 'Syntax error'> ]
+    {*}                                      #= close
+}
+
+rule stat_or_def {
+    | <statement> {*}                        #= statement
+    | <sub_definition> {*}                   #= sub_definition
+}
+
+rule statement {
+    | <if_statement> {*}                     #= if_statement
+    | <while_statement> {*}                  #= while_statement
+    | <for_statement> {*}                    #= for_statement
+    | <try_statement> {*}                    #= try_statement
+    | <throw_statement> {*}                  #= throw_statement
+    | <return_statement> {*}                 #= return_statement
+    | <sub_call> {*}                         #= sub_call
+    | <assignment> {*}                       #= assignment
+    | <variable_declaration> {*}             #= variable_declaration
+    | <do_block> {*}                         #= do_block
+}
+
+rule if_statement {
+    'if' <expression> 'then' <block> ['else' <else=block>]? 'end'
+    {*}
+}
+
+rule while_statement {
+    'while' <expression> 'do' <block> 'end'
+    {*}
+}
+
+rule for_statement {
+    'for' <for_init> ',' <expression> [',' <step=expression>]? 'do'
+    <statement>*
+    'end'
+    {*}
+}
+
+rule for_init {
+    'var' <identifier> '=' <expression>
+    {*}
+}
+
+rule try_statement {
+    'try' <try=block> 'catch' <exception> <catch=block> 'end'
+    {*}
+}
+
+rule exception {
+    <identifier>
+    {*}
+}
+
+rule throw_statement {
+    'throw' <expression>
+    {*}
+}
+
+rule return_statement {
+    'return' <expression>
+    {*}
+}
+
+rule block {
+    {*}                                #= open
+    <statement>*
+    {*}                                #= close
+}
+
+rule do_block {
+    'do' <block> 'end'
+    {*}
+}
+
+rule assignment {
+    <primary> '=' <expression>
+    {*}
+}
+
+rule sub_definition {
+    'sub' <identifier> <parameters>
+    <statement>*
+    'end'
+    {*}
+}
+
+rule parameters {
+    '(' [ <identifier> [',' <identifier>]* ]? ')'
+    {*}
+}
+
+rule variable_declaration {
+    'var' <identifier> ['=' <expression>]?
+    {*}
+}
+
+rule sub_call {
+    <primary> <arguments>
+    {*}
+}
+
+rule arguments {
+    '(' [ <expression> [',' <expression>]* ]? ')'
+    {*}
+}
+
+rule primary {
+    <identifier> <postfix_expression>*
+    {*}
+}
+
+rule postfix_expression {
+    | <key> {*}                      #= key
+    | <member> {*}                   #= member
+    | <index> {*}                    #= index
+}
+
+rule key {
+    '{' <expression> '}'
+    {*}
+}
+
+rule member {
+    '.' <identifier>
+    {*}
+}
+
+rule index {
+    '[' <expression> ']'
+    {*}
+}
+
+rule term {
+   | <float_constant> {*}            #= float_constant
+   | <integer_constant> {*}          #= integer_constant
+   | <string_constant> {*}           #= string_constant
+   | <hash_constructor> {*}          #= hash_constructor
+   | <array_constructor> {*}         #= array_constructor
+   | <sub_call> {*}                  #= sub_call
+   | <primary> {*}                   #= primary
+   | '(' <expression> ')' {*}        #= expression
+}
+
+rule hash_constructor {
+    '{' [ <named_field> [',' <named_field>]* ]? '}'
+    {*}
+}
+
+rule named_field {
+    <string_constant> '=>' <expression>
+    {*}
+}
+
+rule array_constructor {
+    '[' [ <expression> [',' <expression>]* ]? ']'
+    {*}
+}
+
+token identifier {
+    <!keyword> <ident>
+    {*}
+}
+
+token integer_constant {
+    \d+
+    {*}
+}
+
+token float_constant {
+    [
+    | \d+ '.' \d*
+    | \d* '.' \d+
+    ]
+    {*}
+}
+
+token string_constant {
+    \" <string_literal: '"'> \"
+    {*}
+}
+
+token keyword {
+    ['and'|'catch' |'do' |'else' |'end' |'for'|'if'   |'not'
+    |'or' |'return'|'sub'|'throw'|'try' |'var'|'while']>>
+}
+
+rule expression is optable { ... }
+
+proto 'infix:or'       is precedence('1')     is pasttype('unless') { ... }
+proto 'infix:and'      is tighter('infix:or') is pasttype('if')     { ... }
+
+proto 'infix:<'        is tighter('infix:and')                      { ... }
+proto 'infix:<='       is equiv('infix:<')                          { ... }
+proto 'infix:>'        is equiv('infix:<')                          { ... }
+proto 'infix:>='       is equiv('infix:<')                          { ... }
+proto 'infix:=='       is equiv('infix:<')                          { ... }
+proto 'infix:!='       is equiv('infix:<')                          { ... }
+
+proto 'infix:+'        is tighter('infix:<')  is pirop('add')     { ... }
+proto 'infix:-'        is equiv('infix:+')    is pirop('sub')     { ... }
+
+proto 'infix:..'       is equiv('infix:+')    is pirop('concat')  { ... }
+
+proto 'infix:*'        is tighter('infix:+')  is pirop('mul')     { ... }
+proto 'infix:%'        is equiv('infix:*')    is pirop('mod')     { ... }
+proto 'infix:/'        is equiv('infix:*')    is pirop('div')     { ... }
+
+proto 'prefix:not'     is tighter('infix:*')    is pirop('not')   { ... }
+proto 'prefix:-'       is tighter('prefix:not') is pirop('neg')   { ... }
+
+proto 'term:'          is tighter('prefix:-')  is parsed(&term)      { ... }
+
+
+##  this <ws> rule treats # as "comment to eol"
+##  you may want to replace it with something appropriate
+token ws {
+    <!ww>
+    [ '#' \N* \n? | \s+ ]*
+}

Modified: branches/compact_pool_revamp/examples/nci/xlibtest.pir
==============================================================================
--- branches/compact_pool_revamp/examples/nci/xlibtest.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/nci/xlibtest.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -285,12 +285,13 @@
     jsonfile = handle.'readall'()
     close handle
 
-    load_bytecode 'compilers/json/JSON.pbc'
-    .local pmc json
-    json = compreg 'JSON'
+    load_language 'data_json'
+    .local pmc json, jsonobject, jsondata
+    json = compreg 'data_json'
     .local pmc jsonobject
-    jsonobject = json(jsonfile)
-    listline = jsonobject [JKEY_LINES]
+    jsonobject = json.'compile'(jsonfile)
+    jsondata = jsonobject()
+    listline = jsondata [JKEY_LINES]
     goto finish
 
 failed:

Modified: branches/compact_pool_revamp/examples/sdl/mandel.pir
==============================================================================
--- branches/compact_pool_revamp/examples/sdl/mandel.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/sdl/mandel.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -556,9 +556,7 @@
 Optimized build
 
   [2] plain  runcore 64 bit                  3.0s
-  [2] -R cgp runcore 64 bit                  1.5s
   [2] plain  runcore 32 bit                  3.6s
-  [2] -R cgp runcore 32 bit                  1.6s
   [1] -R jit                                 1.1s
   [2] -R jit                                 0.8s
   [3] -R jit                                 0.5s

Modified: branches/compact_pool_revamp/examples/shootout/ack.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/ack.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/ack.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -3,7 +3,7 @@
 # $Id$
 # OUTPUT="Ack(3, 9) = 4093\n"
 #
-# ./parrot -Oc -R cgp-jit
+# ./parrot -Oc
 # RQ (Karl)
 # Seems to be an old benchmark, now deprecated by the shootout
 #

Modified: branches/compact_pool_revamp/examples/shootout/binarytrees.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/binarytrees.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/binarytrees.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
 # Copyright (C) 2005-2009, Parrot Foundation.
 # $Id$
 #

Modified: branches/compact_pool_revamp/examples/shootout/fasta.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/fasta.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/fasta.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
 # Copyright (C) 2005-2009, Parrot Foundation.
 # $Id$
 #

Modified: branches/compact_pool_revamp/examples/shootout/partialsums.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/partialsums.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/partialsums.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
 # Copyright (C) 2006-2009, Parrot Foundation.
 # $Id$
 #

Modified: branches/compact_pool_revamp/examples/shootout/pidigits.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/pidigits.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/pidigits.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
 # Copyright (C) 2005-2009, Parrot Foundation.
 # $Id$
 #

Modified: branches/compact_pool_revamp/examples/shootout/random.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/random.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/random.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
 # Copyright (C) 2005-2009, Parrot Foundation.
 # $Id$
 #

Modified: branches/compact_pool_revamp/examples/shootout/recursive-2.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/recursive-2.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/recursive-2.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -6,7 +6,7 @@
 # Fib and Tak by Joshua Isom
 
 # use less registers (leo)
-# time ./parrot -Oc -R cgp-jit recursive-2.pir 11
+# time ./parrot -Oc recursive-2.pir 11
 # real 2.32 s   (AMD X2 at 2000)
 # modified default value to n=3. Karl Forner
 

Modified: branches/compact_pool_revamp/examples/shootout/recursive.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/recursive.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/recursive.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -5,7 +5,7 @@
 # Ack by Leopold Toetsch
 # Fib and Tak by Joshua Isom
 # modified default value to n=3. Karl Forner
-# ./parrot -Oc -R cgp-jit recursive.pir N
+# ./parrot -Oc recursive.pir N
 
 .sub main :main
 	.param pmc argv

Modified: branches/compact_pool_revamp/examples/shootout/takfp.pir
==============================================================================
--- branches/compact_pool_revamp/examples/shootout/takfp.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/examples/shootout/takfp.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,8 +1,8 @@
-#!./parrot -R cgp
+#!./parrot
 # Copyright (C) 2005-2009, Parrot Foundation.
 # $Id$
 #
-# ./parrot -R cgp takfp.pir N         (N = 10 for shootout)
+# ./parrot takfp.pir N         (N = 10 for shootout)
 # by Joshua Isom
 # changed default value to N=7 (shootout default before being deprecated)
 # anyway N=10 froze my laptop. Karl Forner

Modified: branches/compact_pool_revamp/ext/Parrot-Embed/MANIFEST
==============================================================================
--- branches/compact_pool_revamp/ext/Parrot-Embed/MANIFEST	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/ext/Parrot-Embed/MANIFEST	Mon Apr 26 06:15:29 2010	(r46022)
@@ -1,7 +1,6 @@
 Build.PL
 Changes
 MANIFEST
-META.yml # Will be created by "make dist"
 README
 lib/Parrot/Embed.pm
 lib/Parrot/Embed.xs

Deleted: branches/compact_pool_revamp/ext/SQLite3/DBDI.pm
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/DBDI.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,41 +0,0 @@
-# Basic Perl 6 database layer
-# $Id$
-# Copyright (C) 2008, Parrot Foundation.
-
-use v6;
-
-class DBDI::DriverManager {
-    method getConnection($url, $login, $password) {
-        my $c1 = $url.index(":");
-        my $schema = substr($url, 0, $c1);
-        if ($schema ne "dbdi") { die "Unknown schema "~$schema }
-        my $rurl = substr($url, $c1+1);
-        #say "Remainder was "~$rurl;
-
-        my $c2 = $rurl.index(":");
-        my $driver = "DBDI::Driver::"~substr($rurl, 0, $c2);
-        eval "use "~$driver;
-        if ($!) { die "Couldn't load "~$driver~": "~$!; }
-
-        my $r = substr($rurl, $c2+1);
-        return (eval $driver).getConnection($r, $login, $password);
-        #return ::($driver).getConnection($r, $login, $password);
-    }
-}
-
-class DBDI::Driver { }
-class DBDI::Statement { }
-class DBDI::PreparedStatement { }
-
-class DBDI::ResultSet {
-    has $.statement;
-    method next() { return $.statement.next(); }
-    multi method getCol(Num $col) {
-        $.statement.getCol($col);
-    }
-    multi method getCol(Str $col) {
-        my $n = $.statement.lookupCol($col);
-        if ($n > -1) { return self.getCol($n) }
-        die "Couldn't find column "~$col;
-    }
-}

Deleted: branches/compact_pool_revamp/ext/SQLite3/DBDI/Driver/SQLite3.pm
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/DBDI/Driver/SQLite3.pm	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,96 +0,0 @@
-# SQLite3 Database Backend for DBDI
-# $Id$
-# Copyright (C) 2008, Parrot Foundation.
-
-use v6;
-
-use SQLite3;
-use DBDI;
-
-class DBDI::Driver::SQLite3 is DBDI::Driver {
-    has $dbHandle;
-    # This bit of hackery is to get around the fact that you can't use
-    # $foo = <pointer>, only $foo := <pointer>
-    method dbHandle { return $dbHandle }
-
-    method getConnection ($db, $username, $password) {
-        my $o = DBDI::Driver::SQLite3.new(:dbHandle(SQLite::open($db)));
-        return $o;
-    }
-
-    method createStatement() {
-        return DBDI::Statement::SQLite3.new(:connection(self));
-    }
-
-    method prepareStatement($sql) {
-        my $sth := SQLite::prepare($.dbHandle, $sql);
-        my $p = DBDI::PreparedStatement::SQLite3.new(:connection(self), :sql($sql), :stHandle($sth));
-        return $p;
-    }
-}
-
-class DBDI::Statement::SQLite3 is DBDI::Statement {
-    has $connection;
-
-    method executeQuery($sql) {
-        my $temp_statement = $connection.prepareStatement($sql);
-        return DBDI::ResultSet.new(:statement($temp_statement));
-    }
-
-    method executeUpdate($sql) {
-        my $temp_statement = $connection.prepareStatement($sql);
-        $temp_statement.next();
-        $temp_statement.finalize();
-    }
-}
-
-class DBDI::PreparedStatement::SQLite3 is DBDI::PreparedStatement {
-    has $connection;
-    has $stHandle;
-    has @columns;
-    has %columns;
-    has @bind_params;
-    has $!sql;
-
-    method executeUpdate() {
-        self.next();
-        self.finalize();
-    }
-
-    my method errorCheck () {
-        my $res = SQLite::errcode($connection.dbHandle);
-        my $res_c = SQLite::errmsg($connection.dbHandle);
-        if ($res > 0 and $res < 100) { die $res_c }
-        return $res;
-    }
-
-    my method fillColumns () {
-        # Won't work in any useful way at the moment
-        my $cn; my $i =0;
-        while ($cn = SQLite::column_name($stHandle, $i)) {
-            %columns{$cn} = $i++;
-            push @columns, $cn;
-        }
-    }
-
-    method next () {
-        SQLite::step($stHandle);
-        if (! + at columns) { self!fillColumns(); }
-        my $res = self!errorCheck();
-        return $res == 100;
-    }
-    method finalize () {
-        SQLite::finalize($stHandle);
-        return self!errorCheck();
-    }
-
-    method bind($num, $data) {
-        @bind_params[$num] = $data;
-        SQLite::bind_text($stHandle, $num, $data, chars($data), -1);
-        return self!errorCheck();
-    }
-
-    method lookupCol ($name) { return %columns{$name} // -1; }
-
-    method getCol ($num) { return SQLite::column_text($stHandle, $num); }
-}

Deleted: branches/compact_pool_revamp/ext/SQLite3/Makefile.PL
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/Makefile.PL	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,5 +0,0 @@
-use lib '../../lib';
-use Parrot::Configure;
-my $pc = Parrot::Configure->new();
-$pc->data->get_PConfig();
-$pc->genfile("Makefile.in" => "Makefile");

Deleted: branches/compact_pool_revamp/ext/SQLite3/Makefile.in
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/Makefile.in	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,86 +0,0 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
-
-TARGET_NAME = sqlite3s
-
-C_FILES = sqlite3s.c
-O_FILES = sqlite3s.o
-
-BUILDPREFIX     =
-PARROT_ROOT     = @build_dir@
-PREFIX          = @prefix@
-EXEC_PREFIX     = @exec_prefix@
-DESTDIR         =
-BIN_DIR         = @bindir@
-LIB_DIR         = @libdir@
-INCLUDE_DIR     = @includedir@
-DOC_DIR         = @docdir@
-INC_DIR         = @inc@
-RM_F             = @rm_f@
-RM_RF            = @rm_rf@
-AR_CR            = @ar@ @ar_flags@
-RANLIB           = @ranlib@
-PERL             = @perl@
-CP               = @cp@
-CHMOD            = @chmod@
-TOUCH            = @touch@
-YACC             = @yacc@
-LEX              = @lex@
-MKPATH           = @mkpath@
-AS               = @as@
-CC               = @cc@
-CC_INC           = @cc_inc@
-C_LIBS           = @libs@
-CC_SHARED        = @cc_shared@
-CFLAGS           = $(CC_INC) @ccflags@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ $(CC_SHARED)
-LINK_DYNAMIC     = @link_dynamic@
-LINK             = @link@
-LINKFLAGS        = @linkflags@ @link_debug@ @ld_debug@
-LD               = @ld@
-LDFLAGS          = @ldflags@ @ld_debug@
-#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
-O                = @o@
-EXE              = @exe@
-SHARE_EXT        = @share_ext@
-LOAD_EXT         = @load_ext@
-A                = @a@
-LD_SHARE_FLAGS   = @ld_share_flags@
-LD_LOAD_FLAGS    = @ld_load_flags@
-DYNEXT_DIR          = runtime/parrot/dynext
-
- at make_set_make@
-MAKE = @make_c@
-SHARED_LIB = $(TARGET_NAME)$(SHARE_EXT)
-
-.SUFFIXES : .c .h .pmc .dump $(O) .str .pir .pbc
-
-# Passing an empty argument in @ARGV to cc_flags.pl to indicate where extra -Is
-# (etc) should go. Otherwise it will insert them after the first space, which
-# makes life go horribly wrong if $(CC) contains spaces but can't have -I
-# arguments (etc) injected in the middle.
-# There is probably a better way to do this, but I can't work it out right now.
-.c$(O) :
-	@$(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
-
-PERL6=../../parrot ../../languages/rakudo/perl6.pbc
-
-all :
-	cd ../..; make all
-	cd ../../compilers/ncigen; $(PERL6) ../../ext/SQLite3/gen_sqlite3.pl /usr/include/sqlite3.h > ../../ext/SQLite3/genSQLite3.pir
-
-test:
-	$(RM_F) test.db t/test.db
-	PERL6LIB=../../languages/rakudo $(PERL6) t/test.p6
-
-$(SHARED_LIB) : $(C_FILES)
-	$(MKPATH) @blib_dir@
-	$(CC) $(CC_INC) $(LD_SHARE_FLAGS) $(LDFLAGS) @ld_out@$@ \
-#IF(cygwin):		-Wl,--out-implib=lib$(TARGET_NAME).dll.a \
-#IF(win32 and cc==gcc):		-Wl,--out-implib=lib$(TARGET_NAME).lib \
-		$(C_FILES) $(C_LIBS) $(ICU_SHARED)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-
-clean : 
-	$(RM_F) $(SHARED_LIB) @blib_dir@ $(O_FILES) Makefile
-#IF(cygwin):	$(RM_F) lib$(TARGET_NAME).dll.a
-#IF(win32 and cc==gcc):	$(RM_F) lib$(TARGET_NAME).lib

Deleted: branches/compact_pool_revamp/ext/SQLite3/SQLite3.pir
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/SQLite3.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,135 +0,0 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
-# $Id$
-
-.namespace ['SQLite3']
-
-.const int SQLITE_OK         =   0   # Successful result
-# beginning-of-error-codes
-.const int SQLITE_ERROR      =   1   # SQL error or missing database
-.const int SQLITE_INTERNAL   =   2   # Internal logic error in SQLite
-.const int SQLITE_PERM       =   3   # Access permission denied
-.const int SQLITE_ABORT      =   4   # Callback routine requested an abort
-.const int SQLITE_BUSY       =   5   # The database file is locked
-.const int SQLITE_LOCKED     =   6   # A table in the database is locked
-.const int SQLITE_NOMEM      =   7   # A malloc() failed
-.const int SQLITE_READONLY   =   8   # Attempt to write a readonly database
-.const int SQLITE_INTERRUPT  =   9   # Operation terminated by sqlite3_interrupt()
-.const int SQLITE_IOERR      =  10   # Some kind of disk I/O error occurred
-.const int SQLITE_CORRUPT    =  11   # The database disk image is malformed
-.const int SQLITE_NOTFOUND   =  12   # NOT USED. Table or record not found
-.const int SQLITE_FULL       =  13   # Insertion failed because database is full
-.const int SQLITE_CANTOPEN   =  14   # Unable to open the database file
-.const int SQLITE_PROTOCOL   =  15   # NOT USED. Database lock protocol error
-.const int SQLITE_EMPTY      =  16   # Database is empty
-.const int SQLITE_SCHEMA     =  17   # The database schema changed
-.const int SQLITE_TOOBIG     =  18   # String or BLOB exceeds size limit
-.const int SQLITE_CONSTRAINT =  19   # Abort due to constraint violation
-.const int SQLITE_MISMATCH   =  20   # Data type mismatch
-.const int SQLITE_MISUSE     =  21   # Library used incorrectly
-.const int SQLITE_NOLFS      =  22   # Uses OS features not supported on host
-.const int SQLITE_AUTH       =  23   # Authorization denied
-.const int SQLITE_FORMAT     =  24   # Auxiliary database format error
-.const int SQLITE_RANGE      =  25   # 2nd parameter to sqlite3_bind out of range
-.const int SQLITE_NOTADB     =  26   # File opened that is not a database file
-.const int SQLITE_ROW        =  100  # sqlite3_step() has another row ready
-.const int SQLITE_DONE       =  101  # sqlite3_step() has finished executing
-
-.sub '_sqlite_init' :load
-    .local pmc libname
-    .local pmc function
-    .local pmc sqlite_funcs
-
-    libname = loadlib 'libsqlite3'
-    set_global '_sqlite3', libname
-
-    sqlite_funcs = new 'ResizableStringArray'
-    push sqlite_funcs, 'step'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'finalize'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'close'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'errmsg'
-    push sqlite_funcs, 'tp'
-    push sqlite_funcs, 'errcode'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'bind_int'
-    push sqlite_funcs, 'ipii'
-    push sqlite_funcs, 'bind_double'
-    push sqlite_funcs, 'ipid'
-    push sqlite_funcs, 'bind_text'
-    push sqlite_funcs, 'ipitii'
-    push sqlite_funcs, 'column_name'
-    push sqlite_funcs, 'tpi'
-    push sqlite_funcs, 'column_count'
-    push sqlite_funcs, 'ip'
-    push sqlite_funcs, 'column_type'
-    push sqlite_funcs, 'ipi'
-    push sqlite_funcs, 'column_int'
-    push sqlite_funcs, 'ipi'
-    push sqlite_funcs, 'column_double'
-    push sqlite_funcs, 'lpi'
-    push sqlite_funcs, 'column_text'
-    push sqlite_funcs, 'tpi'
-
-    function  = dlfunc libname, 'sqlite3_open', 'itV'
-    set_global 'open_raw', function
-
-    function  = dlfunc libname, 'sqlite3_prepare_v2', 'iptiVp'
-    set_global 'prepare_raw', function
-
-    .local pmc list_iter
-    list_iter = iter sqlite_funcs
-    .local string func_name, signature
-    .local pmc    function
-
-  list_loop:
-    unless list_iter goto done
-    func_name = shift list_iter
-    signature = shift list_iter
-    $S0 = concat 'sqlite3_', func_name
-    function  = dlfunc libname, $S0, signature
-    set_global func_name, function
-    goto list_loop
-
-  done:
-
-.end
-
-.sub 'open'
-  .param string connectstr
-  .local pmc dbhandle
-  .local pmc open_raw
-  .local int rc
-
-  open_raw = get_global 'open_raw'
-  dbhandle = new 'Pointer'
-  rc = open_raw(connectstr, dbhandle)
-
-  .return(dbhandle)
-.end
-
-.sub 'prepare'
-  .param pmc dbhandle
-  .param string psstr
-  .local int psstrlen
-  .local pmc pshandle
-  .local pmc dummy
-  .local pmc prepare_raw
-  .local int rc
-
-  prepare_raw = get_global 'prepare_raw'
-
-  pshandle = new 'Pointer'
-  dummy = new 'Pointer'
-  psstrlen = length psstr
-  rc = prepare_raw(dbhandle, psstr, psstrlen, pshandle, dummy)
-
-  .return(pshandle)
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/ext/SQLite3/gen_sqlite3.pl
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/gen_sqlite3.pl	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,139 +0,0 @@
-#!/home/tewk/srcs/parrot/perl6
-
-# $Id$
-# Copyright (C) 2008, Parrot Foundation.
-
-use v6;
-use NCIGENP6;
-
-my $fn = @*ARGS[0];
-
-my %rename_table = (
-    'open'          => 'open_raw',
-    'prepare_v2'    => 'prepare_raw',
-);
-
-print preamble();
-
-for (parse_ast($fn).hash().kv) -> $k,$v {
-    #dump_node($v);
-    if ($v.WHAT eq "NCIGENAST::FuncDecl()") {
-        my @result = pir($v);
-        my $cname       = @result[0];
-        my $signature   = @result[1];
-        my $source      = @result[2];
-        my $suffix_name = @result[0];
-        $suffix_name .= subst( /sqlite3_/, '' );
-
-        my $pirname = %rename_table{$suffix_name} || $suffix_name;
-
-        say "    '_nci_init_symbol_'(lib, '$pirname', '$cname', '$signature')";
-    }
-}
-print postamble();
-
-sub preamble() {
-qq{
-##GENERATED FILE DO NOT EDIT##
-##GENERATED BY gen_sqlite3.pl##
-.namespace ['SQLite3']
-
-.const int SQLITE_OK         =   0   # Successful result
-# beginning-of-error-codes
-.const int SQLITE_ERROR      =   1   # SQL error or missing database
-.const int SQLITE_INTERNAL   =   2   # Internal logic error in SQLite
-.const int SQLITE_PERM       =   3   # Access permission denied
-.const int SQLITE_ABORT      =   4   # Callback routine requested an abort
-.const int SQLITE_BUSY       =   5   # The database file is locked
-.const int SQLITE_LOCKED     =   6   # A table in the database is locked
-.const int SQLITE_NOMEM      =   7   # A malloc() failed
-.const int SQLITE_READONLY   =   8   # Attempt to write a readonly database
-.const int SQLITE_INTERRUPT  =   9   # Operation terminated by sqlite3_interrupt()
-.const int SQLITE_IOERR      =  10   # Some kind of disk I/O error occurred
-.const int SQLITE_CORRUPT    =  11   # The database disk image is malformed
-.const int SQLITE_NOTFOUND   =  12   # NOT USED. Table or record not found
-.const int SQLITE_FULL       =  13   # Insertion failed because database is full
-.const int SQLITE_CANTOPEN   =  14   # Unable to open the database file
-.const int SQLITE_PROTOCOL   =  15   # NOT USED. Database lock protocol error
-.const int SQLITE_EMPTY      =  16   # Database is empty
-.const int SQLITE_SCHEMA     =  17   # The database schema changed
-.const int SQLITE_TOOBIG     =  18   # String or BLOB exceeds size limit
-.const int SQLITE_CONSTRAINT =  19   # Abort due to constraint violation
-.const int SQLITE_MISMATCH   =  20   # Data type mismatch
-.const int SQLITE_MISUSE     =  21   # Library used incorrectly
-.const int SQLITE_NOLFS      =  22   # Uses OS features not supported on host
-.const int SQLITE_AUTH       =  23   # Authorization denied
-.const int SQLITE_FORMAT     =  24   # Auxiliary database format error
-.const int SQLITE_RANGE      =  25   # 2nd parameter to sqlite3_bind out of range
-.const int SQLITE_NOTADB     =  26   # File opened that is not a database file
-.const int SQLITE_ROW        =  100  # sqlite3_step() has another row ready
-.const int SQLITE_DONE       =  101  # sqlite3_step() has finished executing
-
-.sub '_nci_init_symbol_'
-    .param pmc    lib
-    .param string pirname
-    .param string cname
-    .param string signature
-    .local pmc    function
-
-    function  = dlfunc lib, cname, signature
-    set_global pirname, function
-.end
-
-.sub '_sqlite_init' :load
-    .local pmc lib
-
-    lib = loadlib 'libsqlite3'
-    set_global '_sqlite3', lib
-};
-}
-
-sub postamble () {
-qq{.end
-
-.sub 'open'
-  .param string connectstr
-  .local pmc dbhandle
-  .local pmc open_raw
-  .local int rc
-
-  open_raw = get_global 'open_raw'
-  dbhandle = new 'Pointer'
-  rc = open_raw(connectstr, dbhandle)
-
-  .return(dbhandle)
-.end
-
-.sub 'prepare'
-  .param pmc dbhandle
-  .param string psstr
-  .local int psstrlen
-  .local pmc pshandle
-  .local pmc dummy
-  .local pmc prepare_raw
-  .local int rc
-
-  prepare_raw = get_global 'prepare_raw'
-
-  pshandle = new 'Pointer'
-  dummy = new 'Pointer'
-  psstrlen = length psstr
-  rc = prepare_raw(dbhandle, psstr, psstrlen, pshandle, dummy)
-
-  .return(pshandle)
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
-};
-}
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=perl6:
-

Deleted: branches/compact_pool_revamp/ext/SQLite3/t/test.p6
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/t/test.p6	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,35 +0,0 @@
-use DBDI;
-use Test;
-
-plan 7;
-
-my $conn = DBDI::DriverManager.getConnection("dbdi:SQLite3:test.db", "", "");
-isa_ok($conn, DBDI::Driver::SQLite3);
-my $stm = $conn.createStatement();
-isa_ok($stm, DBDI::Statement);
-my $rs = $stm.executeUpdate("CREATE TABLE foo (bar, baz)");
-### I'd also add a test that a SELECT works and returns 0 rows
-
-try {
-    $rs = $stm.executeUpdate("CREATE TABLE foo (bar, baz)");
-};
-ok($! eq "table foo already exists", "Can't create again (and did create first time)");
-my $stm = $conn.prepareStatement("INSERT INTO foo (bar, baz) VALUES (?, ?)");
-isa_ok( $stm, DBDI::PreparedStatement);
-$stm.bind(1, 123);
-$stm.bind(2, "Thingy");
-$stm.executeUpdate();
-### is( $stm->rowsAffected, 1, 'Inserted one row' );
-
-my $stm2 = $conn.createStatement();
-my $rs = $stm2.executeQuery("SELECT baz, bar FROM foo");
-while ($rs.next()) {
-    ok(($rs.getCol("baz") eq "Thingy"), "baz == Thingy");
-    ok(($rs.getCol(1) = 123), "col1 == 123");
-    try { 
-        $rs.getCol("bas");
-    };
-    ok($! eq "Couldn't find column bas", "Non-existent columns");
-}
-
-# vim: ft=perl6:

Deleted: branches/compact_pool_revamp/ext/SQLite3/test.pir
==============================================================================
--- branches/compact_pool_revamp/ext/SQLite3/test.pir	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,25 +0,0 @@
-#../../parrot -t5 test.pir
-# Copyright (C) 2008-2009, Parrot Foundation.
-# $Id$
-
-.sub 'main'
-load_bytecode 'SQLite3.pir'
-
-$P0 = get_global [ 'SQLite' ], 'open'
-$P1 = $P0("test.db")
-
-$P2 = get_global [ 'SQLite' ], 'prepare'
-$P3 = $P2 ($P1, "CREATE TABLE foo (bar)")
-
-$P4 = get_global [ 'SQLite' ], 'step'
-$P5 = $P4 ($P3)
-
-$P6 = get_global [ 'SQLite' ], 'finalize'
-$P7 = $P6 ($P3)
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/compact_pool_revamp/ext/nqp-rx/.gitignore
==============================================================================
--- branches/compact_pool_revamp/ext/nqp-rx/.gitignore	Mon Apr 26 06:15:29 2010	(r46021)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,15 +0,0 @@
-Makefile
-/parrot
-/parrot_install
-.*.swp
-*.c
-*.o
-Regex.pbc
-HLL.pbc
-P6Regex
-P6Regex.pbc
-nqp
-nqp.pbc
-src/gen/*.pir
-src/stage1
-src/stage2

Modified: branches/compact_pool_revamp/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/compact_pool_revamp/ext/nqp-rx/src/stage0/HLL-s0.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/ext/nqp-rx/src/stage0/HLL-s0.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -522,7 +522,7 @@
 .end
 
 
-.sub 'split_words' :method
+.sub 'split_words' :method :nsentry
     .param string words
     .local int pos, eos
     .local pmc result
@@ -854,119 +854,117 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336377.56964")
+.sub "_block11"  :anon :subid("10_1271948647.57035")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
 .annotate "line", 5
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
-    $P344 = $P14()
+    $P339 = $P14()
 .annotate "line", 1
-    .return ($P344)
+    .return ($P339)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post105") :outer("10_1271336377.56964")
+.sub "" :load :init :subid("post103") :outer("10_1271948647.57035")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336377.56964" 
+    .const 'Sub' $P12 = "10_1271948647.57035" 
     .local pmc block
     set block, $P12
-    $P345 = get_root_global ["parrot"], "P6metaclass"
-    $P345."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
+    $P340 = get_root_global ["parrot"], "P6metaclass"
+    $P340."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1271336377.56964") :outer("10_1271336377.56964")
+.sub "_block13"  :subid("11_1271948647.57035") :outer("10_1271948647.57035")
 .annotate "line", 5
-    .const 'Sub' $P334 = "103_1271336377.56964" 
-    capture_lex $P334
-    .const 'Sub' $P327 = "101_1271336377.56964" 
-    capture_lex $P327
-    .const 'Sub' $P314 = "98_1271336377.56964" 
-    capture_lex $P314
-    .const 'Sub' $P282 = "93_1271336377.56964" 
-    capture_lex $P282
-    .const 'Sub' $P276 = "91_1271336377.56964" 
-    capture_lex $P276
-    .const 'Sub' $P271 = "89_1271336377.56964" 
+    .const 'Sub' $P329 = "101_1271948647.57035" 
+    capture_lex $P329
+    .const 'Sub' $P322 = "99_1271948647.57035" 
+    capture_lex $P322
+    .const 'Sub' $P309 = "96_1271948647.57035" 
+    capture_lex $P309
+    .const 'Sub' $P277 = "91_1271948647.57035" 
+    capture_lex $P277
+    .const 'Sub' $P271 = "89_1271948647.57035" 
     capture_lex $P271
-    .const 'Sub' $P265 = "87_1271336377.56964" 
-    capture_lex $P265
-    .const 'Sub' $P259 = "85_1271336377.56964" 
-    capture_lex $P259
-    .const 'Sub' $P254 = "83_1271336377.56964" 
+    .const 'Sub' $P266 = "87_1271948647.57035" 
+    capture_lex $P266
+    .const 'Sub' $P260 = "85_1271948647.57035" 
+    capture_lex $P260
+    .const 'Sub' $P254 = "83_1271948647.57035" 
     capture_lex $P254
-    .const 'Sub' $P249 = "81_1271336377.56964" 
+    .const 'Sub' $P249 = "81_1271948647.57035" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1271336377.56964" 
+    .const 'Sub' $P244 = "79_1271948647.57035" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1271336377.56964" 
+    .const 'Sub' $P239 = "77_1271948647.57035" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1271336377.56964" 
+    .const 'Sub' $P234 = "75_1271948647.57035" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1271336377.56964" 
+    .const 'Sub' $P229 = "73_1271948647.57035" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1271336377.56964" 
+    .const 'Sub' $P224 = "71_1271948647.57035" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1271336377.56964" 
+    .const 'Sub' $P219 = "69_1271948647.57035" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1271336377.56964" 
+    .const 'Sub' $P208 = "65_1271948647.57035" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1271336377.56964" 
+    .const 'Sub' $P195 = "63_1271948647.57035" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1271336377.56964" 
+    .const 'Sub' $P183 = "61_1271948647.57035" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1271336377.56964" 
+    .const 'Sub' $P176 = "59_1271948647.57035" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1271336377.56964" 
+    .const 'Sub' $P167 = "57_1271948647.57035" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1271336377.56964" 
+    .const 'Sub' $P160 = "55_1271948647.57035" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1271336377.56964" 
+    .const 'Sub' $P151 = "53_1271948647.57035" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1271336377.56964" 
+    .const 'Sub' $P144 = "51_1271948647.57035" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1271336377.56964" 
+    .const 'Sub' $P135 = "49_1271948647.57035" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1271336377.56964" 
+    .const 'Sub' $P128 = "47_1271948647.57035" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1271336377.56964" 
+    .const 'Sub' $P121 = "45_1271948647.57035" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1271336377.56964" 
+    .const 'Sub' $P111 = "43_1271948647.57035" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1271336377.56964" 
+    .const 'Sub' $P103 = "41_1271948647.57035" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1271336377.56964" 
+    .const 'Sub' $P93 = "40_1271948647.57035" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1271336377.56964" 
+    .const 'Sub' $P87 = "38_1271948647.57035" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1271336377.56964" 
+    .const 'Sub' $P82 = "36_1271948647.57035" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1271336377.56964" 
+    .const 'Sub' $P74 = "34_1271948647.57035" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1271336377.56964" 
+    .const 'Sub' $P68 = "32_1271948647.57035" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1271336377.56964" 
+    .const 'Sub' $P62 = "30_1271948647.57035" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1271336377.56964" 
+    .const 'Sub' $P56 = "28_1271948647.57035" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1271336377.56964" 
+    .const 'Sub' $P23 = "14_1271948647.57035" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1271336377.56964" 
+    .const 'Sub' $P15 = "12_1271948647.57035" 
     capture_lex $P15
 .annotate "line", 33
-    .const 'Sub' $P334 = "103_1271336377.56964" 
-    capture_lex $P334
+    .const 'Sub' $P329 = "101_1271948647.57035" 
+    capture_lex $P329
 .annotate "line", 5
-    .return ($P334)
+    .return ($P329)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "ws"  :subid("12_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -1050,7 +1048,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1271336377.56964") :method
+.sub "!PREFIX__ws"  :subid("13_1271948647.57035") :method
 .annotate "line", 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1059,7 +1057,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "termish"  :subid("14_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1151,7 +1149,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1271336377.56964") :method
+.sub "!PREFIX__termish"  :subid("15_1271948647.57035") :method
 .annotate "line", 5
     new $P26, "ResizablePMCArray"
     push $P26, ""
@@ -1160,7 +1158,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1271336377.56964") :method
+.sub "term"  :subid("16_1271948647.57035") :method
 .annotate "line", 13
     $P33 = self."!protoregex"("term")
     .return ($P33)
@@ -1168,7 +1166,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1271336377.56964") :method
+.sub "!PREFIX__term"  :subid("17_1271948647.57035") :method
 .annotate "line", 13
     $P35 = self."!PREFIX__!protoregex"("term")
     .return ($P35)
@@ -1176,7 +1174,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1271336377.56964") :method
+.sub "infix"  :subid("18_1271948647.57035") :method
 .annotate "line", 14
     $P37 = self."!protoregex"("infix")
     .return ($P37)
@@ -1184,7 +1182,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1271336377.56964") :method
+.sub "!PREFIX__infix"  :subid("19_1271948647.57035") :method
 .annotate "line", 14
     $P39 = self."!PREFIX__!protoregex"("infix")
     .return ($P39)
@@ -1192,7 +1190,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1271336377.56964") :method
+.sub "prefix"  :subid("20_1271948647.57035") :method
 .annotate "line", 15
     $P41 = self."!protoregex"("prefix")
     .return ($P41)
@@ -1200,7 +1198,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1271336377.56964") :method
+.sub "!PREFIX__prefix"  :subid("21_1271948647.57035") :method
 .annotate "line", 15
     $P43 = self."!PREFIX__!protoregex"("prefix")
     .return ($P43)
@@ -1208,7 +1206,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1271336377.56964") :method
+.sub "postfix"  :subid("22_1271948647.57035") :method
 .annotate "line", 16
     $P45 = self."!protoregex"("postfix")
     .return ($P45)
@@ -1216,7 +1214,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1271336377.56964") :method
+.sub "!PREFIX__postfix"  :subid("23_1271948647.57035") :method
 .annotate "line", 16
     $P47 = self."!PREFIX__!protoregex"("postfix")
     .return ($P47)
@@ -1224,7 +1222,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1271336377.56964") :method
+.sub "circumfix"  :subid("24_1271948647.57035") :method
 .annotate "line", 17
     $P49 = self."!protoregex"("circumfix")
     .return ($P49)
@@ -1232,7 +1230,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1271336377.56964") :method
+.sub "!PREFIX__circumfix"  :subid("25_1271948647.57035") :method
 .annotate "line", 17
     $P51 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P51)
@@ -1240,7 +1238,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1271336377.56964") :method
+.sub "postcircumfix"  :subid("26_1271948647.57035") :method
 .annotate "line", 18
     $P53 = self."!protoregex"("postcircumfix")
     .return ($P53)
@@ -1248,7 +1246,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1271336377.56964") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1271948647.57035") :method
 .annotate "line", 18
     $P55 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P55)
@@ -1256,7 +1254,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "term:sym<circumfix>"  :subid("28_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx57_tgt
     .local int rx57_pos
@@ -1314,7 +1312,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1271336377.56964") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1271948647.57035") :method
 .annotate "line", 5
     $P59 = self."!PREFIX__!subrule"("circumfix", "")
     new $P60, "ResizablePMCArray"
@@ -1324,7 +1322,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "infixish"  :subid("30_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx63_tgt
     .local int rx63_pos
@@ -1382,7 +1380,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1271336377.56964") :method
+.sub "!PREFIX__infixish"  :subid("31_1271948647.57035") :method
 .annotate "line", 5
     $P65 = self."!PREFIX__!subrule"("OPER=infix", "")
     new $P66, "ResizablePMCArray"
@@ -1392,7 +1390,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "prefixish"  :subid("32_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx69_tgt
     .local int rx69_pos
@@ -1455,7 +1453,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1271336377.56964") :method
+.sub "!PREFIX__prefixish"  :subid("33_1271948647.57035") :method
 .annotate "line", 5
     $P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
     new $P72, "ResizablePMCArray"
@@ -1465,7 +1463,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "postfixish"  :subid("34_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx75_tgt
     .local int rx75_pos
@@ -1539,7 +1537,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1271336377.56964") :method
+.sub "!PREFIX__postfixish"  :subid("35_1271948647.57035") :method
 .annotate "line", 5
     $P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
     $P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1551,7 +1549,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "nullterm"  :subid("36_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx83_tgt
     .local int rx83_pos
@@ -1602,7 +1600,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1271336377.56964") :method
+.sub "!PREFIX__nullterm"  :subid("37_1271948647.57035") :method
 .annotate "line", 5
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -1611,7 +1609,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "nullterm_alt"  :subid("38_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 5
     .local string rx88_tgt
     .local int rx88_pos
@@ -1669,7 +1667,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1271336377.56964") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1271948647.57035") :method
 .annotate "line", 5
     $P90 = self."!PREFIX__!subrule"("term", "")
     new $P91, "ResizablePMCArray"
@@ -1679,7 +1677,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nulltermish"  :subid("40_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "nulltermish"  :subid("40_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
@@ -1706,7 +1704,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_delimited"  :subid("41_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx104_tgt
     .local int rx104_pos
@@ -1788,7 +1786,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1271336377.56964") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1271948647.57035") :method
 .annotate "line", 33
     $P106 = self."!PREFIX__!subrule"("starter", "")
     new $P107, "ResizablePMCArray"
@@ -1798,7 +1796,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_atom"  :subid("43_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx112_tgt
     .local int rx112_pos
@@ -1889,7 +1887,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1271336377.56964") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1271948647.57035") :method
 .annotate "line", 33
     new $P114, "ResizablePMCArray"
     push $P114, ""
@@ -1898,7 +1896,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "decint"  :subid("45_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx122_tgt
     .local int rx122_pos
@@ -1970,7 +1968,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1271336377.56964") :method
+.sub "!PREFIX__decint"  :subid("46_1271948647.57035") :method
 .annotate "line", 33
     new $P124, "ResizablePMCArray"
     push $P124, ""
@@ -1979,7 +1977,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decints"  :subid("47_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "decints"  :subid("47_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx129_tgt
     .local int rx129_pos
@@ -2063,7 +2061,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decints"  :subid("48_1271336377.56964") :method
+.sub "!PREFIX__decints"  :subid("48_1271948647.57035") :method
 .annotate "line", 33
     new $P131, "ResizablePMCArray"
     push $P131, ""
@@ -2072,7 +2070,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "hexint"  :subid("49_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx136_tgt
     .local int rx136_pos
@@ -2153,7 +2151,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1271336377.56964") :method
+.sub "!PREFIX__hexint"  :subid("50_1271948647.57035") :method
 .annotate "line", 33
     new $P138, "ResizablePMCArray"
     push $P138, ""
@@ -2162,7 +2160,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "hexints"  :subid("51_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2246,7 +2244,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1271336377.56964") :method
+.sub "!PREFIX__hexints"  :subid("52_1271948647.57035") :method
 .annotate "line", 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2255,7 +2253,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "octint"  :subid("53_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2336,7 +2334,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1271336377.56964") :method
+.sub "!PREFIX__octint"  :subid("54_1271948647.57035") :method
 .annotate "line", 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2345,7 +2343,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "octints"  :subid("55_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx161_tgt
     .local int rx161_pos
@@ -2429,7 +2427,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1271336377.56964") :method
+.sub "!PREFIX__octints"  :subid("56_1271948647.57035") :method
 .annotate "line", 33
     new $P163, "ResizablePMCArray"
     push $P163, ""
@@ -2438,7 +2436,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "binint"  :subid("57_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx168_tgt
     .local int rx168_pos
@@ -2519,7 +2517,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1271336377.56964") :method
+.sub "!PREFIX__binint"  :subid("58_1271948647.57035") :method
 .annotate "line", 33
     new $P170, "ResizablePMCArray"
     push $P170, ""
@@ -2528,7 +2526,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "binints"  :subid("59_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx177_tgt
     .local int rx177_pos
@@ -2612,7 +2610,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1271336377.56964") :method
+.sub "!PREFIX__binints"  :subid("60_1271948647.57035") :method
 .annotate "line", 33
     new $P179, "ResizablePMCArray"
     push $P179, ""
@@ -2621,7 +2619,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "integer"  :subid("61_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx184_tgt
     .local int rx184_pos
@@ -2769,7 +2767,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1271336377.56964") :method
+.sub "!PREFIX__integer"  :subid("62_1271948647.57035") :method
 .annotate "line", 33
     $P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
     $P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2787,7 +2785,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "dec_number"  :subid("63_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -2966,7 +2964,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1271336377.56964") :method
+.sub "!PREFIX__dec_number"  :subid("64_1271948647.57035") :method
 .annotate "line", 33
     new $P198, "ResizablePMCArray"
     push $P198, ""
@@ -2977,7 +2975,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "escale"  :subid("65_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx209_tgt
     .local int rx209_pos
@@ -3054,7 +3052,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1271336377.56964") :method
+.sub "!PREFIX__escale"  :subid("66_1271948647.57035") :method
 .annotate "line", 33
     new $P211, "ResizablePMCArray"
     push $P211, "e"
@@ -3064,7 +3062,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1271336377.56964") :method
+.sub "quote_escape"  :subid("67_1271948647.57035") :method
 .annotate "line", 79
     $P216 = self."!protoregex"("quote_escape")
     .return ($P216)
@@ -3072,7 +3070,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1271336377.56964") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1271948647.57035") :method
 .annotate "line", 79
     $P218 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P218)
@@ -3080,7 +3078,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<backslash>"  :subid("69_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx220_tgt
     .local int rx220_pos
@@ -3142,7 +3140,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1271948647.57035") :method
 .annotate "line", 33
     new $P222, "ResizablePMCArray"
     push $P222, "\\\\"
@@ -3151,7 +3149,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<stopper>"  :subid("71_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx225_tgt
     .local int rx225_pos
@@ -3220,7 +3218,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1271948647.57035") :method
 .annotate "line", 33
     new $P227, "ResizablePMCArray"
     push $P227, "\\"
@@ -3229,7 +3227,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<bs>"  :subid("73_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx230_tgt
     .local int rx230_pos
@@ -3291,7 +3289,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1271948647.57035") :method
 .annotate "line", 33
     new $P232, "ResizablePMCArray"
     push $P232, "\\b"
@@ -3300,7 +3298,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<nl>"  :subid("75_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx235_tgt
     .local int rx235_pos
@@ -3362,7 +3360,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1271948647.57035") :method
 .annotate "line", 33
     new $P237, "ResizablePMCArray"
     push $P237, "\\n"
@@ -3371,7 +3369,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<cr>"  :subid("77_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx240_tgt
     .local int rx240_pos
@@ -3433,7 +3431,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1271948647.57035") :method
 .annotate "line", 33
     new $P242, "ResizablePMCArray"
     push $P242, "\\r"
@@ -3442,7 +3440,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<tab>"  :subid("79_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx245_tgt
     .local int rx245_pos
@@ -3504,7 +3502,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1271948647.57035") :method
 .annotate "line", 33
     new $P247, "ResizablePMCArray"
     push $P247, "\\t"
@@ -3513,7 +3511,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<ff>"  :subid("81_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<ff>"  :subid("81_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx250_tgt
     .local int rx250_pos
@@ -3575,7 +3573,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1271948647.57035") :method
 .annotate "line", 33
     new $P252, "ResizablePMCArray"
     push $P252, "\\f"
@@ -3584,7 +3582,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<esc>"  :subid("83_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<hex>"  :subid("83_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx255_tgt
     .local int rx255_pos
@@ -3593,7 +3591,7 @@
     .local int rx255_rep
     .local pmc rx255_cur
     (rx255_cur, rx255_pos, rx255_tgt) = self."!cursor_start"()
-    rx255_cur."!cursor_debug"("START ", "quote_escape:sym<esc>")
+    rx255_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
     .lex unicode:"$\x{a2}", rx255_cur
     .local pmc match
     .lex "$/", match
@@ -3615,21 +3613,57 @@
     set_addr $I10, rxscan258_loop
     rx255_cur."!mark_push"(0, rx255_pos, $I10)
   rxscan258_done:
-.annotate "line", 88
-  # rx literal  "\\e"
+.annotate "line", 89
+  # rx literal  unicode:"\\x"
     add $I11, rx255_pos, 2
     gt $I11, rx255_eos, rx255_fail
     sub $I11, rx255_pos, rx255_off
     substr $S10, rx255_tgt, $I11, 2
-    ne $S10, "\\e", rx255_fail
+    ne $S10, unicode:"\\x", rx255_fail
     add rx255_pos, 2
   # rx subrule "quotemod_check" subtype=zerowidth negate=
     rx255_cur."!cursor_pos"(rx255_pos)
     $P10 = rx255_cur."quotemod_check"("b")
     unless $P10, rx255_fail
+  alt259_0:
+.annotate "line", 90
+    set_addr $I10, alt259_1
+    rx255_cur."!mark_push"(0, rx255_pos, $I10)
+  # rx subrule "hexint" subtype=capture negate=
+    rx255_cur."!cursor_pos"(rx255_pos)
+    $P10 = rx255_cur."hexint"()
+    unless $P10, rx255_fail
+    rx255_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexint")
+    rx255_pos = $P10."pos"()
+    goto alt259_end
+  alt259_1:
+  # rx literal  "["
+    add $I11, rx255_pos, 1
+    gt $I11, rx255_eos, rx255_fail
+    sub $I11, rx255_pos, rx255_off
+    substr $S10, rx255_tgt, $I11, 1
+    ne $S10, "[", rx255_fail
+    add rx255_pos, 1
+  # rx subrule "hexints" subtype=capture negate=
+    rx255_cur."!cursor_pos"(rx255_pos)
+    $P10 = rx255_cur."hexints"()
+    unless $P10, rx255_fail
+    rx255_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexints")
+    rx255_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx255_pos, 1
+    gt $I11, rx255_eos, rx255_fail
+    sub $I11, rx255_pos, rx255_off
+    substr $S10, rx255_tgt, $I11, 1
+    ne $S10, "]", rx255_fail
+    add rx255_pos, 1
+  alt259_end:
+.annotate "line", 88
   # rx pass
-    rx255_cur."!cursor_pass"(rx255_pos, "quote_escape:sym<esc>")
-    rx255_cur."!cursor_debug"("PASS  ", "quote_escape:sym<esc>", " at pos=", rx255_pos)
+    rx255_cur."!cursor_pass"(rx255_pos, "quote_escape:sym<hex>")
+    rx255_cur."!cursor_debug"("PASS  ", "quote_escape:sym<hex>", " at pos=", rx255_pos)
     .return (rx255_cur)
   rx255_fail:
 .annotate "line", 33
@@ -3639,237 +3673,208 @@
     jump $I10
   rx255_done:
     rx255_cur."!cursor_fail"()
-    rx255_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<esc>")
+    rx255_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<hex>")
     .return (rx255_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>"  :subid("84_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("84_1271948647.57035") :method
 .annotate "line", 33
     new $P257, "ResizablePMCArray"
-    push $P257, "\\e"
+    push $P257, unicode:"\\x"
     .return ($P257)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("85_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<oct>"  :subid("85_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx260_tgt
-    .local int rx260_pos
-    .local int rx260_off
-    .local int rx260_eos
-    .local int rx260_rep
-    .local pmc rx260_cur
-    (rx260_cur, rx260_pos, rx260_tgt) = self."!cursor_start"()
-    rx260_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
-    .lex unicode:"$\x{a2}", rx260_cur
+    .local string rx261_tgt
+    .local int rx261_pos
+    .local int rx261_off
+    .local int rx261_eos
+    .local int rx261_rep
+    .local pmc rx261_cur
+    (rx261_cur, rx261_pos, rx261_tgt) = self."!cursor_start"()
+    rx261_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
+    .lex unicode:"$\x{a2}", rx261_cur
     .local pmc match
     .lex "$/", match
-    length rx260_eos, rx260_tgt
-    set rx260_off, 0
-    lt rx260_pos, 2, rx260_start
-    sub rx260_off, rx260_pos, 1
-    substr rx260_tgt, rx260_tgt, rx260_off
-  rx260_start:
+    length rx261_eos, rx261_tgt
+    set rx261_off, 0
+    lt rx261_pos, 2, rx261_start
+    sub rx261_off, rx261_pos, 1
+    substr rx261_tgt, rx261_tgt, rx261_off
+  rx261_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan263_done
-    goto rxscan263_scan
-  rxscan263_loop:
-    ($P10) = rx260_cur."from"()
+    ne $I10, -1, rxscan264_done
+    goto rxscan264_scan
+  rxscan264_loop:
+    ($P10) = rx261_cur."from"()
     inc $P10
-    set rx260_pos, $P10
-    ge rx260_pos, rx260_eos, rxscan263_done
-  rxscan263_scan:
-    set_addr $I10, rxscan263_loop
-    rx260_cur."!mark_push"(0, rx260_pos, $I10)
-  rxscan263_done:
-.annotate "line", 90
-  # rx literal  unicode:"\\x"
-    add $I11, rx260_pos, 2
-    gt $I11, rx260_eos, rx260_fail
-    sub $I11, rx260_pos, rx260_off
-    substr $S10, rx260_tgt, $I11, 2
-    ne $S10, unicode:"\\x", rx260_fail
-    add rx260_pos, 2
+    set rx261_pos, $P10
+    ge rx261_pos, rx261_eos, rxscan264_done
+  rxscan264_scan:
+    set_addr $I10, rxscan264_loop
+    rx261_cur."!mark_push"(0, rx261_pos, $I10)
+  rxscan264_done:
+.annotate "line", 93
+  # rx literal  "\\o"
+    add $I11, rx261_pos, 2
+    gt $I11, rx261_eos, rx261_fail
+    sub $I11, rx261_pos, rx261_off
+    substr $S10, rx261_tgt, $I11, 2
+    ne $S10, "\\o", rx261_fail
+    add rx261_pos, 2
   # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx260_cur."!cursor_pos"(rx260_pos)
-    $P10 = rx260_cur."quotemod_check"("b")
-    unless $P10, rx260_fail
-  alt264_0:
-.annotate "line", 91
-    set_addr $I10, alt264_1
-    rx260_cur."!mark_push"(0, rx260_pos, $I10)
-  # rx subrule "hexint" subtype=capture negate=
-    rx260_cur."!cursor_pos"(rx260_pos)
-    $P10 = rx260_cur."hexint"()
-    unless $P10, rx260_fail
-    rx260_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("hexint")
-    rx260_pos = $P10."pos"()
-    goto alt264_end
-  alt264_1:
+    rx261_cur."!cursor_pos"(rx261_pos)
+    $P10 = rx261_cur."quotemod_check"("b")
+    unless $P10, rx261_fail
+  alt265_0:
+.annotate "line", 94
+    set_addr $I10, alt265_1
+    rx261_cur."!mark_push"(0, rx261_pos, $I10)
+  # rx subrule "octint" subtype=capture negate=
+    rx261_cur."!cursor_pos"(rx261_pos)
+    $P10 = rx261_cur."octint"()
+    unless $P10, rx261_fail
+    rx261_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octint")
+    rx261_pos = $P10."pos"()
+    goto alt265_end
+  alt265_1:
   # rx literal  "["
-    add $I11, rx260_pos, 1
-    gt $I11, rx260_eos, rx260_fail
-    sub $I11, rx260_pos, rx260_off
-    substr $S10, rx260_tgt, $I11, 1
-    ne $S10, "[", rx260_fail
-    add rx260_pos, 1
-  # rx subrule "hexints" subtype=capture negate=
-    rx260_cur."!cursor_pos"(rx260_pos)
-    $P10 = rx260_cur."hexints"()
-    unless $P10, rx260_fail
-    rx260_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("hexints")
-    rx260_pos = $P10."pos"()
+    add $I11, rx261_pos, 1
+    gt $I11, rx261_eos, rx261_fail
+    sub $I11, rx261_pos, rx261_off
+    substr $S10, rx261_tgt, $I11, 1
+    ne $S10, "[", rx261_fail
+    add rx261_pos, 1
+  # rx subrule "octints" subtype=capture negate=
+    rx261_cur."!cursor_pos"(rx261_pos)
+    $P10 = rx261_cur."octints"()
+    unless $P10, rx261_fail
+    rx261_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octints")
+    rx261_pos = $P10."pos"()
   # rx literal  "]"
-    add $I11, rx260_pos, 1
-    gt $I11, rx260_eos, rx260_fail
-    sub $I11, rx260_pos, rx260_off
-    substr $S10, rx260_tgt, $I11, 1
-    ne $S10, "]", rx260_fail
-    add rx260_pos, 1
-  alt264_end:
-.annotate "line", 89
+    add $I11, rx261_pos, 1
+    gt $I11, rx261_eos, rx261_fail
+    sub $I11, rx261_pos, rx261_off
+    substr $S10, rx261_tgt, $I11, 1
+    ne $S10, "]", rx261_fail
+    add rx261_pos, 1
+  alt265_end:
+.annotate "line", 92
   # rx pass
-    rx260_cur."!cursor_pass"(rx260_pos, "quote_escape:sym<hex>")
-    rx260_cur."!cursor_debug"("PASS  ", "quote_escape:sym<hex>", " at pos=", rx260_pos)
-    .return (rx260_cur)
-  rx260_fail:
-.annotate "line", 33
-    (rx260_rep, rx260_pos, $I10, $P10) = rx260_cur."!mark_fail"(0)
-    lt rx260_pos, -1, rx260_done
-    eq rx260_pos, -1, rx260_fail
+    rx261_cur."!cursor_pass"(rx261_pos, "quote_escape:sym<oct>")
+    rx261_cur."!cursor_debug"("PASS  ", "quote_escape:sym<oct>", " at pos=", rx261_pos)
+    .return (rx261_cur)
+  rx261_fail:
+.annotate "line", 33
+    (rx261_rep, rx261_pos, $I10, $P10) = rx261_cur."!mark_fail"(0)
+    lt rx261_pos, -1, rx261_done
+    eq rx261_pos, -1, rx261_fail
     jump $I10
-  rx260_done:
-    rx260_cur."!cursor_fail"()
-    rx260_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<hex>")
-    .return (rx260_cur)
+  rx261_done:
+    rx261_cur."!cursor_fail"()
+    rx261_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<oct>")
+    .return (rx261_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("86_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("86_1271948647.57035") :method
 .annotate "line", 33
-    new $P262, "ResizablePMCArray"
-    push $P262, unicode:"\\x"
-    .return ($P262)
+    new $P263, "ResizablePMCArray"
+    push $P263, "\\o"
+    .return ($P263)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("87_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<chr>"  :subid("87_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx266_tgt
-    .local int rx266_pos
-    .local int rx266_off
-    .local int rx266_eos
-    .local int rx266_rep
-    .local pmc rx266_cur
-    (rx266_cur, rx266_pos, rx266_tgt) = self."!cursor_start"()
-    rx266_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
-    .lex unicode:"$\x{a2}", rx266_cur
+    .local string rx267_tgt
+    .local int rx267_pos
+    .local int rx267_off
+    .local int rx267_eos
+    .local int rx267_rep
+    .local pmc rx267_cur
+    (rx267_cur, rx267_pos, rx267_tgt) = self."!cursor_start"()
+    rx267_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
+    .lex unicode:"$\x{a2}", rx267_cur
     .local pmc match
     .lex "$/", match
-    length rx266_eos, rx266_tgt
-    set rx266_off, 0
-    lt rx266_pos, 2, rx266_start
-    sub rx266_off, rx266_pos, 1
-    substr rx266_tgt, rx266_tgt, rx266_off
-  rx266_start:
+    length rx267_eos, rx267_tgt
+    set rx267_off, 0
+    lt rx267_pos, 2, rx267_start
+    sub rx267_off, rx267_pos, 1
+    substr rx267_tgt, rx267_tgt, rx267_off
+  rx267_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan269_done
-    goto rxscan269_scan
-  rxscan269_loop:
-    ($P10) = rx266_cur."from"()
+    ne $I10, -1, rxscan270_done
+    goto rxscan270_scan
+  rxscan270_loop:
+    ($P10) = rx267_cur."from"()
     inc $P10
-    set rx266_pos, $P10
-    ge rx266_pos, rx266_eos, rxscan269_done
-  rxscan269_scan:
-    set_addr $I10, rxscan269_loop
-    rx266_cur."!mark_push"(0, rx266_pos, $I10)
-  rxscan269_done:
-.annotate "line", 94
-  # rx literal  "\\o"
-    add $I11, rx266_pos, 2
-    gt $I11, rx266_eos, rx266_fail
-    sub $I11, rx266_pos, rx266_off
-    substr $S10, rx266_tgt, $I11, 2
-    ne $S10, "\\o", rx266_fail
-    add rx266_pos, 2
+    set rx267_pos, $P10
+    ge rx267_pos, rx267_eos, rxscan270_done
+  rxscan270_scan:
+    set_addr $I10, rxscan270_loop
+    rx267_cur."!mark_push"(0, rx267_pos, $I10)
+  rxscan270_done:
+.annotate "line", 96
+  # rx literal  "\\c"
+    add $I11, rx267_pos, 2
+    gt $I11, rx267_eos, rx267_fail
+    sub $I11, rx267_pos, rx267_off
+    substr $S10, rx267_tgt, $I11, 2
+    ne $S10, "\\c", rx267_fail
+    add rx267_pos, 2
   # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx266_cur."!cursor_pos"(rx266_pos)
-    $P10 = rx266_cur."quotemod_check"("b")
-    unless $P10, rx266_fail
-  alt270_0:
-.annotate "line", 95
-    set_addr $I10, alt270_1
-    rx266_cur."!mark_push"(0, rx266_pos, $I10)
-  # rx subrule "octint" subtype=capture negate=
-    rx266_cur."!cursor_pos"(rx266_pos)
-    $P10 = rx266_cur."octint"()
-    unless $P10, rx266_fail
-    rx266_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("octint")
-    rx266_pos = $P10."pos"()
-    goto alt270_end
-  alt270_1:
-  # rx literal  "["
-    add $I11, rx266_pos, 1
-    gt $I11, rx266_eos, rx266_fail
-    sub $I11, rx266_pos, rx266_off
-    substr $S10, rx266_tgt, $I11, 1
-    ne $S10, "[", rx266_fail
-    add rx266_pos, 1
-  # rx subrule "octints" subtype=capture negate=
-    rx266_cur."!cursor_pos"(rx266_pos)
-    $P10 = rx266_cur."octints"()
-    unless $P10, rx266_fail
-    rx266_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("octints")
-    rx266_pos = $P10."pos"()
-  # rx literal  "]"
-    add $I11, rx266_pos, 1
-    gt $I11, rx266_eos, rx266_fail
-    sub $I11, rx266_pos, rx266_off
-    substr $S10, rx266_tgt, $I11, 1
-    ne $S10, "]", rx266_fail
-    add rx266_pos, 1
-  alt270_end:
-.annotate "line", 93
+    rx267_cur."!cursor_pos"(rx267_pos)
+    $P10 = rx267_cur."quotemod_check"("b")
+    unless $P10, rx267_fail
+  # rx subrule "charspec" subtype=capture negate=
+    rx267_cur."!cursor_pos"(rx267_pos)
+    $P10 = rx267_cur."charspec"()
+    unless $P10, rx267_fail
+    rx267_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charspec")
+    rx267_pos = $P10."pos"()
   # rx pass
-    rx266_cur."!cursor_pass"(rx266_pos, "quote_escape:sym<oct>")
-    rx266_cur."!cursor_debug"("PASS  ", "quote_escape:sym<oct>", " at pos=", rx266_pos)
-    .return (rx266_cur)
-  rx266_fail:
-.annotate "line", 33
-    (rx266_rep, rx266_pos, $I10, $P10) = rx266_cur."!mark_fail"(0)
-    lt rx266_pos, -1, rx266_done
-    eq rx266_pos, -1, rx266_fail
+    rx267_cur."!cursor_pass"(rx267_pos, "quote_escape:sym<chr>")
+    rx267_cur."!cursor_debug"("PASS  ", "quote_escape:sym<chr>", " at pos=", rx267_pos)
+    .return (rx267_cur)
+  rx267_fail:
+.annotate "line", 33
+    (rx267_rep, rx267_pos, $I10, $P10) = rx267_cur."!mark_fail"(0)
+    lt rx267_pos, -1, rx267_done
+    eq rx267_pos, -1, rx267_fail
     jump $I10
-  rx266_done:
-    rx266_cur."!cursor_fail"()
-    rx266_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<oct>")
-    .return (rx266_cur)
+  rx267_done:
+    rx267_cur."!cursor_fail"()
+    rx267_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<chr>")
+    .return (rx267_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("88_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("88_1271948647.57035") :method
 .annotate "line", 33
-    new $P268, "ResizablePMCArray"
-    push $P268, "\\o"
-    .return ($P268)
+    new $P269, "ResizablePMCArray"
+    push $P269, "\\c"
+    .return ($P269)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("89_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<0>"  :subid("89_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
     .local string rx272_tgt
     .local int rx272_pos
@@ -3878,7 +3883,7 @@
     .local int rx272_rep
     .local pmc rx272_cur
     (rx272_cur, rx272_pos, rx272_tgt) = self."!cursor_start"()
-    rx272_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
+    rx272_cur."!cursor_debug"("START ", "quote_escape:sym<0>")
     .lex unicode:"$\x{a2}", rx272_cur
     .local pmc match
     .lex "$/", match
@@ -3901,27 +3906,41 @@
     rx272_cur."!mark_push"(0, rx272_pos, $I10)
   rxscan275_done:
 .annotate "line", 97
-  # rx literal  "\\c"
-    add $I11, rx272_pos, 2
+  # rx literal  "\\"
+    add $I11, rx272_pos, 1
+    gt $I11, rx272_eos, rx272_fail
+    sub $I11, rx272_pos, rx272_off
+    substr $S10, rx272_tgt, $I11, 1
+    ne $S10, "\\", rx272_fail
+    add rx272_pos, 1
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_276_fail
+    rx272_cur."!mark_push"(0, rx272_pos, $I10)
+  # rx literal  "0"
+    add $I11, rx272_pos, 1
     gt $I11, rx272_eos, rx272_fail
     sub $I11, rx272_pos, rx272_off
-    substr $S10, rx272_tgt, $I11, 2
-    ne $S10, "\\c", rx272_fail
-    add rx272_pos, 2
+    substr $S10, rx272_tgt, $I11, 1
+    ne $S10, "0", rx272_fail
+    add rx272_pos, 1
+    set_addr $I10, rxcap_276_fail
+    ($I12, $I11) = rx272_cur."!mark_peek"($I10)
+    rx272_cur."!cursor_pos"($I11)
+    ($P10) = rx272_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx272_pos, "")
+    rx272_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_276_done
+  rxcap_276_fail:
+    goto rx272_fail
+  rxcap_276_done:
   # rx subrule "quotemod_check" subtype=zerowidth negate=
     rx272_cur."!cursor_pos"(rx272_pos)
     $P10 = rx272_cur."quotemod_check"("b")
     unless $P10, rx272_fail
-  # rx subrule "charspec" subtype=capture negate=
-    rx272_cur."!cursor_pos"(rx272_pos)
-    $P10 = rx272_cur."charspec"()
-    unless $P10, rx272_fail
-    rx272_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("charspec")
-    rx272_pos = $P10."pos"()
   # rx pass
-    rx272_cur."!cursor_pass"(rx272_pos, "quote_escape:sym<chr>")
-    rx272_cur."!cursor_debug"("PASS  ", "quote_escape:sym<chr>", " at pos=", rx272_pos)
+    rx272_cur."!cursor_pass"(rx272_pos, "quote_escape:sym<0>")
+    rx272_cur."!cursor_debug"("PASS  ", "quote_escape:sym<0>", " at pos=", rx272_pos)
     .return (rx272_cur)
   rx272_fail:
 .annotate "line", 33
@@ -3931,950 +3950,856 @@
     jump $I10
   rx272_done:
     rx272_cur."!cursor_fail"()
-    rx272_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<chr>")
+    rx272_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<0>")
     .return (rx272_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("90_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<0>"  :subid("90_1271948647.57035") :method
 .annotate "line", 33
     new $P274, "ResizablePMCArray"
-    push $P274, "\\c"
+    push $P274, "\\0"
     .return ($P274)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<0>"  :subid("91_1271336377.56964") :method :outer("11_1271336377.56964")
-.annotate "line", 33
-    .local string rx277_tgt
-    .local int rx277_pos
-    .local int rx277_off
-    .local int rx277_eos
-    .local int rx277_rep
-    .local pmc rx277_cur
-    (rx277_cur, rx277_pos, rx277_tgt) = self."!cursor_start"()
-    rx277_cur."!cursor_debug"("START ", "quote_escape:sym<0>")
-    .lex unicode:"$\x{a2}", rx277_cur
-    .local pmc match
-    .lex "$/", match
-    length rx277_eos, rx277_tgt
-    set rx277_off, 0
-    lt rx277_pos, 2, rx277_start
-    sub rx277_off, rx277_pos, 1
-    substr rx277_tgt, rx277_tgt, rx277_off
-  rx277_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan280_done
-    goto rxscan280_scan
-  rxscan280_loop:
-    ($P10) = rx277_cur."from"()
-    inc $P10
-    set rx277_pos, $P10
-    ge rx277_pos, rx277_eos, rxscan280_done
-  rxscan280_scan:
-    set_addr $I10, rxscan280_loop
-    rx277_cur."!mark_push"(0, rx277_pos, $I10)
-  rxscan280_done:
-.annotate "line", 98
-  # rx literal  "\\"
-    add $I11, rx277_pos, 1
-    gt $I11, rx277_eos, rx277_fail
-    sub $I11, rx277_pos, rx277_off
-    substr $S10, rx277_tgt, $I11, 1
-    ne $S10, "\\", rx277_fail
-    add rx277_pos, 1
-  # rx subcapture "sym"
-    set_addr $I10, rxcap_281_fail
-    rx277_cur."!mark_push"(0, rx277_pos, $I10)
-  # rx literal  "0"
-    add $I11, rx277_pos, 1
-    gt $I11, rx277_eos, rx277_fail
-    sub $I11, rx277_pos, rx277_off
-    substr $S10, rx277_tgt, $I11, 1
-    ne $S10, "0", rx277_fail
-    add rx277_pos, 1
-    set_addr $I10, rxcap_281_fail
-    ($I12, $I11) = rx277_cur."!mark_peek"($I10)
-    rx277_cur."!cursor_pos"($I11)
-    ($P10) = rx277_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx277_pos, "")
-    rx277_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("sym")
-    goto rxcap_281_done
-  rxcap_281_fail:
-    goto rx277_fail
-  rxcap_281_done:
-  # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx277_cur."!cursor_pos"(rx277_pos)
-    $P10 = rx277_cur."quotemod_check"("b")
-    unless $P10, rx277_fail
-  # rx pass
-    rx277_cur."!cursor_pass"(rx277_pos, "quote_escape:sym<0>")
-    rx277_cur."!cursor_debug"("PASS  ", "quote_escape:sym<0>", " at pos=", rx277_pos)
-    .return (rx277_cur)
-  rx277_fail:
-.annotate "line", 33
-    (rx277_rep, rx277_pos, $I10, $P10) = rx277_cur."!mark_fail"(0)
-    lt rx277_pos, -1, rx277_done
-    eq rx277_pos, -1, rx277_fail
-    jump $I10
-  rx277_done:
-    rx277_cur."!cursor_fail"()
-    rx277_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<0>")
-    .return (rx277_cur)
-    .return ()
-.end
-
-
-.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<0>"  :subid("92_1271336377.56964") :method
-.annotate "line", 33
-    new $P279, "ResizablePMCArray"
-    push $P279, "\\0"
-    .return ($P279)
-.end
-
-
-.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<misc>"  :subid("93_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "quote_escape:sym<misc>"  :subid("91_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .const 'Sub' $P302 = "97_1271336377.56964" 
-    capture_lex $P302
-    .const 'Sub' $P295 = "96_1271336377.56964" 
-    capture_lex $P295
-    .const 'Sub' $P290 = "95_1271336377.56964" 
+    .const 'Sub' $P297 = "95_1271948647.57035" 
+    capture_lex $P297
+    .const 'Sub' $P290 = "94_1271948647.57035" 
     capture_lex $P290
-    .local string rx283_tgt
-    .local int rx283_pos
-    .local int rx283_off
-    .local int rx283_eos
-    .local int rx283_rep
-    .local pmc rx283_cur
-    (rx283_cur, rx283_pos, rx283_tgt) = self."!cursor_start"()
-    rx283_cur."!cursor_debug"("START ", "quote_escape:sym<misc>")
-    .lex unicode:"$\x{a2}", rx283_cur
+    .const 'Sub' $P285 = "93_1271948647.57035" 
+    capture_lex $P285
+    .local string rx278_tgt
+    .local int rx278_pos
+    .local int rx278_off
+    .local int rx278_eos
+    .local int rx278_rep
+    .local pmc rx278_cur
+    (rx278_cur, rx278_pos, rx278_tgt) = self."!cursor_start"()
+    rx278_cur."!cursor_debug"("START ", "quote_escape:sym<misc>")
+    .lex unicode:"$\x{a2}", rx278_cur
     .local pmc match
     .lex "$/", match
-    length rx283_eos, rx283_tgt
-    set rx283_off, 0
-    lt rx283_pos, 2, rx283_start
-    sub rx283_off, rx283_pos, 1
-    substr rx283_tgt, rx283_tgt, rx283_off
-  rx283_start:
+    length rx278_eos, rx278_tgt
+    set rx278_off, 0
+    lt rx278_pos, 2, rx278_start
+    sub rx278_off, rx278_pos, 1
+    substr rx278_tgt, rx278_tgt, rx278_off
+  rx278_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan286_done
-    goto rxscan286_scan
-  rxscan286_loop:
-    ($P10) = rx283_cur."from"()
+    ne $I10, -1, rxscan281_done
+    goto rxscan281_scan
+  rxscan281_loop:
+    ($P10) = rx278_cur."from"()
     inc $P10
-    set rx283_pos, $P10
-    ge rx283_pos, rx283_eos, rxscan286_done
-  rxscan286_scan:
-    set_addr $I10, rxscan286_loop
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
-  rxscan286_done:
+    set rx278_pos, $P10
+    ge rx278_pos, rx278_eos, rxscan281_done
+  rxscan281_scan:
+    set_addr $I10, rxscan281_loop
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
+  rxscan281_done:
+.annotate "line", 98
+    rx278_cur."!cursor_pos"(rx278_pos)
+    find_lex $P282, unicode:"$\x{a2}"
+    $P283 = $P282."MATCH"()
+    store_lex "$/", $P283
 .annotate "line", 99
-    rx283_cur."!cursor_pos"(rx283_pos)
-    find_lex $P287, unicode:"$\x{a2}"
-    $P288 = $P287."MATCH"()
-    store_lex "$/", $P288
-.annotate "line", 100
-    .const 'Sub' $P290 = "95_1271336377.56964" 
-    capture_lex $P290
-    $P291 = $P290()
+    .const 'Sub' $P285 = "93_1271948647.57035" 
+    capture_lex $P285
+    $P286 = $P285()
   # rx literal  "\\"
-    add $I11, rx283_pos, 1
-    gt $I11, rx283_eos, rx283_fail
-    sub $I11, rx283_pos, rx283_off
-    substr $S10, rx283_tgt, $I11, 1
-    ne $S10, "\\", rx283_fail
-    add rx283_pos, 1
-  alt292_0:
+    add $I11, rx278_pos, 1
+    gt $I11, rx278_eos, rx278_fail
+    sub $I11, rx278_pos, rx278_off
+    substr $S10, rx278_tgt, $I11, 1
+    ne $S10, "\\", rx278_fail
+    add rx278_pos, 1
+  alt287_0:
+.annotate "line", 100
+    set_addr $I10, alt287_1
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
 .annotate "line", 101
-    set_addr $I10, alt292_1
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
-.annotate "line", 102
   # rx subrule "quotemod_check" subtype=zerowidth negate=
-    rx283_cur."!cursor_pos"(rx283_pos)
-    $P10 = rx283_cur."quotemod_check"("b")
-    unless $P10, rx283_fail
-  alt293_0:
+    rx278_cur."!cursor_pos"(rx278_pos)
+    $P10 = rx278_cur."quotemod_check"("b")
+    unless $P10, rx278_fail
+  alt288_0:
+.annotate "line", 102
+    set_addr $I10, alt288_1
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
 .annotate "line", 103
-    set_addr $I10, alt293_1
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
-.annotate "line", 104
-  # rx subrule $P295 subtype=capture negate=
-    rx283_cur."!cursor_pos"(rx283_pos)
-    .const 'Sub' $P295 = "96_1271336377.56964" 
-    capture_lex $P295
-    $P10 = rx283_cur.$P295()
-    unless $P10, rx283_fail
-    rx283_cur."!mark_push"(0, -1, 0, $P10)
+  # rx subrule $P290 subtype=capture negate=
+    rx278_cur."!cursor_pos"(rx278_pos)
+    .const 'Sub' $P290 = "94_1271948647.57035" 
+    capture_lex $P290
+    $P10 = rx278_cur.$P290()
+    unless $P10, rx278_fail
+    rx278_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("textqq")
-    rx283_pos = $P10."pos"()
-    goto alt293_end
-  alt293_1:
-.annotate "line", 105
+    rx278_pos = $P10."pos"()
+    goto alt288_end
+  alt288_1:
+.annotate "line", 104
   # rx subcapture "x"
-    set_addr $I10, rxcap_298_fail
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
+    set_addr $I10, rxcap_293_fail
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
   # rx charclass w
-    ge rx283_pos, rx283_eos, rx283_fail
-    sub $I10, rx283_pos, rx283_off
-    is_cclass $I11, 8192, rx283_tgt, $I10
-    unless $I11, rx283_fail
-    inc rx283_pos
-    set_addr $I10, rxcap_298_fail
-    ($I12, $I11) = rx283_cur."!mark_peek"($I10)
-    rx283_cur."!cursor_pos"($I11)
-    ($P10) = rx283_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx283_pos, "")
-    rx283_cur."!mark_push"(0, -1, 0, $P10)
+    ge rx278_pos, rx278_eos, rx278_fail
+    sub $I10, rx278_pos, rx278_off
+    is_cclass $I11, 8192, rx278_tgt, $I10
+    unless $I11, rx278_fail
+    inc rx278_pos
+    set_addr $I10, rxcap_293_fail
+    ($I12, $I11) = rx278_cur."!mark_peek"($I10)
+    rx278_cur."!cursor_pos"($I11)
+    ($P10) = rx278_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx278_pos, "")
+    rx278_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("x")
-    goto rxcap_298_done
-  rxcap_298_fail:
-    goto rx283_fail
-  rxcap_298_done:
-    rx283_cur."!cursor_pos"(rx283_pos)
-    find_lex $P299, unicode:"$\x{a2}"
-    $P300 = $P299."MATCH"()
-    store_lex "$/", $P300
-    .const 'Sub' $P302 = "97_1271336377.56964" 
-    capture_lex $P302
-    $P312 = $P302()
-  alt293_end:
-.annotate "line", 102
-    goto alt292_end
-  alt292_1:
-.annotate "line", 107
+    goto rxcap_293_done
+  rxcap_293_fail:
+    goto rx278_fail
+  rxcap_293_done:
+    rx278_cur."!cursor_pos"(rx278_pos)
+    find_lex $P294, unicode:"$\x{a2}"
+    $P295 = $P294."MATCH"()
+    store_lex "$/", $P295
+    .const 'Sub' $P297 = "95_1271948647.57035" 
+    capture_lex $P297
+    $P307 = $P297()
+  alt288_end:
+.annotate "line", 101
+    goto alt287_end
+  alt287_1:
+.annotate "line", 106
   # rx subcapture "textq"
-    set_addr $I10, rxcap_313_fail
-    rx283_cur."!mark_push"(0, rx283_pos, $I10)
+    set_addr $I10, rxcap_308_fail
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
   # rx charclass .
-    ge rx283_pos, rx283_eos, rx283_fail
-    inc rx283_pos
-    set_addr $I10, rxcap_313_fail
-    ($I12, $I11) = rx283_cur."!mark_peek"($I10)
-    rx283_cur."!cursor_pos"($I11)
-    ($P10) = rx283_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx283_pos, "")
-    rx283_cur."!mark_push"(0, -1, 0, $P10)
+    ge rx278_pos, rx278_eos, rx278_fail
+    inc rx278_pos
+    set_addr $I10, rxcap_308_fail
+    ($I12, $I11) = rx278_cur."!mark_peek"($I10)
+    rx278_cur."!cursor_pos"($I11)
+    ($P10) = rx278_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx278_pos, "")
+    rx278_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("textq")
-    goto rxcap_313_done
-  rxcap_313_fail:
-    goto rx283_fail
-  rxcap_313_done:
-  alt292_end:
-.annotate "line", 99
+    goto rxcap_308_done
+  rxcap_308_fail:
+    goto rx278_fail
+  rxcap_308_done:
+  alt287_end:
+.annotate "line", 98
   # rx pass
-    rx283_cur."!cursor_pass"(rx283_pos, "quote_escape:sym<misc>")
-    rx283_cur."!cursor_debug"("PASS  ", "quote_escape:sym<misc>", " at pos=", rx283_pos)
-    .return (rx283_cur)
-  rx283_fail:
-.annotate "line", 33
-    (rx283_rep, rx283_pos, $I10, $P10) = rx283_cur."!mark_fail"(0)
-    lt rx283_pos, -1, rx283_done
-    eq rx283_pos, -1, rx283_fail
+    rx278_cur."!cursor_pass"(rx278_pos, "quote_escape:sym<misc>")
+    rx278_cur."!cursor_debug"("PASS  ", "quote_escape:sym<misc>", " at pos=", rx278_pos)
+    .return (rx278_cur)
+  rx278_fail:
+.annotate "line", 33
+    (rx278_rep, rx278_pos, $I10, $P10) = rx278_cur."!mark_fail"(0)
+    lt rx278_pos, -1, rx278_done
+    eq rx278_pos, -1, rx278_fail
     jump $I10
-  rx283_done:
-    rx283_cur."!cursor_fail"()
-    rx283_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<misc>")
-    .return (rx283_cur)
+  rx278_done:
+    rx278_cur."!cursor_fail"()
+    rx278_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<misc>")
+    .return (rx278_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<misc>"  :subid("94_1271336377.56964") :method
+.sub "!PREFIX__quote_escape:sym<misc>"  :subid("92_1271948647.57035") :method
 .annotate "line", 33
-    new $P285, "ResizablePMCArray"
-    push $P285, ""
-    .return ($P285)
+    new $P280, "ResizablePMCArray"
+    push $P280, ""
+    .return ($P280)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block289"  :anon :subid("95_1271336377.56964") :outer("93_1271336377.56964")
-.annotate "line", 100
+.sub "_block284"  :anon :subid("93_1271948647.57035") :outer("91_1271948647.57035")
+.annotate "line", 99
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block294"  :anon :subid("96_1271336377.56964") :method :outer("93_1271336377.56964")
-.annotate "line", 104
-    .local string rx296_tgt
-    .local int rx296_pos
-    .local int rx296_off
-    .local int rx296_eos
-    .local int rx296_rep
-    .local pmc rx296_cur
-    (rx296_cur, rx296_pos, rx296_tgt) = self."!cursor_start"()
-    rx296_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx296_cur
+.sub "_block289"  :anon :subid("94_1271948647.57035") :method :outer("91_1271948647.57035")
+.annotate "line", 103
+    .local string rx291_tgt
+    .local int rx291_pos
+    .local int rx291_off
+    .local int rx291_eos
+    .local int rx291_rep
+    .local pmc rx291_cur
+    (rx291_cur, rx291_pos, rx291_tgt) = self."!cursor_start"()
+    rx291_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx291_cur
     .local pmc match
     .lex "$/", match
-    length rx296_eos, rx296_tgt
-    set rx296_off, 0
-    lt rx296_pos, 2, rx296_start
-    sub rx296_off, rx296_pos, 1
-    substr rx296_tgt, rx296_tgt, rx296_off
-  rx296_start:
+    length rx291_eos, rx291_tgt
+    set rx291_off, 0
+    lt rx291_pos, 2, rx291_start
+    sub rx291_off, rx291_pos, 1
+    substr rx291_tgt, rx291_tgt, rx291_off
+  rx291_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan297_done
-    goto rxscan297_scan
-  rxscan297_loop:
-    ($P10) = rx296_cur."from"()
+    ne $I10, -1, rxscan292_done
+    goto rxscan292_scan
+  rxscan292_loop:
+    ($P10) = rx291_cur."from"()
     inc $P10
-    set rx296_pos, $P10
-    ge rx296_pos, rx296_eos, rxscan297_done
-  rxscan297_scan:
-    set_addr $I10, rxscan297_loop
-    rx296_cur."!mark_push"(0, rx296_pos, $I10)
-  rxscan297_done:
+    set rx291_pos, $P10
+    ge rx291_pos, rx291_eos, rxscan292_done
+  rxscan292_scan:
+    set_addr $I10, rxscan292_loop
+    rx291_cur."!mark_push"(0, rx291_pos, $I10)
+  rxscan292_done:
   # rx charclass W
-    ge rx296_pos, rx296_eos, rx296_fail
-    sub $I10, rx296_pos, rx296_off
-    is_cclass $I11, 8192, rx296_tgt, $I10
-    if $I11, rx296_fail
-    inc rx296_pos
+    ge rx291_pos, rx291_eos, rx291_fail
+    sub $I10, rx291_pos, rx291_off
+    is_cclass $I11, 8192, rx291_tgt, $I10
+    if $I11, rx291_fail
+    inc rx291_pos
   # rx pass
-    rx296_cur."!cursor_pass"(rx296_pos, "")
-    rx296_cur."!cursor_debug"("PASS  ", "", " at pos=", rx296_pos)
-    .return (rx296_cur)
-  rx296_fail:
-    (rx296_rep, rx296_pos, $I10, $P10) = rx296_cur."!mark_fail"(0)
-    lt rx296_pos, -1, rx296_done
-    eq rx296_pos, -1, rx296_fail
+    rx291_cur."!cursor_pass"(rx291_pos, "")
+    rx291_cur."!cursor_debug"("PASS  ", "", " at pos=", rx291_pos)
+    .return (rx291_cur)
+  rx291_fail:
+    (rx291_rep, rx291_pos, $I10, $P10) = rx291_cur."!mark_fail"(0)
+    lt rx291_pos, -1, rx291_done
+    eq rx291_pos, -1, rx291_fail
     jump $I10
-  rx296_done:
-    rx296_cur."!cursor_fail"()
-    rx296_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx296_cur)
+  rx291_done:
+    rx291_cur."!cursor_fail"()
+    rx291_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx291_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block301"  :anon :subid("97_1271336377.56964") :outer("93_1271336377.56964")
-.annotate "line", 105
-    find_lex $P303, "$/"
-    $P304 = $P303."CURSOR"()
-    new $P305, "String"
-    assign $P305, "Unrecognized backslash sequence: '\\"
-    find_lex $P306, "$/"
-    unless_null $P306, vivify_106
-    $P306 = root_new ['parrot';'Hash']
-  vivify_106:
-    set $P307, $P306["x"]
-    unless_null $P307, vivify_107
-    new $P307, "Undef"
-  vivify_107:
-    $S308 = $P307."Str"()
-    concat $P309, $P305, $S308
-    concat $P310, $P309, "'"
-    $P311 = $P304."panic"($P310)
-    .return ($P311)
+.sub "_block296"  :anon :subid("95_1271948647.57035") :outer("91_1271948647.57035")
+.annotate "line", 104
+    find_lex $P298, "$/"
+    $P299 = $P298."CURSOR"()
+    new $P300, "String"
+    assign $P300, "Unrecognized backslash sequence: '\\"
+    find_lex $P301, "$/"
+    unless_null $P301, vivify_104
+    $P301 = root_new ['parrot';'Hash']
+  vivify_104:
+    set $P302, $P301["x"]
+    unless_null $P302, vivify_105
+    new $P302, "Undef"
+  vivify_105:
+    $S303 = $P302."Str"()
+    concat $P304, $P300, $S303
+    concat $P305, $P304, "'"
+    $P306 = $P299."panic"($P305)
+    .return ($P306)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("98_1271336377.56964") :method :outer("11_1271336377.56964")
-.annotate "line", 33
-    .const 'Sub' $P324 = "100_1271336377.56964" 
-    capture_lex $P324
-    .local string rx315_tgt
-    .local int rx315_pos
-    .local int rx315_off
-    .local int rx315_eos
-    .local int rx315_rep
-    .local pmc rx315_cur
-    (rx315_cur, rx315_pos, rx315_tgt) = self."!cursor_start"()
-    rx315_cur."!cursor_debug"("START ", "charname")
-    .lex unicode:"$\x{a2}", rx315_cur
+.sub "charname"  :subid("96_1271948647.57035") :method :outer("11_1271948647.57035")
+.annotate "line", 33
+    .const 'Sub' $P319 = "98_1271948647.57035" 
+    capture_lex $P319
+    .local string rx310_tgt
+    .local int rx310_pos
+    .local int rx310_off
+    .local int rx310_eos
+    .local int rx310_rep
+    .local pmc rx310_cur
+    (rx310_cur, rx310_pos, rx310_tgt) = self."!cursor_start"()
+    rx310_cur."!cursor_debug"("START ", "charname")
+    .lex unicode:"$\x{a2}", rx310_cur
     .local pmc match
     .lex "$/", match
-    length rx315_eos, rx315_tgt
-    set rx315_off, 0
-    lt rx315_pos, 2, rx315_start
-    sub rx315_off, rx315_pos, 1
-    substr rx315_tgt, rx315_tgt, rx315_off
-  rx315_start:
+    length rx310_eos, rx310_tgt
+    set rx310_off, 0
+    lt rx310_pos, 2, rx310_start
+    sub rx310_off, rx310_pos, 1
+    substr rx310_tgt, rx310_tgt, rx310_off
+  rx310_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan319_done
-    goto rxscan319_scan
-  rxscan319_loop:
-    ($P10) = rx315_cur."from"()
+    ne $I10, -1, rxscan314_done
+    goto rxscan314_scan
+  rxscan314_loop:
+    ($P10) = rx310_cur."from"()
     inc $P10
-    set rx315_pos, $P10
-    ge rx315_pos, rx315_eos, rxscan319_done
-  rxscan319_scan:
-    set_addr $I10, rxscan319_loop
-    rx315_cur."!mark_push"(0, rx315_pos, $I10)
-  rxscan319_done:
-  alt320_0:
+    set rx310_pos, $P10
+    ge rx310_pos, rx310_eos, rxscan314_done
+  rxscan314_scan:
+    set_addr $I10, rxscan314_loop
+    rx310_cur."!mark_push"(0, rx310_pos, $I10)
+  rxscan314_done:
+  alt315_0:
+.annotate "line", 110
+    set_addr $I10, alt315_1
+    rx310_cur."!mark_push"(0, rx310_pos, $I10)
 .annotate "line", 111
-    set_addr $I10, alt320_1
-    rx315_cur."!mark_push"(0, rx315_pos, $I10)
-.annotate "line", 112
   # rx subrule "integer" subtype=capture negate=
-    rx315_cur."!cursor_pos"(rx315_pos)
-    $P10 = rx315_cur."integer"()
-    unless $P10, rx315_fail
-    rx315_cur."!mark_push"(0, -1, 0, $P10)
+    rx310_cur."!cursor_pos"(rx310_pos)
+    $P10 = rx310_cur."integer"()
+    unless $P10, rx310_fail
+    rx310_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("integer")
-    rx315_pos = $P10."pos"()
-    goto alt320_end
-  alt320_1:
-.annotate "line", 113
+    rx310_pos = $P10."pos"()
+    goto alt315_end
+  alt315_1:
+.annotate "line", 112
   # rx enumcharlist negate=0 
-    ge rx315_pos, rx315_eos, rx315_fail
-    sub $I10, rx315_pos, rx315_off
-    substr $S10, rx315_tgt, $I10, 1
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    substr $S10, rx310_tgt, $I10, 1
     index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
-    lt $I11, 0, rx315_fail
-    inc rx315_pos
-  # rx rxquantf321 ** 0..*
-    set_addr $I10, rxquantf321_loop
-    rx315_cur."!mark_push"(0, rx315_pos, $I10)
-    goto rxquantf321_done
-  rxquantf321_loop:
+    lt $I11, 0, rx310_fail
+    inc rx310_pos
+  # rx rxquantf316 ** 0..*
+    set_addr $I10, rxquantf316_loop
+    rx310_cur."!mark_push"(0, rx310_pos, $I10)
+    goto rxquantf316_done
+  rxquantf316_loop:
   # rx enumcharlist negate=1 
-    ge rx315_pos, rx315_eos, rx315_fail
-    sub $I10, rx315_pos, rx315_off
-    substr $S10, rx315_tgt, $I10, 1
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    substr $S10, rx310_tgt, $I10, 1
     index $I11, "],#", $S10
-    ge $I11, 0, rx315_fail
-    inc rx315_pos
-    set_addr $I10, rxquantf321_loop
-    rx315_cur."!mark_push"($I322, rx315_pos, $I10)
-  rxquantf321_done:
+    ge $I11, 0, rx310_fail
+    inc rx310_pos
+    set_addr $I10, rxquantf316_loop
+    rx310_cur."!mark_push"($I317, rx310_pos, $I10)
+  rxquantf316_done:
   # rx enumcharlist negate=0 
-    ge rx315_pos, rx315_eos, rx315_fail
-    sub $I10, rx315_pos, rx315_off
-    substr $S10, rx315_tgt, $I10, 1
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    substr $S10, rx310_tgt, $I10, 1
     index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)", $S10
-    lt $I11, 0, rx315_fail
-    inc rx315_pos
-.annotate "line", 114
+    lt $I11, 0, rx310_fail
+    inc rx310_pos
+.annotate "line", 113
   # rx subrule "before" subtype=zerowidth negate=
-    rx315_cur."!cursor_pos"(rx315_pos)
-    .const 'Sub' $P324 = "100_1271336377.56964" 
-    capture_lex $P324
-    $P10 = rx315_cur."before"($P324)
-    unless $P10, rx315_fail
-  alt320_end:
-.annotate "line", 111
+    rx310_cur."!cursor_pos"(rx310_pos)
+    .const 'Sub' $P319 = "98_1271948647.57035" 
+    capture_lex $P319
+    $P10 = rx310_cur."before"($P319)
+    unless $P10, rx310_fail
+  alt315_end:
+.annotate "line", 110
   # rx pass
-    rx315_cur."!cursor_pass"(rx315_pos, "charname")
-    rx315_cur."!cursor_debug"("PASS  ", "charname", " at pos=", rx315_pos)
-    .return (rx315_cur)
-  rx315_fail:
-.annotate "line", 33
-    (rx315_rep, rx315_pos, $I10, $P10) = rx315_cur."!mark_fail"(0)
-    lt rx315_pos, -1, rx315_done
-    eq rx315_pos, -1, rx315_fail
+    rx310_cur."!cursor_pass"(rx310_pos, "charname")
+    rx310_cur."!cursor_debug"("PASS  ", "charname", " at pos=", rx310_pos)
+    .return (rx310_cur)
+  rx310_fail:
+.annotate "line", 33
+    (rx310_rep, rx310_pos, $I10, $P10) = rx310_cur."!mark_fail"(0)
+    lt rx310_pos, -1, rx310_done
+    eq rx310_pos, -1, rx310_fail
     jump $I10
-  rx315_done:
-    rx315_cur."!cursor_fail"()
-    rx315_cur."!cursor_debug"("FAIL  ", "charname")
-    .return (rx315_cur)
+  rx310_done:
+    rx310_cur."!cursor_fail"()
+    rx310_cur."!cursor_debug"("FAIL  ", "charname")
+    .return (rx310_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("99_1271336377.56964") :method
+.sub "!PREFIX__charname"  :subid("97_1271948647.57035") :method
 .annotate "line", 33
-    $P317 = self."!PREFIX__!subrule"("integer", "")
-    new $P318, "ResizablePMCArray"
-    push $P318, "Z"
-    push $P318, "Y"
-    push $P318, "X"
-    push $P318, "W"
-    push $P318, "V"
-    push $P318, "U"
-    push $P318, "T"
-    push $P318, "S"
-    push $P318, "R"
-    push $P318, "Q"
-    push $P318, "P"
-    push $P318, "O"
-    push $P318, "N"
-    push $P318, "M"
-    push $P318, "L"
-    push $P318, "K"
-    push $P318, "J"
-    push $P318, "I"
-    push $P318, "H"
-    push $P318, "G"
-    push $P318, "F"
-    push $P318, "E"
-    push $P318, "D"
-    push $P318, "C"
-    push $P318, "B"
-    push $P318, "A"
-    push $P318, "z"
-    push $P318, "y"
-    push $P318, "x"
-    push $P318, "w"
-    push $P318, "v"
-    push $P318, "u"
-    push $P318, "t"
-    push $P318, "s"
-    push $P318, "r"
-    push $P318, "q"
-    push $P318, "p"
-    push $P318, "o"
-    push $P318, "n"
-    push $P318, "m"
-    push $P318, "l"
-    push $P318, "k"
-    push $P318, "j"
-    push $P318, "i"
-    push $P318, "h"
-    push $P318, "g"
-    push $P318, "f"
-    push $P318, "e"
-    push $P318, "d"
-    push $P318, "c"
-    push $P318, "b"
-    push $P318, "a"
-    push $P318, $P317
-    .return ($P318)
+    $P312 = self."!PREFIX__!subrule"("integer", "")
+    new $P313, "ResizablePMCArray"
+    push $P313, "Z"
+    push $P313, "Y"
+    push $P313, "X"
+    push $P313, "W"
+    push $P313, "V"
+    push $P313, "U"
+    push $P313, "T"
+    push $P313, "S"
+    push $P313, "R"
+    push $P313, "Q"
+    push $P313, "P"
+    push $P313, "O"
+    push $P313, "N"
+    push $P313, "M"
+    push $P313, "L"
+    push $P313, "K"
+    push $P313, "J"
+    push $P313, "I"
+    push $P313, "H"
+    push $P313, "G"
+    push $P313, "F"
+    push $P313, "E"
+    push $P313, "D"
+    push $P313, "C"
+    push $P313, "B"
+    push $P313, "A"
+    push $P313, "z"
+    push $P313, "y"
+    push $P313, "x"
+    push $P313, "w"
+    push $P313, "v"
+    push $P313, "u"
+    push $P313, "t"
+    push $P313, "s"
+    push $P313, "r"
+    push $P313, "q"
+    push $P313, "p"
+    push $P313, "o"
+    push $P313, "n"
+    push $P313, "m"
+    push $P313, "l"
+    push $P313, "k"
+    push $P313, "j"
+    push $P313, "i"
+    push $P313, "h"
+    push $P313, "g"
+    push $P313, "f"
+    push $P313, "e"
+    push $P313, "d"
+    push $P313, "c"
+    push $P313, "b"
+    push $P313, "a"
+    push $P313, $P312
+    .return ($P313)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block323"  :anon :subid("100_1271336377.56964") :method :outer("98_1271336377.56964")
-.annotate "line", 114
-    .local string rx325_tgt
-    .local int rx325_pos
-    .local int rx325_off
-    .local int rx325_eos
-    .local int rx325_rep
-    .local pmc rx325_cur
-    (rx325_cur, rx325_pos, rx325_tgt) = self."!cursor_start"()
-    rx325_cur."!cursor_debug"("START ", "")
-    .lex unicode:"$\x{a2}", rx325_cur
+.sub "_block318"  :anon :subid("98_1271948647.57035") :method :outer("96_1271948647.57035")
+.annotate "line", 113
+    .local string rx320_tgt
+    .local int rx320_pos
+    .local int rx320_off
+    .local int rx320_eos
+    .local int rx320_rep
+    .local pmc rx320_cur
+    (rx320_cur, rx320_pos, rx320_tgt) = self."!cursor_start"()
+    rx320_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx320_cur
     .local pmc match
     .lex "$/", match
-    length rx325_eos, rx325_tgt
-    set rx325_off, 0
-    lt rx325_pos, 2, rx325_start
-    sub rx325_off, rx325_pos, 1
-    substr rx325_tgt, rx325_tgt, rx325_off
-  rx325_start:
+    length rx320_eos, rx320_tgt
+    set rx320_off, 0
+    lt rx320_pos, 2, rx320_start
+    sub rx320_off, rx320_pos, 1
+    substr rx320_tgt, rx320_tgt, rx320_off
+  rx320_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan326_done
-    goto rxscan326_scan
-  rxscan326_loop:
-    ($P10) = rx325_cur."from"()
+    ne $I10, -1, rxscan321_done
+    goto rxscan321_scan
+  rxscan321_loop:
+    ($P10) = rx320_cur."from"()
     inc $P10
-    set rx325_pos, $P10
-    ge rx325_pos, rx325_eos, rxscan326_done
-  rxscan326_scan:
-    set_addr $I10, rxscan326_loop
-    rx325_cur."!mark_push"(0, rx325_pos, $I10)
-  rxscan326_done:
+    set rx320_pos, $P10
+    ge rx320_pos, rx320_eos, rxscan321_done
+  rxscan321_scan:
+    set_addr $I10, rxscan321_loop
+    rx320_cur."!mark_push"(0, rx320_pos, $I10)
+  rxscan321_done:
   # rx charclass_q s r 0..-1
-    sub $I10, rx325_pos, rx325_off
-    find_not_cclass $I11, 32, rx325_tgt, $I10, rx325_eos
-    add rx325_pos, rx325_off, $I11
+    sub $I10, rx320_pos, rx320_off
+    find_not_cclass $I11, 32, rx320_tgt, $I10, rx320_eos
+    add rx320_pos, rx320_off, $I11
   # rx enumcharlist negate=0 
-    ge rx325_pos, rx325_eos, rx325_fail
-    sub $I10, rx325_pos, rx325_off
-    substr $S10, rx325_tgt, $I10, 1
+    ge rx320_pos, rx320_eos, rx320_fail
+    sub $I10, rx320_pos, rx320_off
+    substr $S10, rx320_tgt, $I10, 1
     index $I11, "],#", $S10
-    lt $I11, 0, rx325_fail
-    inc rx325_pos
+    lt $I11, 0, rx320_fail
+    inc rx320_pos
   # rx pass
-    rx325_cur."!cursor_pass"(rx325_pos, "")
-    rx325_cur."!cursor_debug"("PASS  ", "", " at pos=", rx325_pos)
-    .return (rx325_cur)
-  rx325_fail:
-    (rx325_rep, rx325_pos, $I10, $P10) = rx325_cur."!mark_fail"(0)
-    lt rx325_pos, -1, rx325_done
-    eq rx325_pos, -1, rx325_fail
+    rx320_cur."!cursor_pass"(rx320_pos, "")
+    rx320_cur."!cursor_debug"("PASS  ", "", " at pos=", rx320_pos)
+    .return (rx320_cur)
+  rx320_fail:
+    (rx320_rep, rx320_pos, $I10, $P10) = rx320_cur."!mark_fail"(0)
+    lt rx320_pos, -1, rx320_done
+    eq rx320_pos, -1, rx320_fail
     jump $I10
-  rx325_done:
-    rx325_cur."!cursor_fail"()
-    rx325_cur."!cursor_debug"("FAIL  ", "")
-    .return (rx325_cur)
+  rx320_done:
+    rx320_cur."!cursor_fail"()
+    rx320_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx320_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("101_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "charnames"  :subid("99_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx328_tgt
-    .local int rx328_pos
-    .local int rx328_off
-    .local int rx328_eos
-    .local int rx328_rep
-    .local pmc rx328_cur
-    (rx328_cur, rx328_pos, rx328_tgt) = self."!cursor_start"()
-    rx328_cur."!cursor_debug"("START ", "charnames")
-    rx328_cur."!cursor_caparray"("charname")
-    .lex unicode:"$\x{a2}", rx328_cur
+    .local string rx323_tgt
+    .local int rx323_pos
+    .local int rx323_off
+    .local int rx323_eos
+    .local int rx323_rep
+    .local pmc rx323_cur
+    (rx323_cur, rx323_pos, rx323_tgt) = self."!cursor_start"()
+    rx323_cur."!cursor_debug"("START ", "charnames")
+    rx323_cur."!cursor_caparray"("charname")
+    .lex unicode:"$\x{a2}", rx323_cur
     .local pmc match
     .lex "$/", match
-    length rx328_eos, rx328_tgt
-    set rx328_off, 0
-    lt rx328_pos, 2, rx328_start
-    sub rx328_off, rx328_pos, 1
-    substr rx328_tgt, rx328_tgt, rx328_off
-  rx328_start:
+    length rx323_eos, rx323_tgt
+    set rx323_off, 0
+    lt rx323_pos, 2, rx323_start
+    sub rx323_off, rx323_pos, 1
+    substr rx323_tgt, rx323_tgt, rx323_off
+  rx323_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan331_done
-    goto rxscan331_scan
-  rxscan331_loop:
-    ($P10) = rx328_cur."from"()
+    ne $I10, -1, rxscan326_done
+    goto rxscan326_scan
+  rxscan326_loop:
+    ($P10) = rx323_cur."from"()
     inc $P10
-    set rx328_pos, $P10
-    ge rx328_pos, rx328_eos, rxscan331_done
-  rxscan331_scan:
-    set_addr $I10, rxscan331_loop
-    rx328_cur."!mark_push"(0, rx328_pos, $I10)
-  rxscan331_done:
-.annotate "line", 116
-  # rx rxquantr332 ** 1..*
-    set_addr $I333, rxquantr332_done
-    rx328_cur."!mark_push"(0, -1, $I333)
-  rxquantr332_loop:
+    set rx323_pos, $P10
+    ge rx323_pos, rx323_eos, rxscan326_done
+  rxscan326_scan:
+    set_addr $I10, rxscan326_loop
+    rx323_cur."!mark_push"(0, rx323_pos, $I10)
+  rxscan326_done:
+.annotate "line", 115
+  # rx rxquantr327 ** 1..*
+    set_addr $I328, rxquantr327_done
+    rx323_cur."!mark_push"(0, -1, $I328)
+  rxquantr327_loop:
   # rx subrule "ws" subtype=method negate=
-    rx328_cur."!cursor_pos"(rx328_pos)
-    $P10 = rx328_cur."ws"()
-    unless $P10, rx328_fail
-    rx328_pos = $P10."pos"()
+    rx323_cur."!cursor_pos"(rx323_pos)
+    $P10 = rx323_cur."ws"()
+    unless $P10, rx323_fail
+    rx323_pos = $P10."pos"()
   # rx subrule "charname" subtype=capture negate=
-    rx328_cur."!cursor_pos"(rx328_pos)
-    $P10 = rx328_cur."charname"()
-    unless $P10, rx328_fail
-    rx328_cur."!mark_push"(0, -1, 0, $P10)
+    rx323_cur."!cursor_pos"(rx323_pos)
+    $P10 = rx323_cur."charname"()
+    unless $P10, rx323_fail
+    rx323_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("charname")
-    rx328_pos = $P10."pos"()
+    rx323_pos = $P10."pos"()
   # rx subrule "ws" subtype=method negate=
-    rx328_cur."!cursor_pos"(rx328_pos)
-    $P10 = rx328_cur."ws"()
-    unless $P10, rx328_fail
-    rx328_pos = $P10."pos"()
-    (rx328_rep) = rx328_cur."!mark_commit"($I333)
-    rx328_cur."!mark_push"(rx328_rep, rx328_pos, $I333)
+    rx323_cur."!cursor_pos"(rx323_pos)
+    $P10 = rx323_cur."ws"()
+    unless $P10, rx323_fail
+    rx323_pos = $P10."pos"()
+    (rx323_rep) = rx323_cur."!mark_commit"($I328)
+    rx323_cur."!mark_push"(rx323_rep, rx323_pos, $I328)
   # rx literal  ","
-    add $I11, rx328_pos, 1
-    gt $I11, rx328_eos, rx328_fail
-    sub $I11, rx328_pos, rx328_off
-    substr $S10, rx328_tgt, $I11, 1
-    ne $S10, ",", rx328_fail
-    add rx328_pos, 1
-    goto rxquantr332_loop
-  rxquantr332_done:
+    add $I11, rx323_pos, 1
+    gt $I11, rx323_eos, rx323_fail
+    sub $I11, rx323_pos, rx323_off
+    substr $S10, rx323_tgt, $I11, 1
+    ne $S10, ",", rx323_fail
+    add rx323_pos, 1
+    goto rxquantr327_loop
+  rxquantr327_done:
   # rx pass
-    rx328_cur."!cursor_pass"(rx328_pos, "charnames")
-    rx328_cur."!cursor_debug"("PASS  ", "charnames", " at pos=", rx328_pos)
-    .return (rx328_cur)
-  rx328_fail:
-.annotate "line", 33
-    (rx328_rep, rx328_pos, $I10, $P10) = rx328_cur."!mark_fail"(0)
-    lt rx328_pos, -1, rx328_done
-    eq rx328_pos, -1, rx328_fail
+    rx323_cur."!cursor_pass"(rx323_pos, "charnames")
+    rx323_cur."!cursor_debug"("PASS  ", "charnames", " at pos=", rx323_pos)
+    .return (rx323_cur)
+  rx323_fail:
+.annotate "line", 33
+    (rx323_rep, rx323_pos, $I10, $P10) = rx323_cur."!mark_fail"(0)
+    lt rx323_pos, -1, rx323_done
+    eq rx323_pos, -1, rx323_fail
     jump $I10
-  rx328_done:
-    rx328_cur."!cursor_fail"()
-    rx328_cur."!cursor_debug"("FAIL  ", "charnames")
-    .return (rx328_cur)
+  rx323_done:
+    rx323_cur."!cursor_fail"()
+    rx323_cur."!cursor_debug"("FAIL  ", "charnames")
+    .return (rx323_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("102_1271336377.56964") :method
+.sub "!PREFIX__charnames"  :subid("100_1271948647.57035") :method
 .annotate "line", 33
-    new $P330, "ResizablePMCArray"
-    push $P330, ""
-    .return ($P330)
+    new $P325, "ResizablePMCArray"
+    push $P325, ""
+    .return ($P325)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("103_1271336377.56964") :method :outer("11_1271336377.56964")
+.sub "charspec"  :subid("101_1271948647.57035") :method :outer("11_1271948647.57035")
 .annotate "line", 33
-    .local string rx335_tgt
-    .local int rx335_pos
-    .local int rx335_off
-    .local int rx335_eos
-    .local int rx335_rep
-    .local pmc rx335_cur
-    (rx335_cur, rx335_pos, rx335_tgt) = self."!cursor_start"()
-    rx335_cur."!cursor_debug"("START ", "charspec")
-    .lex unicode:"$\x{a2}", rx335_cur
+    .local string rx330_tgt
+    .local int rx330_pos
+    .local int rx330_off
+    .local int rx330_eos
+    .local int rx330_rep
+    .local pmc rx330_cur
+    (rx330_cur, rx330_pos, rx330_tgt) = self."!cursor_start"()
+    rx330_cur."!cursor_debug"("START ", "charspec")
+    .lex unicode:"$\x{a2}", rx330_cur
     .local pmc match
     .lex "$/", match
-    length rx335_eos, rx335_tgt
-    set rx335_off, 0
-    lt rx335_pos, 2, rx335_start
-    sub rx335_off, rx335_pos, 1
-    substr rx335_tgt, rx335_tgt, rx335_off
-  rx335_start:
+    length rx330_eos, rx330_tgt
+    set rx330_off, 0
+    lt rx330_pos, 2, rx330_start
+    sub rx330_off, rx330_pos, 1
+    substr rx330_tgt, rx330_tgt, rx330_off
+  rx330_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan340_done
-    goto rxscan340_scan
-  rxscan340_loop:
-    ($P10) = rx335_cur."from"()
+    ne $I10, -1, rxscan335_done
+    goto rxscan335_scan
+  rxscan335_loop:
+    ($P10) = rx330_cur."from"()
     inc $P10
-    set rx335_pos, $P10
-    ge rx335_pos, rx335_eos, rxscan340_done
-  rxscan340_scan:
-    set_addr $I10, rxscan340_loop
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-  rxscan340_done:
-  alt341_0:
+    set rx330_pos, $P10
+    ge rx330_pos, rx330_eos, rxscan335_done
+  rxscan335_scan:
+    set_addr $I10, rxscan335_loop
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
+  rxscan335_done:
+  alt336_0:
+.annotate "line", 117
+    set_addr $I10, alt336_1
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
 .annotate "line", 118
-    set_addr $I10, alt341_1
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-.annotate "line", 119
   # rx literal  "["
-    add $I11, rx335_pos, 1
-    gt $I11, rx335_eos, rx335_fail
-    sub $I11, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I11, 1
-    ne $S10, "[", rx335_fail
-    add rx335_pos, 1
+    add $I11, rx330_pos, 1
+    gt $I11, rx330_eos, rx330_fail
+    sub $I11, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I11, 1
+    ne $S10, "[", rx330_fail
+    add rx330_pos, 1
   # rx subrule "charnames" subtype=capture negate=
-    rx335_cur."!cursor_pos"(rx335_pos)
-    $P10 = rx335_cur."charnames"()
-    unless $P10, rx335_fail
-    rx335_cur."!mark_push"(0, -1, 0, $P10)
+    rx330_cur."!cursor_pos"(rx330_pos)
+    $P10 = rx330_cur."charnames"()
+    unless $P10, rx330_fail
+    rx330_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("charnames")
-    rx335_pos = $P10."pos"()
+    rx330_pos = $P10."pos"()
   # rx literal  "]"
-    add $I11, rx335_pos, 1
-    gt $I11, rx335_eos, rx335_fail
-    sub $I11, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I11, 1
-    ne $S10, "]", rx335_fail
-    add rx335_pos, 1
-    goto alt341_end
-  alt341_1:
-    set_addr $I10, alt341_2
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-.annotate "line", 120
+    add $I11, rx330_pos, 1
+    gt $I11, rx330_eos, rx330_fail
+    sub $I11, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I11, 1
+    ne $S10, "]", rx330_fail
+    add rx330_pos, 1
+    goto alt336_end
+  alt336_1:
+    set_addr $I10, alt336_2
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
+.annotate "line", 119
   # rx charclass_q d r 1..-1
-    sub $I10, rx335_pos, rx335_off
-    find_not_cclass $I11, 8, rx335_tgt, $I10, rx335_eos
+    sub $I10, rx330_pos, rx330_off
+    find_not_cclass $I11, 8, rx330_tgt, $I10, rx330_eos
     add $I12, $I10, 1
-    lt $I11, $I12, rx335_fail
-    add rx335_pos, rx335_off, $I11
-  # rx rxquantr342 ** 0..*
-    set_addr $I343, rxquantr342_done
-    rx335_cur."!mark_push"(0, rx335_pos, $I343)
-  rxquantr342_loop:
+    lt $I11, $I12, rx330_fail
+    add rx330_pos, rx330_off, $I11
+  # rx rxquantr337 ** 0..*
+    set_addr $I338, rxquantr337_done
+    rx330_cur."!mark_push"(0, rx330_pos, $I338)
+  rxquantr337_loop:
   # rx literal  "_"
-    add $I11, rx335_pos, 1
-    gt $I11, rx335_eos, rx335_fail
-    sub $I11, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I11, 1
-    ne $S10, "_", rx335_fail
-    add rx335_pos, 1
+    add $I11, rx330_pos, 1
+    gt $I11, rx330_eos, rx330_fail
+    sub $I11, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I11, 1
+    ne $S10, "_", rx330_fail
+    add rx330_pos, 1
   # rx charclass_q d r 1..-1
-    sub $I10, rx335_pos, rx335_off
-    find_not_cclass $I11, 8, rx335_tgt, $I10, rx335_eos
+    sub $I10, rx330_pos, rx330_off
+    find_not_cclass $I11, 8, rx330_tgt, $I10, rx330_eos
     add $I12, $I10, 1
-    lt $I11, $I12, rx335_fail
-    add rx335_pos, rx335_off, $I11
-    (rx335_rep) = rx335_cur."!mark_commit"($I343)
-    rx335_cur."!mark_push"(rx335_rep, rx335_pos, $I343)
-    goto rxquantr342_loop
-  rxquantr342_done:
-    goto alt341_end
-  alt341_2:
-    set_addr $I10, alt341_3
-    rx335_cur."!mark_push"(0, rx335_pos, $I10)
-.annotate "line", 121
+    lt $I11, $I12, rx330_fail
+    add rx330_pos, rx330_off, $I11
+    (rx330_rep) = rx330_cur."!mark_commit"($I338)
+    rx330_cur."!mark_push"(rx330_rep, rx330_pos, $I338)
+    goto rxquantr337_loop
+  rxquantr337_done:
+    goto alt336_end
+  alt336_2:
+    set_addr $I10, alt336_3
+    rx330_cur."!mark_push"(0, rx330_pos, $I10)
+.annotate "line", 120
   # rx enumcharlist negate=0 
-    ge rx335_pos, rx335_eos, rx335_fail
-    sub $I10, rx335_pos, rx335_off
-    substr $S10, rx335_tgt, $I10, 1
+    ge rx330_pos, rx330_eos, rx330_fail
+    sub $I10, rx330_pos, rx330_off
+    substr $S10, rx330_tgt, $I10, 1
     index $I11, "?@ABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
-    lt $I11, 0, rx335_fail
-    inc rx335_pos
-    goto alt341_end
-  alt341_3:
-.annotate "line", 122
+    lt $I11, 0, rx330_fail
+    inc rx330_pos
+    goto alt336_end
+  alt336_3:
+.annotate "line", 121
   # rx subrule "panic" subtype=method negate=
-    rx335_cur."!cursor_pos"(rx335_pos)
-    $P10 = rx335_cur."panic"("Unrecognized \\c character")
-    unless $P10, rx335_fail
-    rx335_pos = $P10."pos"()
-  alt341_end:
-.annotate "line", 117
+    rx330_cur."!cursor_pos"(rx330_pos)
+    $P10 = rx330_cur."panic"("Unrecognized \\c character")
+    unless $P10, rx330_fail
+    rx330_pos = $P10."pos"()
+  alt336_end:
+.annotate "line", 116
   # rx pass
-    rx335_cur."!cursor_pass"(rx335_pos, "charspec")
-    rx335_cur."!cursor_debug"("PASS  ", "charspec", " at pos=", rx335_pos)
-    .return (rx335_cur)
-  rx335_fail:
-.annotate "line", 33
-    (rx335_rep, rx335_pos, $I10, $P10) = rx335_cur."!mark_fail"(0)
-    lt rx335_pos, -1, rx335_done
-    eq rx335_pos, -1, rx335_fail
+    rx330_cur."!cursor_pass"(rx330_pos, "charspec")
+    rx330_cur."!cursor_debug"("PASS  ", "charspec", " at pos=", rx330_pos)
+    .return (rx330_cur)
+  rx330_fail:
+.annotate "line", 33
+    (rx330_rep, rx330_pos, $I10, $P10) = rx330_cur."!mark_fail"(0)
+    lt rx330_pos, -1, rx330_done
+    eq rx330_pos, -1, rx330_fail
     jump $I10
-  rx335_done:
-    rx335_cur."!cursor_fail"()
-    rx335_cur."!cursor_debug"("FAIL  ", "charspec")
-    .return (rx335_cur)
+  rx330_done:
+    rx330_cur."!cursor_fail"()
+    rx330_cur."!cursor_debug"("FAIL  ", "charspec")
+    .return (rx330_cur)
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("104_1271336377.56964") :method
+.sub "!PREFIX__charspec"  :subid("102_1271948647.57035") :method
 .annotate "line", 33
-    $P337 = self."!PREFIX__!subrule"("", "")
-    $P338 = self."!PREFIX__!subrule"("charnames", "[")
-    new $P339, "ResizablePMCArray"
-    push $P339, $P337
-    push $P339, "Z"
-    push $P339, "Y"
-    push $P339, "X"
-    push $P339, "W"
-    push $P339, "V"
-    push $P339, "U"
-    push $P339, "T"
-    push $P339, "S"
-    push $P339, "R"
-    push $P339, "Q"
-    push $P339, "P"
-    push $P339, "O"
-    push $P339, "N"
-    push $P339, "M"
-    push $P339, "L"
-    push $P339, "K"
-    push $P339, "J"
-    push $P339, "I"
-    push $P339, "H"
-    push $P339, "G"
-    push $P339, "F"
-    push $P339, "E"
-    push $P339, "D"
-    push $P339, "C"
-    push $P339, "B"
-    push $P339, "A"
-    push $P339, "@"
-    push $P339, "?"
-    push $P339, ""
-    push $P339, $P338
-    .return ($P339)
+    $P332 = self."!PREFIX__!subrule"("", "")
+    $P333 = self."!PREFIX__!subrule"("charnames", "[")
+    new $P334, "ResizablePMCArray"
+    push $P334, $P332
+    push $P334, "Z"
+    push $P334, "Y"
+    push $P334, "X"
+    push $P334, "W"
+    push $P334, "V"
+    push $P334, "U"
+    push $P334, "T"
+    push $P334, "S"
+    push $P334, "R"
+    push $P334, "Q"
+    push $P334, "P"
+    push $P334, "O"
+    push $P334, "N"
+    push $P334, "M"
+    push $P334, "L"
+    push $P334, "K"
+    push $P334, "J"
+    push $P334, "I"
+    push $P334, "H"
+    push $P334, "G"
+    push $P334, "F"
+    push $P334, "E"
+    push $P334, "D"
+    push $P334, "C"
+    push $P334, "B"
+    push $P334, "A"
+    push $P334, "@"
+    push $P334, "?"
+    push $P334, ""
+    push $P334, $P333
+    .return ($P334)
 .end
 
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336380.06238")
+.sub "_block11"  :anon :subid("10_1271948650.1622")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
 .annotate "line", 3
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
-    $P578 = $P14()
+    $P571 = $P14()
 .annotate "line", 1
-    .return ($P578)
+    .return ($P571)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post50") :outer("10_1271336380.06238")
+.sub "" :load :init :subid("post49") :outer("10_1271948650.1622")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336380.06238" 
+    .const 'Sub' $P12 = "10_1271948650.1622" 
     .local pmc block
     set block, $P12
-    $P579 = get_root_global ["parrot"], "P6metaclass"
-    $P579."new_class"("HLL::Actions")
+    $P572 = get_root_global ["parrot"], "P6metaclass"
+    $P572."new_class"("HLL::Actions")
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1271336380.06238") :outer("10_1271336380.06238")
+.sub "_block13"  :subid("11_1271948650.1622") :outer("10_1271948650.1622")
 .annotate "line", 3
-    .const 'Sub' $P561 = "49_1271336380.06238" 
-    capture_lex $P561
-    .const 'Sub' $P536 = "47_1271336380.06238" 
-    capture_lex $P536
-    .const 'Sub' $P505 = "46_1271336380.06238" 
-    capture_lex $P505
-    .const 'Sub' $P486 = "45_1271336380.06238" 
-    capture_lex $P486
-    .const 'Sub' $P479 = "44_1271336380.06238" 
+    .const 'Sub' $P554 = "48_1271948650.1622" 
+    capture_lex $P554
+    .const 'Sub' $P529 = "46_1271948650.1622" 
+    capture_lex $P529
+    .const 'Sub' $P498 = "45_1271948650.1622" 
+    capture_lex $P498
+    .const 'Sub' $P479 = "44_1271948650.1622" 
     capture_lex $P479
-    .const 'Sub' $P469 = "43_1271336380.06238" 
-    capture_lex $P469
-    .const 'Sub' $P452 = "42_1271336380.06238" 
-    capture_lex $P452
-    .const 'Sub' $P435 = "41_1271336380.06238" 
-    capture_lex $P435
-    .const 'Sub' $P428 = "40_1271336380.06238" 
+    .const 'Sub' $P472 = "43_1271948650.1622" 
+    capture_lex $P472
+    .const 'Sub' $P462 = "42_1271948650.1622" 
+    capture_lex $P462
+    .const 'Sub' $P445 = "41_1271948650.1622" 
+    capture_lex $P445
+    .const 'Sub' $P428 = "40_1271948650.1622" 
     capture_lex $P428
-    .const 'Sub' $P421 = "39_1271336380.06238" 
+    .const 'Sub' $P421 = "39_1271948650.1622" 
     capture_lex $P421
-    .const 'Sub' $P414 = "38_1271336380.06238" 
+    .const 'Sub' $P414 = "38_1271948650.1622" 
     capture_lex $P414
-    .const 'Sub' $P407 = "37_1271336380.06238" 
+    .const 'Sub' $P407 = "37_1271948650.1622" 
     capture_lex $P407
-    .const 'Sub' $P400 = "36_1271336380.06238" 
+    .const 'Sub' $P400 = "36_1271948650.1622" 
     capture_lex $P400
-    .const 'Sub' $P393 = "35_1271336380.06238" 
+    .const 'Sub' $P393 = "35_1271948650.1622" 
     capture_lex $P393
-    .const 'Sub' $P383 = "34_1271336380.06238" 
+    .const 'Sub' $P383 = "34_1271948650.1622" 
     capture_lex $P383
-    .const 'Sub' $P376 = "33_1271336380.06238" 
+    .const 'Sub' $P376 = "33_1271948650.1622" 
     capture_lex $P376
-    .const 'Sub' $P360 = "32_1271336380.06238" 
+    .const 'Sub' $P360 = "32_1271948650.1622" 
     capture_lex $P360
-    .const 'Sub' $P285 = "30_1271336380.06238" 
+    .const 'Sub' $P285 = "30_1271948650.1622" 
     capture_lex $P285
-    .const 'Sub' $P222 = "27_1271336380.06238" 
+    .const 'Sub' $P222 = "27_1271948650.1622" 
     capture_lex $P222
-    .const 'Sub' $P213 = "26_1271336380.06238" 
+    .const 'Sub' $P213 = "26_1271948650.1622" 
     capture_lex $P213
-    .const 'Sub' $P204 = "25_1271336380.06238" 
+    .const 'Sub' $P204 = "25_1271948650.1622" 
     capture_lex $P204
-    .const 'Sub' $P195 = "24_1271336380.06238" 
+    .const 'Sub' $P195 = "24_1271948650.1622" 
     capture_lex $P195
-    .const 'Sub' $P186 = "23_1271336380.06238" 
+    .const 'Sub' $P186 = "23_1271948650.1622" 
     capture_lex $P186
-    .const 'Sub' $P177 = "22_1271336380.06238" 
+    .const 'Sub' $P177 = "22_1271948650.1622" 
     capture_lex $P177
-    .const 'Sub' $P167 = "21_1271336380.06238" 
+    .const 'Sub' $P167 = "21_1271948650.1622" 
     capture_lex $P167
-    .const 'Sub' $P157 = "20_1271336380.06238" 
+    .const 'Sub' $P157 = "20_1271948650.1622" 
     capture_lex $P157
-    .const 'Sub' $P149 = "19_1271336380.06238" 
+    .const 'Sub' $P149 = "19_1271948650.1622" 
     capture_lex $P149
-    .const 'Sub' $P139 = "18_1271336380.06238" 
+    .const 'Sub' $P139 = "18_1271948650.1622" 
     capture_lex $P139
-    .const 'Sub' $P129 = "17_1271336380.06238" 
+    .const 'Sub' $P129 = "17_1271948650.1622" 
     capture_lex $P129
-    .const 'Sub' $P28 = "14_1271336380.06238" 
+    .const 'Sub' $P28 = "14_1271948650.1622" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1271336380.06238" 
+    .const 'Sub' $P22 = "13_1271948650.1622" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1271336380.06238" 
+    .const 'Sub' $P15 = "12_1271948650.1622" 
     capture_lex $P15
-.annotate "line", 198
-    .const 'Sub' $P561 = "49_1271336380.06238" 
-    capture_lex $P561
+.annotate "line", 197
+    .const 'Sub' $P554 = "48_1271948650.1622" 
+    capture_lex $P554
 .annotate "line", 3
-    .return ($P561)
+    .return ($P554)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "string_to_int"  :subid("12_1271336380.06238") :outer("11_1271336380.06238")
+.sub "string_to_int"  :subid("12_1271948650.1622") :outer("11_1271948650.1622")
     .param pmc param_18
     .param pmc param_19
 .annotate "line", 3
@@ -4927,7 +4852,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "ints_to_string"  :subid("13_1271336380.06238") :outer("11_1271336380.06238")
+.sub "ints_to_string"  :subid("13_1271948650.1622") :outer("11_1271948650.1622")
     .param pmc param_25
 .annotate "line", 37
     new $P24, 'ExceptionHandler'
@@ -4968,14 +4893,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "EXPR"  :subid("14_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "EXPR"  :subid("14_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_31
     .param pmc param_32 :optional
     .param int has_param_32 :opt_flag
 .annotate "line", 62
-    .const 'Sub' $P111 = "16_1271336380.06238" 
+    .const 'Sub' $P111 = "16_1271948650.1622" 
     capture_lex $P111
-    .const 'Sub' $P78 = "15_1271336380.06238" 
+    .const 'Sub' $P78 = "15_1271948650.1622" 
     capture_lex $P78
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -4983,10 +4908,10 @@
     push_eh $P30
     .lex "self", self
     .lex "$/", param_31
-    if has_param_32, optparam_51
+    if has_param_32, optparam_50
     new $P33, "Undef"
     set param_32, $P33
-  optparam_51:
+  optparam_50:
     .lex "$key", param_32
 .annotate "line", 64
     new $P34, "Undef"
@@ -5008,13 +4933,13 @@
     defined $I43, $P39
     if $I43, default_42
     find_lex $P44, "$/"
-    unless_null $P44, vivify_52
+    unless_null $P44, vivify_51
     $P44 = root_new ['parrot';'Hash']
-  vivify_52:
+  vivify_51:
     set $P45, $P44["OPER"]
-    unless_null $P45, vivify_53
+    unless_null $P45, vivify_52
     new $P45, "Undef"
-  vivify_53:
+  vivify_52:
     $P46 = $P45."ast"()
     set $P39, $P46
   default_42:
@@ -5029,57 +4954,57 @@
     store_lex "$past", $P51
 .annotate "line", 67
     find_lex $P53, "$/"
-    unless_null $P53, vivify_54
+    unless_null $P53, vivify_53
     $P53 = root_new ['parrot';'Hash']
-  vivify_54:
+  vivify_53:
     set $P54, $P53["OPER"]
-    unless_null $P54, vivify_55
+    unless_null $P54, vivify_54
     $P54 = root_new ['parrot';'Hash']
-  vivify_55:
+  vivify_54:
     set $P55, $P54["O"]
-    unless_null $P55, vivify_56
+    unless_null $P55, vivify_55
     $P55 = root_new ['parrot';'Hash']
-  vivify_56:
+  vivify_55:
     set $P56, $P55["pasttype"]
-    unless_null $P56, vivify_57
+    unless_null $P56, vivify_56
     new $P56, "Undef"
-  vivify_57:
+  vivify_56:
     if $P56, if_52
 .annotate "line", 68
     find_lex $P64, "$/"
-    unless_null $P64, vivify_58
+    unless_null $P64, vivify_57
     $P64 = root_new ['parrot';'Hash']
-  vivify_58:
+  vivify_57:
     set $P65, $P64["OPER"]
-    unless_null $P65, vivify_59
+    unless_null $P65, vivify_58
     $P65 = root_new ['parrot';'Hash']
-  vivify_59:
+  vivify_58:
     set $P66, $P65["O"]
-    unless_null $P66, vivify_60
+    unless_null $P66, vivify_59
     $P66 = root_new ['parrot';'Hash']
-  vivify_60:
+  vivify_59:
     set $P67, $P66["pirop"]
-    unless_null $P67, vivify_61
+    unless_null $P67, vivify_60
     new $P67, "Undef"
-  vivify_61:
+  vivify_60:
     unless $P67, if_63_end
     find_lex $P68, "$past"
     find_lex $P69, "$/"
-    unless_null $P69, vivify_62
+    unless_null $P69, vivify_61
     $P69 = root_new ['parrot';'Hash']
-  vivify_62:
+  vivify_61:
     set $P70, $P69["OPER"]
-    unless_null $P70, vivify_63
+    unless_null $P70, vivify_62
     $P70 = root_new ['parrot';'Hash']
-  vivify_63:
+  vivify_62:
     set $P71, $P70["O"]
-    unless_null $P71, vivify_64
+    unless_null $P71, vivify_63
     $P71 = root_new ['parrot';'Hash']
-  vivify_64:
+  vivify_63:
     set $P72, $P71["pirop"]
-    unless_null $P72, vivify_65
+    unless_null $P72, vivify_64
     new $P72, "Undef"
-  vivify_65:
+  vivify_64:
     set $S73, $P72
     $P68."pirop"($S73)
   if_63_end:
@@ -5088,21 +5013,21 @@
 .annotate "line", 67
     find_lex $P57, "$past"
     find_lex $P58, "$/"
-    unless_null $P58, vivify_66
+    unless_null $P58, vivify_65
     $P58 = root_new ['parrot';'Hash']
-  vivify_66:
+  vivify_65:
     set $P59, $P58["OPER"]
-    unless_null $P59, vivify_67
+    unless_null $P59, vivify_66
     $P59 = root_new ['parrot';'Hash']
-  vivify_67:
+  vivify_66:
     set $P60, $P59["O"]
-    unless_null $P60, vivify_68
+    unless_null $P60, vivify_67
     $P60 = root_new ['parrot';'Hash']
-  vivify_68:
+  vivify_67:
     set $P61, $P60["pasttype"]
-    unless_null $P61, vivify_69
+    unless_null $P61, vivify_68
     new $P61, "Undef"
-  vivify_69:
+  vivify_68:
     set $S62, $P61
     $P57."pasttype"($S62)
   if_52_end:
@@ -5110,7 +5035,7 @@
     find_lex $P75, "$past"
     $P76 = $P75."name"()
     if $P76, unless_74_end
-    .const 'Sub' $P78 = "15_1271336380.06238" 
+    .const 'Sub' $P78 = "15_1271948650.1622" 
     capture_lex $P78
     $P78()
   unless_74_end:
@@ -5124,7 +5049,7 @@
     find_lex $P106, "$/"
     $P107 = $P106."list"()
     defined $I108, $P107
-    unless $I108, for_undef_73
+    unless $I108, for_undef_72
     iter $P105, $P107
     new $P123, 'ExceptionHandler'
     set_addr $P123, loop122_handler
@@ -5134,7 +5059,7 @@
     unless $P105, loop122_done
     shift $P109, $P105
   loop122_redo:
-    .const 'Sub' $P111 = "16_1271336380.06238" 
+    .const 'Sub' $P111 = "16_1271948650.1622" 
     capture_lex $P111
     $P111($P109)
   loop122_next:
@@ -5147,20 +5072,20 @@
     eq $P124, 67, loop122_redo
   loop122_done:
     pop_eh 
-  for_undef_73:
+  for_undef_72:
 .annotate "line", 81
     goto if_97_end
   if_97:
 .annotate "line", 80
     find_lex $P101, "$past"
     find_lex $P102, "$/"
-    unless_null $P102, vivify_74
+    unless_null $P102, vivify_73
     $P102 = root_new ['parrot';'ResizablePMCArray']
-  vivify_74:
+  vivify_73:
     set $P103, $P102[0]
-    unless_null $P103, vivify_75
+    unless_null $P103, vivify_74
     new $P103, "Undef"
-  vivify_75:
+  vivify_74:
     $P104 = $P103."ast"()
     $P101."unshift"($P104)
   if_97_end:
@@ -5179,7 +5104,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block77"  :anon :subid("15_1271336380.06238") :outer("14_1271336380.06238")
+.sub "_block77"  :anon :subid("15_1271948650.1622") :outer("14_1271948650.1622")
 .annotate "line", 71
     new $P79, "Undef"
     .lex "$name", $P79
@@ -5202,17 +5127,17 @@
     concat $P86, $P85, ":<"
 .annotate "line", 76
     find_lex $P87, "$/"
-    unless_null $P87, vivify_70
+    unless_null $P87, vivify_69
     $P87 = root_new ['parrot';'Hash']
-  vivify_70:
+  vivify_69:
     set $P88, $P87["OPER"]
-    unless_null $P88, vivify_71
+    unless_null $P88, vivify_70
     $P88 = root_new ['parrot';'Hash']
-  vivify_71:
+  vivify_70:
     set $P89, $P88["sym"]
-    unless_null $P89, vivify_72
+    unless_null $P89, vivify_71
     new $P89, "Undef"
-  vivify_72:
+  vivify_71:
     concat $P90, $P86, $P89
     concat $P91, $P90, ">"
     store_lex "$name", $P91
@@ -5229,7 +5154,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block110"  :anon :subid("16_1271336380.06238") :outer("14_1271336380.06238")
+.sub "_block110"  :anon :subid("16_1271948650.1622") :outer("14_1271948650.1622")
     .param pmc param_112
 .annotate "line", 82
     .lex "$_", param_112
@@ -5252,7 +5177,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>"  :subid("17_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "term:sym<circumfix>"  :subid("17_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_132
 .annotate "line", 87
     new $P131, 'ExceptionHandler'
@@ -5263,13 +5188,13 @@
     .lex "$/", param_132
     find_lex $P133, "$/"
     find_lex $P134, "$/"
-    unless_null $P134, vivify_76
+    unless_null $P134, vivify_75
     $P134 = root_new ['parrot';'Hash']
-  vivify_76:
+  vivify_75:
     set $P135, $P134["circumfix"]
-    unless_null $P135, vivify_77
+    unless_null $P135, vivify_76
     new $P135, "Undef"
-  vivify_77:
+  vivify_76:
     $P136 = $P135."ast"()
     $P137 = $P133."!make"($P136)
     .return ($P137)
@@ -5282,7 +5207,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "termish"  :subid("18_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "termish"  :subid("18_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_142
 .annotate "line", 89
     new $P141, 'ExceptionHandler'
@@ -5293,13 +5218,13 @@
     .lex "$/", param_142
     find_lex $P143, "$/"
     find_lex $P144, "$/"
-    unless_null $P144, vivify_78
+    unless_null $P144, vivify_77
     $P144 = root_new ['parrot';'Hash']
-  vivify_78:
+  vivify_77:
     set $P145, $P144["term"]
-    unless_null $P145, vivify_79
+    unless_null $P145, vivify_78
     new $P145, "Undef"
-  vivify_79:
+  vivify_78:
     $P146 = $P145."ast"()
     $P147 = $P143."!make"($P146)
     .return ($P147)
@@ -5312,7 +5237,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm"  :subid("19_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "nullterm"  :subid("19_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_152
 .annotate "line", 90
     new $P151, 'ExceptionHandler'
@@ -5334,7 +5259,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm_alt"  :subid("20_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "nullterm_alt"  :subid("20_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_160
 .annotate "line", 91
     new $P159, 'ExceptionHandler'
@@ -5345,13 +5270,13 @@
     .lex "$/", param_160
     find_lex $P161, "$/"
     find_lex $P162, "$/"
-    unless_null $P162, vivify_80
+    unless_null $P162, vivify_79
     $P162 = root_new ['parrot';'Hash']
-  vivify_80:
+  vivify_79:
     set $P163, $P162["term"]
-    unless_null $P163, vivify_81
+    unless_null $P163, vivify_80
     new $P163, "Undef"
-  vivify_81:
+  vivify_80:
     $P164 = $P163."ast"()
     $P165 = $P161."!make"($P164)
     .return ($P165)
@@ -5364,7 +5289,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "integer"  :subid("21_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "integer"  :subid("21_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_170
 .annotate "line", 93
     new $P169, 'ExceptionHandler'
@@ -5375,13 +5300,13 @@
     .lex "$/", param_170
     find_lex $P171, "$/"
     find_lex $P172, "$/"
-    unless_null $P172, vivify_82
+    unless_null $P172, vivify_81
     $P172 = root_new ['parrot';'Hash']
-  vivify_82:
+  vivify_81:
     set $P173, $P172["VALUE"]
-    unless_null $P173, vivify_83
+    unless_null $P173, vivify_82
     new $P173, "Undef"
-  vivify_83:
+  vivify_82:
     $P174 = $P173."ast"()
     $P175 = $P171."!make"($P174)
     .return ($P175)
@@ -5394,7 +5319,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "dec_number"  :subid("22_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "dec_number"  :subid("22_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_180
 .annotate "line", 95
     new $P179, 'ExceptionHandler'
@@ -5417,7 +5342,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "decint"  :subid("23_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "decint"  :subid("23_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_189
 .annotate "line", 97
     new $P188, 'ExceptionHandler'
@@ -5440,7 +5365,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "hexint"  :subid("24_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "hexint"  :subid("24_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_198
 .annotate "line", 98
     new $P197, 'ExceptionHandler'
@@ -5463,7 +5388,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "octint"  :subid("25_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "octint"  :subid("25_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_207
 .annotate "line", 99
     new $P206, 'ExceptionHandler'
@@ -5486,7 +5411,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "binint"  :subid("26_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "binint"  :subid("26_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_216
 .annotate "line", 100
     new $P215, 'ExceptionHandler'
@@ -5509,10 +5434,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_EXPR"  :subid("27_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_EXPR"  :subid("27_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_225
 .annotate "line", 102
-    .const 'Sub' $P241 = "28_1271336380.06238" 
+    .const 'Sub' $P241 = "28_1271948650.1622" 
     capture_lex $P241
     new $P224, 'ExceptionHandler'
     set_addr $P224, control_223
@@ -5524,13 +5449,13 @@
     new $P226, "Undef"
     .lex "$past", $P226
     find_lex $P227, "$/"
-    unless_null $P227, vivify_84
+    unless_null $P227, vivify_83
     $P227 = root_new ['parrot';'Hash']
-  vivify_84:
+  vivify_83:
     set $P228, $P227["quote_delimited"]
-    unless_null $P228, vivify_85
+    unless_null $P228, vivify_84
     new $P228, "Undef"
-  vivify_85:
+  vivify_84:
     $P229 = $P228."ast"()
     store_lex "$past", $P229
 .annotate "line", 104
@@ -5544,7 +5469,7 @@
     $P237 = $P235."ACCEPTS"($P236)
     if $P237, if_234
 .annotate "line", 108
-    .const 'Sub' $P241 = "28_1271336380.06238" 
+    .const 'Sub' $P241 = "28_1271948650.1622" 
     capture_lex $P241
     $P241()
     goto if_234_end
@@ -5583,9 +5508,9 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block240"  :anon :subid("28_1271336380.06238") :outer("27_1271336380.06238")
+.sub "_block240"  :anon :subid("28_1271948650.1622") :outer("27_1271948650.1622")
 .annotate "line", 108
-    .const 'Sub' $P260 = "29_1271336380.06238" 
+    .const 'Sub' $P260 = "29_1271948650.1622" 
     capture_lex $P260
 .annotate "line", 109
     $P242 = root_new ['parrot';'ResizablePMCArray']
@@ -5602,13 +5527,13 @@
     if $I251, if_248
 .annotate "line", 115
     find_lex $P268, "@words"
-    unless_null $P268, vivify_86
+    unless_null $P268, vivify_85
     $P268 = root_new ['parrot';'ResizablePMCArray']
-  vivify_86:
+  vivify_85:
     set $P269, $P268[0]
-    unless_null $P269, vivify_87
+    unless_null $P269, vivify_86
     new $P269, "Undef"
-  vivify_87:
+  vivify_86:
     set $S270, $P269
     new $P271, 'String'
     set $P271, $S270
@@ -5626,7 +5551,7 @@
 .annotate "line", 112
     find_lex $P256, "@words"
     defined $I257, $P256
-    unless $I257, for_undef_88
+    unless $I257, for_undef_87
     iter $P255, $P256
     new $P266, 'ExceptionHandler'
     set_addr $P266, loop265_handler
@@ -5636,7 +5561,7 @@
     unless $P255, loop265_done
     shift $P258, $P255
   loop265_redo:
-    .const 'Sub' $P260 = "29_1271336380.06238" 
+    .const 'Sub' $P260 = "29_1271948650.1622" 
     capture_lex $P260
     $P260($P258)
   loop265_next:
@@ -5649,7 +5574,7 @@
     eq $P267, 67, loop265_redo
   loop265_done:
     pop_eh 
-  for_undef_88:
+  for_undef_87:
 .annotate "line", 110
     set $P247, $P255
   if_248_end:
@@ -5659,7 +5584,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block259"  :anon :subid("29_1271336380.06238") :outer("28_1271336380.06238")
+.sub "_block259"  :anon :subid("29_1271948650.1622") :outer("28_1271948650.1622")
     .param pmc param_261
 .annotate "line", 112
     .lex "$_", param_261
@@ -5671,10 +5596,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_delimited"  :subid("30_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_delimited"  :subid("30_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_288
 .annotate "line", 125
-    .const 'Sub' $P300 = "31_1271336380.06238" 
+    .const 'Sub' $P300 = "31_1271948650.1622" 
     capture_lex $P300
     new $P287, 'ExceptionHandler'
     set_addr $P287, control_286
@@ -5699,15 +5624,15 @@
     store_lex "$lastlit", $P293
 .annotate "line", 128
     find_lex $P295, "$/"
-    unless_null $P295, vivify_89
+    unless_null $P295, vivify_88
     $P295 = root_new ['parrot';'Hash']
-  vivify_89:
+  vivify_88:
     set $P296, $P295["quote_atom"]
-    unless_null $P296, vivify_90
+    unless_null $P296, vivify_89
     new $P296, "Undef"
-  vivify_90:
+  vivify_89:
     defined $I297, $P296
-    unless $I297, for_undef_91
+    unless $I297, for_undef_90
     iter $P294, $P296
     new $P333, 'ExceptionHandler'
     set_addr $P333, loop332_handler
@@ -5717,7 +5642,7 @@
     unless $P294, loop332_done
     shift $P298, $P294
   loop332_redo:
-    .const 'Sub' $P300 = "31_1271336380.06238" 
+    .const 'Sub' $P300 = "31_1271948650.1622" 
     capture_lex $P300
     $P300($P298)
   loop332_next:
@@ -5730,7 +5655,7 @@
     eq $P334, 67, loop332_redo
   loop332_done:
     pop_eh 
-  for_undef_91:
+  for_undef_90:
 .annotate "line", 142
     find_lex $P336, "$lastlit"
     set $S337, $P336
@@ -5795,7 +5720,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block299"  :anon :subid("31_1271336380.06238") :outer("30_1271336380.06238")
+.sub "_block299"  :anon :subid("31_1271948650.1622") :outer("30_1271948650.1622")
     .param pmc param_302
 .annotate "line", 129
     new $P301, "Undef"
@@ -5864,7 +5789,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_atom"  :subid("32_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_atom"  :subid("32_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_363
 .annotate "line", 150
     new $P362, 'ExceptionHandler'
@@ -5876,13 +5801,13 @@
 .annotate "line", 151
     find_lex $P364, "$/"
     find_lex $P367, "$/"
-    unless_null $P367, vivify_92
+    unless_null $P367, vivify_91
     $P367 = root_new ['parrot';'Hash']
-  vivify_92:
+  vivify_91:
     set $P368, $P367["quote_escape"]
-    unless_null $P368, vivify_93
+    unless_null $P368, vivify_92
     new $P368, "Undef"
-  vivify_93:
+  vivify_92:
     if $P368, if_366
     find_lex $P372, "$/"
     set $S373, $P372
@@ -5891,13 +5816,13 @@
     goto if_366_end
   if_366:
     find_lex $P369, "$/"
-    unless_null $P369, vivify_94
+    unless_null $P369, vivify_93
     $P369 = root_new ['parrot';'Hash']
-  vivify_94:
+  vivify_93:
     set $P370, $P369["quote_escape"]
-    unless_null $P370, vivify_95
+    unless_null $P370, vivify_94
     new $P370, "Undef"
-  vivify_95:
+  vivify_94:
     $P371 = $P370."ast"()
     set $P365, $P371
   if_366_end:
@@ -5913,7 +5838,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>"  :subid("33_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<backslash>"  :subid("33_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_379
 .annotate "line", 154
     new $P378, 'ExceptionHandler'
@@ -5934,7 +5859,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>"  :subid("34_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<stopper>"  :subid("34_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_386
 .annotate "line", 155
     new $P385, 'ExceptionHandler'
@@ -5945,13 +5870,13 @@
     .lex "$/", param_386
     find_lex $P387, "$/"
     find_lex $P388, "$/"
-    unless_null $P388, vivify_96
+    unless_null $P388, vivify_95
     $P388 = root_new ['parrot';'Hash']
-  vivify_96:
+  vivify_95:
     set $P389, $P388["stopper"]
-    unless_null $P389, vivify_97
+    unless_null $P389, vivify_96
     new $P389, "Undef"
-  vivify_97:
+  vivify_96:
     set $S390, $P389
     $P391 = $P387."!make"($S390)
     .return ($P391)
@@ -5964,7 +5889,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>"  :subid("35_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<bs>"  :subid("35_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_396
 .annotate "line", 157
     new $P395, 'ExceptionHandler'
@@ -5985,7 +5910,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>"  :subid("36_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<nl>"  :subid("36_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_403
 .annotate "line", 158
     new $P402, 'ExceptionHandler'
@@ -6006,7 +5931,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>"  :subid("37_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<cr>"  :subid("37_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_410
 .annotate "line", 159
     new $P409, 'ExceptionHandler'
@@ -6027,7 +5952,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>"  :subid("38_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<tab>"  :subid("38_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_417
 .annotate "line", 160
     new $P416, 'ExceptionHandler'
@@ -6048,7 +5973,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<ff>"  :subid("39_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<ff>"  :subid("39_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_424
 .annotate "line", 161
     new $P423, 'ExceptionHandler'
@@ -6069,167 +5994,169 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<esc>"  :subid("40_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<hex>"  :subid("40_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_431
-.annotate "line", 162
+.annotate "line", 163
     new $P430, 'ExceptionHandler'
     set_addr $P430, control_429
     $P430."handle_types"(58)
     push_eh $P430
     .lex "self", self
     .lex "$/", param_431
-    find_lex $P432, "$/"
-    $P433 = $P432."!make"("\e")
-    .return ($P433)
-  control_429:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P434, exception, "payload"
-    .return ($P434)
-.end
-
-
-.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>"  :subid("41_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_438
 .annotate "line", 164
-    new $P437, 'ExceptionHandler'
-    set_addr $P437, control_436
-    $P437."handle_types"(58)
-    push_eh $P437
-    .lex "self", self
-    .lex "$/", param_438
-.annotate "line", 165
-    find_lex $P439, "$/"
-    find_lex $P442, "$/"
-    unless_null $P442, vivify_98
-    $P442 = root_new ['parrot';'Hash']
+    find_lex $P432, "$/"
+    find_lex $P435, "$/"
+    unless_null $P435, vivify_97
+    $P435 = root_new ['parrot';'Hash']
+  vivify_97:
+    set $P436, $P435["hexint"]
+    unless_null $P436, vivify_98
+    new $P436, "Undef"
   vivify_98:
-    set $P443, $P442["hexint"]
-    unless_null $P443, vivify_99
-    new $P443, "Undef"
+    if $P436, if_434
+    find_lex $P439, "$/"
+    unless_null $P439, vivify_99
+    $P439 = root_new ['parrot';'Hash']
   vivify_99:
-    if $P443, if_441
-    find_lex $P446, "$/"
-    unless_null $P446, vivify_100
-    $P446 = root_new ['parrot';'Hash']
+    set $P440, $P439["hexints"]
+    unless_null $P440, vivify_100
+    $P440 = root_new ['parrot';'Hash']
   vivify_100:
-    set $P447, $P446["hexints"]
-    unless_null $P447, vivify_101
-    $P447 = root_new ['parrot';'Hash']
+    set $P441, $P440["hexint"]
+    unless_null $P441, vivify_101
+    new $P441, "Undef"
   vivify_101:
-    set $P448, $P447["hexint"]
-    unless_null $P448, vivify_102
-    new $P448, "Undef"
+    set $P433, $P441
+    goto if_434_end
+  if_434:
+    find_lex $P437, "$/"
+    unless_null $P437, vivify_102
+    $P437 = root_new ['parrot';'Hash']
   vivify_102:
-    set $P440, $P448
-    goto if_441_end
-  if_441:
-    find_lex $P444, "$/"
-    unless_null $P444, vivify_103
-    $P444 = root_new ['parrot';'Hash']
+    set $P438, $P437["hexint"]
+    unless_null $P438, vivify_103
+    new $P438, "Undef"
   vivify_103:
-    set $P445, $P444["hexint"]
-    unless_null $P445, vivify_104
-    new $P445, "Undef"
-  vivify_104:
-    set $P440, $P445
-  if_441_end:
-    $P449 = "ints_to_string"($P440)
-    $P450 = $P439."!make"($P449)
-.annotate "line", 164
-    .return ($P450)
-  control_436:
+    set $P433, $P438
+  if_434_end:
+    $P442 = "ints_to_string"($P433)
+    $P443 = $P432."!make"($P442)
+.annotate "line", 163
+    .return ($P443)
+  control_429:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P451, exception, "payload"
-    .return ($P451)
+    getattribute $P444, exception, "payload"
+    .return ($P444)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>"  :subid("42_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_455
-.annotate "line", 168
-    new $P454, 'ExceptionHandler'
-    set_addr $P454, control_453
-    $P454."handle_types"(58)
-    push_eh $P454
+.sub "quote_escape:sym<oct>"  :subid("41_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_448
+.annotate "line", 167
+    new $P447, 'ExceptionHandler'
+    set_addr $P447, control_446
+    $P447."handle_types"(58)
+    push_eh $P447
     .lex "self", self
-    .lex "$/", param_455
-.annotate "line", 169
-    find_lex $P456, "$/"
-    find_lex $P459, "$/"
-    unless_null $P459, vivify_105
-    $P459 = root_new ['parrot';'Hash']
+    .lex "$/", param_448
+.annotate "line", 168
+    find_lex $P449, "$/"
+    find_lex $P452, "$/"
+    unless_null $P452, vivify_104
+    $P452 = root_new ['parrot';'Hash']
+  vivify_104:
+    set $P453, $P452["octint"]
+    unless_null $P453, vivify_105
+    new $P453, "Undef"
   vivify_105:
-    set $P460, $P459["octint"]
-    unless_null $P460, vivify_106
-    new $P460, "Undef"
+    if $P453, if_451
+    find_lex $P456, "$/"
+    unless_null $P456, vivify_106
+    $P456 = root_new ['parrot';'Hash']
   vivify_106:
-    if $P460, if_458
-    find_lex $P463, "$/"
-    unless_null $P463, vivify_107
-    $P463 = root_new ['parrot';'Hash']
+    set $P457, $P456["octints"]
+    unless_null $P457, vivify_107
+    $P457 = root_new ['parrot';'Hash']
   vivify_107:
-    set $P464, $P463["octints"]
-    unless_null $P464, vivify_108
-    $P464 = root_new ['parrot';'Hash']
+    set $P458, $P457["octint"]
+    unless_null $P458, vivify_108
+    new $P458, "Undef"
   vivify_108:
-    set $P465, $P464["octint"]
-    unless_null $P465, vivify_109
-    new $P465, "Undef"
+    set $P450, $P458
+    goto if_451_end
+  if_451:
+    find_lex $P454, "$/"
+    unless_null $P454, vivify_109
+    $P454 = root_new ['parrot';'Hash']
   vivify_109:
-    set $P457, $P465
-    goto if_458_end
-  if_458:
-    find_lex $P461, "$/"
-    unless_null $P461, vivify_110
-    $P461 = root_new ['parrot';'Hash']
+    set $P455, $P454["octint"]
+    unless_null $P455, vivify_110
+    new $P455, "Undef"
   vivify_110:
-    set $P462, $P461["octint"]
-    unless_null $P462, vivify_111
-    new $P462, "Undef"
-  vivify_111:
-    set $P457, $P462
-  if_458_end:
-    $P466 = "ints_to_string"($P457)
-    $P467 = $P456."!make"($P466)
-.annotate "line", 168
-    .return ($P467)
-  control_453:
+    set $P450, $P455
+  if_451_end:
+    $P459 = "ints_to_string"($P450)
+    $P460 = $P449."!make"($P459)
+.annotate "line", 167
+    .return ($P460)
+  control_446:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P468, exception, "payload"
-    .return ($P468)
+    getattribute $P461, exception, "payload"
+    .return ($P461)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<chr>"  :subid("43_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_472
-.annotate "line", 172
-    new $P471, 'ExceptionHandler'
-    set_addr $P471, control_470
-    $P471."handle_types"(58)
-    push_eh $P471
+.sub "quote_escape:sym<chr>"  :subid("42_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_465
+.annotate "line", 171
+    new $P464, 'ExceptionHandler'
+    set_addr $P464, control_463
+    $P464."handle_types"(58)
+    push_eh $P464
     .lex "self", self
-    .lex "$/", param_472
-.annotate "line", 173
-    find_lex $P473, "$/"
-    find_lex $P474, "$/"
-    unless_null $P474, vivify_112
-    $P474 = root_new ['parrot';'Hash']
-  vivify_112:
-    set $P475, $P474["charspec"]
-    unless_null $P475, vivify_113
-    new $P475, "Undef"
-  vivify_113:
-    $P476 = $P475."ast"()
-    $P477 = $P473."!make"($P476)
+    .lex "$/", param_465
 .annotate "line", 172
+    find_lex $P466, "$/"
+    find_lex $P467, "$/"
+    unless_null $P467, vivify_111
+    $P467 = root_new ['parrot';'Hash']
+  vivify_111:
+    set $P468, $P467["charspec"]
+    unless_null $P468, vivify_112
+    new $P468, "Undef"
+  vivify_112:
+    $P469 = $P468."ast"()
+    $P470 = $P466."!make"($P469)
+.annotate "line", 171
+    .return ($P470)
+  control_463:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P471, exception, "payload"
+    .return ($P471)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<0>"  :subid("43_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_475
+.annotate "line", 175
+    new $P474, 'ExceptionHandler'
+    set_addr $P474, control_473
+    $P474."handle_types"(58)
+    push_eh $P474
+    .lex "self", self
+    .lex "$/", param_475
+.annotate "line", 176
+    find_lex $P476, "$/"
+    $P477 = $P476."!make"(unicode:"\x{0}")
+.annotate "line", 175
     .return ($P477)
-  control_470:
+  control_473:
     .local pmc exception 
     .get_results (exception) 
     getattribute $P478, exception, "payload"
@@ -6238,292 +6165,269 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<0>"  :subid("44_1271336380.06238") :method :outer("11_1271336380.06238")
+.sub "quote_escape:sym<misc>"  :subid("44_1271948650.1622") :method :outer("11_1271948650.1622")
     .param pmc param_482
-.annotate "line", 176
+.annotate "line", 179
     new $P481, 'ExceptionHandler'
     set_addr $P481, control_480
     $P481."handle_types"(58)
     push_eh $P481
     .lex "self", self
     .lex "$/", param_482
-.annotate "line", 177
-    find_lex $P483, "$/"
-    $P484 = $P483."!make"(unicode:"\x{0}")
-.annotate "line", 176
-    .return ($P484)
-  control_480:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P485, exception, "payload"
-    .return ($P485)
-.end
-
-
-.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<misc>"  :subid("45_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_489
 .annotate "line", 180
-    new $P488, 'ExceptionHandler'
-    set_addr $P488, control_487
-    $P488."handle_types"(58)
-    push_eh $P488
-    .lex "self", self
-    .lex "$/", param_489
-.annotate "line", 181
-    find_lex $P490, "$/"
+    find_lex $P483, "$/"
+    find_lex $P486, "$/"
+    unless_null $P486, vivify_113
+    $P486 = root_new ['parrot';'Hash']
+  vivify_113:
+    set $P487, $P486["textq"]
+    unless_null $P487, vivify_114
+    new $P487, "Undef"
+  vivify_114:
+    if $P487, if_485
     find_lex $P493, "$/"
-    unless_null $P493, vivify_114
+    unless_null $P493, vivify_115
     $P493 = root_new ['parrot';'Hash']
-  vivify_114:
-    set $P494, $P493["textq"]
-    unless_null $P494, vivify_115
-    new $P494, "Undef"
   vivify_115:
-    if $P494, if_492
-    find_lex $P500, "$/"
-    unless_null $P500, vivify_116
-    $P500 = root_new ['parrot';'Hash']
+    set $P494, $P493["textqq"]
+    unless_null $P494, vivify_116
+    new $P494, "Undef"
   vivify_116:
-    set $P501, $P500["textqq"]
-    unless_null $P501, vivify_117
-    new $P501, "Undef"
+    $P495 = $P494."Str"()
+    set $P484, $P495
+    goto if_485_end
+  if_485:
+    new $P488, "String"
+    assign $P488, "\\"
+    find_lex $P489, "$/"
+    unless_null $P489, vivify_117
+    $P489 = root_new ['parrot';'Hash']
   vivify_117:
-    $P502 = $P501."Str"()
-    set $P491, $P502
-    goto if_492_end
-  if_492:
-    new $P495, "String"
-    assign $P495, "\\"
-    find_lex $P496, "$/"
-    unless_null $P496, vivify_118
-    $P496 = root_new ['parrot';'Hash']
+    set $P490, $P489["textq"]
+    unless_null $P490, vivify_118
+    new $P490, "Undef"
   vivify_118:
-    set $P497, $P496["textq"]
-    unless_null $P497, vivify_119
-    new $P497, "Undef"
-  vivify_119:
-    $S498 = $P497."Str"()
-    concat $P499, $P495, $S498
-    set $P491, $P499
-  if_492_end:
-    $P503 = $P490."!make"($P491)
-.annotate "line", 180
-    .return ($P503)
-  control_487:
+    $S491 = $P490."Str"()
+    concat $P492, $P488, $S491
+    set $P484, $P492
+  if_485_end:
+    $P496 = $P483."!make"($P484)
+.annotate "line", 179
+    .return ($P496)
+  control_480:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P504, exception, "payload"
-    .return ($P504)
+    getattribute $P497, exception, "payload"
+    .return ($P497)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "charname"  :subid("46_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_508
-.annotate "line", 184
-    new $P507, 'ExceptionHandler'
-    set_addr $P507, control_506
-    $P507."handle_types"(58)
-    push_eh $P507
+.sub "charname"  :subid("45_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_501
+.annotate "line", 183
+    new $P500, 'ExceptionHandler'
+    set_addr $P500, control_499
+    $P500."handle_types"(58)
+    push_eh $P500
     .lex "self", self
-    .lex "$/", param_508
+    .lex "$/", param_501
+.annotate "line", 184
+    new $P502, "Undef"
+    .lex "$codepoint", $P502
 .annotate "line", 185
-    new $P509, "Undef"
-    .lex "$codepoint", $P509
-.annotate "line", 186
-    find_lex $P512, "$/"
-    unless_null $P512, vivify_120
-    $P512 = root_new ['parrot';'Hash']
+    find_lex $P505, "$/"
+    unless_null $P505, vivify_119
+    $P505 = root_new ['parrot';'Hash']
+  vivify_119:
+    set $P506, $P505["integer"]
+    unless_null $P506, vivify_120
+    new $P506, "Undef"
   vivify_120:
-    set $P513, $P512["integer"]
-    unless_null $P513, vivify_121
-    new $P513, "Undef"
+    if $P506, if_504
+.annotate "line", 186
+ $P510 = new ['CodeString'] 
+    find_lex $P511, "$/"
+    set $S512, $P511
+    $P513 = $P510."charname_to_ord"($S512)
+    set $P503, $P513
+.annotate "line", 185
+    goto if_504_end
+  if_504:
+    find_lex $P507, "$/"
+    unless_null $P507, vivify_121
+    $P507 = root_new ['parrot';'Hash']
   vivify_121:
-    if $P513, if_511
+    set $P508, $P507["integer"]
+    unless_null $P508, vivify_122
+    new $P508, "Undef"
+  vivify_122:
+    $P509 = $P508."ast"()
+    set $P503, $P509
+  if_504_end:
+    store_lex "$codepoint", $P503
 .annotate "line", 187
- $P517 = new ['CodeString'] 
+    find_lex $P515, "$codepoint"
+    set $N516, $P515
+    islt $I517, $N516, 0.0
+    unless $I517, if_514_end
     find_lex $P518, "$/"
-    set $S519, $P518
-    $P520 = $P517."charname_to_ord"($S519)
-    set $P510, $P520
-.annotate "line", 186
-    goto if_511_end
-  if_511:
-    find_lex $P514, "$/"
-    unless_null $P514, vivify_122
-    $P514 = root_new ['parrot';'Hash']
-  vivify_122:
-    set $P515, $P514["integer"]
-    unless_null $P515, vivify_123
-    new $P515, "Undef"
-  vivify_123:
-    $P516 = $P515."ast"()
-    set $P510, $P516
-  if_511_end:
-    store_lex "$codepoint", $P510
+    $P519 = $P518."CURSOR"()
+    new $P520, 'String'
+    set $P520, "Unrecognized character name "
+    find_lex $P521, "$/"
+    concat $P522, $P520, $P521
+    $P519."panic"($P522)
+  if_514_end:
 .annotate "line", 188
-    find_lex $P522, "$codepoint"
-    set $N523, $P522
-    islt $I524, $N523, 0.0
-    unless $I524, if_521_end
-    find_lex $P525, "$/"
-    $P526 = $P525."CURSOR"()
-    new $P527, 'String'
-    set $P527, "Unrecognized character name "
-    find_lex $P528, "$/"
-    concat $P529, $P527, $P528
-    $P526."panic"($P529)
-  if_521_end:
-.annotate "line", 189
-    find_lex $P530, "$/"
-    find_lex $P531, "$codepoint"
-    set $I532, $P531
-    chr $S533, $I532
-    $P534 = $P530."!make"($S533)
-.annotate "line", 184
-    .return ($P534)
-  control_506:
+    find_lex $P523, "$/"
+    find_lex $P524, "$codepoint"
+    set $I525, $P524
+    chr $S526, $I525
+    $P527 = $P523."!make"($S526)
+.annotate "line", 183
+    .return ($P527)
+  control_499:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P535, exception, "payload"
-    .return ($P535)
+    getattribute $P528, exception, "payload"
+    .return ($P528)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "charnames"  :subid("47_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_539
-.annotate "line", 192
-    .const 'Sub' $P548 = "48_1271336380.06238" 
-    capture_lex $P548
-    new $P538, 'ExceptionHandler'
-    set_addr $P538, control_537
-    $P538."handle_types"(58)
-    push_eh $P538
+.sub "charnames"  :subid("46_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_532
+.annotate "line", 191
+    .const 'Sub' $P541 = "47_1271948650.1622" 
+    capture_lex $P541
+    new $P531, 'ExceptionHandler'
+    set_addr $P531, control_530
+    $P531."handle_types"(58)
+    push_eh $P531
     .lex "self", self
-    .lex "$/", param_539
+    .lex "$/", param_532
+.annotate "line", 192
+    new $P533, "Undef"
+    .lex "$str", $P533
+    new $P534, "String"
+    assign $P534, ""
+    store_lex "$str", $P534
 .annotate "line", 193
-    new $P540, "Undef"
-    .lex "$str", $P540
-    new $P541, "String"
-    assign $P541, ""
-    store_lex "$str", $P541
-.annotate "line", 194
-    find_lex $P543, "$/"
-    unless_null $P543, vivify_124
-    $P543 = root_new ['parrot';'Hash']
+    find_lex $P536, "$/"
+    unless_null $P536, vivify_123
+    $P536 = root_new ['parrot';'Hash']
+  vivify_123:
+    set $P537, $P536["charname"]
+    unless_null $P537, vivify_124
+    new $P537, "Undef"
   vivify_124:
-    set $P544, $P543["charname"]
-    unless_null $P544, vivify_125
-    new $P544, "Undef"
-  vivify_125:
-    defined $I545, $P544
-    unless $I545, for_undef_126
-    iter $P542, $P544
-    new $P555, 'ExceptionHandler'
-    set_addr $P555, loop554_handler
-    $P555."handle_types"(65, 67, 66)
-    push_eh $P555
-  loop554_test:
-    unless $P542, loop554_done
-    shift $P546, $P542
-  loop554_redo:
-    .const 'Sub' $P548 = "48_1271336380.06238" 
-    capture_lex $P548
-    $P548($P546)
-  loop554_next:
-    goto loop554_test
-  loop554_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P556, exception, 'type'
-    eq $P556, 65, loop554_next
-    eq $P556, 67, loop554_redo
-  loop554_done:
+    defined $I538, $P537
+    unless $I538, for_undef_125
+    iter $P535, $P537
+    new $P548, 'ExceptionHandler'
+    set_addr $P548, loop547_handler
+    $P548."handle_types"(65, 67, 66)
+    push_eh $P548
+  loop547_test:
+    unless $P535, loop547_done
+    shift $P539, $P535
+  loop547_redo:
+    .const 'Sub' $P541 = "47_1271948650.1622" 
+    capture_lex $P541
+    $P541($P539)
+  loop547_next:
+    goto loop547_test
+  loop547_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P549, exception, 'type'
+    eq $P549, 65, loop547_next
+    eq $P549, 67, loop547_redo
+  loop547_done:
     pop_eh 
-  for_undef_126:
-.annotate "line", 195
-    find_lex $P557, "$/"
-    find_lex $P558, "$str"
-    $P559 = $P557."!make"($P558)
-.annotate "line", 192
-    .return ($P559)
-  control_537:
+  for_undef_125:
+.annotate "line", 194
+    find_lex $P550, "$/"
+    find_lex $P551, "$str"
+    $P552 = $P550."!make"($P551)
+.annotate "line", 191
+    .return ($P552)
+  control_530:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P560, exception, "payload"
-    .return ($P560)
+    getattribute $P553, exception, "payload"
+    .return ($P553)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block547"  :anon :subid("48_1271336380.06238") :outer("47_1271336380.06238")
-    .param pmc param_549
-.annotate "line", 194
-    .lex "$_", param_549
-    find_lex $P550, "$str"
-    find_lex $P551, "$_"
-    $S552 = $P551."ast"()
-    concat $P553, $P550, $S552
-    store_lex "$str", $P553
-    .return ($P553)
+.sub "_block540"  :anon :subid("47_1271948650.1622") :outer("46_1271948650.1622")
+    .param pmc param_542
+.annotate "line", 193
+    .lex "$_", param_542
+    find_lex $P543, "$str"
+    find_lex $P544, "$_"
+    $S545 = $P544."ast"()
+    concat $P546, $P543, $S545
+    store_lex "$str", $P546
+    .return ($P546)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "charspec"  :subid("49_1271336380.06238") :method :outer("11_1271336380.06238")
-    .param pmc param_564
-.annotate "line", 198
-    new $P563, 'ExceptionHandler'
-    set_addr $P563, control_562
-    $P563."handle_types"(58)
-    push_eh $P563
+.sub "charspec"  :subid("48_1271948650.1622") :method :outer("11_1271948650.1622")
+    .param pmc param_557
+.annotate "line", 197
+    new $P556, 'ExceptionHandler'
+    set_addr $P556, control_555
+    $P556."handle_types"(58)
+    push_eh $P556
     .lex "self", self
-    .lex "$/", param_564
-.annotate "line", 199
-    find_lex $P565, "$/"
-    find_lex $P568, "$/"
-    unless_null $P568, vivify_127
-    $P568 = root_new ['parrot';'Hash']
+    .lex "$/", param_557
+.annotate "line", 198
+    find_lex $P558, "$/"
+    find_lex $P561, "$/"
+    unless_null $P561, vivify_126
+    $P561 = root_new ['parrot';'Hash']
+  vivify_126:
+    set $P562, $P561["charnames"]
+    unless_null $P562, vivify_127
+    new $P562, "Undef"
   vivify_127:
-    set $P569, $P568["charnames"]
-    unless_null $P569, vivify_128
-    new $P569, "Undef"
+    if $P562, if_560
+    find_lex $P566, "$/"
+    $I567 = "string_to_int"($P566, 10)
+    chr $S568, $I567
+    new $P559, 'String'
+    set $P559, $S568
+    goto if_560_end
+  if_560:
+    find_lex $P563, "$/"
+    unless_null $P563, vivify_128
+    $P563 = root_new ['parrot';'Hash']
   vivify_128:
-    if $P569, if_567
-    find_lex $P573, "$/"
-    $I574 = "string_to_int"($P573, 10)
-    chr $S575, $I574
-    new $P566, 'String'
-    set $P566, $S575
-    goto if_567_end
-  if_567:
-    find_lex $P570, "$/"
-    unless_null $P570, vivify_129
-    $P570 = root_new ['parrot';'Hash']
+    set $P564, $P563["charnames"]
+    unless_null $P564, vivify_129
+    new $P564, "Undef"
   vivify_129:
-    set $P571, $P570["charnames"]
-    unless_null $P571, vivify_130
-    new $P571, "Undef"
-  vivify_130:
-    $P572 = $P571."ast"()
-    set $P566, $P572
-  if_567_end:
-    $P576 = $P565."!make"($P566)
-.annotate "line", 198
-    .return ($P576)
-  control_562:
+    $P565 = $P564."ast"()
+    set $P559, $P565
+  if_560_end:
+    $P569 = $P558."!make"($P559)
+.annotate "line", 197
+    .return ($P569)
+  control_555:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P577, exception, "payload"
-    .return ($P577)
+    getattribute $P570, exception, "payload"
+    .return ($P570)
 .end
 
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336381.18625")
+.sub "_block11"  :anon :subid("10_1271948651.35295")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     capture_lex $P14
@@ -6537,9 +6441,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post25") :outer("10_1271336381.18625")
+.sub "" :load :init :subid("post25") :outer("10_1271948651.35295")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336381.18625" 
+    .const 'Sub' $P12 = "10_1271948651.35295" 
     .local pmc block
     set block, $P12
 .annotate "line", 2
@@ -6553,28 +6457,28 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block13"  :subid("11_1271336381.18625") :outer("10_1271336381.18625")
+.sub "_block13"  :subid("11_1271948651.35295") :outer("10_1271948651.35295")
 .annotate "line", 6
-    .const 'Sub' $P187 = "20_1271336381.18625" 
+    .const 'Sub' $P187 = "20_1271948651.35295" 
     capture_lex $P187
-    .const 'Sub' $P152 = "18_1271336381.18625" 
+    .const 'Sub' $P152 = "18_1271948651.35295" 
     capture_lex $P152
-    .const 'Sub' $P137 = "17_1271336381.18625" 
+    .const 'Sub' $P137 = "17_1271948651.35295" 
     capture_lex $P137
-    .const 'Sub' $P121 = "16_1271336381.18625" 
+    .const 'Sub' $P121 = "16_1271948651.35295" 
     capture_lex $P121
-    .const 'Sub' $P32 = "13_1271336381.18625" 
+    .const 'Sub' $P32 = "13_1271948651.35295" 
     capture_lex $P32
-    .const 'Sub' $P15 = "12_1271336381.18625" 
+    .const 'Sub' $P15 = "12_1271948651.35295" 
     capture_lex $P15
 .annotate "line", 14
-    .const 'Sub' $P15 = "12_1271336381.18625" 
+    .const 'Sub' $P15 = "12_1271948651.35295" 
     capture_lex $P15
     .lex "value_type", $P15
 .annotate "line", 10
     find_lex $P31, "value_type"
 .annotate "line", 69
-    .const 'Sub' $P187 = "20_1271336381.18625" 
+    .const 'Sub' $P187 = "20_1271948651.35295" 
     capture_lex $P187
 .annotate "line", 6
     .return ($P187)
@@ -6582,7 +6486,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post26") :outer("11_1271336381.18625")
+.sub "" :load :init :subid("post26") :outer("11_1271948651.35295")
 .annotate "line", 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -6594,7 +6498,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "value_type"  :subid("12_1271336381.18625") :outer("11_1271336381.18625")
+.sub "value_type"  :subid("12_1271948651.35295") :outer("11_1271948651.35295")
     .param pmc param_18
 .annotate "line", 14
     new $P17, 'ExceptionHandler'
@@ -6638,15 +6542,15 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_exports"  :subid("13_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "get_exports"  :subid("13_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_35
     .param pmc param_38 :slurpy
     .param pmc param_36 :optional :named("tagset")
     .param int has_param_36 :opt_flag
 .annotate "line", 20
-    .const 'Sub' $P104 = "15_1271336381.18625" 
+    .const 'Sub' $P104 = "15_1271948651.35295" 
     capture_lex $P104
-    .const 'Sub' $P83 = "14_1271336381.18625" 
+    .const 'Sub' $P83 = "14_1271948651.35295" 
     capture_lex $P83
     new $P34, 'ExceptionHandler'
     set_addr $P34, control_33
@@ -6752,7 +6656,7 @@
     unless $P99, loop116_done
     shift $P102, $P99
   loop116_redo:
-    .const 'Sub' $P104 = "15_1271336381.18625" 
+    .const 'Sub' $P104 = "15_1271948651.35295" 
     capture_lex $P104
     $P104($P102)
   loop116_next:
@@ -6782,7 +6686,7 @@
     unless $P78, loop96_done
     shift $P81, $P78
   loop96_redo:
-    .const 'Sub' $P83 = "14_1271336381.18625" 
+    .const 'Sub' $P83 = "14_1271948651.35295" 
     capture_lex $P83
     $P83($P81)
   loop96_next:
@@ -6810,7 +6714,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block103"  :anon :subid("15_1271336381.18625") :outer("13_1271336381.18625")
+.sub "_block103"  :anon :subid("15_1271948651.35295") :outer("13_1271948651.35295")
     .param pmc param_106
 .annotate "line", 40
     new $P105, "Undef"
@@ -6842,7 +6746,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block82"  :anon :subid("14_1271336381.18625") :outer("13_1271336381.18625")
+.sub "_block82"  :anon :subid("14_1271948651.35295") :outer("13_1271948651.35295")
     .param pmc param_85
 .annotate "line", 34
     new $P84, "Undef"
@@ -6881,7 +6785,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_module"  :subid("16_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "get_module"  :subid("16_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_124
 .annotate "line", 47
     new $P123, 'ExceptionHandler'
@@ -6921,7 +6825,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "language"  :subid("17_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "language"  :subid("17_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_140 :optional
     .param int has_param_140 :opt_flag
 .annotate "line", 53
@@ -6965,10 +6869,10 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "load_module"  :subid("18_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "load_module"  :subid("18_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_155
 .annotate "line", 61
-    .const 'Sub' $P165 = "19_1271336381.18625" 
+    .const 'Sub' $P165 = "19_1271948651.35295" 
     capture_lex $P165
     new $P154, 'ExceptionHandler'
     set_addr $P154, control_153
@@ -6995,7 +6899,7 @@
     assign $P163, 0
     store_lex "$loaded", $P163
 .annotate "line", 64
-    .const 'Sub' $P165 = "19_1271336381.18625" 
+    .const 'Sub' $P165 = "19_1271948651.35295" 
     capture_lex $P165
     $P165()
 .annotate "line", 65
@@ -7024,7 +6928,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block164"  :anon :subid("19_1271336381.18625") :outer("18_1271336381.18625")
+.sub "_block164"  :anon :subid("19_1271948651.35295") :outer("18_1271948651.35295")
 .annotate "line", 64
     new $P172, 'ExceptionHandler'
     set_addr $P172, control_171
@@ -7057,11 +6961,11 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "import"  :subid("20_1271336381.18625") :method :outer("11_1271336381.18625")
+.sub "import"  :subid("20_1271948651.35295") :method :outer("11_1271948651.35295")
     .param pmc param_190
     .param pmc param_191
 .annotate "line", 69
-    .const 'Sub' $P197 = "21_1271336381.18625" 
+    .const 'Sub' $P197 = "21_1271948651.35295" 
     capture_lex $P197
     new $P189, 'ExceptionHandler'
     set_addr $P189, control_188
@@ -7083,7 +6987,7 @@
     unless $P192, loop278_done
     shift $P195, $P192
   loop278_redo:
-    .const 'Sub' $P197 = "21_1271336381.18625" 
+    .const 'Sub' $P197 = "21_1271948651.35295" 
     capture_lex $P197
     $P197($P195)
   loop278_next:
@@ -7108,14 +7012,14 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block196"  :anon :subid("21_1271336381.18625") :outer("20_1271336381.18625")
+.sub "_block196"  :anon :subid("21_1271948651.35295") :outer("20_1271948651.35295")
     .param pmc param_200
 .annotate "line", 70
-    .const 'Sub' $P267 = "24_1271336381.18625" 
+    .const 'Sub' $P267 = "24_1271948651.35295" 
     capture_lex $P267
-    .const 'Sub' $P247 = "23_1271336381.18625" 
+    .const 'Sub' $P247 = "23_1271948651.35295" 
     capture_lex $P247
-    .const 'Sub' $P218 = "22_1271336381.18625" 
+    .const 'Sub' $P218 = "22_1271948651.35295" 
     capture_lex $P218
 .annotate "line", 71
     new $P198, "Undef"
@@ -7163,7 +7067,7 @@
     unless $P262, loop275_done
     shift $P265, $P262
   loop275_redo:
-    .const 'Sub' $P267 = "24_1271336381.18625" 
+    .const 'Sub' $P267 = "24_1271948651.35295" 
     capture_lex $P267
     $P267($P265)
   loop275_next:
@@ -7195,7 +7099,7 @@
     unless $P242, loop259_done
     shift $P245, $P242
   loop259_redo:
-    .const 'Sub' $P247 = "23_1271336381.18625" 
+    .const 'Sub' $P247 = "23_1271948651.35295" 
     capture_lex $P247
     $P247($P245)
   loop259_next:
@@ -7229,7 +7133,7 @@
     unless $P213, loop231_done
     shift $P216, $P213
   loop231_redo:
-    .const 'Sub' $P218 = "22_1271336381.18625" 
+    .const 'Sub' $P218 = "22_1271948651.35295" 
     capture_lex $P218
     $P218($P216)
   loop231_next:
@@ -7252,7 +7156,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block266"  :anon :subid("24_1271336381.18625") :outer("21_1271336381.18625")
+.sub "_block266"  :anon :subid("24_1271948651.35295") :outer("21_1271948651.35295")
     .param pmc param_268
 .annotate "line", 80
     .lex "$_", param_268
@@ -7272,7 +7176,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block246"  :anon :subid("23_1271336381.18625") :outer("21_1271336381.18625")
+.sub "_block246"  :anon :subid("23_1271948651.35295") :outer("21_1271948651.35295")
     .param pmc param_248
 .annotate "line", 77
     .lex "$_", param_248
@@ -7292,7 +7196,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block217"  :anon :subid("22_1271336381.18625") :outer("21_1271336381.18625")
+.sub "_block217"  :anon :subid("22_1271948651.35295") :outer("21_1271948651.35295")
     .param pmc param_219
 .annotate "line", 74
     .lex "$_", param_219

Modified: branches/compact_pool_revamp/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/compact_pool_revamp/ext/nqp-rx/src/stage0/NQP-s0.pir	Mon Apr 26 05:47:48 2010	(r46021)
+++ branches/compact_pool_revamp/ext/nqp-rx/src/stage0/NQP-s0.pir	Mon Apr 26 06:15:29 2010	(r46022)
@@ -15,387 +15,389 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271336396.90314")
+.sub "_block11"  :anon :subid("10_1271948667.92136")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
-    $P1299 = $P14()
+    $P1304 = $P14()
 .annotate "line", 1
-    .return ($P1299)
+    .return ($P1304)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post331") :outer("10_1271336396.90314")
+.sub "" :load :init :subid("post333") :outer("10_1271948667.92136")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271336396.90314" 
+    .const 'Sub' $P12 = "10_1271948667.92136" 
     .local pmc block
     set block, $P12
-    $P1300 = get_root_global ["parrot"], "P6metaclass"
-    $P1300."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
+    $P1305 = get_root_global ["parrot"], "P6metaclass"
+    $P1305."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1271336396.90314") :outer("10_1271336396.90314")
+.sub "_block13"  :subid("11_1271948667.92136") :outer("10_1271948667.92136")
 .annotate "line", 4
-    get_hll_global $P1243, ["NQP";"Regex"], "_block1242" 
-    capture_lex $P1243
-    .const 'Sub' $P1229 = "317_1271336396.90314" 
-    capture_lex $P1229
-    .const 'Sub' $P1223 = "315_1271336396.90314" 
-    capture_lex $P1223
-    .const 'Sub' $P1217 = "313_1271336396.90314" 
-    capture_lex $P1217
-    .const 'Sub' $P1210 = "311_1271336396.90314" 
-    capture_lex $P1210
-    .const 'Sub' $P1203 = "309_1271336396.90314" 
-    capture_lex $P1203
-    .const 'Sub' $P1196 = "307_1271336396.90314" 
-    capture_lex $P1196
-    .const 'Sub' $P1189 = "305_1271336396.90314" 
-    capture_lex $P1189
-    .const 'Sub' $P1183 = "303_1271336396.90314" 
-    capture_lex $P1183
-    .const 'Sub' $P1176 = "301_1271336396.90314" 
-    capture_lex $P1176
-    .const 'Sub' $P1169 = "299_1271336396.90314" 
-    capture_lex $P1169
-    .const 'Sub' $P1162 = "297_1271336396.90314" 
-    capture_lex $P1162
-    .const 'Sub' $P1155 = "295_1271336396.90314" 
-    capture_lex $P1155
-    .const 'Sub' $P1148 = "293_1271336396.90314" 
-    capture_lex $P1148
-    .const 'Sub' $P1141 = "291_1271336396.90314" 
-    capture_lex $P1141
-    .const 'Sub' $P1134 = "289_1271336396.90314" 
-    capture_lex $P1134
-    .const 'Sub' $P1127 = "287_1271336396.90314" 
-    capture_lex $P1127
-    .const 'Sub' $P1120 = "285_1271336396.90314" 
-    capture_lex $P1120
-    .const 'Sub' $P1113 = "283_1271336396.90314" 
-    capture_lex $P1113
-    .const 'Sub' $P1106 = "281_1271336396.90314" 
-    capture_lex $P1106
-    .const 'Sub' $P1099 = "279_1271336396.90314" 
-    capture_lex $P1099
-    .const 'Sub' $P1092 = "277_1271336396.90314" 
-    capture_lex $P1092
-    .const 'Sub' $P1085 = "275_1271336396.90314" 
-    capture_lex $P1085
-    .const 'Sub' $P1078 = "273_1271336396.90314" 
-    capture_lex $P1078
-    .const 'Sub' $P1071 = "271_1271336396.90314" 
-    capture_lex $P1071
-    .const 'Sub' $P1064 = "269_1271336396.90314" 
-    capture_lex $P1064
-    .const 'Sub' $P1057 = "267_1271336396.90314" 
-    capture_lex $P1057
-    .const 'Sub' $P1050 = "265_1271336396.90314" 
-    capture_lex $P1050
-    .const 'Sub' $P1043 = "263_1271336396.90314" 
-    capture_lex $P1043
-    .const 'Sub' $P1036 = "261_1271336396.90314" 
-    capture_lex $P1036
-    .const 'Sub' $P1029 = "259_1271336396.90314" 
-    capture_lex $P1029
-    .const 'Sub' $P1022 = "257_1271336396.90314" 
-    capture_lex $P1022
-    .const 'Sub' $P1015 = "255_1271336396.90314" 
-    capture_lex $P1015
-    .const 'Sub' $P1008 = "253_1271336396.90314" 
-    capture_lex $P1008
-    .const 'Sub' $P1001 = "251_1271336396.90314" 
-    capture_lex $P1001
-    .const 'Sub' $P995 = "249_1271336396.90314" 
-    capture_lex $P995
-    .const 'Sub' $P988 = "247_1271336396.90314" 
-    capture_lex $P988
-    .const 'Sub' $P981 = "245_1271336396.90314" 
-    capture_lex $P981
-    .const 'Sub' $P974 = "243_1271336396.90314" 
-    capture_lex $P974
-    .const 'Sub' $P967 = "241_1271336396.90314" 
-    capture_lex $P967
-    .const 'Sub' $P960 = "239_1271336396.90314" 
-    capture_lex $P960
-    .const 'Sub' $P953 = "237_1271336396.90314" 
-    capture_lex $P953
-    .const 'Sub' $P946 = "235_1271336396.90314" 
-    capture_lex $P946
-    .const 'Sub' $P940 = "233_1271336396.90314" 
-    capture_lex $P940
-    .const 'Sub' $P934 = "231_1271336396.90314" 
+    get_hll_global $P1248, ["NQP";"Regex"], "_block1247" 
+    capture_lex $P1248
+    .const 'Sub' $P1234 = "319_1271948667.92136" 
+    capture_lex $P1234
+    .const 'Sub' $P1228 = "317_1271948667.92136" 
+    capture_lex $P1228
+    .const 'Sub' $P1222 = "315_1271948667.92136" 
+    capture_lex $P1222
+    .const 'Sub' $P1215 = "313_1271948667.92136" 
+    capture_lex $P1215
+    .const 'Sub' $P1208 = "311_1271948667.92136" 
+    capture_lex $P1208
+    .const 'Sub' $P1201 = "309_1271948667.92136" 
+    capture_lex $P1201
+    .const 'Sub' $P1194 = "307_1271948667.92136" 
+    capture_lex $P1194
+    .const 'Sub' $P1188 = "305_1271948667.92136" 
+    capture_lex $P1188
+    .const 'Sub' $P1181 = "303_1271948667.92136" 
+    capture_lex $P1181
+    .const 'Sub' $P1174 = "301_1271948667.92136" 
+    capture_lex $P1174
+    .const 'Sub' $P1167 = "299_1271948667.92136" 
+    capture_lex $P1167
+    .const 'Sub' $P1160 = "297_1271948667.92136" 
+    capture_lex $P1160
+    .const 'Sub' $P1153 = "295_1271948667.92136" 
+    capture_lex $P1153
+    .const 'Sub' $P1146 = "293_1271948667.92136" 
+    capture_lex $P1146
+    .const 'Sub' $P1139 = "291_1271948667.92136" 
+    capture_lex $P1139
+    .const 'Sub' $P1132 = "289_1271948667.92136" 
+    capture_lex $P1132
+    .const 'Sub' $P1125 = "287_1271948667.92136" 
+    capture_lex $P1125
+    .const 'Sub' $P1118 = "285_1271948667.92136" 
+    capture_lex $P1118
+    .const 'Sub' $P1111 = "283_1271948667.92136" 
+    capture_lex $P1111
+    .const 'Sub' $P1104 = "281_1271948667.92136" 
+    capture_lex $P1104
+    .const 'Sub' $P1097 = "279_1271948667.92136" 
+    capture_lex $P1097
+    .const 'Sub' $P1090 = "277_1271948667.92136" 
+    capture_lex $P1090
+    .const 'Sub' $P1083 = "275_1271948667.92136" 
+    capture_lex $P1083
+    .const 'Sub' $P1076 = "273_1271948667.92136" 
+    capture_lex $P1076
+    .const 'Sub' $P1069 = "271_1271948667.92136" 
+    capture_lex $P1069
+    .const 'Sub' $P1062 = "269_1271948667.92136" 
+    capture_lex $P1062
+    .const 'Sub' $P1055 = "267_1271948667.92136" 
+    capture_lex $P1055
+    .const 'Sub' $P1048 = "265_1271948667.92136" 
+    capture_lex $P1048
+    .const 'Sub' $P1041 = "263_1271948667.92136" 
+    capture_lex $P1041
+    .const 'Sub' $P1034 = "261_1271948667.92136" 
+    capture_lex $P1034
+    .const 'Sub' $P1027 = "259_1271948667.92136" 
+    capture_lex $P1027
+    .const 'Sub' $P1020 = "257_1271948667.92136" 
+    capture_lex $P1020
+    .const 'Sub' $P1013 = "255_1271948667.92136" 
+    capture_lex $P1013
+    .const 'Sub' $P1006 = "253_1271948667.92136" 
+    capture_lex $P1006
+    .const 'Sub' $P1000 = "251_1271948667.92136" 
+    capture_lex $P1000
+    .const 'Sub' $P993 = "249_1271948667.92136" 
+    capture_lex $P993
+    .const 'Sub' $P986 = "247_1271948667.92136" 
+    capture_lex $P986
+    .const 'Sub' $P979 = "245_1271948667.92136" 
+    capture_lex $P979
+    .const 'Sub' $P972 = "243_1271948667.92136" 
+    capture_lex $P972
+    .const 'Sub' $P965 = "241_1271948667.92136" 
+    capture_lex $P965
+    .const 'Sub' $P958 = "239_1271948667.92136" 
+    capture_lex $P958
+    .const 'Sub' $P951 = "237_1271948667.92136" 
+    capture_lex $P951
+    .const 'Sub' $P945 = "235_1271948667.92136" 
+    capture_lex $P945
+    .const 'Sub' $P939 = "233_1271948667.92136" 
+    capture_lex $P939
+    .const 'Sub' $P934 = "231_1271948667.92136" 
     capture_lex $P934
-    .const 'Sub' $P929 = "229_1271336396.90314" 
-    capture_lex $P929
-    .const 'Sub' $P923 = "227_1271336396.90314" 
-    capture_lex $P923
-    .const 'Sub' $P917 = "225_1271336396.90314" 
+    .const 'Sub' $P928 = "229_1271948667.92136" 
+    capture_lex $P928
+    .const 'Sub' $P922 = "227_1271948667.92136" 
+    capture_lex $P922
+    .const 'Sub' $P917 = "225_1271948667.92136" 
     capture_lex $P917
-    .const 'Sub' $P912 = "223_1271336396.90314" 
+    .const 'Sub' $P912 = "223_1271948667.92136" 
     capture_lex $P912
-    .const 'Sub' $P907 = "221_1271336396.90314" 
-    capture_lex $P907
-    .const 'Sub' $P900 = "219_1271336396.90314" 
-    capture_lex $P900
-    .const 'Sub' $P892 = "217_1271336396.90314" 
+    .const 'Sub' $P905 = "221_1271948667.92136" 
+    capture_lex $P905
+    .const 'Sub' $P897 = "219_1271948667.92136" 
+    capture_lex $P897
+    .const 'Sub' $P892 = "217_1271948667.92136" 
     capture_lex $P892
-    .const 'Sub' $P887 = "215_1271336396.90314" 
+    .const 'Sub' $P887 = "215_1271948667.92136" 
     capture_lex $P887
-    .const 'Sub' $P882 = "213_1271336396.90314" 
+    .const 'Sub' $P882 = "213_1271948667.92136" 
     capture_lex $P882
-    .const 'Sub' $P877 = "211_1271336396.90314" 
-    capture_lex $P877
-    .const 'Sub' $P869 = "209_1271336396.90314" 
-    capture_lex $P869
-    .const 'Sub' $P861 = "207_1271336396.90314" 
+    .const 'Sub' $P874 = "211_1271948667.92136" 
+    capture_lex $P874
+    .const 'Sub' $P866 = "209_1271948667.92136" 
+    capture_lex $P866
+    .const 'Sub' $P861 = "207_1271948667.92136" 
     capture_lex $P861
-    .const 'Sub' $P856 = "205_1271336396.90314" 
+    .const 'Sub' $P856 = "205_1271948667.92136" 
     capture_lex $P856
-    .const 'Sub' $P851 = "203_1271336396.90314" 
+    .const 'Sub' $P851 = "203_1271948667.92136" 
     capture_lex $P851
-    .const 'Sub' $P845 = "201_1271336396.90314" 
+    .const 'Sub' $P845 = "201_1271948667.92136" 
     capture_lex $P845
-    .const 'Sub' $P839 = "199_1271336396.90314" 
+    .const 'Sub' $P839 = "199_1271948667.92136" 
     capture_lex $P839
-    .const 'Sub' $P833 = "197_1271336396.90314" 
+    .const 'Sub' $P833 = "197_1271948667.92136" 
     capture_lex $P833
-    .const 'Sub' $P827 = "195_1271336396.90314" 
+    .const 'Sub' $P827 = "195_1271948667.92136" 
     capture_lex $P827
-    .const 'Sub' $P821 = "193_1271336396.90314" 
+    .const 'Sub' $P821 = "193_1271948667.92136" 
     capture_lex $P821
-    .const 'Sub' $P816 = "191_1271336396.90314" 
+    .const 'Sub' $P816 = "191_1271948667.92136" 
     capture_lex $P816
-    .const 'Sub' $P811 = "189_1271336396.90314" 
+    .const 'Sub' $P811 = "189_1271948667.92136" 
     capture_lex $P811
-    .const 'Sub' $P798 = "185_1271336396.90314" 
+    .const 'Sub' $P798 = "185_1271948667.92136" 
     capture_lex $P798
-    .const 'Sub' $P790 = "183_1271336396.90314" 
+    .const 'Sub' $P790 = "183_1271948667.92136" 
     capture_lex $P790
-    .const 'Sub' $P784 = "181_1271336396.90314" 
+    .const 'Sub' $P784 = "181_1271948667.92136" 
     capture_lex $P784
-    .const 'Sub' $P777 = "179_1271336396.90314" 
+    .const 'Sub' $P777 = "179_1271948667.92136" 
     capture_lex $P777
-    .const 'Sub' $P771 = "177_1271336396.90314" 
+    .const 'Sub' $P771 = "177_1271948667.92136" 
     capture_lex $P771
-    .const 'Sub' $P763 = "175_1271336396.90314" 
+    .const 'Sub' $P763 = "175_1271948667.92136" 
     capture_lex $P763
-    .const 'Sub' $P755 = "173_1271336396.90314" 
+    .const 'Sub' $P755 = "173_1271948667.92136" 
     capture_lex $P755
-    .const 'Sub' $P749 = "171_1271336396.90314" 
+    .const 'Sub' $P749 = "171_1271948667.92136" 
     capture_lex $P749
-    .const 'Sub' $P743 = "169_1271336396.90314" 
+    .const 'Sub' $P743 = "169_1271948667.92136" 
     capture_lex $P743
-    .const 'Sub' $P728 = "165_1271336396.90314" 
+    .const 'Sub' $P728 = "165_1271948667.92136" 
     capture_lex $P728
-    .const 'Sub' $P691 = "163_1271336396.90314" 
+    .const 'Sub' $P691 = "163_1271948667.92136" 
     capture_lex $P691
-    .const 'Sub' $P683 = "161_1271336396.90314" 
+    .const 'Sub' $P683 = "161_1271948667.92136" 
     capture_lex $P683
-    .const 'Sub' $P677 = "159_1271336396.90314" 
+    .const 'Sub' $P677 = "159_1271948667.92136" 
     capture_lex $P677
-    .const 'Sub' $P667 = "157_1271336396.90314" 
+    .const 'Sub' $P667 = "157_1271948667.92136" 
     capture_lex $P667
-    .const 'Sub' $P652 = "155_1271336396.90314" 
+    .const 'Sub' $P652 = "155_1271948667.92136" 
     capture_lex $P652
-    .const 'Sub' $P643 = "153_1271336396.90314" 
+    .const 'Sub' $P643 = "153_1271948667.92136" 
     capture_lex $P643
-    .const 'Sub' $P624 = "151_1271336396.90314" 
+    .const 'Sub' $P624 = "151_1271948667.92136" 
     capture_lex $P624
-    .const 'Sub' $P600 = "149_1271336396.90314" 
+    .const 'Sub' $P600 = "149_1271948667.92136" 
     capture_lex $P600
-    .const 'Sub' $P593 = "147_1271336396.90314" 
+    .const 'Sub' $P593 = "147_1271948667.92136" 
     capture_lex $P593
-    .const 'Sub' $P586 = "145_1271336396.90314" 
+    .const 'Sub' $P586 = "145_1271948667.92136" 
     capture_lex $P586
-    .const 'Sub' $P576 = "141_1271336396.90314" 
+    .const 'Sub' $P576 = "141_1271948667.92136" 
     capture_lex $P576
-    .const 'Sub' $P565 = "139_1271336396.90314" 
+    .const 'Sub' $P565 = "139_1271948667.92136" 
     capture_lex $P565
-    .const 'Sub' $P558 = "137_1271336396.90314" 
+    .const 'Sub' $P558 = "137_1271948667.92136" 
     capture_lex $P558
-    .const 'Sub' $P551 = "135_1271336396.90314" 
+    .const 'Sub' $P551 = "135_1271948667.92136" 
     capture_lex $P551
-    .const 'Sub' $P544 = "133_1271336396.90314" 
+    .const 'Sub' $P544 = "133_1271948667.92136" 
     capture_lex $P544
-    .const 'Sub' $P517 = "129_1271336396.90314" 
+    .const 'Sub' $P517 = "129_1271948667.92136" 
     capture_lex $P517
-    .const 'Sub' $P508 = "127_1271336396.90314" 
+    .const 'Sub' $P508 = "127_1271948667.92136" 
     capture_lex $P508
-    .const 'Sub' $P501 = "125_1271336396.90314" 
+    .const 'Sub' $P501 = "125_1271948667.92136" 
     capture_lex $P501
-    .const 'Sub' $P492 = "121_1271336396.90314" 
+    .const 'Sub' $P492 = "121_1271948667.92136" 
     capture_lex $P492
-    .const 'Sub' $P487 = "119_1271336396.90314" 
+    .const 'Sub' $P487 = "119_1271948667.92136" 
     capture_lex $P487
-    .const 'Sub' $P475 = "117_1271336396.90314" 
+    .const 'Sub' $P475 = "117_1271948667.92136" 
     capture_lex $P475
-    .const 'Sub' $P463 = "115_1271336396.90314" 
+    .const 'Sub' $P463 = "115_1271948667.92136" 
     capture_lex $P463
-    .const 'Sub' $P455 = "113_1271336396.90314" 
+    .const 'Sub' $P455 = "113_1271948667.92136" 
     capture_lex $P455
-    .const 'Sub' $P450 = "111_1271336396.90314" 
+    .const 'Sub' $P450 = "111_1271948667.92136" 
     capture_lex $P450
-    .const 'Sub' $P444 = "109_1271336396.90314" 
+    .const 'Sub' $P444 = "109_1271948667.92136" 
     capture_lex $P444
-    .const 'Sub' $P438 = "107_1271336396.90314" 
+    .const 'Sub' $P438 = "107_1271948667.92136" 
     capture_lex $P438
-    .const 'Sub' $P432 = "105_1271336396.90314" 
+    .const 'Sub' $P432 = "105_1271948667.92136" 
     capture_lex $P432
-    .const 'Sub' $P426 = "103_1271336396.90314" 
+    .const 'Sub' $P426 = "103_1271948667.92136" 
     capture_lex $P426
-    .const 'Sub' $P420 = "101_1271336396.90314" 
+    .const 'Sub' $P420 = "101_1271948667.92136" 
     capture_lex $P420
-    .const 'Sub' $P414 = "99_1271336396.90314" 
+    .const 'Sub' $P414 = "99_1271948667.92136" 
     capture_lex $P414
-    .const 'Sub' $P408 = "97_1271336396.90314" 
+    .const 'Sub' $P408 = "97_1271948667.92136" 
     capture_lex $P408
-    .const 'Sub' $P402 = "95_1271336396.90314" 
+    .const 'Sub' $P402 = "95_1271948667.92136" 
     capture_lex $P402
-    .const 'Sub' $P394 = "93_1271336396.90314" 
+    .const 'Sub' $P394 = "93_1271948667.92136" 
     capture_lex $P394
-    .const 'Sub' $P386 = "91_1271336396.90314" 
+    .const 'Sub' $P386 = "91_1271948667.92136" 
     capture_lex $P386
-    .const 'Sub' $P374 = "87_1271336396.90314" 
+    .const 'Sub' $P374 = "87_1271948667.92136" 
     capture_lex $P374
-    .const 'Sub' $P366 = "85_1271336396.90314" 
+    .const 'Sub' $P366 = "85_1271948667.92136" 
     capture_lex $P366
-    .const 'Sub' $P356 = "81_1271336396.90314" 
+    .const 'Sub' $P356 = "81_1271948667.92136" 
     capture_lex $P356
-    .const 'Sub' $P349 = "79_1271336396.90314" 
+    .const 'Sub' $P349 = "79_1271948667.92136" 
     capture_lex $P349
-    .const 'Sub' $P342 = "77_1271336396.90314" 
+    .const 'Sub' $P342 = "77_1271948667.92136" 
     capture_lex $P342
-    .const 'Sub' $P330 = "73_1271336396.90314" 
+    .const 'Sub' $P330 = "73_1271948667.92136" 
     capture_lex $P330
-    .const 'Sub' $P322 = "71_1271336396.90314" 
+    .const 'Sub' $P322 = "71_1271948667.92136" 
     capture_lex $P322
-    .const 'Sub' $P314 = "69_1271336396.90314" 
+    .const 'Sub' $P314 = "69_1271948667.92136" 
     capture_lex $P314
-    .const 'Sub' $P294 = "67_1271336396.90314" 
+    .const 'Sub' $P294 = "67_1271948667.92136" 
     capture_lex $P294
-    .const 'Sub' $P285 = "65_1271336396.90314" 
+    .const 'Sub' $P285 = "65_1271948667.92136" 
     capture_lex $P285
-    .const 'Sub' $P267 = "62_1271336396.90314" 
+    .const 'Sub' $P267 = "62_1271948667.92136" 
     capture_lex $P267
-    .const 'Sub' $P247 = "60_1271336396.90314" 
+    .const 'Sub' $P247 = "60_1271948667.92136" 
     capture_lex $P247
-    .const 'Sub' $P238 = "56_1271336396.90314" 
+    .const 'Sub' $P238 = "56_1271948667.92136" 
     capture_lex $P238
-    .const 'Sub' $P233 = "54_1271336396.90314" 
+    .const 'Sub' $P233 = "54_1271948667.92136" 
     capture_lex $P233
-    .const 'Sub' $P224 = "50_1271336396.90314" 
+    .const 'Sub' $P224 = "50_1271948667.92136" 
     capture_lex $P224
-    .const 'Sub' $P219 = "48_1271336396.90314" 
+    .const 'Sub' $P219 = "48_1271948667.92136" 
     capture_lex $P219
-    .const 'Sub' $P211 = "46_1271336396.90314" 
+    .const 'Sub' $P211 = "46_1271948667.92136" 
     capture_lex $P211
-    .const 'Sub' $P204 = "44_1271336396.90314" 
+    .const 'Sub' $P204 = "44_1271948667.92136" 
     capture_lex $P204
-    .const 'Sub' $P198 = "42_1271336396.90314" 
+    .const 'Sub' $P198 = "42_1271948667.92136" 
     capture_lex $P198
-    .const 'Sub' $P190 = "40_1271336396.90314" 
+    .const 'Sub' $P190 = "40_1271948667.92136" 
     capture_lex $P190
-    .const 'Sub' $P184 = "38_1271336396.90314" 
+    .const 'Sub' $P184 = "38_1271948667.92136" 
     capture_lex $P184
-    .const 'Sub' $P178 = "36_1271336396.90314" 
+    .const 'Sub' $P178 = "36_1271948667.92136" 
     capture_lex $P178
-    .const 'Sub' $P162 = "33_1271336396.90314" 
+    .const 'Sub' $P162 = "33_1271948667.92136" 
     capture_lex $P162
-    .const 'Sub' $P149 = "31_1271336396.90314" 
+    .const 'Sub' $P149 = "31_1271948667.92136" 
     capture_lex $P149
-    .const 'Sub' $P142 = "29_1271336396.90314" 
+    .const 'Sub' $P142 = "29_1271948667.92136" 
     capture_lex $P142
-    .const 'Sub' $P96 = "26_1271336396.90314" 
+    .const 'Sub' $P96 = "26_1271948667.92136" 
     capture_lex $P96
-    .const 'Sub' $P78 = "23_1271336396.90314" 
+    .const 'Sub' $P78 = "23_1271948667.92136" 
     capture_lex $P78
-    .const 'Sub' $P68 = "21_1271336396.90314" 
+    .const 'Sub' $P68 = "21_1271948667.92136" 
     capture_lex $P68
-    .const 'Sub' $P54 = "19_1271336396.90314" 
+    .const 'Sub' $P54 = "19_1271948667.92136" 
     capture_lex $P54
-    .const 'Sub' $P46 = "17_1271336396.90314" 
+    .const 'Sub' $P46 = "17_1271948667.92136" 
     capture_lex $P46
-    .const 'Sub' $P39 = "15_1271336396.90314" 
+    .const 'Sub' $P39 = "15_1271948667.92136" 
     capture_lex $P39
-    .const 'Sub' $P33 = "13_1271336396.90314" 
+    .const 'Sub' $P33 = "13_1271948667.92136" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1271336396.90314" 
+    .const 'Sub' $P15 = "12_1271948667.92136" 
     capture_lex $P15
-.annotate "line", 535
-    get_hll_global $P1243, ["NQP";"Regex"], "_block1242" 
-    capture_lex $P1243
-    $P1282 = $P1243()
+.annotate "line", 536
+    get_hll_global $P1248, ["NQP";"Regex"], "_block1247" 
+    capture_lex $P1248
+    $P1287 = $P1248()
 .annotate "line", 4
-    .return ($P1282)
+    .return ($P1287)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post332") :outer("11_1271336396.90314")
+.sub "" :load :init :subid("post334") :outer("11_1271948667.92136")
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
     set block, $P14
-.annotate "line", 422
-    get_hll_global $P1283, ["NQP"], "Grammar"
-    $P1283."O"(":prec<y=>, :assoc<unary>", "%methodop")
 .annotate "line", 423
-    get_hll_global $P1284, ["NQP"], "Grammar"
-    $P1284."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
+    get_hll_global $P1288, ["NQP"], "Grammar"
+    $P1288."O"(":prec<y=>, :assoc<unary>", "%methodop")
 .annotate "line", 424
-    get_hll_global $P1285, ["NQP"], "Grammar"
-    $P1285."O"(":prec<w=>, :assoc<left>", "%exponentiation")
+    get_hll_global $P1289, ["NQP"], "Grammar"
+    $P1289."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
 .annotate "line", 425
-    get_hll_global $P1286, ["NQP"], "Grammar"
-    $P1286."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
+    get_hll_global $P1290, ["NQP"], "Grammar"
+    $P1290."O"(":prec<w=>, :assoc<left>", "%exponentiation")
 .annotate "line", 426
-    get_hll_global $P1287, ["NQP"], "Grammar"
-    $P1287."O"(":prec<u=>, :assoc<left>", "%multiplicative")
+    get_hll_global $P1291, ["NQP"], "Grammar"
+    $P1291."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
 .annotate "line", 427
-    get_hll_global $P1288, ["NQP"], "Grammar"
-    $P1288."O"(":prec<t=>, :assoc<left>", "%additive")
+    get_hll_global $P1292, ["NQP"], "Grammar"
+    $P1292."O"(":prec<u=>, :assoc<left>", "%multiplicative")
 .annotate "line", 428
-    get_hll_global $P1289, ["NQP"], "Grammar"
-    $P1289."O"(":prec<r=>, :assoc<left>", "%concatenation")
+    get_hll_global $P1293, ["NQP"], "Grammar"
+    $P1293."O"(":prec<t=>, :assoc<left>", "%additive")
 .annotate "line", 429
-    get_hll_global $P1290, ["NQP"], "Grammar"
-    $P1290."O"(":prec<m=>, :assoc<left>", "%relational")
+    get_hll_global $P1294, ["NQP"], "Grammar"
+    $P1294."O"(":prec<r=>, :assoc<left>", "%concatenation")
 .annotate "line", 430
-    get_hll_global $P1291, ["NQP"], "Grammar"
-    $P1291."O"(":prec<l=>, :assoc<left>", "%tight_and")
+    get_hll_global $P1295, ["NQP"], "Grammar"
+    $P1295."O"(":prec<m=>, :assoc<left>", "%relational")
 .annotate "line", 431
-    get_hll_global $P1292, ["NQP"], "Grammar"
-    $P1292."O"(":prec<k=>, :assoc<left>", "%tight_or")
+    get_hll_global $P1296, ["NQP"], "Grammar"
+    $P1296."O"(":prec<l=>, :assoc<left>", "%tight_and")
 .annotate "line", 432
-    get_hll_global $P1293, ["NQP"], "Grammar"
-    $P1293."O"(":prec<j=>, :assoc<right>", "%conditional")
+    get_hll_global $P1297, ["NQP"], "Grammar"
+    $P1297."O"(":prec<k=>, :assoc<left>", "%tight_or")
 .annotate "line", 433
-    get_hll_global $P1294, ["NQP"], "Grammar"
-    $P1294."O"(":prec<i=>, :assoc<right>", "%assignment")
+    get_hll_global $P1298, ["NQP"], "Grammar"
+    $P1298."O"(":prec<j=>, :assoc<right>", "%conditional")
 .annotate "line", 434
-    get_hll_global $P1295, ["NQP"], "Grammar"
-    $P1295."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+    get_hll_global $P1299, ["NQP"], "Grammar"
+    $P1299."O"(":prec<i=>, :assoc<right>", "%assignment")
 .annotate "line", 435
-    get_hll_global $P1296, ["NQP"], "Grammar"
-    $P1296."O"(":prec<f=>, :assoc<list>", "%list_infix")
+    get_hll_global $P1300, ["NQP"], "Grammar"
+    $P1300."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
 .annotate "line", 436
-    get_hll_global $P1297, ["NQP"], "Grammar"
-    $P1297."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
-.annotate "line", 421
-    $P1298 = get_root_global ["parrot"], "P6metaclass"
-    $P1298."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
+    get_hll_global $P1301, ["NQP"], "Grammar"
+    $P1301."O"(":prec<f=>, :assoc<list>", "%list_infix")
+.annotate "line", 437
+    get_hll_global $P1302, ["NQP"], "Grammar"
+    $P1302."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
+.annotate "line", 422
+    $P1303 = get_root_global ["parrot"], "P6metaclass"
+    $P1303."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "TOP"  :subid("12_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "TOP"  :subid("12_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -410,55 +412,55 @@
     .lex "$*SCOPE", $P19
 .annotate "line", 4
     find_lex $P20, "%*LANG"
-    unless_null $P20, vivify_333
+    unless_null $P20, vivify_335
     get_hll_global $P20, "%LANG"
-    unless_null $P20, vivify_334
+    unless_null $P20, vivify_336
     die "Contextual %*LANG not found"
-  vivify_334:
-  vivify_333:
+  vivify_336:
+  vivify_335:
 .annotate "line", 6
     get_hll_global $P21, ["NQP"], "Regex"
     find_lex $P22, "%*LANG"
-    unless_null $P22, vivify_335
+    unless_null $P22, vivify_337
     get_hll_global $P22, "%LANG"
-    unless_null $P22, vivify_336
+    unless_null $P22, vivify_338
     die "Contextual %*LANG not found"
-  vivify_336:
+  vivify_338:
     store_lex "%*LANG", $P22
-  vivify_335:
+  vivify_337:
     set $P22["Regex"], $P21
 .annotate "line", 7
     get_hll_global $P23, ["NQP"], "RegexActions"
     find_lex $P24, "%*LANG"
-    unless_null $P24, vivify_337
+    unless_null $P24, vivify_339
     get_hll_global $P24, "%LANG"
-    unless_null $P24, vivify_338
+    unless_null $P24, vivify_340
     die "Contextual %*LANG not found"
-  vivify_338:
+  vivify_340:
     store_lex "%*LANG", $P24
-  vivify_337:
+  vivify_339:
     set $P24["Regex-actions"], $P23
 .annotate "line", 8
     get_hll_global $P25, ["NQP"], "Grammar"
     find_lex $P26, "%*LANG"
-    unless_null $P26, vivify_339
+    unless_null $P26, vivify_341
     get_hll_global $P26, "%LANG"
-    unless_null $P26, vivify_340
+    unless_null $P26, vivify_342
     die "Contextual %*LANG not found"
-  vivify_340:
+  vivify_342:
     store_lex "%*LANG", $P26
-  vivify_339:
+  vivify_341:
     set $P26["MAIN"], $P25
 .annotate "line", 9
     get_hll_global $P27, ["NQP"], "Actions"
     find_lex $P28, "%*LANG"
-    unless_null $P28, vivify_341
+    unless_null $P28, vivify_343
     get_hll_global $P28, "%LANG"
-    unless_null $P28, vivify_342
+    unless_null $P28, vivify_344
     die "Contextual %*LANG not found"
-  vivify_342:
+  vivify_344:
     store_lex "%*LANG", $P28
-  vivify_341:
+  vivify_343:
     set $P28["MAIN-actions"], $P27
 .annotate "line", 10
     new $P29, "String"
@@ -478,7 +480,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "identifier"  :subid("13_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx34_tgt
     .local int rx34_pos
@@ -536,7 +538,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1271336396.90314") :method
+.sub "!PREFIX__identifier"  :subid("14_1271948667.92136") :method
 .annotate "line", 4
     $P36 = self."!PREFIX__!subrule"("ident", "")
     new $P37, "ResizablePMCArray"
@@ -546,7 +548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "name"  :subid("15_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx40_tgt
     .local int rx40_pos
@@ -620,7 +622,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1271336396.90314") :method
+.sub "!PREFIX__name"  :subid("16_1271948667.92136") :method
 .annotate "line", 4
     new $P42, "ResizablePMCArray"
     push $P42, ""
@@ -629,7 +631,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "deflongname"  :subid("17_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx47_tgt
     .local int rx47_pos
@@ -702,7 +704,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1271336396.90314") :method
+.sub "!PREFIX__deflongname"  :subid("18_1271948667.92136") :method
 .annotate "line", 4
     $P49 = self."!PREFIX__!subrule"("identifier", "")
     new $P50, "ResizablePMCArray"
@@ -712,7 +714,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "ENDSTMT"  :subid("19_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx55_tgt
     .local int rx55_pos
@@ -844,7 +846,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1271336396.90314") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1271948667.92136") :method
 .annotate "line", 4
     new $P57, "ResizablePMCArray"
     push $P57, ""
@@ -853,7 +855,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "ws"  :subid("21_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx69_tgt
     .local int rx69_pos
@@ -979,7 +981,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1271336396.90314") :method
+.sub "!PREFIX__ws"  :subid("22_1271948667.92136") :method
 .annotate "line", 4
     new $P71, "ResizablePMCArray"
     push $P71, ""
@@ -989,9 +991,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "unv"  :subid("23_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
-    .const 'Sub' $P86 = "25_1271336396.90314" 
+    .const 'Sub' $P86 = "25_1271948667.92136" 
     capture_lex $P86
     .local string rx79_tgt
     .local int rx79_pos
@@ -1037,7 +1039,7 @@
   rxanchor84_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx79_cur."!cursor_pos"(rx79_pos)
-    .const 'Sub' $P86 = "25_1271336396.90314" 
+    .const 'Sub' $P86 = "25_1271948667.92136" 
     capture_lex $P86
     $P10 = rx79_cur."before"($P86)
     unless $P10, rx79_fail
@@ -1116,7 +1118,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1271336396.90314") :method
+.sub "!PREFIX__unv"  :subid("24_1271948667.92136") :method
 .annotate "line", 4
     new $P81, "ResizablePMCArray"
     push $P81, ""
@@ -1127,7 +1129,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block85"  :anon :subid("25_1271336396.90314") :method :outer("23_1271336396.90314")
+.sub "_block85"  :anon :subid("25_1271948667.92136") :method :outer("23_1271948667.92136")
 .annotate "line", 44
     .local string rx87_tgt
     .local int rx87_pos
@@ -1217,9 +1219,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "pod_comment"  :subid("26_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
-    .const 'Sub' $P133 = "28_1271336396.90314" 
+    .const 'Sub' $P133 = "28_1271948667.92136" 
     capture_lex $P133
     .local string rx97_tgt
     .local int rx97_pos
@@ -1675,7 +1677,7 @@
   rxanchor131_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx97_cur."!cursor_pos"(rx97_pos)
-    .const 'Sub' $P133 = "28_1271336396.90314" 
+    .const 'Sub' $P133 = "28_1271948667.92136" 
     capture_lex $P133
     $P10 = rx97_cur."before"($P133)
     unless $P10, rx97_fail
@@ -1726,7 +1728,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1271336396.90314") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1271948667.92136") :method
 .annotate "line", 4
     new $P99, "ResizablePMCArray"
     push $P99, ""
@@ -1735,7 +1737,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block132"  :anon :subid("28_1271336396.90314") :method :outer("26_1271336396.90314")
+.sub "_block132"  :anon :subid("28_1271948667.92136") :method :outer("26_1271948667.92136")
 .annotate "line", 67
     .local string rx134_tgt
     .local int rx134_pos
@@ -1854,7 +1856,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "comp_unit"  :subid("29_1271948667.92136") :method :outer("11_1271948667.92136")
 .annotate "line", 4
     .local string rx143_tgt
     .local int rx143_pos
@@ -1933,7 +1935,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1271336396.90314") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1271948667.92136") :method
 .annotate "line", 4
     $P145 = self."!PREFIX__!subrule"("", "")
     new $P146, "ResizablePMCArray"
@@ -1943,7 +1945,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1271336396.90314") :method :outer("11_1271336396.90314")
+.sub "statementlist"  :subid(&quo