[svn:parrot] r46947 - in branches/ops_massacre: . compilers/imcc compilers/opsc compilers/opsc/gen compilers/opsc/gen/Ops compilers/opsc/gen/Ops/Compiler compilers/opsc/gen/Ops/Trans compilers/opsc/src compilers/opsc/src/Ops compilers/opsc/src/Ops/Compiler compilers/opsc/src/Ops/Trans compilers/pct config/auto config/gen/makefiles docs docs/pdds docs/pdds/draft editor examples/io examples/languages/squaak/t examples/tools ext/nqp-rx/src/stage0 include/parrot lib/Parrot lib/Parrot/Harness lib/Parrot/Ops2c lib/Parrot/Test runtime/parrot/library runtime/parrot/library/HTTP runtime/parrot/library/LWP src src/dynoplibs src/gc src/interp src/ops src/packfile src/pmc src/runcore src/string t t/codingstd t/compilers/imcc/syn t/compilers/opsc t/library t/native_pbc t/op t/pmc t/src t/tools t/tools/ops2cutils t/tools/ops2cutils/testlib t/tools/ops2pm t/tools/ops2pm/samples tools/build tools/dev
plobsing at svn.parrot.org
plobsing at svn.parrot.org
Mon May 24 08:27:00 UTC 2010
Author: plobsing
Date: Mon May 24 08:26:56 2010
New Revision: 46947
URL: https://trac.parrot.org/parrot/changeset/46947
Log:
sync with trunk
Added:
branches/ops_massacre/compilers/opsc/
- copied from r46944, trunk/compilers/opsc/
branches/ops_massacre/runtime/parrot/library/LWP/ (props changed)
- copied from r46944, trunk/runtime/parrot/library/LWP/
branches/ops_massacre/t/compilers/opsc/
- copied from r46944, trunk/t/compilers/opsc/
Replaced:
branches/ops_massacre/compilers/opsc/Defines.mak
- copied unchanged from r46944, trunk/compilers/opsc/Defines.mak
branches/ops_massacre/compilers/opsc/Rules.mak
- copied unchanged from r46944, trunk/compilers/opsc/Rules.mak
branches/ops_massacre/compilers/opsc/TODO
- copied unchanged from r46944, trunk/compilers/opsc/TODO
branches/ops_massacre/compilers/opsc/gen/
- copied from r46944, trunk/compilers/opsc/gen/
branches/ops_massacre/compilers/opsc/gen/Ops/ (props changed)
- copied from r46944, trunk/compilers/opsc/gen/Ops/
branches/ops_massacre/compilers/opsc/gen/Ops/Compiler/ (props changed)
- copied from r46944, trunk/compilers/opsc/gen/Ops/Compiler/
branches/ops_massacre/compilers/opsc/gen/Ops/Compiler/IGNOREME
- copied unchanged from r46944, trunk/compilers/opsc/gen/Ops/Compiler/IGNOREME
branches/ops_massacre/compilers/opsc/gen/Ops/Trans/ (props changed)
- copied from r46944, trunk/compilers/opsc/gen/Ops/Trans/
branches/ops_massacre/compilers/opsc/gen/Ops/Trans/IGNOREME
- copied unchanged from r46944, trunk/compilers/opsc/gen/Ops/Trans/IGNOREME
branches/ops_massacre/compilers/opsc/ops2c.nqp
- copied unchanged from r46944, trunk/compilers/opsc/ops2c.nqp
branches/ops_massacre/compilers/opsc/opsc.pir
- copied unchanged from r46944, trunk/compilers/opsc/opsc.pir
branches/ops_massacre/compilers/opsc/src/
- copied from r46944, trunk/compilers/opsc/src/
branches/ops_massacre/compilers/opsc/src/Ops/
- copied from r46944, trunk/compilers/opsc/src/Ops/
branches/ops_massacre/compilers/opsc/src/Ops/Compiler/
- copied from r46944, trunk/compilers/opsc/src/Ops/Compiler/
branches/ops_massacre/compilers/opsc/src/Ops/Compiler.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Compiler.pm
branches/ops_massacre/compilers/opsc/src/Ops/Compiler/Actions.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Compiler/Actions.pm
branches/ops_massacre/compilers/opsc/src/Ops/Compiler/Grammar.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Compiler/Grammar.pm
branches/ops_massacre/compilers/opsc/src/Ops/Emitter.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Emitter.pm
branches/ops_massacre/compilers/opsc/src/Ops/File.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/File.pm
branches/ops_massacre/compilers/opsc/src/Ops/Op.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Op.pm
branches/ops_massacre/compilers/opsc/src/Ops/OpLib.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/OpLib.pm
branches/ops_massacre/compilers/opsc/src/Ops/Renumberer.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Renumberer.pm
branches/ops_massacre/compilers/opsc/src/Ops/Trans/
- copied from r46944, trunk/compilers/opsc/src/Ops/Trans/
branches/ops_massacre/compilers/opsc/src/Ops/Trans.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Trans.pm
branches/ops_massacre/compilers/opsc/src/Ops/Trans/C.pm
- copied unchanged from r46944, trunk/compilers/opsc/src/Ops/Trans/C.pm
branches/ops_massacre/compilers/opsc/src/builtins.pir
- copied unchanged from r46944, trunk/compilers/opsc/src/builtins.pir
branches/ops_massacre/runtime/parrot/library/LWP/Protocol.pir
- copied unchanged from r46944, trunk/runtime/parrot/library/LWP/Protocol.pir
branches/ops_massacre/runtime/parrot/library/LWP/UserAgent.pir
- copied unchanged from r46944, trunk/runtime/parrot/library/LWP/UserAgent.pir
branches/ops_massacre/t/compilers/opsc/01-parse.t
- copied unchanged from r46944, trunk/t/compilers/opsc/01-parse.t
branches/ops_massacre/t/compilers/opsc/02-parse-all-ops.t
- copied unchanged from r46944, trunk/t/compilers/opsc/02-parse-all-ops.t
branches/ops_massacre/t/compilers/opsc/03-past.t
- copied unchanged from r46944, trunk/t/compilers/opsc/03-past.t
branches/ops_massacre/t/compilers/opsc/04-op.t
- copied unchanged from r46944, trunk/t/compilers/opsc/04-op.t
branches/ops_massacre/t/compilers/opsc/05-oplib.t
- copied unchanged from r46944, trunk/t/compilers/opsc/05-oplib.t
branches/ops_massacre/t/compilers/opsc/06-opsfile.t
- copied unchanged from r46944, trunk/t/compilers/opsc/06-opsfile.t
branches/ops_massacre/t/compilers/opsc/07-emitter.t
- copied unchanged from r46944, trunk/t/compilers/opsc/07-emitter.t
branches/ops_massacre/t/compilers/opsc/common.pir
- copied unchanged from r46944, trunk/t/compilers/opsc/common.pir
Deleted:
branches/ops_massacre/runtime/parrot/library/LWP.pir
branches/ops_massacre/t/op/01-parse_ops.t
branches/ops_massacre/t/tools/ops2cutils/01-new.t
branches/ops_massacre/t/tools/ops2cutils/02-usage.t
branches/ops_massacre/t/tools/ops2cutils/03-print_c_header_file.t
branches/ops_massacre/t/tools/ops2cutils/04-print_c_source_top.t
branches/ops_massacre/t/tools/ops2cutils/05-print_c_source_bottom.t
branches/ops_massacre/t/tools/ops2cutils/06-dynamic.t
branches/ops_massacre/t/tools/ops2cutils/07-make_incdir.t
branches/ops_massacre/t/tools/ops2cutils/08-nolines.t
branches/ops_massacre/t/tools/ops2cutils/09-dynamic_nolines.t
branches/ops_massacre/t/tools/ops2cutils/10-print_c_source_file.t
branches/ops_massacre/t/tools/ops2cutils/testlib/GenerateCore.pm
branches/ops_massacre/t/tools/ops2pm/00-qualify.t
branches/ops_massacre/t/tools/ops2pm/01-ops2pm.t
branches/ops_massacre/t/tools/ops2pm/02-usage.t
branches/ops_massacre/t/tools/ops2pm/03-new.t
branches/ops_massacre/t/tools/ops2pm/04-prepare_ops.t
branches/ops_massacre/t/tools/ops2pm/05-renum_op_map_file.t
branches/ops_massacre/t/tools/ops2pm/06-load_op_map_files.t
branches/ops_massacre/t/tools/ops2pm/07-no_ops_skip.t
branches/ops_massacre/t/tools/ops2pm/08-sort_ops.t
branches/ops_massacre/t/tools/ops2pm/09-prepare_real_ops.t
branches/ops_massacre/t/tools/ops2pm/10-print_module.t
branches/ops_massacre/t/tools/ops2pm/11-print_h.t
branches/ops_massacre/t/tools/ops2pm/samples/bit_ops.original
branches/ops_massacre/t/tools/ops2pm/samples/bit_ops.second
branches/ops_massacre/t/tools/ops2pm/samples/core_ops.original
branches/ops_massacre/t/tools/ops2pm/samples/ops_num.original
branches/ops_massacre/t/tools/ops2pm/samples/pic_ops.original
Modified:
branches/ops_massacre/ (props changed)
branches/ops_massacre/MANIFEST
branches/ops_massacre/MANIFEST.SKIP
branches/ops_massacre/MANIFEST.generated
branches/ops_massacre/NEWS
branches/ops_massacre/PBC_COMPAT
branches/ops_massacre/compilers/imcc/debug.c
branches/ops_massacre/compilers/imcc/debug.h
branches/ops_massacre/compilers/imcc/imc.c
branches/ops_massacre/compilers/imcc/imc.h
branches/ops_massacre/compilers/imcc/imcc.l
branches/ops_massacre/compilers/imcc/imclexer.c
branches/ops_massacre/compilers/imcc/instructions.c
branches/ops_massacre/compilers/imcc/instructions.h
branches/ops_massacre/compilers/imcc/main.c
branches/ops_massacre/compilers/imcc/optimizer.c
branches/ops_massacre/compilers/imcc/parser.h
branches/ops_massacre/compilers/imcc/parser_util.c
branches/ops_massacre/compilers/imcc/pbc.c
branches/ops_massacre/compilers/pct/Rules.mak
branches/ops_massacre/config/auto/extra_nci_thunks.pm
branches/ops_massacre/config/auto/warnings.pm
branches/ops_massacre/config/gen/makefiles/root.in
branches/ops_massacre/docs/pdds/draft/pdd31_hll.pod
branches/ops_massacre/docs/pdds/pdd13_bytecode.pod
branches/ops_massacre/docs/tests.pod
branches/ops_massacre/editor/pir-mode.el
branches/ops_massacre/examples/io/get.pir
branches/ops_massacre/examples/io/post.pir
branches/ops_massacre/examples/languages/squaak/t/00-sanity.t
branches/ops_massacre/examples/tools/pbc_checker.cpp
branches/ops_massacre/ext/nqp-rx/src/stage0/ (props changed)
branches/ops_massacre/ext/nqp-rx/src/stage0/HLL-s0.pir
branches/ops_massacre/ext/nqp-rx/src/stage0/NQP-s0.pir
branches/ops_massacre/ext/nqp-rx/src/stage0/P6Regex-s0.pir
branches/ops_massacre/ext/nqp-rx/src/stage0/Regex-s0.pir
branches/ops_massacre/ext/nqp-rx/src/stage0/nqp-setting.nqp
branches/ops_massacre/include/parrot/charset.h
branches/ops_massacre/include/parrot/compiler.h
branches/ops_massacre/include/parrot/embed.h
branches/ops_massacre/include/parrot/exceptions.h
branches/ops_massacre/include/parrot/hash.h
branches/ops_massacre/include/parrot/imcc.h
branches/ops_massacre/include/parrot/interpreter.h
branches/ops_massacre/include/parrot/longopt.h
branches/ops_massacre/include/parrot/packfile.h
branches/ops_massacre/include/parrot/pmc.h
branches/ops_massacre/include/parrot/runcore_trace.h (contents, props changed)
branches/ops_massacre/include/parrot/string_funcs.h
branches/ops_massacre/lib/Parrot/Distribution.pm
branches/ops_massacre/lib/Parrot/Harness/DefaultTests.pm
branches/ops_massacre/lib/Parrot/Headerizer.pm
branches/ops_massacre/lib/Parrot/Ops2c/Utils.pm
branches/ops_massacre/lib/Parrot/Test/Pod.pm
branches/ops_massacre/runtime/parrot/library/HTTP/Message.pir
branches/ops_massacre/runtime/parrot/library/URI.pir
branches/ops_massacre/runtime/parrot/library/distutils.pir
branches/ops_massacre/src/debug.c
branches/ops_massacre/src/dynoplibs/Rules.in
branches/ops_massacre/src/embed.c
branches/ops_massacre/src/exceptions.c
branches/ops_massacre/src/gc/gc_private.h
branches/ops_massacre/src/gc/mark_sweep.c
branches/ops_massacre/src/hash.c
branches/ops_massacre/src/interp/inter_create.c (props changed)
branches/ops_massacre/src/interp/inter_misc.c
branches/ops_massacre/src/longopt.c
branches/ops_massacre/src/main.c
branches/ops_massacre/src/ops/var.ops
branches/ops_massacre/src/packfile/pf_items.c
branches/ops_massacre/src/parrot_debugger.c
branches/ops_massacre/src/pmc.c
branches/ops_massacre/src/pmc/nci.pmc
branches/ops_massacre/src/runcore/cores.c (props changed)
branches/ops_massacre/src/runcore/trace.c (contents, props changed)
branches/ops_massacre/src/string/api.c
branches/ops_massacre/src/string/charset.c
branches/ops_massacre/src/utils.c
branches/ops_massacre/t/codingstd/linelength.t
branches/ops_massacre/t/codingstd/perlcritic.t
branches/ops_massacre/t/compilers/imcc/syn/regressions.t
branches/ops_massacre/t/harness.pir
branches/ops_massacre/t/library/lwp.t
branches/ops_massacre/t/library/uri.t
branches/ops_massacre/t/native_pbc/annotations.pbc
branches/ops_massacre/t/native_pbc/integer_1.pbc
branches/ops_massacre/t/native_pbc/number_1.pbc
branches/ops_massacre/t/native_pbc/string_1.pbc
branches/ops_massacre/t/op/stringu.t
branches/ops_massacre/t/pmc/resizablestringarray.t
branches/ops_massacre/t/src/embed.t (props changed)
branches/ops_massacre/t/tools/ (props changed)
branches/ops_massacre/tools/build/headerizer.pl
branches/ops_massacre/tools/build/ops2c.pl
branches/ops_massacre/tools/dev/mk_gitignore.pl (props changed)
Modified: branches/ops_massacre/MANIFEST
==============================================================================
--- branches/ops_massacre/MANIFEST Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/MANIFEST Mon May 24 08:26:56 2010 (r46947)
@@ -1,7 +1,7 @@
# ex: set ro:
# $Id$
#
-# generated by tools/dev/mk_manifest_and_skip.pl Thu May 20 06:44:30 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sun May 23 18:01:00 2010 UT
#
# See below for documentation on the format of this file.
#
@@ -62,6 +62,24 @@
compilers/imcc/symreg.c [imcc]
compilers/imcc/symreg.h [imcc]
compilers/imcc/unit.h [imcc]
+compilers/opsc/Defines.mak [opsc]
+compilers/opsc/Rules.mak [opsc]
+compilers/opsc/TODO [opsc]
+compilers/opsc/gen/Ops/Compiler/IGNOREME [opsc]
+compilers/opsc/gen/Ops/Trans/IGNOREME [opsc]
+compilers/opsc/ops2c.nqp [opsc]
+compilers/opsc/opsc.pir [opsc]
+compilers/opsc/src/Ops/Compiler.pm [opsc]
+compilers/opsc/src/Ops/Compiler/Actions.pm [opsc]
+compilers/opsc/src/Ops/Compiler/Grammar.pm [opsc]
+compilers/opsc/src/Ops/Emitter.pm [opsc]
+compilers/opsc/src/Ops/File.pm [opsc]
+compilers/opsc/src/Ops/Op.pm [opsc]
+compilers/opsc/src/Ops/OpLib.pm [opsc]
+compilers/opsc/src/Ops/Renumberer.pm [opsc]
+compilers/opsc/src/Ops/Trans.pm [opsc]
+compilers/opsc/src/Ops/Trans/C.pm [opsc]
+compilers/opsc/src/builtins.pir [opsc]
compilers/pct/Defines.mak [pct]
compilers/pct/PCT.pir [pct]
compilers/pct/README.pod []doc
@@ -963,6 +981,9 @@
include/parrot/oo_private.h [main]include
include/parrot/op.h [main]include
include/parrot/oplib.h [main]include
+include/parrot/oplib/core_ops.h [main]include
+include/parrot/oplib/ops.h [main]include
+include/parrot/opsenum.h [main]include
include/parrot/packfile.h [main]include
include/parrot/parrot.h [main]include
include/parrot/platform_interface.h [main]include
@@ -1146,7 +1167,8 @@
runtime/parrot/library/HTTP/Message.pir [library]
runtime/parrot/library/Iter.pir [library]
runtime/parrot/library/JSON.pir [library]
-runtime/parrot/library/LWP.pir [library]
+runtime/parrot/library/LWP/Protocol.pir [library]
+runtime/parrot/library/LWP/UserAgent.pir [library]
runtime/parrot/library/MIME/Base64.pir [library]
runtime/parrot/library/Math/Rand.pir [library]
runtime/parrot/library/NCI/Utils.pir [library]
@@ -1312,6 +1334,7 @@
src/ops/bit.ops []
src/ops/cmp.ops []
src/ops/core.ops []
+src/ops/core_ops.c []
src/ops/debug.ops []
src/ops/experimental.ops []
src/ops/io.ops []
@@ -1521,6 +1544,14 @@
t/compilers/imcc/syn/symbols.t [test]
t/compilers/imcc/syn/tail.t [test]
t/compilers/imcc/syn/veracity.t [test]
+t/compilers/opsc/01-parse.t [test]
+t/compilers/opsc/02-parse-all-ops.t [test]
+t/compilers/opsc/03-past.t [test]
+t/compilers/opsc/04-op.t [test]
+t/compilers/opsc/05-oplib.t [test]
+t/compilers/opsc/06-opsfile.t [test]
+t/compilers/opsc/07-emitter.t [test]
+t/compilers/opsc/common.pir [test]
t/compilers/pct/complete_workflow.t [test]
t/compilers/pct/past.t [test]
t/compilers/pct/pct_hllcompiler.t [test]
@@ -1744,7 +1775,6 @@
t/oo/vtableoverride.t [test]
t/op/00ff-dos.t [test]
t/op/00ff-unix.t [test]
-t/op/01-parse_ops.t [test]
t/op/64bit.t [test]
t/op/annotate-old.t [test]
t/op/annotate.t [test]
@@ -2035,34 +2065,6 @@
t/tools/install/testlib/src/pmc/pmc_object.h [test]
t/tools/install/testlib/tools/build/ops2c.pl [test]
t/tools/install/testlib/vtable.dump [test]
-t/tools/ops2cutils/01-new.t [test]
-t/tools/ops2cutils/02-usage.t [test]
-t/tools/ops2cutils/03-print_c_header_file.t [test]
-t/tools/ops2cutils/04-print_c_source_top.t [test]
-t/tools/ops2cutils/05-print_c_source_bottom.t [test]
-t/tools/ops2cutils/06-dynamic.t [test]
-t/tools/ops2cutils/07-make_incdir.t [test]
-t/tools/ops2cutils/08-nolines.t [test]
-t/tools/ops2cutils/09-dynamic_nolines.t [test]
-t/tools/ops2cutils/10-print_c_source_file.t [test]
-t/tools/ops2cutils/testlib/GenerateCore.pm [test]
-t/tools/ops2pm/00-qualify.t [test]
-t/tools/ops2pm/01-ops2pm.t [test]
-t/tools/ops2pm/02-usage.t [test]
-t/tools/ops2pm/03-new.t [test]
-t/tools/ops2pm/04-prepare_ops.t [test]
-t/tools/ops2pm/05-renum_op_map_file.t [test]
-t/tools/ops2pm/06-load_op_map_files.t [test]
-t/tools/ops2pm/07-no_ops_skip.t [test]
-t/tools/ops2pm/08-sort_ops.t [test]
-t/tools/ops2pm/09-prepare_real_ops.t [test]
-t/tools/ops2pm/10-print_module.t [test]
-t/tools/ops2pm/11-print_h.t [test]
-t/tools/ops2pm/samples/bit_ops.original [test]
-t/tools/ops2pm/samples/bit_ops.second [test]
-t/tools/ops2pm/samples/core_ops.original [test]
-t/tools/ops2pm/samples/ops_num.original [test]
-t/tools/ops2pm/samples/pic_ops.original [test]
t/tools/parrot_debugger.t [test]
t/tools/pbc_disassemble.t [test]
t/tools/pbc_dump.t [test]
Modified: branches/ops_massacre/MANIFEST.SKIP
==============================================================================
--- branches/ops_massacre/MANIFEST.SKIP Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/MANIFEST.SKIP Mon May 24 08:26:56 2010 (r46947)
@@ -1,6 +1,6 @@
# ex: set ro:
# $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Mon May 17 15:32:39 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Mon May 24 03:29:34 2010 UT
#
# This file should contain a transcript of the svn:ignore properties
# of the directories in the Parrot subversion repository. (Needed for
@@ -81,6 +81,14 @@
^miniparrot/
^myconfig$
^myconfig/
+^ops2c$
+^ops2c/
+^ops2c\.c$
+^ops2c\.c/
+^ops2c\.pbc$
+^ops2c\.pbc/
+^ops2c\.pir$
+^ops2c\.pir/
^parrot$
^parrot/
^parrot-nqp$
@@ -188,6 +196,15 @@
^compilers/imcc/imcparser\.h/
^compilers/imcc/imcparser\.output$
^compilers/imcc/imcparser\.output/
+# generated from svn:ignore of 'compilers/opsc/gen/Ops/'
+^compilers/opsc/gen/Ops/.*\.pir$
+^compilers/opsc/gen/Ops/.*\.pir/
+# generated from svn:ignore of 'compilers/opsc/gen/Ops/Compiler/'
+^compilers/opsc/gen/Ops/Compiler/.*\.pir$
+^compilers/opsc/gen/Ops/Compiler/.*\.pir/
+# generated from svn:ignore of 'compilers/opsc/gen/Ops/Trans/'
+^compilers/opsc/gen/Ops/Trans/.*\.pir$
+^compilers/opsc/gen/Ops/Trans/.*\.pir/
# generated from svn:ignore of 'compilers/pct/src/PAST/'
^compilers/pct/src/PAST/.*\.pbc$
^compilers/pct/src/PAST/.*\.pbc/
@@ -428,6 +445,9 @@
# generated from svn:ignore of 'ext/Parrot-Embed/t/'
^ext/Parrot-Embed/t/.*\.pbc$
^ext/Parrot-Embed/t/.*\.pbc/
+# generated from svn:ignore of 'ext/nqp-rx/src/stage0/'
+^ext/nqp-rx/src/stage0/nqp-setting\.pir$
+^ext/nqp-rx/src/stage0/nqp-setting\.pir/
# generated from svn:ignore of 'include/parrot/'
^include/parrot/.*\.tmp$
^include/parrot/.*\.tmp/
@@ -566,6 +586,9 @@
# generated from svn:ignore of 'runtime/parrot/library/HTTP/'
^runtime/parrot/library/HTTP/.*\.pbc$
^runtime/parrot/library/HTTP/.*\.pbc/
+# generated from svn:ignore of 'runtime/parrot/library/LWP/'
+^runtime/parrot/library/LWP/.*\.pbc$
+^runtime/parrot/library/LWP/.*\.pbc/
# generated from svn:ignore of 'runtime/parrot/library/MIME/'
^runtime/parrot/library/MIME/.*\.pbc$
^runtime/parrot/library/MIME/.*\.pbc/
@@ -1046,6 +1069,8 @@
^t/tools/.*\.pbc/
^t/tools/.*\.pir$
^t/tools/.*\.pir/
+^t/tools/.*\.stdout$
+^t/tools/.*\.stdout/
^t/tools/pdb\.t\..*$
^t/tools/pdb\.t\..*/
^t/tools/pmc2c\..*\.c$
Modified: branches/ops_massacre/MANIFEST.generated
==============================================================================
--- branches/ops_massacre/MANIFEST.generated Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/MANIFEST.generated Mon May 24 08:26:56 2010 (r46947)
@@ -125,6 +125,8 @@
include/pmc/pmc_undef.h [devel]include
include/pmc/pmc_unmanagedstruct.h [devel]include
install_config.fpmc [main]lib
+installable_ops2c [main]bin
+installable_ops2c.exe [main]bin
installable_parrot [main]bin
installable_parrot-nqp [main]bin
installable_parrot-nqp.exe [main]bin
@@ -145,7 +147,6 @@
installable_pbc_to_exe [main]bin
installable_pbc_to_exe.exe [main]bin
lib/Parrot/Config/Generated.pm [devel]lib
-lib/Parrot/OpLib/core.pm [devel]lib
lib/Parrot/PMC.pm [devel]lib
lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm [devel]lib
libparrot.dll [main]bin
@@ -232,7 +233,8 @@
runtime/parrot/library/HTTP/Message.pbc [main]
runtime/parrot/library/Iter.pbc [main]
runtime/parrot/library/JSON.pbc [main]
-runtime/parrot/library/LWP.pbc [main]
+runtime/parrot/library/LWP/Protocol.pbc [main]
+runtime/parrot/library/LWP/UserAgent.pbc [main]
runtime/parrot/library/MIME/Base64.pbc [main]
runtime/parrot/library/Math/Rand.pbc [main]
runtime/parrot/library/NCI/call_toolkit_init.pbc [main]
@@ -271,7 +273,7 @@
runtime/parrot/library/TAP/Formatter.pbc [main]
runtime/parrot/library/TAP/Harness.pbc [main]
runtime/parrot/library/TAP/Parser.pbc [main]
-runtime/parrot/library/TGE.pbc [tge]
+runtime/parrot/library/TGE.pbc [main]
runtime/parrot/library/Tcl/Glob.pbc [main]
runtime/parrot/library/TclLibrary.pbc [main]
runtime/parrot/library/Test/Builder.pbc [main]
@@ -293,6 +295,7 @@
runtime/parrot/library/ncurses.pbc [main]
runtime/parrot/library/nqp-rx.pbc [nqp]
runtime/parrot/library/nqp-setting.pbc [nqp]
+runtime/parrot/library/opsc.pbc [main]
runtime/parrot/library/osutils.pbc [main]
runtime/parrot/library/parrotlib.pbc [main]
runtime/parrot/library/pcore.pbc [main]
Modified: branches/ops_massacre/NEWS
==============================================================================
--- branches/ops_massacre/NEWS Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/NEWS Mon May 24 08:26:56 2010 (r46947)
@@ -1,5 +1,9 @@
# $Id$
+New in 2.5.0
+- Platforms
+ + EPEL (Extra Packages for Enterprise Linux) packages for RHEL6.beta are available
+
New in 2.4.0
- Core
+ Various long-standing bugs in IMCC were fixed
Modified: branches/ops_massacre/PBC_COMPAT
==============================================================================
--- branches/ops_massacre/PBC_COMPAT Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/PBC_COMPAT Mon May 24 08:26:56 2010 (r46947)
@@ -27,6 +27,7 @@
# please insert tab separated entries at the top of the list
+6.17 2010.05.20 NotFound store encoding of string constants
6.16 2010.05.18 plobsing move freeze/thaw adjacent to visit
6.15 2010.05.06 bacek add StringBuilder PMC
6.14 2010.05.03 coke remove popaction, pushmark, pushaction ops.
Modified: branches/ops_massacre/compilers/imcc/debug.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/debug.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/debug.c Mon May 24 08:26:56 2010 (r46947)
@@ -39,7 +39,6 @@
*/
-PARROT_EXPORT
PARROT_DOES_NOT_RETURN
void
IMCC_fatal(PARROT_INTERP, SHIM(int code), ARGIN(const char *fmt), ...)
@@ -63,7 +62,6 @@
*/
-PARROT_EXPORT
PARROT_DOES_NOT_RETURN
void
IMCC_fataly(PARROT_INTERP, SHIM(int code), ARGIN(const char *fmt), ...)
@@ -89,7 +87,6 @@
*/
-PARROT_EXPORT
PARROT_DOES_NOT_RETURN
void
IMCC_fatal_standalone(PARROT_INTERP, int code, ARGIN(const char *fmt), ...)
@@ -114,7 +111,6 @@
*/
-PARROT_EXPORT
void
IMCC_warning(PARROT_INTERP, ARGIN(const char *fmt), ...)
{
@@ -139,7 +135,6 @@
*/
-PARROT_EXPORT
void
IMCC_info(PARROT_INTERP, int level, ARGIN(const char *fmt), ...)
{
@@ -164,7 +159,6 @@
*/
-PARROT_EXPORT
void
IMCC_debug(PARROT_INTERP, int level, ARGIN(const char *fmt), ...)
{
Modified: branches/ops_massacre/compilers/imcc/debug.h
==============================================================================
--- branches/ops_massacre/compilers/imcc/debug.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/debug.h Mon May 24 08:26:56 2010 (r46947)
@@ -27,12 +27,32 @@
/* HEADERIZER BEGIN: compilers/imcc/debug.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_EXPORT
+void dump_cfg(ARGIN(const IMC_Unit *unit))
+ __attribute__nonnull__(1);
+
+void dump_dominance_frontiers(ARGIN(const IMC_Unit *unit))
+ __attribute__nonnull__(1);
+
+void dump_dominators(ARGIN(const IMC_Unit *unit))
+ __attribute__nonnull__(1);
+
+void dump_instructions(PARROT_INTERP, ARGIN(const IMC_Unit *unit))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+void dump_labels(ARGIN(const IMC_Unit *unit))
+ __attribute__nonnull__(1);
+
+void dump_loops(ARGIN(const IMC_Unit *unit))
+ __attribute__nonnull__(1);
+
+void dump_symreg(ARGIN(const IMC_Unit *unit))
+ __attribute__nonnull__(1);
+
void IMCC_debug(PARROT_INTERP, int level, ARGIN(const char *fmt), ...)
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-PARROT_EXPORT
PARROT_DOES_NOT_RETURN
void IMCC_fatal(PARROT_INTERP,
NULLOK(int code),
@@ -41,7 +61,6 @@
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-PARROT_EXPORT
PARROT_DOES_NOT_RETURN
void IMCC_fatal_standalone(PARROT_INTERP,
int code,
@@ -50,7 +69,6 @@
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-PARROT_EXPORT
PARROT_DOES_NOT_RETURN
void IMCC_fataly(PARROT_INTERP,
NULLOK(int code),
@@ -59,38 +77,29 @@
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-PARROT_EXPORT
void IMCC_info(PARROT_INTERP, int level, ARGIN(const char *fmt), ...)
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-PARROT_EXPORT
void IMCC_warning(PARROT_INTERP, ARGIN(const char *fmt), ...)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-void dump_cfg(ARGIN(const IMC_Unit *unit))
- __attribute__nonnull__(1);
-
-void dump_dominance_frontiers(ARGIN(const IMC_Unit *unit))
- __attribute__nonnull__(1);
-
-void dump_dominators(ARGIN(const IMC_Unit *unit))
- __attribute__nonnull__(1);
-
-void dump_instructions(PARROT_INTERP, ARGIN(const IMC_Unit *unit))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-void dump_labels(ARGIN(const IMC_Unit *unit))
- __attribute__nonnull__(1);
-
-void dump_loops(ARGIN(const IMC_Unit *unit))
- __attribute__nonnull__(1);
-
-void dump_symreg(ARGIN(const IMC_Unit *unit))
- __attribute__nonnull__(1);
-
+#define ASSERT_ARGS_dump_cfg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(unit))
+#define ASSERT_ARGS_dump_dominance_frontiers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(unit))
+#define ASSERT_ARGS_dump_dominators __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(unit))
+#define ASSERT_ARGS_dump_instructions __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(unit))
+#define ASSERT_ARGS_dump_labels __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(unit))
+#define ASSERT_ARGS_dump_loops __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(unit))
+#define ASSERT_ARGS_dump_symreg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(unit))
#define ASSERT_ARGS_IMCC_debug __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(fmt))
@@ -109,21 +118,6 @@
#define ASSERT_ARGS_IMCC_warning __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(fmt))
-#define ASSERT_ARGS_dump_cfg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_dump_dominance_frontiers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_dump_dominators __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_dump_instructions __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_dump_labels __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_dump_loops __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_dump_symreg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(unit))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: compilers/imcc/debug.c */
Modified: branches/ops_massacre/compilers/imcc/imc.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/imc.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/imc.c Mon May 24 08:26:56 2010 (r46947)
@@ -63,7 +63,6 @@
*/
-PARROT_EXPORT
void
imc_compile_all_units(PARROT_INTERP)
{
@@ -113,7 +112,6 @@
*/
-PARROT_EXPORT
void
imc_compile_unit(PARROT_INTERP, ARGIN(IMC_Unit *unit))
{
@@ -136,7 +134,6 @@
*/
-PARROT_EXPORT
void
imc_cleanup(PARROT_INTERP, ARGIN_NULLOK(void *yyscanner))
{
Modified: branches/ops_massacre/compilers/imcc/imc.h
==============================================================================
--- branches/ops_massacre/compilers/imcc/imc.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/imc.h Mon May 24 08:26:56 2010 (r46947)
@@ -106,35 +106,32 @@
/* HEADERIZER BEGIN: compilers/imcc/imc.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_EXPORT
void imc_cleanup(PARROT_INTERP, ARGIN_NULLOK(void *yyscanner))
__attribute__nonnull__(1);
-PARROT_EXPORT
+void imc_close_unit(PARROT_INTERP, ARGIN_NULLOK(IMC_Unit *unit))
+ __attribute__nonnull__(1);
+
void imc_compile_all_units(PARROT_INTERP)
__attribute__nonnull__(1);
-PARROT_EXPORT
void imc_compile_unit(PARROT_INTERP, ARGIN(IMC_Unit *unit))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-void imc_close_unit(PARROT_INTERP, ARGIN_NULLOK(IMC_Unit *unit))
- __attribute__nonnull__(1);
-
PARROT_CANNOT_RETURN_NULL
IMC_Unit * imc_open_unit(PARROT_INTERP, IMC_Unit_Type t)
__attribute__nonnull__(1);
#define ASSERT_ARGS_imc_cleanup __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_imc_close_unit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_imc_compile_all_units __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_imc_compile_unit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_imc_close_unit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_imc_open_unit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -189,20 +186,6 @@
/* HEADERIZER BEGIN: compilers/imcc/parser_util.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_EXPORT
-int do_yylex_init(PARROT_INTERP, ARGOUT(yyscan_t* yyscanner))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(* yyscanner);
-
-PARROT_EXPORT
-void imcc_destroy(PARROT_INTERP)
- __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void imcc_init(PARROT_INTERP)
- __attribute__nonnull__(1);
-
PARROT_WARN_UNUSED_RESULT
int check_op(PARROT_INTERP,
ARGOUT(char *fullname),
@@ -285,6 +268,12 @@
__attribute__nonnull__(3)
FUNC_MODIFIES(*error_message);
+void imcc_destroy(PARROT_INTERP)
+ __attribute__nonnull__(1);
+
+void imcc_init(PARROT_INTERP)
+ __attribute__nonnull__(1);
+
PARROT_IGNORABLE_RESULT
int /*@alt void@*/
imcc_vfprintf(PARROT_INTERP,
@@ -346,13 +335,6 @@
FUNC_MODIFIES(*unit)
FUNC_MODIFIES(*r);
-#define ASSERT_ARGS_do_yylex_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(yyscanner))
-#define ASSERT_ARGS_imcc_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_imcc_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_check_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(fullname) \
@@ -389,6 +371,10 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(s) \
, PARROT_ASSERT_ARG(error_message))
+#define ASSERT_ARGS_imcc_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_imcc_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_imcc_vfprintf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(io) \
@@ -512,8 +498,8 @@
AsmInYield
} AsmState;
-PARROT_EXPORT void IMCC_push_parser_state(PARROT_INTERP);
-PARROT_EXPORT void IMCC_pop_parser_state(PARROT_INTERP, void *yyscanner);
+void IMCC_push_parser_state(PARROT_INTERP);
+void IMCC_pop_parser_state(PARROT_INTERP, void *yyscanner);
/* globals store the state between individual e_pbc_emit calls */
typedef struct subs_t {
@@ -545,7 +531,6 @@
} imcc_globals;
typedef struct _imc_info_t {
- void *yyscanner;
struct _imc_info_t *prev;
IMC_Unit *imc_units;
IMC_Unit *last_unit;
@@ -592,7 +577,6 @@
int error_code; /* The Error code. */
int expect_pasm;
int gc_off;
- int has_compile;
int imcc_warn;
int in_pod;
int ins_line;
@@ -656,9 +640,8 @@
#define UNSET_STATE_RUN_FROM_FILE(i) (COMPILER_STATE(i) &= ~PBC_RUN_FILE)
/* imclexer.c */
-PARROT_EXPORT FILE * imc_yyin_set(FILE *new_yyin, void *yyscanner);
-PARROT_EXPORT FILE * imc_yyin_get(void *yyscanner);
-
+FILE * imc_yyin_set(FILE *new_yyin, void *yyscanner);
+FILE * imc_yyin_get(void *yyscanner);
#endif /* PARROT_IMCC_IMC_H_GUARD */
Modified: branches/ops_massacre/compilers/imcc/imcc.l
==============================================================================
--- branches/ops_massacre/compilers/imcc/imcc.l Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/imcc.l Mon May 24 08:26:56 2010 (r46947)
@@ -41,7 +41,6 @@
#include "imc.h"
#include "parser.h"
-// typedef struct yyguts_t yyguts_t;
typedef struct parser_state_t parser_state_t;
/* parser state structure
@@ -125,7 +124,6 @@
BIN 0[bB][01]+
DOT [.]
SIGN [-+]
-BIGINT {SIGN}?{DIGITS}"L"
FLOATNUM {SIGN}?(({DIGITS}{DOT}{DIGIT}*|{DOT}{DIGITS})([eE]{SIGN}?{DIGITS})?|{DIGITS}[eE]{SIGN}?{DIGITS})
LETTERDIGIT [a-zA-Z0-9_]
LABELLETTERDIGIT([a-zA-Z0-9_@])
@@ -137,7 +135,6 @@
UNICODE {ENC}{ENC}?{DQ_STRING}
STRINGCONSTANT {SQ_STRING}|{DQ_STRING}
SQ_STRING \'[^'\n]*\'
-RANKSPEC \[[,]*\]
EOL \r?\n
WS [\t\f\r\x1a ]
SP [ ]
@@ -217,8 +214,6 @@
yy_pop_state(yyscanner);
yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest, yyscanner);
- /* not sure we need this decrement; more testing needed */
- IMCC_INFO(interp)->line--;
return STRINGC;
}
else {
@@ -542,16 +537,6 @@
<*>{BIN} DUP_AND_RET(valp, INTC);
<*>{OCT} DUP_AND_RET(valp, INTC);
-<*>{BIGINT} {
- valp->s = mem_sys_strdup(yytext);
-
- /* trailing 'L' */
- valp->s[strlen(valp->s) - 1] = '\0';
-
- /* no BIGINT native format yet */
- return STRINGC;
- }
-
<*>{STRINGCONSTANT} {
valp->s = mem_sys_strdup(yytext);
Modified: branches/ops_massacre/compilers/imcc/imclexer.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/imclexer.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/imclexer.c Mon May 24 08:26:56 2010 (r46947)
@@ -380,8 +380,8 @@
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 148
-#define YY_END_OF_BUFFER 149
+#define YY_NUM_RULES 147
+#define YY_END_OF_BUFFER 148
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -389,129 +389,127 @@
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[1095] =
+static yyconst flex_int16_t yy_accept[1088] =
{ 0,
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, 136, 135,
- 135, 136, 136, 136, 136, 134, 1, 1, 136, 147,
- 142, 138, 142, 147, 147, 147, 147, 147, 120, 120,
- 147, 145, 145, 145, 1, 1, 147, 17, 18, 17,
+ 4, 1, 148, 135, 134, 11, 134, 135, 135, 12,
+ 135, 135, 135, 135, 135, 135, 116, 135, 96, 135,
+ 120, 120, 135, 88, 135, 90, 133, 133, 133, 133,
+ 133, 133, 133, 133, 135, 135, 1, 1, 135, 134,
+ 134, 135, 135, 135, 135, 133, 1, 1, 135, 146,
+ 141, 137, 141, 146, 146, 146, 146, 146, 120, 120,
+ 146, 144, 144, 144, 1, 1, 146, 17, 18, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 1,
- 1, 17, 148, 136, 9, 9, 136, 136, 1, 5,
+ 1, 17, 147, 135, 9, 9, 135, 135, 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,
+ 6, 135, 10, 135, 135, 135, 135, 135, 120, 120,
+ 135, 135, 135, 1, 1, 135, 13, 135, 135, 135,
+ 135, 135, 120, 120, 135, 135, 135, 1, 1, 147,
+ 2, 147, 147, 147, 147, 147, 120, 120, 147, 147,
+ 147, 1, 1, 4, 3, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 1, 1, 134, 0, 11,
+ 93, 0, 124, 0, 131, 131, 131, 131, 131, 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, 15, 0, 92, 65, 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,
+ 119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 82, 89, 92,
+ 65, 91, 83, 115, 0, 133, 117, 132, 133, 75,
+ 133, 133, 133, 133, 133, 133, 105, 86, 106, 87,
+ 1, 0, 15, 0, 92, 65, 0, 134, 118, 118,
+ 118, 118, 118, 118, 0, 0, 0, 0, 1, 141,
+ 137, 141, 0, 0, 0, 145, 145, 145, 145, 144,
+ 0, 142, 144, 1, 1, 17, 18, 17, 17, 17,
17, 17, 17, 17, 17, 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,
+ 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, 1,
+ 0, 10, 0, 0, 0, 124, 0, 0, 0, 0,
+ 120, 119, 0, 0, 119, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 0, 13, 0, 0, 0,
+ 124, 0, 0, 0, 0, 120, 119, 0, 0, 119,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 0, 2, 0, 0, 0, 124, 0, 0, 0, 0,
+
+ 120, 119, 0, 0, 119, 0, 0, 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, 1, 95, 128, 129, 131, 130, 0, 118,
+ 4, 4, 4, 4, 4, 1, 95, 127, 128, 130,
+ 129, 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, 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, 108, 107, 84, 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,
+ 118, 118, 118, 118, 118, 118, 118, 103, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 108, 107, 84, 114, 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,
+ 0, 132, 133, 78, 133, 79, 80, 133, 133, 133,
+ 0, 118, 118, 0, 0, 138, 143, 140, 145, 145,
+ 145, 145, 145, 144, 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,
- 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,
+ 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,
+ 125, 0, 0, 109, 0, 126, 0, 0, 0, 74,
+ 77, 133, 133, 133, 133, 0, 140, 145, 145, 145,
+ 145, 144, 144, 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, 125,
+ 0, 0, 0, 0, 0, 126, 0, 0, 0, 0,
+ 0, 0, 119, 0, 0, 0, 0, 125, 0, 0,
+ 0, 0, 0, 126, 0, 0, 0, 0, 0, 0,
+ 119, 0, 0, 0, 0, 125, 0, 0, 0, 0,
+ 0, 126, 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, 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, 133, 133, 133, 133,
+ 14, 0, 136, 20, 145, 19, 144, 144, 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, 133, 133,
+ 81, 76, 145, 144, 144, 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, 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
-
+ 118, 118, 118, 118, 56, 118, 118, 118, 118, 0,
+ 0, 0, 0, 37, 0, 0, 0, 0, 61, 0,
+ 47, 133, 133, 139, 144, 144, 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] =
@@ -557,289 +555,289 @@
10, 10, 10, 1, 1
} ;
-static yyconst flex_int16_t yy_base[1251] =
+static yyconst flex_int16_t yy_base[1244] =
{ 0,
0, 64, 88, 70, 153, 75, 218, 82, 283, 113,
348, 117, 109, 412, 434, 121, 499, 130, 564, 135,
- 629, 140, 4665, 7097, 693, 7097, 697, 4639, 63, 7097,
- 385, 4638, 56, 4648, 58, 686, 7097, 696, 703, 60,
- 750, 780, 785, 72, 83, 124, 703, 797, 767, 825,
- 765, 759, 769, 833, 63, 766, 848, 856, 851, 422,
- 864, 862, 871, 838, 4623, 848, 803, 898, 819, 7097,
- 902, 7097, 906, 84, 898, 4570, 920, 929, 0, 935,
- 4553, 405, 951, 828, 941, 956, 909, 0, 7097, 4573,
- 689, 4563, 965, 969, 1004, 965, 4550, 1066, 1131, 991,
-
- 995, 4529, 7097, 990, 1009, 1077, 4549, 87, 1001, 0,
- 0, 791, 1032, 1066, 1180, 1003, 4547, 1242, 1307, 1013,
- 878, 426, 7097, 894, 1111, 1010, 1105, 1160, 1370, 1129,
- 959, 1432, 1497, 1057, 1098, 974, 7097, 1032, 1163, 1052,
- 1218, 1276, 1560, 1300, 1149, 1622, 1687, 1157, 1182, 1041,
- 7097, 1101, 1185, 1116, 1266, 1337, 1750, 1306, 1209, 1812,
- 1877, 1225, 1259, 0, 7097, 4567, 880, 4557, 1254, 1356,
- 1926, 1369, 4544, 1988, 2053, 1213, 1287, 1297, 1346, 7097,
- 7097, 1168, 7097, 0, 0, 1344, 1360, 1374, 1398, 7097,
- 7097, 7097, 4555, 7097, 7097, 1406, 1443, 7097, 7097, 1448,
-
- 7097, 0, 4532, 4512, 4518, 1136, 4510, 4512, 658, 4508,
- 1425, 105, 883, 922, 4514, 727, 4517, 4508, 4532, 7097,
- 1505, 1174, 1466, 7097, 1185, 0, 4503, 4513, 4502, 1179,
- 816, 1292, 685, 947, 4498, 22, 4498, 4491, 1109, 7097,
- 7097, 7097, 7097, 1252, 4526, 4525, 1406, 4540, 1525, 1533,
- 1443, 1543, 1467, 1544, 1549, 1560, 1562, 7097, 7097, 7097,
- 7097, 1593, 1290, 7097, 1300, 1366, 1382, 1513, 1449, 4492,
- 4492, 1482, 4502, 4501, 4498, 1349, 4483, 4476, 1162, 1582,
- 1616, 7097, 1639, 4512, 1630, 0, 0, 4481, 4483, 1199,
- 1321, 4523, 1638, 1515, 1661, 1665, 0, 7097, 1265, 0,
-
- 0, 4505, 1652, 1698, 1704, 4458, 4457, 1716, 1391, 1661,
- 0, 1472, 2100, 1543, 2147, 2212, 2277, 1607, 4446, 4455,
- 4454, 1744, 909, 1674, 0, 1736, 0, 1687, 1823, 1828,
- 4453, 4452, 1885, 1510, 1778, 0, 1710, 2324, 1563, 2371,
- 2436, 2501, 1753, 1536, 7097, 1597, 1799, 1856, 1601, 1612,
- 1737, 1756, 1851, 2564, 1905, 1778, 1784, 2004, 1894, 1918,
- 1652, 1954, 2608, 1964, 2655, 2720, 2785, 1805, 1862, 1681,
- 7097, 1718, 1926, 1946, 1772, 1828, 1907, 1975, 2016, 2848,
- 2026, 1960, 1981, 2070, 2013, 2082, 1858, 2091, 2892, 2037,
- 2939, 3004, 3069, 2078, 2103, 1978, 7097, 2018, 2128, 2134,
-
- 2039, 2084, 2111, 2121, 2163, 3132, 2293, 2136, 2301, 2387,
- 2172, 2174, 2123, 2305, 3176, 2194, 3223, 3288, 3353, 2200,
- 2205, 0, 7097, 1321, 0, 0, 4489, 2299, 2382, 2310,
- 4450, 4449, 2501, 2160, 2341, 0, 2314, 3400, 1735, 3447,
- 3512, 3577, 2345, 2416, 2403, 2410, 2513, 2517, 2529, 0,
- 4464, 4441, 4445, 4441, 4438, 4445, 4367, 4358, 4362, 786,
- 4353, 4361, 1051, 4369, 4353, 4359, 4360, 4352, 4364, 4348,
- 4347, 4362, 4354, 4357, 7097, 2533, 2180, 2537, 2550, 2394,
- 0, 4348, 4350, 4358, 4347, 2249, 4336, 4355, 4346, 4335,
- 4342, 4340, 4345, 4331, 4330, 4330, 4327, 4343, 4335, 4342,
-
- 1390, 4371, 7097, 7097, 4357, 7097, 1441, 4354, 2564, 2566,
- 2579, 2581, 2583, 2584, 2592, 2624, 2600, 2334, 4332, 4333,
- 4324, 4348, 7097, 2663, 0, 0, 4304, 4297, 4304, 4293,
- 2598, 2677, 4294, 4291, 2785, 2308, 2668, 2681, 2509, 3624,
- 1921, 4331, 1937, 3671, 3736, 4283, 4290, 4287, 1754, 2690,
- 4288, 4282, 2797, 2339, 2694, 2801, 2557, 3783, 2610, 3830,
- 3895, 2826, 2809, 2622, 2834, 2615, 2854, 2868, 2880, 3958,
- 2920, 2829, 2926, 4005, 4070, 2888, 2922, 2832, 2955, 2912,
- 2967, 2977, 3085, 4133, 3104, 2894, 3110, 4180, 4245, 3126,
- 3087, 2914, 3153, 3096, 3099, 3165, 3173, 4308, 3119, 2979,
-
- 3160, 4355, 4420, 3193, 4283, 4280, 3223, 2345, 2973, 3169,
- 2842, 4467, 2011, 4320, 2129, 4514, 4579, 3235, 3239, 0,
- 4277, 4276, 4274, 4266, 4282, 4276, 4280, 4277, 4268, 4264,
- 0, 4271, 4271, 4273, 4257, 4264, 4197, 4201, 4199, 4199,
- 4179, 4197, 0, 4186, 4185, 4182, 4183, 4174, 4186, 4172,
- 4171, 4175, 7097, 4183, 4174, 4177, 4166, 4178, 4170, 783,
- 4176, 4162, 4162, 4168, 4161, 4173, 2584, 7097, 0, 4203,
- 7097, 2637, 7097, 0, 4191, 4206, 2870, 3116, 3364, 3365,
- 3373, 3194, 2423, 0, 4160, 4165, 4164, 4163, 3108, 3374,
- 3245, 3251, 4162, 4161, 2794, 0, 0, 4190, 2819, 0,
-
- 0, 4644, 4193, 4709, 4149, 2558, 4128, 4126, 1733, 1818,
- 3255, 3259, 4124, 4123, 3158, 0, 4774, 4161, 4839, 4117,
- 3380, 3388, 3391, 3428, 3475, 3607, 2638, 2704, 3401, 3463,
- 3609, 3615, 2714, 2965, 4904, 3094, 4969, 4115, 3473, 3477,
- 3437, 3593, 3617, 3622, 3178, 3198, 3497, 3595, 3624, 3699,
- 3247, 3279, 5034, 3431, 5099, 4110, 3485, 3688, 3602, 3605,
- 3811, 3817, 3281, 3382, 3701, 3711, 3862, 3986, 3465, 3481,
- 5164, 3630, 5229, 4108, 3639, 3679, 4110, 4105, 2921, 0,
- 0, 4138, 3103, 0, 0, 5294, 4142, 5359, 4098, 4088,
- 4093, 0, 4086, 1855, 0, 4087, 4101, 4082, 4097, 0,
-
- 4089, 4088, 4084, 4027, 4009, 4022, 4013, 4005, 4005, 1006,
- 4017, 4015, 7097, 4018, 7097, 4013, 7097, 4015, 4012, 7097,
- 7097, 4001, 4000, 3996, 3965, 3950, 3942, 3925, 3931, 3915,
- 3923, 3906, 3842, 3976, 4148, 4016, 3800, 7097, 3487, 0,
- 0, 3834, 0, 2580, 3640, 0, 0, 5424, 1059, 7097,
- 3878, 7097, 7097, 1332, 1986, 0, 0, 5489, 1540, 3499,
- 3713, 3668, 1097, 3717, 3721, 3676, 1231, 3725, 3727, 3682,
- 1504, 0, 0, 3756, 3158, 3821, 3796, 0, 3780, 3773,
- 3767, 3764, 3757, 3689, 3680, 3662, 0, 3649, 3643, 3619,
- 3623, 0, 3580, 3582, 3566, 3569, 3530, 3468, 0, 3428,
-
- 3400, 3386, 3394, 3388, 7097, 7097, 3370, 3365, 3358, 7097,
- 3352, 3340, 7097, 3352, 3329, 3975, 4150, 3851, 3852, 3874,
- 3836, 3948, 1800, 1908, 1438, 1810, 2247, 2260, 1174, 1745,
- 1870, 2063, 2494, 2496, 2778, 2831, 3313, 3820, 3318, 3227,
- 3222, 3181, 3127, 3114, 3102, 3094, 3083, 3070, 3043, 2951,
- 2947, 0, 2936, 2919, 2926, 2868, 2816, 2797, 2770, 2652,
- 7097, 2629, 2634, 2629, 2553, 7097, 2533, 7097, 3958, 3960,
- 3882, 2382, 3857, 1295, 2643, 772, 1490, 3211, 3599, 942,
- 1965, 2950, 3091, 3458, 3588, 3841, 3990, 2518, 2475, 2462,
- 2384, 2368, 2350, 2349, 2332, 2324, 0, 2289, 0, 2268,
-
- 2265, 2236, 2164, 0, 0, 2129, 2130, 2112, 2102, 2075,
- 2051, 2025, 7097, 2027, 2018, 1972, 1947, 1709, 1986, 2898,
- 1978, 3418, 1947, 3885, 4030, 4039, 4033, 4044, 4049, 3625,
- 1931, 0, 1842, 1816, 1765, 0, 1728, 1728, 1694, 1650,
- 0, 1585, 1556, 1522, 0, 1476, 1429, 0, 7097, 1375,
- 1360, 7097, 7097, 7097, 7097, 1321, 7097, 0, 3846, 3868,
- 3969, 0, 1275, 1198, 1185, 1145, 0, 1117, 1071, 1024,
- 0, 0, 926, 0, 7097, 869, 827, 0, 752, 675,
- 0, 367, 356, 61, 0, 7097, 7097, 23, 0, 0,
- 0, 0, 0, 7097, 5554, 5560, 5570, 5578, 5589, 5593,
-
- 5601, 5608, 5619, 5630, 5641, 5652, 5659, 5670, 5681, 5692,
- 5703, 5714, 5725, 5736, 5747, 5758, 5769, 5780, 5791, 5802,
- 5813, 5824, 5835, 5846, 5857, 5868, 5874, 5884, 5890, 5896,
- 5901, 5909, 5918, 5929, 5935, 5939, 5945, 5952, 5963, 5974,
- 5985, 5996, 6007, 6018, 6029, 6040, 6051, 6062, 6073, 6084,
- 6095, 6106, 6117, 6128, 6139, 6150, 6161, 6172, 6183, 6194,
- 6205, 6211, 6216, 6222, 6231, 6242, 6253, 6260, 6268, 6279,
- 6285, 6291, 6297, 6304, 6315, 6326, 6337, 6348, 6359, 6366,
- 6377, 6388, 6399, 6410, 6421, 6432, 6443, 6454, 6465, 6476,
- 6487, 6498, 6509, 6520, 6531, 6542, 6553, 6564, 6575, 6586,
-
- 6597, 6608, 6619, 6625, 6636, 6647, 6658, 6665, 6673, 6684,
- 6690, 6696, 6703, 6714, 6725, 6736, 6747, 6758, 6765, 6776,
- 6787, 6798, 6809, 6820, 6831, 6842, 6853, 6864, 6875, 6886,
- 6897, 6908, 6919, 6930, 6941, 6952, 6963, 6974, 6985, 6996,
- 7007, 7018, 7024, 7032, 7043, 7049, 7056, 7067, 7074, 7085
+ 629, 140, 4821, 6967, 693, 6967, 697, 4795, 63, 6967,
+ 385, 4794, 56, 4806, 58, 686, 6967, 696, 703, 60,
+ 750, 778, 783, 72, 83, 124, 703, 794, 765, 823,
+ 768, 759, 831, 767, 63, 753, 846, 854, 849, 422,
+ 862, 861, 869, 845, 4793, 846, 884, 899, 798, 6967,
+ 905, 6967, 931, 84, 904, 4804, 926, 931, 0, 937,
+ 4791, 405, 949, 845, 958, 971, 881, 0, 6967, 4810,
+ 689, 4800, 967, 971, 1006, 967, 4787, 1068, 1133, 993,
+
+ 997, 4766, 6967, 992, 1011, 1079, 4786, 87, 1003, 0,
+ 0, 819, 1034, 1068, 1182, 1005, 4784, 1244, 1309, 1015,
+ 766, 426, 6967, 869, 1109, 926, 1101, 1149, 1372, 1151,
+ 1034, 1434, 1499, 1059, 1124, 976, 6967, 1012, 1174, 1099,
+ 1212, 1188, 1562, 1235, 1151, 1624, 1689, 1158, 1162, 1043,
+ 6967, 1062, 1179, 1181, 1273, 1337, 1752, 1244, 1219, 1814,
+ 1879, 1297, 1326, 0, 6967, 4804, 904, 4794, 1325, 1317,
+ 1928, 1324, 4781, 1990, 2055, 1222, 1367, 1378, 1236, 6967,
+ 6967, 909, 6967, 0, 0, 1377, 1384, 1400, 1408, 6967,
+ 6967, 6967, 4792, 6967, 6967, 1434, 1445, 6967, 6967, 1449,
+
+ 6967, 0, 4769, 4749, 4755, 767, 4743, 4745, 658, 4741,
+ 1060, 105, 743, 750, 4747, 1011, 4748, 4657, 4681, 6967,
+ 1507, 1111, 1462, 1284, 0, 4652, 4662, 4652, 1136, 877,
+ 1306, 685, 949, 4648, 22, 4648, 4641, 1400, 6967, 6967,
+ 6967, 6967, 1240, 4676, 4675, 1263, 4690, 1527, 1471, 1400,
+ 1535, 1545, 1546, 1551, 1562, 1564, 6967, 6967, 6967, 6967,
+ 1516, 1278, 6967, 1347, 1358, 1410, 1428, 1488, 4642, 4642,
+ 1331, 4652, 4651, 4648, 1420, 4633, 4630, 1230, 1530, 1609,
+ 6967, 1618, 4666, 1632, 0, 0, 4635, 4637, 1246, 1101,
+ 4678, 1640, 1536, 1641, 1663, 0, 6967, 1223, 0, 0,
+
+ 4671, 1650, 1700, 1704, 4632, 4631, 1717, 1466, 1659, 1521,
+ 2102, 1563, 2149, 2214, 2279, 1584, 4620, 4628, 4627, 1740,
+ 1113, 1598, 0, 1737, 0, 1663, 1825, 1746, 4626, 4625,
+ 1829, 1477, 1780, 1689, 2326, 1565, 2373, 2438, 2503, 1602,
+ 1553, 6967, 1614, 1724, 1738, 1654, 1673, 1781, 1800, 1895,
+ 1907, 2006, 1683, 1786, 2028, 1849, 1919, 1853, 2566, 1858,
+ 2613, 2678, 2743, 1805, 1904, 1748, 6967, 1776, 1860, 1948,
+ 1830, 1873, 1909, 1956, 1958, 2072, 2095, 1962, 1969, 2165,
+ 1966, 2019, 2084, 2806, 2017, 2853, 2918, 2983, 2040, 2080,
+ 1927, 6967, 1972, 2093, 2103, 1980, 2014, 2123, 2125, 2177,
+
+ 2295, 2307, 2167, 2317, 2389, 2173, 2187, 2303, 3046, 2327,
+ 3093, 3158, 3223, 2347, 2355, 0, 6967, 1347, 0, 0,
+ 4662, 2342, 2384, 2503, 4623, 4621, 2515, 2089, 2401, 2092,
+ 3270, 1704, 3317, 3382, 3447, 2134, 2200, 2405, 2412, 2519,
+ 2531, 2544, 0, 4632, 4612, 4616, 4612, 4607, 4606, 4531,
+ 4518, 4521, 920, 4512, 4520, 763, 4528, 4512, 4518, 4519,
+ 4511, 4523, 4507, 4506, 4521, 4513, 4516, 6967, 2552, 2159,
+ 2535, 2556, 2511, 0, 4507, 4509, 4517, 4506, 2531, 4495,
+ 4514, 4505, 4494, 4501, 4499, 4504, 4490, 4488, 4488, 4485,
+ 4501, 4493, 4500, 1393, 4524, 6967, 6967, 4510, 6967, 1410,
+
+ 4510, 2574, 2761, 2584, 2624, 2625, 2626, 2765, 2755, 2771,
+ 2543, 4486, 4475, 4397, 4423, 6967, 2635, 0, 0, 4400,
+ 4393, 4400, 4389, 2285, 2645, 4390, 4387, 2776, 2163, 2584,
+ 2624, 2631, 3494, 1569, 4427, 1790, 3541, 3606, 4379, 4386,
+ 4383, 1895, 2823, 4384, 4381, 2853, 2346, 2649, 2770, 2653,
+ 3653, 2306, 3700, 3765, 2881, 2769, 2576, 2999, 2810, 2885,
+ 3011, 3007, 3828, 3031, 2820, 3033, 3875, 3940, 3040, 2782,
+ 2837, 3109, 3060, 3121, 3131, 3066, 4003, 3074, 3001, 3253,
+ 4050, 4115, 3248, 2796, 3079, 3255, 3117, 3275, 3333, 3341,
+ 4178, 3299, 3013, 3477, 4225, 4290, 2894, 4382, 4379, 3328,
+
+ 2375, 3125, 3223, 2861, 4337, 1894, 4419, 1947, 4384, 4449,
+ 3288, 3344, 0, 4376, 4379, 4377, 4369, 4385, 4379, 4382,
+ 4379, 4370, 4366, 0, 4372, 4372, 4372, 4356, 4363, 4360,
+ 4363, 4361, 4346, 4316, 4332, 0, 4320, 4313, 4309, 4310,
+ 4301, 4242, 4228, 4227, 4231, 6967, 4238, 4229, 4232, 4221,
+ 4233, 4225, 864, 4231, 4217, 4218, 4224, 4217, 4229, 1949,
+ 6967, 0, 4259, 6967, 2046, 6967, 0, 4247, 4262, 2795,
+ 3030, 3459, 3460, 3476, 3470, 2425, 0, 4216, 4221, 4220,
+ 4218, 3099, 3288, 3348, 3356, 4217, 4216, 2293, 0, 0,
+ 4248, 2592, 0, 0, 4514, 4252, 4579, 4208, 2659, 4211,
+
+ 4210, 1293, 1682, 3469, 3475, 4209, 4207, 2884, 0, 4644,
+ 4238, 4709, 4194, 3499, 3557, 3522, 3527, 3681, 3687, 2759,
+ 2772, 3268, 3368, 3732, 3856, 2908, 3048, 4774, 3497, 4839,
+ 4168, 3566, 3571, 3673, 3676, 3862, 4031, 3054, 3123, 3559,
+ 3591, 4037, 4206, 3250, 3262, 4904, 3593, 4969, 4167, 3725,
+ 3729, 3848, 3851, 4212, 4365, 3280, 3463, 3749, 3751, 4371,
+ 4412, 3474, 3504, 5034, 3595, 5099, 4164, 3513, 3737, 4166,
+ 4159, 3015, 0, 0, 4191, 3116, 0, 0, 5164, 4195,
+ 5229, 4151, 4137, 4142, 0, 4135, 3847, 0, 4136, 4150,
+ 4131, 4146, 0, 4138, 4137, 4133, 4145, 4127, 4140, 4131,
+
+ 4055, 4055, 3674, 4066, 4064, 6967, 4067, 6967, 4062, 6967,
+ 4060, 4050, 6967, 6967, 4035, 4038, 4040, 4025, 4023, 4012,
+ 3980, 3986, 3965, 3970, 3953, 3960, 4525, 4663, 4063, 4020,
+ 6967, 3579, 0, 0, 3957, 0, 3817, 4188, 0, 0,
+ 5294, 1044, 6967, 3932, 6967, 6967, 943, 826, 0, 0,
+ 5359, 1123, 3683, 3689, 3691, 1167, 3831, 3833, 3788, 1984,
+ 3838, 3840, 3795, 2729, 0, 0, 3811, 3306, 3891, 3887,
+ 0, 3882, 3865, 3859, 3849, 3816, 3819, 3811, 3712, 0,
+ 3719, 3699, 3683, 3678, 0, 3647, 3636, 3621, 3563, 3554,
+ 3559, 0, 3531, 3507, 3491, 3463, 3453, 6967, 6967, 3417,
+
+ 3412, 3397, 6967, 3331, 3310, 6967, 3300, 3274, 4238, 4354,
+ 3896, 3897, 3912, 3993, 3996, 1697, 1960, 1061, 1492, 2000,
+ 2289, 1737, 1886, 2366, 2498, 2848, 3534, 3684, 3857, 3227,
+ 3864, 3230, 3214, 3215, 3197, 3206, 3193, 3095, 3095, 3040,
+ 3030, 2999, 2973, 2969, 0, 2951, 2850, 2840, 2818, 2781,
+ 2779, 2775, 2712, 6967, 2696, 2634, 2618, 2549, 6967, 2550,
+ 6967, 3913, 4005, 3921, 2384, 4064, 2137, 2841, 1302, 1958,
+ 3300, 3328, 1201, 1360, 1374, 1808, 2160, 2788, 3104, 3522,
+ 2538, 2517, 2496, 2469, 2459, 2376, 2367, 2342, 2326, 0,
+ 2283, 0, 2241, 2231, 2168, 2149, 0, 0, 2134, 2101,
+
+ 2089, 2086, 2031, 2031, 2012, 6967, 1945, 1869, 1840, 1809,
+ 1456, 1855, 1770, 1830, 1836, 1806, 3927, 4078, 4088, 4093,
+ 4096, 4101, 2796, 1800, 0, 1707, 1659, 1628, 0, 1583,
+ 1554, 1542, 1478, 0, 1466, 1438, 1431, 0, 1333, 1246,
+ 0, 6967, 1239, 1221, 6967, 6967, 6967, 6967, 1214, 6967,
+ 0, 3934, 4014, 4023, 0, 1144, 990, 989, 971, 0,
+ 926, 897, 860, 0, 0, 807, 0, 6967, 798, 781,
+ 0, 766, 675, 0, 367, 356, 61, 0, 6967, 6967,
+ 23, 0, 0, 0, 0, 0, 6967, 5424, 5430, 5440,
+ 5448, 5459, 5463, 5471, 5478, 5489, 5500, 5511, 5522, 5529,
+
+ 5540, 5551, 5562, 5573, 5584, 5595, 5606, 5617, 5628, 5639,
+ 5650, 5661, 5672, 5683, 5694, 5705, 5716, 5727, 5738, 5744,
+ 5754, 5760, 5766, 5771, 5779, 5788, 5799, 5805, 5809, 5815,
+ 5822, 5833, 5844, 5855, 5866, 5877, 5888, 5899, 5910, 5921,
+ 5932, 5943, 5954, 5965, 5976, 5987, 5998, 6009, 6020, 6031,
+ 6042, 6053, 6064, 6075, 6081, 6086, 6092, 6101, 6112, 6123,
+ 6130, 6138, 6149, 6155, 6161, 6167, 6174, 6185, 6196, 6207,
+ 6218, 6229, 6236, 6247, 6258, 6269, 6280, 6291, 6302, 6313,
+ 6324, 6335, 6346, 6357, 6368, 6379, 6390, 6401, 6412, 6423,
+ 6434, 6445, 6456, 6467, 6478, 6489, 6495, 6506, 6517, 6528,
+
+ 6535, 6543, 6554, 6560, 6566, 6573, 6584, 6595, 6606, 6617,
+ 6628, 6635, 6646, 6657, 6668, 6679, 6690, 6701, 6712, 6723,
+ 6734, 6745, 6756, 6767, 6778, 6789, 6800, 6811, 6822, 6833,
+ 6844, 6855, 6866, 6877, 6888, 6894, 6902, 6913, 6919, 6926,
+ 6937, 6944, 6955
} ;
-static yyconst flex_int16_t yy_def[1251] =
+static yyconst flex_int16_t yy_def[1244] =
{ 0,
- 1094, 1, 1, 3, 1094, 5, 1094, 7, 1094, 9,
- 1094, 11, 9, 9, 1094, 15, 1094, 17, 1094, 19,
- 1094, 21, 1094, 1094, 1094, 1094, 1094, 1094, 1095, 1094,
- 1096, 1094, 1094, 1097, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1098, 1098, 1098, 1098,
- 1098, 1098, 1098, 1098, 1094, 1094, 1094, 1094, 1099, 1094,
- 1094, 1094, 39, 1094, 1094, 1098, 1094, 1094, 1099, 1094,
- 1094, 1094, 1094, 1095, 1100, 1097, 1094, 1101, 41, 1094,
- 1094, 1102, 1102, 1102, 1094, 1094, 1099, 1103, 1094, 1103,
- 1104, 1105, 1103, 1103, 1103, 95, 1103, 1106, 1106, 1103,
-
- 1103, 1103, 1094, 1094, 41, 1094, 1107, 1107, 1094, 1108,
- 1108, 1109, 1108, 1108, 1108, 115, 1108, 1110, 1110, 1108,
- 1095, 1111, 1094, 1111, 1112, 1113, 1111, 1111, 1111, 129,
- 1111, 1114, 1114, 1111, 1111, 1115, 1094, 1115, 1116, 1117,
- 1115, 1115, 1115, 143, 1115, 1118, 1118, 1115, 1115, 1119,
- 1094, 1119, 1120, 1121, 1119, 1119, 1119, 157, 1119, 1122,
- 1122, 1119, 1119, 1123, 1094, 1123, 1124, 1125, 1123, 1123,
- 1123, 171, 1123, 1126, 1126, 1123, 1123, 1094, 1094, 1094,
- 1094, 1095, 1094, 1095, 1127, 1127, 1127, 1127, 1127, 1094,
- 1094, 1094, 1128, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
-
- 1094, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
- 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1130, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1131, 1132, 1133, 1132, 1132,
- 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1094, 1094, 1094,
- 1094, 1094, 1134, 1094, 1134, 1134, 1134, 1134, 1094, 1129,
- 1129, 1129, 1129, 1129, 1129, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1135, 1135, 1136, 1137, 1137, 1137, 1137,
- 1138, 1133, 1138, 1138, 1094, 1094, 1139, 1094, 1140, 1139,
-
- 1140, 1141, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1142, 1094, 1142, 1139, 1139, 1094,
- 1094, 1094, 1131, 1094, 1143, 1144, 1143, 1143, 1143, 1143,
- 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1145,
- 1094, 1145, 1143, 1146, 1094, 1146, 1147, 1147, 1146, 1147,
- 1148, 1148, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
- 1146, 1146, 1146, 1146, 1149, 1094, 1149, 1146, 1146, 1150,
- 1094, 1150, 1151, 1151, 1150, 1151, 1152, 1152, 1150, 1150,
- 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
- 1153, 1094, 1153, 1150, 1150, 1154, 1094, 1154, 1155, 1155,
-
- 1154, 1155, 1156, 1156, 1154, 1154, 1154, 1154, 1154, 1154,
- 1154, 1154, 1154, 1154, 1154, 1154, 1157, 1094, 1157, 1154,
- 1154, 1158, 1094, 1159, 1158, 1159, 1160, 1158, 1158, 1158,
- 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1161,
- 1094, 1161, 1158, 1094, 1162, 1162, 1162, 1162, 1094, 1163,
- 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
- 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
- 1163, 1163, 1163, 1163, 1094, 1094, 1094, 1094, 1094, 1094,
- 1164, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
-
- 1165, 1166, 1094, 1094, 1094, 1094, 1167, 1168, 1169, 1169,
- 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170, 1163, 1163,
- 1094, 1171, 1094, 1171, 1172, 1173, 1173, 1173, 1173, 1173,
- 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
- 1176, 1177, 1178, 1179, 1094, 1175, 1094, 1094, 1180, 1181,
- 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1183,
- 1094, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
- 1185, 1186, 1187, 1188, 1094, 1189, 1189, 1189, 1189, 1189,
- 1189, 1189, 1189, 1189, 1190, 1191, 1192, 1193, 1094, 1194,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195, 1196,
-
- 1197, 1198, 1094, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
- 1199, 1199, 1200, 1201, 1202, 1203, 1094, 1094, 1094, 1204,
- 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
- 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
- 1204, 1204, 1204, 1204, 1204, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1205, 1094, 1205, 1206,
- 1094, 1207, 1094, 1207, 1208, 1094, 1209, 1209, 1209, 1209,
- 1209, 1209, 1210, 1211, 1212, 1212, 1212, 1212, 1213, 1213,
- 1214, 1214, 1214, 1214, 1215, 1214, 1215, 1216, 1217, 1214,
-
- 1217, 1218, 1214, 1094, 704, 1214, 1094, 1094, 1219, 1219,
- 1220, 1220, 1220, 1220, 1221, 1220, 1222, 1220, 1094, 719,
- 1223, 1223, 1223, 1223, 1224, 1224, 1223, 1224, 1225, 1225,
- 1226, 1226, 1223, 1226, 1227, 1223, 1094, 737, 1228, 1228,
- 1228, 1228, 1229, 1229, 1228, 1229, 1230, 1230, 1231, 1231,
- 1228, 1231, 1232, 1228, 1094, 755, 1233, 1233, 1233, 1233,
- 1234, 1234, 1233, 1234, 1235, 1235, 1236, 1236, 1233, 1236,
- 1237, 1233, 1094, 773, 1238, 1238, 1238, 1238, 1239, 1238,
- 1239, 1240, 1241, 1238, 1241, 1242, 1238, 1094, 788, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
-
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
- 1243, 1243, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1244, 1244, 1244, 1244, 1094, 1245, 1246,
- 1246, 1246, 1246, 1247, 1247, 1248, 1248, 1094, 848, 1094,
- 1248, 1094, 1094, 1249, 1249, 1250, 1250, 1094, 858, 1223,
- 1223, 737, 737, 1228, 1228, 755, 755, 1233, 1233, 773,
- 773, 1238, 1238, 788, 788, 1243, 1243, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094,
-
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1244, 1244, 1244, 1244, 1246,
- 1247, 1247, 848, 848, 1249, 1249, 858, 858, 737, 737,
- 755, 755, 773, 773, 788, 788, 1243, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1244, 1244,
- 1094, 1247, 1247, 848, 848, 1249, 1249, 858, 858, 737,
- 737, 755, 755, 773, 773, 788, 788, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
-
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1248,
- 1248, 1250, 1250, 1223, 1223, 1228, 1228, 1233, 1233, 1238,
- 1238, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1248, 1223, 1228,
- 1233, 1238, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1094, 1094, 1094, 1243, 1243, 1243,
- 1243, 1243, 1243, 1243, 1243, 1094, 1094, 1243, 1243, 1243,
- 1243, 1243, 1243, 0, 1094, 1094, 1094, 1094, 1094, 1094,
-
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
-
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094
+ 1087, 1, 1, 3, 1087, 5, 1087, 7, 1087, 9,
+ 1087, 11, 9, 9, 1087, 15, 1087, 17, 1087, 19,
+ 1087, 21, 1087, 1087, 1087, 1087, 1087, 1087, 1088, 1087,
+ 1089, 1087, 1087, 1090, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1091, 1091, 1091, 1091,
+ 1091, 1091, 1091, 1091, 1087, 1087, 1087, 1087, 1092, 1087,
+ 1087, 1087, 39, 1087, 1087, 1091, 1087, 1087, 1092, 1087,
+ 1087, 1087, 1087, 1088, 1093, 1090, 1087, 1094, 41, 1087,
+ 1087, 1095, 1095, 1095, 1087, 1087, 1092, 1096, 1087, 1096,
+ 1097, 1098, 1096, 1096, 1096, 95, 1096, 1099, 1099, 1096,
+
+ 1096, 1096, 1087, 1087, 41, 1087, 1100, 1100, 1087, 1101,
+ 1101, 1102, 1101, 1101, 1101, 115, 1101, 1103, 1103, 1101,
+ 1088, 1104, 1087, 1104, 1105, 1106, 1104, 1104, 1104, 129,
+ 1104, 1107, 1107, 1104, 1104, 1108, 1087, 1108, 1109, 1110,
+ 1108, 1108, 1108, 143, 1108, 1111, 1111, 1108, 1108, 1112,
+ 1087, 1112, 1113, 1114, 1112, 1112, 1112, 157, 1112, 1115,
+ 1115, 1112, 1112, 1116, 1087, 1116, 1117, 1118, 1116, 1116,
+ 1116, 171, 1116, 1119, 1119, 1116, 1116, 1087, 1087, 1087,
+ 1087, 1088, 1087, 1088, 1120, 1120, 1120, 1120, 1120, 1087,
+ 1087, 1087, 1121, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+
+ 1087, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122,
+ 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1123, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1124, 1125, 1126, 1125, 1125, 1125,
+ 1125, 1125, 1125, 1125, 1125, 1125, 1087, 1087, 1087, 1087,
+ 1087, 1127, 1087, 1127, 1127, 1127, 1127, 1087, 1122, 1122,
+ 1122, 1122, 1122, 1122, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1128, 1128, 1129, 1130, 1130, 1130, 1130, 1131,
+ 1126, 1131, 1131, 1087, 1087, 1132, 1087, 1133, 1132, 1133,
+
+ 1134, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
+ 1132, 1132, 1135, 1087, 1135, 1132, 1132, 1087, 1087, 1087,
+ 1124, 1087, 1136, 1137, 1136, 1136, 1136, 1136, 1136, 1136,
+ 1136, 1136, 1136, 1136, 1136, 1136, 1138, 1087, 1138, 1136,
+ 1139, 1087, 1139, 1140, 1140, 1139, 1140, 1141, 1141, 1139,
+ 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
+ 1142, 1087, 1142, 1139, 1139, 1143, 1087, 1143, 1144, 1144,
+ 1143, 1144, 1145, 1145, 1143, 1143, 1143, 1143, 1143, 1143,
+ 1143, 1143, 1143, 1143, 1143, 1146, 1087, 1146, 1143, 1143,
+ 1147, 1087, 1147, 1148, 1148, 1147, 1148, 1149, 1149, 1147,
+
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1150, 1087, 1150, 1147, 1147, 1151, 1087, 1152, 1151, 1152,
+ 1153, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+ 1151, 1151, 1154, 1087, 1154, 1151, 1087, 1155, 1155, 1155,
+ 1155, 1087, 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, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1157, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1158, 1159, 1087, 1087, 1087, 1087, 1160,
+
+ 1161, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+ 1163, 1156, 1156, 1087, 1164, 1087, 1164, 1165, 1166, 1166,
+ 1166, 1166, 1166, 1167, 1168, 1168, 1168, 1168, 1168, 1168,
+ 1168, 1168, 1168, 1169, 1170, 1171, 1172, 1087, 1168, 1087,
+ 1087, 1173, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
+ 1174, 1175, 1176, 1087, 1177, 1177, 1177, 1177, 1177, 1177,
+ 1177, 1177, 1177, 1178, 1179, 1180, 1181, 1087, 1182, 1182,
+ 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1184, 1185,
+ 1186, 1087, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
+ 1187, 1188, 1189, 1190, 1191, 1087, 1192, 1192, 1192, 1192,
+
+ 1192, 1192, 1192, 1192, 1192, 1193, 1194, 1195, 1196, 1087,
+ 1087, 1087, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
+ 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
+ 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1198,
+ 1087, 1198, 1199, 1087, 1200, 1087, 1200, 1201, 1087, 1202,
+ 1202, 1202, 1202, 1202, 1202, 1203, 1204, 1205, 1205, 1205,
+ 1205, 1206, 1206, 1207, 1207, 1207, 1207, 1208, 1207, 1208,
+ 1209, 1210, 1207, 1210, 1211, 1207, 1087, 697, 1207, 1087,
+
+ 1087, 1212, 1212, 1213, 1213, 1213, 1213, 1214, 1213, 1215,
+ 1213, 1087, 712, 1216, 1216, 1216, 1216, 1217, 1217, 1216,
+ 1217, 1218, 1218, 1219, 1219, 1216, 1219, 1220, 1216, 1087,
+ 730, 1221, 1221, 1221, 1221, 1222, 1222, 1221, 1222, 1223,
+ 1223, 1224, 1224, 1221, 1224, 1225, 1221, 1087, 748, 1226,
+ 1226, 1226, 1226, 1227, 1227, 1226, 1227, 1228, 1228, 1229,
+ 1229, 1226, 1229, 1230, 1226, 1087, 766, 1231, 1231, 1231,
+ 1231, 1232, 1231, 1232, 1233, 1234, 1231, 1234, 1235, 1231,
+ 1087, 781, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+
+ 1236, 1236, 1236, 1236, 1236, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1237, 1237, 1237, 1237,
+ 1087, 1238, 1239, 1239, 1239, 1239, 1240, 1240, 1241, 1241,
+ 1087, 841, 1087, 1241, 1087, 1087, 1242, 1242, 1243, 1243,
+ 1087, 851, 1216, 1216, 730, 730, 1221, 1221, 748, 748,
+ 1226, 1226, 766, 766, 1231, 1231, 781, 781, 1236, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1237, 1237,
+ 1237, 1237, 1239, 1240, 1240, 841, 841, 1242, 1242, 851,
+ 851, 730, 730, 748, 748, 766, 766, 781, 781, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1237, 1237, 1087, 1240, 1240, 841, 841, 1242, 1242,
+ 851, 851, 730, 730, 748, 748, 766, 766, 781, 781,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+
+ 1236, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1241, 1241, 1243, 1243, 1216, 1216, 1221, 1221,
+ 1226, 1226, 1231, 1231, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1241, 1216, 1221, 1226, 1231, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1087, 1087, 1087,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1087, 1087,
+ 1236, 1236, 1236, 1236, 1236, 1236, 0, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087
} ;
-static yyconst flex_int16_t yy_nxt[7163] =
+static yyconst flex_int16_t yy_nxt[7033] =
{ 0,
24, 25, 26, 27, 25, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
@@ -848,16 +846,16 @@
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, 57, 191, 58, 57, 183,
- 194, 67, 497, 68, 67, 1093, 85, 219, 86, 85,
- 192, 498, 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, 292,
- 64, 65, 24, 24, 109, 121, 109, 109, 120, 1092,
- 120, 120, 134, 184, 135, 134, 259, 41, 42, 42,
- 42, 148, 323, 149, 148, 47, 162, 47, 163, 162,
- 47, 176, 47, 177, 176, 66, 464, 47, 243, 244,
- 465, 24, 24, 70, 71, 72, 73, 71, 70, 74,
+ 194, 67, 490, 68, 67, 1086, 85, 219, 86, 85,
+ 192, 491, 195, 100, 220, 101, 100, 257, 59, 60,
+ 183, 61, 60, 24, 69, 238, 239, 24, 24, 87,
+
+ 24, 62, 184, 62, 63, 24, 102, 240, 241, 291,
+ 64, 65, 24, 24, 109, 121, 109, 109, 120, 1085,
+ 120, 120, 134, 184, 135, 134, 258, 41, 42, 42,
+ 42, 148, 321, 149, 148, 47, 162, 47, 163, 162,
+ 47, 176, 47, 177, 176, 66, 457, 47, 242, 243,
+ 458, 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,
@@ -886,8 +884,8 @@
118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
118, 118, 118, 118, 118, 119, 118, 118, 118, 118,
- 118, 110, 110, 109, 1091, 109, 109, 186, 121, 187,
- 246, 188, 189, 269, 1090, 269, 269, 292, 345, 346,
+ 118, 110, 110, 109, 1084, 109, 109, 186, 121, 187,
+ 245, 188, 189, 268, 1083, 268, 268, 291, 342, 343,
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,
@@ -916,722 +914,708 @@
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, 300, 178, 178, 178, 180,
+ 174, 174, 164, 164, 178, 299, 178, 178, 178, 180,
- 178, 178, 196, 458, 197, 197, 197, 197, 459, 179,
- 198, 245, 196, 179, 197, 197, 197, 197, 246, 1089,
- 199, 200, 200, 200, 200, 248, 492, 201, 301, 202,
+ 178, 178, 196, 451, 197, 197, 197, 197, 452, 179,
+ 198, 244, 196, 179, 197, 197, 197, 197, 245, 1082,
+ 199, 200, 200, 200, 200, 247, 485, 201, 300, 202,
202, 202, 202, 202, 203, 202, 202, 202, 202, 202,
- 202, 202, 493, 202, 204, 205, 206, 202, 207, 208,
+ 202, 202, 486, 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, 471, 245, 246, 245, 1018, 245, 222, 223,
- 246, 248, 246, 224, 246, 225, 472, 248, 226, 248,
- 260, 248, 222, 325, 292, 223, 221, 193, 197, 197,
-
- 197, 197, 327, 225, 280, 245, 280, 280, 1088, 223,
- 254, 226, 246, 224, 255, 249, 249, 249, 249, 248,
- 250, 264, 265, 826, 253, 223, 227, 256, 228, 629,
- 261, 229, 827, 245, 230, 231, 232, 233, 234, 235,
- 246, 245, 236, 246, 237, 238, 630, 248, 246, 262,
- 292, 262, 262, 264, 265, 248, 245, 262, 180, 262,
- 262, 487, 268, 246, 179, 269, 180, 269, 269, 488,
- 248, 251, 179, 294, 1087, 266, 267, 252, 196, 227,
- 197, 197, 197, 197, 183, 257, 425, 276, 231, 232,
- 277, 278, 235, 255, 268, 1094, 345, 346, 238, 280,
-
- 180, 280, 280, 281, 282, 283, 281, 281, 282, 283,
- 281, 264, 265, 202, 270, 1086, 202, 184, 202, 426,
- 271, 272, 273, 274, 466, 275, 467, 202, 202, 202,
- 285, 292, 285, 202, 285, 285, 196, 286, 197, 197,
- 197, 197, 295, 282, 296, 295, 1024, 200, 200, 200,
- 200, 221, 268, 197, 197, 197, 197, 295, 282, 296,
- 295, 345, 346, 468, 223, 469, 246, 549, 224, 293,
- 293, 293, 293, 292, 288, 289, 371, 372, 1085, 290,
- 223, 303, 364, 304, 304, 304, 304, 305, 305, 305,
- 305, 365, 318, 297, 318, 318, 318, 298, 318, 318,
-
- 297, 494, 324, 297, 324, 324, 495, 297, 200, 200,
- 200, 200, 345, 352, 343, 306, 343, 343, 297, 307,
- 308, 349, 304, 304, 304, 304, 297, 322, 322, 322,
- 322, 325, 309, 310, 371, 372, 320, 311, 325, 312,
- 321, 325, 313, 397, 398, 325, 309, 895, 328, 310,
- 329, 329, 329, 329, 371, 378, 325, 312, 368, 345,
- 369, 368, 896, 375, 325, 313, 297, 297, 897, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
- 297, 1084, 297, 297, 330, 330, 330, 330, 316, 297,
- 297, 297, 633, 221, 634, 322, 322, 322, 322, 368,
-
- 345, 369, 368, 397, 398, 297, 223, 345, 346, 315,
- 224, 924, 331, 345, 348, 501, 332, 349, 397, 404,
- 502, 353, 223, 354, 354, 354, 354, 401, 1083, 297,
- 297, 297, 297, 503, 297, 297, 297, 297, 297, 297,
- 297, 297, 297, 297, 297, 297, 365, 297, 297, 930,
- 350, 371, 372, 316, 297, 297, 297, 344, 394, 371,
- 395, 394, 345, 346, 344, 371, 374, 344, 501, 375,
- 297, 344, 390, 502, 183, 1082, 317, 454, 355, 355,
- 355, 355, 344, 394, 371, 395, 394, 397, 400, 455,
- 344, 401, 477, 477, 297, 297, 333, 1081, 329, 329,
-
- 329, 329, 376, 480, 480, 480, 356, 184, 334, 335,
- 357, 397, 398, 336, 443, 337, 443, 443, 338, 980,
- 371, 372, 334, 365, 402, 335, 420, 397, 421, 420,
- 485, 486, 416, 337, 379, 1080, 380, 380, 380, 380,
- 529, 338, 325, 325, 325, 325, 325, 325, 530, 325,
- 325, 325, 325, 325, 325, 325, 325, 1079, 325, 325,
- 420, 397, 421, 420, 341, 325, 325, 325, 397, 398,
- 428, 300, 429, 429, 429, 429, 504, 505, 371, 372,
- 391, 325, 405, 932, 406, 406, 406, 406, 443, 423,
- 443, 443, 264, 265, 381, 381, 381, 381, 178, 1020,
-
- 178, 178, 264, 265, 301, 325, 325, 325, 325, 325,
- 325, 325, 325, 179, 325, 325, 325, 325, 325, 325,
- 325, 325, 382, 325, 325, 1078, 383, 425, 370, 341,
- 325, 325, 325, 489, 396, 370, 246, 490, 370, 397,
- 398, 396, 370, 292, 396, 315, 325, 444, 396, 444,
- 444, 491, 342, 370, 292, 407, 407, 407, 407, 396,
- 426, 370, 445, 445, 445, 445, 1077, 396, 264, 265,
- 325, 325, 345, 346, 430, 430, 430, 430, 446, 446,
- 446, 446, 925, 408, 264, 265, 358, 409, 354, 354,
- 354, 354, 447, 447, 447, 447, 668, 422, 359, 360,
-
- 485, 521, 431, 361, 422, 362, 432, 422, 363, 536,
- 536, 422, 359, 1076, 245, 360, 448, 448, 448, 448,
- 1075, 246, 422, 362, 200, 200, 200, 200, 248, 669,
- 422, 363, 344, 344, 345, 346, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 673, 344, 344,
- 269, 245, 269, 269, 366, 344, 344, 344, 246, 221,
- 292, 197, 197, 197, 197, 248, 200, 200, 200, 200,
- 461, 344, 223, 1074, 462, 245, 224, 449, 463, 478,
- 674, 478, 246, 976, 479, 479, 479, 479, 223, 248,
- 539, 539, 539, 449, 1019, 344, 344, 344, 344, 345,
-
- 346, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 292, 344, 344, 264, 265, 512, 513, 366,
- 344, 344, 344, 476, 476, 476, 476, 461, 554, 554,
- 246, 462, 1073, 245, 449, 520, 344, 292, 345, 346,
- 246, 245, 367, 509, 509, 509, 509, 248, 246, 541,
- 449, 245, 245, 417, 542, 248, 934, 245, 246, 246,
- 344, 344, 371, 372, 246, 248, 248, 1072, 245, 501,
- 245, 248, 518, 531, 559, 246, 384, 246, 380, 380,
- 380, 380, 248, 280, 248, 280, 280, 514, 385, 386,
- 340, 510, 928, 387, 262, 388, 262, 262, 389, 345,
-
- 346, 511, 385, 345, 346, 386, 1071, 515, 318, 179,
- 318, 318, 517, 388, 345, 348, 516, 281, 282, 283,
- 281, 389, 370, 370, 371, 372, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 1070, 370, 370,
- 281, 282, 283, 281, 392, 370, 370, 370, 524, 524,
- 524, 524, 523, 246, 345, 346, 293, 293, 293, 293,
- 292, 370, 295, 282, 296, 295, 295, 282, 296, 295,
- 305, 305, 305, 305, 537, 324, 537, 324, 324, 538,
- 538, 538, 538, 371, 372, 370, 370, 370, 370, 371,
- 372, 370, 370, 370, 370, 370, 370, 370, 370, 370,
-
- 370, 370, 1069, 370, 370, 330, 330, 330, 330, 392,
- 370, 370, 370, 1018, 308, 1057, 304, 304, 304, 304,
- 371, 372, 305, 305, 305, 305, 370, 310, 557, 557,
- 557, 311, 393, 532, 535, 535, 535, 535, 325, 345,
- 352, 613, 193, 310, 1068, 532, 614, 327, 349, 532,
- 370, 370, 397, 398, 343, 292, 343, 343, 345, 352,
- 221, 532, 322, 322, 322, 322, 410, 349, 406, 406,
- 406, 406, 1067, 223, 371, 372, 292, 224, 411, 412,
- 345, 346, 854, 413, 1066, 414, 345, 346, 415, 223,
- 981, 555, 411, 555, 365, 412, 556, 556, 556, 556,
-
- 709, 345, 348, 414, 710, 349, 368, 345, 369, 368,
- 1065, 415, 396, 396, 397, 398, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 563, 396, 396,
- 371, 374, 292, 564, 418, 396, 396, 396, 350, 333,
- 292, 329, 329, 329, 329, 974, 330, 330, 330, 330,
- 315, 396, 335, 345, 346, 977, 336, 550, 345, 348,
- 371, 372, 349, 368, 345, 369, 368, 855, 335, 355,
- 355, 355, 355, 550, 1064, 396, 396, 396, 396, 397,
- 398, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 1063, 396, 396, 350, 345, 346, 879, 418,
-
- 396, 396, 396, 553, 553, 553, 553, 345, 346, 371,
- 378, 880, 566, 566, 550, 982, 396, 881, 375, 391,
- 345, 346, 419, 355, 355, 355, 355, 696, 371, 374,
- 550, 567, 375, 567, 562, 1031, 568, 568, 568, 568,
- 396, 396, 433, 700, 429, 429, 429, 429, 371, 374,
- 562, 1023, 375, 975, 434, 435, 345, 346, 315, 436,
- 697, 437, 371, 372, 438, 376, 345, 346, 434, 1025,
- 571, 435, 569, 569, 569, 572, 701, 371, 378, 437,
- 397, 398, 1021, 371, 372, 376, 375, 438, 422, 422,
- 1019, 422, 422, 422, 422, 422, 422, 422, 422, 422,
-
- 422, 422, 422, 1056, 422, 422, 345, 346, 292, 577,
- 441, 422, 422, 422, 365, 371, 372, 780, 371, 372,
- 397, 398, 565, 565, 565, 565, 1055, 422, 371, 372,
- 578, 580, 580, 562, 381, 381, 381, 381, 926, 371,
- 372, 397, 398, 585, 381, 381, 381, 381, 586, 562,
- 781, 422, 422, 422, 422, 576, 422, 422, 422, 422,
- 422, 422, 422, 422, 422, 422, 422, 422, 1054, 422,
- 422, 576, 371, 372, 1053, 441, 422, 422, 422, 394,
- 371, 395, 394, 1052, 371, 372, 397, 400, 579, 579,
- 579, 579, 422, 371, 372, 581, 1051, 581, 442, 576,
-
- 582, 582, 582, 582, 394, 371, 395, 394, 983, 583,
- 583, 583, 391, 397, 404, 576, 422, 422, 540, 540,
- 540, 540, 401, 397, 404, 397, 398, 540, 540, 540,
- 397, 400, 401, 1050, 401, 784, 397, 400, 397, 398,
- 401, 540, 540, 540, 540, 540, 540, 297, 297, 1049,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
- 297, 297, 1048, 297, 297, 397, 398, 402, 785, 316,
- 297, 297, 297, 402, 397, 398, 397, 398, 608, 608,
- 1047, 407, 407, 407, 407, 591, 297, 595, 1046, 595,
- 594, 594, 596, 596, 596, 596, 397, 398, 477, 477,
-
- 599, 420, 397, 421, 420, 600, 420, 397, 421, 420,
- 297, 297, 297, 297, 1045, 297, 297, 297, 543, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 544, 544,
- 544, 544, 544, 544, 544, 544, 544, 544, 544, 544,
- 544, 297, 544, 544, 544, 544, 544, 544, 544, 544,
- 544, 544, 544, 544, 544, 544, 544, 544, 544, 544,
- 544, 544, 544, 544, 544, 297, 297, 297, 297, 1044,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
- 297, 297, 978, 297, 297, 397, 398, 340, 650, 316,
-
- 297, 297, 297, 397, 398, 979, 651, 397, 398, 652,
- 340, 407, 407, 407, 407, 1043, 297, 430, 430, 430,
- 430, 1042, 590, 597, 597, 597, 536, 536, 430, 430,
- 430, 430, 611, 611, 611, 545, 264, 265, 590, 604,
- 297, 297, 558, 558, 558, 558, 443, 1041, 443, 443,
- 592, 558, 558, 558, 609, 604, 609, 554, 554, 610,
- 610, 610, 610, 608, 608, 558, 558, 558, 558, 558,
- 558, 325, 325, 325, 325, 325, 325, 1040, 325, 325,
- 325, 325, 325, 325, 325, 325, 1018, 325, 325, 397,
- 398, 1039, 683, 341, 325, 325, 325, 246, 433, 1038,
-
- 429, 429, 429, 429, 292, 593, 593, 593, 593, 1037,
- 325, 435, 480, 480, 480, 436, 590, 444, 1036, 444,
- 444, 445, 445, 445, 445, 838, 839, 435, 446, 446,
- 446, 446, 590, 1035, 325, 325, 325, 325, 325, 325,
- 325, 325, 507, 325, 325, 325, 325, 325, 325, 325,
- 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
- 325, 325, 560, 560, 560, 560, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 325, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
- 560, 560, 560, 560, 560, 560, 560, 560, 560, 325,
-
- 325, 325, 325, 325, 325, 325, 325, 1034, 325, 325,
- 325, 325, 325, 325, 325, 325, 1033, 325, 325, 607,
- 607, 607, 607, 341, 325, 325, 325, 539, 539, 539,
- 604, 447, 447, 447, 447, 448, 448, 448, 448, 984,
- 325, 985, 618, 417, 618, 417, 604, 619, 619, 619,
- 619, 476, 476, 476, 476, 479, 479, 479, 479, 561,
- 850, 851, 449, 1032, 325, 325, 345, 346, 479, 479,
- 479, 479, 245, 1017, 245, 557, 557, 557, 449, 246,
- 358, 246, 354, 354, 354, 354, 248, 245, 248, 245,
- 668, 245, 245, 360, 246, 246, 246, 361, 246, 246,
-
- 245, 248, 292, 248, 1016, 248, 248, 246, 245, 360,
- 345, 346, 325, 246, 248, 246, 670, 345, 346, 677,
- 292, 716, 248, 669, 345, 346, 570, 570, 570, 570,
- 921, 678, 245, 566, 566, 570, 570, 570, 679, 246,
- 345, 346, 680, 673, 689, 682, 248, 1021, 690, 570,
- 570, 570, 570, 570, 570, 344, 344, 345, 346, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 1015, 344, 344, 681, 724, 1014, 674, 366, 344, 344,
- 344, 524, 524, 524, 524, 523, 538, 538, 538, 538,
- 691, 1013, 691, 315, 344, 692, 692, 692, 692, 538,
-
- 538, 538, 538, 711, 1012, 711, 345, 726, 712, 712,
- 712, 712, 556, 556, 556, 556, 345, 346, 344, 344,
- 344, 344, 345, 346, 344, 344, 573, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 574, 574, 574, 574,
- 574, 574, 574, 574, 574, 574, 574, 574, 574, 344,
- 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
- 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
- 574, 574, 574, 344, 344, 344, 344, 345, 346, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
-
- 696, 344, 344, 535, 535, 535, 535, 366, 344, 344,
- 344, 345, 346, 1011, 532, 553, 553, 553, 553, 556,
- 556, 556, 556, 986, 344, 700, 550, 440, 345, 346,
- 532, 345, 730, 697, 371, 372, 345, 346, 1010, 721,
- 727, 721, 550, 575, 722, 722, 722, 722, 344, 344,
- 371, 372, 565, 565, 565, 565, 345, 346, 701, 723,
- 611, 611, 611, 562, 384, 1009, 380, 380, 380, 380,
- 345, 346, 568, 568, 568, 568, 987, 386, 245, 562,
- 440, 387, 345, 346, 742, 246, 568, 568, 568, 568,
- 371, 372, 248, 386, 371, 372, 371, 748, 569, 569,
-
- 569, 739, 1020, 739, 1058, 745, 740, 740, 740, 740,
- 584, 584, 584, 584, 371, 372, 397, 398, 1008, 584,
- 584, 584, 345, 726, 371, 372, 727, 780, 345, 732,
- 580, 580, 733, 584, 584, 584, 584, 584, 584, 370,
- 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 1026, 370, 370, 371, 372, 728,
- 781, 392, 370, 370, 370, 734, 760, 345, 732, 371,
- 372, 1007, 741, 579, 579, 579, 579, 1006, 370, 371,
- 372, 397, 766, 1005, 576, 582, 582, 582, 582, 1004,
- 763, 610, 610, 610, 610, 582, 582, 582, 582, 391,
-
- 576, 1003, 370, 370, 370, 370, 371, 372, 370, 370,
- 587, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
- 588, 588, 588, 370, 588, 588, 588, 588, 588, 588,
- 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
- 588, 588, 588, 588, 588, 588, 588, 370, 370, 370,
- 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 1002, 370, 370, 371, 372, 397,
- 398, 392, 370, 370, 370, 1027, 345, 346, 397, 398,
-
- 573, 397, 398, 583, 583, 583, 371, 744, 370, 784,
- 745, 1001, 371, 750, 594, 594, 751, 596, 596, 596,
- 596, 397, 762, 246, 245, 763, 1000, 589, 397, 398,
- 292, 246, 370, 370, 397, 398, 999, 759, 248, 757,
- 391, 757, 785, 746, 758, 758, 758, 758, 410, 752,
- 406, 406, 406, 406, 998, 397, 398, 844, 764, 997,
- 325, 412, 397, 768, 670, 413, 769, 397, 398, 716,
- 996, 593, 593, 593, 593, 397, 398, 412, 397, 398,
- 371, 372, 590, 596, 596, 596, 596, 610, 610, 610,
- 610, 597, 597, 597, 598, 598, 598, 598, 590, 770,
-
- 371, 744, 245, 598, 598, 598, 775, 440, 775, 246,
- 936, 776, 776, 776, 776, 1022, 248, 598, 598, 598,
- 598, 598, 598, 396, 396, 397, 398, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 995, 396,
- 396, 607, 607, 607, 607, 418, 396, 396, 396, 371,
- 372, 837, 604, 619, 619, 619, 619, 619, 619, 619,
- 619, 340, 396, 692, 692, 692, 692, 994, 604, 692,
- 692, 692, 692, 712, 712, 712, 712, 712, 712, 712,
- 712, 371, 750, 397, 398, 993, 396, 396, 396, 396,
- 397, 398, 396, 396, 601, 396, 396, 396, 396, 396,
-
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 602, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 396, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 602, 396, 396, 396, 396, 397, 398, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 992, 396,
- 396, 988, 245, 245, 968, 418, 396, 396, 396, 246,
- 246, 245, 345, 346, 397, 762, 248, 248, 246, 246,
- 345, 346, 396, 345, 346, 248, 292, 967, 722, 722,
-
- 722, 722, 966, 345, 730, 965, 722, 722, 722, 722,
- 964, 603, 727, 834, 835, 963, 396, 396, 612, 612,
- 612, 612, 1022, 845, 1057, 836, 962, 612, 612, 612,
- 345, 346, 961, 371, 372, 960, 860, 587, 959, 371,
- 372, 612, 612, 612, 612, 612, 612, 422, 422, 958,
- 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
- 422, 422, 1028, 422, 422, 345, 730, 397, 398, 441,
- 422, 422, 422, 861, 727, 371, 372, 345, 726, 371,
- 372, 727, 864, 397, 768, 957, 422, 397, 398, 838,
- 265, 740, 740, 740, 740, 740, 740, 740, 740, 371,
-
- 748, 345, 346, 758, 758, 758, 758, 417, 745, 956,
- 422, 422, 422, 422, 728, 422, 422, 422, 615, 422,
- 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
- 422, 422, 422, 422, 422, 422, 422, 422, 616, 616,
- 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
- 616, 422, 616, 616, 616, 616, 616, 616, 616, 616,
- 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
- 616, 616, 616, 616, 616, 422, 422, 422, 422, 955,
- 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
- 422, 422, 1029, 422, 422, 371, 372, 371, 748, 441,
-
- 422, 422, 422, 1023, 397, 398, 745, 397, 398, 345,
- 726, 345, 732, 727, 954, 733, 422, 345, 732, 371,
- 744, 733, 953, 745, 371, 744, 371, 750, 745, 1030,
- 751, 1062, 397, 398, 952, 617, 601, 417, 865, 951,
- 422, 422, 540, 540, 540, 540, 728, 868, 734, 340,
- 869, 540, 540, 540, 734, 246, 746, 776, 776, 776,
- 776, 746, 292, 752, 950, 540, 540, 540, 540, 540,
- 540, 297, 297, 949, 297, 297, 297, 297, 297, 297,
- 297, 297, 297, 297, 297, 297, 948, 297, 297, 947,
- 397, 398, 922, 703, 297, 297, 297, 776, 776, 776,
-
- 776, 371, 750, 397, 766, 751, 758, 758, 758, 758,
- 297, 946, 763, 397, 766, 345, 346, 365, 929, 371,
- 372, 945, 763, 371, 372, 391, 931, 397, 398, 397,
- 398, 417, 933, 944, 297, 297, 297, 297, 752, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
- 297, 315, 297, 297, 315, 315, 315, 315, 316, 297,
- 297, 297, 315, 315, 315, 315, 315, 315, 315, 315,
- 315, 315, 315, 315, 315, 297, 315, 315, 315, 315,
- 315, 315, 704, 315, 315, 315, 705, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 297,
-
- 297, 558, 558, 558, 558, 440, 935, 943, 245, 942,
- 558, 558, 558, 397, 762, 246, 941, 763, 940, 397,
- 762, 939, 248, 763, 558, 558, 558, 558, 558, 558,
- 325, 325, 325, 325, 325, 325, 938, 325, 325, 325,
- 325, 325, 325, 325, 325, 1030, 325, 325, 345, 346,
- 764, 246, 718, 325, 325, 325, 764, 919, 292, 245,
- 245, 1019, 937, 989, 397, 768, 246, 246, 769, 325,
- 371, 372, 246, 248, 248, 971, 990, 971, 971, 292,
- 850, 972, 991, 971, 920, 971, 971, 345, 346, 1024,
- 440, 1059, 915, 325, 325, 325, 325, 325, 325, 325,
-
- 325, 770, 325, 325, 325, 325, 325, 325, 325, 325,
- 340, 325, 325, 340, 340, 340, 340, 341, 325, 325,
- 325, 340, 340, 340, 340, 340, 340, 340, 340, 340,
- 340, 340, 340, 340, 325, 340, 340, 340, 340, 340,
- 340, 719, 340, 340, 340, 720, 340, 340, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 325, 325,
- 345, 346, 1018, 246, 1019, 914, 245, 913, 245, 912,
- 292, 397, 398, 246, 911, 246, 570, 570, 570, 570,
- 248, 910, 248, 245, 245, 570, 570, 570, 397, 768,
- 246, 246, 769, 973, 1031, 909, 908, 248, 248, 570,
-
- 570, 570, 570, 570, 570, 344, 344, 345, 346, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 969, 344, 344, 907, 245, 770, 916, 736, 344, 344,
- 344, 246, 345, 346, 1025, 371, 372, 1027, 248, 440,
- 906, 371, 372, 1026, 344, 1060, 397, 398, 1028, 905,
- 1061, 397, 398, 1029, 904, 903, 902, 901, 900, 899,
- 898, 894, 893, 918, 892, 891, 890, 889, 344, 344,
- 344, 344, 345, 346, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 365, 344, 344, 365, 365,
- 365, 365, 366, 344, 344, 344, 365, 365, 365, 365,
-
- 365, 365, 365, 365, 365, 365, 365, 365, 365, 344,
- 365, 365, 365, 365, 365, 365, 737, 365, 365, 365,
- 738, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 365, 344, 344, 371, 372, 888, 887, 886,
- 885, 884, 883, 882, 878, 877, 876, 875, 615, 780,
- 873, 584, 584, 584, 584, 872, 245, 871, 245, 867,
- 584, 584, 584, 246, 863, 246, 859, 507, 857, 856,
- 248, 853, 248, 852, 584, 584, 584, 584, 584, 584,
- 370, 370, 371, 372, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 970, 370, 370, 849, 543,
-
- 917, 696, 754, 370, 370, 370, 847, 846, 843, 842,
- 841, 840, 507, 676, 668, 833, 832, 831, 830, 370,
- 829, 828, 825, 824, 823, 822, 821, 820, 819, 818,
- 817, 816, 815, 814, 813, 812, 811, 810, 809, 808,
- 807, 806, 805, 370, 370, 370, 370, 371, 372, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 391, 370, 370, 391, 391, 391, 391, 392, 370, 370,
- 370, 391, 391, 391, 391, 391, 391, 391, 391, 391,
- 391, 391, 391, 391, 370, 391, 391, 391, 391, 391,
- 391, 755, 391, 391, 391, 756, 391, 391, 391, 391,
-
- 391, 391, 391, 391, 391, 391, 391, 391, 370, 370,
- 397, 398, 804, 803, 802, 801, 800, 799, 798, 797,
- 796, 795, 794, 793, 792, 791, 598, 598, 598, 598,
- 790, 780, 778, 777, 714, 598, 598, 598, 713, 708,
- 707, 706, 696, 694, 693, 688, 687, 686, 685, 598,
- 598, 598, 598, 598, 598, 396, 396, 397, 398, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 523, 396, 396, 650, 633, 629, 676, 772, 396, 396,
- 396, 671, 668, 666, 665, 664, 663, 662, 661, 660,
- 659, 658, 657, 656, 396, 655, 654, 653, 649, 648,
-
- 647, 646, 645, 644, 643, 642, 641, 640, 639, 638,
- 637, 636, 635, 632, 631, 628, 627, 626, 396, 396,
- 396, 396, 397, 398, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 417, 396, 396, 417, 417,
- 417, 417, 418, 396, 396, 396, 417, 417, 417, 417,
- 417, 417, 417, 417, 417, 417, 417, 417, 417, 396,
- 417, 417, 417, 417, 417, 417, 773, 417, 417, 417,
- 774, 417, 417, 417, 417, 417, 417, 417, 417, 417,
- 417, 417, 417, 396, 396, 612, 612, 612, 612, 625,
- 624, 623, 622, 621, 612, 612, 612, 620, 606, 605,
-
- 425, 552, 551, 548, 547, 546, 534, 533, 612, 612,
- 612, 612, 612, 612, 422, 422, 300, 422, 422, 422,
- 422, 422, 422, 422, 422, 422, 422, 422, 422, 507,
- 422, 422, 528, 527, 523, 495, 787, 422, 422, 422,
- 493, 469, 466, 464, 519, 455, 507, 292, 506, 500,
- 499, 496, 484, 422, 483, 482, 475, 474, 473, 470,
- 460, 457, 456, 453, 452, 451, 183, 439, 425, 423,
- 339, 292, 319, 314, 300, 298, 279, 422, 422, 422,
- 422, 183, 422, 422, 422, 422, 422, 422, 422, 422,
- 422, 422, 422, 422, 440, 422, 422, 440, 440, 440,
-
- 440, 441, 422, 422, 422, 440, 440, 440, 440, 440,
- 440, 440, 440, 440, 440, 440, 440, 440, 422, 440,
- 440, 440, 440, 440, 440, 788, 440, 440, 440, 789,
- 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
- 440, 440, 422, 422, 297, 297, 279, 297, 297, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 183,
- 297, 297, 190, 181, 1094, 1094, 703, 297, 297, 297,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 297, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
-
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 297, 297, 297,
- 297, 1094, 297, 297, 297, 297, 297, 297, 297, 297,
- 297, 297, 297, 297, 315, 297, 297, 315, 315, 315,
- 315, 316, 297, 297, 297, 315, 315, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 315, 315, 297, 315,
- 315, 315, 315, 315, 315, 315, 315, 315, 848, 315,
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
- 315, 315, 297, 297, 325, 325, 325, 325, 325, 325,
- 1094, 325, 325, 325, 325, 325, 325, 325, 325, 1094,
- 325, 325, 1094, 1094, 1094, 1094, 718, 325, 325, 325,
-
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 325, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 325, 325, 325,
- 325, 325, 325, 325, 325, 1094, 325, 325, 325, 325,
- 325, 325, 325, 325, 340, 325, 325, 340, 340, 340,
- 340, 341, 325, 325, 325, 340, 340, 340, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 325, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 858, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
-
- 340, 340, 325, 325, 344, 344, 345, 346, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 1094,
- 344, 344, 1094, 1094, 1094, 1094, 736, 344, 344, 344,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 344, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 344, 344, 344,
- 344, 345, 346, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 365, 344, 344, 365, 365, 365,
- 365, 366, 344, 344, 344, 365, 365, 365, 365, 365,
-
- 365, 365, 365, 365, 365, 365, 365, 365, 344, 365,
- 365, 365, 365, 365, 365, 365, 365, 365, 862, 365,
- 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 344, 344, 370, 370, 371, 372, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 1094,
- 370, 370, 1094, 1094, 1094, 1094, 754, 370, 370, 370,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 370, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 370, 370, 370,
-
- 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 391, 370, 370, 391, 391, 391,
- 391, 392, 370, 370, 370, 391, 391, 391, 391, 391,
- 391, 391, 391, 391, 391, 391, 391, 391, 370, 391,
- 391, 391, 391, 391, 391, 391, 391, 391, 866, 391,
+ 216, 217, 202, 202, 202, 218, 221, 244, 197, 197,
+ 197, 197, 183, 244, 245, 244, 244, 259, 222, 223,
+ 245, 247, 245, 245, 459, 224, 460, 247, 225, 247,
+ 247, 461, 222, 462, 221, 223, 197, 197, 197, 197,
+
+ 263, 264, 244, 224, 626, 184, 627, 223, 447, 245,
+ 253, 225, 248, 248, 248, 248, 247, 260, 249, 256,
+ 448, 323, 1081, 223, 226, 193, 227, 252, 1080, 228,
+ 325, 244, 229, 230, 231, 232, 233, 234, 245, 244,
+ 235, 267, 236, 237, 1079, 247, 245, 261, 291, 261,
+ 261, 263, 264, 247, 244, 261, 180, 261, 261, 1078,
+ 245, 245, 179, 268, 180, 268, 268, 291, 247, 250,
+ 179, 342, 343, 265, 266, 251, 254, 196, 919, 197,
+ 197, 197, 197, 263, 264, 279, 226, 279, 279, 255,
+ 293, 254, 267, 1087, 275, 230, 231, 276, 277, 234,
+
+ 279, 180, 279, 279, 819, 237, 280, 281, 282, 280,
+ 419, 202, 269, 820, 202, 183, 202, 1077, 270, 271,
+ 272, 273, 480, 274, 267, 202, 202, 202, 342, 349,
+ 481, 202, 280, 281, 282, 280, 284, 346, 284, 285,
+ 284, 284, 196, 420, 197, 197, 197, 197, 184, 200,
+ 200, 200, 200, 221, 1076, 197, 197, 197, 197, 294,
+ 281, 295, 294, 622, 245, 291, 223, 292, 292, 292,
+ 292, 291, 294, 281, 295, 294, 287, 288, 367, 368,
+ 623, 289, 223, 302, 1075, 303, 303, 303, 303, 304,
+ 304, 304, 304, 918, 316, 296, 316, 316, 316, 297,
+
+ 316, 316, 296, 487, 322, 296, 322, 322, 488, 296,
+ 200, 200, 200, 200, 367, 368, 340, 305, 340, 340,
+ 296, 306, 307, 1074, 303, 303, 303, 303, 296, 320,
+ 320, 320, 320, 323, 308, 309, 342, 343, 318, 1073,
+ 323, 310, 319, 323, 311, 392, 393, 323, 308, 1072,
+ 326, 309, 327, 327, 327, 327, 464, 360, 323, 310,
+ 364, 342, 365, 364, 392, 393, 323, 311, 296, 296,
+ 465, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 291, 296, 296, 328, 328, 328, 328,
+ 314, 296, 296, 296, 313, 221, 917, 320, 320, 320,
+
+ 320, 367, 374, 342, 343, 454, 969, 296, 223, 455,
+ 371, 342, 345, 456, 329, 346, 245, 350, 330, 351,
+ 351, 351, 351, 291, 223, 364, 342, 365, 364, 470,
+ 470, 296, 296, 296, 296, 291, 296, 296, 296, 296,
+ 296, 296, 296, 296, 296, 296, 296, 296, 347, 296,
+ 296, 342, 343, 367, 368, 314, 296, 296, 296, 389,
+ 367, 390, 389, 389, 367, 390, 389, 352, 352, 352,
+ 352, 542, 296, 337, 385, 921, 367, 370, 315, 341,
+ 371, 392, 395, 392, 399, 396, 341, 478, 479, 341,
+ 367, 368, 396, 341, 1071, 353, 296, 296, 331, 354,
+
+ 327, 327, 327, 327, 341, 1017, 377, 377, 377, 377,
+ 332, 333, 341, 372, 367, 368, 361, 334, 397, 923,
+ 335, 392, 393, 436, 332, 436, 436, 333, 375, 299,
+ 376, 376, 376, 376, 378, 334, 494, 437, 379, 437,
+ 437, 495, 410, 335, 323, 323, 323, 323, 323, 323,
+ 361, 323, 323, 323, 323, 323, 323, 323, 323, 1070,
+ 323, 323, 300, 366, 497, 498, 338, 323, 323, 323,
+ 366, 244, 391, 366, 1069, 392, 393, 366, 245, 391,
+ 263, 264, 391, 323, 1068, 247, 391, 522, 366, 400,
+ 1067, 401, 401, 401, 401, 523, 366, 391, 414, 392,
+
+ 415, 414, 473, 473, 473, 391, 1011, 323, 323, 323,
+ 323, 323, 323, 323, 323, 291, 323, 323, 323, 323,
+ 323, 323, 323, 323, 291, 323, 323, 414, 392, 415,
+ 414, 338, 323, 323, 323, 424, 424, 424, 424, 392,
+ 393, 422, 847, 423, 423, 423, 423, 482, 323, 263,
+ 264, 483, 416, 419, 339, 402, 402, 402, 402, 416,
+ 263, 264, 416, 425, 1018, 484, 416, 426, 436, 417,
+ 436, 436, 323, 323, 342, 343, 454, 416, 1019, 178,
+ 455, 178, 178, 403, 513, 416, 420, 404, 355, 1066,
+ 351, 351, 351, 351, 179, 438, 438, 438, 438, 661,
+
+ 356, 357, 439, 439, 439, 439, 494, 358, 244, 361,
+ 359, 495, 263, 264, 356, 245, 666, 357, 440, 440,
+ 440, 440, 247, 386, 496, 358, 441, 441, 441, 441,
+ 263, 264, 662, 359, 341, 341, 342, 343, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 667,
+ 341, 341, 200, 200, 200, 200, 362, 341, 341, 341,
+ 1011, 221, 1050, 197, 197, 197, 197, 200, 200, 200,
+ 200, 478, 514, 341, 223, 471, 1065, 471, 442, 244,
+ 472, 472, 472, 472, 529, 529, 245, 511, 1064, 268,
+ 223, 268, 268, 247, 442, 547, 547, 341, 341, 341,
+
+ 341, 342, 343, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 291, 341, 341, 261, 1063, 261,
+ 261, 362, 341, 341, 341, 469, 469, 469, 469, 503,
+ 1062, 279, 179, 279, 279, 244, 442, 970, 341, 532,
+ 532, 532, 245, 244, 363, 502, 502, 502, 502, 247,
+ 245, 245, 442, 244, 244, 342, 343, 247, 291, 244,
+ 245, 245, 341, 341, 367, 368, 245, 247, 247, 534,
+ 244, 494, 244, 247, 535, 689, 552, 245, 380, 245,
+ 376, 376, 376, 376, 247, 316, 247, 316, 316, 507,
+ 381, 382, 1061, 504, 524, 505, 506, 383, 1060, 322,
+
+ 384, 322, 322, 340, 381, 340, 340, 382, 690, 508,
+ 280, 281, 282, 280, 510, 383, 342, 343, 509, 280,
+ 281, 282, 280, 384, 366, 366, 367, 368, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 1059,
+ 366, 366, 294, 281, 295, 294, 387, 366, 366, 366,
+ 517, 517, 517, 517, 516, 245, 342, 343, 292, 292,
+ 292, 292, 291, 366, 294, 281, 295, 294, 304, 304,
+ 304, 304, 530, 1058, 530, 342, 345, 531, 531, 531,
+ 531, 328, 328, 328, 328, 342, 343, 366, 366, 366,
+ 366, 367, 368, 366, 366, 366, 366, 366, 366, 366,
+
+ 366, 366, 366, 366, 291, 366, 366, 550, 550, 550,
+ 606, 387, 366, 366, 366, 607, 307, 1057, 303, 303,
+ 303, 303, 304, 304, 304, 304, 342, 345, 366, 309,
+ 346, 848, 556, 525, 388, 528, 528, 528, 528, 323,
+ 342, 345, 967, 193, 346, 309, 525, 313, 325, 525,
+ 367, 368, 366, 366, 392, 393, 221, 1056, 320, 320,
+ 320, 320, 525, 347, 328, 328, 328, 328, 405, 223,
+ 401, 401, 401, 401, 1013, 543, 1051, 347, 367, 368,
+ 406, 407, 973, 342, 349, 223, 361, 408, 342, 343,
+ 409, 543, 346, 548, 406, 548, 693, 407, 549, 549,
+
+ 549, 549, 342, 349, 1024, 408, 364, 342, 365, 364,
+ 1016, 346, 1020, 409, 391, 391, 392, 393, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 694,
+ 391, 391, 367, 368, 1014, 557, 412, 391, 391, 391,
+ 1015, 331, 1050, 327, 327, 327, 327, 546, 546, 546,
+ 546, 342, 343, 391, 333, 342, 343, 386, 543, 1012,
+ 342, 343, 367, 370, 564, 1049, 371, 559, 559, 565,
+ 333, 562, 562, 562, 543, 367, 370, 391, 391, 391,
+ 391, 392, 393, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 1048, 391, 391, 342, 343, 372,
+
+ 773, 412, 391, 391, 391, 364, 342, 365, 364, 342,
+ 343, 367, 374, 352, 352, 352, 352, 291, 391, 1047,
+ 371, 342, 343, 355, 413, 351, 351, 351, 351, 392,
+ 393, 974, 560, 774, 560, 361, 357, 561, 561, 561,
+ 561, 702, 391, 391, 427, 703, 423, 423, 423, 423,
+ 367, 370, 357, 777, 371, 661, 428, 429, 367, 374,
+ 367, 368, 1012, 430, 367, 368, 431, 371, 367, 368,
+ 428, 367, 368, 429, 392, 393, 377, 377, 377, 377,
+ 291, 430, 392, 393, 573, 573, 778, 372, 662, 431,
+ 416, 416, 1046, 416, 416, 416, 416, 416, 416, 416,
+
+ 416, 416, 416, 416, 416, 968, 416, 416, 342, 343,
+ 313, 570, 434, 416, 416, 416, 392, 395, 571, 367,
+ 368, 367, 368, 578, 352, 352, 352, 352, 579, 416,
+ 342, 343, 574, 386, 574, 555, 925, 575, 575, 575,
+ 575, 389, 367, 390, 389, 971, 558, 558, 558, 558,
+ 337, 555, 666, 416, 416, 416, 416, 555, 416, 416,
+ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
+ 1045, 416, 416, 555, 367, 368, 1044, 434, 416, 416,
+ 416, 389, 367, 390, 389, 667, 367, 368, 380, 1043,
+ 376, 376, 376, 376, 416, 392, 395, 367, 368, 396,
+
+ 435, 382, 576, 576, 576, 392, 395, 601, 601, 396,
+ 604, 604, 604, 377, 377, 377, 377, 382, 416, 416,
+ 533, 533, 533, 533, 569, 392, 399, 392, 399, 533,
+ 533, 533, 397, 1042, 396, 436, 396, 436, 436, 1041,
+ 569, 1013, 397, 533, 533, 533, 533, 533, 533, 296,
+ 296, 1040, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 1021, 296, 296, 367, 368, 392,
+ 393, 314, 296, 296, 296, 392, 393, 470, 470, 392,
+ 393, 529, 529, 572, 572, 572, 572, 313, 296, 392,
+ 393, 587, 587, 1039, 569, 402, 402, 402, 402, 1038,
+
+ 588, 437, 588, 437, 437, 589, 589, 589, 589, 411,
+ 569, 1037, 296, 296, 296, 296, 584, 296, 296, 296,
+ 536, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+ 537, 537, 537, 537, 537, 537, 537, 537, 537, 537,
+ 537, 537, 537, 296, 537, 537, 537, 537, 537, 537,
+ 537, 537, 537, 537, 537, 537, 537, 537, 537, 537,
+ 537, 537, 537, 537, 537, 537, 537, 296, 296, 296,
+ 296, 1036, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 1035, 296, 296, 392, 393, 689,
+
+ 245, 314, 296, 296, 296, 392, 393, 291, 323, 392,
+ 393, 405, 663, 401, 401, 401, 401, 709, 296, 392,
+ 393, 590, 590, 590, 407, 402, 402, 402, 402, 392,
+ 393, 682, 690, 592, 972, 683, 583, 538, 593, 337,
+ 407, 1034, 296, 296, 551, 551, 551, 551, 414, 392,
+ 415, 414, 583, 551, 551, 551, 414, 392, 415, 414,
+ 424, 424, 424, 424, 547, 547, 585, 551, 551, 551,
+ 551, 551, 551, 323, 323, 323, 323, 323, 323, 1033,
+ 323, 323, 323, 323, 323, 323, 323, 323, 1011, 323,
+ 323, 392, 393, 601, 601, 338, 323, 323, 323, 245,
+
+ 427, 1032, 423, 423, 423, 423, 291, 586, 586, 586,
+ 586, 975, 323, 429, 602, 386, 602, 1031, 583, 603,
+ 603, 603, 603, 438, 438, 438, 438, 831, 832, 429,
+ 439, 439, 439, 439, 583, 1030, 323, 323, 323, 323,
+ 323, 323, 323, 323, 500, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 553, 553, 553, 553, 553, 553,
+ 553, 553, 553, 553, 553, 553, 553, 323, 553, 553,
+ 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
+ 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
+
+ 553, 323, 323, 323, 323, 323, 323, 323, 323, 1029,
+ 323, 323, 323, 323, 323, 323, 323, 323, 1028, 323,
+ 323, 424, 424, 424, 424, 338, 323, 323, 323, 473,
+ 473, 473, 597, 600, 600, 600, 600, 440, 440, 440,
+ 440, 1027, 323, 976, 597, 263, 264, 386, 597, 441,
+ 441, 441, 441, 472, 472, 472, 472, 611, 1026, 611,
+ 597, 554, 612, 612, 612, 612, 323, 323, 342, 343,
+ 469, 469, 469, 469, 472, 472, 472, 472, 342, 343,
+ 643, 442, 244, 1025, 563, 563, 563, 563, 644, 245,
+ 1010, 645, 244, 563, 563, 563, 247, 442, 693, 245,
+
+ 1009, 676, 531, 531, 531, 531, 247, 563, 563, 563,
+ 563, 563, 563, 341, 341, 342, 343, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 717, 341,
+ 341, 694, 244, 244, 244, 362, 341, 341, 341, 245,
+ 245, 245, 531, 531, 531, 531, 247, 247, 247, 532,
+ 532, 532, 341, 517, 517, 517, 517, 516, 684, 1008,
+ 684, 843, 844, 685, 685, 685, 685, 549, 549, 549,
+ 549, 550, 550, 550, 671, 1007, 341, 341, 341, 341,
+ 342, 343, 341, 341, 566, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+
+ 341, 341, 341, 341, 567, 567, 567, 567, 567, 567,
+ 567, 567, 567, 567, 567, 567, 567, 341, 567, 567,
+ 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
+ 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
+ 567, 341, 341, 341, 341, 342, 343, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 1006, 341,
+ 341, 342, 343, 244, 1005, 362, 341, 341, 341, 244,
+ 245, 342, 343, 244, 342, 719, 245, 247, 411, 244,
+ 245, 927, 341, 247, 367, 368, 245, 247, 549, 549,
+ 549, 549, 1022, 247, 528, 528, 528, 528, 392, 393,
+
+ 1023, 568, 1055, 244, 674, 525, 341, 341, 367, 368,
+ 245, 672, 342, 343, 670, 673, 675, 247, 1004, 716,
+ 1003, 525, 342, 723, 577, 577, 577, 577, 559, 559,
+ 1002, 720, 734, 577, 577, 577, 704, 411, 704, 367,
+ 368, 705, 705, 705, 705, 1014, 752, 577, 577, 577,
+ 577, 577, 577, 366, 366, 367, 368, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 1001, 366,
+ 366, 546, 546, 546, 546, 387, 366, 366, 366, 604,
+ 604, 604, 543, 342, 343, 1000, 323, 342, 343, 735,
+ 663, 313, 366, 977, 714, 709, 714, 411, 543, 715,
+
+ 715, 715, 715, 561, 561, 561, 561, 768, 999, 768,
+ 342, 343, 769, 769, 769, 769, 366, 366, 366, 366,
+ 367, 368, 366, 366, 580, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 581, 581, 581, 581, 581, 581,
+ 581, 581, 581, 581, 581, 581, 581, 366, 581, 581,
+ 581, 581, 581, 581, 581, 581, 581, 581, 581, 581,
+ 581, 581, 581, 581, 581, 581, 581, 581, 581, 581,
+ 581, 366, 366, 366, 366, 367, 368, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 998, 366,
+
+ 366, 342, 343, 367, 741, 387, 366, 366, 366, 342,
+ 343, 997, 738, 342, 343, 392, 759, 558, 558, 558,
+ 558, 773, 366, 996, 756, 562, 562, 562, 555, 561,
+ 561, 561, 561, 342, 719, 342, 725, 720, 244, 726,
+ 995, 582, 367, 368, 555, 245, 366, 366, 392, 393,
+ 342, 725, 247, 732, 774, 732, 367, 368, 733, 733,
+ 733, 733, 367, 368, 591, 591, 591, 591, 367, 368,
+ 721, 994, 727, 591, 591, 591, 367, 737, 573, 573,
+ 738, 392, 393, 993, 576, 576, 576, 591, 591, 591,
+ 591, 591, 591, 391, 391, 392, 393, 391, 391, 391,
+
+ 391, 391, 391, 391, 391, 391, 391, 391, 1023, 391,
+ 391, 367, 368, 739, 245, 412, 391, 391, 391, 392,
+ 393, 291, 777, 367, 368, 367, 737, 572, 572, 572,
+ 572, 753, 391, 367, 368, 587, 587, 992, 569, 575,
+ 575, 575, 575, 603, 603, 603, 603, 991, 837, 575,
+ 575, 575, 575, 433, 569, 778, 391, 391, 391, 391,
+ 392, 393, 391, 391, 594, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 595, 595, 595, 595, 595, 595,
+ 595, 595, 595, 595, 595, 595, 595, 391, 595, 595,
+
+ 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
+ 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
+ 595, 391, 391, 391, 391, 392, 393, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 990, 391,
+ 391, 603, 603, 603, 603, 412, 391, 391, 391, 989,
+ 392, 393, 367, 368, 988, 367, 743, 392, 393, 744,
+ 987, 750, 391, 750, 367, 743, 751, 751, 751, 751,
+ 342, 723, 986, 586, 586, 586, 586, 392, 393, 720,
+ 985, 596, 392, 393, 583, 981, 391, 391, 605, 605,
+ 605, 605, 745, 589, 589, 589, 589, 605, 605, 605,
+
+ 583, 392, 755, 245, 1015, 756, 612, 612, 612, 612,
+ 291, 605, 605, 605, 605, 605, 605, 416, 416, 961,
+ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
+ 416, 416, 1016, 416, 416, 392, 393, 838, 757, 434,
+ 416, 416, 416, 392, 393, 960, 600, 600, 600, 600,
+ 337, 589, 589, 589, 589, 433, 416, 597, 929, 590,
+ 590, 590, 612, 612, 612, 612, 685, 685, 685, 685,
+ 342, 723, 959, 597, 685, 685, 685, 685, 337, 720,
+ 416, 416, 416, 416, 958, 416, 416, 416, 608, 416,
+ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
+
+ 416, 416, 416, 416, 416, 416, 416, 416, 609, 609,
+ 609, 609, 609, 609, 609, 609, 609, 609, 609, 609,
+ 609, 416, 609, 609, 609, 609, 609, 609, 609, 609,
+ 609, 609, 609, 609, 609, 609, 609, 609, 609, 609,
+ 609, 609, 609, 609, 609, 416, 416, 416, 416, 957,
+ 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
+ 416, 416, 956, 416, 416, 392, 755, 244, 244, 434,
+ 416, 416, 416, 955, 245, 245, 392, 393, 244, 392,
+ 761, 247, 247, 762, 244, 245, 416, 705, 705, 705,
+ 705, 245, 247, 705, 705, 705, 705, 954, 247, 342,
+
+ 343, 342, 343, 566, 953, 610, 392, 761, 827, 828,
+ 416, 416, 533, 533, 533, 533, 763, 715, 715, 715,
+ 715, 533, 533, 533, 342, 343, 1024, 830, 829, 342,
+ 343, 769, 769, 769, 769, 533, 533, 533, 533, 533,
+ 533, 296, 296, 952, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 296, 296, 951, 296, 296, 342,
+ 343, 367, 741, 696, 296, 296, 296, 853, 367, 368,
+ 738, 433, 854, 367, 368, 715, 715, 715, 715, 978,
+ 296, 831, 264, 411, 733, 733, 733, 733, 950, 733,
+ 733, 733, 733, 367, 741, 367, 368, 392, 393, 580,
+
+ 949, 594, 738, 948, 296, 296, 296, 296, 947, 296,
+ 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 313, 296, 296, 313, 313, 313, 313, 314, 296,
+ 296, 296, 313, 313, 313, 313, 313, 313, 313, 313,
+ 313, 313, 313, 313, 313, 296, 313, 313, 313, 313,
+ 313, 313, 697, 313, 313, 313, 698, 313, 313, 313,
+ 313, 313, 313, 313, 313, 313, 313, 313, 313, 296,
+ 296, 551, 551, 551, 551, 367, 368, 946, 367, 368,
+ 551, 551, 551, 342, 719, 342, 343, 720, 945, 342,
+ 719, 342, 343, 720, 551, 551, 551, 551, 551, 551,
+
+ 323, 323, 323, 323, 323, 323, 944, 323, 323, 323,
+ 323, 323, 323, 323, 323, 888, 323, 323, 857, 943,
+ 721, 858, 711, 323, 323, 323, 721, 392, 393, 979,
+ 889, 392, 393, 433, 342, 725, 890, 942, 726, 323,
+ 361, 922, 941, 751, 751, 751, 751, 751, 751, 751,
+ 751, 392, 759, 392, 759, 769, 769, 769, 769, 940,
+ 756, 939, 756, 323, 323, 323, 323, 323, 323, 323,
+ 323, 727, 323, 323, 323, 323, 323, 323, 323, 323,
+ 337, 323, 323, 337, 337, 337, 337, 338, 323, 323,
+ 323, 337, 337, 337, 337, 337, 337, 337, 337, 337,
+
+ 337, 337, 337, 337, 323, 337, 337, 337, 337, 337,
+ 337, 712, 337, 337, 337, 713, 337, 337, 337, 337,
+ 337, 337, 337, 337, 337, 337, 337, 337, 323, 323,
+ 342, 343, 245, 367, 368, 367, 368, 386, 924, 291,
+ 392, 393, 392, 393, 411, 926, 563, 563, 563, 563,
+ 392, 393, 938, 392, 393, 563, 563, 563, 342, 725,
+ 433, 928, 726, 937, 367, 737, 936, 914, 738, 563,
+ 563, 563, 563, 563, 563, 341, 341, 342, 343, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 872, 341, 341, 861, 935, 727, 862, 729, 341, 341,
+
+ 341, 739, 980, 873, 244, 244, 433, 982, 934, 874,
+ 933, 245, 245, 964, 341, 964, 964, 1011, 247, 247,
+ 983, 244, 964, 932, 964, 964, 984, 931, 245, 342,
+ 343, 1017, 930, 1052, 843, 247, 342, 343, 341, 341,
+ 341, 341, 342, 343, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 361, 341, 341, 361, 361,
+ 361, 361, 362, 341, 341, 341, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 341,
+ 361, 361, 361, 361, 361, 361, 730, 361, 361, 361,
+ 731, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+
+ 361, 361, 361, 341, 341, 367, 368, 913, 245, 1012,
+ 908, 245, 907, 244, 906, 291, 367, 368, 291, 905,
+ 245, 577, 577, 577, 577, 392, 393, 247, 244, 904,
+ 577, 577, 577, 367, 737, 245, 903, 738, 965, 367,
+ 743, 966, 247, 744, 577, 577, 577, 577, 577, 577,
+ 366, 366, 367, 368, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 902, 366, 366, 1012, 901,
+ 739, 244, 747, 366, 366, 366, 745, 912, 245, 245,
+ 342, 343, 1018, 900, 899, 247, 291, 898, 897, 366,
+ 367, 368, 1019, 896, 1053, 367, 368, 1020, 392, 393,
+
+ 1021, 895, 1054, 392, 393, 1022, 894, 893, 892, 891,
+ 911, 887, 886, 366, 366, 366, 366, 367, 368, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 386, 366, 366, 386, 386, 386, 386, 387, 366, 366,
+ 366, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+ 386, 386, 386, 386, 366, 386, 386, 386, 386, 386,
+ 386, 748, 386, 386, 386, 749, 386, 386, 386, 386,
+ 386, 386, 386, 386, 386, 386, 386, 386, 366, 366,
+ 392, 393, 885, 884, 883, 882, 881, 880, 879, 878,
+ 877, 876, 875, 871, 870, 869, 591, 591, 591, 591,
+
+ 868, 608, 773, 245, 866, 591, 591, 591, 367, 743,
+ 291, 865, 744, 864, 392, 755, 860, 856, 756, 591,
+ 591, 591, 591, 591, 591, 391, 391, 392, 393, 391,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
- 391, 391, 370, 370, 396, 396, 397, 398, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 1094,
- 396, 396, 1094, 1094, 1094, 1094, 772, 396, 396, 396,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
-
- 1094, 1094, 1094, 396, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 396, 396, 396,
- 396, 397, 398, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 417, 396, 396, 417, 417, 417,
- 417, 418, 396, 396, 396, 417, 417, 417, 417, 417,
- 417, 417, 417, 417, 417, 417, 417, 417, 396, 417,
- 417, 417, 417, 417, 417, 417, 417, 417, 870, 417,
- 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
- 417, 417, 396, 396, 422, 422, 1094, 422, 422, 422,
-
- 422, 422, 422, 422, 422, 422, 422, 422, 422, 1094,
- 422, 422, 1094, 1094, 1094, 1094, 787, 422, 422, 422,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 422, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 422, 422, 422,
- 422, 1094, 422, 422, 422, 422, 422, 422, 422, 422,
- 422, 422, 422, 422, 440, 422, 422, 440, 440, 440,
- 440, 441, 422, 422, 422, 440, 440, 440, 440, 440,
- 440, 440, 440, 440, 440, 440, 440, 440, 422, 440,
-
- 440, 440, 440, 440, 440, 440, 440, 440, 874, 440,
- 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
- 440, 440, 422, 422, 297, 297, 1094, 297, 297, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 297, 315,
- 297, 297, 315, 315, 315, 315, 316, 297, 297, 297,
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
- 315, 315, 315, 297, 315, 315, 315, 315, 315, 315,
- 315, 315, 315, 315, 923, 315, 315, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 315, 297, 297, 325,
- 325, 325, 325, 325, 325, 1094, 325, 325, 325, 325,
-
- 325, 325, 325, 325, 340, 325, 325, 340, 340, 340,
- 340, 341, 325, 325, 325, 340, 340, 340, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 325, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 927,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
- 340, 340, 325, 325, 182, 1094, 182, 182, 182, 182,
- 182, 182, 182, 182, 182, 185, 1094, 1094, 185, 185,
- 193, 1094, 193, 193, 193, 193, 193, 193, 193, 193,
- 193, 247, 247, 247, 247, 247, 247, 247, 247, 263,
- 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
-
- 284, 284, 284, 284, 287, 1094, 287, 1094, 287, 287,
- 287, 287, 291, 291, 291, 291, 291, 291, 291, 297,
- 1094, 297, 297, 297, 297, 297, 297, 297, 297, 297,
- 299, 1094, 299, 299, 299, 299, 299, 299, 299, 299,
- 299, 302, 1094, 302, 302, 302, 302, 302, 302, 302,
- 302, 302, 315, 1094, 315, 315, 315, 315, 315, 315,
- 315, 315, 315, 246, 246, 246, 246, 246, 246, 246,
- 325, 325, 1094, 325, 325, 325, 325, 325, 325, 325,
- 325, 326, 326, 326, 326, 326, 326, 326, 326, 326,
- 326, 326, 340, 340, 1094, 340, 340, 340, 340, 340,
-
- 340, 340, 340, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 347, 347, 347, 347, 347, 347,
- 347, 347, 347, 347, 347, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 365, 365, 365, 365,
- 365, 365, 365, 365, 365, 365, 365, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 373, 373,
- 373, 373, 373, 373, 373, 373, 373, 373, 373, 377,
- 377, 377, 377, 377, 377, 377, 377, 377, 377, 377,
+ 915, 391, 391, 852, 500, 745, 244, 765, 391, 391,
+ 391, 757, 850, 245, 849, 846, 845, 842, 536, 689,
+ 247, 840, 839, 836, 391, 835, 834, 833, 500, 669,
+ 661, 826, 825, 824, 823, 822, 821, 818, 817, 816,
+ 815, 814, 813, 962, 812, 811, 810, 809, 391, 391,
+ 391, 391, 392, 393, 391, 391, 391, 391, 391, 391,
+
+ 391, 391, 391, 391, 391, 411, 391, 391, 411, 411,
+ 411, 411, 412, 391, 391, 391, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411, 411, 391,
+ 411, 411, 411, 411, 411, 411, 766, 411, 411, 411,
+ 767, 411, 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 411, 391, 391, 605, 605, 605, 605, 808,
+ 807, 806, 244, 805, 605, 605, 605, 392, 755, 245,
+ 804, 756, 803, 392, 761, 802, 247, 762, 605, 605,
+ 605, 605, 605, 605, 416, 416, 801, 416, 416, 416,
+ 416, 416, 416, 416, 416, 416, 416, 416, 416, 963,
+
+ 416, 416, 800, 799, 757, 798, 780, 416, 416, 416,
+ 763, 797, 796, 795, 392, 761, 794, 793, 762, 792,
+ 791, 790, 789, 416, 788, 787, 786, 785, 784, 783,
+ 773, 771, 770, 707, 706, 701, 700, 699, 689, 687,
+ 686, 681, 680, 679, 678, 516, 643, 416, 416, 416,
+ 416, 763, 416, 416, 416, 416, 416, 416, 416, 416,
+ 416, 416, 416, 416, 433, 416, 416, 433, 433, 433,
+ 433, 434, 416, 416, 416, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433, 416, 433,
+ 433, 433, 433, 433, 433, 781, 433, 433, 433, 782,
+
+ 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 416, 416, 296, 296, 626, 296, 296, 296,
+ 296, 296, 296, 296, 296, 296, 296, 296, 296, 622,
+ 296, 296, 669, 244, 664, 661, 696, 296, 296, 296,
+ 245, 659, 658, 657, 656, 655, 654, 247, 653, 652,
+ 651, 650, 649, 296, 648, 647, 646, 642, 641, 640,
+ 639, 638, 637, 636, 635, 634, 633, 632, 631, 630,
+ 629, 628, 625, 624, 621, 909, 620, 296, 296, 296,
+ 296, 619, 296, 296, 296, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 313, 296, 296, 313, 313, 313,
+
+ 313, 314, 296, 296, 296, 313, 313, 313, 313, 313,
+ 313, 313, 313, 313, 313, 313, 313, 313, 296, 313,
+ 313, 313, 313, 313, 313, 313, 313, 313, 841, 313,
+ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+ 313, 313, 296, 296, 323, 323, 323, 323, 323, 323,
+ 618, 323, 323, 323, 323, 323, 323, 323, 323, 617,
+ 323, 323, 616, 615, 614, 613, 711, 323, 323, 323,
+ 599, 244, 598, 419, 545, 544, 541, 540, 245, 539,
+ 527, 526, 299, 323, 500, 247, 521, 520, 516, 488,
+ 486, 462, 459, 457, 512, 448, 500, 291, 499, 493,
+
+ 492, 489, 477, 476, 475, 468, 467, 323, 323, 323,
+ 323, 323, 323, 323, 323, 910, 323, 323, 323, 323,
+ 323, 323, 323, 323, 337, 323, 323, 337, 337, 337,
+ 337, 338, 323, 323, 323, 337, 337, 337, 337, 337,
+ 337, 337, 337, 337, 337, 337, 337, 337, 323, 337,
+ 337, 337, 337, 337, 337, 337, 337, 337, 851, 337,
+ 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
+ 337, 337, 323, 323, 341, 341, 342, 343, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 466,
+ 341, 341, 463, 453, 450, 449, 729, 341, 341, 341,
+
+ 446, 445, 444, 183, 432, 419, 417, 336, 291, 317,
+ 312, 299, 297, 341, 278, 183, 278, 183, 190, 181,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 341, 341, 341,
+ 341, 342, 343, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 361, 341, 341, 361, 361, 361,
+ 361, 362, 341, 341, 341, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 341, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 855, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+
+ 361, 361, 341, 341, 366, 366, 367, 368, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 1087,
+ 366, 366, 1087, 1087, 1087, 1087, 747, 366, 366, 366,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 366, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 366, 366, 366,
+ 366, 367, 368, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 386, 366, 366, 386, 386, 386,
+ 386, 387, 366, 366, 366, 386, 386, 386, 386, 386,
+
+ 386, 386, 386, 386, 386, 386, 386, 386, 366, 386,
+ 386, 386, 386, 386, 386, 386, 386, 386, 859, 386,
+ 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+ 386, 386, 366, 366, 391, 391, 392, 393, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 1087,
+ 391, 391, 1087, 1087, 1087, 1087, 765, 391, 391, 391,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 391, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 391, 391, 391,
+
+ 391, 392, 393, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 411, 391, 391, 411, 411, 411,
+ 411, 412, 391, 391, 391, 411, 411, 411, 411, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411, 391, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411, 863, 411,
+ 411, 411, 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 391, 391, 416, 416, 1087, 416, 416, 416,
+ 416, 416, 416, 416, 416, 416, 416, 416, 416, 1087,
+ 416, 416, 1087, 1087, 1087, 1087, 780, 416, 416, 416,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+
+ 1087, 1087, 1087, 416, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 416, 416, 416,
+ 416, 1087, 416, 416, 416, 416, 416, 416, 416, 416,
+ 416, 416, 416, 416, 433, 416, 416, 433, 433, 433,
+ 433, 434, 416, 416, 416, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433, 416, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433, 867, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 416, 416, 296, 296, 1087, 296, 296, 296,
+
+ 296, 296, 296, 296, 296, 296, 296, 296, 296, 313,
+ 296, 296, 313, 313, 313, 313, 314, 296, 296, 296,
+ 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
+ 313, 313, 313, 296, 313, 313, 313, 313, 313, 313,
+ 313, 313, 313, 313, 916, 313, 313, 313, 313, 313,
+ 313, 313, 313, 313, 313, 313, 313, 296, 296, 323,
+ 323, 323, 323, 323, 323, 1087, 323, 323, 323, 323,
+ 323, 323, 323, 323, 337, 323, 323, 337, 337, 337,
+ 337, 338, 323, 323, 323, 337, 337, 337, 337, 337,
+ 337, 337, 337, 337, 337, 337, 337, 337, 323, 337,
+
+ 337, 337, 337, 337, 337, 337, 337, 337, 337, 920,
+ 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
+ 337, 337, 323, 323, 182, 1087, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 185, 1087, 1087, 185, 185,
+ 193, 1087, 193, 193, 193, 193, 193, 193, 193, 193,
+ 193, 246, 246, 246, 246, 246, 246, 246, 246, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 283, 283, 283, 283, 286, 1087, 286, 1087, 286, 286,
+ 286, 286, 290, 290, 290, 290, 290, 290, 290, 296,
+ 1087, 296, 296, 296, 296, 296, 296, 296, 296, 296,
+
+ 298, 1087, 298, 298, 298, 298, 298, 298, 298, 298,
+ 298, 301, 1087, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 313, 1087, 313, 313, 313, 313, 313, 313,
+ 313, 313, 313, 245, 245, 245, 245, 245, 245, 245,
+ 323, 323, 1087, 323, 323, 323, 323, 323, 323, 323,
+ 323, 324, 324, 324, 324, 324, 324, 324, 324, 324,
+ 324, 324, 337, 337, 1087, 337, 337, 337, 337, 337,
+ 337, 337, 337, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 348, 348, 348, 348, 348,
+
+ 348, 348, 348, 348, 348, 348, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 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,
+ 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, 411, 411, 411, 411, 411, 411,
+
+ 411, 411, 411, 411, 411, 416, 1087, 416, 416, 416,
+ 416, 416, 416, 416, 416, 416, 418, 1087, 418, 418,
+ 418, 418, 418, 418, 418, 418, 418, 421, 1087, 421,
+ 421, 421, 421, 421, 421, 421, 421, 421, 433, 1087,
+ 433, 433, 433, 433, 433, 433, 433, 433, 433, 185,
+ 1087, 1087, 185, 185, 193, 1087, 193, 193, 193, 193,
+ 193, 193, 193, 193, 193, 443, 1087, 1087, 443, 443,
+ 443, 474, 1087, 1087, 474, 245, 245, 245, 245, 245,
+ 245, 245, 246, 246, 246, 246, 246, 246, 246, 246,
+ 501, 1087, 1087, 1087, 1087, 501, 501, 501, 501, 262,
+
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 515, 515, 515, 515, 515, 515, 518, 518, 518, 518,
+ 519, 1087, 519, 519, 519, 519, 290, 290, 290, 290,
+ 290, 290, 290, 296, 1087, 296, 296, 296, 296, 296,
+ 296, 296, 296, 296, 298, 1087, 298, 298, 298, 298,
+ 298, 298, 298, 298, 298, 301, 1087, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 313, 1087, 313, 313,
+ 313, 313, 313, 313, 313, 313, 313, 323, 323, 1087,
+ 323, 323, 323, 323, 323, 323, 323, 323, 324, 324,
+ 324, 324, 324, 324, 324, 324, 324, 324, 324, 337,
+
+ 337, 1087, 337, 337, 337, 337, 337, 337, 337, 337,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 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, 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, 411, 411, 411, 411, 411, 411, 411, 411, 411,
+ 411, 411, 416, 1087, 416, 416, 416, 416, 416, 416,
+ 416, 416, 416, 418, 1087, 418, 418, 418, 418, 418,
+ 418, 418, 418, 418, 421, 1087, 421, 421, 421, 421,
+ 421, 421, 421, 421, 421, 433, 1087, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 185, 1087, 1087, 185,
+ 185, 443, 1087, 1087, 443, 443, 443, 474, 1087, 1087,
+
+ 474, 660, 1087, 660, 660, 660, 660, 660, 660, 660,
+ 660, 660, 663, 1087, 663, 663, 663, 663, 663, 663,
+ 663, 663, 663, 665, 1087, 665, 665, 665, 665, 665,
+ 665, 665, 665, 665, 668, 668, 668, 668, 668, 668,
+ 668, 246, 246, 246, 246, 246, 246, 246, 246, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 515, 515, 515, 515, 515, 515, 677, 1087, 677, 677,
+ 677, 677, 519, 1087, 519, 519, 519, 519, 290, 290,
+ 290, 290, 290, 290, 290, 296, 1087, 296, 296, 296,
+ 296, 296, 296, 296, 296, 296, 688, 1087, 688, 688,
+
+ 688, 688, 688, 688, 688, 688, 688, 691, 1087, 691,
+ 691, 691, 691, 691, 691, 691, 691, 691, 692, 1087,
+ 692, 692, 692, 692, 692, 692, 692, 692, 692, 695,
+ 1087, 695, 695, 695, 695, 695, 695, 695, 695, 695,
+ 245, 245, 245, 245, 245, 245, 245, 323, 323, 1087,
+ 323, 323, 323, 323, 323, 323, 323, 323, 708, 708,
+ 708, 708, 708, 708, 708, 708, 708, 708, 708, 710,
+ 710, 1087, 710, 710, 710, 710, 710, 710, 710, 710,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 718, 718, 718, 718, 718, 718, 718, 718, 718,
+
+ 718, 718, 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 724, 724, 724, 724, 724, 724, 724,
+ 724, 724, 724, 724, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 736, 736, 736, 736,
+ 736, 736, 736, 736, 736, 736, 736, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 740, 742, 742,
+ 742, 742, 742, 742, 742, 742, 742, 742, 742, 746,
+ 746, 746, 746, 746, 746, 746, 746, 746, 746, 746,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
- 391, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 399, 399, 399, 399, 399, 399, 399, 399,
- 399, 399, 399, 403, 403, 403, 403, 403, 403, 403,
- 403, 403, 403, 403, 417, 417, 417, 417, 417, 417,
- 417, 417, 417, 417, 417, 422, 1094, 422, 422, 422,
- 422, 422, 422, 422, 422, 422, 424, 1094, 424, 424,
- 424, 424, 424, 424, 424, 424, 424, 427, 1094, 427,
- 427, 427, 427, 427, 427, 427, 427, 427, 440, 1094,
- 440, 440, 440, 440, 440, 440, 440, 440, 440, 185,
- 1094, 1094, 185, 185, 193, 1094, 193, 193, 193, 193,
- 193, 193, 193, 193, 193, 450, 1094, 1094, 450, 450,
-
- 450, 481, 1094, 1094, 481, 246, 246, 246, 246, 246,
- 246, 246, 247, 247, 247, 247, 247, 247, 247, 247,
- 508, 1094, 1094, 1094, 1094, 508, 508, 508, 508, 263,
- 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
- 522, 522, 522, 522, 522, 522, 525, 525, 525, 525,
- 526, 1094, 526, 526, 526, 526, 291, 291, 291, 291,
- 291, 291, 291, 297, 1094, 297, 297, 297, 297, 297,
- 297, 297, 297, 297, 299, 1094, 299, 299, 299, 299,
- 299, 299, 299, 299, 299, 302, 1094, 302, 302, 302,
- 302, 302, 302, 302, 302, 302, 315, 1094, 315, 315,
-
- 315, 315, 315, 315, 315, 315, 315, 325, 325, 1094,
- 325, 325, 325, 325, 325, 325, 325, 325, 326, 326,
- 326, 326, 326, 326, 326, 326, 326, 326, 326, 340,
- 340, 1094, 340, 340, 340, 340, 340, 340, 340, 340,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 347, 347, 347, 347, 347, 347, 347, 347, 347,
- 347, 347, 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 373, 373, 373, 373, 373,
-
- 373, 373, 373, 373, 373, 373, 377, 377, 377, 377,
- 377, 377, 377, 377, 377, 377, 377, 391, 391, 391,
- 391, 391, 391, 391, 391, 391, 391, 391, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 399,
- 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
- 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
- 403, 417, 417, 417, 417, 417, 417, 417, 417, 417,
- 417, 417, 422, 1094, 422, 422, 422, 422, 422, 422,
- 422, 422, 422, 424, 1094, 424, 424, 424, 424, 424,
- 424, 424, 424, 424, 427, 1094, 427, 427, 427, 427,
-
- 427, 427, 427, 427, 427, 440, 1094, 440, 440, 440,
- 440, 440, 440, 440, 440, 440, 185, 1094, 1094, 185,
- 185, 450, 1094, 1094, 450, 450, 450, 481, 1094, 1094,
- 481, 667, 1094, 667, 667, 667, 667, 667, 667, 667,
- 667, 667, 670, 1094, 670, 670, 670, 670, 670, 670,
- 670, 670, 670, 672, 1094, 672, 672, 672, 672, 672,
- 672, 672, 672, 672, 675, 675, 675, 675, 675, 675,
- 675, 247, 247, 247, 247, 247, 247, 247, 247, 263,
- 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
- 522, 522, 522, 522, 522, 522, 684, 1094, 684, 684,
-
- 684, 684, 526, 1094, 526, 526, 526, 526, 291, 291,
- 291, 291, 291, 291, 291, 297, 1094, 297, 297, 297,
- 297, 297, 297, 297, 297, 297, 695, 1094, 695, 695,
- 695, 695, 695, 695, 695, 695, 695, 698, 1094, 698,
- 698, 698, 698, 698, 698, 698, 698, 698, 699, 1094,
- 699, 699, 699, 699, 699, 699, 699, 699, 699, 702,
- 1094, 702, 702, 702, 702, 702, 702, 702, 702, 702,
- 246, 246, 246, 246, 246, 246, 246, 325, 325, 1094,
- 325, 325, 325, 325, 325, 325, 325, 325, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 715, 717,
-
- 717, 1094, 717, 717, 717, 717, 717, 717, 717, 717,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 725, 725, 725, 725, 725, 725, 725, 725, 725,
- 725, 725, 729, 729, 729, 729, 729, 729, 729, 729,
- 729, 729, 729, 731, 731, 731, 731, 731, 731, 731,
- 731, 731, 731, 731, 735, 735, 735, 735, 735, 735,
- 735, 735, 735, 735, 735, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 743, 743, 743, 743,
- 743, 743, 743, 743, 743, 743, 743, 747, 747, 747,
- 747, 747, 747, 747, 747, 747, 747, 747, 749, 749,
-
- 749, 749, 749, 749, 749, 749, 749, 749, 749, 753,
- 753, 753, 753, 753, 753, 753, 753, 753, 753, 753,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 761, 761, 761, 761, 761, 761, 761, 761, 761,
- 761, 761, 765, 765, 765, 765, 765, 765, 765, 765,
- 765, 765, 765, 767, 767, 767, 767, 767, 767, 767,
- 767, 767, 767, 767, 771, 771, 771, 771, 771, 771,
- 771, 771, 771, 771, 771, 422, 1094, 422, 422, 422,
- 422, 422, 422, 422, 422, 422, 779, 1094, 779, 779,
- 779, 779, 779, 779, 779, 779, 779, 782, 1094, 782,
-
- 782, 782, 782, 782, 782, 782, 782, 782, 783, 1094,
- 783, 783, 783, 783, 783, 783, 783, 783, 783, 786,
- 1094, 786, 786, 786, 786, 786, 786, 786, 786, 786,
- 450, 1094, 1094, 450, 450, 450, 667, 1094, 667, 667,
- 667, 667, 667, 667, 667, 667, 667, 670, 1094, 670,
- 670, 670, 670, 670, 670, 670, 670, 670, 672, 1094,
- 672, 672, 672, 672, 672, 672, 672, 672, 672, 675,
- 675, 675, 675, 675, 675, 675, 247, 247, 247, 247,
- 247, 247, 247, 247, 263, 263, 263, 263, 263, 263,
- 263, 263, 263, 263, 263, 684, 1094, 684, 684, 684,
-
- 684, 526, 1094, 526, 526, 526, 526, 291, 291, 291,
- 291, 291, 291, 291, 297, 1094, 297, 297, 297, 297,
- 297, 297, 297, 297, 297, 695, 1094, 695, 695, 695,
- 695, 695, 695, 695, 695, 695, 698, 1094, 698, 698,
- 698, 698, 698, 698, 698, 698, 698, 699, 1094, 699,
- 699, 699, 699, 699, 699, 699, 699, 699, 702, 1094,
- 702, 702, 702, 702, 702, 702, 702, 702, 702, 246,
- 246, 246, 246, 246, 246, 246, 325, 325, 1094, 325,
- 325, 325, 325, 325, 325, 325, 325, 715, 715, 715,
- 715, 715, 715, 715, 715, 715, 715, 715, 717, 717,
-
- 1094, 717, 717, 717, 717, 717, 717, 717, 717, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
- 725, 729, 729, 729, 729, 729, 729, 729, 729, 729,
- 729, 729, 731, 731, 731, 731, 731, 731, 731, 731,
- 731, 731, 731, 735, 735, 735, 735, 735, 735, 735,
- 735, 735, 735, 735, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 743, 743, 743, 743, 743,
- 743, 743, 743, 743, 743, 743, 747, 747, 747, 747,
- 747, 747, 747, 747, 747, 747, 747, 749, 749, 749,
-
- 749, 749, 749, 749, 749, 749, 749, 749, 753, 753,
- 753, 753, 753, 753, 753, 753, 753, 753, 753, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
- 761, 765, 765, 765, 765, 765, 765, 765, 765, 765,
- 765, 765, 767, 767, 767, 767, 767, 767, 767, 767,
- 767, 767, 767, 771, 771, 771, 771, 771, 771, 771,
- 771, 771, 771, 771, 422, 1094, 422, 422, 422, 422,
- 422, 422, 422, 422, 422, 779, 1094, 779, 779, 779,
- 779, 779, 779, 779, 779, 779, 782, 1094, 782, 782,
-
- 782, 782, 782, 782, 782, 782, 782, 783, 1094, 783,
- 783, 783, 783, 783, 783, 783, 783, 783, 786, 1094,
- 786, 786, 786, 786, 786, 786, 786, 786, 786, 450,
- 1094, 1094, 450, 450, 450, 247, 247, 247, 247, 247,
- 247, 247, 247, 263, 263, 263, 263, 263, 263, 263,
- 263, 263, 263, 263, 526, 1094, 526, 526, 526, 526,
- 291, 291, 291, 291, 291, 291, 291, 297, 1094, 297,
- 297, 297, 297, 297, 297, 297, 297, 297, 246, 246,
- 246, 246, 246, 246, 246, 325, 325, 1094, 325, 325,
- 325, 325, 325, 325, 325, 325, 23, 1094, 1094, 1094,
-
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094
+ 391, 754, 754, 754, 754, 754, 754, 754, 754, 754,
+ 754, 754, 758, 758, 758, 758, 758, 758, 758, 758,
+ 758, 758, 758, 760, 760, 760, 760, 760, 760, 760,
+ 760, 760, 760, 760, 764, 764, 764, 764, 764, 764,
+ 764, 764, 764, 764, 764, 416, 1087, 416, 416, 416,
+ 416, 416, 416, 416, 416, 416, 772, 1087, 772, 772,
+ 772, 772, 772, 772, 772, 772, 772, 775, 1087, 775,
+ 775, 775, 775, 775, 775, 775, 775, 775, 776, 1087,
+ 776, 776, 776, 776, 776, 776, 776, 776, 776, 779,
+ 1087, 779, 779, 779, 779, 779, 779, 779, 779, 779,
+
+ 443, 1087, 1087, 443, 443, 443, 660, 1087, 660, 660,
+ 660, 660, 660, 660, 660, 660, 660, 663, 1087, 663,
+ 663, 663, 663, 663, 663, 663, 663, 663, 665, 1087,
+ 665, 665, 665, 665, 665, 665, 665, 665, 665, 668,
+ 668, 668, 668, 668, 668, 668, 246, 246, 246, 246,
+ 246, 246, 246, 246, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 677, 1087, 677, 677, 677,
+ 677, 519, 1087, 519, 519, 519, 519, 290, 290, 290,
+ 290, 290, 290, 290, 296, 1087, 296, 296, 296, 296,
+ 296, 296, 296, 296, 296, 688, 1087, 688, 688, 688,
+
+ 688, 688, 688, 688, 688, 688, 691, 1087, 691, 691,
+ 691, 691, 691, 691, 691, 691, 691, 692, 1087, 692,
+ 692, 692, 692, 692, 692, 692, 692, 692, 695, 1087,
+ 695, 695, 695, 695, 695, 695, 695, 695, 695, 245,
+ 245, 245, 245, 245, 245, 245, 323, 323, 1087, 323,
+ 323, 323, 323, 323, 323, 323, 323, 708, 708, 708,
+ 708, 708, 708, 708, 708, 708, 708, 708, 710, 710,
+ 1087, 710, 710, 710, 710, 710, 710, 710, 710, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 718, 718, 718, 718, 718, 718, 718, 718, 718, 718,
+
+ 718, 722, 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 724, 724, 724, 724, 724, 724, 724, 724,
+ 724, 724, 724, 728, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 736, 736, 736, 736, 736,
+ 736, 736, 736, 736, 736, 736, 740, 740, 740, 740,
+ 740, 740, 740, 740, 740, 740, 740, 742, 742, 742,
+ 742, 742, 742, 742, 742, 742, 742, 742, 746, 746,
+ 746, 746, 746, 746, 746, 746, 746, 746, 746, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+
+ 754, 754, 754, 754, 754, 754, 754, 754, 754, 754,
+ 754, 758, 758, 758, 758, 758, 758, 758, 758, 758,
+ 758, 758, 760, 760, 760, 760, 760, 760, 760, 760,
+ 760, 760, 760, 764, 764, 764, 764, 764, 764, 764,
+ 764, 764, 764, 764, 416, 1087, 416, 416, 416, 416,
+ 416, 416, 416, 416, 416, 772, 1087, 772, 772, 772,
+ 772, 772, 772, 772, 772, 772, 775, 1087, 775, 775,
+ 775, 775, 775, 775, 775, 775, 775, 776, 1087, 776,
+ 776, 776, 776, 776, 776, 776, 776, 776, 779, 1087,
+ 779, 779, 779, 779, 779, 779, 779, 779, 779, 443,
+
+ 1087, 1087, 443, 443, 443, 246, 246, 246, 246, 246,
+ 246, 246, 246, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 519, 1087, 519, 519, 519, 519,
+ 290, 290, 290, 290, 290, 290, 290, 296, 1087, 296,
+ 296, 296, 296, 296, 296, 296, 296, 296, 245, 245,
+ 245, 245, 245, 245, 245, 323, 323, 1087, 323, 323,
+ 323, 323, 323, 323, 323, 323, 23, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087
} ;
-static yyconst flex_int16_t yy_chk[7163] =
+static yyconst flex_int16_t yy_chk[7033] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1640,12 +1624,12 @@
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 33, 2, 2, 29,
- 35, 4, 236, 4, 4, 1088, 6, 40, 6, 6,
- 33, 236, 35, 8, 40, 8, 8, 55, 2, 3,
+ 35, 4, 235, 4, 4, 1081, 6, 40, 6, 6,
+ 33, 235, 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, 1084,
+ 3, 3, 3, 3, 10, 13, 10, 10, 12, 1077,
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,
@@ -1678,8 +1662,8 @@
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 14, 1083, 14, 14, 31, 14, 31,
- 82, 31, 31, 60, 1082, 60, 60, 82, 122, 122,
+ 11, 11, 11, 14, 1076, 14, 14, 31, 14, 31,
+ 82, 31, 31, 60, 1075, 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,
@@ -1711,720 +1695,706 @@
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, 1080,
- 38, 39, 39, 39, 39, 47, 233, 39, 91, 39,
+ 36, 47, 38, 27, 38, 38, 38, 38, 47, 1073,
+ 38, 39, 39, 39, 39, 47, 232, 39, 91, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 233, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 232, 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, 976, 53, 41, 41,
- 51, 52, 49, 41, 53, 41, 216, 51, 41, 49,
- 56, 53, 41, 112, 976, 41, 42, 112, 42, 42,
-
- 42, 42, 112, 41, 67, 48, 67, 67, 1079, 42,
- 52, 41, 48, 42, 53, 48, 48, 48, 48, 48,
- 49, 69, 69, 660, 51, 42, 43, 53, 43, 460,
- 56, 43, 660, 50, 43, 43, 43, 43, 43, 43,
- 50, 54, 43, 84, 43, 43, 460, 50, 54, 57,
- 84, 57, 57, 59, 59, 54, 66, 58, 58, 58,
- 58, 231, 69, 66, 57, 61, 61, 61, 61, 231,
- 66, 50, 58, 84, 1077, 59, 59, 50, 62, 64,
- 62, 62, 62, 62, 121, 54, 167, 64, 64, 64,
- 64, 64, 64, 66, 59, 63, 124, 124, 64, 68,
-
- 68, 68, 68, 71, 71, 71, 71, 73, 73, 73,
- 73, 87, 87, 63, 63, 1076, 63, 121, 63, 167,
- 63, 63, 63, 63, 213, 63, 213, 63, 63, 63,
- 75, 323, 75, 63, 75, 75, 77, 78, 77, 77,
- 77, 77, 85, 85, 85, 85, 980, 78, 78, 78,
- 78, 80, 87, 80, 80, 80, 80, 86, 86, 86,
- 86, 131, 131, 214, 80, 214, 83, 323, 80, 83,
- 83, 83, 83, 83, 78, 78, 136, 136, 1073, 78,
- 80, 93, 131, 93, 93, 93, 93, 94, 94, 94,
- 94, 980, 100, 96, 100, 100, 101, 101, 101, 101,
-
- 96, 234, 109, 96, 109, 109, 234, 96, 104, 104,
- 104, 104, 126, 126, 120, 94, 120, 120, 96, 94,
- 95, 126, 95, 95, 95, 95, 96, 105, 105, 105,
- 105, 116, 95, 95, 138, 138, 104, 95, 116, 95,
- 104, 116, 95, 150, 150, 116, 95, 810, 113, 95,
- 113, 113, 113, 113, 140, 140, 116, 95, 134, 134,
- 134, 134, 810, 140, 116, 95, 98, 98, 810, 98,
- 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 1070, 98, 98, 114, 114, 114, 114, 98, 98,
- 98, 98, 463, 106, 463, 106, 106, 106, 106, 135,
-
- 135, 135, 135, 152, 152, 98, 106, 127, 127, 849,
- 106, 849, 114, 125, 125, 239, 114, 125, 154, 154,
- 239, 127, 106, 127, 127, 127, 127, 154, 1069, 98,
- 98, 99, 99, 239, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 863, 99, 99, 863,
- 125, 145, 145, 99, 99, 99, 99, 130, 148, 148,
- 148, 148, 128, 128, 130, 139, 139, 130, 279, 139,
- 99, 130, 145, 279, 182, 1068, 99, 206, 128, 128,
- 128, 128, 130, 149, 149, 149, 149, 153, 153, 206,
- 130, 153, 222, 222, 99, 99, 115, 1066, 115, 115,
-
- 115, 115, 139, 225, 225, 225, 128, 182, 115, 115,
- 128, 159, 159, 115, 176, 115, 176, 176, 115, 929,
- 141, 141, 115, 929, 153, 115, 162, 162, 162, 162,
- 230, 230, 159, 115, 141, 1065, 141, 141, 141, 141,
- 290, 115, 118, 118, 118, 118, 118, 118, 290, 118,
- 118, 118, 118, 118, 118, 118, 118, 1064, 118, 118,
- 163, 163, 163, 163, 118, 118, 118, 118, 155, 155,
- 169, 299, 169, 169, 169, 169, 244, 244, 142, 142,
- 867, 118, 155, 867, 155, 155, 155, 155, 177, 177,
- 177, 177, 263, 263, 142, 142, 142, 142, 178, 974,
-
- 178, 178, 265, 265, 299, 118, 118, 119, 119, 119,
- 119, 119, 119, 178, 119, 119, 119, 119, 119, 119,
- 119, 119, 142, 119, 119, 1063, 142, 424, 144, 119,
- 119, 119, 119, 232, 158, 144, 291, 232, 144, 156,
- 156, 158, 144, 291, 158, 974, 119, 179, 158, 179,
- 179, 232, 119, 144, 854, 156, 156, 156, 156, 158,
- 424, 144, 186, 186, 186, 186, 1056, 158, 266, 266,
- 119, 119, 129, 129, 170, 170, 170, 170, 187, 187,
- 187, 187, 854, 156, 267, 267, 129, 156, 129, 129,
- 129, 129, 188, 188, 188, 188, 501, 172, 129, 129,
-
- 276, 276, 170, 129, 172, 129, 170, 172, 129, 309,
- 309, 172, 129, 1051, 247, 129, 189, 189, 189, 189,
- 1050, 247, 172, 129, 196, 196, 196, 196, 247, 501,
- 172, 129, 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 507, 132, 132,
- 269, 251, 269, 269, 132, 132, 132, 132, 251, 197,
- 925, 197, 197, 197, 197, 251, 200, 200, 200, 200,
- 211, 132, 197, 1047, 211, 253, 197, 200, 211, 223,
- 507, 223, 253, 925, 223, 223, 223, 223, 197, 253,
- 312, 312, 312, 200, 977, 132, 132, 133, 133, 133,
+ 41, 41, 121, 49, 52, 54, 51, 56, 41, 41,
+ 49, 52, 54, 51, 213, 41, 213, 49, 41, 54,
+ 51, 214, 41, 214, 42, 41, 42, 42, 42, 42,
+
+ 69, 69, 48, 41, 456, 121, 456, 42, 206, 48,
+ 52, 41, 48, 48, 48, 48, 48, 56, 49, 54,
+ 206, 112, 1072, 42, 43, 112, 43, 51, 1070, 43,
+ 112, 50, 43, 43, 43, 43, 43, 43, 50, 53,
+ 43, 69, 43, 43, 1069, 50, 53, 57, 848, 57,
+ 57, 59, 59, 53, 66, 58, 58, 58, 58, 1066,
+ 84, 66, 57, 61, 61, 61, 61, 84, 66, 50,
+ 58, 124, 124, 59, 59, 50, 53, 62, 848, 62,
+ 62, 62, 62, 87, 87, 67, 64, 67, 67, 53,
+ 84, 66, 59, 63, 64, 64, 64, 64, 64, 64,
+
+ 68, 68, 68, 68, 653, 64, 71, 71, 71, 71,
+ 167, 63, 63, 653, 63, 182, 63, 1063, 63, 63,
+ 63, 63, 230, 63, 87, 63, 63, 63, 126, 126,
+ 230, 63, 73, 73, 73, 73, 75, 126, 75, 78,
+ 75, 75, 77, 167, 77, 77, 77, 77, 182, 78,
+ 78, 78, 78, 80, 1062, 80, 80, 80, 80, 85,
+ 85, 85, 85, 453, 83, 847, 80, 83, 83, 83,
+ 83, 83, 86, 86, 86, 86, 78, 78, 136, 136,
+ 453, 78, 80, 93, 1061, 93, 93, 93, 93, 94,
+ 94, 94, 94, 847, 100, 96, 100, 100, 101, 101,
+
+ 101, 101, 96, 233, 109, 96, 109, 109, 233, 96,
+ 104, 104, 104, 104, 138, 138, 120, 94, 120, 120,
+ 96, 94, 95, 1059, 95, 95, 95, 95, 96, 105,
+ 105, 105, 105, 116, 95, 95, 131, 131, 104, 1058,
+ 116, 95, 104, 116, 95, 150, 150, 116, 95, 1057,
+ 113, 95, 113, 113, 113, 113, 216, 131, 116, 95,
+ 134, 134, 134, 134, 152, 152, 116, 95, 98, 98,
+ 216, 98, 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 918, 98, 98, 114, 114, 114, 114,
+ 98, 98, 98, 98, 842, 106, 842, 106, 106, 106,
+
+ 106, 140, 140, 127, 127, 211, 918, 98, 106, 211,
+ 140, 125, 125, 211, 114, 125, 290, 127, 114, 127,
+ 127, 127, 127, 290, 106, 135, 135, 135, 135, 222,
+ 222, 98, 98, 99, 99, 321, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99, 125, 99,
+ 99, 128, 128, 145, 145, 99, 99, 99, 99, 148,
+ 148, 148, 148, 149, 149, 149, 149, 128, 128, 128,
+ 128, 321, 99, 852, 145, 852, 139, 139, 99, 130,
+ 139, 153, 153, 154, 154, 153, 130, 229, 229, 130,
+ 142, 142, 154, 130, 1056, 128, 99, 99, 115, 128,
+
+ 115, 115, 115, 115, 130, 973, 142, 142, 142, 142,
+ 115, 115, 130, 139, 141, 141, 856, 115, 153, 856,
+ 115, 159, 159, 176, 115, 176, 176, 115, 141, 298,
+ 141, 141, 141, 141, 142, 115, 278, 179, 142, 179,
+ 179, 278, 159, 115, 118, 118, 118, 118, 118, 118,
+ 973, 118, 118, 118, 118, 118, 118, 118, 118, 1049,
+ 118, 118, 298, 144, 243, 243, 118, 118, 118, 118,
+ 144, 246, 158, 144, 1044, 155, 155, 144, 246, 158,
+ 262, 262, 158, 118, 1043, 246, 158, 289, 144, 155,
+ 1040, 155, 155, 155, 155, 289, 144, 158, 162, 162,
+
+ 162, 162, 224, 224, 224, 158, 969, 118, 118, 119,
+ 119, 119, 119, 119, 119, 702, 119, 119, 119, 119,
+ 119, 119, 119, 119, 969, 119, 119, 163, 163, 163,
+ 163, 119, 119, 119, 119, 170, 170, 170, 170, 156,
+ 156, 169, 702, 169, 169, 169, 169, 231, 119, 264,
+ 264, 231, 172, 418, 119, 156, 156, 156, 156, 172,
+ 265, 265, 172, 170, 974, 231, 172, 170, 177, 177,
+ 177, 177, 119, 119, 129, 129, 271, 172, 975, 178,
+ 271, 178, 178, 156, 271, 172, 418, 156, 129, 1039,
+ 129, 129, 129, 129, 178, 186, 186, 186, 186, 494,
+
+ 129, 129, 187, 187, 187, 187, 238, 129, 250, 974,
+ 129, 238, 266, 266, 129, 250, 500, 129, 188, 188,
+ 188, 188, 250, 975, 238, 129, 189, 189, 189, 189,
+ 267, 267, 494, 129, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 500,
+ 132, 132, 196, 196, 196, 196, 132, 132, 132, 132,
+ 1011, 197, 1011, 197, 197, 197, 197, 200, 200, 200,
+ 200, 275, 275, 132, 197, 223, 1037, 223, 200, 249,
+ 223, 223, 223, 223, 308, 308, 249, 267, 1036, 268,
+ 197, 268, 268, 249, 200, 332, 332, 132, 132, 133,
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
- 133, 133, 977, 133, 133, 268, 268, 253, 253, 133,
- 133, 133, 133, 221, 221, 221, 221, 272, 334, 334,
- 294, 272, 1046, 249, 221, 272, 133, 294, 344, 344,
- 249, 250, 133, 249, 249, 249, 249, 249, 250, 314,
- 221, 252, 254, 871, 314, 250, 871, 255, 252, 254,
- 133, 133, 143, 143, 255, 252, 254, 1044, 256, 339,
- 257, 255, 268, 294, 339, 256, 143, 257, 143, 143,
- 143, 143, 256, 280, 257, 280, 280, 254, 143, 143,
- 859, 250, 859, 143, 262, 143, 262, 262, 143, 346,
-
- 346, 252, 143, 349, 349, 143, 1043, 255, 318, 262,
- 318, 318, 257, 143, 350, 350, 256, 281, 281, 281,
- 281, 143, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 1042, 146, 146,
- 283, 283, 283, 283, 146, 146, 146, 146, 285, 285,
- 285, 285, 285, 293, 361, 361, 293, 293, 293, 293,
- 293, 146, 295, 295, 295, 295, 296, 296, 296, 296,
- 303, 303, 303, 303, 310, 324, 310, 324, 324, 310,
- 310, 310, 310, 370, 370, 146, 146, 147, 147, 147,
+ 133, 133, 133, 133, 919, 133, 133, 261, 1035, 261,
+ 261, 133, 133, 133, 133, 221, 221, 221, 221, 249,
+ 1033, 279, 261, 279, 279, 248, 221, 919, 133, 310,
+ 310, 310, 248, 251, 133, 248, 248, 248, 248, 248,
+ 251, 293, 221, 252, 253, 341, 341, 251, 293, 254,
+ 252, 253, 133, 133, 143, 143, 254, 252, 253, 312,
+ 255, 336, 256, 254, 312, 534, 336, 255, 143, 256,
+ 143, 143, 143, 143, 255, 316, 256, 316, 316, 253,
+ 143, 143, 1032, 251, 293, 252, 252, 143, 1031, 322,
+
+ 143, 322, 322, 340, 143, 340, 340, 143, 534, 254,
+ 280, 280, 280, 280, 256, 143, 343, 343, 255, 282,
+ 282, 282, 282, 143, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146, 146, 1030,
+ 146, 146, 294, 294, 294, 294, 146, 146, 146, 146,
+ 284, 284, 284, 284, 284, 292, 346, 346, 292, 292,
+ 292, 292, 292, 146, 295, 295, 295, 295, 302, 302,
+ 302, 302, 309, 1028, 309, 347, 347, 309, 309, 309,
+ 309, 326, 326, 326, 326, 353, 353, 146, 146, 147,
147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
- 147, 147, 1040, 147, 147, 328, 328, 328, 328, 147,
- 147, 147, 147, 1018, 304, 1018, 304, 304, 304, 304,
- 372, 372, 305, 305, 305, 305, 147, 304, 337, 337,
- 337, 304, 147, 305, 308, 308, 308, 308, 326, 351,
- 351, 439, 326, 304, 1039, 308, 439, 326, 351, 305,
- 147, 147, 157, 157, 343, 709, 343, 343, 352, 352,
- 322, 308, 322, 322, 322, 322, 157, 352, 157, 157,
- 157, 157, 1038, 322, 375, 375, 549, 322, 157, 157,
- 356, 356, 709, 157, 1037, 157, 357, 357, 157, 322,
- 930, 335, 157, 335, 930, 157, 335, 335, 335, 335,
-
- 549, 347, 347, 157, 549, 347, 368, 368, 368, 368,
- 1035, 157, 160, 160, 160, 160, 160, 160, 160, 160,
- 160, 160, 160, 160, 160, 160, 160, 356, 160, 160,
- 376, 376, 926, 357, 160, 160, 160, 160, 347, 329,
- 710, 329, 329, 329, 329, 923, 330, 330, 330, 330,
- 923, 160, 329, 353, 353, 926, 329, 330, 348, 348,
- 387, 387, 348, 369, 369, 369, 369, 710, 329, 353,
- 353, 353, 353, 330, 1034, 160, 160, 161, 161, 161,
+ 147, 147, 147, 147, 703, 147, 147, 334, 334, 334,
+ 432, 147, 147, 147, 147, 432, 303, 1027, 303, 303,
+ 303, 303, 304, 304, 304, 304, 344, 344, 147, 303,
+ 344, 703, 353, 304, 147, 307, 307, 307, 307, 324,
+ 345, 345, 916, 324, 345, 303, 307, 916, 324, 304,
+ 366, 366, 147, 147, 157, 157, 320, 1026, 320, 320,
+ 320, 320, 307, 344, 328, 328, 328, 328, 157, 320,
+ 157, 157, 157, 157, 1013, 328, 1013, 345, 368, 368,
+ 157, 157, 922, 348, 348, 320, 922, 157, 354, 354,
+ 157, 328, 348, 333, 157, 333, 536, 157, 333, 333,
+
+ 333, 333, 349, 349, 1024, 157, 364, 364, 364, 364,
+ 1016, 349, 976, 157, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 160, 160, 536,
+ 160, 160, 371, 371, 1014, 354, 160, 160, 160, 160,
+ 1015, 327, 1015, 327, 327, 327, 327, 331, 331, 331,
+ 331, 356, 356, 160, 327, 358, 358, 976, 331, 1012,
+ 360, 360, 369, 369, 360, 1010, 369, 356, 356, 360,
+ 327, 358, 358, 358, 331, 372, 372, 160, 160, 161,
161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
- 161, 161, 1033, 161, 161, 348, 359, 359, 794, 161,
-
- 161, 161, 161, 333, 333, 333, 333, 355, 355, 377,
- 377, 794, 359, 359, 333, 931, 161, 794, 377, 931,
- 360, 360, 161, 355, 355, 355, 355, 541, 373, 373,
- 333, 360, 373, 360, 355, 1031, 360, 360, 360, 360,
- 161, 161, 171, 543, 171, 171, 171, 171, 374, 374,
- 355, 1023, 374, 924, 171, 171, 362, 362, 924, 171,
- 541, 171, 382, 382, 171, 373, 364, 364, 171, 981,
- 364, 171, 362, 362, 362, 364, 543, 378, 378, 171,
- 396, 396, 1021, 383, 383, 374, 378, 171, 174, 174,
- 1019, 174, 174, 174, 174, 174, 174, 174, 174, 174,
-
- 174, 174, 174, 1017, 174, 174, 358, 358, 855, 382,
- 174, 174, 174, 174, 981, 385, 385, 613, 379, 379,
- 398, 398, 358, 358, 358, 358, 1016, 174, 381, 381,
- 383, 385, 385, 358, 379, 379, 379, 379, 855, 390,
- 390, 401, 401, 390, 381, 381, 381, 381, 390, 358,
- 613, 174, 174, 175, 175, 381, 175, 175, 175, 175,
- 175, 175, 175, 175, 175, 175, 175, 175, 1015, 175,
- 175, 381, 384, 384, 1014, 175, 175, 175, 175, 394,
- 394, 394, 394, 1012, 386, 386, 402, 402, 384, 384,
- 384, 384, 175, 388, 388, 386, 1011, 386, 175, 384,
-
- 386, 386, 386, 386, 395, 395, 395, 395, 932, 388,
- 388, 388, 932, 403, 403, 384, 175, 175, 313, 313,
- 313, 313, 403, 404, 404, 413, 413, 313, 313, 313,
- 399, 399, 404, 1010, 399, 615, 400, 400, 408, 408,
- 400, 313, 313, 313, 313, 313, 313, 315, 315, 1009,
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
- 315, 315, 1008, 315, 315, 405, 405, 399, 615, 315,
- 315, 315, 315, 400, 411, 411, 412, 412, 434, 434,
- 1007, 405, 405, 405, 405, 408, 315, 412, 1006, 412,
- 411, 411, 412, 412, 412, 412, 416, 416, 477, 477,
-
- 416, 420, 420, 420, 420, 416, 421, 421, 421, 421,
- 315, 315, 316, 316, 1003, 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, 1002,
- 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- 317, 317, 927, 317, 317, 407, 407, 927, 486, 317,
-
- 317, 317, 317, 409, 409, 928, 486, 414, 414, 486,
- 928, 407, 407, 407, 407, 1001, 317, 428, 428, 428,
- 428, 1000, 407, 414, 414, 414, 536, 536, 430, 430,
- 430, 430, 437, 437, 437, 317, 518, 518, 407, 430,
- 317, 317, 338, 338, 338, 338, 443, 998, 443, 443,
- 409, 338, 338, 338, 435, 430, 435, 554, 554, 435,
- 435, 435, 435, 608, 608, 338, 338, 338, 338, 338,
- 338, 340, 340, 340, 340, 340, 340, 996, 340, 340,
- 340, 340, 340, 340, 340, 340, 972, 340, 340, 410,
- 410, 995, 518, 340, 340, 340, 340, 972, 429, 994,
-
- 429, 429, 429, 429, 972, 410, 410, 410, 410, 993,
- 340, 429, 480, 480, 480, 429, 410, 444, 992, 444,
- 444, 445, 445, 445, 445, 683, 683, 429, 446, 446,
- 446, 446, 410, 991, 340, 340, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
-
- 341, 342, 342, 342, 342, 342, 342, 990, 342, 342,
- 342, 342, 342, 342, 342, 342, 989, 342, 342, 433,
- 433, 433, 433, 342, 342, 342, 342, 539, 539, 539,
- 433, 447, 447, 447, 447, 448, 448, 448, 448, 933,
- 342, 934, 449, 933, 449, 934, 433, 449, 449, 449,
- 449, 476, 476, 476, 476, 478, 478, 478, 478, 342,
- 706, 706, 476, 988, 342, 342, 354, 354, 479, 479,
- 479, 479, 509, 967, 510, 557, 557, 557, 476, 509,
- 354, 510, 354, 354, 354, 354, 509, 511, 510, 512,
- 667, 513, 514, 354, 511, 844, 512, 354, 513, 514,
-
- 515, 511, 844, 512, 965, 513, 514, 515, 517, 354,
- 363, 363, 559, 531, 515, 517, 559, 566, 566, 510,
- 531, 559, 517, 667, 564, 564, 363, 363, 363, 363,
- 844, 512, 516, 566, 566, 363, 363, 363, 515, 516,
- 727, 727, 515, 672, 531, 517, 516, 975, 531, 363,
- 363, 363, 363, 363, 363, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 964, 365, 365, 516, 564, 963, 672, 365, 365, 365,
- 365, 524, 524, 524, 524, 524, 537, 537, 537, 537,
- 532, 962, 532, 975, 365, 532, 532, 532, 532, 538,
-
- 538, 538, 538, 550, 960, 550, 728, 728, 550, 550,
- 550, 550, 555, 555, 555, 555, 733, 733, 365, 365,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 367, 367, 367, 367, 367,
- 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-
- 695, 367, 367, 535, 535, 535, 535, 367, 367, 367,
- 367, 563, 563, 959, 535, 553, 553, 553, 553, 556,
- 556, 556, 556, 935, 367, 699, 553, 935, 562, 562,
- 535, 572, 572, 695, 578, 578, 565, 565, 958, 562,
- 572, 562, 553, 367, 562, 562, 562, 562, 367, 367,
- 380, 380, 565, 565, 565, 565, 567, 567, 699, 563,
- 611, 611, 611, 565, 380, 957, 380, 380, 380, 380,
- 568, 568, 567, 567, 567, 567, 936, 380, 677, 565,
- 936, 380, 569, 569, 578, 677, 568, 568, 568, 568,
- 576, 576, 677, 380, 389, 389, 586, 586, 569, 569,
-
- 569, 576, 1020, 576, 1020, 586, 576, 576, 576, 576,
- 389, 389, 389, 389, 580, 580, 592, 592, 956, 389,
- 389, 389, 571, 571, 577, 577, 571, 779, 573, 573,
- 580, 580, 573, 389, 389, 389, 389, 389, 389, 391,
- 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
- 391, 391, 391, 391, 982, 391, 391, 579, 579, 571,
- 779, 391, 391, 391, 391, 573, 592, 734, 734, 581,
- 581, 955, 577, 579, 579, 579, 579, 954, 391, 582,
- 582, 600, 600, 953, 579, 581, 581, 581, 581, 951,
- 600, 609, 609, 609, 609, 582, 582, 582, 582, 982,
-
- 579, 950, 391, 391, 392, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 392, 392, 392, 392, 392, 393,
- 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
- 393, 393, 393, 393, 949, 393, 393, 583, 583, 591,
- 591, 393, 393, 393, 393, 983, 736, 736, 594, 594,
-
- 736, 595, 595, 583, 583, 583, 585, 585, 393, 783,
- 585, 948, 587, 587, 594, 594, 587, 595, 595, 595,
- 595, 599, 599, 689, 678, 599, 947, 393, 590, 590,
- 689, 678, 393, 393, 406, 406, 946, 591, 678, 590,
- 983, 590, 783, 585, 590, 590, 590, 590, 406, 587,
- 406, 406, 406, 406, 945, 593, 593, 689, 599, 944,
- 715, 406, 601, 601, 715, 406, 601, 596, 596, 715,
- 943, 593, 593, 593, 593, 597, 597, 406, 415, 415,
- 745, 745, 593, 596, 596, 596, 596, 610, 610, 610,
- 610, 597, 597, 597, 415, 415, 415, 415, 593, 601,
-
- 746, 746, 682, 415, 415, 415, 604, 875, 604, 682,
- 875, 604, 604, 604, 604, 978, 682, 415, 415, 415,
- 415, 415, 415, 417, 417, 417, 417, 417, 417, 417,
- 417, 417, 417, 417, 417, 417, 417, 417, 942, 417,
- 417, 607, 607, 607, 607, 417, 417, 417, 417, 751,
- 751, 682, 607, 618, 618, 618, 618, 619, 619, 619,
- 619, 978, 417, 691, 691, 691, 691, 941, 607, 692,
- 692, 692, 692, 711, 711, 711, 711, 712, 712, 712,
- 712, 752, 752, 763, 763, 940, 417, 417, 418, 418,
- 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
-
- 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 418, 418, 419, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419, 939, 419,
- 419, 937, 679, 680, 915, 419, 419, 419, 419, 679,
- 680, 681, 721, 721, 764, 764, 679, 680, 681, 690,
- 722, 722, 419, 723, 723, 681, 690, 914, 721, 721,
-
- 721, 721, 912, 729, 729, 911, 722, 722, 722, 722,
- 909, 419, 729, 679, 680, 908, 419, 419, 438, 438,
- 438, 438, 1022, 690, 1022, 681, 907, 438, 438, 438,
- 724, 724, 904, 754, 754, 903, 723, 754, 902, 741,
- 741, 438, 438, 438, 438, 438, 438, 440, 440, 901,
- 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
- 440, 440, 984, 440, 440, 730, 730, 769, 769, 440,
- 440, 440, 440, 724, 730, 739, 739, 725, 725, 740,
- 740, 725, 741, 770, 770, 900, 440, 757, 757, 839,
- 839, 739, 739, 739, 739, 740, 740, 740, 740, 747,
-
- 747, 860, 860, 757, 757, 757, 757, 984, 747, 898,
- 440, 440, 441, 441, 725, 441, 441, 441, 441, 441,
- 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
- 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
- 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
- 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
- 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
- 441, 441, 441, 441, 441, 441, 441, 442, 442, 897,
- 442, 442, 442, 442, 442, 442, 442, 442, 442, 442,
- 442, 442, 985, 442, 442, 742, 742, 748, 748, 442,
-
- 442, 442, 442, 979, 759, 759, 748, 760, 760, 726,
- 726, 731, 731, 726, 896, 731, 442, 732, 732, 743,
- 743, 732, 895, 743, 744, 744, 749, 749, 744, 1030,
- 749, 1030, 772, 772, 894, 442, 772, 985, 742, 893,
- 442, 442, 540, 540, 540, 540, 726, 759, 731, 979,
- 760, 540, 540, 540, 732, 845, 743, 775, 775, 775,
- 775, 744, 845, 749, 891, 540, 540, 540, 540, 540,
- 540, 544, 544, 890, 544, 544, 544, 544, 544, 544,
- 544, 544, 544, 544, 544, 544, 889, 544, 544, 888,
- 758, 758, 845, 544, 544, 544, 544, 776, 776, 776,
-
- 776, 750, 750, 765, 765, 750, 758, 758, 758, 758,
- 544, 886, 765, 766, 766, 861, 861, 862, 862, 864,
- 864, 885, 766, 865, 865, 866, 866, 868, 868, 869,
- 869, 870, 870, 884, 544, 544, 545, 545, 750, 545,
- 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
- 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
- 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
- 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
- 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
- 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
-
- 545, 558, 558, 558, 558, 874, 874, 883, 837, 882,
- 558, 558, 558, 761, 761, 837, 881, 761, 880, 762,
- 762, 879, 837, 762, 558, 558, 558, 558, 558, 558,
- 560, 560, 560, 560, 560, 560, 877, 560, 560, 560,
- 560, 560, 560, 560, 560, 986, 560, 560, 1059, 1059,
- 761, 921, 560, 560, 560, 560, 762, 837, 921, 918,
- 919, 973, 876, 938, 767, 767, 918, 919, 767, 560,
- 1060, 1060, 973, 918, 919, 920, 938, 920, 920, 973,
- 851, 921, 938, 971, 842, 971, 971, 1024, 1024, 1024,
- 986, 1024, 833, 560, 560, 561, 561, 561, 561, 561,
-
- 561, 767, 561, 561, 561, 561, 561, 561, 561, 561,
- 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
- 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
- 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
- 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
- 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
- 570, 570, 969, 922, 970, 832, 969, 831, 970, 830,
- 922, 1061, 1061, 969, 829, 970, 570, 570, 570, 570,
- 969, 828, 970, 916, 834, 570, 570, 570, 768, 768,
- 916, 834, 768, 922, 987, 827, 826, 916, 834, 570,
-
- 570, 570, 570, 570, 570, 574, 574, 574, 574, 574,
- 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
- 916, 574, 574, 825, 836, 768, 834, 574, 574, 574,
- 574, 836, 1025, 1025, 1025, 1027, 1027, 1027, 836, 987,
- 824, 1026, 1026, 1026, 574, 1026, 1028, 1028, 1028, 823,
- 1028, 1029, 1029, 1029, 822, 819, 818, 816, 814, 812,
- 811, 809, 808, 836, 807, 806, 805, 804, 574, 574,
- 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
- 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
- 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
-
- 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
- 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
- 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
- 575, 575, 575, 575, 575, 584, 584, 803, 802, 801,
- 799, 798, 797, 796, 793, 791, 790, 789, 787, 782,
- 778, 584, 584, 584, 584, 777, 835, 774, 917, 756,
- 584, 584, 584, 835, 738, 917, 720, 718, 714, 713,
- 835, 708, 917, 707, 584, 584, 584, 584, 584, 584,
- 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
- 588, 588, 588, 588, 588, 917, 588, 588, 705, 703,
-
- 835, 698, 588, 588, 588, 588, 694, 693, 688, 687,
- 686, 685, 676, 675, 670, 666, 665, 664, 663, 588,
- 662, 661, 659, 658, 657, 656, 655, 654, 652, 651,
- 650, 649, 648, 647, 646, 645, 644, 642, 641, 640,
- 639, 638, 637, 588, 588, 589, 589, 589, 589, 589,
- 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
- 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
- 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
- 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
- 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
-
- 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
- 598, 598, 636, 635, 634, 633, 632, 630, 629, 628,
- 627, 626, 625, 624, 623, 622, 598, 598, 598, 598,
- 621, 614, 606, 605, 552, 598, 598, 598, 551, 548,
- 547, 546, 542, 534, 533, 530, 529, 528, 527, 598,
- 598, 598, 598, 598, 598, 602, 602, 602, 602, 602,
- 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
- 522, 602, 602, 521, 520, 519, 508, 602, 602, 602,
- 602, 505, 502, 500, 499, 498, 497, 496, 495, 494,
- 493, 492, 491, 490, 602, 489, 488, 487, 485, 484,
-
- 483, 482, 474, 473, 472, 471, 470, 469, 468, 467,
- 466, 465, 464, 462, 461, 459, 458, 457, 602, 602,
- 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
- 603, 603, 603, 603, 603, 612, 612, 612, 612, 456,
- 455, 454, 453, 452, 612, 612, 612, 451, 432, 431,
-
- 427, 332, 331, 321, 320, 319, 307, 306, 612, 612,
- 612, 612, 612, 612, 616, 616, 302, 616, 616, 616,
- 616, 616, 616, 616, 616, 616, 616, 616, 616, 292,
- 616, 616, 289, 288, 284, 278, 616, 616, 616, 616,
- 277, 275, 274, 273, 271, 270, 248, 246, 245, 238,
- 237, 235, 229, 616, 228, 227, 219, 218, 217, 215,
- 210, 208, 207, 205, 204, 203, 193, 173, 168, 166,
- 117, 107, 102, 97, 92, 90, 81, 616, 616, 617,
- 617, 76, 617, 617, 617, 617, 617, 617, 617, 617,
- 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
-
- 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
- 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
- 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
- 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
- 617, 617, 617, 617, 702, 702, 65, 702, 702, 702,
- 702, 702, 702, 702, 702, 702, 702, 702, 702, 34,
- 702, 702, 32, 28, 23, 0, 702, 702, 702, 702,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 702, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 702, 702, 704,
- 704, 0, 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, 717, 717, 717, 717, 717, 717,
- 0, 717, 717, 717, 717, 717, 717, 717, 717, 0,
- 717, 717, 0, 0, 0, 0, 717, 717, 717, 717,
+ 161, 161, 161, 161, 1009, 161, 161, 350, 350, 369,
+ 606, 161, 161, 161, 161, 365, 365, 365, 365, 351,
+ 351, 373, 373, 350, 350, 350, 350, 542, 161, 1008,
+ 373, 357, 357, 351, 161, 351, 351, 351, 351, 391,
+ 391, 923, 357, 606, 357, 923, 351, 357, 357, 357,
+ 357, 542, 161, 161, 171, 542, 171, 171, 171, 171,
+ 370, 370, 351, 608, 370, 660, 171, 171, 374, 374,
+ 375, 375, 970, 171, 378, 378, 171, 374, 381, 381,
+ 171, 379, 379, 171, 393, 393, 375, 375, 375, 375,
+ 970, 171, 396, 396, 381, 381, 608, 370, 660, 171,
+ 174, 174, 1007, 174, 174, 174, 174, 174, 174, 174,
+
+ 174, 174, 174, 174, 174, 917, 174, 174, 352, 352,
+ 917, 378, 174, 174, 174, 174, 397, 397, 379, 385,
+ 385, 382, 382, 385, 352, 352, 352, 352, 385, 174,
+ 355, 355, 382, 860, 382, 352, 860, 382, 382, 382,
+ 382, 389, 389, 389, 389, 920, 355, 355, 355, 355,
+ 920, 352, 665, 174, 174, 175, 175, 355, 175, 175,
+ 175, 175, 175, 175, 175, 175, 175, 175, 175, 175,
+ 1005, 175, 175, 355, 376, 376, 1004, 175, 175, 175,
+ 175, 390, 390, 390, 390, 665, 383, 383, 376, 1003,
+ 376, 376, 376, 376, 175, 394, 394, 377, 377, 394,
+
+ 175, 376, 383, 383, 383, 395, 395, 428, 428, 395,
+ 430, 430, 430, 377, 377, 377, 377, 376, 175, 175,
+ 311, 311, 311, 311, 377, 398, 398, 399, 399, 311,
+ 311, 311, 394, 1002, 398, 436, 399, 436, 436, 1001,
+ 377, 967, 395, 311, 311, 311, 311, 311, 311, 313,
+ 313, 1000, 313, 313, 313, 313, 313, 313, 313, 313,
+ 313, 313, 313, 313, 977, 313, 313, 380, 380, 403,
+ 403, 313, 313, 313, 313, 406, 406, 470, 470, 400,
+ 400, 529, 529, 380, 380, 380, 380, 967, 313, 407,
+ 407, 406, 406, 999, 380, 400, 400, 400, 400, 996,
+
+ 407, 437, 407, 437, 437, 407, 407, 407, 407, 977,
+ 380, 995, 313, 313, 314, 314, 403, 314, 314, 314,
+ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
+ 314, 314, 314, 314, 314, 314, 314, 314, 314, 315,
+ 315, 994, 315, 315, 315, 315, 315, 315, 315, 315,
+ 315, 315, 315, 315, 993, 315, 315, 401, 401, 688,
+
+ 524, 315, 315, 315, 315, 408, 408, 524, 552, 402,
+ 402, 401, 552, 401, 401, 401, 401, 552, 315, 404,
+ 404, 408, 408, 408, 401, 402, 402, 402, 402, 410,
+ 410, 524, 688, 410, 921, 524, 402, 315, 410, 921,
+ 401, 991, 315, 315, 335, 335, 335, 335, 414, 414,
+ 414, 414, 402, 335, 335, 335, 415, 415, 415, 415,
+ 422, 422, 422, 422, 547, 547, 404, 335, 335, 335,
+ 335, 335, 335, 337, 337, 337, 337, 337, 337, 989,
+ 337, 337, 337, 337, 337, 337, 337, 337, 965, 337,
+ 337, 405, 405, 601, 601, 337, 337, 337, 337, 965,
+
+ 423, 988, 423, 423, 423, 423, 965, 405, 405, 405,
+ 405, 924, 337, 423, 429, 924, 429, 987, 405, 429,
+ 429, 429, 429, 438, 438, 438, 438, 676, 676, 423,
+ 439, 439, 439, 439, 405, 986, 337, 337, 338, 338,
+ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
+ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
+ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
+ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
+ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
+ 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
+
+ 338, 338, 338, 339, 339, 339, 339, 339, 339, 985,
+ 339, 339, 339, 339, 339, 339, 339, 339, 984, 339,
+ 339, 424, 424, 424, 424, 339, 339, 339, 339, 473,
+ 473, 473, 424, 427, 427, 427, 427, 440, 440, 440,
+ 440, 983, 339, 925, 427, 511, 511, 925, 424, 441,
+ 441, 441, 441, 471, 471, 471, 471, 442, 982, 442,
+ 427, 339, 442, 442, 442, 442, 339, 339, 359, 359,
+ 469, 469, 469, 469, 472, 472, 472, 472, 557, 557,
+ 479, 469, 502, 981, 359, 359, 359, 359, 479, 502,
+ 960, 479, 504, 359, 359, 359, 502, 469, 692, 504,
+
+ 958, 511, 530, 530, 530, 530, 504, 359, 359, 359,
+ 359, 359, 359, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 557, 361,
+ 361, 692, 505, 506, 507, 361, 361, 361, 361, 505,
+ 506, 507, 531, 531, 531, 531, 505, 506, 507, 532,
+ 532, 532, 361, 517, 517, 517, 517, 517, 525, 957,
+ 525, 699, 699, 525, 525, 525, 525, 548, 548, 548,
+ 548, 550, 550, 550, 505, 956, 361, 361, 362, 362,
+ 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
+ 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
+
+ 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
+ 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
+ 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
+ 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
+ 362, 362, 362, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363, 955, 363,
+ 363, 720, 720, 509, 953, 363, 363, 363, 363, 503,
+ 509, 556, 556, 508, 721, 721, 503, 509, 864, 510,
+ 508, 864, 363, 503, 570, 570, 510, 508, 549, 549,
+ 549, 549, 978, 510, 528, 528, 528, 528, 584, 584,
+
+ 1023, 363, 1023, 670, 509, 528, 363, 363, 384, 384,
+ 670, 508, 559, 559, 503, 508, 510, 670, 952, 556,
+ 951, 528, 565, 565, 384, 384, 384, 384, 559, 559,
+ 950, 565, 570, 384, 384, 384, 543, 978, 543, 571,
+ 571, 543, 543, 543, 543, 968, 584, 384, 384, 384,
+ 384, 384, 384, 386, 386, 386, 386, 386, 386, 386,
+ 386, 386, 386, 386, 386, 386, 386, 386, 949, 386,
+ 386, 546, 546, 546, 546, 386, 386, 386, 386, 604,
+ 604, 604, 546, 555, 555, 948, 708, 560, 560, 571,
+ 708, 968, 386, 926, 555, 708, 555, 926, 546, 555,
+
+ 555, 555, 555, 560, 560, 560, 560, 597, 947, 597,
+ 726, 726, 597, 597, 597, 597, 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, 388, 388, 946, 388,
+
+ 388, 558, 558, 579, 579, 388, 388, 388, 388, 562,
+ 562, 944, 579, 561, 561, 593, 593, 558, 558, 558,
+ 558, 772, 388, 943, 593, 562, 562, 562, 558, 561,
+ 561, 561, 561, 564, 564, 566, 566, 564, 671, 566,
+ 942, 388, 569, 569, 558, 671, 388, 388, 409, 409,
+ 727, 727, 671, 569, 772, 569, 738, 738, 569, 569,
+ 569, 569, 573, 573, 409, 409, 409, 409, 576, 576,
+ 564, 941, 566, 409, 409, 409, 578, 578, 573, 573,
+ 578, 585, 585, 940, 576, 576, 576, 409, 409, 409,
+ 409, 409, 409, 411, 411, 411, 411, 411, 411, 411,
+
+ 411, 411, 411, 411, 411, 411, 411, 411, 979, 411,
+ 411, 572, 572, 578, 682, 411, 411, 411, 411, 587,
+ 587, 682, 776, 574, 574, 739, 739, 572, 572, 572,
+ 572, 585, 411, 575, 575, 587, 587, 939, 572, 574,
+ 574, 574, 574, 602, 602, 602, 602, 938, 682, 575,
+ 575, 575, 575, 979, 572, 776, 411, 411, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 413, 413, 413, 413, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 413, 413, 937, 413,
+ 413, 603, 603, 603, 603, 413, 413, 413, 413, 936,
+ 583, 583, 744, 744, 935, 580, 580, 586, 586, 580,
+ 934, 583, 413, 583, 745, 745, 583, 583, 583, 583,
+ 722, 722, 933, 586, 586, 586, 586, 588, 588, 722,
+ 932, 413, 756, 756, 586, 930, 413, 413, 431, 431,
+ 431, 431, 580, 588, 588, 588, 588, 431, 431, 431,
+
+ 586, 592, 592, 683, 971, 592, 611, 611, 611, 611,
+ 683, 431, 431, 431, 431, 431, 431, 433, 433, 908,
+ 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 972, 433, 433, 589, 589, 683, 592, 433,
+ 433, 433, 433, 590, 590, 907, 600, 600, 600, 600,
+ 971, 589, 589, 589, 589, 868, 433, 600, 868, 590,
+ 590, 590, 612, 612, 612, 612, 684, 684, 684, 684,
+ 723, 723, 905, 600, 685, 685, 685, 685, 972, 723,
+ 433, 433, 434, 434, 904, 434, 434, 434, 434, 434,
+ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
+
+ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
+ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
+ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
+ 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
+ 434, 434, 434, 434, 434, 434, 434, 435, 435, 902,
+ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 901, 435, 435, 757, 757, 672, 673, 435,
+ 435, 435, 435, 900, 672, 673, 762, 762, 675, 594,
+ 594, 672, 673, 594, 674, 675, 435, 704, 704, 704,
+ 704, 674, 675, 705, 705, 705, 705, 897, 674, 729,
+
+ 729, 714, 714, 729, 896, 435, 763, 763, 672, 673,
+ 435, 435, 533, 533, 533, 533, 594, 714, 714, 714,
+ 714, 533, 533, 533, 716, 716, 980, 675, 674, 717,
+ 717, 768, 768, 768, 768, 533, 533, 533, 533, 533,
+ 533, 537, 537, 895, 537, 537, 537, 537, 537, 537,
+ 537, 537, 537, 537, 537, 537, 894, 537, 537, 715,
+ 715, 740, 740, 537, 537, 537, 537, 716, 732, 732,
+ 740, 980, 717, 733, 733, 715, 715, 715, 715, 927,
+ 537, 832, 832, 927, 732, 732, 732, 732, 893, 733,
+ 733, 733, 733, 741, 741, 747, 747, 765, 765, 747,
+
+ 891, 765, 741, 890, 537, 537, 538, 538, 889, 538,
+ 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
+ 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
+ 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
+ 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
+ 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
+ 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
+ 538, 551, 551, 551, 551, 734, 734, 888, 735, 735,
+ 551, 551, 551, 718, 718, 853, 853, 718, 887, 719,
+ 719, 854, 854, 719, 551, 551, 551, 551, 551, 551,
+
+ 553, 553, 553, 553, 553, 553, 886, 553, 553, 553,
+ 553, 553, 553, 553, 553, 803, 553, 553, 734, 884,
+ 718, 735, 553, 553, 553, 553, 719, 750, 750, 928,
+ 803, 751, 751, 928, 724, 724, 803, 883, 724, 553,
+ 855, 855, 882, 750, 750, 750, 750, 751, 751, 751,
+ 751, 758, 758, 759, 759, 769, 769, 769, 769, 881,
+ 758, 879, 759, 553, 553, 554, 554, 554, 554, 554,
+ 554, 724, 554, 554, 554, 554, 554, 554, 554, 554,
+ 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
+ 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
+
+ 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
+ 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
+ 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
+ 563, 563, 837, 857, 857, 858, 858, 859, 859, 837,
+ 861, 861, 862, 862, 863, 863, 563, 563, 563, 563,
+ 752, 752, 878, 753, 753, 563, 563, 563, 725, 725,
+ 867, 867, 725, 877, 736, 736, 876, 837, 736, 563,
+ 563, 563, 563, 563, 563, 567, 567, 567, 567, 567,
+ 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
+ 787, 567, 567, 752, 875, 725, 753, 567, 567, 567,
+
+ 567, 736, 929, 787, 911, 912, 929, 931, 874, 787,
+ 873, 911, 912, 913, 567, 913, 913, 962, 911, 912,
+ 931, 962, 964, 872, 964, 964, 931, 870, 962, 1017,
+ 1017, 1017, 869, 1017, 844, 962, 1052, 1052, 567, 567,
+ 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
+ 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
+ 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
+ 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
+ 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
+ 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
+
+ 568, 568, 568, 568, 568, 577, 577, 835, 914, 963,
+ 826, 915, 825, 963, 824, 914, 1053, 1053, 915, 823,
+ 963, 577, 577, 577, 577, 1054, 1054, 963, 830, 822,
+ 577, 577, 577, 737, 737, 830, 821, 737, 914, 742,
+ 742, 915, 830, 742, 577, 577, 577, 577, 577, 577,
+ 581, 581, 581, 581, 581, 581, 581, 581, 581, 581,
+ 581, 581, 581, 581, 581, 820, 581, 581, 966, 819,
+ 737, 829, 581, 581, 581, 581, 742, 830, 829, 966,
+ 1018, 1018, 1018, 818, 817, 829, 966, 816, 815, 581,
+ 1019, 1019, 1019, 812, 1019, 1020, 1020, 1020, 1021, 1021,
+
+ 1021, 811, 1021, 1022, 1022, 1022, 809, 807, 805, 804,
+ 829, 802, 801, 581, 581, 582, 582, 582, 582, 582,
+ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
+ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
+ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
+ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
+ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
+ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
+ 591, 591, 800, 799, 798, 797, 796, 795, 794, 792,
+ 791, 790, 789, 786, 784, 783, 591, 591, 591, 591,
+
+ 782, 780, 775, 838, 771, 591, 591, 591, 743, 743,
+ 838, 770, 743, 767, 754, 754, 749, 731, 754, 591,
+ 591, 591, 591, 591, 591, 595, 595, 595, 595, 595,
+ 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
+ 838, 595, 595, 713, 711, 743, 909, 595, 595, 595,
+ 595, 754, 707, 909, 706, 701, 700, 698, 696, 691,
+ 909, 687, 686, 681, 595, 680, 679, 678, 669, 668,
+ 663, 659, 658, 657, 656, 655, 654, 652, 651, 650,
+ 649, 648, 647, 909, 645, 644, 643, 642, 595, 595,
+ 596, 596, 596, 596, 596, 596, 596, 596, 596, 596,
+
+ 596, 596, 596, 596, 596, 596, 596, 596, 596, 596,
+ 596, 596, 596, 596, 596, 596, 596, 596, 596, 596,
+ 596, 596, 596, 596, 596, 596, 596, 596, 596, 596,
+ 596, 596, 596, 596, 596, 596, 596, 596, 596, 596,
+ 596, 596, 596, 596, 596, 596, 596, 596, 596, 596,
+ 596, 596, 596, 596, 596, 605, 605, 605, 605, 641,
+ 640, 639, 910, 638, 605, 605, 605, 755, 755, 910,
+ 637, 755, 635, 760, 760, 634, 910, 760, 605, 605,
+ 605, 605, 605, 605, 609, 609, 633, 609, 609, 609,
+ 609, 609, 609, 609, 609, 609, 609, 609, 609, 910,
+
+ 609, 609, 632, 631, 755, 630, 609, 609, 609, 609,
+ 760, 629, 628, 627, 761, 761, 626, 625, 761, 623,
+ 622, 621, 620, 609, 619, 618, 617, 616, 615, 614,
+ 607, 599, 598, 545, 544, 541, 540, 539, 535, 527,
+ 526, 523, 522, 521, 520, 515, 514, 609, 609, 610,
+ 610, 761, 610, 610, 610, 610, 610, 610, 610, 610,
+ 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
+ 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
+ 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
+ 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
+
+ 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
+ 610, 610, 610, 610, 695, 695, 513, 695, 695, 695,
+ 695, 695, 695, 695, 695, 695, 695, 695, 695, 512,
+ 695, 695, 501, 827, 498, 495, 695, 695, 695, 695,
+ 827, 493, 492, 491, 490, 489, 488, 827, 487, 486,
+ 485, 484, 483, 695, 482, 481, 480, 478, 477, 476,
+ 475, 467, 466, 465, 464, 463, 462, 461, 460, 459,
+ 458, 457, 455, 454, 452, 827, 451, 695, 695, 697,
+ 697, 450, 697, 697, 697, 697, 697, 697, 697, 697,
+ 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
+
+ 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
+ 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
+ 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
+ 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
+ 697, 697, 697, 697, 710, 710, 710, 710, 710, 710,
+ 449, 710, 710, 710, 710, 710, 710, 710, 710, 448,
+ 710, 710, 447, 446, 445, 444, 710, 710, 710, 710,
+ 426, 828, 425, 421, 330, 329, 319, 318, 828, 317,
+ 306, 305, 301, 710, 291, 828, 288, 287, 283, 277,
+ 276, 274, 273, 272, 270, 269, 247, 245, 244, 237,
+
+ 236, 234, 228, 227, 226, 219, 218, 710, 710, 712,
+ 712, 712, 712, 712, 712, 828, 712, 712, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
+ 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
+ 712, 712, 712, 712, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 728, 728, 728, 728, 217,
+ 728, 728, 215, 210, 208, 207, 728, 728, 728, 728,
+
+ 205, 204, 203, 193, 173, 168, 166, 117, 107, 102,
+ 97, 92, 90, 728, 81, 76, 65, 34, 32, 28,
+ 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 728, 728, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
+
+ 730, 730, 730, 730, 746, 746, 746, 746, 746, 746,
+ 746, 746, 746, 746, 746, 746, 746, 746, 746, 0,
+ 746, 746, 0, 0, 0, 0, 746, 746, 746, 746,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 717, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 717, 717, 719,
- 719, 719, 719, 719, 719, 0, 719, 719, 719, 719,
- 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
- 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
- 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
- 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
- 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
-
- 719, 719, 719, 719, 735, 735, 735, 735, 735, 735,
- 735, 735, 735, 735, 735, 735, 735, 735, 735, 0,
- 735, 735, 0, 0, 0, 0, 735, 735, 735, 735,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 735, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 746, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 735, 735, 737,
- 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
- 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
- 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
-
- 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
- 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
- 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
- 737, 737, 737, 737, 753, 753, 753, 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, 746, 746, 748,
+ 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
+
+ 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 764, 764, 764, 764, 764, 764,
+ 764, 764, 764, 764, 764, 764, 764, 764, 764, 0,
+ 764, 764, 0, 0, 0, 0, 764, 764, 764, 764,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 753, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 764, 0, 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,
+ 0, 0, 0, 0, 0, 0, 0, 764, 764, 766,
- 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, 755, 755, 771, 771, 771, 771, 771, 771,
- 771, 771, 771, 771, 771, 771, 771, 771, 771, 0,
- 771, 771, 0, 0, 0, 0, 771, 771, 771, 771,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 779, 779, 0, 779, 779, 779,
+ 779, 779, 779, 779, 779, 779, 779, 779, 779, 0,
+ 779, 779, 0, 0, 0, 0, 779, 779, 779, 779,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 771, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 779, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 771, 771, 773,
- 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
- 773, 773, 773, 773, 786, 786, 0, 786, 786, 786,
+ 0, 0, 0, 0, 0, 0, 0, 779, 779, 781,
+ 781, 0, 781, 781, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 841, 841, 0, 841, 841, 841,
+
+ 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
+ 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
+ 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
+ 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
+ 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
+ 841, 841, 841, 841, 841, 841, 841, 841, 841, 851,
+ 851, 851, 851, 851, 851, 0, 851, 851, 851, 851,
+ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
+ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
+ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
+
+ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
+ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
+ 851, 851, 851, 851, 1088, 0, 1088, 1088, 1088, 1088,
+ 1088, 1088, 1088, 1088, 1088, 1089, 0, 0, 1089, 1089,
+ 1090, 0, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
+ 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092,
+ 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+ 1093, 1093, 1093, 1093, 1094, 0, 1094, 0, 1094, 1094,
+ 1094, 1094, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096,
+ 0, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096,
- 786, 786, 786, 786, 786, 786, 786, 786, 786, 0,
- 786, 786, 0, 0, 0, 0, 786, 786, 786, 786,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 786, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 786, 786, 788,
- 788, 0, 788, 788, 788, 788, 788, 788, 788, 788,
- 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
- 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
- 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
-
- 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
- 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
- 788, 788, 788, 788, 848, 848, 0, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848, 848, 858,
- 858, 858, 858, 858, 858, 0, 858, 858, 858, 858,
-
- 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
- 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
- 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
- 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
- 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
- 858, 858, 858, 858, 1095, 0, 1095, 1095, 1095, 1095,
- 1095, 1095, 1095, 1095, 1095, 1096, 0, 0, 1096, 1096,
1097, 0, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
- 1097, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,
- 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
-
- 1100, 1100, 1100, 1100, 1101, 0, 1101, 0, 1101, 1101,
- 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
- 0, 1103, 1103, 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, 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, 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, 1128, 1128, 1128, 1128,
- 1128, 1128, 1128, 1128, 1128, 1129, 0, 0, 1129, 1129,
-
- 1129, 1130, 0, 0, 1130, 1131, 1131, 1131, 1131, 1131,
- 1131, 1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
- 1133, 0, 0, 0, 0, 1133, 1133, 1133, 1133, 1134,
- 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
- 1135, 1135, 1135, 1135, 1135, 1135, 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, 1143, 0,
- 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144,
- 1144, 1144, 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, 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, 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, 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, 0, 1161, 1161, 1161,
- 1161, 1161, 1161, 1161, 1161, 1161, 1162, 0, 0, 1162,
- 1162, 1163, 0, 0, 1163, 1163, 1163, 1164, 0, 0,
- 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, 1168, 1168, 1168, 1168, 1168,
- 1168, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170,
- 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
- 1171, 1171, 1171, 1171, 1171, 1171, 1172, 0, 1172, 1172,
-
- 1172, 1172, 1173, 0, 1173, 1173, 1173, 1173, 1174, 1174,
- 1174, 1174, 1174, 1174, 1174, 1175, 0, 1175, 1175, 1175,
- 1175, 1175, 1175, 1175, 1175, 1175, 1176, 0, 1176, 1176,
- 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, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 0,
- 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182,
- 1182, 1182, 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, 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, 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, 0, 1199, 1199, 1199,
- 1199, 1199, 1199, 1199, 1199, 1199, 1200, 0, 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, 0, 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,
- 1208, 1208, 1208, 1208, 1208, 1208, 1209, 1209, 1209, 1209,
- 1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210, 1210, 1210,
- 1210, 1210, 1210, 1210, 1210, 1211, 0, 1211, 1211, 1211,
-
- 1211, 1212, 0, 1212, 1212, 1212, 1212, 1213, 1213, 1213,
- 1213, 1213, 1213, 1213, 1214, 0, 1214, 1214, 1214, 1214,
- 1214, 1214, 1214, 1214, 1214, 1215, 0, 1215, 1215, 1215,
- 1215, 1215, 1215, 1215, 1215, 1215, 1216, 0, 1216, 1216,
- 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, 0, 1217,
- 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1218, 0,
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219,
- 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220, 0, 1220,
- 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1221, 1221, 1221,
- 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1222, 1222,
-
- 0, 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, 1229, 1229, 1229, 1229,
- 1229, 1229, 1229, 1229, 1229, 1229, 1230, 1230, 1230, 1230,
- 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1231, 1231, 1231,
-
- 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1232, 1232,
- 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1233,
- 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
- 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
- 1234, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
- 1235, 1235, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
- 1236, 1236, 1236, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
- 1237, 1237, 1237, 1237, 1238, 0, 1238, 1238, 1238, 1238,
- 1238, 1238, 1238, 1238, 1238, 1239, 0, 1239, 1239, 1239,
- 1239, 1239, 1239, 1239, 1239, 1239, 1240, 0, 1240, 1240,
-
+ 1097, 1098, 0, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
+ 1098, 1098, 1099, 0, 1099, 1099, 1099, 1099, 1099, 1099,
+ 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
+ 1101, 1101, 0, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
+ 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102,
+ 1102, 1102, 1103, 1103, 0, 1103, 1103, 1103, 1103, 1103,
+ 1103, 1103, 1103, 1104, 1104, 1104, 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, 1114, 1115, 1115, 1115, 1115, 1115, 1115,
+
+ 1115, 1115, 1115, 1115, 1115, 1116, 0, 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, 0, 1120, 1120, 1121, 0, 1121, 1121, 1121, 1121,
+ 1121, 1121, 1121, 1121, 1121, 1122, 0, 0, 1122, 1122,
+ 1122, 1123, 0, 0, 1123, 1124, 1124, 1124, 1124, 1124,
+ 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+ 1126, 0, 0, 0, 0, 1126, 1126, 1126, 1126, 1127,
+
+ 1127, 1127, 1127, 1127, 1127, 1127, 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, 1163, 1163, 1163, 1163, 1163,
+ 1164, 1164, 1164, 1164, 1164, 1164, 1165, 0, 1165, 1165,
+ 1165, 1165, 1166, 0, 1166, 1166, 1166, 1166, 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,
+ 0, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
+ 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1174, 1174, 0,
+ 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175, 1175,
+ 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176,
+ 1176, 0, 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, 1191, 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, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+
+ 1197, 0, 0, 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, 0,
+ 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201,
+ 1201, 1201, 1201, 1201, 1201, 1201, 1202, 1202, 1202, 1202,
+ 1202, 1202, 1202, 1202, 1203, 1203, 1203, 1203, 1203, 1203,
+ 1203, 1203, 1203, 1203, 1203, 1204, 0, 1204, 1204, 1204,
+ 1204, 1205, 0, 1205, 1205, 1205, 1205, 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, 0, 1210,
+ 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1211, 0,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 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,
+ 0, 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, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
+ 1229, 1229, 1229, 1230, 1230, 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, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1235, 0,
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236,
+
+ 0, 0, 1236, 1236, 1236, 1237, 1237, 1237, 1237, 1237,
+ 1237, 1237, 1237, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
+ 1238, 1238, 1238, 1238, 1239, 0, 1239, 1239, 1239, 1239,
1240, 1240, 1240, 1240, 1240, 1240, 1240, 1241, 0, 1241,
- 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 0,
- 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1243,
- 0, 0, 1243, 1243, 1243, 1244, 1244, 1244, 1244, 1244,
- 1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
- 1245, 1245, 1245, 1245, 1246, 0, 1246, 1246, 1246, 1246,
- 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1248, 0, 1248,
- 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1249, 1249,
- 1249, 1249, 1249, 1249, 1249, 1250, 1250, 0, 1250, 1250,
- 1250, 1250, 1250, 1250, 1250, 1250, 1094, 1094, 1094, 1094,
-
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094
+ 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 1242,
+ 1242, 1242, 1242, 1242, 1242, 1243, 1243, 0, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+ 1087, 1087
} ;
/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[149] =
+static yyconst flex_int32_t yy_rule_can_match_eol[148] =
{ 0,
0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2432,8 +2402,8 @@
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, };
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, };
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
@@ -2466,7 +2436,6 @@
#include "imc.h"
#include "parser.h"
-// typedef struct yyguts_t yyguts_t;
typedef struct parser_state_t parser_state_t;
/* parser state structure
@@ -2545,7 +2514,7 @@
-#line 2549 "compilers/imcc/imclexer.c"
+#line 2518 "compilers/imcc/imclexer.c"
#define INITIAL 0
#define emit 1
@@ -2785,7 +2754,7 @@
register int yy_act;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-#line 157 "compilers/imcc/imcc.l"
+#line 154 "compilers/imcc/imcc.l"
/* for emacs "*/
if (IMCC_INFO(interp)->expect_pasm == 1 && !IMCC_INFO(interp)->in_pod) {
@@ -2804,7 +2773,7 @@
return 0;
}
-#line 2808 "compilers/imcc/imclexer.c"
+#line 2777 "compilers/imcc/imclexer.c"
if ( !yyg->yy_init )
{
@@ -2858,13 +2827,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 >= 1095 )
+ if ( yy_current_state >= 1088 )
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 != 1094 );
+ while ( yy_current_state != 1087 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -2898,13 +2867,13 @@
case 1:
YY_RULE_SETUP
-#line 175 "compilers/imcc/imcc.l"
+#line 172 "compilers/imcc/imcc.l"
{ SET_LINE_NUMBER; }
YY_BREAK
case 2:
/* rule 2 can match eol */
YY_RULE_SETUP
-#line 177 "compilers/imcc/imcc.l"
+#line 174 "compilers/imcc/imcc.l"
{
SET_LINE_NUMBER;
IMCC_INFO(interp)->frames->heredoc_rest = mem_sys_strdup(yytext);
@@ -2914,7 +2883,7 @@
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
-#line 183 "compilers/imcc/imcc.l"
+#line 180 "compilers/imcc/imcc.l"
{
/* heredocs have highest priority
* arrange them before all wildcard state matches */
@@ -2930,7 +2899,7 @@
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 196 "compilers/imcc/imcc.l"
+#line 193 "compilers/imcc/imcc.l"
{
SET_LINE_NUMBER;
/* Are we at the end of the heredoc? */
@@ -2955,8 +2924,6 @@
yy_pop_state(yyscanner);
yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest,yyscanner);
- /* not sure we need this decrement; more testing needed */
- IMCC_INFO(interp)->line--;
return STRINGC;
}
else {
@@ -2973,7 +2940,7 @@
case 5:
/* rule 5 can match eol */
YY_RULE_SETUP
-#line 235 "compilers/imcc/imcc.l"
+#line 230 "compilers/imcc/imcc.l"
{
yy_pop_state(yyscanner);
yy_push_state(cmt3, yyscanner);
@@ -2986,7 +2953,7 @@
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 245 "compilers/imcc/imcc.l"
+#line 240 "compilers/imcc/imcc.l"
{
yy_pop_state(yyscanner);
yy_push_state(cmt4, yyscanner);
@@ -2994,17 +2961,17 @@
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 250 "compilers/imcc/imcc.l"
+#line 245 "compilers/imcc/imcc.l"
{ yy_push_state(cmt2, yyscanner); }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 252 "compilers/imcc/imcc.l"
+#line 247 "compilers/imcc/imcc.l"
{ yy_push_state(cmt1, yyscanner); }
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 254 "compilers/imcc/imcc.l"
+#line 249 "compilers/imcc/imcc.l"
{
yylineno = IMCC_INFO(interp)->line = atoi(yytext);
yy_pop_state(yyscanner);
@@ -3015,7 +2982,7 @@
case 10:
/* rule 10 can match eol */
YY_RULE_SETUP
-#line 261 "compilers/imcc/imcc.l"
+#line 256 "compilers/imcc/imcc.l"
{
yy_pop_state(yyscanner);
}
@@ -3023,7 +2990,7 @@
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 265 "compilers/imcc/imcc.l"
+#line 260 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->expect_pasm == 2)
BEGIN(INITIAL);
@@ -3035,7 +3002,7 @@
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 274 "compilers/imcc/imcc.l"
+#line 269 "compilers/imcc/imcc.l"
{
yy_push_state(cmt5, yyscanner);
}
@@ -3043,7 +3010,7 @@
case 13:
/* rule 13 can match eol */
YY_RULE_SETUP
-#line 278 "compilers/imcc/imcc.l"
+#line 273 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->expect_pasm == 2)
BEGIN(INITIAL);
@@ -3058,7 +3025,7 @@
case 14:
/* rule 14 can match eol */
YY_RULE_SETUP
-#line 290 "compilers/imcc/imcc.l"
+#line 285 "compilers/imcc/imcc.l"
{
/* this is a stand-alone =cut, but we're not in POD mode, so ignore. */
SET_LINE_NUMBER;
@@ -3067,7 +3034,7 @@
case 15:
/* rule 15 can match eol */
YY_RULE_SETUP
-#line 295 "compilers/imcc/imcc.l"
+#line 290 "compilers/imcc/imcc.l"
{
SET_LINE_NUMBER;
IMCC_INFO(interp)->in_pod = 1;
@@ -3077,7 +3044,7 @@
case 16:
/* rule 16 can match eol */
YY_RULE_SETUP
-#line 301 "compilers/imcc/imcc.l"
+#line 296 "compilers/imcc/imcc.l"
{
SET_LINE_NUMBER;
IMCC_INFO(interp)->in_pod = 0;
@@ -3086,478 +3053,478 @@
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 307 "compilers/imcc/imcc.l"
+#line 302 "compilers/imcc/imcc.l"
{ SET_LINE_NUMBER; }
YY_BREAK
case 18:
/* rule 18 can match eol */
YY_RULE_SETUP
-#line 309 "compilers/imcc/imcc.l"
+#line 304 "compilers/imcc/imcc.l"
{ /* ignore */ }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 311 "compilers/imcc/imcc.l"
+#line 306 "compilers/imcc/imcc.l"
return TK_LINE;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 312 "compilers/imcc/imcc.l"
+#line 307 "compilers/imcc/imcc.l"
return TK_FILE;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 313 "compilers/imcc/imcc.l"
+#line 308 "compilers/imcc/imcc.l"
return ANNOTATE;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 314 "compilers/imcc/imcc.l"
+#line 309 "compilers/imcc/imcc.l"
return LEXICAL;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 315 "compilers/imcc/imcc.l"
+#line 310 "compilers/imcc/imcc.l"
return ARG;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 316 "compilers/imcc/imcc.l"
+#line 311 "compilers/imcc/imcc.l"
return SUB;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 317 "compilers/imcc/imcc.l"
+#line 312 "compilers/imcc/imcc.l"
return ESUB;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 318 "compilers/imcc/imcc.l"
+#line 313 "compilers/imcc/imcc.l"
return PCC_BEGIN;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 319 "compilers/imcc/imcc.l"
+#line 314 "compilers/imcc/imcc.l"
return PCC_END;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 320 "compilers/imcc/imcc.l"
+#line 315 "compilers/imcc/imcc.l"
return PCC_CALL;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 321 "compilers/imcc/imcc.l"
+#line 316 "compilers/imcc/imcc.l"
return NCI_CALL;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 322 "compilers/imcc/imcc.l"
+#line 317 "compilers/imcc/imcc.l"
return METH_CALL;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 323 "compilers/imcc/imcc.l"
+#line 318 "compilers/imcc/imcc.l"
return INVOCANT;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 324 "compilers/imcc/imcc.l"
+#line 319 "compilers/imcc/imcc.l"
return PCC_SUB;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 325 "compilers/imcc/imcc.l"
+#line 320 "compilers/imcc/imcc.l"
return PCC_BEGIN_RETURN;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 326 "compilers/imcc/imcc.l"
+#line 321 "compilers/imcc/imcc.l"
return PCC_END_RETURN;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 327 "compilers/imcc/imcc.l"
+#line 322 "compilers/imcc/imcc.l"
return PCC_BEGIN_YIELD;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 328 "compilers/imcc/imcc.l"
+#line 323 "compilers/imcc/imcc.l"
return PCC_END_YIELD;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 330 "compilers/imcc/imcc.l"
+#line 325 "compilers/imcc/imcc.l"
return METHOD;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 331 "compilers/imcc/imcc.l"
+#line 326 "compilers/imcc/imcc.l"
return MULTI;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 332 "compilers/imcc/imcc.l"
+#line 327 "compilers/imcc/imcc.l"
return MAIN;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 333 "compilers/imcc/imcc.l"
+#line 328 "compilers/imcc/imcc.l"
return LOAD;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 334 "compilers/imcc/imcc.l"
+#line 329 "compilers/imcc/imcc.l"
return INIT;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 335 "compilers/imcc/imcc.l"
+#line 330 "compilers/imcc/imcc.l"
return IMMEDIATE;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 336 "compilers/imcc/imcc.l"
+#line 331 "compilers/imcc/imcc.l"
return POSTCOMP;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 337 "compilers/imcc/imcc.l"
+#line 332 "compilers/imcc/imcc.l"
return ANON;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 338 "compilers/imcc/imcc.l"
+#line 333 "compilers/imcc/imcc.l"
return OUTER;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 339 "compilers/imcc/imcc.l"
+#line 334 "compilers/imcc/imcc.l"
return NEED_LEX;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 340 "compilers/imcc/imcc.l"
+#line 335 "compilers/imcc/imcc.l"
return VTABLE_METHOD;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 341 "compilers/imcc/imcc.l"
+#line 336 "compilers/imcc/imcc.l"
return NS_ENTRY;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 342 "compilers/imcc/imcc.l"
+#line 337 "compilers/imcc/imcc.l"
return UNIQUE_REG;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 343 "compilers/imcc/imcc.l"
+#line 338 "compilers/imcc/imcc.l"
return SUB_INSTANCE_OF;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 344 "compilers/imcc/imcc.l"
+#line 339 "compilers/imcc/imcc.l"
return SUBID;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 346 "compilers/imcc/imcc.l"
+#line 341 "compilers/imcc/imcc.l"
return RESULT;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 347 "compilers/imcc/imcc.l"
+#line 342 "compilers/imcc/imcc.l"
return GET_RESULTS;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 348 "compilers/imcc/imcc.l"
+#line 343 "compilers/imcc/imcc.l"
return YIELDT;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 349 "compilers/imcc/imcc.l"
+#line 344 "compilers/imcc/imcc.l"
return SET_YIELD;
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 350 "compilers/imcc/imcc.l"
+#line 345 "compilers/imcc/imcc.l"
return RETURN;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 351 "compilers/imcc/imcc.l"
+#line 346 "compilers/imcc/imcc.l"
return SET_RETURN;
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 352 "compilers/imcc/imcc.l"
+#line 347 "compilers/imcc/imcc.l"
return TAILCALL;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 353 "compilers/imcc/imcc.l"
+#line 348 "compilers/imcc/imcc.l"
return LOADLIB;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 355 "compilers/imcc/imcc.l"
+#line 350 "compilers/imcc/imcc.l"
return ADV_FLAT;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 356 "compilers/imcc/imcc.l"
+#line 351 "compilers/imcc/imcc.l"
return ADV_SLURPY;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 357 "compilers/imcc/imcc.l"
+#line 352 "compilers/imcc/imcc.l"
return ADV_OPTIONAL;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 358 "compilers/imcc/imcc.l"
+#line 353 "compilers/imcc/imcc.l"
return ADV_OPT_FLAG;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 359 "compilers/imcc/imcc.l"
+#line 354 "compilers/imcc/imcc.l"
return ADV_NAMED;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 360 "compilers/imcc/imcc.l"
+#line 355 "compilers/imcc/imcc.l"
return ADV_ARROW;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 361 "compilers/imcc/imcc.l"
+#line 356 "compilers/imcc/imcc.l"
return ADV_INVOCANT;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 362 "compilers/imcc/imcc.l"
+#line 357 "compilers/imcc/imcc.l"
return ADV_CALL_SIG;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 364 "compilers/imcc/imcc.l"
+#line 359 "compilers/imcc/imcc.l"
return NAMESPACE;
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 365 "compilers/imcc/imcc.l"
+#line 360 "compilers/imcc/imcc.l"
return HLL;
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 367 "compilers/imcc/imcc.l"
+#line 362 "compilers/imcc/imcc.l"
return LOCAL;
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 368 "compilers/imcc/imcc.l"
+#line 363 "compilers/imcc/imcc.l"
return CONST;
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 369 "compilers/imcc/imcc.l"
+#line 364 "compilers/imcc/imcc.l"
return GLOBAL_CONST;
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 370 "compilers/imcc/imcc.l"
+#line 365 "compilers/imcc/imcc.l"
return PARAM;
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 371 "compilers/imcc/imcc.l"
+#line 366 "compilers/imcc/imcc.l"
return GOTO;
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 372 "compilers/imcc/imcc.l"
+#line 367 "compilers/imcc/imcc.l"
return IF;
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 373 "compilers/imcc/imcc.l"
+#line 368 "compilers/imcc/imcc.l"
return UNLESS;
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 374 "compilers/imcc/imcc.l"
+#line 369 "compilers/imcc/imcc.l"
return PNULL;
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 375 "compilers/imcc/imcc.l"
+#line 370 "compilers/imcc/imcc.l"
return INTV;
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 376 "compilers/imcc/imcc.l"
+#line 371 "compilers/imcc/imcc.l"
return FLOATV;
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 378 "compilers/imcc/imcc.l"
+#line 373 "compilers/imcc/imcc.l"
return PMCV;
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 379 "compilers/imcc/imcc.l"
+#line 374 "compilers/imcc/imcc.l"
return STRINGV;
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 380 "compilers/imcc/imcc.l"
+#line 375 "compilers/imcc/imcc.l"
return SHIFT_LEFT;
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 381 "compilers/imcc/imcc.l"
+#line 376 "compilers/imcc/imcc.l"
return SHIFT_RIGHT;
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 382 "compilers/imcc/imcc.l"
+#line 377 "compilers/imcc/imcc.l"
return SHIFT_RIGHT_U;
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 383 "compilers/imcc/imcc.l"
+#line 378 "compilers/imcc/imcc.l"
return LOG_AND;
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 384 "compilers/imcc/imcc.l"
+#line 379 "compilers/imcc/imcc.l"
return LOG_OR;
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 385 "compilers/imcc/imcc.l"
+#line 380 "compilers/imcc/imcc.l"
return LOG_XOR;
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 386 "compilers/imcc/imcc.l"
+#line 381 "compilers/imcc/imcc.l"
return RELOP_LT;
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 387 "compilers/imcc/imcc.l"
+#line 382 "compilers/imcc/imcc.l"
return RELOP_LTE;
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 388 "compilers/imcc/imcc.l"
+#line 383 "compilers/imcc/imcc.l"
return RELOP_GT;
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 389 "compilers/imcc/imcc.l"
+#line 384 "compilers/imcc/imcc.l"
return RELOP_GTE;
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 390 "compilers/imcc/imcc.l"
+#line 385 "compilers/imcc/imcc.l"
return RELOP_EQ;
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 391 "compilers/imcc/imcc.l"
+#line 386 "compilers/imcc/imcc.l"
return RELOP_NE;
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 392 "compilers/imcc/imcc.l"
+#line 387 "compilers/imcc/imcc.l"
return POW;
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 394 "compilers/imcc/imcc.l"
+#line 389 "compilers/imcc/imcc.l"
return CONCAT;
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 395 "compilers/imcc/imcc.l"
+#line 390 "compilers/imcc/imcc.l"
return DOT;
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 397 "compilers/imcc/imcc.l"
+#line 392 "compilers/imcc/imcc.l"
return PLUS_ASSIGN;
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 398 "compilers/imcc/imcc.l"
+#line 393 "compilers/imcc/imcc.l"
return MINUS_ASSIGN;
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 399 "compilers/imcc/imcc.l"
+#line 394 "compilers/imcc/imcc.l"
return MUL_ASSIGN;
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 400 "compilers/imcc/imcc.l"
+#line 395 "compilers/imcc/imcc.l"
return DIV_ASSIGN;
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 401 "compilers/imcc/imcc.l"
+#line 396 "compilers/imcc/imcc.l"
return MOD_ASSIGN;
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 402 "compilers/imcc/imcc.l"
+#line 397 "compilers/imcc/imcc.l"
return FDIV;
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 403 "compilers/imcc/imcc.l"
+#line 398 "compilers/imcc/imcc.l"
return FDIV_ASSIGN;
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 404 "compilers/imcc/imcc.l"
+#line 399 "compilers/imcc/imcc.l"
return BAND_ASSIGN;
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 405 "compilers/imcc/imcc.l"
+#line 400 "compilers/imcc/imcc.l"
return BOR_ASSIGN;
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 406 "compilers/imcc/imcc.l"
+#line 401 "compilers/imcc/imcc.l"
return BXOR_ASSIGN;
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 407 "compilers/imcc/imcc.l"
+#line 402 "compilers/imcc/imcc.l"
return SHR_ASSIGN;
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 408 "compilers/imcc/imcc.l"
+#line 403 "compilers/imcc/imcc.l"
return SHL_ASSIGN;
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 409 "compilers/imcc/imcc.l"
+#line 404 "compilers/imcc/imcc.l"
return SHR_U_ASSIGN;
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 410 "compilers/imcc/imcc.l"
+#line 405 "compilers/imcc/imcc.l"
return CONCAT_ASSIGN;
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 412 "compilers/imcc/imcc.l"
+#line 407 "compilers/imcc/imcc.l"
{
char *macro_name = NULL;
int start_cond = YY_START;
@@ -3603,7 +3570,7 @@
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 455 "compilers/imcc/imcc.l"
+#line 450 "compilers/imcc/imcc.l"
{
/* the initial whitespace catcher misses this one */
SET_LINE_NUMBER;
@@ -3612,7 +3579,7 @@
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 461 "compilers/imcc/imcc.l"
+#line 456 "compilers/imcc/imcc.l"
{
const int c = yylex(valp,yyscanner,interp);
@@ -3627,7 +3594,7 @@
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 473 "compilers/imcc/imcc.l"
+#line 468 "compilers/imcc/imcc.l"
{
if (valp) {
char *label;
@@ -3652,7 +3619,7 @@
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 495 "compilers/imcc/imcc.l"
+#line 490 "compilers/imcc/imcc.l"
{
if (valp) {
char *label;
@@ -3675,12 +3642,12 @@
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 515 "compilers/imcc/imcc.l"
+#line 510 "compilers/imcc/imcc.l"
return COMMA;
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 517 "compilers/imcc/imcc.l"
+#line 512 "compilers/imcc/imcc.l"
{
/* trim last ':' */
YYCHOP();
@@ -3693,7 +3660,7 @@
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 527 "compilers/imcc/imcc.l"
+#line 522 "compilers/imcc/imcc.l"
{
char * const macro_name = mem_sys_strdup(yytext + 1);
int failed = expand_macro(interp, macro_name, yyscanner);
@@ -3706,54 +3673,41 @@
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 539 "compilers/imcc/imcc.l"
+#line 534 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, FLOATC);
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 540 "compilers/imcc/imcc.l"
+#line 535 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 541 "compilers/imcc/imcc.l"
+#line 536 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 542 "compilers/imcc/imcc.l"
+#line 537 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 543 "compilers/imcc/imcc.l"
+#line 538 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 545 "compilers/imcc/imcc.l"
+#line 540 "compilers/imcc/imcc.l"
{
valp->s = mem_sys_strdup(yytext);
- /* trailing 'L' */
- valp->s[strlen(valp->s) - 1] = '\0';
-
- /* no BIGINT native format yet */
return STRINGC;
}
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 555 "compilers/imcc/imcc.l"
-{
- valp->s = mem_sys_strdup(yytext);
-
- return STRINGC;
- }
- YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 561 "compilers/imcc/imcc.l"
+#line 546 "compilers/imcc/imcc.l"
{
macro_frame_t *frame;
@@ -3782,9 +3736,9 @@
yy_push_state(heredoc1, yyscanner);
}
YY_BREAK
-case 127:
+case 126:
YY_RULE_SETUP
-#line 589 "compilers/imcc/imcc.l"
+#line 574 "compilers/imcc/imcc.l"
{
/* charset:"..." */
valp->s = mem_sys_strdup(yytext);
@@ -3793,9 +3747,9 @@
return USTRINGC;
}
YY_BREAK
-case 128:
+case 127:
YY_RULE_SETUP
-#line 597 "compilers/imcc/imcc.l"
+#line 582 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3804,9 +3758,9 @@
return IREG;
}
YY_BREAK
-case 129:
+case 128:
YY_RULE_SETUP
-#line 605 "compilers/imcc/imcc.l"
+#line 590 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3815,9 +3769,9 @@
return NREG;
}
YY_BREAK
-case 130:
+case 129:
YY_RULE_SETUP
-#line 613 "compilers/imcc/imcc.l"
+#line 598 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3826,9 +3780,9 @@
return SREG;
}
YY_BREAK
-case 131:
+case 130:
YY_RULE_SETUP
-#line 621 "compilers/imcc/imcc.l"
+#line 606 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3837,17 +3791,17 @@
return PREG;
}
YY_BREAK
-case 132:
+case 131:
YY_RULE_SETUP
-#line 629 "compilers/imcc/imcc.l"
+#line 614 "compilers/imcc/imcc.l"
{
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
"'%s' is not a valid register name", yytext);
}
YY_BREAK
-case 133:
+case 132:
YY_RULE_SETUP
-#line 634 "compilers/imcc/imcc.l"
+#line 619 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->state->pasm_file == 0)
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3859,26 +3813,26 @@
return REG;
}
YY_BREAK
-case 134:
+case 133:
YY_RULE_SETUP
-#line 646 "compilers/imcc/imcc.l"
+#line 631 "compilers/imcc/imcc.l"
{ return handle_identifier(interp, valp, yytext); }
YY_BREAK
-case 135:
+case 134:
YY_RULE_SETUP
-#line 648 "compilers/imcc/imcc.l"
+#line 633 "compilers/imcc/imcc.l"
/* skip */;
YY_BREAK
-case 136:
+case 135:
YY_RULE_SETUP
-#line 650 "compilers/imcc/imcc.l"
+#line 635 "compilers/imcc/imcc.l"
{
/* catch all except for state macro */
return yytext[0];
}
YY_BREAK
case YY_STATE_EOF(emit):
-#line 655 "compilers/imcc/imcc.l"
+#line 640 "compilers/imcc/imcc.l"
{
BEGIN(INITIAL);
@@ -3891,34 +3845,34 @@
}
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 666 "compilers/imcc/imcc.l"
+#line 651 "compilers/imcc/imcc.l"
yyterminate();
YY_BREAK
-case 137:
+case 136:
YY_RULE_SETUP
-#line 668 "compilers/imcc/imcc.l"
+#line 653 "compilers/imcc/imcc.l"
{
/* the initial whitespace catcher misses this one */
SET_LINE_NUMBER;
DUP_AND_RET(valp, ENDM);
}
YY_BREAK
-case 138:
-/* rule 138 can match eol */
+case 137:
+/* rule 137 can match eol */
YY_RULE_SETUP
-#line 674 "compilers/imcc/imcc.l"
+#line 659 "compilers/imcc/imcc.l"
{
DUP_AND_RET(valp, '\n');
}
YY_BREAK
-case 139:
+case 138:
YY_RULE_SETUP
-#line 678 "compilers/imcc/imcc.l"
+#line 663 "compilers/imcc/imcc.l"
return LABEL;
YY_BREAK
-case 140:
+case 139:
YY_RULE_SETUP
-#line 680 "compilers/imcc/imcc.l"
+#line 665 "compilers/imcc/imcc.l"
{
if (yylex(valp,yyscanner,interp) != LABEL)
@@ -3943,9 +3897,9 @@
return LABEL;
}
YY_BREAK
-case 141:
+case 140:
YY_RULE_SETUP
-#line 704 "compilers/imcc/imcc.l"
+#line 689 "compilers/imcc/imcc.l"
{
if (valp) {
if (!IMCC_INFO(interp)->cur_macro_name) {
@@ -3974,46 +3928,46 @@
return IDENTIFIER;
}
YY_BREAK
-case 142:
+case 141:
YY_RULE_SETUP
-#line 732 "compilers/imcc/imcc.l"
+#line 717 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, ' ');
YY_BREAK
-case 143:
+case 142:
YY_RULE_SETUP
-#line 733 "compilers/imcc/imcc.l"
+#line 718 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, REG);
YY_BREAK
-case 144:
+case 143:
YY_RULE_SETUP
-#line 734 "compilers/imcc/imcc.l"
+#line 719 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, REG);
YY_BREAK
-case 145:
+case 144:
YY_RULE_SETUP
-#line 735 "compilers/imcc/imcc.l"
+#line 720 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, IDENTIFIER);
YY_BREAK
-case 146:
+case 145:
YY_RULE_SETUP
-#line 736 "compilers/imcc/imcc.l"
+#line 721 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, MACRO);
YY_BREAK
-case 147:
+case 146:
YY_RULE_SETUP
-#line 737 "compilers/imcc/imcc.l"
+#line 722 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, yytext[0]);
YY_BREAK
case YY_STATE_EOF(macro):
-#line 738 "compilers/imcc/imcc.l"
+#line 723 "compilers/imcc/imcc.l"
yyterminate();
YY_BREAK
-case 148:
+case 147:
YY_RULE_SETUP
-#line 740 "compilers/imcc/imcc.l"
+#line 725 "compilers/imcc/imcc.l"
ECHO;
YY_BREAK
-#line 4017 "compilers/imcc/imclexer.c"
+#line 3971 "compilers/imcc/imclexer.c"
case YY_STATE_EOF(pod):
case YY_STATE_EOF(cmt1):
case YY_STATE_EOF(cmt2):
@@ -4316,7 +4270,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 >= 1095 )
+ if ( yy_current_state >= 1088 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4345,11 +4299,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 >= 1095 )
+ if ( yy_current_state >= 1088 )
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 == 1094);
+ yy_is_jam = (yy_current_state == 1087);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -5225,7 +5179,7 @@
#define YYTABLES_NAME "yytables"
-#line 740 "compilers/imcc/imcc.l"
+#line 725 "compilers/imcc/imcc.l"
@@ -5849,7 +5803,7 @@
imcc_run_compilation(PARROT_INTERP, void *yyscanner) {
IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) {
if (yyparse(yyscanner, interp)) {
- IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION;
+ IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION;
IMCC_INFO(interp)->error_message = string_from_literal(interp, "syntax error ... somewhere");
return;
}
Modified: branches/ops_massacre/compilers/imcc/instructions.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/instructions.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/instructions.c Mon May 24 08:26:56 2010 (r46947)
@@ -794,13 +794,11 @@
*/
-PARROT_EXPORT
int
emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(const char *param))
{
ASSERT_ARGS(emit_open)
IMCC_INFO(interp)->emitter = type;
- IMCC_INFO(interp)->has_compile = 0;
IMCC_INFO(interp)->dont_optimize = 0;
return (emitters[IMCC_INFO(interp)->emitter]).open(interp, param);
@@ -817,7 +815,6 @@
*/
-PARROT_EXPORT
int
emit_flush(PARROT_INTERP, ARGIN_NULLOK(void *param), ARGIN(IMC_Unit *unit))
{
@@ -849,7 +846,6 @@
*/
-PARROT_EXPORT
int
emit_close(PARROT_INTERP, ARGIN_NULLOK(void *param))
{
Modified: branches/ops_massacre/compilers/imcc/instructions.h
==============================================================================
--- branches/ops_massacre/compilers/imcc/instructions.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/instructions.h Mon May 24 08:26:56 2010 (r46947)
@@ -91,21 +91,6 @@
/* HEADERIZER BEGIN: compilers/imcc/instructions.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_EXPORT
-int emit_close(PARROT_INTERP, ARGIN_NULLOK(void *param))
- __attribute__nonnull__(1);
-
-PARROT_EXPORT
-int emit_flush(PARROT_INTERP,
- ARGIN_NULLOK(void *param),
- ARGIN(IMC_Unit *unit))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3);
-
-PARROT_EXPORT
-int emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(const char *param))
- __attribute__nonnull__(1);
-
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
Instruction * _delete_ins(ARGMOD(IMC_Unit *unit), ARGIN(Instruction *ins))
@@ -133,6 +118,18 @@
FUNC_MODIFIES(*unit)
FUNC_MODIFIES(*ins);
+int emit_close(PARROT_INTERP, ARGIN_NULLOK(void *param))
+ __attribute__nonnull__(1);
+
+int emit_flush(PARROT_INTERP,
+ ARGIN_NULLOK(void *param),
+ ARGIN(IMC_Unit *unit))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+int emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(const char *param))
+ __attribute__nonnull__(1);
+
PARROT_CAN_RETURN_NULL
Instruction * emitb(PARROT_INTERP,
ARGMOD_NULLOK(IMC_Unit *unit),
@@ -215,13 +212,6 @@
FUNC_MODIFIES(*ins)
FUNC_MODIFIES(*tmp);
-#define ASSERT_ARGS_emit_close __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_emit_flush __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(unit))
-#define ASSERT_ARGS_emit_open __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS__delete_ins __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(unit) \
, PARROT_ASSERT_ARG(ins))
@@ -232,6 +222,13 @@
#define ASSERT_ARGS_delete_ins __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(unit) \
, PARROT_ASSERT_ARG(ins))
+#define ASSERT_ARGS_emit_close __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_emit_flush __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(unit))
+#define ASSERT_ARGS_emit_open __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_emitb __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_free_ins __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_massacre/compilers/imcc/main.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/main.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/main.c Mon May 24 08:26:56 2010 (r46947)
@@ -47,24 +47,25 @@
static void compile_to_bytecode(PARROT_INTERP,
ARGIN(const char * const sourcefile),
- ARGIN_NULLOK(const char * const output_file))
+ ARGIN_NULLOK(const char * const output_file),
+ ARGIN(yyscan_t yyscanner))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4);
static void determine_input_file_type(PARROT_INTERP,
- ARGIN(const char * const sourcefile))
+ ARGIN(const char * const sourcefile),
+ ARGIN(yyscan_t yyscanner))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
static void determine_output_file_type(PARROT_INTERP,
- ARGMOD(int *obj_file),
ARGIN(const char *output_file))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*obj_file);
+ __attribute__nonnull__(2);
-static void do_pre_process(PARROT_INTERP)
+static void do_pre_process(PARROT_INTERP, yyscan_t yyscanner)
__attribute__nonnull__(1);
static void imcc_get_optimization_description(
@@ -74,13 +75,11 @@
__attribute__nonnull__(3)
FUNC_MODIFIES(*opt_desc);
-static void imcc_run_pbc(PARROT_INTERP,
- int obj_file,
- ARGIN_NULLOK(const char *output_file),
+static void imcc_parseflags(PARROT_INTERP,
int argc,
ARGIN(const char **argv))
__attribute__nonnull__(1)
- __attribute__nonnull__(5);
+ __attribute__nonnull__(3);
static void imcc_write_pbc(PARROT_INTERP, ARGIN(const char *output_file))
__attribute__nonnull__(1)
@@ -93,20 +92,21 @@
#define ASSERT_ARGS_compile_to_bytecode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(sourcefile))
+ , PARROT_ASSERT_ARG(sourcefile) \
+ , PARROT_ASSERT_ARG(yyscanner))
#define ASSERT_ARGS_determine_input_file_type __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(sourcefile))
+ , PARROT_ASSERT_ARG(sourcefile) \
+ , PARROT_ASSERT_ARG(yyscanner))
#define ASSERT_ARGS_determine_output_file_type __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(obj_file) \
, PARROT_ASSERT_ARG(output_file))
#define ASSERT_ARGS_do_pre_process __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_imcc_get_optimization_description \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(opt_desc))
-#define ASSERT_ARGS_imcc_run_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_imcc_parseflags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(argv))
#define ASSERT_ARGS_imcc_write_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -149,119 +149,102 @@
/*
-=item C<void imcc_start_handling_flags(PARROT_INTERP)>
+=item C<static void imcc_parseflags(PARROT_INTERP, int argc, const char **argv)>
-Initialize handling of IMCC related command line flags.
+Parse flags ans set approptiate state(s)
=cut
*/
-void
-imcc_start_handling_flags(PARROT_INTERP)
-{
- SET_STATE_RUN_PBC(interp);
-}
-
-/*
-
-=item C<int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt,
-Parrot_Run_core_t *core)>
-Handle Parrot's command line for IMCC related option and set appropriate flags.
+static void
+imcc_parseflags(PARROT_INTERP, int argc, ARGIN(const char **argv))
+{
+ ASSERT_ARGS(imcc_parseflags)
+ struct longopt_opt_info opt = LONGOPT_OPT_INFO_INIT;
-Return 1 if flag handled, 0 if not.
+ /* default state: run pbc */
+ SET_STATE_RUN_PBC(interp);
-=cut
+ while (longopt_get(interp, argc, argv, Parrot_cmd_options(), &opt) > 0) {
+ switch (opt.opt_id) {
+ case 'd':
+ if (opt.opt_arg && is_all_hex_digits(opt.opt_arg)) {
+ IMCC_INFO(interp)->debug = strtoul(opt.opt_arg, NULL, 16);
+ }
+ else {
+ IMCC_INFO(interp)->debug++;
+ }
+ break;
+ case 'w':
+ /* FIXME It's not best way to set warnings... */
+ Parrot_setwarnings(interp, PARROT_WARNINGS_ALL_FLAG);
+ IMCC_INFO(interp)->imcc_warn = 1;
+ break;
+ case 'G':
+ IMCC_INFO(interp)->gc_off = 1;
+ break;
+ case 'a':
+ SET_STATE_PASM_FILE(interp);
+ break;
+ case 'r':
+ if (STATE_RUN_PBC(interp))
+ SET_STATE_RUN_FROM_FILE(interp);
+ SET_STATE_RUN_PBC(interp);
+ break;
+ case 'c':
+ SET_STATE_LOAD_PBC(interp);
+ break;
+ case 'v':
+ IMCC_INFO(interp)->verbose++;
+ break;
+ case 'y':
+ yydebug = 1;
+ break;
+ case 'E':
+ SET_STATE_PRE_PROCESS(interp);
+ break;
+ case 'o':
+ UNSET_STATE_RUN_PBC(interp);
+ interp->output_file = opt.opt_arg;
+ break;
-*/
+ case OPT_PBC_OUTPUT:
+ UNSET_STATE_RUN_PBC(interp);
+ SET_STATE_WRITE_PBC(interp);
+ if (!interp->output_file)
+ interp->output_file = "-";
+ break;
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-int
-imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt,
- Parrot_Run_core_t *core)
-{
- PARROT_ASSERT(opt);
- PARROT_ASSERT(core);
+ case 'O':
+ if (!opt.opt_arg) {
+ IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
+ break;
+ }
+ if (strchr(opt.opt_arg, 'p'))
+ IMCC_INFO(interp)->optimizer_level |= OPT_PASM;
+ if (strchr(opt.opt_arg, 'c'))
+ IMCC_INFO(interp)->optimizer_level |= OPT_SUB;
+
+ /* currently not ok due to different register allocation */
+ if (strchr(opt.opt_arg, '1')) {
+ IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
+ }
+ if (strchr(opt.opt_arg, '2')) {
+ IMCC_INFO(interp)->optimizer_level |= (OPT_PRE | OPT_CFG);
+ }
+ break;
- switch (opt->opt_id) {
- case 'd':
- if (opt->opt_arg && is_all_hex_digits(opt->opt_arg)) {
- IMCC_INFO(interp)->debug = strtoul(opt->opt_arg, NULL, 16);
- }
- else {
- IMCC_INFO(interp)->debug++;
- }
- break;
- case 'w':
- /* FIXME It's not best way to set warnings... */
- Parrot_setwarnings(interp, PARROT_WARNINGS_ALL_FLAG);
- IMCC_INFO(interp)->imcc_warn = 1;
- break;
- case 'G':
- IMCC_INFO(interp)->gc_off = 1;
- break;
- case 'a':
- SET_STATE_PASM_FILE(interp);
- break;
- case 'r':
- if (STATE_RUN_PBC(interp))
- SET_STATE_RUN_FROM_FILE(interp);
- SET_STATE_RUN_PBC(interp);
- break;
- case 'c':
- SET_STATE_LOAD_PBC(interp);
- break;
- case 'v':
- IMCC_INFO(interp)->verbose++;
- break;
- case 'y':
- yydebug = 1;
- break;
- case 'E':
- SET_STATE_PRE_PROCESS(interp);
- break;
- case 'o':
- UNSET_STATE_RUN_PBC(interp);
- interp->output_file = opt->opt_arg;
- break;
-
- case OPT_PBC_OUTPUT:
- UNSET_STATE_RUN_PBC(interp);
- SET_STATE_WRITE_PBC(interp);
- if (!interp->output_file)
- interp->output_file = "-";
- break;
-
- case 'O':
- if (!opt->opt_arg) {
- IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
+ default:
+ /* skip already processed arguments */
break;
}
- if (strchr(opt->opt_arg, 'p'))
- IMCC_INFO(interp)->optimizer_level |= OPT_PASM;
- if (strchr(opt->opt_arg, 'c'))
- IMCC_INFO(interp)->optimizer_level |= OPT_SUB;
-
- /* currently not ok due to different register allocation */
- if (strchr(opt->opt_arg, '1')) {
- IMCC_INFO(interp)->optimizer_level |= OPT_PRE;
- }
- if (strchr(opt->opt_arg, '2')) {
- IMCC_INFO(interp)->optimizer_level |= (OPT_PRE | OPT_CFG);
- }
- break;
-
- default:
- return 0;
}
-
- return 1;
}
/*
-=item C<static void do_pre_process(PARROT_INTERP)>
+=item C<static void do_pre_process(PARROT_INTERP, yyscan_t yyscanner)>
Pre-processor step. Turn parser's output codes into Parrot instructions.
@@ -270,14 +253,12 @@
*/
static void
-do_pre_process(PARROT_INTERP)
+do_pre_process(PARROT_INTERP, yyscan_t yyscanner)
{
ASSERT_ARGS(do_pre_process)
int c;
YYSTYPE val;
- const yyscan_t yyscanner = IMCC_INFO(interp)->yyscanner;
-
IMCC_push_parser_state(interp);
c = yylex(&val, yyscanner, interp); /* is reset at end of while loop */
while (c) {
@@ -409,42 +390,8 @@
/*
-=item C<void imcc_initialize(PARROT_INTERP)>
-
-Initialise interpreter and set optimisation level.
-
-=cut
-
-*/
-
-void
-imcc_initialize(PARROT_INTERP)
-{
- yyscan_t yyscanner = IMCC_INFO(interp)->yyscanner;
-
- do_yylex_init(interp, &yyscanner);
-
- Parrot_block_GC_mark(interp);
- Parrot_block_GC_sweep(interp);
-
- IMCC_INFO(interp)->yyscanner = yyscanner;
-
- /* Default optimization level is zero; see optimizer.c, imc.h */
- if (!IMCC_INFO(interp)->optimizer_level) {
-#if 1
- IMCC_INFO(interp)->optimizer_level = 0;
-#else
- /* won't even make with this: something with Data::Dumper and
- * set_i_p_i*/
- IMCC_INFO(interp)->optimizer_level = OPT_PRE;
-#endif
- }
-}
-
-/*
-
-=item C<static void imcc_run_pbc(PARROT_INTERP, int obj_file, const char
-*output_file, int argc, const char **argv)>
+=item C<void imcc_run_pbc(PARROT_INTERP, const char *output_file, int argc,
+const char **argv)>
Write out or run Parrot bytecode.
@@ -452,25 +399,13 @@
*/
-static void
-imcc_run_pbc(PARROT_INTERP, int obj_file, ARGIN_NULLOK(const char *output_file),
+void
+imcc_run_pbc(PARROT_INTERP, ARGIN_NULLOK(const char *output_file),
int argc, ARGIN(const char **argv))
{
- ASSERT_ARGS(imcc_run_pbc)
- if (IMCC_INFO(interp)->imcc_warn)
- PARROT_WARNINGS_on(interp, PARROT_WARNINGS_ALL_FLAG);
- else
- PARROT_WARNINGS_off(interp, PARROT_WARNINGS_ALL_FLAG);
+ /* ASSERT_ARGS(imcc_run_pbc) */
- if (!IMCC_INFO(interp)->gc_off) {
- Parrot_unblock_GC_mark(interp);
- Parrot_unblock_GC_sweep(interp);
- }
-
- if (obj_file)
- IMCC_info(interp, 1, "Writing %s\n", output_file);
- else
- IMCC_info(interp, 1, "Running...\n");
+ IMCC_info(interp, 1, "Running...\n");
/* runs :init functions */
PackFile_fixup_subs(interp, PBC_IMMEDIATE, NULL);
@@ -522,7 +457,7 @@
/*
=item C<static void determine_input_file_type(PARROT_INTERP, const char * const
-sourcefile)>
+sourcefile, yyscan_t yyscanner)>
Read in the source and determine whether it's Parrot bytecode or PASM
@@ -531,10 +466,10 @@
*/
static void
-determine_input_file_type(PARROT_INTERP, ARGIN(const char * const sourcefile))
+determine_input_file_type(PARROT_INTERP, ARGIN(const char * const sourcefile),
+ ARGIN(yyscan_t yyscanner))
{
ASSERT_ARGS(determine_input_file_type)
- yyscan_t yyscanner = IMCC_INFO(interp)->yyscanner;
/* Read in the source and check the file extension for the input type;
a file extension .pbc means it's parrot bytecode;
@@ -566,8 +501,8 @@
/*
-=item C<static void determine_output_file_type(PARROT_INTERP, int *obj_file,
-const char *output_file)>
+=item C<static void determine_output_file_type(PARROT_INTERP, const char
+*output_file)>
Decide what kind of file we are to output.
@@ -576,8 +511,7 @@
*/
static void
-determine_output_file_type(PARROT_INTERP,
- ARGMOD(int *obj_file), ARGIN(const char *output_file))
+determine_output_file_type(PARROT_INTERP, ARGIN(const char *output_file))
{
ASSERT_ARGS(determine_output_file_type)
const char * const ext = strrchr(output_file, '.');
@@ -585,17 +519,13 @@
if (ext) {
if (STREQ(ext, ".pbc"))
SET_STATE_WRITE_PBC(interp);
- else if (STREQ(ext, PARROT_OBJ_EXT)) {
- UNUSED(obj_file);
- IMCC_fatal_standalone(interp, 1, "main: can't produce object file");
- }
}
}
/*
=item C<static void compile_to_bytecode(PARROT_INTERP, const char * const
-sourcefile, const char * const output_file)>
+sourcefile, const char * const output_file, yyscan_t yyscanner)>
Compile source code into bytecode (or die trying).
@@ -606,11 +536,11 @@
static void
compile_to_bytecode(PARROT_INTERP,
ARGIN(const char * const sourcefile),
- ARGIN_NULLOK(const char * const output_file))
+ ARGIN_NULLOK(const char * const output_file),
+ ARGIN(yyscan_t yyscanner))
{
ASSERT_ARGS(compile_to_bytecode)
PackFile *pf;
- yyscan_t yyscanner = IMCC_INFO(interp)->yyscanner;
const int per_pbc = STATE_WRITE_PBC(interp) || STATE_RUN_PBC(interp);
const int opt_level = IMCC_INFO(interp)->optimizer_level;
@@ -672,29 +602,34 @@
imcc_run(PARROT_INTERP, ARGIN(const char *sourcefile), int argc,
ARGIN(const char **argv))
{
- int obj_file;
- yyscan_t yyscanner = IMCC_INFO(interp)->yyscanner;
+ yyscan_t yyscanner;
const char * const output_file = interp->output_file;
+ imcc_parseflags(interp, argc, argv);
+
+ /* PMCs in IMCC_INFO won't get marked */
+ Parrot_block_GC_mark(interp);
+ Parrot_block_GC_sweep(interp);
+
+ yylex_init_extra(interp, &yyscanner);
+
/* Figure out what kind of source file we have -- if we have one */
if (!sourcefile || !*sourcefile)
IMCC_fatal_standalone(interp, 1, "main: No source file specified.\n");
else
- determine_input_file_type(interp, sourcefile);
+ determine_input_file_type(interp, sourcefile, yyscanner);
if (STATE_PRE_PROCESS(interp)) {
- do_pre_process(interp);
+ do_pre_process(interp, yyscanner);
Parrot_destroy(interp);
yylex_destroy(yyscanner);
- IMCC_INFO(interp)->yyscanner = NULL;
return 0;
}
/* Do we need to produce an output file? If so, what type? */
- obj_file = 0;
if (output_file) {
- determine_output_file_type(interp, &obj_file, output_file);
+ determine_output_file_type(interp, output_file);
if (STREQ(sourcefile, output_file) && !STREQ(sourcefile, "-"))
IMCC_fatal_standalone(interp, 1, "main: outputfile is sourcefile\n");
@@ -718,7 +653,7 @@
Parrot_pbc_load(interp, pf);
}
else
- compile_to_bytecode(interp, sourcefile, output_file);
+ compile_to_bytecode(interp, sourcefile, output_file, yyscanner);
/* Produce a PBC output file, if one was requested */
if (STATE_WRITE_PBC(interp)) {
@@ -741,13 +676,24 @@
}
}
- /* Run the bytecode */
- if (STATE_RUN_PBC(interp))
- imcc_run_pbc(interp, obj_file, output_file, argc, argv);
+ /* tear down the compilation context */
+ if (IMCC_INFO(interp)->imcc_warn)
+ PARROT_WARNINGS_on(interp, PARROT_WARNINGS_ALL_FLAG);
+ else
+ PARROT_WARNINGS_off(interp, PARROT_WARNINGS_ALL_FLAG);
+
+ if (!IMCC_INFO(interp)->gc_off) {
+ Parrot_unblock_GC_mark(interp);
+ Parrot_unblock_GC_sweep(interp);
+ }
yylex_destroy(yyscanner);
- IMCC_INFO(interp)->yyscanner = NULL;
- return 0;
+
+ /* should the bytecode be run */
+ if (STATE_RUN_PBC(interp))
+ return 1;
+ else
+ return 0;
}
/*
Modified: branches/ops_massacre/compilers/imcc/optimizer.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/optimizer.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/optimizer.c Mon May 24 08:26:56 2010 (r46947)
@@ -824,18 +824,19 @@
case PARROT_ARG_S:
eval[i + 1] = i; /* regs used are I0, I1, I2 */
if (ops <= 2 || i) { /* fill source regs */
+ SymReg *r_ = r[i]->type & VT_CONSTP ? r[i]->reg : r[i];
switch (r[i]->set) {
case 'I':
- REG_INT(interp, i) = IMCC_int_from_reg(interp, r[i]);
+ REG_INT(interp, i) = IMCC_int_from_reg(interp, r_);
break;
case 'N':
{
- STRING * const s = Parrot_str_new(interp, r[i]->name, 0);
+ STRING * const s = Parrot_str_new(interp, r_->name, 0);
REG_NUM(interp, i) = Parrot_str_to_num(interp, s);
}
break;
case 'S':
- REG_STR(interp, i) = IMCC_string_from_reg(interp, r[i]);
+ REG_STR(interp, i) = IMCC_string_from_reg(interp, r_);
break;
default:
break;
@@ -1416,7 +1417,7 @@
Instruction *ins = unit->bb_list[i]->start;
if ((ins->type & ITLABEL) && *ins->symregs[0]->name != '_') {
const SymReg * const lab = ins->symregs[0];
- used = IMCC_INFO(interp)->has_compile ? 1 : 0;
+ used = 0;
if (!lab->first_ins)
continue;
Modified: branches/ops_massacre/compilers/imcc/parser.h
==============================================================================
--- branches/ops_massacre/compilers/imcc/parser.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/parser.h Mon May 24 08:26:56 2010 (r46947)
@@ -27,11 +27,12 @@
SymReg * macro(PARROT_INTERP, char *name);
-PARROT_EXPORT int yyparse(yyscan_t, PARROT_INTERP);
-PARROT_EXPORT int yylex(YYSTYPE *, yyscan_t, PARROT_INTERP);
-PARROT_EXPORT int yylex_destroy(yyscan_t);
+int yyparse(yyscan_t, PARROT_INTERP);
+int yylex(YYSTYPE *, yyscan_t, PARROT_INTERP);
+int yylex_destroy(yyscan_t);
int yylex_init(yyscan_t*);
+int yylex_init_extra(PARROT_INTERP, yyscan_t*);
int yyget_column(yyscan_t);
void yyset_column(int column_no , yyscan_t);
int yyerror(yyscan_t, Interp*, const char *);
Modified: branches/ops_massacre/compilers/imcc/parser_util.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/parser_util.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/parser_util.c Mon May 24 08:26:56 2010 (r46947)
@@ -479,8 +479,6 @@
if (r[0]->set == r[1]->set && REG_NEEDS_ALLOC(r[1]))
ins->type |= ITALIAS;
}
- else if (STREQ(name, "compile"))
- ++IMCC_INFO(interp)->has_compile;
found_ins:
if (emit)
@@ -494,28 +492,6 @@
/*
-=item C<int do_yylex_init(PARROT_INTERP, yyscan_t* yyscanner)>
-
-=cut
-
-*/
-
-PARROT_EXPORT
-int
-do_yylex_init(PARROT_INTERP, ARGOUT(yyscan_t* yyscanner))
-{
- ASSERT_ARGS(do_yylex_init)
- const int retval = yylex_init(yyscanner);
-
- /* This way we can get the interpreter via yyscanner */
- if (!retval)
- yyset_extra(interp, *yyscanner);
-
- return retval;
-}
-
-/*
-
=item C<PMC * imcc_compile(PARROT_INTERP, const char *s, int pasm_file, STRING
**error_message)>
@@ -547,7 +523,7 @@
UINTVAL regs_used[4] = {3, 3, 3, 3};
INTVAL eval_number;
- do_yylex_init(interp, &yyscanner);
+ yylex_init_extra(interp, &yyscanner);
/* we create not yet anchored PMCs - e.g. Subs: turn off GC */
Parrot_block_GC_mark(interp);
@@ -865,7 +841,7 @@
if (ext && STREQ(ext, ".pasm")) {
void *yyscanner;
- do_yylex_init(interp, &yyscanner);
+ yylex_init_extra(interp, &yyscanner);
IMCC_INFO(interp)->state->pasm_file = 1;
/* see imcc.l */
@@ -875,7 +851,7 @@
}
else {
void *yyscanner;
- do_yylex_init(interp, &yyscanner);
+ yylex_init_extra(interp, &yyscanner);
IMCC_INFO(interp)->state->pasm_file = 0;
compile_file(interp, fp, yyscanner);
@@ -1191,7 +1167,6 @@
*/
-PARROT_EXPORT
void
imcc_init(PARROT_INTERP)
{
@@ -1240,7 +1215,6 @@
*/
-PARROT_EXPORT
void
imcc_destroy(PARROT_INTERP)
{
Modified: branches/ops_massacre/compilers/imcc/pbc.c
==============================================================================
--- branches/ops_massacre/compilers/imcc/pbc.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/imcc/pbc.c Mon May 24 08:26:56 2010 (r46947)
@@ -888,7 +888,7 @@
IMCC_string_from_reg(PARROT_INTERP, ARGIN(const SymReg *r))
{
ASSERT_ARGS(IMCC_string_from_reg)
- const char *buf = r->name;
+ char *buf = r->name;
if (r->type & VT_ENCODED) {
/*
@@ -896,19 +896,63 @@
* get first part as charset, rest as string
*/
STRING *s;
+ const CHARSET *s_charset;
+ const ENCODING *s_encoding = NULL;
+ const ENCODING *src_encoding;
const char *charset;
- char * const p = strchr(r->name, '"');
+ #define MAX_NAME 31
+ char charset_name[MAX_NAME + 1];
+ char encoding_name[MAX_NAME + 1];
+ char * p = strchr(r->name, '"');
+ char * p2 = strchr(r->name, ':');
PARROT_ASSERT(p && p[-1] == ':');
-
- p[-1] = 0;
- charset = r->name;
+ if (p2 < p -1) {
+ strncpy(encoding_name, buf, p2 - buf);
+ encoding_name[p2-buf] = '\0';
+ strncpy(charset_name, p2 +1, p - p2 - 2);
+ charset_name[p- p2 - 2] = '\0';
+ /*fprintf(stderr, "%s:%s\n", charset_name, encoding_name);*/
+ s_charset = Parrot_find_charset(interp, charset_name);
+ s_encoding = Parrot_find_encoding(interp, encoding_name);
+ }
+ else {
+ strncpy(charset_name, buf, p - buf - 1);
+ charset_name[p - buf - 1] = '\0';
+ /*fprintf(stderr, "%s\n", charset_name);*/
+ s_charset = Parrot_find_charset(interp, charset_name);
+ }
+ if (strcmp(charset_name, "unicode") == 0)
+ src_encoding = Parrot_utf8_encoding_ptr;
+ else
+ src_encoding = Parrot_fixed_8_encoding_ptr;
+ if (s_encoding == NULL)
+ s_encoding = src_encoding;
/* past delim */
buf = p + 1;
- s = Parrot_str_unescape(interp, buf, '"', charset);
-
- /* restore colon, as we may reuse this string */
- p[-1] = ':';
+ if (strcmp(charset_name, "unicode") == 0 && strcmp(encoding_name, "utf8") == 0) {
+ /* Special case needed for backward compatibility with utf8 literals
+ * using \xHH\xHH byte sequences */
+ s = Parrot_str_unescape(interp, buf, '"', "utf8:unicode");
+ }
+ else {
+ p = buf;
+ p2 = strchr(buf, '"');
+ while (p2 != NULL) {
+ p = p2;
+ p2 = strchr(p + 1, '"');
+ }
+ {
+ STRING * aux = Parrot_str_new_init(interp, buf, p - buf,
+ src_encoding, s_charset, 0);
+ s = Parrot_str_unescape_string(interp, aux,
+ s_charset, s_encoding, PObj_constant_FLAG);
+ if (!CHARSET_VALIDATE(interp, s))
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_STRING_REPRESENTATION,
+ "Malformed string");
+ }
+ }
return s;
}
else if (*buf == '"') {
Copied: branches/ops_massacre/compilers/opsc/Defines.mak (from r46944, trunk/compilers/opsc/Defines.mak)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/Defines.mak Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/Defines.mak)
@@ -0,0 +1,24 @@
+OPSC_DIR = compilers/opsc
+
+OPSC_SOURCES_GENERATED = \
+ $(OPSC_DIR)/gen/Ops/Compiler.pir \
+ $(OPSC_DIR)/gen/Ops/Compiler/Actions.pir \
+ $(OPSC_DIR)/gen/Ops/Compiler/Grammar.pir \
+ $(OPSC_DIR)/gen/Ops/Emitter.pir \
+ $(OPSC_DIR)/gen/Ops/Trans.pir \
+ $(OPSC_DIR)/gen/Ops/Trans/C.pir \
+ $(OPSC_DIR)/gen/Ops/Op.pir \
+ $(OPSC_DIR)/gen/Ops/OpLib.pir \
+ $(OPSC_DIR)/gen/Ops/File.pir \
+ $(OPSC_DIR)/gen/Ops/Renumberer.pir
+
+OPSC_SOURCES = \
+ $(OPSC_DIR)/opsc.pir \
+ $(OPSC_DIR)/src/builtins.pir \
+ $(OPSC_SOURCES_GENERATED)
+
+OPSC_CLEANUPS = \
+ $(OPSC_DIR)/opsc.pbc \
+ $(LIBRARY_DIR)/opsc.pbc \
+ $(OPSC_SOURCES_GENERATED)
+
Copied: branches/ops_massacre/compilers/opsc/Rules.mak (from r46944, trunk/compilers/opsc/Rules.mak)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/Rules.mak Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/Rules.mak)
@@ -0,0 +1,50 @@
+$(LIBRARY_DIR)/opsc.pbc: $(NQP_RX) $(OPSC_SOURCES) $(NQPRX_LIB_SETTING)
+ $(PARROT) -o $(LIBRARY_DIR)/opsc.pbc $(OPSC_DIR)/opsc.pir
+
+$(OPSC_DIR)/gen/Ops/Compiler.pir: $(OPSC_DIR)/src/Ops/Compiler.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Compiler.pm
+
+$(OPSC_DIR)/gen/Ops/Compiler/Actions.pir: $(OPSC_DIR)/src/Ops/Compiler/Actions.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Compiler/Actions.pm
+
+$(OPSC_DIR)/gen/Ops/Compiler/Grammar.pir: $(OPSC_DIR)/src/Ops/Compiler/Grammar.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Compiler/Grammar.pm
+
+$(OPSC_DIR)/gen/Ops/Emitter.pir: $(OPSC_DIR)/src/Ops/Emitter.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Emitter.pm
+
+$(OPSC_DIR)/gen/Ops/File.pir: $(OPSC_DIR)/src/Ops/File.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/File.pm
+
+$(OPSC_DIR)/gen/Ops/Op.pir: $(OPSC_DIR)/src/Ops/Op.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Op.pm
+
+$(OPSC_DIR)/gen/Ops/OpLib.pir: $(OPSC_DIR)/src/Ops/OpLib.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/OpLib.pm
+
+$(OPSC_DIR)/gen/Ops/Trans.pir: $(OPSC_DIR)/src/Ops/Trans.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Trans.pm
+
+$(OPSC_DIR)/gen/Ops/Trans/C.pir: $(OPSC_DIR)/src/Ops/Trans/C.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Trans/C.pm
+
+$(OPSC_DIR)/gen/Ops/Renumberer.pir: $(OPSC_DIR)/src/Ops/Renumberer.pm $(NQP_RX)
+ $(NQP_RX) --target=pir --output=$@ $(OPSC_DIR)/src/Ops/Renumberer.pm
+
+# Target to force rebuild opsc from main Makefile
+$(OPSC_DIR)/ops2c.nqp: $(LIBRARY_DIR)/opsc.pbc
+
+$(OPS2C): $(OPSC_DIR)/ops2c.nqp $(LIBRARY_DIR)/opsc.pbc $(NQP_RX) $(PBC_TO_EXE)
+ $(NQP_RX) --target=pir $(OPSC_DIR)/ops2c.nqp >ops2c.pir
+ $(PARROT) -o ops2c.pbc ops2c.pir
+ $(PBC_TO_EXE) ops2c.pbc
+
+$(INSTALLABLEOPS2C): $(OPS2C) src/install_config$(O)
+ $(PBC_TO_EXE) ops2c.pbc --install
+
+opsc: $(LIBRARY_DIR)/opsc.pbc
+
+# Local variables:
+# mode: makefile
+# End:
+# vim: ft=make:
Copied: branches/ops_massacre/compilers/opsc/TODO (from r46944, trunk/compilers/opsc/TODO)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/TODO Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/TODO)
@@ -0,0 +1,14 @@
+Simple todo.
+
+Required for initial self-hosting:
+
+ * NONE! We are selfhosted now!
+
+Required for full implementation:
+ * Handling #line directives.
+ * A LOT OF DOCUMENTATION.
+ * Add tests for Trans::C independent from 06-emitter.t
+ * Add tests for dynamic mode of Emitter.
+
+Nice to have:
+ * Profiling and performance tuning of ops parsing (we need pmichaud).
Copied: branches/ops_massacre/compilers/opsc/gen/Ops/Compiler/IGNOREME (from r46944, trunk/compilers/opsc/gen/Ops/Compiler/IGNOREME)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/gen/Ops/Compiler/IGNOREME Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/gen/Ops/Compiler/IGNOREME)
@@ -0,0 +1 @@
+I just dummy file. Please ignore me. Please...
Copied: branches/ops_massacre/compilers/opsc/gen/Ops/Trans/IGNOREME (from r46944, trunk/compilers/opsc/gen/Ops/Trans/IGNOREME)
==============================================================================
Copied: branches/ops_massacre/compilers/opsc/ops2c.nqp (from r46944, trunk/compilers/opsc/ops2c.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/ops2c.nqp Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/ops2c.nqp)
@@ -0,0 +1,113 @@
+#! ./parrot-nqp
+# $Id$
+
+pir::load_bytecode("opsc.pbc");
+pir::load_bytecode("Getopt/Obj.pbc");
+
+my $core := 0;
+my @files;
+my $emit_lines := 1;
+
+my $getopts := Q:PIR{ %r = new ['Getopt';'Obj'] };
+
+$getopts.notOptStop();
+my $arg := $getopts.add();
+$arg.long('core');
+$arg.short('c');
+
+$arg := $getopts.add();
+$arg.long('dynamic');
+$arg.short('d');
+$arg.type('String');
+
+$arg := $getopts.add();
+$arg.long('debug');
+$arg.short('g');
+
+$arg := $getopts.add();
+$arg.long('no-lines');
+$arg.short('n');
+
+$arg := $getopts.add();
+$arg.long('help');
+$arg.short('h');
+
+$arg := $getopts.add();
+$arg.long('force-regen');
+$arg.short('f');
+
+my $opts := $getopts.get_options(pir::getinterp__p()[2]);
+
+if $opts<core> {
+ @files := <
+ src/ops/core.ops
+ src/ops/bit.ops
+ src/ops/cmp.ops
+ src/ops/debug.ops
+ src/ops/io.ops
+ src/ops/math.ops
+ src/ops/object.ops
+ src/ops/pmc.ops
+ src/ops/set.ops
+ src/ops/string.ops
+ src/ops/sys.ops
+ src/ops/var.ops
+ src/ops/experimental.ops
+ >;
+ $core := 1;
+}
+elsif $opts<dynamic> {
+ $core := 0;
+ @files.push( $opts<dynamic>);
+}
+elsif (+$opts == 0 || $opts<help>) {
+ say("This is ops2c, part of Parrot build infrastructure.
+usage:
+ops2c --core
+ops2c --dynamic path/to/dynops.ops");
+ pir::exit(0);
+}
+
+my $force_regen := ?$opts<force-regen>;
+
+if ($opts<no-lines>) {
+ #TODO: figure out how to generate line numbers
+ # $emit_lines is currently ignored
+ $emit_lines := 0;
+}
+
+my $trans := Ops::Trans::C.new();
+my $start_time := pir::time__N();
+my $debug := ?$opts<debug>;
+my $f;
+my $renum;
+
+if $core {
+ my $lib := Ops::OpLib.new(
+ :num_file('src/ops/ops.num'),
+ :skip_file('src/ops/ops.skip'),
+ );
+ $f := Ops::File.new(|@files, :oplib($lib), :core(1));
+}
+else {
+ $f := Ops::File.new(|@files, :core(0));
+}
+
+pir::sprintf(my $time, "%.3f", [pir::time__N() - $start_time] );
+#say("# Ops parsed in $time seconds.");
+
+my $emitter := Ops::Emitter.new(
+ :ops_file($f), :trans($trans),
+ :script('ops2c.nqp'), :file(@files[0]),
+ :flags( hash( core => $core ) ),
+);
+
+unless $debug {
+ if $force_regen || $f<renum>.need_regeneration {
+ $emitter.print_ops_num_files();
+ }
+ $emitter.print_c_header_files();
+ $emitter.print_c_source_file();
+}
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/compilers/opsc/opsc.pir (from r46944, trunk/compilers/opsc/opsc.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/opsc.pir Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/opsc.pir)
@@ -0,0 +1,25 @@
+#! parrot
+# Copyright (C) 2009-2010, Parrot Foundation.
+# $Id$
+
+.namespace [ 'Ops';'Compiler' ]
+
+.include 'compilers/opsc/src/builtins.pir'
+.include 'compilers/opsc/gen/Ops/Compiler/Grammar.pir'
+.include 'compilers/opsc/gen/Ops/Compiler/Actions.pir'
+.include 'compilers/opsc/gen/Ops/Compiler.pir'
+
+.include 'compilers/opsc/gen/Ops/Emitter.pir'
+.include 'compilers/opsc/gen/Ops/Trans.pir'
+.include 'compilers/opsc/gen/Ops/Trans/C.pir'
+
+.include 'compilers/opsc/gen/Ops/Op.pir'
+.include 'compilers/opsc/gen/Ops/OpLib.pir'
+.include 'compilers/opsc/gen/Ops/File.pir'
+.include 'compilers/opsc/gen/Ops/Renumberer.pir'
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Compiler.pm (from r46944, trunk/compilers/opsc/src/Ops/Compiler.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Compiler.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Compiler.pm)
@@ -0,0 +1,17 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class Ops::Compiler is HLL::Compiler;
+
+INIT {
+ Ops::Compiler.language('Ops');
+ Ops::Compiler.parsegrammar(Ops::Compiler::Grammar);
+ Ops::Compiler.parseactions(Ops::Compiler::Actions);
+}
+
+method set_oplib($oplib) {
+ $Ops::Compiler::Actions::OPLIB := $oplib;
+}
+
+# vim: ft=perl6 expandtab shiftwidth=4:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Compiler/Actions.pm (from r46944, trunk/compilers/opsc/src/Ops/Compiler/Actions.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Compiler/Actions.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Compiler/Actions.pm)
@@ -0,0 +1,413 @@
+#! nqp
+# Copyright (C) 2009-2010, Parrot Foundation.
+# $Id$
+
+class Ops::Compiler::Actions is HLL::Actions;
+
+our $OPLIB;
+
+INIT {
+ pir::load_bytecode("nqp-setting.pbc");
+ $OPLIB := 0;
+}
+
+method TOP($/) {
+ make $<body>.ast;
+}
+
+method body($/) {
+ my $past := PAST::Stmts.new(
+ :node($/)
+ );
+
+ $past<preamble> := PAST::Stmts.new(
+ :node($/)
+ );
+ $past<ops> := PAST::Stmts.new(
+ :node($/)
+ );
+
+ for $<preamble> {
+ $past<preamble>.push($_<preamble_guts>);
+ }
+
+ for $<op> {
+ my $ops := $_.ast;
+ my $op_skip_table;
+ if $OPLIB {
+ $op_skip_table := $OPLIB.op_skip_table;
+ }
+ for @($ops) -> $op {
+ if $OPLIB && !$op_skip_table.exists($op.full_name) || !$OPLIB {
+ $past<ops>.push($op);
+ }
+ }
+ }
+
+ make $past;
+}
+
+method preamble($/) {
+ make PAST::Op.new(
+ :node($/),
+ :pasttype('preamble'),
+ ~$<preamble_guts>
+ );
+}
+
+method op($/) {
+
+ # Handling flags.
+ my %flags := hash();
+ for $<op_flag> {
+ %flags{~$_<identifier>} := 1;
+ }
+
+ my @args := list();
+ if ($<op_params>) {
+ @args := @($<op_params>[0].ast);
+ }
+
+ my @norm_args := normalize_args(@args);
+ # We have to clone @norm_args. Otherwise it will be destroyed...
+ my @variants := expand_args(pir::clone__PP(@norm_args));
+
+ my $op := Ops::Op.new(
+ :name(~$<op_name>),
+ );
+
+ # Flatten PAST::Stmts into Op.
+ for @($<op_body>.ast) {
+ $op.push($_);
+ }
+
+ for $<op_body>.ast<jump> {
+ $op.add_jump($_);
+ }
+ if ~$<op_name> eq 'runinterp' {
+ $op.add_jump('PARROT_JUMP_RELATIVE');
+ }
+ $op<flags> := %flags;
+ $op<args> := @args;
+ $op<type> := ~$<op_type>;
+ $op<normalized_args> := @norm_args;
+
+ if !%flags<flow> {
+ my $goto_next := PAST::Op.new(
+ :pasttype('call'),
+ :name('goto_offset'),
+ PAST::Op.new(
+ :pasttype<call>,
+ :name<OPSIZE>,
+ )
+ );
+
+ my $nl := "\n";
+ $op.push(PAST::Op.new(
+ :pasttype<inline>,
+ :inline($nl)
+ ));
+ $op.push($goto_next);
+ $op.push(PAST::Op.new(
+ :pasttype<inline>,
+ :inline<;>
+ ));
+ }
+
+ my $past := PAST::Stmts.new(
+ :node($/)
+ );
+
+ if @variants {
+ for @variants {
+ my $new_op := pir::clone__PP($op);
+ $new_op<arg_types> := $_;
+ $past.push($new_op);
+ }
+ }
+ else {
+ $past.push($op);
+ }
+
+ make $past;
+}
+
+# Normalize args
+# For each arg produce LoL of all available variants
+# E.g. "in" will produce "i" and "ic" variants
+#
+# type one of <i p s n>
+# direction one of <i o io>
+# is_label one of <0 1>
+
+sub normalize_args(@args) {
+ my @result;
+ for @args -> $arg {
+ my $res := PAST::Var.new(
+ :isdecl(1)
+ );
+
+ if $arg<type> eq 'LABEL' {
+ $res<type> := 'i';
+ $res<is_label> := 1;
+ }
+ else {
+ $res<is_label> := 0;
+ }
+
+ if $arg<type> eq 'INTKEY' {
+ $res<type> := 'ki';
+ }
+ elsif $arg<type> ne 'LABEL' {
+ $res<type> := lc(substr($arg<type>, 0, 1));
+ }
+
+ my $use := $arg<direction>;
+
+ if $use eq 'in' {
+ $res<variant> := $res<type> ~ "c";
+ $res<direction> := 'i';
+ }
+ elsif $use eq 'invar' {
+ $res<direction> := 'i';
+ }
+ elsif $use eq 'inconst' {
+ $res<type> := $res<type> ~ "c";
+ $res<direction> := 'i';
+ }
+ elsif $use eq 'inout' {
+ $res<direction> := 'io';
+ }
+ else {
+ $res<direction> := 'o';
+ }
+
+ @result.push($res);
+ }
+ @result;
+}
+
+=begin
+
+=item C<expand_args(@args)>
+
+Given an argument list, returns a list of all the possible argument
+combinations.
+
+=end
+sub expand_args(@args) {
+
+ return list() unless @args;
+
+ my $arg := @args.shift;
+
+ my @var := list($arg<type>);
+ if $arg<variant> {
+ @var.push($arg<variant>);
+ }
+
+ my @list := expand_args(@args);
+ unless + at list {
+ return @var;
+ }
+
+ my @results;
+ for @list -> $l {
+ for @var -> $v {
+ # NQP can't handle it automagically. So wrap $l into list.
+ my @l := pir::does__IPS($l, 'array') ?? $l !! list($l);
+ @results.push(list($v, |@l));
+ }
+ }
+
+ @results;
+}
+
+
+method op_params($/) {
+ my $past := PAST::Stmts.new(
+ :node($/)
+ );
+
+ for $<op_param> {
+ $past.push($_.ast);
+ }
+
+ make $past;
+}
+
+method op_param($/) {
+ my $past := PAST::Var.new(
+ :node($/),
+ :isdecl(1)
+ );
+
+ # We have to store 2 "types". Just set 2 properties on Var for now
+ $past<direction> := ~$<op_param_direction>;
+ $past<type> := ~$<op_param_type>;
+
+ make $past;
+}
+
+method op_body($/) {
+ my $past := PAST::Stmts.new(
+ :node($/),
+ );
+ $past<jump> := list();
+ my $prev_words := '';
+ for $<body_word> {
+ if $prev_words && $_<word> {
+ $prev_words := $prev_words ~ ~$_<word>;
+ }
+ elsif $_<word> {
+ $prev_words := ~$_<word>;
+ }
+ else {
+ $past.push(PAST::Op.new(
+ :pasttype('inline'),
+ :inline($prev_words),
+ ));
+ $prev_words := '';
+
+ if $_<macro_param> {
+ $past.push($_<macro_param>.ast);
+ }
+ elsif $_<op_macro> {
+ $past.push($_<op_macro>.ast);
+ for $_<op_macro>.ast<jump> {
+ $past<jump>.push($_);
+ }
+ }
+ }
+ }
+ if $prev_words {
+ $past.push(PAST::Op.new(
+ :pasttype('inline'),
+ :inline($prev_words)
+ ));
+ }
+ make $past;
+}
+
+method macro_param($/) {
+ make PAST::Var.new(
+ :name(~$<num>),
+ :node($/),
+ );
+}
+
+method body_word($/) {
+ #say('# body_word: '~ ~$<word>);
+ my $past;
+ if $<word> {
+ $past := PAST::Op.new(
+ :pasttype('inline'),
+ :inline(~$<word>)
+ );
+ }
+ elsif $<macro_param> {
+ $past := $<macro_param>.ast;
+ }
+ elsif $<op_macro> {
+ $past := $<op_macro>.ast;
+ }
+ else {
+ die('horribly');
+ }
+ #_dumper($past);
+ make $past;
+}
+
+method op_macro($/) {
+ #say('# op_macro');
+ # Generate set of calls to Trans:
+ # goto NEXT() -> goto_offset(opsize())
+ # goto OFFSET($addr) -> goto_offset($addr)
+ # goto ADDRESS($addr) -> goto_address($addr)
+ # expr NEXT() -> expr_offset(opsize())
+ # expr OFFSET($addr) -> expr_offset($addr)
+ # expr ADDRERR($addr) -> expr_address($addr)
+ # restart NEXT() -> restart_offset(opsize()); goto_address(0)
+ # restart OFFSET() -> restart_offset($addr); goto_offset($addr)
+ # XXX In trunk "restart ADDRESS" equivalent of "goto ADDRESS".
+ # restart ADDRESS() -> restart_address($addr); goto_address($addr)
+
+ my $macro_type := ~$<macro_type>;
+ my $macro_dest := ~$<macro_destination>;
+ my $is_next := $macro_dest eq 'NEXT';
+ my $macro_name := $macro_type ~ '_' ~ lc($is_next ?? 'offset' !! $macro_dest);
+
+ my $past := PAST::Stmts.new;
+
+ my $macro := PAST::Op.new(
+ :pasttype('call'),
+ :name($macro_name),
+ );
+ $past.push($macro);
+
+ $past<jump> := list();
+
+ if $macro_type ne 'expr' && $macro_dest eq 'OFFSET' {
+ $past<jump>.push('PARROT_JUMP_RELATIVE');
+ }
+
+ if $macro_type eq 'expr' || $macro_type eq 'goto' {
+ if $is_next {
+ $macro.push(PAST::Op.new(
+ :pasttype<call>,
+ :name<OPSIZE>,
+ ));
+ }
+ else {
+ process_op_macro_body_word($/, $macro);
+ }
+ }
+ elsif $macro_type eq 'restart' {
+ if $is_next {
+ $macro.push(PAST::Op.new(
+ :pasttype<call>,
+ :name<OPSIZE>,
+ ));
+ }
+ else {
+ process_op_macro_body_word($/, $macro);
+ }
+
+ $macro := PAST::Op.new(
+ :pasttype<call>,
+ :name<goto_address>,
+ );
+ if $is_next {
+ $macro.push(PAST::Op.new(
+ :pasttype<inline>,
+ :inline<0>,
+ ));
+ }
+ else {
+ process_op_macro_body_word($/, $macro);
+ }
+ $past.push($macro);
+ }
+ else {
+ pir::die("Horribly");
+ }
+
+ make $past;
+}
+
+sub process_op_macro_body_word($/, $macro) {
+ #_dumper($<body_word>);
+ if $<body_word> {
+ for $<body_word> {
+ #say(' word ' ~ $_);
+ my $bit := $_.ast;
+ $macro.push($_.ast) if defined($bit);
+ }
+ }
+}
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab ft=perl6 shiftwidth=4:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Compiler/Grammar.pm (from r46944, trunk/compilers/opsc/src/Ops/Compiler/Grammar.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Compiler/Grammar.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Compiler/Grammar.pm)
@@ -0,0 +1,147 @@
+#! nqp
+# Copyright (C) 2009-2010, Parrot Foundation.
+# $Id$
+
+INIT { pir::load_bytecode('HLL.pbc'); }
+
+grammar Ops::Compiler::Grammar is HLL::Grammar;
+
+rule TOP {
+ <body>
+ [ $ || <panic: 'Syntax error'> ]
+ {*}
+}
+
+rule body {
+ [ <preamble> | <op> ]* {*}
+}
+
+token preamble {
+ <begin_preamble>
+ <preamble_guts>
+ <end_preamble> {*}
+}
+
+regex preamble_guts {
+ .*? <?end_preamble>
+}
+
+token begin_preamble {
+ ^^'BEGIN_OPS_PREAMBLE'
+}
+
+token end_preamble {
+ ^^'END_OPS_PREAMBLE'
+}
+
+rule op {
+ <op_type>? 'op' <op_name=identifier> '('
+ [ <op_params>? || <panic: "Fail to parse params"> ]
+ ')' <op_flag>*
+ [ <op_body> || <panic: "Fail to parse op body"> ]
+ {*}
+}
+
+token op_type {
+ [ 'inline' | 'function' ]
+}
+
+rule op_params {
+ <op_param> [ ',' <op_param> ]*
+ {*}
+}
+
+rule op_param {
+ <op_param_direction> <op_param_type>
+ {*}
+}
+
+token op_param_direction {
+ # Order is crucial. PGE doesn't support LTM yet.
+ [
+ | 'inout'
+ | 'inconst'
+ | 'invar'
+ | 'in'
+ | 'out'
+ ]
+}
+
+token op_param_type {
+ # Order is crucial. PGE doesn't support LTM yet.
+ [
+ | 'INTKEY'
+ | 'INT'
+ | 'NUM'
+ | 'STR'
+ | 'PMC'
+ | 'KEY'
+ | 'LABEL'
+ ]
+}
+
+rule op_flag {
+ ':' <identifier>
+}
+
+# OpBody starts with '{' and ends with single '}' on line.
+regex op_body {
+ '{'
+ <body_word>*?
+ ^^ '}'
+}
+
+#Process op body by breaking it into "words" consisting entirely of whitespace,
+#alnums or a single punctuation, then checking for interesting macros (e.g $1
+#or goto NEXT() ) in the midst of the words.
+regex body_word {
+ [
+ | <macro_param>
+ | <op_macro>
+ | $<word>=[<alnum>+|<punct>|<space>+]
+ ]
+ {*}
+}
+
+token macro_param {
+ '$' $<num>=[<digit>+]
+ {*}
+}
+
+regex op_macro {
+ <macro_type> <space>* <macro_destination> <space>* '(' <space>* <body_word>*? ')'
+ {*}
+}
+
+token macro_type {
+ [
+ | 'goto'
+ | 'expr'
+ | 'restart'
+ ]
+}
+
+token macro_destination {
+ [
+ | 'OFFSET'
+ | 'ADDRESS'
+ | 'NEXT'
+ ]
+}
+
+token identifier {
+ <.ident>
+}
+
+# ws handles whitespace, pod and perl and C comments
+token ws {
+ [
+ | \s+
+ | '#' \N*
+ | ^^ '=' .*? \n '=cut'
+ | '/*' .*? '*/'
+ ]*
+}
+
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Emitter.pm (from r46944, trunk/compilers/opsc/src/Ops/Emitter.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Emitter.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Emitter.pm)
@@ -0,0 +1,444 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class Ops::Emitter is Hash;
+
+=begin
+
+Emitter.
+
+=end
+
+method new(:$ops_file!, :$trans!, :$script!, :$file, :%flags!) {
+ self<ops_file> := $ops_file;
+ self<trans> := $trans;
+ self<script> := $script;
+ self<file> := $file;
+ self<flags> := %flags;
+
+ # Preparing various bits.
+ my $suffix := $trans.suffix();
+ my $base := 'core';
+
+ if !%flags<core> {
+ $base := subst( $file, /.ops$$/, '');
+ $base := subst( $base, /.*\//, '');
+ }
+
+ my $base_ops_stub := $base ~ '_ops' ~ $suffix;
+ my $base_ops_h := $base_ops_stub ~ '.h';
+
+ self<base> := $base;
+ self<suffix> := $suffix;
+ self<bs> := $base ~ $suffix ~ '_';
+
+ if %flags<core> {
+ self<include> := "parrot/oplib/$base_ops_h";
+ self<func_header> := (~%flags<dir>) ~ "include/" ~ self<include>;
+ self<enum_header> := (~%flags<dir>) ~ "include/parrot/oplib/ops.h";
+ self<source> := (~%flags<dir>) ~ "src/ops/$base_ops_stub.c";
+ }
+ else {
+ my $dynops_dir := subst( $file, /\w+\.ops$$/, '');
+ self<include> := $base ~ "_ops.h";
+ self<func_header> := $dynops_dir ~ self<include>;
+ self<source> := $dynops_dir ~ $base ~ "_ops.c";
+ }
+
+ self<sym_export> := %flags<core>
+ ?? ''
+ !! 'PARROT_DYNEXT_EXPORT';
+
+ self<init_func> := join('_',
+ 'Parrot', 'DynOp', $base ~ $suffix, |$ops_file.version );
+
+ # Prepare ops
+ $trans.prepare_ops(self, $ops_file);
+
+ self;
+};
+
+method ops_file() { self<ops_file> };
+method trans() { self<trans> };
+method script() { self<script> };
+method file() { self<file> };
+method flags() { self<flags> };
+method sym_export() { self<sym_export> };
+method init_func() { self<init_func> };
+
+method base() { self<base> };
+method suffix() { self<suffix> };
+method bs() { self<bs> };
+
+method print_c_header_files() {
+
+ my $fh := pir::open__PSs(self<func_header>, 'w')
+ || die("Can't open "~ self<func_header>);
+ self.emit_c_op_func_header($fh);
+ $fh.close();
+
+ if self.ops_file<core> {
+ $fh := pir::open__PSs(self<enum_header>, 'w')
+ || die("Can't open "~ self<enum_header>);
+ self.emit_c_op_enum_header($fh);
+ $fh.close();
+ }
+}
+
+method emit_c_op_func_header($fh) {
+
+ self._emit_guard_prefix($fh, self<func_header>);
+
+ self._emit_preamble($fh);
+
+ self._emit_includes($fh);
+
+ # Emit runcore specific part.
+ self.trans.emit_c_op_funcs_header_part($fh);
+
+ self._emit_guard_suffix($fh, self<func_header>);
+
+ self._emit_coda($fh);
+}
+
+method emit_c_op_enum_header($fh) {
+
+ self._emit_guard_prefix($fh, self<enum_header>);
+
+ self._emit_preamble($fh);
+
+ self._emit_c_op_enum_header_part($fh);
+
+ self._emit_guard_suffix($fh, self<enum_header>);
+
+ self._emit_coda($fh);
+}
+
+method print_ops_num_files() {
+
+ my $file := ~self<dir> ~ ~self<ops_file>.oplib.num_file;
+ my $fh := pir::open__pss($file, 'w')
+ || die("Can't open $file for writing: " ~ ~pir::err__s());
+ self.emit_ops_num_file($fh);
+ $fh.close();
+
+ $file := ~self<dir> ~ "include/parrot/opsenum.h";
+ $fh := pir::open__pss($file, 'w')
+ || die("Can't open $file for writing: " ~ ~pir::err__s());
+ self.emit_c_opsenum_header($fh, $file);
+ $fh.close();
+}
+
+method emit_ops_num_file($fh) {
+
+ if !self.exists('max_fixed_op_num') {
+ self._prepare_ops_num();
+ }
+
+ $fh.print( join('', |self<ops_num_start>) );
+ my $max_op_num := self<max_fixed_op_num> + 0; #+ 0 to force cloning
+
+ for self.ops_file.ops -> $op {
+ if self<numbered_ops>.exists( $op.full_name ) {
+
+ $max_op_num++;
+
+ my $space := pir::repeat__SsI(' ',
+ 35 - pir::length__Is($op.full_name) - pir::length__Is(~$max_op_num));
+ $fh.print($op.full_name ~ $space ~ $max_op_num ~ "\n");
+ }
+ }
+
+}
+
+method emit_c_opsenum_header($fh, $file) {
+
+ if !self.exists('max_fixed_op_num') {
+ self._prepare_ops_num();
+ }
+
+ self._emit_guard_prefix($fh, $file);
+
+ self._emit_preamble($fh);
+
+ self.emit_opsenum_h_body($fh);
+
+ self._emit_guard_suffix($fh, $file);
+
+ self._emit_coda($fh);
+}
+
+method emit_opsenum_h_body($fh) {
+
+ $fh.print("enum OPS_ENUM \{\n");
+
+ my $max_op_num := self<max_fixed_op_num> + 0;
+ for self.ops_file.ops -> $op {
+ if self<numbered_ops>.exists( $op.full_name ) {
+ $max_op_num++;
+
+ my $space := pir::repeat__SsI(' ', 30 - pir::length__Is($op.full_name));
+ $fh.print(" enum_ops_" ~ $op.full_name ~ $space ~ "=");
+ $space := pir::repeat__SsI(' ', 5 - pir::length__Is(~$max_op_num));
+ $fh.print($space ~ $max_op_num ~ ",\n");
+ }
+ }
+
+ $fh.print("};\n");
+}
+
+method _prepare_ops_num() {
+
+ #grab all ops in ops.num
+ self<numbered_ops> := hash();
+ my $found_dynamic := 0;
+ self<max_fixed_op_num> := 0;
+ self<ops_num_start> := list();
+
+ #record which ones have fixed numbers and which just need to be somewhere in ops.num
+ for self.ops_file.oplib.num_file_lines -> $line {
+
+ #copy all lines through ###DYNAMIC### into the new ops.num verbatim
+ unless $found_dynamic {
+ self<ops_num_start>.push(~$line);
+ }
+
+ if $line<op> {
+ if $found_dynamic {
+ self<numbered_ops>{ $line<op><name> } := 1;
+ #say("# added '"~$line<op><name> ~" to numered ops");
+ }
+ else {
+ #don't need to keep track of fixed ops
+ self<max_fixed_op_num> := +$line<op><number>;
+ #say("# added '"~$line<op><name> ~" to fixed ops");
+ }
+ }
+ elsif $line<dynamic> {
+ $found_dynamic := 1;
+ }
+ }
+}
+
+method print_c_source_file() {
+ # Build file in memeory
+ my $fh := pir::new__Ps('StringHandle');
+ $fh.open('dummy.c', 'w');
+ self.emit_c_source_file($fh);
+ $fh.close();
+
+ # ... and write it to disk
+ my $final := pir::open__PSs(self<source>, 'w') || die("Can't open filehandle");
+ $final.print($fh.readall());
+ $final.close();
+ return self<source>;
+}
+
+method emit_c_source_file($fh) {
+ self._emit_source_preamble($fh);
+
+ self.trans.emit_source_part(self, $fh);
+
+ self._emit_op_lib_descriptor($fh);
+
+ self.trans.emit_op_lookup(self, $fh);
+
+ self._emit_init_func($fh);
+ self._emit_dymanic_lib_load($fh);
+ self._emit_coda($fh);
+}
+
+method _emit_c_op_enum_header_part($fh) {
+ my $sb := pir::new__Ps('StringBuilder');
+ my $last_op_code := +self.ops_file.ops - 1;
+ for self.ops_file.ops -> $op {
+ $sb.append_format(" PARROT_OP_%0%1 %2 /* %3 */\n",
+ $op.full_name,
+ ($op.code == $last_op_code ?? ' ' !! ','),
+ pir::repeat__SsI(' ', 30 - pir::length__Is($op.full_name)),
+ $op.code);
+ }
+ $fh.print(q|
+typedef enum {
+|);
+ $fh.print(~$sb);
+ $fh.print(q|
+} parrot_opcode_enums;
+|);
+}
+
+method _emit_source_preamble($fh) {
+
+ self._emit_preamble($fh);
+ $fh.print(qq|
+#include "{self<include>}"
+#include "pmc/pmc_parrotlibrary.h"
+#include "pmc/pmc_callcontext.h"
+
+{self.trans.defines(self)}
+
+|);
+
+ $fh.print(self.ops_file.preamble);
+}
+
+method _emit_op_lib_descriptor($fh) {
+
+ my $core_type := self.trans.core_type;
+ $fh.print(q|
+/*
+** op lib descriptor:
+*/
+
+static op_lib_t | ~ self.bs ~ q|op_lib = {| ~ qq|
+ "{self.base}", /* name */
+ "{self.suffix}", /* suffix */
+ $core_type, /* core_type = PARROT_XX_CORE */
+ 0, /* flags */
+ {self.ops_file.version_major}, /* major_version */
+ {self.ops_file.version_minor}, /* minor_version */
+ {self.ops_file.version_patch}, /* patch_version */
+ {+self.ops_file.ops}, /* op_count */
+ {self.trans.op_info(self)}, /* op_info_table */
+ {self.trans.op_func(self)}, /* op_func_table */
+ {self.trans.getop(self)} /* op_code() */ | ~ q|
+};
+|);
+}
+
+method _emit_init_func($fh) {
+
+ my $init1 := self.trans.init_func_init1;
+ my $dispatch := self.trans.init_func_disaptch;
+
+ # TODO There is a bug in NQP about \{
+ $fh.print(q|
+op_lib_t *
+| ~ self.init_func ~ q|(PARROT_INTERP, long init) {
+ /* initialize and return op_lib ptr */
+ if (init == 1) {
+| ~ $init1 ~ q|
+ return &| ~ self.bs ~q|op_lib;
+ }
+ /* set op_lib to the passed ptr (in init) */
+ else if (init) {
+| ~ $dispatch ~ q|
+ }
+ /* deinit - free resources */
+ else {
+ hop_deinit(interp);
+ }
+ return NULL;
+}
+
+|);
+}
+
+method _emit_dymanic_lib_load($fh) {
+
+ if self.flags<core> {
+ return;
+ }
+
+ my $load_func := join('_',
+ q{Parrot}, q{lib}, self.base, q{ops} ~ self.suffix, q{load}, );
+ $fh.print(qq|
+/*
+ * dynamic lib load function - called once
+ */
+{self.sym_export} PMC*
+$load_func(PARROT_INTERP);
+
+{self.sym_export} PMC*
+$load_func(PARROT_INTERP)
+| ~ q|
+{
+ PMC *const lib = Parrot_pmc_new(interp, enum_class_ParrotLibrary);
+ ((Parrot_ParrotLibrary_attributes*)PMC_data(lib))->oplib_init = (void *) | ~ self.init_func ~q|;
+ dynop_register(interp, lib);
+ return lib;
+}
+|);
+}
+
+# given a headerfile name like "include/parrot/oplib/core_ops.h", this
+# returns a string like "PARROT_OPLIB_CORE_OPS_H_GUARD"
+method _generate_guard_macro_name($filename) {
+ $filename := subst($filename, /.h$/, '');
+ #my @path = File::Spec->splitdir($filename);
+ my @path := split('/', $filename);
+ @path.shift if @path[0]~'/' eq self<flags><dir>;
+ @path.shift if @path[0] eq 'include';
+ @path.shift if @path[0] eq 'parrot';
+ uc( join( '_', 'parrot', |@path, 'h', 'guard' ) );
+}
+
+
+method _emit_guard_prefix($fh, $filename) {
+ my $guardname := self._generate_guard_macro_name($filename);
+ $fh.print('
+/* $Id' ~ '$ */
+');
+ $fh.print(qq/
+#ifndef $guardname
+#define $guardname
+
+/);
+}
+
+method _emit_guard_suffix($fh, $filename) {
+ my $guardname := self._generate_guard_macro_name($filename);
+ $fh.print(qq|
+
+#endif /* $guardname */
+|);
+}
+
+
+method _emit_coda($fh) {
+ $fh.print(q|
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * buffer-read-only: t
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+|);
+}
+
+method _emit_includes($fh) {
+
+ $fh.print(qq|
+#include "parrot/parrot.h"
+#include "parrot/oplib.h"
+#include "parrot/runcore_api.h"
+
+{self.sym_export} op_lib_t *{self.init_func}(PARROT_INTERP, long init);
+
+|);
+}
+
+method _emit_preamble($fh) {
+
+ $fh.print(qq|
+/* ex: set ro:
+ * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+ *
+ * This file is generated automatically from '{self<file>}' (and possibly other
+ * .ops files). by {self<script>}.
+ *
+ * Any changes made here will be lost!
+ *
+ */
+|);
+
+ if !self.flags<core> {
+ $fh.print("#define PARROT_IN_EXTENSION\n");
+ }
+
+}
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/File.pm (from r46944, trunk/compilers/opsc/src/Ops/File.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/File.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/File.pm)
@@ -0,0 +1,331 @@
+#! nqp
+# Copyright (C) 2001-2009, Parrot Foundation.
+# $Id$
+
+# XXX Better to put this into docs/ somewhere.
+
+=begin
+
+=head1 NAME
+
+Ops::File - Ops To C Code Generation
+
+=head1 SYNOPSIS
+
+ use Ops::File;
+
+=head1 DESCRIPTION
+
+C<Ops::File> takes one or more files of op functions and
+creates real C code for them.
+
+This class is used by F<tools/build/ops2c.pl>,
+F<tools/build/ops2pm.pl> and F<tools/build/pbc2c.pl>.
+
+=head2 Op Functions
+
+For ops that have trivial bodies (such as just a call to some other
+function and a C<return> statement), opcode functions are in the format:
+
+ inline op opname (args) :flags {
+ ... body of function ...
+ }
+
+Note that currently the C<inline> op type is ignored.
+
+Alternately, for opcode functions that have more internal complexity the
+format is:
+
+ op opname (args) :flags {
+ ... body of function ...
+ }
+
+There may be more than one C<return>.
+
+In both cases the closing brace B<must> be on its own line.
+
+When specifying multiple flags, each flag gets its own prefixing colon.
+
+=head2 Op Arguments
+
+Op arguments are a comma-separated list of direction and type pairs.
+
+Argument direction is one of:
+
+ in the argument passes a value into the op
+ out the argument passes a value out of the op
+ inout the argument passes a value into and out of the op
+ inconst the argument passes a constant value into the op
+ invar the argument passes a variable value into the op
+
+Argument direction is used to determine the life times of symbols and
+their related register allocations. When an argument is passed into an
+op a register is read from, when it's passed out of an op a register is
+written to.
+
+Argument type is one of:
+
+ INT the argument is an integer
+ NUM the argument is an numeric
+ STR the argument is an string
+ PMC the argument is an PMC
+ KEY the argument is an aggregate PMC key
+ INTKEY the argument is an aggregate PMC integer key
+ LABEL the argument is an integer branch offset or address
+
+The size of the return offset is determined from the op function's
+signature.
+
+=head2 Op Flags
+
+The flags are of two types:
+
+=over 4
+
+=item 1 class
+
+The classification of ops is intended to facilitate the selection of
+suitable ops for a Parrot safe mode.
+
+=item 2 behavior
+
+The presence (or absence) of certain flags will change how the op behaves. For
+example, the lack of the C<flow> flag will cause the op to be implicitly
+terminated with C<goto NEXT()>. (See next section).
+
+The :deprecated flag will generate a diagnostic to standard error at
+runtime when a deprecated opcode is invoked and
+C<PARROT_WARNINGS_DEPRECATED_FLAG> has been set.
+
+=back
+
+=head2 Op Body (Macro Substitutions)
+
+In the following macro descriptions, C<PC> and C<PC'> are the current
+and next position within the Parrot code.
+
+=over 4
+
+=item C<goto OFFSET(X)>
+
+Transforms to C<PC' = PC + X>. This is used for branches.
+
+=item C<goto NEXT()>
+
+Transforms to C<PC' = PC + S>, where C<S> is the size of an op.
+
+=item C<goto ADDRESS(X)>
+
+Transforms to C<PC' = X>. This is used for absolute jumps.
+
+=item C<expr OFFSET(X)>
+
+Transforms to C<PC + X>. This is used to give a relative address.
+
+=item C<expr NEXT()>
+
+Transforms to C<PC + S>, the position of the next op.
+
+=item C<expr ADDRESS(X)>
+
+Transforms to C<X>, an absolute address.
+
+=item C<OP_SIZE>
+
+Transforms to C<S>, the size of an op.
+
+=item C<HALT()>
+
+Transforms to C<PC' = 0>. Halts run loop, and resets the current
+position to the start of the Parrot code, without resuming.
+
+=item C<restart OFFSET(X)>
+
+Transforms to C<PC' = 0> and restarts at C<PC + X>.
+
+=item C<restart NEXT()>
+
+Transforms to C<PC' = 0> and restarts at C<PC + S>.
+
+=item C<$n>
+
+Transforms to the op function's nth argument. C<$0> is the opcode itself.
+
+=back
+
+Note that, for ease of parsing, if the argument to one of the above
+notations in a ops file contains parentheses, then double the enclosing
+parentheses and add a space around the argument, like so:
+
+ goto OFFSET(( (void*)interp->happy_place ))
+
+=head2 Class Methods
+
+=over 4
+
+=end
+
+class Ops::File is Hash;
+
+pir::load_bytecode('config.pbc');
+
+=begin
+
+=item C<new(@files)>
+
+Returns a new instance initialized by calling C<read_ops()> on each of
+the specified op files.
+
+=item C<new_str($str)>
+
+Returns a new instance initialized by compiling C<$str> as the contents of an
+ops file.
+
+=end
+
+method new(*@files, :$oplib, :$core!, :$nolines) {
+ self<files> := @files;
+ self<core> := $core;
+ self<ops> := list(); # Ops
+ self<preamble>:= '';
+ self<compiler>:= pir::compreg__Ps('Ops');
+ self<op_order>:= 0;
+ self<renum> := Ops::Renumberer.new( :ops_file(self) );
+
+ if $core {
+ self<oplib> := $oplib;
+ self<compiler>.set_oplib($oplib);
+ }
+ else {
+ self<file> := @files[0];
+ }
+
+ self._set_version();
+
+ for @files { self.read_ops( $_, $nolines ) }
+
+ self._calculate_op_codes();
+
+ self;
+}
+
+method new_str($str, :$oplib) {
+ self<ops> := list(); # Ops
+ self<preamble> := '';
+
+ self<compiler> := pir::compreg__Ps('Ops');
+ self<oplib> := $oplib;
+ self<compiler>.set_oplib($oplib);
+
+ self._set_version();
+
+ self._set_version();
+
+ self.compile_ops($str);
+
+ self;
+}
+
+
+=begin
+
+=back
+
+=head2 Instance Methods
+
+=over 4
+
+=item C<read_ops($file,$nolines)>
+
+Reads in the specified .ops file, gathering information about the ops.
+
+=end
+
+method read_ops($file, $nolines) {
+ $Ops::Compiler::Actions::OPLIB := self<oplib>;
+
+ say("# Parsing $file...");
+ my $start_time := pir::time__N();
+ my $buffer := slurp($file);
+ self.compile_ops($buffer, :experimental( $file ~~ /experimental\.ops/));
+ pir::sprintf(my $time, "%.3f", [pir::time__N() - $start_time] );
+ say("# Parsed $file in $time seconds.");
+}
+
+method compile_ops($str, :$experimental? = 0) {
+ my $compiler := self<compiler>;
+ my $past := $compiler.compile($str, :target('past'));
+
+ for @($past<ops>) {
+ $_<experimental> := $experimental;
+ self<ops>.push($_);
+ #say($_.full_name ~ " is number " ~ self<op_order>);
+ self<op_order>++;
+ }
+
+ for @( $past<preamble> ) {
+ self<preamble> := self<preamble> ~ $_;
+ }
+ $past;
+}
+
+method get_parse_tree($str) {
+ my $compiler := pir::compreg__Ps('Ops');
+ $compiler.compile($str, :target('parse'));
+}
+
+method preamble() { self<preamble> };
+method ops() { self<ops> };
+method oplib() { self<oplib> };
+method version() { self<version>; }
+
+method version_major() { self<version_major> }
+method version_minor() { self<version_minor> }
+method version_patch() { self<version_patch> }
+
+method _calculate_op_codes() {
+
+ my $code := self<oplib> ??
+ self<oplib>.max_op_num + 1 !!
+ 0;
+
+ for self<ops> -> $op {
+ #ops listed in ops.num are non-experimental
+ if self<oplib> {
+ my $full_name := $op.full_name;
+ if self<oplib>.op_num_table.exists($full_name) {
+ $op<code> := self<oplib>.op_num_table{$full_name};
+ }
+ elsif !$op<experimental> && !self<oplib>.op_skip_table.exists($full_name) {
+ die("Non-experimental op " ~ $op.full_name ~ " is not in ops.num.");
+ }
+ #ops not explicitly listed but not skipped are experimental
+ else {
+ $op<code> := $code++;
+ say("# Experimental op " ~ $op.full_name ~ " is not in ops.num.");
+ }
+ }
+ #if there's no oplib, we're compiling dynops and ops aren't experimental
+ else {
+ $op<code> := $code++;
+ }
+ }
+}
+
+method _set_version() {
+ my $config := _config();
+ my $version := $config<VERSION>;
+ #say("# $version");
+ my @bits := split('.', $version);
+ self<version_major> := @bits[0];
+ self<version_minor> := @bits[1];
+ self<version_patch> := @bits[2];
+ self<version> := @bits;
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: ft=perl6 expandtab shiftwidth=4:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Op.pm (from r46944, trunk/compilers/opsc/src/Ops/Op.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Op.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Op.pm)
@@ -0,0 +1,392 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=begin
+
+=head1 NAME
+
+Ops::Op - Parrot Operation
+
+=head1 SYNOPSIS
+
+ use Ops::Op;
+
+=head1 DESCRIPTION
+
+C<Ops::Op> represents a Parrot operation (op, for short), as read
+from an ops file via C<Ops::OpsFile>, or perhaps even generated by
+some other means. It is the Perl equivalent of the C<op_info_t> C
+C<struct> defined in F<include/parrot/op.h>.
+
+=head2 Op Type
+
+Ops are either I<auto> or I<manual>. Manual ops are responsible for
+having explicit next-op C<RETURN()> statements, while auto ops can count
+on an automatically generated next-op to be appended to the op body.
+
+Note that F<tools/build/ops2c.pl> supplies either 'inline' or 'function'
+as the op's type, depending on whether the C<inline> keyword is present
+in the op definition. This has the effect of causing all ops to be
+considered manual.
+
+=head2 Op Arguments
+
+Note that argument 0 is considered to be the op itself, with arguments
+1..9 being the arguments passed to the op.
+
+Op argument direction and type are represented by short one or two letter
+descriptors.
+
+Op Direction:
+
+ i The argument is incoming
+ o The argument is outgoing
+ io The argument is both incoming and outgoing
+
+Op Type:
+
+ i The argument is an integer register index.
+ n The argument is a number register index.
+ p The argument is a PMC register index.
+ s The argument is a string register index.
+ ic The argument is an integer constant (in-line).
+ nc The argument is a number constant index.
+ pc The argument is a PMC constant index.
+ sc The argument is a string constant index.
+ kc The argument is a key constant index.
+ ki The argument is a key integer register index.
+ kic The argument is a key integer constant (in-line).
+
+=head2 Class Methods
+
+=over 4
+
+=end
+
+class Ops::Op is PAST::Block;
+
+INIT {
+ pir::load_bytecode("dumper.pbc");
+}
+
+=begin
+
+=item C<new(:$code, :$type, :$name, :@args, :%flags)>
+
+Allocates a new bodyless op. A body must be provided eventually for the
+op to be usable.
+
+C<$code> is the integer identifier for the op.
+
+C<$type> is the type of op (see the note on op types above).
+
+C<$name> is the name of the op.
+
+C<@args> is a reference to an array of argument type descriptors.
+
+C<$flags> is a hash reference containing zero or more I<hints> or
+I<directives>.
+
+
+=back
+
+=head2 Instance Methods
+
+=over 4
+
+=item C<code()>
+
+Returns the op code.
+
+=item C<type()>
+
+The type of the op, either 'inline' or 'function'.
+
+=item C<name()>
+
+The (short or root) name of the op.
+
+=item C<full_name()>
+
+For argumentless ops, it's the same as C<name()>. For ops with
+arguments, an underscore followed by underscore-separated argument types
+are appended to the name.
+
+=item C<func_name()>
+
+The same as C<full_name()>, but with 'C<Parrot_>' prefixed.
+
+=end
+
+method code($code?) { self.attr('code', $code, defined($code)) }
+
+method type($type?) { self.attr('type', $type, defined($type)) }
+
+method name($name?) { self.attr('name', $name, defined($name)) }
+
+method args($args?) { self.attr('args', $args, defined($args)) }
+
+method arg_types($args?) {
+ my $res := self.attr('arg_types', $args, defined($args));
+
+ return list() if !defined($res);
+ pir::does__IPS($res, 'array') ?? $res !! list($res);
+}
+
+method arg_dirs($args?) { self.attr('arg_dirs', $args, defined($args)) }
+
+method arg_type($arg_num) {
+ my @arg_types := self.arg_types;
+ @arg_types[$arg_num];
+}
+
+method full_name() {
+ my $name := self.name;
+ my @arg_types := self.arg_types;
+
+ #say("# $name arg_types " ~ @arg_types);
+ join('_', $name, |@arg_types);
+}
+
+method func_name($trans) {
+ return $trans.prefix ~ self.full_name;
+}
+
+
+=begin
+
+=item C<flags()>
+
+Sets the op's flags. This returns a hash reference, whose keys are any
+flags (passed as ":flag") specified for the op.
+
+=end
+
+method flags(%flags?) { self.attr('flags', %flags, defined(%flags)) }
+
+=begin
+
+=item C<body($body)>
+
+=item C<body()>
+
+Sets/gets the op's code body.
+
+=end
+
+method body() {
+ my $res := '';
+ for @(self) -> $part {
+ $res := $res ~ $part<inline>;
+ }
+ $res;
+}
+
+=begin
+
+=item C<jump($jump)>
+
+=item C<jump()>
+
+Sets/gets a string containing one or more C<op_jump_t> values joined with
+C<|> (see F<include/parrot/op.h>). This indicates if and how an op
+may jump.
+
+=end
+
+method jump($jump?) { self.attr('jump', $jump, defined($jump)) }
+
+=begin
+
+=item C<add_jump($jump)>
+
+=item C<add_jump($jump)>
+
+Add a jump flag to this op if it's not there already.
+
+=end
+
+method add_jump($jump) {
+ my $found_jump := 0;
+
+ unless self.jump { self.jump(list()) }
+
+ for self.jump {
+ if $_ eq $jump { $found_jump := 1 }
+ }
+
+ unless $found_jump {
+ self.jump.push($jump);
+ }
+}
+
+=begin
+
+=item C<get_jump()>
+
+=item C<get_jump()>
+
+Get the jump flags that apply to this op.
+
+=end
+
+method get_jump() {
+
+ if self.jump {
+ return join( '|', |self.jump );
+ }
+ else {
+ return '0';
+ }
+}
+
+=begin
+
+=item C<source($trans, $op)>
+
+Returns the L<C<body()>> of the op with substitutions made by
+C<$trans> (a subclass of C<Ops::Trans>).
+
+=end
+
+method source( $trans ) {
+
+ my $prelude := $trans.body_prelude;
+ return $prelude ~ self.get_body( $trans );
+}
+
+=begin
+
+=item C<get_body($trans)>
+
+Performs the various macro substitutions using the specified transform,
+correctly handling nested substitions, and repeating over the whole string
+until no more substitutions can be made.
+
+C<VTABLE_> macros are enforced by converting C<<< I<< x >>->vtable->I<<
+method >> >>> to C<VTABLE_I<method>>.
+
+=end
+
+method get_body( $trans ) {
+
+ my @body := list();
+
+ #work through the op_body tree
+ for @(self) {
+ my $chunk := self.process_body_chunk($trans, $_);
+ #pir::say('# chunk ' ~ $chunk);
+ @body.push($chunk);
+ }
+
+ join('', |@body);
+}
+
+# Recursively process body chunks returning string.
+# Ideally bunch of multisubs, but...
+method process_body_chunk($trans, $chunk) {
+ my $what := $chunk.WHAT;
+ # Poor man multis...
+ if $what eq 'PAST::Var()' {
+ my $n := +$chunk.name;
+ return $trans.access_arg( self.arg_type($n - 1), $n);
+ }
+ elsif $what eq 'PAST::Op()' {
+ my $type := $chunk.pasttype;
+ #say('OP ' ~ $type);
+ if $type eq 'inline' {
+ #_dumper($chunk);
+ #pir::say('RET ' ~ $chunk<inline>);
+ return $chunk.inline;
+ }
+ elsif $type eq 'call' {
+ my $name := $chunk.name;
+ #say('NAME '~$name ~ ' ' ~ $is_next);
+ if $name eq 'OPSIZE' {
+ #say('is_next');
+ return ~self.size;
+ }
+
+ my @children := list();
+ for @($chunk) {
+ @children.push(self.process_body_chunk($trans, $_));
+ }
+ my $children := join('', |@children);
+
+ #pir::say('children ' ~ $children);
+ my $ret := Q:PIR<
+ $P0 = find_lex '$trans'
+ $P1 = find_lex '$name'
+ $S0 = $P1
+ $P1 = find_lex '$children'
+ %r = $P0.$S0($P1)
+ >;
+ #pir::say('RET ' ~ $ret);
+ return $ret;
+ }
+ }
+ elsif $what eq 'PAST::Stmts()' {
+ my @children := list();
+ for @($chunk) {
+ @children.push(self.process_body_chunk($trans, $_));
+ }
+ my $children := join('', |@children);
+ return $children;
+ }
+ else {
+ pir::die('HOLEY');
+ }
+}
+
+
+=begin
+
+=item C<size()>
+
+Returns the op's number of arguments. Note that this also includes
+the op itself as one argument.
+
+=end
+
+method size() {
+ return pir::does__IPs(self.arg_types, 'array') ?? +self.arg_types + 1 !! 2;
+}
+
+=begin
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item C<Ops::OpsFile>
+
+=item C<Ops::OpTrans>
+
+=item F<tools/build/ops2c.pl>
+
+=item F<tools/build/ops2pm.pl>
+
+=item F<tools/build/pbc2c.pl>
+
+=back
+
+=head1 HISTORY
+
+Author: Gregor N. Purdy E<lt>gregor at focusresearch.comE<gt>
+
+Migrate to NQP: Vasily Chekalkin E<lt>bacek at bacek.comE<gt>
+
+=end
+
+1;
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: ft=perl6 expandtab shiftwidth=4:
+
Copied: branches/ops_massacre/compilers/opsc/src/Ops/OpLib.pm (from r46944, trunk/compilers/opsc/src/Ops/OpLib.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/OpLib.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/OpLib.pm)
@@ -0,0 +1,234 @@
+#! nqp
+# Copyright (C) 2009-2010, Parrot Foundation.
+# $Id$
+
+INIT {
+ pir::load_bytecode("dumper.pbc");
+};
+
+class Ops::OpLib is Hash;
+
+=begin NAME
+
+C<Ops::OpLib> - library of Parrot Operations.
+
+=end NAME
+
+=begin DESCRIPTION
+
+Responsible for loading F<src/ops/ops.num> and F<src/ops/ops.skip> files,
+parse F<.ops> files, sort them, etc.
+
+Heavily inspired by Perl5 Parrot::Ops2pm.
+
+=end DESCRIPTION
+
+=begin SYNOPSIS
+
+ my $oplib := Ops::OpLib.new(
+ :num_file('../../src/ops/ops.num'),
+ :skip_file('../../src/ops/ops.skip'),
+ ));
+
+=end SYNOPSIS
+
+=begin ATTRIBUTES
+
+=over 4
+
+=item * C<$.max_op_num>
+
+Scalar holding number of highest non-experimental op. Example:
+
+ 'max_op_num' => 1246,
+
+=item * C<%.op_num_table>
+
+Hash holding mapping of opcode names ops to their numbers.
+Example:
+
+ 'op_num_table' => {
+ 'pow_p_p_i' => 650,
+ 'say_s' => 463,
+ 'lsr_p_p_i' => 207,
+ 'lt_s_sc_ic' => 289,
+ # ...
+ 'debug_init' => 429,
+ 'iseq_i_nc_n' => 397,
+ 'eq_addr_sc_s_ic' => 254
+ },
+
+Per F<src/ops/ops.num>, this mapping exists so that we can nail down
+the op numbers for the core opcodes in a particular version of the
+bytecode and provide backward-compatibility for bytecode.
+
+=item * C<%.op_skip_table>
+
+Reference to a 'seen-hash' of skipped opcodes.
+
+ 'op_skip_table' => {
+ 'bor_i_ic_ic' => 1,
+ 'xor_i_ic_ic' => 1,
+ 'tanh_n_nc' => 1,
+ # ...
+ },
+
+As F<src/ops/ops.skip> states, these are "... opcodes that could be listed in
+F<[src/ops/]ops.num> but aren't ever to be generated or implemented because
+they are useless and/or silly."
+
+=back
+
+=end ATTRIBUTES
+
+=begin METHODS
+
+=over 4
+
+=item C<new>
+
+Build OpLib.
+
+(It's NQP. In Perl 6 it should be submethod and invoked automatically)
+
+=end METHODS
+
+method new(:$num_file, :$skip_file) {
+ self<num_file> := $num_file // './src/ops/ops.num';
+ self<skip_file> := $skip_file // './src/ops/ops.skip';
+
+ # Initialize self.
+ self<max_op_num> := 0;
+ self<op_num_table> := hash();
+ self<op_skip_table> := hash();
+ self<num_file_lines>:= list();
+ self<ops_past> := list();
+ self<regen_ops_num> := 0;
+
+ self.load_op_map_files();
+
+ self;
+}
+
+=begin METHODS
+
+=item C<load_op_map_files>
+
+Load ops.num and ops.skip files.
+
+=end METHODS
+
+method load_op_map_files() {
+ self._load_num_file;
+ self._load_skip_file;
+}
+
+my method _load_num_file() {
+ # slurp isn't very efficient. But extending NQP beyond bare minimum is not in scope.
+ my $buf := slurp(self<num_file>);
+ grammar NUM {
+ rule TOP { <line>+ }
+
+ rule line {
+ [
+ | <op>
+ | <dynamic>
+ | <comment>
+ ]
+ }
+ rule op { $<name>=(\w+) $<number>=(\d+) }
+ rule dynamic { '###DYNAMIC###' \N* }
+ rule comment { '#' \N* }
+ }
+
+ #say("Parsing NUM");
+ my $ops := NUM.parse($buf);
+ #_dumper($ops);
+ #pir::exit(0);
+
+ my $prev := -1;
+ for $ops<line> {
+ self<num_file_lines>.push($_);
+ if $_<op> {
+ my $name := ~$_<op><name>;
+ my $number := +$_<op><number>;
+ if (+$number) eq $number {
+ if ($prev + 1 != $number) {
+ self<regen_ops_num> := 1;
+ say("# hole in ops.num before #$number: will regenerate ops.num");
+ }
+ if self<op_num_table>.exists($name) {
+ self<regen_ops_num> := 1;
+ say("# duplicate opcode $name and $number: will regenerate ops.num");
+ }
+
+ $prev := $number;
+ self<op_num_table>{$name} := $number;
+ if ( $number > self<max_op_num> ) {
+ self<max_op_num> := $number;
+ }
+ }
+ }
+ }
+
+ #_dumper(self<op_num_table>);
+}
+
+method _load_skip_file() {
+ my $buf := slurp(self<skip_file>);
+ grammar SKIP {
+ rule TOP { <op>+ }
+
+ rule op { $<name>=(\w+) }
+ token ws {
+ [
+ | \s+
+ | '#' \N*
+ ]*
+ }
+ }
+
+ my $lines := SKIP.parse($buf);
+
+ for $lines<op> {
+ if self<op_num_table> && self<op_num_table>.exists($_<name>) {
+ die("skipped opcode '$_' is also in num_file");
+ }
+ self<op_skip_table>{$_<name>} := 1;
+ }
+}
+
+
+=begin ACCESSORS
+
+Various methods for accessing internals.
+
+=over 4
+
+=item * C<max_op_num>
+
+=item * C<op_num_table>
+
+=item * C<op_skip_table>
+
+=item * C<num_file>
+
+=item * C<num_file_lines>
+
+=end ACCESSORS
+
+method max_op_num() { self<max_op_num>; }
+
+method op_num_table() { self<op_num_table>; }
+
+method op_skip_table() { self<op_skip_table>; }
+
+method num_file() { self<num_file>; }
+
+method num_file_lines() { self<num_file_lines>; }
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Renumberer.pm (from r46944, trunk/compilers/opsc/src/Ops/Renumberer.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Renumberer.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Renumberer.pm)
@@ -0,0 +1,108 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+INIT {
+ pir::load_bytecode("dumper.pbc");
+};
+
+class Ops::Renumberer is Hash;
+
+=begin NAME
+
+C<Ops::Renumberer> - renumber ops.num.
+
+=end NAME
+
+=begin DESCRIPTION
+
+This class is responsible for regenerating src/ops/ops.num when the number or
+order of ops there needs to be changed.
+
+=end DESCRIPTION
+
+=begin SYNOPSIS
+
+ my $renum := Ops::Renumberer.new( :ops_file($f) );
+
+=end SYNOPSIS
+
+=begin ATTRIBUTES
+
+=over 4
+
+=item * C<$.max_op_num>
+
+Scalar holding number of highest non-experimental op. Example:
+
+ 'max_op_num' => 1246,
+
+=back
+
+=end ATTRIBUTES
+
+=begin METHODS
+
+=over 4
+
+=item C<new>
+
+Build an Ope::Renumberer.
+
+(It's NQP. In Perl 6 it should be submethod and invoked automatically)
+
+=end METHODS
+
+method new(:$ops_file!) {
+ self<ops_file> := $ops_file;
+
+ self;
+}
+
+=begin METHODS
+
+=item C<need_regeneration>
+
+Check if ops.num needs to be regenerated.
+
+=end METHODS
+
+method need_regeneration() {
+
+ #only need regeneration for core ops
+ unless self<ops_file>.oplib {
+ return 0;
+ }
+
+ #shortcut in case the oplib found an invalid ops.num
+ if self<ops_file>.oplib<regen_ops_num>{
+ return 1;
+ }
+
+ my $op_num_table := self<ops_file>.oplib.op_num_table;
+ my $opsfile_ops := self<ops_file>.ops;
+ my $opsfile_num := 0;
+ my $need_regeneration := 0;
+
+ #find out if the order in ops.num reflects the order in Ops::File
+ for $opsfile_ops -> $opsfile_op {
+
+ my $op_name := $opsfile_op.full_name;
+ my $op_num_table_num := +$op_num_table{ $op_name };
+ #say("ops.num says $op_name is $op_num_table_num, opsfile says $opsfile_num");
+
+ if (!$opsfile_op<experimental> && $opsfile_num != $op_num_table_num) {
+ say("# Opsfile and ops.num disagree about $op_name: $opsfile_num vs $op_num_table_num");
+ $need_regeneration := 1;
+ }
+ $opsfile_num++;
+ }
+
+ $need_regeneration;
+}
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Trans.pm (from r46944, trunk/compilers/opsc/src/Ops/Trans.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Trans.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Trans.pm)
@@ -0,0 +1,58 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class Ops::Trans is Hash;
+
+=begin
+
+Base class for Runcode transformations.
+
+=end
+
+method prefix() { 'Parrot_' };
+
+# We can't use yada-yada-yada
+method suffix() { die("...") }
+
+method core_type() { die("...") }
+
+# Prepare internal structures from Ops::File.ops.
+method prepare_ops($emitter, $ops_file) { die('...') }
+
+#
+method emit_c_op_funcs_header_part($fh) { die('...') }
+
+# Called from Ops::Op.
+method body_prelude() { '' }
+
+method defines($emitter) { die('...') }
+
+method emit_source_part($emitter, $fh) { die('...') }
+
+# Default op lookup do nothing. But op_deinit referenced anyway.
+method emit_op_lookup($fh) {
+ $fh.print(q|static void hop_deinit(SHIM_INTERP) {}|);
+}
+
+method init_func_init1() { '' }
+method init_func_disaptch() { '' }
+
+method op_info($emitter) { 'NULL' }
+method op_func($emitter) { 'NULL' }
+method getop($emitter) { '( int (*)(PARROT_INTERP, const char *, int) )NULL' };
+
+our %arg_maps := {};
+
+method access_arg($type, $num) { die('...'); }
+
+method restart_address($addr) { die('...'); }
+method restart_offset($offset) { die('...'); }
+
+method goto_address($addr) { die('...'); }
+method goto_offset($offset) { die('...'); }
+
+method expr_address($addr) { die('...'); }
+method expr_offset($offset) { die('...'); }
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/compilers/opsc/src/Ops/Trans/C.pm (from r46944, trunk/compilers/opsc/src/Ops/Trans/C.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/Ops/Trans/C.pm Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/Ops/Trans/C.pm)
@@ -0,0 +1,367 @@
+#! nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class Ops::Trans::C is Ops::Trans;
+
+method new() {
+ # Storage for generated ops functions.
+ self<op_funcs> := list();
+ # Storage for generated ops functions prototypes.
+ self<op_protos> := list();
+
+ self<names> := hash();
+
+ self<num_entries> := 0;
+
+ self<arg_maps> := hash(
+ :op("cur_opcode[NUM]"),
+
+ :i("IREG(NUM)"),
+ :n("NREG(NUM)"),
+ :p("PREG(NUM)"),
+ :s("SREG(NUM)"),
+ :k("PREG(NUM)"),
+ :ki("IREG(NUM)"),
+
+ :ic("cur_opcode[NUM]"),
+ :nc("CONST(NUM)->u.number"),
+ :pc("CONST(NUM)->u.key"),
+ :sc("CONST(NUM)->u.string"),
+ :kc("CONST(NUM)->u.key"),
+ :kic("cur_opcode[NUM]")
+ );
+
+ self;
+}
+
+method suffix() { '' };
+
+method core_type() { 'PARROT_FUNCTION_CORE' }
+
+method prepare_ops($emitter, $ops_file) {
+
+ my $index := 0;
+ my @op_protos;
+ my @op_funcs;
+ my @op_func_table;
+
+ for $ops_file.ops -> $op {
+ #say("# preparing " ~ $op);
+ my $func_name := $op.func_name( self );
+ my $definition := "opcode_t *\n$func_name(opcode_t *cur_opcode, PARROT_INTERP)";
+ my $prototype := $emitter.sym_export
+ ~ " opcode_t * $func_name(opcode_t *, PARROT_INTERP);\n";
+
+ my $src := $op.source( self );
+
+ @op_func_table.push(sprintf( " %-50s /* %6ld */\n", "$func_name,", $index ));
+
+ my $body := join('', $definition, ' {', "\n", $src, '}', "\n\n");
+ @op_funcs.push($body);
+ @op_protos.push($prototype);
+ $index++;
+ }
+
+ self<op_funcs> := @op_funcs;
+ self<op_protos> := @op_protos;
+ self<op_func_table> := @op_func_table;
+ self<num_entries> := + at op_funcs + 1;
+}
+
+method emit_c_op_funcs_header_part($fh) {
+ for self<op_protos> -> $proto {
+ $fh.print($proto);
+ }
+}
+
+method access_arg($type, $num) {
+ my $access := self<arg_maps>{$type};
+ die("unrecognized arg type '$type'") unless $access;
+ subst($access, /NUM/, $num);
+}
+
+method restart_address($addr) {
+ "interp->resume_offset = $addr; interp->resume_flag = 1;";
+}
+
+method restart_offset($offset) {
+ "interp->resume_offset = REL_PC + $offset; interp->resume_flag = 1;";
+}
+
+method goto_address($addr) { "return (opcode_t *)$addr"; }
+
+method goto_offset($offset) { "return (opcode_t *)cur_opcode + $offset"; }
+
+method expr_address($addr) { $addr; }
+
+method expr_offset($offset) { "cur_opcode + $offset"; }
+
+=begin
+
+=item C<defines()>
+
+Returns the C C<#define> macros for register access etc.
+
+=end
+
+method defines($emitter) {
+ return qq|
+/* defines - Ops::Trans::C */
+#undef CONST
+#define REL_PC ((size_t)(cur_opcode - (opcode_t *)interp->code->base.data))
+#define CUR_OPCODE cur_opcode
+#define IREG(i) (CUR_CTX->bp.regs_i[cur_opcode[i]])
+#define NREG(i) (CUR_CTX->bp.regs_n[-1L - cur_opcode[i]])
+#define PREG(i) (CUR_CTX->bp_ps.regs_p[-1L - cur_opcode[i]])
+#define SREG(i) (CUR_CTX->bp_ps.regs_s[cur_opcode[i]])
+#define CONST(i) Parrot_pcc_get_constants(interp, interp->ctx)[cur_opcode[i]]
+
+static int get_op(PARROT_INTERP, const char * name, int full);
+|;
+}
+
+method op_info($emitter) { $emitter.bs ~ 'op_info_table' }
+method op_func($emitter) { $emitter.bs ~ 'op_func_table' }
+method getop($emitter) { 'get_op' };
+
+method body_prelude() { ' const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);' }
+
+method emit_source_part($emitter, $fh) {
+ self._emit_op_func_table($emitter, $fh);
+ self._emit_op_info_table($emitter, $fh);
+ self._emit_op_function_definitions($emitter, $fh);
+}
+
+method _emit_op_func_table($emitter, $fh) {
+
+ $fh.print(qq|
+
+INTVAL {$emitter.bs}numops{self.suffix} = {self<num_entries>};
+
+/*
+** Op Function Table:
+*/
+
+static op_func{self.suffix}_t {self.op_func($emitter)}[{self<num_entries>}] = | ~ '{'
+);
+
+ for self<op_func_table> {
+ $fh.print($_)
+ }
+
+ $fh.print(q|
+ NULL /* NULL function pointer */
+};
+
+|);
+}
+
+
+method _emit_op_info_table($emitter, $fh) {
+
+ my %names := self<names>;
+ my %arg_dir_mapping := hash(
+ :i('PARROT_ARGDIR_IN'),
+ :o('PARROT_ARGDIR_OUT'),
+ :io('PARROT_ARGDIR_INOUT')
+ );
+
+ #
+ # Op Info Table:
+ #
+ $fh.print(qq|
+
+/*
+** Op Info Table:
+*/
+
+static op_info_t {self.op_info($emitter)}[{self<num_entries>}] = | ~ q|{
+|);
+
+ my $index := 0;
+
+ for $emitter.ops_file.ops -> $op {
+ my $type := sprintf( "PARROT_%s_OP", uc($op.type ?? 'INLINE' !! 'FUNCTION') );
+ my $name := $op.name;
+ %names{$name} := 1;
+ my $full_name := $op.full_name;
+ my $func_name := $op.func_name( self );
+ my $body := $op.body;
+ my $jump := $op.get_jump;
+ my $arg_count := $op.size;
+
+ ## 0 inserted if arrays are empty to prevent msvc compiler errors
+ my $arg_types := +$op.arg_types
+ ?? '{ ' ~ join( ", ",
+ |map( -> $t { sprintf( "PARROT_ARG_%s", uc($t) ) }, |$op.arg_types)
+ ) ~ ' }'
+ !! '{ (arg_type_t) 0 }';
+ my $arg_dirs := $op<normalized_args>
+ ?? '{ ' ~ join(", ",
+ |map( -> $d { %arg_dir_mapping{$d<direction>} }, |$op<normalized_args>)
+ ) ~ ' }'
+ !! '{ (arg_dir_t) 0 }';
+ my $labels := $op<normalized_args>
+ ?? '{ ' ~ join(", ",
+ |map( -> $d { $d<is_label> ?? 1 !! 0 }, |$op<normalized_args>)
+ ) ~ ' }'
+ !! '{ 0 }';
+
+ $fh.print(' { ' ~ qq|/* $index */
+ /* type $type, */
+ "$name",
+ "$full_name",
+ "$func_name",
+ /* "", body */
+ $jump,
+ $arg_count,
+ $arg_types,
+ $arg_dirs,
+ $labels
+ | ~ '},
+',
+ );
+
+ $index++;
+ }
+ $fh.print(q|
+};
+
+|);
+}
+
+method _emit_op_function_definitions($emitter, $fh) {
+ $fh.print(q|
+/*
+** Op Function Definitions:
+*/
+
+|);
+
+ for self<op_funcs> -> $op {
+ $fh.print($op);
+ }
+}
+
+method emit_op_lookup($emitter, $fh) {
+
+ if !$emitter.flags<core> {
+ return;
+ }
+
+ my $hash_size := 3041;
+# my $tot := $self->{index} + scalar keys( %{ $self->{names} } );
+# if ( $hash_size < $tot * 1.2 ) {
+# print STDERR "please increase hash_size ($hash_size) in lib/Parrot/Ops2c/Utils.pm "
+# . "to a prime number > ", $tot * 1.2, "\n";
+# }
+ # Due bug in NQP do it in two passes.
+ my $res := q|
+/*
+** Op lookup function:
+*/
+
+#define OP_HASH_SIZE 3041
+
+/* we could calculate a prime somewhat bigger than
+ * n of fullnames + n of names
+ * for now this should be ok
+ *
+ * look up an op_code: at first call to op_code() a hash
+ * of short and full opcode names is created
+ * hash functions are from imcc, thanks to Melvin.
+ */
+
+
+typedef struct hop {
+ op_info_t * info;
+ struct hop *next;
+} HOP;
+static HOP **hop;
+
+static void hop_init(PARROT_INTERP);
+static size_t hash_str(const char *str);
+static void store_op(PARROT_INTERP, op_info_t *info, int full);
+
+/* XXX on changing interpreters, this should be called,
+ through a hook */
+
+static void hop_deinit(PARROT_INTERP);
+
+/*
+ * find a short or full opcode
+ * usage:
+ *
+ * interp->op_lib->op_code("set", 0)
+ * interp->op_lib->op_code("set_i_i", 1)
+ *
+ * returns >= 0 (found idx into info_table), -1 if not
+ */
+
+static size_t hash_str(const char *str) {
+ size_t key = 0;
+ const char *s = str;
+
+ while (*s) {
+ key *= 65599;
+ key += *s++;
+ }
+
+ return key;
+}
+
+static void store_op(PARROT_INTERP, op_info_t *info, int full) {
+ HOP * const p = mem_gc_allocate_zeroed_typed(interp, HOP);
+ const size_t hidx =
+ hash_str(full ? info->full_name : info->name) % OP_HASH_SIZE;
+
+ p->info = info;
+ p->next = hop[hidx];
+ hop[hidx] = p;
+}
+static int get_op(PARROT_INTERP, const char * name, int full) {
+ const HOP * p;
+ const size_t hidx = hash_str(name) % OP_HASH_SIZE;
+ if (!hop) {
+ hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE,HOP *);
+ hop_init(interp);
+ }
+ for (p = hop[hidx]; p; p = p->next) {
+ if(STREQ(name, full ? p->info->full_name : p->info->name))
+ return p->info - [[BS]]op_lib.op_info_table;
+ }
+ return -1;
+}
+static void hop_init(PARROT_INTERP) {
+ size_t i;
+ op_info_t * const info = [[BS]]op_lib.op_info_table;
+ /* store full names */
+ for (i = 0; i < [[BS]]op_lib.op_count; i++)
+ store_op(interp, info + i, 1);
+ /* plus one short name */
+ for (i = 0; i < [[BS]]op_lib.op_count; i++)
+ if (get_op(interp, info[i].name, 0) == -1)
+ store_op(interp, info + i, 0);
+}
+static void hop_deinit(PARROT_INTERP)
+{
+ if (hop) {
+ size_t i;
+ for (i = 0; i < OP_HASH_SIZE; i++) {
+ HOP *p = hop[i];
+ while (p) {
+ HOP * const next = p->next;
+ mem_gc_free(interp, p);
+ p = next;
+ }
+ }
+ mem_sys_free(hop);
+ hop = NULL;
+ }
+}|;
+
+ $fh.print(subst($res, /'[[' BS ']]'/, $emitter.bs, :global));
+}
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/compilers/opsc/src/builtins.pir (from r46944, trunk/compilers/opsc/src/builtins.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/compilers/opsc/src/builtins.pir Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/compilers/opsc/src/builtins.pir)
@@ -0,0 +1,196 @@
+#! parrot
+# Copyright (C) 2009-2010, Parrot Foundation.
+# $Id$
+
+=head1 Builtins
+
+Variour helper builtins.
+
+=cut
+.namespace []
+
+.sub 'lc'
+ .param string arg
+ $S0 = downcase arg
+ .return ($S0)
+.end
+
+.sub 'uc'
+ .param string arg
+ $S0 = upcase arg
+ .return ($S0)
+.end
+
+.sub 'defined'
+ .param pmc thing
+ $I0 = defined thing
+ .return ($I0)
+.end
+
+.sub 'clone'
+ .param pmc what
+ $P0 = clone what
+ .return ($P0)
+.end
+
+.sub 'elements'
+ .param pmc p
+ $I0 = elements p
+ .return ($I0)
+.end
+
+
+.sub 'substr'
+ .param string orig
+ .param int from
+ .param int len
+ $S0 = substr orig, from, len
+ .return ($S0)
+.end
+
+.sub 'match'
+ .param string pattern
+ .param string subject
+
+ .local pmc recomp, resub, match, recache
+
+ load_bytecode 'PGE.pbc'
+
+ #hash cache mapping patterns to subs, avoiding unneeded recompilation
+ recache = get_hll_global ['Ops';'Op'], '%recache'
+ $I0 = isnull recache
+ if $I0 goto no_cache
+ $I0 = exists recache[pattern]
+ if $I0 goto found_re
+ goto no_re
+
+ no_cache:
+ recache = new ['Hash']
+
+ no_re:
+ recomp = compreg 'PGE::Perl6Regex'
+ resub = recomp(pattern)
+ recache[pattern] = resub
+
+ found_re:
+ resub = recache[pattern]
+ set_hll_global ['Ops';'Op'], '%recache', recache
+
+ match = resub(subject)
+ if match goto found_match
+ .return (0)
+ found_match:
+ .return (1)
+.end
+
+.sub 'die'
+ .param string why :optional
+ .param int has_why :opt_flag
+
+ die why
+.end
+
+.sub 'slurp'
+ .param string file
+ .local pmc pio
+ pio = open file
+ $S0 = pio.'readall'()
+ close pio
+ .return ($S0)
+.end
+
+.sub 'split' :multi(_,_)
+ .param string splitter
+ .param string buf
+
+ $P0 = split splitter, buf
+ .return ($P0)
+.end
+
+.sub 'split' :multi('Sub', _)
+ .param pmc regex
+ .param pmc str
+ .param int count :optional
+ .param int has_count :opt_flag
+ .local pmc match
+ .local pmc retv
+ .local int start_pos
+ .local int end_pos
+ .local int zwm_start
+
+ $S0 = str
+ retv = new 'ResizableStringArray'
+ start_pos = 0
+
+ # per Perl 5's negative LIMIT behavior
+ unless has_count goto positive_count
+ if count < 1 goto done
+
+ positive_count:
+ match = regex($S0)
+ if match goto loop
+ retv.'push'($S0)
+ goto done
+
+ loop:
+ unless has_count goto skip_count
+ dec count
+ unless count < 1 goto skip_count
+ $S1 = substr $S0, start_pos
+ retv.'push'($S1)
+ goto done
+ next_zwm:
+ zwm_start = start_pos
+ inc_zwm:
+ inc start_pos
+ match = regex($S0, 'continue' => start_pos)
+ end_pos = match.'from'()
+ unless start_pos == end_pos goto inc_zwm
+ start_pos = zwm_start
+ end_pos -= start_pos
+ goto add_str
+ skip_count:
+ match = regex($S0, 'continue' => start_pos)
+ end_pos = match.'from'()
+ $I99 = match.'to'()
+ if $I99 == end_pos goto next_zwm
+ end_pos -= start_pos
+ add_str:
+ $S1 = substr $S0, start_pos, end_pos
+ retv.'push'($S1)
+ unless match goto done
+ $I0 = match.'to'()
+ if $I0 == start_pos goto zero_width
+ start_pos = $I0
+ goto loop
+ zero_width:
+ inc start_pos
+ goto loop
+
+ done:
+ .return(retv)
+.end
+
+.sub 'list'
+ .param pmc l :slurpy
+ .return (l)
+.end
+
+.sub 'sprintf'
+ .param string format
+ .param pmc args :slurpy
+
+ $S0 = sprintf format, args
+ .return($S0)
+.end
+
+.sub 'say'
+ .param string arg
+ say arg
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_massacre/compilers/pct/Rules.mak
==============================================================================
--- branches/ops_massacre/compilers/pct/Rules.mak Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/compilers/pct/Rules.mak Mon May 24 08:26:56 2010 (r46947)
@@ -4,7 +4,7 @@
$(LIBRARY_DIR)/PCT/Grammar.pbc $(LIBRARY_DIR)/PCT/PAST.pbc
$(PARROT) -o $@ compilers/pct/PCT.pir
-$(LIBRARY_DIR)/PCT/PAST.pbc : compilers/pct/src/PAST.pir $(PARROT) \
+$(LIBRARY_DIR)/PCT/PAST.pbc : compilers/pct/src/PAST.pir $(PARROT) $(PBC_MERGE) \
$(LIBRARY_DIR)/PCT/HLLCompiler.pbc \
compilers/pct/src/PCT/Node.pbc \
compilers/pct/src/PAST/Node.pbc \
Modified: branches/ops_massacre/config/auto/extra_nci_thunks.pm
==============================================================================
--- branches/ops_massacre/config/auto/extra_nci_thunks.pm Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/config/auto/extra_nci_thunks.pm Mon May 24 08:26:56 2010 (r46947)
@@ -1,4 +1,3 @@
-#! perl
# Copyright (C) 2010, Parrot Foundation.
# $Id$
Modified: branches/ops_massacre/config/auto/warnings.pm
==============================================================================
--- branches/ops_massacre/config/auto/warnings.pm Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/config/auto/warnings.pm Mon May 24 08:26:56 2010 (r46947)
@@ -182,6 +182,8 @@
-Wdeprecated-declarations
-Wno-format-extra-args
-Wno-import
+ -Wsuggest-attribute=pure
+ -Wsuggest-attribute=const
-Wunreachable-code
-Wunused
-Wunused-function
Modified: branches/ops_massacre/config/gen/makefiles/root.in
==============================================================================
--- branches/ops_massacre/config/gen/makefiles/root.in Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/config/gen/makefiles/root.in Mon May 24 08:26:56 2010 (r46947)
@@ -125,6 +125,7 @@
include compilers/tge/Defines.mak
include compilers/pge/Defines.mak
include compilers/pct/Defines.mak
+include compilers/opsc/Defines.mak
include ext/nqp-rx/Defines.mak
include compilers/data_json/Defines.mak
@@ -172,8 +173,7 @@
config_lib.pir \
parrot.pc \
compilers/imcc/imcc.y.flag \
- compilers/imcc/imcc.l.flag \
- src/ops/core_ops.c
+ compilers/imcc/imcc.l.flag
GEN_PASM_INCLUDES = \
runtime/parrot/include/cclass.pasm \
@@ -233,17 +233,12 @@
#
###############################################################################
-GEN_OPSFILES =
-
GEN_HEADERS = \
$(INC_DIR)/vtable.h \
- $(INC_DIR)/oplib/core_ops.h \
- $(INC_DIR)/oplib/ops.h \
$(INC_DIR)/extend_vtable.h \
$(INC_DIR)/pbcversion.h
GEN_SOURCES = \
- src/core_ops.c \
src/nci.c \
src/glut_nci_thunks.c \
src/parrot_config.c \
@@ -253,7 +248,6 @@
src/extra_nci_thunks.c
GEN_MODULES = \
- lib/Parrot/OpLib/core.pm
GEN_LIBRARY = \
$(LIBRARY_DIR)/Archive/Tar.pbc \
@@ -274,7 +268,8 @@
$(LIBRARY_DIR)/HTTP/Message.pbc \
$(LIBRARY_DIR)/Iter.pbc \
$(LIBRARY_DIR)/JSON.pbc \
- $(LIBRARY_DIR)/LWP.pbc \
+ $(LIBRARY_DIR)/LWP/Protocol.pbc \
+ $(LIBRARY_DIR)/LWP/UserAgent.pbc \
$(LIBRARY_DIR)/Math/Rand.pbc \
$(LIBRARY_DIR)/MIME/Base64.pbc \
$(LIBRARY_DIR)/NCI/Utils.pbc \
@@ -334,7 +329,6 @@
$(LIBRARY_DIR)/postgres.pbc
FLUID_FILES_1 = \
- $(GEN_OPSFILES) \
$(GEN_HEADERS) \
$(GEN_SOURCES) \
$(GEN_MODULES) \
@@ -356,61 +350,61 @@
# parrot.h and all the includes it causes to be included
PARROT_H_HEADERS = \
- $(INC_DIR)/parrot.h \
- $(INC_DIR)/config.h \
- $(INC_DIR)/settings.h \
- $(INC_DIR)/enums.h \
- $(INC_DIR)/platform.h \
- $(INC_DIR)/platform_interface.h \
- $(INC_DIR)/global_setup.h \
- $(INC_DIR)/caches.h \
- $(INC_DIR)/interpreter.h \
- $(INC_DIR)/datatypes.h \
- $(INC_DIR)/encoding.h \
- $(INC_DIR)/charset.h \
- $(INC_DIR)/string.h \
- $(INC_DIR)/string_primitives.h \
- $(INC_DIR)/hash.h \
- $(INC_DIR)/pmc_freeze.h \
- $(INC_DIR)/vtable.h \
- $(INC_DIR)/context.h \
- $(INC_DIR)/exceptions.h \
- $(INC_DIR)/warnings.h \
- $(INC_DIR)/memory.h \
- $(INC_DIR)/packfile.h \
- $(INC_DIR)/io.h \
- $(INC_DIR)/op.h \
- $(INC_DIR)/pmc.h \
- $(INC_DIR)/gc_api.h \
- $(INC_DIR)/string_funcs.h \
- $(INC_DIR)/misc.h \
- $(INC_DIR)/sub.h \
- $(INC_DIR)/call.h \
- $(INC_DIR)/key.h \
- $(INC_DIR)/exit.h \
- $(INC_DIR)/nci.h \
- $(INC_DIR)/thread.h \
- $(INC_DIR)/scheduler.h \
- $(INC_DIR)/longopt.h \
- $(INC_DIR)/oo.h \
- $(INC_DIR)/vtables.h \
- $(INC_DIR)/multidispatch.h \
- $(INC_DIR)/library.h \
- $(INC_DIR)/global.h \
- $(INC_DIR)/stat.h \
- $(INC_DIR)/hll.h \
- $(INC_DIR)/pbcversion.h \
- $(INC_DIR)/pobj.h \
- $(INC_DIR)/platform_limits.h \
- $(INC_DIR)/has_header.h \
- $(INC_DIR)/oplib.h \
- $(INC_DIR)/feature.h \
- $(INC_DIR)/debugger.h \
- $(INC_DIR)/core_types.h \
- $(INC_DIR)/core_pmcs.h \
- $(INC_DIR)/compiler.h \
- $(INC_DIR)/cclass.h \
- include/pmc/pmc_callcontext.h
+ $(INC_DIR)/parrot.h \
+ $(INC_DIR)/config.h \
+ $(INC_DIR)/settings.h \
+ $(INC_DIR)/enums.h \
+ $(INC_DIR)/platform.h \
+ $(INC_DIR)/platform_interface.h \
+ $(INC_DIR)/global_setup.h \
+ $(INC_DIR)/caches.h \
+ $(INC_DIR)/interpreter.h \
+ $(INC_DIR)/datatypes.h \
+ $(INC_DIR)/encoding.h \
+ $(INC_DIR)/charset.h \
+ $(INC_DIR)/string.h \
+ $(INC_DIR)/string_primitives.h \
+ $(INC_DIR)/hash.h \
+ $(INC_DIR)/pmc_freeze.h \
+ $(INC_DIR)/vtable.h \
+ $(INC_DIR)/context.h \
+ $(INC_DIR)/exceptions.h \
+ $(INC_DIR)/warnings.h \
+ $(INC_DIR)/memory.h \
+ $(INC_DIR)/packfile.h \
+ $(INC_DIR)/io.h \
+ $(INC_DIR)/op.h \
+ $(INC_DIR)/pmc.h \
+ $(INC_DIR)/gc_api.h \
+ $(INC_DIR)/string_funcs.h \
+ $(INC_DIR)/misc.h \
+ $(INC_DIR)/sub.h \
+ $(INC_DIR)/call.h \
+ $(INC_DIR)/key.h \
+ $(INC_DIR)/exit.h \
+ $(INC_DIR)/nci.h \
+ $(INC_DIR)/thread.h \
+ $(INC_DIR)/scheduler.h \
+ $(INC_DIR)/longopt.h \
+ $(INC_DIR)/oo.h \
+ $(INC_DIR)/vtables.h \
+ $(INC_DIR)/multidispatch.h \
+ $(INC_DIR)/library.h \
+ $(INC_DIR)/global.h \
+ $(INC_DIR)/stat.h \
+ $(INC_DIR)/hll.h \
+ $(INC_DIR)/pbcversion.h \
+ $(INC_DIR)/pobj.h \
+ $(INC_DIR)/platform_limits.h \
+ $(INC_DIR)/has_header.h \
+ $(INC_DIR)/oplib.h \
+ $(INC_DIR)/feature.h \
+ $(INC_DIR)/debugger.h \
+ $(INC_DIR)/core_types.h \
+ $(INC_DIR)/core_pmcs.h \
+ $(INC_DIR)/compiler.h \
+ $(INC_DIR)/cclass.h \
+ include/pmc/pmc_callcontext.h
# generated list of header files
GENERAL_H_FILES = $(NONGEN_HEADERS) $(GEN_HEADERS) \
@@ -503,7 +497,7 @@
#IF(platform_asm): src/platform_asm$(O) \
-OPS_FILES = @ops@ $(GEN_OPSFILES)
+OPS_FILES = @ops@
###############################################################################
#
@@ -524,6 +518,7 @@
NQP_RX = . at slash@parrot-nqp$(EXE)
NCI_THUNK_GEN = . at slash@parrot_nci_thunk_gen$(EXE)
PROVE = . at slash@parrot-prove$(EXE)
+OPS2C = . at slash@ops2c$(EXE)
# Installable executables
INSTALLABLEPARROT = . at slash@installable_parrot$(EXE)
@@ -536,6 +531,7 @@
INSTALLABLENQP = . at slash@installable_parrot-nqp$(EXE)
INSTALLABLENCITHUNKGEN = . at slash@installable_parrot_nci_thunk_gen$(EXE)
INSTALLABLEPROVE = . at slash@installable_parrot-prove$(EXE)
+INSTALLABLEOPS2C = . at slash@installable_ops2c$(EXE)
# Libraries
LIBPARROT_STATIC = @blib_dir@/@libparrot_static@
@@ -618,6 +614,7 @@
$(DATA_JSON_LIB_PBCS) \
$(NQP_LIB_PBCS) \
$(GEN_LIBRARY) \
+ $(DYNOPLIBS_TARGETS) \
$(LIBNCI_TEST_SO)
corevm : \
@@ -627,8 +624,7 @@
runtime/parrot/include/parrotlib.pbc \
runtime/parrot/include/config.fpmc \
$(LIBRARY_DIR)/Test/More.pbc \
- $(DYNPMC_TARGETS) \
- $(DYNOPLIBS_TARGETS)
+ $(DYNPMC_TARGETS)
$(GEN_LIBRARY) : $(PARROT) $(GEN_PASM_INCLUDES)
@@ -797,10 +793,13 @@
world : all parrot_utils
-parrot_utils : $(PDUMP) $(DIS) $(PDB) $(PBC_MERGE) $(PBC_TO_EXE) $(PARROT_CONFIG) src/install_config$(O) $(PROVE)
+parrot_utils : $(PDUMP) $(DIS) $(PDB) $(PBC_MERGE) $(PBC_TO_EXE) $(PARROT_CONFIG) src/install_config$(O) $(PROVE) $(OPS2C)
-installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP) $(INSTALLABLENCITHUNKGEN) $(INSTALLABLEPROVE)
+installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP) $(INSTALLABLENCITHUNKGEN) $(INSTALLABLEPROVE) $(INSTALLABLEOPS2C)
+bootstrap-ops : $(OPS2C)
+ $(OPS2C) --core
+ $(MAKE) .
runtime/parrot/include/parrotlib.pbc: runtime/parrot/library/parrotlib.pir $(PARROT) $(GEN_PASM_INCLUDES)
$(PARROT) -o $@ runtime/parrot/library/parrotlib.pir
@@ -810,14 +809,14 @@
$(MINIPARROT) -Iruntime/parrot/include config_lib.pir > $@
$(PARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
- lib/Parrot/OpLib/core.pm src/parrot_config$(O) \
+ src/parrot_config$(O) \
$(MINIPARROT)
$(LINK) @ld_out@$@ \
src/main$(O) src/parrot_config$(O) \
@rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) $(LINK_DYNAMIC)
#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
-$(PBC_TO_EXE) : tools/dev/pbc_to_exe.pir runtime/parrot/library/config.pir $(PARROT) $(DYNEXT_DIR)/os$(LOAD_EXT)
+$(PBC_TO_EXE) : tools/dev/pbc_to_exe.pir runtime/parrot/library/config.pir $(PARROT) $(DYNEXT_DIR)/os$(LOAD_EXT) $(DYNEXT_DIR)/file$(LOAD_EXT)
$(PARROT) -o pbc_to_exe.pbc tools/dev/pbc_to_exe.pir
$(PARROT) pbc_to_exe.pbc pbc_to_exe.pbc
@@ -838,13 +837,13 @@
$(PARROT) pbc_to_exe.pbc parrot_config.pbc
$(MINIPARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
- lib/Parrot/OpLib/core.pm src/null_config$(O)
+ src/null_config$(O)
$(LINK) @ld_out@$@ src/main$(O) src/null_config$(O) \
@rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
$(INSTALLABLEPARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
- lib/Parrot/OpLib/core.pm src/install_config$(O) \
+ src/install_config$(O) \
$(PARROT)
$(LINK) @ld_out@$@ \
src/main$(O) src/install_config$(O) \
@@ -884,10 +883,10 @@
include/pmc/pmc_object.h src/oo.str $(INC_DIR)/oo_private.h
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)/runcore_api.h
+ include/pmc/pmc_scheduler.h include/pmc/pmc_task.h \
+ include/pmc/pmc_timer.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.c
@@ -898,9 +897,9 @@
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 \
- src/io/socket_win32.c
+ src/io/io_private.h \
+ include/pmc/pmc_socket.h \
+ src/io/socket_win32.c
O_FILES = \
$(INTERP_O_FILES) \
@@ -961,17 +960,17 @@
#
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 \
- compilers/imcc/debug.h \
- compilers/imcc/imcparser.h \
- compilers/imcc/instructions.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.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 \
+ compilers/imcc/debug.h \
+ compilers/imcc/imcparser.h \
+ compilers/imcc/instructions.h \
+ compilers/imcc/sets.h \
+ compilers/imcc/symreg.h \
+ compilers/imcc/unit.h \
+ $(INC_DIR)/oplib/ops.h
$(PDB) : src/parrot_debugger$(O) src/parrot_config$(O) $(LIBPARROT)
$(LINK) @ld_out@$@ \
@@ -1020,7 +1019,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) src/pbc_dump.c
+ $(PARROT_H_HEADERS) src/pbc_dump.c
$(INSTALLABLEPDUMP) : src/pbc_dump$(O) src/packdump$(O) \
src/install_config$(O) $(LIBPARROT)
@@ -1179,15 +1178,6 @@
$(PERL) $(H2INC) src/utils.c $@
-# ops.h is built by ops2pm.pl after it builds core.pm
-$(INC_DIR)/oplib/ops.h: lib/Parrot/OpLib/core.pm
-
-$(BUILD_TOOLS_DIR)/ops2c.pl: lib/Parrot/OpLib/core.pm
-
-lib/Parrot/OpLib/core.pm : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2pm.pl \
- lib/Parrot/OpsFile.pm lib/Parrot/Op.pm src/ops/ops.num src/ops/ops.skip
- $(PERL) $(BUILD_TOOLS_DIR)/ops2pm.pl @no_lines_flag@ $(OPS_FILES)
-
###############################################################################
#
# Examples (Assembly):
@@ -1233,7 +1223,7 @@
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 src/extend_vtable.c
+ $(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.c
@@ -1248,13 +1238,13 @@
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.c\
- $(INC_DIR)/dynext.h
+ $(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.c \
- include/pmc/pmc_key.h
+ include/pmc/pmc_key.h
src/gc/mark_sweep$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/mark_sweep.c
@@ -1265,7 +1255,7 @@
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/alloc_resources.c
+ 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.c
@@ -1276,37 +1266,37 @@
src/core_pmcs$(O) : $(PARROT_H_HEADERS) src/core_pmcs.c
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)
+ $(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) 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 \
- include/pmc/pmc_continuation.h \
- $(INC_DIR)/extend_vtable.h
+ $(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 \
+ include/pmc/pmc_continuation.h \
+ $(INC_DIR)/extend_vtable.h
src/sub$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
- src/sub.str src/sub.c \
+ 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/api.c
+ src/string/private_cstring.h src/string/api.c
src/string/primitives$(O) : $(PARROT_H_HEADERS) src/string/primitives.c
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.c
+ src/dynext.str include/pmc/pmc_parrotlibrary.h src/dynext.c
src/exceptions$(O) : $(PARROT_H_HEADERS) \
- src/exceptions.str src/exceptions.c \
+ src/exceptions.str src/exceptions.c \
include/pmc/pmc_continuation.h
src/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h src/thread.c \
- include/pmc/pmc_sub.h \
+ include/pmc/pmc_sub.h \
include/pmc/pmc_parrotinterpreter.h \
$(INC_DIR)/runcore_api.h
@@ -1319,31 +1309,31 @@
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/ops.h \
- $(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h \
- $(INC_DIR)/runcore_profiling.h
+ $(INC_DIR)/dynext.h $(INC_DIR)/oplib/core_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.c \
include/pmc/pmc_sub.h \
include/pmc/pmc_namespace.h \
- $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h \
- $(INC_DIR)/runcore_profiling.h $(INC_DIR)/embed.h \
- $(PARROT_H_HEADERS)
+ $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h \
+ $(INC_DIR)/runcore_profiling.h $(INC_DIR)/embed.h \
+ $(PARROT_H_HEADERS)
src/call/args$(O) : \
- $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
+ $(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.c
+ src/call/context_accessors.c
src/call/pcc$(O) : $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS) \
- $(INC_DIR)/runcore_api.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
@@ -1352,12 +1342,12 @@
include/pmc/pmc_sub.h src/call/context.c
src/interp/inter_cb$(O) : $(PARROT_H_HEADERS) \
- include/pmc/pmc_parrotinterpreter.h \
+ 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 \
+ src/interp/inter_misc.c \
+ src/interp/inter_misc.str \
compilers/imcc/imc.h \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
@@ -1365,14 +1355,14 @@
compilers/imcc/sets.h \
compilers/imcc/symreg.h \
compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(INC_DIR)/runcore_api.h
+ $(INC_DIR)/oplib/ops.h \
+ $(INC_DIR)/runcore_api.h
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 \
+ src/interp/inter_create.c \
+ src/interp/inter_create.str \
compilers/imcc/imc.h \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
@@ -1380,19 +1370,19 @@
compilers/imcc/sets.h \
compilers/imcc/symreg.h \
compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(INC_DIR)/runcore_api.h
+ $(INC_DIR)/oplib/ops.h \
+ $(INC_DIR)/runcore_api.h
src/call/ops$(O) : $(INC_DIR)/oplib/ops.h \
$(PARROT_H_HEADERS) include/pmc/pmc_continuation.h \
- $(INC_DIR)/runcore_api.h src/call/ops.c
+ $(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 \
- $(INC_DIR)/extend.h \
- $(INC_DIR)/extend_vtable.h
+ src/io/api.c \
+ src/io/api.str include/pmc/pmc_filehandle.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.c
@@ -1410,28 +1400,28 @@
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)/runcore_api.h src/gc/gc_private.h \
- src/main.c
+ $(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) \
+ 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 \
+ src/packfile.c \
include/pmc/pmc_sub.h include/pmc/pmc_key.h \
- compilers/imcc/imc.h \
+ compilers/imcc/imc.h \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/instructions.h \
compilers/imcc/sets.h \
compilers/imcc/symreg.h \
compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(INC_DIR)/embed.h $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h \
- $(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h
+ $(INC_DIR)/oplib/ops.h \
+ $(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.c
@@ -1440,12 +1430,12 @@
src/parrot$(O) : $(GENERAL_H_FILES)
src/runcore/cores$(O) : src/runcore/cores.str \
- src/runcore/cores.c \
+ 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/ops.h \
- $(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
- $(PARROT_H_HEADERS)
+ $(INC_DIR)/dynext.h $(INC_DIR)/embed.h $(INC_DIR)/oplib/core_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 src/embed.str \
@@ -1457,19 +1447,19 @@
compilers/imcc/sets.h \
compilers/imcc/symreg.h \
compilers/imcc/unit.h \
- include/pmc/pmc_sub.h
+ include/pmc/pmc_sub.h
src/dataypes$(O) : $(GENERAL_H_FILES) src/dataypes.c
src/exit$(O) : $(PARROT_H_HEADERS) src/exit.c
src/nci/api$(O) : src/nci/api.str \
- src/nci/api.c \
- $(PARROT_H_HEADERS)
+ src/nci/api.c \
+ $(PARROT_H_HEADERS)
src/nci/core_thunks$(O) : src/nci/core_thunks.c \
- $(PARROT_H_HEADERS) \
- include/pmc/pmc_nci.h
+ $(PARROT_H_HEADERS) \
+ include/pmc/pmc_nci.h
## SUFFIX OVERRIDE
src/nci/extra_thunks$(O) : \
@@ -1479,11 +1469,11 @@
$(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/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.c
@@ -1510,14 +1500,14 @@
src/string/encoding$(O) : $(PARROT_H_HEADERS) src/string/encoding.c
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 \
- src/string/encoding/ucs2.h \
- src/string/charset/ascii.h \
- src/string/charset/binary.h \
- src/string/charset/iso-8859-1.h \
- src/string/charset/unicode.h
+ src/string/encoding/fixed_8.h \
+ src/string/encoding/utf8.h \
+ src/string/encoding/utf16.h \
+ src/string/encoding/ucs2.h \
+ src/string/charset/ascii.h \
+ src/string/charset/binary.h \
+ src/string/charset/iso-8859-1.h \
+ src/string/charset/unicode.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)
@@ -1544,15 +1534,6 @@
include/pmc/pmc_parrotlibrary.h \
src/io/io_private.h
-# .h files are built along with .c
-$(INC_DIR)/oplib/core_ops.h: src/ops/core_ops.c
-
-src/ops/core_ops.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/C.pm \
- include/pmc/pmc_continuation.h
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --core @no_lines_flag@
-
@TEMP_gc_c@
@TEMP_pmc_build@
@@ -1660,13 +1641,9 @@
t/tools/*.t
LIBRARY_TEST_FILES = @library_tests@
PMC2CUTILS_DIR = t/tools/pmc2cutils
-OPS2PMUTILS_DIR = t/tools/ops2pm
-OPS2CUTILS_DIR = t/tools/ops2cutils
HARNESS_DIR = t/pharness
BUILDTOOLS_TEST_FILES = \
$(PMC2CUTILS_DIR)/*.t \
- $(OPS2PMUTILS_DIR)/*.t \
- $(OPS2CUTILS_DIR)/*.t \
$(HARNESS_DIR)/*.t
MANIFEST_DIR = t/manifest
INSTALL_TOOLS_DIR = t/tools/install
@@ -1833,7 +1810,6 @@
ext-clean \
#UNLESS(win32): cover-clean \
editor-clean
- $(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c
$(RM_F) chartypes "*.s" "*~"
$(RM_F) $(FLUID_FILES_1)
$(RM_F) $(FLUID_FILES_2)
@@ -1843,7 +1819,7 @@
$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS) $(DATA_JSON_CLEANUPS)
$(RM_F) $(DYNOPLIBS_CLEANUPS) $(DYNPMC_CLEANUPS)
$(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES)
- $(RM_F) $(NQPRX_CLEANUPS)
+ $(RM_F) $(NQPRX_CLEANUPS) $(OPSC_CLEANUPS)
prog-clean :
$(RM_F) \
@@ -1851,6 +1827,7 @@
$(PARROT) \
$(MINIPARROT) \
$(LIBPARROT) \
+ $(INSTALLABLEOPS2C) \
$(INSTALLABLEPARROT) \
$(INSTALLABLEDIS) \
$(INSTALLABLEPDUMP) \
@@ -1863,6 +1840,7 @@
$(INSTALLABLEPROVE) \
pbc_to_exe.pbc pbc_to_exe.c pbc_to_exe$(O) pbc_to_exe$(EXE) \
$(NCI_THUNK_GEN) parrot_nci_thunk_gen.c parrot_nci_thunk_gen$(O) parrot_nci_thunk_gen.pbc \
+ ops2c.pbc ops2c.c ops2c$(O) ops2c$(EXE) ops2c.pir \
parrot-prove.pbc parrot-prove.c parrot-prove$(O) parrot-prove$(EXE) \
parrot_config$(EXE) parrot_config.c parrot_config$(O) parrot_config.pbc \
compilers/imcc/main$(O) \
@@ -1945,20 +1923,14 @@
# XXX Is there a danger of too long command lines in the $(RM_F) commands,
# or is there an automatic xargs?
test-clean :
- $(RM_F) \
- "t/compilers/*/*.out" \
- "t/compilers/*/*.pasm" \
- "t/compilers/*/*.pbc" \
- "t/compilers/*/*_pbcexe*" \
- "t/compilers/*/*.pir" \
- "t/compilers/*/*.stabs.s"
- $(RM_F) \
- "t/compilers/*/*/*.out" \
- "t/compilers/*/*/*.pasm" \
- "t/compilers/*/*/*.pbc" \
- "t/compilers/*/*/*_pbcexe*" \
- "t/compilers/*/*/*.pir" \
- "t/compilers/*/*/*.stabs.s"
+ $(RM_F) t/compilers/data_json/*.pir
+ $(RM_F) t/compilers/imcc/imcpasm/*.pir
+ $(RM_F) t/compilers/imcc/syn/*.pir t/compilers/imcc/syn/*.pasm
+ $(RM_F) t/compilers/imcc/reg/*.pir t/compilers/imcc/reg/*.pasm
+ $(RM_F) t/compilers/pct/*.pir
+ $(RM_F) t/compilers/pge/perl6regex/*.pir
+ $(RM_F) t/compilers/pge/*.pir
+ $(RM_F) t/compilers/tge/*.pir
$(RM_F) \
"t/*/*$(O)" \
"t/*/*.out" \
@@ -2300,10 +2272,10 @@
build_dir=$$PWD; \
for dir in $(COVER_DIRS); \
do \
- cd $$dir; \
- gcov *.c; \
- cd $$build_dir; \
- gcov2perl $$dir/*.gcov; \
+ cd $$dir; \
+ gcov *.c; \
+ cd $$build_dir; \
+ gcov2perl $$dir/*.gcov; \
done
cover -ignore_re '^\/usr\/local\/bin'
@@ -2417,7 +2389,7 @@
$(PERL) -lane 'print"parrot-$(VERSION)/$$F[0]"unless!length||/#/' MANIFEST | \
tar -zcv -T - -f parrot-$(VERSION).tar.gz
$(PERL) -lane 'print"parrot-$(VERSION)/$$F[0]"unless!length||/#/' \
- MANIFEST | tar -jcv -T - -f parrot-$(VERSION).tar.bz2
+ MANIFEST | tar -jcv -T - -f parrot-$(VERSION).tar.bz2
mv MANIFEST.real MANIFEST
rm parrot-$(VERSION)
@@ -2451,10 +2423,10 @@
src/glut_nci_thunks.c: $(NCI_THUNK_GEN)
$(NCI_THUNK_GEN) \
- --loader-name=Parrot_glut_nci_loader \
- --loader-storage-class=PARROT_DYNEXT_EXPORT \
- --output=src/glut_nci_thunks.c \
- <src/glut_nci_thunks.nci
+ --loader-name=Parrot_glut_nci_loader \
+ --loader-storage-class=PARROT_DYNEXT_EXPORT \
+ --output=src/glut_nci_thunks.c \
+ <src/glut_nci_thunks.nci
src/glut_nci_thunks$(O) : $(PARROT_H_HEADERS) \
src/glut_nci_thunks.c \
@@ -2467,7 +2439,7 @@
src/extra_nci_thunks.c : src/nci/extra_thunks.nci $(NCI_THUNK_GEN)
$(NCI_THUNK_GEN) --dynext --no-warn-dups \
- --output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci
+ --output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci
## SUFFIX OVERRIDE
src/extra_nci_thunks$(O) : $(PARROT_H_HEADERS) src/extra_nci_thunks.c \
@@ -2485,17 +2457,17 @@
tags-emacs: tags.emacs.dummy
$(RM_F) TAGS
@ctags@ -e \
- --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 \
+ .
# this works with an old etags (XEmacs 21.5*)
tags-xemacs: tags.emacs.dummy
$(RM_F) TAGS
find . \
- -name \*.c -o -name \*.h -o -name \*.pmc -o -name \*.ops | etags -l c - -o TAGS
+ -name \*.c -o -name \*.h -o -name \*.pmc -o -name \*.ops | etags -l c - -o TAGS
tags.emacs.dummy:
@@ -2555,6 +2527,7 @@
include compilers/pirc/Rules.mak
include compilers/pge/Rules.mak
include compilers/pct/Rules.mak
+include compilers/opsc/Rules.mak
include compilers/tge/Rules.mak
include compilers/data_json/Rules.mak
include ext/nqp-rx/Rules.mak
Modified: branches/ops_massacre/docs/pdds/draft/pdd31_hll.pod
==============================================================================
--- branches/ops_massacre/docs/pdds/draft/pdd31_hll.pod Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/docs/pdds/draft/pdd31_hll.pod Mon May 24 08:26:56 2010 (r46947)
@@ -77,11 +77,11 @@
=item C<eval>
- $P0 = compiler.'eval'(source [, options :named :slurpy])
+ $P0 = compiler.'eval'(source [, args :slurpy] [, options :named :slurpy])
Compile and evaluate (execute) the code given by C<source>
-according to C<options>. The available options are generally
-the same as for the C<compile> method above; in particular,
+with C<args> and according to C<options>. The available options
+are generally the same as for the C<compile> method above; in particular,
the C<outer_ctx> option can be used to specify the outer lexical
context for the evaluated source.
Modified: branches/ops_massacre/docs/pdds/pdd13_bytecode.pod
==============================================================================
--- branches/ops_massacre/docs/pdds/pdd13_bytecode.pod Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/docs/pdds/pdd13_bytecode.pod Mon May 24 08:26:56 2010 (r46947)
@@ -389,7 +389,9 @@
| 5 | n | String data with trailing zero padding as required. |
+--------+--------+--------------------------------------------------------+
-Note: The encoding field is not implemented yet and is set to 0.
+Note: The encoding and charset are currently packed together with the Flags,
+using an unique field of Length 1.
+
=item * PMC Constants
Modified: branches/ops_massacre/docs/tests.pod
==============================================================================
--- branches/ops_massacre/docs/tests.pod Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/docs/tests.pod Mon May 24 08:26:56 2010 (r46947)
@@ -190,10 +190,9 @@
The files in F<t/postconfigure> are tests for build system. The build tools
tests are intended to be run after someone has made changes in modules such as
-F<lib/Parrot/Pmc2cUtils/>, F<Ops2cUtils/> and F<Ops2pmutils/>. They're set up
-to be run after F<Configure.pl> has completed but before make has been invoked.
-(In fact, they will generate errors if make has completed.) You can run them
-with any of the following:
+F<lib/Parrot/Pmc2cUtils/>. They're set up to be run after F<Configure.pl> has
+completed but before make has been invoked. (In fact, they will generate
+errors if make has completed.) You can run them with any of the following:
perl Configure.pl --test
perl Configure.pl --test=build
Modified: branches/ops_massacre/editor/pir-mode.el
==============================================================================
--- branches/ops_massacre/editor/pir-mode.el Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/editor/pir-mode.el Mon May 24 08:26:56 2010 (r46947)
@@ -66,7 +66,7 @@
:type 'boolean
:group 'pir)
-(defcustom pir-basic-indent 8
+(defcustom pir-basic-indent 4
"*Extra indentation applied to statements in PIR block structures."
:type 'integer
:group 'pir)
Modified: branches/ops_massacre/examples/io/get.pir
==============================================================================
--- branches/ops_massacre/examples/io/get.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/examples/io/get.pir Mon May 24 08:26:56 2010 (r46947)
@@ -21,12 +21,13 @@
.sub 'main' :main
.param pmc args
- load_bytecode 'LWP.pir'
+ load_bytecode 'LWP/UserAgent.pir'
$S0 = shift args
.local string url
url = shift args
.local pmc ua, response
ua = new ['LWP';'UserAgent']
+ ua.'env_proxy'()
ua.'show_progress'(1)
response = ua.'get'(url, 'close' :named('Connection'))
$S0 = response.'content'()
Modified: branches/ops_massacre/examples/io/post.pir
==============================================================================
--- branches/ops_massacre/examples/io/post.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/examples/io/post.pir Mon May 24 08:26:56 2010 (r46947)
@@ -30,10 +30,11 @@
set $P0, 1
$P0[0] = 'parrot_test_run.tar.gz'
push contents, $P0
- load_bytecode 'LWP.pir'
+ load_bytecode 'LWP/UserAgent.pir'
.const string url = 'http://smolder.plusthree.com/app/projects/process_add_report/8'
.local pmc ua, response
ua = new ['LWP';'UserAgent']
+ ua.'env_proxy'()
ua.'show_progress'(1)
response = ua.'post'(url, contents :flat, 'form-data' :named('Content-Type'), 'close' :named('Connection'))
$I0 = response.'code'()
Modified: branches/ops_massacre/examples/languages/squaak/t/00-sanity.t
==============================================================================
--- branches/ops_massacre/examples/languages/squaak/t/00-sanity.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/examples/languages/squaak/t/00-sanity.t Mon May 24 08:26:56 2010 (r46947)
@@ -88,7 +88,6 @@
# for-statement
-var i = 1
for var i = 18, 20 do
print("ok ", i)
@@ -104,11 +103,11 @@
#end
-i = 0
-while i < 5 do
+var j = 0
+while j < 5 do
- print("ok ", i + g)
- i = i + 1
+ print("ok ", j + g)
+ j = j + 1
end
Modified: branches/ops_massacre/examples/tools/pbc_checker.cpp
==============================================================================
--- branches/ops_massacre/examples/tools/pbc_checker.cpp Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/examples/tools/pbc_checker.cpp Mon May 24 08:26:56 2010 (r46947)
@@ -728,10 +728,16 @@
{
opcode flags;
opcode charset;
+ const opcode encoding_none = 0xFFFF;
+ opcode encoding = encoding_none;
if (pbc_major > 5 && pbc_minor > 11) {
opcode flags_charset = read_opcode(pbcfile);
flags = flags_charset & 0xFF;
charset = flags_charset >> 8;
+ if (pbc_major > 6 || pbc_minor >= 17) {
+ encoding = charset >> 8;
+ charset &= 0xFF;
+ }
}
else {
flags = read_opcode(pbcfile);
@@ -740,6 +746,8 @@
cout << "Flags: 0x" << hex << setw(6) << flags << dec;
cout << " Charset: " << charset;
+ if (encoding != encoding_none)
+ cout << " Encoding: " << encoding;
// Encoding not saved, see TT #468
//opcode encoding = read_opcode(pbcfile);
Modified: branches/ops_massacre/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/ops_massacre/ext/nqp-rx/src/stage0/HLL-s0.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/ext/nqp-rx/src/stage0/HLL-s0.pir Mon May 24 08:26:56 2010 (r46947)
@@ -854,7 +854,7 @@
### .include 'gen/hllgrammar-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1274022878.64768")
+.sub "_block11" :anon :subid("10_1274564773.54721")
.annotate 'line', 0
get_hll_global $P14, ["HLL";"Grammar"], "_block13"
capture_lex $P14
@@ -864,15 +864,15 @@
$P343 = $P14()
.annotate 'line', 1
.return ($P343)
- .const 'Sub' $P345 = "104_1274022878.64768"
+ .const 'Sub' $P345 = "104_1274564773.54721"
.return ($P345)
.end
.namespace []
-.sub "" :load :init :subid("post105") :outer("10_1274022878.64768")
+.sub "" :load :init :subid("post105") :outer("10_1274564773.54721")
.annotate 'line', 0
- .const 'Sub' $P12 = "10_1274022878.64768"
+ .const 'Sub' $P12 = "10_1274564773.54721"
.local pmc block
set block, $P12
$P348 = get_root_global ["parrot"], "P6metaclass"
@@ -881,94 +881,94 @@
.namespace ["HLL";"Grammar"]
-.sub "_block13" :subid("11_1274022878.64768") :outer("10_1274022878.64768")
+.sub "_block13" :subid("11_1274564773.54721") :outer("10_1274564773.54721")
.annotate 'line', 5
- .const 'Sub' $P329 = "101_1274022878.64768"
+ .const 'Sub' $P329 = "101_1274564773.54721"
capture_lex $P329
- .const 'Sub' $P322 = "99_1274022878.64768"
+ .const 'Sub' $P322 = "99_1274564773.54721"
capture_lex $P322
- .const 'Sub' $P309 = "96_1274022878.64768"
+ .const 'Sub' $P309 = "96_1274564773.54721"
capture_lex $P309
- .const 'Sub' $P277 = "91_1274022878.64768"
+ .const 'Sub' $P277 = "91_1274564773.54721"
capture_lex $P277
- .const 'Sub' $P271 = "89_1274022878.64768"
+ .const 'Sub' $P271 = "89_1274564773.54721"
capture_lex $P271
- .const 'Sub' $P266 = "87_1274022878.64768"
+ .const 'Sub' $P266 = "87_1274564773.54721"
capture_lex $P266
- .const 'Sub' $P260 = "85_1274022878.64768"
+ .const 'Sub' $P260 = "85_1274564773.54721"
capture_lex $P260
- .const 'Sub' $P254 = "83_1274022878.64768"
+ .const 'Sub' $P254 = "83_1274564773.54721"
capture_lex $P254
- .const 'Sub' $P249 = "81_1274022878.64768"
+ .const 'Sub' $P249 = "81_1274564773.54721"
capture_lex $P249
- .const 'Sub' $P244 = "79_1274022878.64768"
+ .const 'Sub' $P244 = "79_1274564773.54721"
capture_lex $P244
- .const 'Sub' $P239 = "77_1274022878.64768"
+ .const 'Sub' $P239 = "77_1274564773.54721"
capture_lex $P239
- .const 'Sub' $P234 = "75_1274022878.64768"
+ .const 'Sub' $P234 = "75_1274564773.54721"
capture_lex $P234
- .const 'Sub' $P229 = "73_1274022878.64768"
+ .const 'Sub' $P229 = "73_1274564773.54721"
capture_lex $P229
- .const 'Sub' $P224 = "71_1274022878.64768"
+ .const 'Sub' $P224 = "71_1274564773.54721"
capture_lex $P224
- .const 'Sub' $P219 = "69_1274022878.64768"
+ .const 'Sub' $P219 = "69_1274564773.54721"
capture_lex $P219
- .const 'Sub' $P208 = "65_1274022878.64768"
+ .const 'Sub' $P208 = "65_1274564773.54721"
capture_lex $P208
- .const 'Sub' $P195 = "63_1274022878.64768"
+ .const 'Sub' $P195 = "63_1274564773.54721"
capture_lex $P195
- .const 'Sub' $P183 = "61_1274022878.64768"
+ .const 'Sub' $P183 = "61_1274564773.54721"
capture_lex $P183
- .const 'Sub' $P176 = "59_1274022878.64768"
+ .const 'Sub' $P176 = "59_1274564773.54721"
capture_lex $P176
- .const 'Sub' $P167 = "57_1274022878.64768"
+ .const 'Sub' $P167 = "57_1274564773.54721"
capture_lex $P167
- .const 'Sub' $P160 = "55_1274022878.64768"
+ .const 'Sub' $P160 = "55_1274564773.54721"
capture_lex $P160
- .const 'Sub' $P151 = "53_1274022878.64768"
+ .const 'Sub' $P151 = "53_1274564773.54721"
capture_lex $P151
- .const 'Sub' $P144 = "51_1274022878.64768"
+ .const 'Sub' $P144 = "51_1274564773.54721"
capture_lex $P144
- .const 'Sub' $P135 = "49_1274022878.64768"
+ .const 'Sub' $P135 = "49_1274564773.54721"
capture_lex $P135
- .const 'Sub' $P128 = "47_1274022878.64768"
+ .const 'Sub' $P128 = "47_1274564773.54721"
capture_lex $P128
- .const 'Sub' $P121 = "45_1274022878.64768"
+ .const 'Sub' $P121 = "45_1274564773.54721"
capture_lex $P121
- .const 'Sub' $P111 = "43_1274022878.64768"
+ .const 'Sub' $P111 = "43_1274564773.54721"
capture_lex $P111
- .const 'Sub' $P103 = "41_1274022878.64768"
+ .const 'Sub' $P103 = "41_1274564773.54721"
capture_lex $P103
- .const 'Sub' $P93 = "40_1274022878.64768"
+ .const 'Sub' $P93 = "40_1274564773.54721"
capture_lex $P93
- .const 'Sub' $P87 = "38_1274022878.64768"
+ .const 'Sub' $P87 = "38_1274564773.54721"
capture_lex $P87
- .const 'Sub' $P82 = "36_1274022878.64768"
+ .const 'Sub' $P82 = "36_1274564773.54721"
capture_lex $P82
- .const 'Sub' $P74 = "34_1274022878.64768"
+ .const 'Sub' $P74 = "34_1274564773.54721"
capture_lex $P74
- .const 'Sub' $P68 = "32_1274022878.64768"
+ .const 'Sub' $P68 = "32_1274564773.54721"
capture_lex $P68
- .const 'Sub' $P62 = "30_1274022878.64768"
+ .const 'Sub' $P62 = "30_1274564773.54721"
capture_lex $P62
- .const 'Sub' $P56 = "28_1274022878.64768"
+ .const 'Sub' $P56 = "28_1274564773.54721"
capture_lex $P56
- .const 'Sub' $P23 = "14_1274022878.64768"
+ .const 'Sub' $P23 = "14_1274564773.54721"
capture_lex $P23
- .const 'Sub' $P15 = "12_1274022878.64768"
+ .const 'Sub' $P15 = "12_1274564773.54721"
capture_lex $P15
.annotate 'line', 33
- .const 'Sub' $P329 = "101_1274022878.64768"
+ .const 'Sub' $P329 = "101_1274564773.54721"
capture_lex $P329
.annotate 'line', 5
.return ($P329)
- .const 'Sub' $P340 = "103_1274022878.64768"
+ .const 'Sub' $P340 = "103_1274564773.54721"
.return ($P340)
.end
.namespace ["HLL";"Grammar"]
-.sub "ws" :subid("12_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "ws" :subid("12_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx16_tgt
.local int rx16_pos
@@ -1052,7 +1052,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws" :subid("13_1274022878.64768") :method
+.sub "!PREFIX__ws" :subid("13_1274564773.54721") :method
.annotate 'line', 5
new $P18, "ResizablePMCArray"
push $P18, ""
@@ -1061,7 +1061,7 @@
.namespace ["HLL";"Grammar"]
-.sub "termish" :subid("14_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "termish" :subid("14_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx24_tgt
.local int rx24_pos
@@ -1153,7 +1153,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish" :subid("15_1274022878.64768") :method
+.sub "!PREFIX__termish" :subid("15_1274564773.54721") :method
.annotate 'line', 5
new $P26, "ResizablePMCArray"
push $P26, ""
@@ -1162,7 +1162,7 @@
.namespace ["HLL";"Grammar"]
-.sub "term" :subid("16_1274022878.64768") :method
+.sub "term" :subid("16_1274564773.54721") :method
.annotate 'line', 13
$P33 = self."!protoregex"("term")
.return ($P33)
@@ -1170,7 +1170,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term" :subid("17_1274022878.64768") :method
+.sub "!PREFIX__term" :subid("17_1274564773.54721") :method
.annotate 'line', 13
$P35 = self."!PREFIX__!protoregex"("term")
.return ($P35)
@@ -1178,7 +1178,7 @@
.namespace ["HLL";"Grammar"]
-.sub "infix" :subid("18_1274022878.64768") :method
+.sub "infix" :subid("18_1274564773.54721") :method
.annotate 'line', 14
$P37 = self."!protoregex"("infix")
.return ($P37)
@@ -1186,7 +1186,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix" :subid("19_1274022878.64768") :method
+.sub "!PREFIX__infix" :subid("19_1274564773.54721") :method
.annotate 'line', 14
$P39 = self."!PREFIX__!protoregex"("infix")
.return ($P39)
@@ -1194,7 +1194,7 @@
.namespace ["HLL";"Grammar"]
-.sub "prefix" :subid("20_1274022878.64768") :method
+.sub "prefix" :subid("20_1274564773.54721") :method
.annotate 'line', 15
$P41 = self."!protoregex"("prefix")
.return ($P41)
@@ -1202,7 +1202,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix" :subid("21_1274022878.64768") :method
+.sub "!PREFIX__prefix" :subid("21_1274564773.54721") :method
.annotate 'line', 15
$P43 = self."!PREFIX__!protoregex"("prefix")
.return ($P43)
@@ -1210,7 +1210,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postfix" :subid("22_1274022878.64768") :method
+.sub "postfix" :subid("22_1274564773.54721") :method
.annotate 'line', 16
$P45 = self."!protoregex"("postfix")
.return ($P45)
@@ -1218,7 +1218,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix" :subid("23_1274022878.64768") :method
+.sub "!PREFIX__postfix" :subid("23_1274564773.54721") :method
.annotate 'line', 16
$P47 = self."!PREFIX__!protoregex"("postfix")
.return ($P47)
@@ -1226,7 +1226,7 @@
.namespace ["HLL";"Grammar"]
-.sub "circumfix" :subid("24_1274022878.64768") :method
+.sub "circumfix" :subid("24_1274564773.54721") :method
.annotate 'line', 17
$P49 = self."!protoregex"("circumfix")
.return ($P49)
@@ -1234,7 +1234,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix" :subid("25_1274022878.64768") :method
+.sub "!PREFIX__circumfix" :subid("25_1274564773.54721") :method
.annotate 'line', 17
$P51 = self."!PREFIX__!protoregex"("circumfix")
.return ($P51)
@@ -1242,7 +1242,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postcircumfix" :subid("26_1274022878.64768") :method
+.sub "postcircumfix" :subid("26_1274564773.54721") :method
.annotate 'line', 18
$P53 = self."!protoregex"("postcircumfix")
.return ($P53)
@@ -1250,7 +1250,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix" :subid("27_1274022878.64768") :method
+.sub "!PREFIX__postcircumfix" :subid("27_1274564773.54721") :method
.annotate 'line', 18
$P55 = self."!PREFIX__!protoregex"("postcircumfix")
.return ($P55)
@@ -1258,7 +1258,7 @@
.namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>" :subid("28_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "term:sym<circumfix>" :subid("28_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx57_tgt
.local int rx57_pos
@@ -1316,7 +1316,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>" :subid("29_1274022878.64768") :method
+.sub "!PREFIX__term:sym<circumfix>" :subid("29_1274564773.54721") :method
.annotate 'line', 5
$P59 = self."!PREFIX__!subrule"("circumfix", "")
new $P60, "ResizablePMCArray"
@@ -1326,7 +1326,7 @@
.namespace ["HLL";"Grammar"]
-.sub "infixish" :subid("30_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "infixish" :subid("30_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx63_tgt
.local int rx63_pos
@@ -1384,7 +1384,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish" :subid("31_1274022878.64768") :method
+.sub "!PREFIX__infixish" :subid("31_1274564773.54721") :method
.annotate 'line', 5
$P65 = self."!PREFIX__!subrule"("OPER=infix", "")
new $P66, "ResizablePMCArray"
@@ -1394,7 +1394,7 @@
.namespace ["HLL";"Grammar"]
-.sub "prefixish" :subid("32_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "prefixish" :subid("32_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx69_tgt
.local int rx69_pos
@@ -1457,7 +1457,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish" :subid("33_1274022878.64768") :method
+.sub "!PREFIX__prefixish" :subid("33_1274564773.54721") :method
.annotate 'line', 5
$P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
new $P72, "ResizablePMCArray"
@@ -1467,7 +1467,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postfixish" :subid("34_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "postfixish" :subid("34_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx75_tgt
.local int rx75_pos
@@ -1541,7 +1541,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish" :subid("35_1274022878.64768") :method
+.sub "!PREFIX__postfixish" :subid("35_1274564773.54721") :method
.annotate 'line', 5
$P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
$P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1553,7 +1553,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nullterm" :subid("36_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "nullterm" :subid("36_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx83_tgt
.local int rx83_pos
@@ -1604,7 +1604,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm" :subid("37_1274022878.64768") :method
+.sub "!PREFIX__nullterm" :subid("37_1274564773.54721") :method
.annotate 'line', 5
new $P85, "ResizablePMCArray"
push $P85, ""
@@ -1613,7 +1613,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nullterm_alt" :subid("38_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "nullterm_alt" :subid("38_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 5
.local string rx88_tgt
.local int rx88_pos
@@ -1671,7 +1671,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt" :subid("39_1274022878.64768") :method
+.sub "!PREFIX__nullterm_alt" :subid("39_1274564773.54721") :method
.annotate 'line', 5
$P90 = self."!PREFIX__!subrule"("term", "")
new $P91, "ResizablePMCArray"
@@ -1681,7 +1681,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nulltermish" :subid("40_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "nulltermish" :subid("40_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
new $P95, 'ExceptionHandler'
set_addr $P95, control_94
@@ -1708,7 +1708,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_delimited" :subid("41_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_delimited" :subid("41_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx104_tgt
.local int rx104_pos
@@ -1790,7 +1790,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited" :subid("42_1274022878.64768") :method
+.sub "!PREFIX__quote_delimited" :subid("42_1274564773.54721") :method
.annotate 'line', 33
$P106 = self."!PREFIX__!subrule"("starter", "")
new $P107, "ResizablePMCArray"
@@ -1800,7 +1800,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_atom" :subid("43_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_atom" :subid("43_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx112_tgt
.local int rx112_pos
@@ -1891,7 +1891,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom" :subid("44_1274022878.64768") :method
+.sub "!PREFIX__quote_atom" :subid("44_1274564773.54721") :method
.annotate 'line', 33
new $P114, "ResizablePMCArray"
push $P114, ""
@@ -1900,7 +1900,7 @@
.namespace ["HLL";"Grammar"]
-.sub "decint" :subid("45_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "decint" :subid("45_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx122_tgt
.local int rx122_pos
@@ -1972,7 +1972,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint" :subid("46_1274022878.64768") :method
+.sub "!PREFIX__decint" :subid("46_1274564773.54721") :method
.annotate 'line', 33
new $P124, "ResizablePMCArray"
push $P124, ""
@@ -1981,7 +1981,7 @@
.namespace ["HLL";"Grammar"]
-.sub "decints" :subid("47_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "decints" :subid("47_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx129_tgt
.local int rx129_pos
@@ -2065,7 +2065,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decints" :subid("48_1274022878.64768") :method
+.sub "!PREFIX__decints" :subid("48_1274564773.54721") :method
.annotate 'line', 33
new $P131, "ResizablePMCArray"
push $P131, ""
@@ -2074,7 +2074,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexint" :subid("49_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "hexint" :subid("49_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx136_tgt
.local int rx136_pos
@@ -2155,7 +2155,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint" :subid("50_1274022878.64768") :method
+.sub "!PREFIX__hexint" :subid("50_1274564773.54721") :method
.annotate 'line', 33
new $P138, "ResizablePMCArray"
push $P138, ""
@@ -2164,7 +2164,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexints" :subid("51_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "hexints" :subid("51_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx145_tgt
.local int rx145_pos
@@ -2248,7 +2248,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints" :subid("52_1274022878.64768") :method
+.sub "!PREFIX__hexints" :subid("52_1274564773.54721") :method
.annotate 'line', 33
new $P147, "ResizablePMCArray"
push $P147, ""
@@ -2257,7 +2257,7 @@
.namespace ["HLL";"Grammar"]
-.sub "octint" :subid("53_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "octint" :subid("53_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx152_tgt
.local int rx152_pos
@@ -2338,7 +2338,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint" :subid("54_1274022878.64768") :method
+.sub "!PREFIX__octint" :subid("54_1274564773.54721") :method
.annotate 'line', 33
new $P154, "ResizablePMCArray"
push $P154, ""
@@ -2347,7 +2347,7 @@
.namespace ["HLL";"Grammar"]
-.sub "octints" :subid("55_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "octints" :subid("55_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx161_tgt
.local int rx161_pos
@@ -2431,7 +2431,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints" :subid("56_1274022878.64768") :method
+.sub "!PREFIX__octints" :subid("56_1274564773.54721") :method
.annotate 'line', 33
new $P163, "ResizablePMCArray"
push $P163, ""
@@ -2440,7 +2440,7 @@
.namespace ["HLL";"Grammar"]
-.sub "binint" :subid("57_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "binint" :subid("57_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx168_tgt
.local int rx168_pos
@@ -2521,7 +2521,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint" :subid("58_1274022878.64768") :method
+.sub "!PREFIX__binint" :subid("58_1274564773.54721") :method
.annotate 'line', 33
new $P170, "ResizablePMCArray"
push $P170, ""
@@ -2530,7 +2530,7 @@
.namespace ["HLL";"Grammar"]
-.sub "binints" :subid("59_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "binints" :subid("59_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx177_tgt
.local int rx177_pos
@@ -2614,7 +2614,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints" :subid("60_1274022878.64768") :method
+.sub "!PREFIX__binints" :subid("60_1274564773.54721") :method
.annotate 'line', 33
new $P179, "ResizablePMCArray"
push $P179, ""
@@ -2623,7 +2623,7 @@
.namespace ["HLL";"Grammar"]
-.sub "integer" :subid("61_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "integer" :subid("61_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx184_tgt
.local int rx184_pos
@@ -2771,7 +2771,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer" :subid("62_1274022878.64768") :method
+.sub "!PREFIX__integer" :subid("62_1274564773.54721") :method
.annotate 'line', 33
$P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
$P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2789,7 +2789,7 @@
.namespace ["HLL";"Grammar"]
-.sub "dec_number" :subid("63_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "dec_number" :subid("63_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx196_tgt
.local int rx196_pos
@@ -2968,7 +2968,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number" :subid("64_1274022878.64768") :method
+.sub "!PREFIX__dec_number" :subid("64_1274564773.54721") :method
.annotate 'line', 33
new $P198, "ResizablePMCArray"
push $P198, ""
@@ -2979,7 +2979,7 @@
.namespace ["HLL";"Grammar"]
-.sub "escale" :subid("65_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "escale" :subid("65_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx209_tgt
.local int rx209_pos
@@ -3056,7 +3056,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale" :subid("66_1274022878.64768") :method
+.sub "!PREFIX__escale" :subid("66_1274564773.54721") :method
.annotate 'line', 33
new $P211, "ResizablePMCArray"
push $P211, "e"
@@ -3066,7 +3066,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape" :subid("67_1274022878.64768") :method
+.sub "quote_escape" :subid("67_1274564773.54721") :method
.annotate 'line', 79
$P216 = self."!protoregex"("quote_escape")
.return ($P216)
@@ -3074,7 +3074,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape" :subid("68_1274022878.64768") :method
+.sub "!PREFIX__quote_escape" :subid("68_1274564773.54721") :method
.annotate 'line', 79
$P218 = self."!PREFIX__!protoregex"("quote_escape")
.return ($P218)
@@ -3082,7 +3082,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>" :subid("69_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<backslash>" :subid("69_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx220_tgt
.local int rx220_pos
@@ -3144,7 +3144,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>" :subid("70_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<backslash>" :subid("70_1274564773.54721") :method
.annotate 'line', 33
new $P222, "ResizablePMCArray"
push $P222, "\\\\"
@@ -3153,7 +3153,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>" :subid("71_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<stopper>" :subid("71_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx225_tgt
.local int rx225_pos
@@ -3222,7 +3222,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>" :subid("72_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<stopper>" :subid("72_1274564773.54721") :method
.annotate 'line', 33
new $P227, "ResizablePMCArray"
push $P227, "\\"
@@ -3231,7 +3231,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>" :subid("73_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<bs>" :subid("73_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx230_tgt
.local int rx230_pos
@@ -3293,7 +3293,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>" :subid("74_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<bs>" :subid("74_1274564773.54721") :method
.annotate 'line', 33
new $P232, "ResizablePMCArray"
push $P232, "\\b"
@@ -3302,7 +3302,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>" :subid("75_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<nl>" :subid("75_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx235_tgt
.local int rx235_pos
@@ -3364,7 +3364,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>" :subid("76_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<nl>" :subid("76_1274564773.54721") :method
.annotate 'line', 33
new $P237, "ResizablePMCArray"
push $P237, "\\n"
@@ -3373,7 +3373,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>" :subid("77_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<cr>" :subid("77_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx240_tgt
.local int rx240_pos
@@ -3435,7 +3435,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>" :subid("78_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<cr>" :subid("78_1274564773.54721") :method
.annotate 'line', 33
new $P242, "ResizablePMCArray"
push $P242, "\\r"
@@ -3444,7 +3444,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>" :subid("79_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<tab>" :subid("79_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx245_tgt
.local int rx245_pos
@@ -3506,7 +3506,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>" :subid("80_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<tab>" :subid("80_1274564773.54721") :method
.annotate 'line', 33
new $P247, "ResizablePMCArray"
push $P247, "\\t"
@@ -3515,7 +3515,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<ff>" :subid("81_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<ff>" :subid("81_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx250_tgt
.local int rx250_pos
@@ -3577,7 +3577,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<ff>" :subid("82_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<ff>" :subid("82_1274564773.54721") :method
.annotate 'line', 33
new $P252, "ResizablePMCArray"
push $P252, "\\f"
@@ -3586,7 +3586,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>" :subid("83_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<hex>" :subid("83_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx255_tgt
.local int rx255_pos
@@ -3684,7 +3684,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>" :subid("84_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<hex>" :subid("84_1274564773.54721") :method
.annotate 'line', 33
new $P257, "ResizablePMCArray"
push $P257, unicode:"\\x"
@@ -3693,7 +3693,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>" :subid("85_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<oct>" :subid("85_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx261_tgt
.local int rx261_pos
@@ -3791,7 +3791,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>" :subid("86_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<oct>" :subid("86_1274564773.54721") :method
.annotate 'line', 33
new $P263, "ResizablePMCArray"
push $P263, "\\o"
@@ -3800,7 +3800,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>" :subid("87_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<chr>" :subid("87_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx267_tgt
.local int rx267_pos
@@ -3869,7 +3869,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>" :subid("88_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<chr>" :subid("88_1274564773.54721") :method
.annotate 'line', 33
new $P269, "ResizablePMCArray"
push $P269, "\\c"
@@ -3878,7 +3878,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<0>" :subid("89_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<0>" :subid("89_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx272_tgt
.local int rx272_pos
@@ -3961,7 +3961,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<0>" :subid("90_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<0>" :subid("90_1274564773.54721") :method
.annotate 'line', 33
new $P274, "ResizablePMCArray"
push $P274, "\\0"
@@ -3970,13 +3970,13 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<misc>" :subid("91_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "quote_escape:sym<misc>" :subid("91_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
- .const 'Sub' $P297 = "95_1274022878.64768"
+ .const 'Sub' $P297 = "95_1274564773.54721"
capture_lex $P297
- .const 'Sub' $P290 = "94_1274022878.64768"
+ .const 'Sub' $P290 = "94_1274564773.54721"
capture_lex $P290
- .const 'Sub' $P285 = "93_1274022878.64768"
+ .const 'Sub' $P285 = "93_1274564773.54721"
capture_lex $P285
.local string rx278_tgt
.local int rx278_pos
@@ -4007,13 +4007,13 @@
set_addr $I10, rxscan281_loop
rx278_cur."!mark_push"(0, rx278_pos, $I10)
rxscan281_done:
-.annotate 'line', 98
+.annotate 'line', 99
+ # rx pastnode subtype= negate=
rx278_cur."!cursor_pos"(rx278_pos)
find_lex $P282, unicode:"$\x{a2}"
$P283 = $P282."MATCH"()
store_lex "$/", $P283
-.annotate 'line', 99
- .const 'Sub' $P285 = "93_1274022878.64768"
+ .const 'Sub' $P285 = "93_1274564773.54721"
capture_lex $P285
$P286 = $P285()
# rx literal "\\"
@@ -4039,7 +4039,7 @@
.annotate 'line', 103
# rx subrule $P290 subtype=capture negate=
rx278_cur."!cursor_pos"(rx278_pos)
- .const 'Sub' $P290 = "94_1274022878.64768"
+ .const 'Sub' $P290 = "94_1274564773.54721"
capture_lex $P290
$P10 = rx278_cur.$P290()
unless $P10, rx278_fail
@@ -4069,11 +4069,12 @@
rxcap_293_fail:
goto rx278_fail
rxcap_293_done:
+ # rx pastnode subtype= negate=
rx278_cur."!cursor_pos"(rx278_pos)
find_lex $P294, unicode:"$\x{a2}"
$P295 = $P294."MATCH"()
store_lex "$/", $P295
- .const 'Sub' $P297 = "95_1274022878.64768"
+ .const 'Sub' $P297 = "95_1274564773.54721"
capture_lex $P297
$P307 = $P297()
alt288_end:
@@ -4119,7 +4120,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<misc>" :subid("92_1274022878.64768") :method
+.sub "!PREFIX__quote_escape:sym<misc>" :subid("92_1274564773.54721") :method
.annotate 'line', 33
new $P280, "ResizablePMCArray"
push $P280, ""
@@ -4128,14 +4129,14 @@
.namespace ["HLL";"Grammar"]
-.sub "_block284" :anon :subid("93_1274022878.64768") :outer("91_1274022878.64768")
+.sub "_block284" :anon :subid("93_1274564773.54721") :outer("91_1274564773.54721")
.annotate 'line', 99
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "_block289" :anon :subid("94_1274022878.64768") :method :outer("91_1274022878.64768")
+.sub "_block289" :anon :subid("94_1274564773.54721") :method :outer("91_1274564773.54721")
.annotate 'line', 103
.local string rx291_tgt
.local int rx291_pos
@@ -4190,7 +4191,7 @@
.namespace ["HLL";"Grammar"]
-.sub "_block296" :anon :subid("95_1274022878.64768") :outer("91_1274022878.64768")
+.sub "_block296" :anon :subid("95_1274564773.54721") :outer("91_1274564773.54721")
.annotate 'line', 104
find_lex $P298, "$/"
$P299 = $P298."CURSOR"()
@@ -4213,9 +4214,9 @@
.namespace ["HLL";"Grammar"]
-.sub "charname" :subid("96_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "charname" :subid("96_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
- .const 'Sub' $P319 = "98_1274022878.64768"
+ .const 'Sub' $P319 = "98_1274564773.54721"
capture_lex $P319
.local string rx310_tgt
.local int rx310_pos
@@ -4293,7 +4294,7 @@
.annotate 'line', 113
# rx subrule "before" subtype=zerowidth negate=
rx310_cur."!cursor_pos"(rx310_pos)
- .const 'Sub' $P319 = "98_1274022878.64768"
+ .const 'Sub' $P319 = "98_1274564773.54721"
capture_lex $P319
$P10 = rx310_cur."before"($P319)
unless $P10, rx310_fail
@@ -4318,7 +4319,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname" :subid("97_1274022878.64768") :method
+.sub "!PREFIX__charname" :subid("97_1274564773.54721") :method
.annotate 'line', 33
$P312 = self."!PREFIX__!subrule"("integer", "")
new $P313, "ResizablePMCArray"
@@ -4380,7 +4381,7 @@
.namespace ["HLL";"Grammar"]
-.sub "_block318" :anon :subid("98_1274022878.64768") :method :outer("96_1274022878.64768")
+.sub "_block318" :anon :subid("98_1274564773.54721") :method :outer("96_1274564773.54721")
.annotate 'line', 113
.local string rx320_tgt
.local int rx320_pos
@@ -4440,7 +4441,7 @@
.namespace ["HLL";"Grammar"]
-.sub "charnames" :subid("99_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "charnames" :subid("99_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx323_tgt
.local int rx323_pos
@@ -4524,7 +4525,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames" :subid("100_1274022878.64768") :method
+.sub "!PREFIX__charnames" :subid("100_1274564773.54721") :method
.annotate 'line', 33
new $P325, "ResizablePMCArray"
push $P325, ""
@@ -4533,7 +4534,7 @@
.namespace ["HLL";"Grammar"]
-.sub "charspec" :subid("101_1274022878.64768") :method :outer("11_1274022878.64768")
+.sub "charspec" :subid("101_1274564773.54721") :method :outer("11_1274564773.54721")
.annotate 'line', 33
.local string rx330_tgt
.local int rx330_pos
@@ -4663,7 +4664,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec" :subid("102_1274022878.64768") :method
+.sub "!PREFIX__charspec" :subid("102_1274564773.54721") :method
.annotate 'line', 33
$P332 = self."!PREFIX__!subrule"("", "")
$P333 = self."!PREFIX__!subrule"("charnames", "[")
@@ -4704,18 +4705,18 @@
.namespace ["HLL";"Grammar"]
-.sub "_block339" :load :anon :subid("103_1274022878.64768")
+.sub "_block339" :load :anon :subid("103_1274564773.54721")
.annotate 'line', 5
- .const 'Sub' $P341 = "11_1274022878.64768"
+ .const 'Sub' $P341 = "11_1274564773.54721"
$P342 = $P341()
.return ($P342)
.end
.namespace []
-.sub "_block344" :load :anon :subid("104_1274022878.64768")
+.sub "_block344" :load :anon :subid("104_1274564773.54721")
.annotate 'line', 1
- .const 'Sub' $P346 = "10_1274022878.64768"
+ .const 'Sub' $P346 = "10_1274564773.54721"
$P347 = $P346()
.return ($P347)
.end
@@ -4723,7 +4724,7 @@
### .include 'gen/hllgrammar-actions.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1274022880.65586")
+.sub "_block11" :anon :subid("10_1274564775.02458")
.annotate 'line', 0
get_hll_global $P14, ["HLL";"Actions"], "_block13"
capture_lex $P14
@@ -4733,15 +4734,15 @@
$P575 = $P14()
.annotate 'line', 1
.return ($P575)
- .const 'Sub' $P577 = "50_1274022880.65586"
+ .const 'Sub' $P577 = "50_1274564775.02458"
.return ($P577)
.end
.namespace []
-.sub "" :load :init :subid("post51") :outer("10_1274022880.65586")
+.sub "" :load :init :subid("post51") :outer("10_1274564775.02458")
.annotate 'line', 0
- .const 'Sub' $P12 = "10_1274022880.65586"
+ .const 'Sub' $P12 = "10_1274564775.02458"
.local pmc block
set block, $P12
$P580 = get_root_global ["parrot"], "P6metaclass"
@@ -4750,82 +4751,82 @@
.namespace ["HLL";"Actions"]
-.sub "_block13" :subid("11_1274022880.65586") :outer("10_1274022880.65586")
+.sub "_block13" :subid("11_1274564775.02458") :outer("10_1274564775.02458")
.annotate 'line', 3
- .const 'Sub' $P553 = "48_1274022880.65586"
+ .const 'Sub' $P553 = "48_1274564775.02458"
capture_lex $P553
- .const 'Sub' $P528 = "46_1274022880.65586"
+ .const 'Sub' $P528 = "46_1274564775.02458"
capture_lex $P528
- .const 'Sub' $P498 = "45_1274022880.65586"
+ .const 'Sub' $P498 = "45_1274564775.02458"
capture_lex $P498
- .const 'Sub' $P479 = "44_1274022880.65586"
+ .const 'Sub' $P479 = "44_1274564775.02458"
capture_lex $P479
- .const 'Sub' $P472 = "43_1274022880.65586"
+ .const 'Sub' $P472 = "43_1274564775.02458"
capture_lex $P472
- .const 'Sub' $P462 = "42_1274022880.65586"
+ .const 'Sub' $P462 = "42_1274564775.02458"
capture_lex $P462
- .const 'Sub' $P445 = "41_1274022880.65586"
+ .const 'Sub' $P445 = "41_1274564775.02458"
capture_lex $P445
- .const 'Sub' $P428 = "40_1274022880.65586"
+ .const 'Sub' $P428 = "40_1274564775.02458"
capture_lex $P428
- .const 'Sub' $P421 = "39_1274022880.65586"
+ .const 'Sub' $P421 = "39_1274564775.02458"
capture_lex $P421
- .const 'Sub' $P414 = "38_1274022880.65586"
+ .const 'Sub' $P414 = "38_1274564775.02458"
capture_lex $P414
- .const 'Sub' $P407 = "37_1274022880.65586"
+ .const 'Sub' $P407 = "37_1274564775.02458"
capture_lex $P407
- .const 'Sub' $P400 = "36_1274022880.65586"
+ .const 'Sub' $P400 = "36_1274564775.02458"
capture_lex $P400
- .const 'Sub' $P393 = "35_1274022880.65586"
+ .const 'Sub' $P393 = "35_1274564775.02458"
capture_lex $P393
- .const 'Sub' $P383 = "34_1274022880.65586"
+ .const 'Sub' $P383 = "34_1274564775.02458"
capture_lex $P383
- .const 'Sub' $P376 = "33_1274022880.65586"
+ .const 'Sub' $P376 = "33_1274564775.02458"
capture_lex $P376
- .const 'Sub' $P360 = "32_1274022880.65586"
+ .const 'Sub' $P360 = "32_1274564775.02458"
capture_lex $P360
- .const 'Sub' $P285 = "30_1274022880.65586"
+ .const 'Sub' $P285 = "30_1274564775.02458"
capture_lex $P285
- .const 'Sub' $P222 = "27_1274022880.65586"
+ .const 'Sub' $P222 = "27_1274564775.02458"
capture_lex $P222
- .const 'Sub' $P213 = "26_1274022880.65586"
+ .const 'Sub' $P213 = "26_1274564775.02458"
capture_lex $P213
- .const 'Sub' $P204 = "25_1274022880.65586"
+ .const 'Sub' $P204 = "25_1274564775.02458"
capture_lex $P204
- .const 'Sub' $P195 = "24_1274022880.65586"
+ .const 'Sub' $P195 = "24_1274564775.02458"
capture_lex $P195
- .const 'Sub' $P186 = "23_1274022880.65586"
+ .const 'Sub' $P186 = "23_1274564775.02458"
capture_lex $P186
- .const 'Sub' $P177 = "22_1274022880.65586"
+ .const 'Sub' $P177 = "22_1274564775.02458"
capture_lex $P177
- .const 'Sub' $P167 = "21_1274022880.65586"
+ .const 'Sub' $P167 = "21_1274564775.02458"
capture_lex $P167
- .const 'Sub' $P157 = "20_1274022880.65586"
+ .const 'Sub' $P157 = "20_1274564775.02458"
capture_lex $P157
- .const 'Sub' $P149 = "19_1274022880.65586"
+ .const 'Sub' $P149 = "19_1274564775.02458"
capture_lex $P149
- .const 'Sub' $P139 = "18_1274022880.65586"
+ .const 'Sub' $P139 = "18_1274564775.02458"
capture_lex $P139
- .const 'Sub' $P129 = "17_1274022880.65586"
+ .const 'Sub' $P129 = "17_1274564775.02458"
capture_lex $P129
- .const 'Sub' $P28 = "14_1274022880.65586"
+ .const 'Sub' $P28 = "14_1274564775.02458"
capture_lex $P28
- .const 'Sub' $P22 = "13_1274022880.65586"
+ .const 'Sub' $P22 = "13_1274564775.02458"
capture_lex $P22
- .const 'Sub' $P15 = "12_1274022880.65586"
+ .const 'Sub' $P15 = "12_1274564775.02458"
capture_lex $P15
.annotate 'line', 197
- .const 'Sub' $P553 = "48_1274022880.65586"
+ .const 'Sub' $P553 = "48_1274564775.02458"
newclosure $P570, $P553
.annotate 'line', 3
.return ($P570)
- .const 'Sub' $P572 = "49_1274022880.65586"
+ .const 'Sub' $P572 = "49_1274564775.02458"
.return ($P572)
.end
.namespace ["HLL";"Actions"]
-.sub "string_to_int" :subid("12_1274022880.65586") :outer("11_1274022880.65586")
+.sub "string_to_int" :subid("12_1274564775.02458") :outer("11_1274564775.02458")
.param pmc param_18
.param pmc param_19
.annotate 'line', 3
@@ -4878,7 +4879,7 @@
.namespace ["HLL";"Actions"]
-.sub "ints_to_string" :subid("13_1274022880.65586") :outer("11_1274022880.65586")
+.sub "ints_to_string" :subid("13_1274564775.02458") :outer("11_1274564775.02458")
.param pmc param_25
.annotate 'line', 37
new $P24, 'ExceptionHandler'
@@ -4919,14 +4920,14 @@
.namespace ["HLL";"Actions"]
-.sub "EXPR" :subid("14_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "EXPR" :subid("14_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_31
.param pmc param_32 :optional
.param int has_param_32 :opt_flag
.annotate 'line', 62
- .const 'Sub' $P111 = "16_1274022880.65586"
+ .const 'Sub' $P111 = "16_1274564775.02458"
capture_lex $P111
- .const 'Sub' $P78 = "15_1274022880.65586"
+ .const 'Sub' $P78 = "15_1274564775.02458"
capture_lex $P78
new $P30, 'ExceptionHandler'
set_addr $P30, control_29
@@ -5061,7 +5062,7 @@
find_lex $P75, "$past"
$P76 = $P75."name"()
if $P76, unless_74_end
- .const 'Sub' $P78 = "15_1274022880.65586"
+ .const 'Sub' $P78 = "15_1274564775.02458"
capture_lex $P78
$P78()
unless_74_end:
@@ -5085,7 +5086,7 @@
unless $P105, loop122_done
shift $P109, $P105
loop122_redo:
- .const 'Sub' $P111 = "16_1274022880.65586"
+ .const 'Sub' $P111 = "16_1274564775.02458"
capture_lex $P111
$P111($P109)
loop122_next:
@@ -5130,7 +5131,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block77" :anon :subid("15_1274022880.65586") :outer("14_1274022880.65586")
+.sub "_block77" :anon :subid("15_1274564775.02458") :outer("14_1274564775.02458")
.annotate 'line', 71
new $P79, "Undef"
.lex "$name", $P79
@@ -5180,7 +5181,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block110" :anon :subid("16_1274022880.65586") :outer("14_1274022880.65586")
+.sub "_block110" :anon :subid("16_1274564775.02458") :outer("14_1274564775.02458")
.param pmc param_112
.annotate 'line', 82
.lex "$_", param_112
@@ -5203,7 +5204,7 @@
.namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>" :subid("17_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "term:sym<circumfix>" :subid("17_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_132
.annotate 'line', 87
new $P131, 'ExceptionHandler'
@@ -5233,7 +5234,7 @@
.namespace ["HLL";"Actions"]
-.sub "termish" :subid("18_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "termish" :subid("18_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_142
.annotate 'line', 89
new $P141, 'ExceptionHandler'
@@ -5263,7 +5264,7 @@
.namespace ["HLL";"Actions"]
-.sub "nullterm" :subid("19_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "nullterm" :subid("19_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_152
.annotate 'line', 90
new $P151, 'ExceptionHandler'
@@ -5285,7 +5286,7 @@
.namespace ["HLL";"Actions"]
-.sub "nullterm_alt" :subid("20_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "nullterm_alt" :subid("20_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_160
.annotate 'line', 91
new $P159, 'ExceptionHandler'
@@ -5315,7 +5316,7 @@
.namespace ["HLL";"Actions"]
-.sub "integer" :subid("21_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "integer" :subid("21_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_170
.annotate 'line', 93
new $P169, 'ExceptionHandler'
@@ -5345,7 +5346,7 @@
.namespace ["HLL";"Actions"]
-.sub "dec_number" :subid("22_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "dec_number" :subid("22_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_180
.annotate 'line', 95
new $P179, 'ExceptionHandler'
@@ -5368,7 +5369,7 @@
.namespace ["HLL";"Actions"]
-.sub "decint" :subid("23_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "decint" :subid("23_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_189
.annotate 'line', 97
new $P188, 'ExceptionHandler'
@@ -5391,7 +5392,7 @@
.namespace ["HLL";"Actions"]
-.sub "hexint" :subid("24_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "hexint" :subid("24_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_198
.annotate 'line', 98
new $P197, 'ExceptionHandler'
@@ -5414,7 +5415,7 @@
.namespace ["HLL";"Actions"]
-.sub "octint" :subid("25_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "octint" :subid("25_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_207
.annotate 'line', 99
new $P206, 'ExceptionHandler'
@@ -5437,7 +5438,7 @@
.namespace ["HLL";"Actions"]
-.sub "binint" :subid("26_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "binint" :subid("26_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_216
.annotate 'line', 100
new $P215, 'ExceptionHandler'
@@ -5460,10 +5461,10 @@
.namespace ["HLL";"Actions"]
-.sub "quote_EXPR" :subid("27_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_EXPR" :subid("27_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_225
.annotate 'line', 102
- .const 'Sub' $P241 = "28_1274022880.65586"
+ .const 'Sub' $P241 = "28_1274564775.02458"
capture_lex $P241
new $P224, 'ExceptionHandler'
set_addr $P224, control_223
@@ -5495,7 +5496,7 @@
$P237 = $P235."ACCEPTS"($P236)
if $P237, if_234
.annotate 'line', 108
- .const 'Sub' $P241 = "28_1274022880.65586"
+ .const 'Sub' $P241 = "28_1274564775.02458"
capture_lex $P241
$P241()
goto if_234_end
@@ -5534,9 +5535,9 @@
.namespace ["HLL";"Actions"]
-.sub "_block240" :anon :subid("28_1274022880.65586") :outer("27_1274022880.65586")
+.sub "_block240" :anon :subid("28_1274564775.02458") :outer("27_1274564775.02458")
.annotate 'line', 108
- .const 'Sub' $P260 = "29_1274022880.65586"
+ .const 'Sub' $P260 = "29_1274564775.02458"
capture_lex $P260
.annotate 'line', 109
$P242 = root_new ['parrot';'ResizablePMCArray']
@@ -5587,7 +5588,7 @@
unless $P255, loop265_done
shift $P258, $P255
loop265_redo:
- .const 'Sub' $P260 = "29_1274022880.65586"
+ .const 'Sub' $P260 = "29_1274564775.02458"
capture_lex $P260
$P260($P258)
loop265_next:
@@ -5610,7 +5611,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block259" :anon :subid("29_1274022880.65586") :outer("28_1274022880.65586")
+.sub "_block259" :anon :subid("29_1274564775.02458") :outer("28_1274564775.02458")
.param pmc param_261
.annotate 'line', 112
.lex "$_", param_261
@@ -5622,10 +5623,10 @@
.namespace ["HLL";"Actions"]
-.sub "quote_delimited" :subid("30_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_delimited" :subid("30_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_288
.annotate 'line', 125
- .const 'Sub' $P300 = "31_1274022880.65586"
+ .const 'Sub' $P300 = "31_1274564775.02458"
capture_lex $P300
new $P287, 'ExceptionHandler'
set_addr $P287, control_286
@@ -5668,7 +5669,7 @@
unless $P294, loop332_done
shift $P298, $P294
loop332_redo:
- .const 'Sub' $P300 = "31_1274022880.65586"
+ .const 'Sub' $P300 = "31_1274564775.02458"
capture_lex $P300
$P300($P298)
loop332_next:
@@ -5746,7 +5747,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block299" :anon :subid("31_1274022880.65586") :outer("30_1274022880.65586")
+.sub "_block299" :anon :subid("31_1274564775.02458") :outer("30_1274564775.02458")
.param pmc param_302
.annotate 'line', 129
new $P301, "Undef"
@@ -5815,7 +5816,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_atom" :subid("32_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_atom" :subid("32_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_363
.annotate 'line', 150
new $P362, 'ExceptionHandler'
@@ -5864,7 +5865,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>" :subid("33_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<backslash>" :subid("33_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_379
.annotate 'line', 154
new $P378, 'ExceptionHandler'
@@ -5885,7 +5886,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>" :subid("34_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<stopper>" :subid("34_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_386
.annotate 'line', 155
new $P385, 'ExceptionHandler'
@@ -5915,7 +5916,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>" :subid("35_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<bs>" :subid("35_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_396
.annotate 'line', 157
new $P395, 'ExceptionHandler'
@@ -5936,7 +5937,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>" :subid("36_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<nl>" :subid("36_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_403
.annotate 'line', 158
new $P402, 'ExceptionHandler'
@@ -5957,7 +5958,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>" :subid("37_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<cr>" :subid("37_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_410
.annotate 'line', 159
new $P409, 'ExceptionHandler'
@@ -5978,7 +5979,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>" :subid("38_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<tab>" :subid("38_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_417
.annotate 'line', 160
new $P416, 'ExceptionHandler'
@@ -5999,7 +6000,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<ff>" :subid("39_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<ff>" :subid("39_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_424
.annotate 'line', 161
new $P423, 'ExceptionHandler'
@@ -6020,7 +6021,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>" :subid("40_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<hex>" :subid("40_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_431
.annotate 'line', 163
new $P430, 'ExceptionHandler'
@@ -6078,7 +6079,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>" :subid("41_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<oct>" :subid("41_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_448
.annotate 'line', 167
new $P447, 'ExceptionHandler'
@@ -6136,7 +6137,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<chr>" :subid("42_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<chr>" :subid("42_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_465
.annotate 'line', 171
new $P464, 'ExceptionHandler'
@@ -6168,7 +6169,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<0>" :subid("43_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<0>" :subid("43_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_475
.annotate 'line', 175
new $P474, 'ExceptionHandler'
@@ -6191,7 +6192,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<misc>" :subid("44_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "quote_escape:sym<misc>" :subid("44_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_482
.annotate 'line', 179
new $P481, 'ExceptionHandler'
@@ -6249,7 +6250,7 @@
.namespace ["HLL";"Actions"]
-.sub "charname" :subid("45_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "charname" :subid("45_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_501
.annotate 'line', 183
new $P500, 'ExceptionHandler'
@@ -6322,10 +6323,10 @@
.namespace ["HLL";"Actions"]
-.sub "charnames" :subid("46_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "charnames" :subid("46_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_531
.annotate 'line', 191
- .const 'Sub' $P540 = "47_1274022880.65586"
+ .const 'Sub' $P540 = "47_1274564775.02458"
capture_lex $P540
new $P530, 'ExceptionHandler'
set_addr $P530, control_529
@@ -6359,7 +6360,7 @@
unless $P534, loop546_done
shift $P538, $P534
loop546_redo:
- .const 'Sub' $P540 = "47_1274022880.65586"
+ .const 'Sub' $P540 = "47_1274564775.02458"
capture_lex $P540
$P540($P538)
loop546_next:
@@ -6388,7 +6389,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block539" :anon :subid("47_1274022880.65586") :outer("46_1274022880.65586")
+.sub "_block539" :anon :subid("47_1274564775.02458") :outer("46_1274564775.02458")
.param pmc param_541
.annotate 'line', 193
.lex "$_", param_541
@@ -6402,7 +6403,7 @@
.namespace ["HLL";"Actions"]
-.sub "charspec" :subid("48_1274022880.65586") :method :outer("11_1274022880.65586")
+.sub "charspec" :subid("48_1274564775.02458") :method :outer("11_1274564775.02458")
.param pmc param_556
.annotate 'line', 197
new $P555, 'ExceptionHandler'
@@ -6452,18 +6453,18 @@
.namespace ["HLL";"Actions"]
-.sub "_block571" :load :anon :subid("49_1274022880.65586")
+.sub "_block571" :load :anon :subid("49_1274564775.02458")
.annotate 'line', 3
- .const 'Sub' $P573 = "11_1274022880.65586"
+ .const 'Sub' $P573 = "11_1274564775.02458"
$P574 = $P573()
.return ($P574)
.end
.namespace []
-.sub "_block576" :load :anon :subid("50_1274022880.65586")
+.sub "_block576" :load :anon :subid("50_1274564775.02458")
.annotate 'line', 1
- .const 'Sub' $P578 = "10_1274022880.65586"
+ .const 'Sub' $P578 = "10_1274564775.02458"
$P579 = $P578()
.return ($P579)
.end
@@ -6471,80 +6472,86 @@
### .include 'gen/hllcompiler.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1274022881.57388")
+.sub "_block11" :anon :subid("10_1274564776.02218")
.annotate 'line', 0
get_hll_global $P14, ["HLL";"Compiler"], "_block13"
capture_lex $P14
.annotate 'line', 6
get_hll_global $P14, ["HLL";"Compiler"], "_block13"
capture_lex $P14
- $P285 = $P14()
+ $P454 = $P14()
.annotate 'line', 1
- .return ($P285)
- .const 'Sub' $P287 = "25_1274022881.57388"
- .return ($P287)
+ .return ($P454)
+ .const 'Sub' $P456 = "33_1274564776.02218"
+ .return ($P456)
.end
.namespace []
-.sub "" :load :init :subid("post26") :outer("10_1274022881.57388")
+.sub "" :load :init :subid("post34") :outer("10_1274564776.02218")
.annotate 'line', 0
- .const 'Sub' $P12 = "10_1274022881.57388"
+ .const 'Sub' $P12 = "10_1274564776.02218"
.local pmc block
set block, $P12
.annotate 'line', 2
load_bytecode "PCT/HLLCompiler.pbc"
.annotate 'line', 1
- $P290 = get_root_global ["parrot"], "P6metaclass"
- new $P291, "ResizablePMCArray"
- push $P291, "$!language"
- $P290."new_class"("HLL::Compiler", "PCT::HLLCompiler" :named("parent"), $P291 :named("attr"))
+ $P459 = get_root_global ["parrot"], "P6metaclass"
+ new $P460, "ResizablePMCArray"
+ push $P460, "$!language"
+ $P459."new_class"("HLL::Compiler", "PCT::HLLCompiler" :named("parent"), $P460 :named("attr"))
.end
.namespace ["HLL";"Compiler"]
-.sub "_block13" :subid("11_1274022881.57388") :outer("10_1274022881.57388")
+.sub "_block13" :subid("11_1274564776.02218") :outer("10_1274564776.02218")
.annotate 'line', 6
- .const 'Sub' $P188 = "20_1274022881.57388"
+ .const 'Sub' $P409 = "31_1274564776.02218"
+ capture_lex $P409
+ .const 'Sub' $P298 = "26_1274564776.02218"
+ capture_lex $P298
+ .const 'Sub' $P283 = "25_1274564776.02218"
+ capture_lex $P283
+ .const 'Sub' $P188 = "20_1274564776.02218"
capture_lex $P188
- .const 'Sub' $P153 = "18_1274022881.57388"
+ .const 'Sub' $P153 = "18_1274564776.02218"
capture_lex $P153
- .const 'Sub' $P138 = "17_1274022881.57388"
+ .const 'Sub' $P138 = "17_1274564776.02218"
capture_lex $P138
- .const 'Sub' $P122 = "16_1274022881.57388"
+ .const 'Sub' $P122 = "16_1274564776.02218"
capture_lex $P122
- .const 'Sub' $P33 = "13_1274022881.57388"
+ .const 'Sub' $P33 = "13_1274564776.02218"
capture_lex $P33
- .const 'Sub' $P15 = "12_1274022881.57388"
+ .const 'Sub' $P15 = "12_1274564776.02218"
capture_lex $P15
.annotate 'line', 14
- .const 'Sub' $P15 = "12_1274022881.57388"
+ .const 'Sub' $P15 = "12_1274564776.02218"
newclosure $P31, $P15
.lex "value_type", $P31
.annotate 'line', 10
find_lex $P32, "value_type"
-.annotate 'line', 69
- .const 'Sub' $P188 = "20_1274022881.57388"
- newclosure $P283, $P188
+.annotate 'line', 135
+ .const 'Sub' $P409 = "31_1274564776.02218"
+ newclosure $P452, $P409
.annotate 'line', 6
- .return ($P283)
+ .return ($P452)
.end
.namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post27") :outer("11_1274022881.57388")
+.sub "" :load :init :subid("post35") :outer("11_1274564776.02218")
.annotate 'line', 6
get_hll_global $P14, ["HLL";"Compiler"], "_block13"
.local pmc block
set block, $P14
.annotate 'line', 11
- get_hll_global $P284, ["HLL"], "Compiler"
- $P284."language"("parrot")
+ get_hll_global $P453, ["HLL"], "Compiler"
+ $P453."language"("parrot")
.end
.namespace ["HLL";"Compiler"]
-.sub "value_type" :subid("12_1274022881.57388") :outer("11_1274022881.57388")
+.sub "value_type" :subid("12_1274564776.02218") :outer("11_1274564776.02218")
.param pmc param_18
.annotate 'line', 14
new $P17, 'ExceptionHandler'
@@ -6588,15 +6595,15 @@
.namespace ["HLL";"Compiler"]
-.sub "get_exports" :subid("13_1274022881.57388") :method :outer("11_1274022881.57388")
+.sub "get_exports" :subid("13_1274564776.02218") :method :outer("11_1274564776.02218")
.param pmc param_36
.param pmc param_39 :slurpy
.param pmc param_37 :optional :named("tagset")
.param int has_param_37 :opt_flag
.annotate 'line', 20
- .const 'Sub' $P105 = "15_1274022881.57388"
+ .const 'Sub' $P105 = "15_1274564776.02218"
capture_lex $P105
- .const 'Sub' $P84 = "14_1274022881.57388"
+ .const 'Sub' $P84 = "14_1274564776.02218"
capture_lex $P84
new $P35, 'ExceptionHandler'
set_addr $P35, control_34
@@ -6604,10 +6611,10 @@
push_eh $P35
.lex "self", self
.lex "$module", param_36
- if has_param_37, optparam_28
+ if has_param_37, optparam_36
new $P38, "Undef"
set param_37, $P38
- optparam_28:
+ optparam_36:
.lex "$tagset", param_37
.lex "@symbols", param_39
.annotate 'line', 27
@@ -6653,17 +6660,17 @@
find_lex $P60, "$tagset"
set $S61, $P60
find_lex $P62, "$module"
- unless_null $P62, vivify_29
+ unless_null $P62, vivify_37
$P62 = root_new ['parrot';'Hash']
- vivify_29:
+ vivify_37:
set $P63, $P62["EXPORT"]
- unless_null $P63, vivify_30
+ unless_null $P63, vivify_38
$P63 = root_new ['parrot';'Hash']
- vivify_30:
+ vivify_38:
set $P64, $P63[$S61]
- unless_null $P64, vivify_31
+ unless_null $P64, vivify_39
new $P64, "Undef"
- vivify_31:
+ vivify_39:
store_lex "%source", $P64
.annotate 'line', 29
find_lex $P66, "%source"
@@ -6692,7 +6699,7 @@
.annotate 'line', 39
find_lex $P101, "%source"
defined $I102, $P101
- unless $I102, for_undef_32
+ unless $I102, for_undef_40
iter $P100, $P101
new $P118, 'ExceptionHandler'
set_addr $P118, loop117_handler
@@ -6702,7 +6709,7 @@
unless $P100, loop117_done
shift $P103, $P100
loop117_redo:
- .const 'Sub' $P105 = "15_1274022881.57388"
+ .const 'Sub' $P105 = "15_1274564776.02218"
capture_lex $P105
$P105($P103)
loop117_next:
@@ -6715,14 +6722,14 @@
eq $P119, 66, loop117_redo
loop117_done:
pop_eh
- for_undef_32:
+ for_undef_40:
.annotate 'line', 38
goto if_77_end
if_77:
.annotate 'line', 33
find_lex $P80, "@symbols"
defined $I81, $P80
- unless $I81, for_undef_35
+ unless $I81, for_undef_43
iter $P79, $P80
new $P98, 'ExceptionHandler'
set_addr $P98, loop97_handler
@@ -6732,7 +6739,7 @@
unless $P79, loop97_done
shift $P82, $P79
loop97_redo:
- .const 'Sub' $P84 = "14_1274022881.57388"
+ .const 'Sub' $P84 = "14_1274564776.02218"
capture_lex $P84
$P84($P82)
loop97_next:
@@ -6745,7 +6752,7 @@
eq $P99, 66, loop97_redo
loop97_done:
pop_eh
- for_undef_35:
+ for_undef_43:
if_77_end:
.annotate 'line', 32
find_lex $P120, "%exports"
@@ -6760,7 +6767,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block104" :anon :subid("15_1274022881.57388") :outer("13_1274022881.57388")
+.sub "_block104" :anon :subid("15_1274564776.02218") :outer("13_1274564776.02218")
.param pmc param_107
.annotate 'line', 40
new $P106, "Undef"
@@ -6776,15 +6783,15 @@
find_lex $P113, "$value"
$P114 = "value_type"($P113)
find_lex $P115, "%exports"
- unless_null $P115, vivify_33
+ unless_null $P115, vivify_41
$P115 = root_new ['parrot';'Hash']
store_lex "%exports", $P115
- vivify_33:
+ vivify_41:
set $P116, $P115[$P114]
- unless_null $P116, vivify_34
+ unless_null $P116, vivify_42
$P116 = root_new ['parrot';'Hash']
set $P115[$P114], $P116
- vivify_34:
+ vivify_42:
set $P116[$P112], $P110
.annotate 'line', 39
.return ($P110)
@@ -6792,7 +6799,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block83" :anon :subid("14_1274022881.57388") :outer("13_1274022881.57388")
+.sub "_block83" :anon :subid("14_1274564776.02218") :outer("13_1274564776.02218")
.param pmc param_86
.annotate 'line', 34
new $P85, "Undef"
@@ -6801,13 +6808,13 @@
find_lex $P87, "$_"
set $S88, $P87
find_lex $P89, "%source"
- unless_null $P89, vivify_36
+ unless_null $P89, vivify_44
$P89 = root_new ['parrot';'Hash']
- vivify_36:
+ vivify_44:
set $P90, $P89[$S88]
- unless_null $P90, vivify_37
+ unless_null $P90, vivify_45
new $P90, "Undef"
- vivify_37:
+ vivify_45:
store_lex "$value", $P90
.annotate 'line', 35
find_lex $P91, "$value"
@@ -6815,15 +6822,15 @@
find_lex $P93, "$value"
$P94 = "value_type"($P93)
find_lex $P95, "%exports"
- unless_null $P95, vivify_38
+ unless_null $P95, vivify_46
$P95 = root_new ['parrot';'Hash']
store_lex "%exports", $P95
- vivify_38:
+ vivify_46:
set $P96, $P95[$P94]
- unless_null $P96, vivify_39
+ unless_null $P96, vivify_47
$P96 = root_new ['parrot';'Hash']
set $P95[$P94], $P96
- vivify_39:
+ vivify_47:
set $P96[$P92], $P91
.annotate 'line', 33
.return ($P91)
@@ -6831,7 +6838,7 @@
.namespace ["HLL";"Compiler"]
-.sub "get_module" :subid("16_1274022881.57388") :method :outer("11_1274022881.57388")
+.sub "get_module" :subid("16_1274564776.02218") :method :outer("11_1274564776.02218")
.param pmc param_125
.annotate 'line', 47
new $P124, 'ExceptionHandler'
@@ -6851,9 +6858,9 @@
find_lex $P130, "@name"
find_lex $P131, "self"
getattribute $P132, $P131, "$!language"
- unless_null $P132, vivify_40
+ unless_null $P132, vivify_48
new $P132, "Undef"
- vivify_40:
+ vivify_48:
set $S133, $P132
downcase $S134, $S133
$P130."unshift"($S134)
@@ -6871,7 +6878,7 @@
.namespace ["HLL";"Compiler"]
-.sub "language" :subid("17_1274022881.57388") :method :outer("11_1274022881.57388")
+.sub "language" :subid("17_1274564776.02218") :method :outer("11_1274564776.02218")
.param pmc param_141 :optional
.param int has_param_141 :opt_flag
.annotate 'line', 53
@@ -6880,10 +6887,10 @@
$P140."handle_types"(57)
push_eh $P140
.lex "self", self
- if has_param_141, optparam_41
+ if has_param_141, optparam_49
new $P142, "Undef"
set param_141, $P142
- optparam_41:
+ optparam_49:
.lex "$name", param_141
.annotate 'line', 54
find_lex $P144, "$name"
@@ -6901,9 +6908,9 @@
.annotate 'line', 54
find_lex $P150, "self"
getattribute $P151, $P150, "$!language"
- unless_null $P151, vivify_42
+ unless_null $P151, vivify_50
new $P151, "Undef"
- vivify_42:
+ vivify_50:
.annotate 'line', 53
.return ($P151)
control_139:
@@ -6915,10 +6922,10 @@
.namespace ["HLL";"Compiler"]
-.sub "load_module" :subid("18_1274022881.57388") :method :outer("11_1274022881.57388")
+.sub "load_module" :subid("18_1274564776.02218") :method :outer("11_1274564776.02218")
.param pmc param_156
.annotate 'line', 61
- .const 'Sub' $P166 = "19_1274022881.57388"
+ .const 'Sub' $P166 = "19_1274564776.02218"
capture_lex $P166
new $P155, 'ExceptionHandler'
set_addr $P155, control_154
@@ -6945,7 +6952,7 @@
assign $P164, 0
store_lex "$loaded", $P164
.annotate 'line', 64
- .const 'Sub' $P166 = "19_1274022881.57388"
+ .const 'Sub' $P166 = "19_1274564776.02218"
capture_lex $P166
$P166()
.annotate 'line', 65
@@ -6974,7 +6981,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block165" :anon :subid("19_1274022881.57388") :outer("18_1274022881.57388")
+.sub "_block165" :anon :subid("19_1274564776.02218") :outer("18_1274564776.02218")
.annotate 'line', 64
new $P173, 'ExceptionHandler'
set_addr $P173, control_172
@@ -7007,11 +7014,11 @@
.namespace ["HLL";"Compiler"]
-.sub "import" :subid("20_1274022881.57388") :method :outer("11_1274022881.57388")
+.sub "import" :subid("20_1274564776.02218") :method :outer("11_1274564776.02218")
.param pmc param_191
.param pmc param_192
.annotate 'line', 69
- .const 'Sub' $P198 = "21_1274022881.57388"
+ .const 'Sub' $P198 = "21_1274564776.02218"
capture_lex $P198
new $P190, 'ExceptionHandler'
set_addr $P190, control_189
@@ -7023,7 +7030,7 @@
.annotate 'line', 70
find_lex $P194, "%exports"
defined $I195, $P194
- unless $I195, for_undef_43
+ unless $I195, for_undef_51
iter $P193, $P194
new $P280, 'ExceptionHandler'
set_addr $P280, loop279_handler
@@ -7033,7 +7040,7 @@
unless $P193, loop279_done
shift $P196, $P193
loop279_redo:
- .const 'Sub' $P198 = "21_1274022881.57388"
+ .const 'Sub' $P198 = "21_1274564776.02218"
capture_lex $P198
$P198($P196)
loop279_next:
@@ -7046,7 +7053,7 @@
eq $P281, 66, loop279_redo
loop279_done:
pop_eh
- for_undef_43:
+ for_undef_51:
.annotate 'line', 69
.return ($P193)
control_189:
@@ -7058,14 +7065,14 @@
.namespace ["HLL";"Compiler"]
-.sub "_block197" :anon :subid("21_1274022881.57388") :outer("20_1274022881.57388")
+.sub "_block197" :anon :subid("21_1274564776.02218") :outer("20_1274564776.02218")
.param pmc param_201
.annotate 'line', 70
- .const 'Sub' $P268 = "24_1274022881.57388"
+ .const 'Sub' $P268 = "24_1274564776.02218"
capture_lex $P268
- .const 'Sub' $P248 = "23_1274022881.57388"
+ .const 'Sub' $P248 = "23_1274564776.02218"
capture_lex $P248
- .const 'Sub' $P219 = "22_1274022881.57388"
+ .const 'Sub' $P219 = "22_1274564776.02218"
capture_lex $P219
.annotate 'line', 71
new $P199, "Undef"
@@ -7103,7 +7110,7 @@
.annotate 'line', 80
find_lex $P264, "%items"
defined $I265, $P264
- unless $I265, for_undef_44
+ unless $I265, for_undef_52
iter $P263, $P264
new $P277, 'ExceptionHandler'
set_addr $P277, loop276_handler
@@ -7113,7 +7120,7 @@
unless $P263, loop276_done
shift $P266, $P263
loop276_redo:
- .const 'Sub' $P268 = "24_1274022881.57388"
+ .const 'Sub' $P268 = "24_1274564776.02218"
capture_lex $P268
$P268($P266)
loop276_next:
@@ -7126,7 +7133,7 @@
eq $P278, 66, loop276_redo
loop276_done:
pop_eh
- for_undef_44:
+ for_undef_52:
.annotate 'line', 79
set $P235, $P263
.annotate 'line', 76
@@ -7135,7 +7142,7 @@
.annotate 'line', 77
find_lex $P244, "%items"
defined $I245, $P244
- unless $I245, for_undef_46
+ unless $I245, for_undef_54
iter $P243, $P244
new $P261, 'ExceptionHandler'
set_addr $P261, loop260_handler
@@ -7145,7 +7152,7 @@
unless $P243, loop260_done
shift $P246, $P243
loop260_redo:
- .const 'Sub' $P248 = "23_1274022881.57388"
+ .const 'Sub' $P248 = "23_1274564776.02218"
capture_lex $P248
$P248($P246)
loop260_next:
@@ -7158,7 +7165,7 @@
eq $P262, 66, loop260_redo
loop260_done:
pop_eh
- for_undef_46:
+ for_undef_54:
.annotate 'line', 76
set $P235, $P243
if_236_end:
@@ -7169,7 +7176,7 @@
.annotate 'line', 74
find_lex $P215, "%items"
defined $I216, $P215
- unless $I216, for_undef_47
+ unless $I216, for_undef_55
iter $P214, $P215
new $P233, 'ExceptionHandler'
set_addr $P233, loop232_handler
@@ -7179,7 +7186,7 @@
unless $P214, loop232_done
shift $P217, $P214
loop232_redo:
- .const 'Sub' $P219 = "22_1274022881.57388"
+ .const 'Sub' $P219 = "22_1274564776.02218"
capture_lex $P219
$P219($P217)
loop232_next:
@@ -7192,7 +7199,7 @@
eq $P234, 66, loop232_redo
loop232_done:
pop_eh
- for_undef_47:
+ for_undef_55:
.annotate 'line', 73
set $P206, $P214
if_207_end:
@@ -7202,7 +7209,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block267" :anon :subid("24_1274022881.57388") :outer("21_1274022881.57388")
+.sub "_block267" :anon :subid("24_1274564776.02218") :outer("21_1274564776.02218")
.param pmc param_269
.annotate 'line', 80
.lex "$_", param_269
@@ -7212,17 +7219,17 @@
$P273 = $P272."key"()
set $S274, $P273
find_lex $P275, "$target"
- unless_null $P275, vivify_45
+ unless_null $P275, vivify_53
$P275 = root_new ['parrot';'Hash']
store_lex "$target", $P275
- vivify_45:
+ vivify_53:
set $P275[$S274], $P271
.return ($P271)
.end
.namespace ["HLL";"Compiler"]
-.sub "_block247" :anon :subid("23_1274022881.57388") :outer("21_1274022881.57388")
+.sub "_block247" :anon :subid("23_1274564776.02218") :outer("21_1274564776.02218")
.param pmc param_249
.annotate 'line', 77
.lex "$_", param_249
@@ -7242,7 +7249,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block218" :anon :subid("22_1274022881.57388") :outer("21_1274022881.57388")
+.sub "_block218" :anon :subid("22_1274564776.02218") :outer("21_1274564776.02218")
.param pmc param_220
.annotate 'line', 74
.lex "$_", param_220
@@ -7262,12 +7269,488 @@
.end
+.namespace ["HLL";"Compiler"]
+.sub "autoprint" :subid("25_1274564776.02218") :method :outer("11_1274564776.02218")
+ .param pmc param_286
+.annotate 'line', 85
+ new $P285, 'ExceptionHandler'
+ set_addr $P285, control_284
+ $P285."handle_types"(57)
+ push_eh $P285
+ .lex "self", self
+ .lex "$value", param_286
+.annotate 'line', 87
+ getstdout $P289
+ tell $I290, $P289
+ set $N291, $I290
+ find_dynamic_lex $P292, "$*AUTOPRINTPOS"
+ unless_null $P292, vivify_56
+ get_hll_global $P292, "$AUTOPRINTPOS"
+ unless_null $P292, vivify_57
+ die "Contextual $*AUTOPRINTPOS not found"
+ vivify_57:
+ vivify_56:
+ set $N293, $P292
+ isgt $I294, $N291, $N293
+ unless $I294, unless_288
+ new $P287, 'Integer'
+ set $P287, $I294
+ goto unless_288_end
+ unless_288:
+.annotate 'line', 86
+ find_lex $P295, "$value"
+ set $S296, $P295
+ say $S296
+ unless_288_end:
+.annotate 'line', 85
+ .return ($P287)
+ control_284:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P297, exception, "payload"
+ .return ($P297)
+.end
+
+
+.namespace ["HLL";"Compiler"]
+.sub "interactive" :subid("26_1274564776.02218") :method :outer("11_1274564776.02218")
+ .param pmc param_301 :slurpy :named
+.annotate 'line', 90
+ .const 'Sub' $P328 = "27_1274564776.02218"
+ capture_lex $P328
+ new $P300, 'ExceptionHandler'
+ set_addr $P300, control_299
+ $P300."handle_types"(57)
+ push_eh $P300
+ .lex "self", self
+ .lex "%adverbs", param_301
+.annotate 'line', 91
+ new $P302, "Undef"
+ .lex "$target", $P302
+.annotate 'line', 95
+ new $P303, "Undef"
+ .lex "$stdin", $P303
+.annotate 'line', 96
+ new $P304, "Undef"
+ .lex "$encoding", $P304
+.annotate 'line', 91
+ find_lex $P305, "%adverbs"
+ unless_null $P305, vivify_58
+ $P305 = root_new ['parrot';'Hash']
+ vivify_58:
+ set $P306, $P305["target"]
+ unless_null $P306, vivify_59
+ new $P306, "Undef"
+ vivify_59:
+ set $S307, $P306
+ downcase $S308, $S307
+ new $P309, 'String'
+ set $P309, $S308
+ store_lex "$target", $P309
+.annotate 'line', 93
+ find_lex $P310, "self"
+ $S311 = $P310."commandline_banner"()
+ printerr $S311
+.annotate 'line', 95
+ getstdin $P312
+ store_lex "$stdin", $P312
+.annotate 'line', 96
+ find_lex $P313, "%adverbs"
+ unless_null $P313, vivify_60
+ $P313 = root_new ['parrot';'Hash']
+ vivify_60:
+ set $P314, $P313["encoding"]
+ unless_null $P314, vivify_61
+ new $P314, "Undef"
+ vivify_61:
+ set $S315, $P314
+ new $P316, 'String'
+ set $P316, $S315
+ store_lex "$encoding", $P316
+.annotate 'line', 97
+ find_lex $P320, "$encoding"
+ if $P320, if_319
+ set $P318, $P320
+ goto if_319_end
+ if_319:
+ find_lex $P321, "$encoding"
+ set $S322, $P321
+ isne $I323, $S322, "fixed_8"
+ new $P318, 'Integer'
+ set $P318, $I323
+ if_319_end:
+ unless $P318, if_317_end
+.annotate 'line', 98
+ find_lex $P324, "$stdin"
+ find_lex $P325, "$encoding"
+ $P324."encoding"($P325)
+ if_317_end:
+.annotate 'line', 101
+ new $P406, 'ExceptionHandler'
+ set_addr $P406, loop405_handler
+ $P406."handle_types"(64, 66, 65)
+ push_eh $P406
+ loop405_test:
+ new $P326, "Integer"
+ assign $P326, 1
+ unless $P326, loop405_done
+ loop405_redo:
+ .const 'Sub' $P328 = "27_1274564776.02218"
+ capture_lex $P328
+ $P328()
+ loop405_next:
+ goto loop405_test
+ loop405_handler:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P407, exception, 'type'
+ eq $P407, 64, loop405_next
+ eq $P407, 66, loop405_redo
+ loop405_done:
+ pop_eh
+.annotate 'line', 90
+ .return ($P326)
+ control_299:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P408, exception, "payload"
+ .return ($P408)
+.end
+
+
+.namespace ["HLL";"Compiler"]
+.sub "_block327" :anon :subid("27_1274564776.02218") :outer("26_1274564776.02218")
+.annotate 'line', 101
+ .const 'Sub' $P356 = "28_1274564776.02218"
+ capture_lex $P356
+.annotate 'line', 104
+ new $P329, "Undef"
+ .lex "$prompt", $P329
+.annotate 'line', 105
+ new $P330, "Undef"
+ .lex "$code", $P330
+.annotate 'line', 110
+ new $P331, "Undef"
+ .lex "$*AUTOPRINTPOS", $P331
+.annotate 'line', 102
+ find_lex $P333, "$stdin"
+ if $P333, unless_332_end
+.include "except_types.pasm"
+ $P334 = new "Exception"
+ $P334["type"] = .CONTROL_LOOP_LAST
+ throw $P334
+ unless_332_end:
+.annotate 'line', 104
+ find_lex $P336, "self"
+ $P337 = $P336."commandline_prompt"()
+ set $P335, $P337
+ defined $I339, $P335
+ if $I339, default_338
+ new $P340, "String"
+ assign $P340, "> "
+ set $P335, $P340
+ default_338:
+ store_lex "$prompt", $P335
+.annotate 'line', 105
+ find_lex $P341, "$stdin"
+ find_lex $P342, "$prompt"
+ set $S343, $P342
+ $P344 = $P341."readline_interactive"($S343)
+ store_lex "$code", $P344
+.annotate 'line', 107
+ find_lex $P346, "$code"
+ isnull $I347, $P346
+ unless $I347, if_345_end
+.include "except_types.pasm"
+ $P348 = new "Exception"
+ $P348["type"] = .CONTROL_LOOP_LAST
+ throw $P348
+ if_345_end:
+.annotate 'line', 110
+ getstdout $P349
+ tell $I350, $P349
+ new $P351, 'Integer'
+ set $P351, $I350
+ store_lex "$*AUTOPRINTPOS", $P351
+.annotate 'line', 112
+ find_lex $P354, "$code"
+ if $P354, if_353
+ set $P352, $P354
+ goto if_353_end
+ if_353:
+ .const 'Sub' $P356 = "28_1274564776.02218"
+ capture_lex $P356
+ $P404 = $P356()
+ set $P352, $P404
+ if_353_end:
+.annotate 'line', 101
+ .return ($P352)
+.end
+
+
+.namespace ["HLL";"Compiler"]
+.sub "_block355" :anon :subid("28_1274564776.02218") :outer("27_1274564776.02218")
+.annotate 'line', 112
+ .const 'Sub' $P362 = "29_1274564776.02218"
+ capture_lex $P362
+.annotate 'line', 114
+ new $P357, "Undef"
+ .lex "$output", $P357
+.annotate 'line', 113
+ find_lex $P358, "$code"
+ concat $P359, $P358, "\n"
+ store_lex "$code", $P359
+ find_lex $P360, "$output"
+.annotate 'line', 115
+ .const 'Sub' $P362 = "29_1274564776.02218"
+ capture_lex $P362
+ $P362()
+.annotate 'line', 122
+ find_lex $P383, "$output"
+ isnull $I384, $P383
+ unless $I384, if_382_end
+.include "except_types.pasm"
+ $P385 = new "Exception"
+ $P385["type"] = .CONTROL_LOOP_NEXT
+ throw $P385
+ if_382_end:
+.annotate 'line', 124
+ find_lex $P388, "$target"
+ isfalse $I389, $P388
+ if $I389, if_387
+.annotate 'line', 126
+ find_lex $P395, "$target"
+ set $S396, $P395
+ iseq $I397, $S396, "pir"
+ if $I397, if_394
+.annotate 'line', 129
+ find_lex $P399, "self"
+ find_lex $P400, "$output"
+ find_lex $P401, "$target"
+ find_lex $P402, "%adverbs"
+ $P403 = $P399."dumper"($P400, $P401, $P402 :flat)
+.annotate 'line', 128
+ set $P393, $P403
+.annotate 'line', 126
+ goto if_394_end
+ if_394:
+.annotate 'line', 127
+ find_lex $P398, "$output"
+ say $P398
+ if_394_end:
+.annotate 'line', 126
+ set $P386, $P393
+.annotate 'line', 124
+ goto if_387_end
+ if_387:
+.annotate 'line', 125
+ find_lex $P390, "self"
+ find_lex $P391, "$output"
+ $P392 = $P390."autoprint"($P391)
+.annotate 'line', 124
+ set $P386, $P392
+ if_387_end:
+.annotate 'line', 112
+ .return ($P386)
+.end
+
+
+.namespace ["HLL";"Compiler"]
+.sub "_block361" :anon :subid("29_1274564776.02218") :outer("28_1274564776.02218")
+.annotate 'line', 115
+ .const 'Sub' $P373 = "30_1274564776.02218"
+ capture_lex $P373
+ new $P369, 'ExceptionHandler'
+ set_addr $P369, control_368
+ $P369."handle_types_except"(57, 58, 59, 60, 62, 63, 64, 65, 66)
+ push_eh $P369
+.annotate 'line', 116
+ find_lex $P363, "self"
+ find_lex $P364, "$code"
+ find_lex $P365, "%adverbs"
+ $P366 = $P363."eval"($P364, $P365 :flat)
+ store_lex "$output", $P366
+.annotate 'line', 115
+ pop_eh
+ goto skip_handler_367
+ control_368:
+.annotate 'line', 117
+ .local pmc exception
+ .get_results (exception)
+ .const 'Sub' $P373 = "30_1274564776.02218"
+ newclosure $P379, $P373
+ $P379(exception)
+ new $P380, 'Integer'
+ set $P380, 1
+ set exception["handled"], $P380
+ set $I381, exception["handled"]
+ ne $I381, 1, nothandled_371
+ handled_370:
+ .return (exception)
+ nothandled_371:
+ rethrow exception
+ skip_handler_367:
+.annotate 'line', 115
+ .return ()
+.end
+
+
+.namespace ["HLL";"Compiler"]
+.sub "_block372" :anon :subid("30_1274564776.02218") :outer("29_1274564776.02218")
+ .param pmc param_374
+.annotate 'line', 117
+ .lex "$_", param_374
+ find_lex $P375, "$_"
+ .lex "$!", $P375
+.annotate 'line', 118
+ find_lex $P376, "$!"
+ concat $P377, $P376, "\n"
+ print $P377
+.annotate 'line', 119
+.include "except_types.pasm"
+ $P378 = new "Exception"
+ $P378["type"] = .CONTROL_LOOP_NEXT
+ throw $P378
+.annotate 'line', 117
+ .return ($P378)
+.end
+
+
+.namespace ["HLL";"Compiler"]
+.sub "eval" :subid("31_1274564776.02218") :method :outer("11_1274564776.02218")
+ .param pmc param_412
+ .param pmc param_413 :slurpy
+ .param pmc param_414 :slurpy :named
+.annotate 'line', 135
+ .const 'Sub' $P433 = "32_1274564776.02218"
+ capture_lex $P433
+ new $P411, 'ExceptionHandler'
+ set_addr $P411, control_410
+ $P411."handle_types"(57)
+ push_eh $P411
+ .lex "self", self
+ .lex "$code", param_412
+ .lex "@args", param_413
+ .lex "%adverbs", param_414
+.annotate 'line', 136
+ new $P415, "Undef"
+ .lex "$output", $P415
+.annotate 'line', 135
+ find_lex $P416, "$output"
+.annotate 'line', 137
+ find_lex $P417, "self"
+ find_lex $P418, "$code"
+ find_lex $P419, "%adverbs"
+ $P420 = $P417."compile"($P418, $P419 :flat)
+ store_lex "$output", $P420
+.annotate 'line', 139
+ find_lex $P424, "$output"
+ isa $I425, $P424, "String"
+ new $P426, 'Integer'
+ set $P426, $I425
+ isfalse $I427, $P426
+ if $I427, if_423
+ new $P422, 'Integer'
+ set $P422, $I427
+ goto if_423_end
+ if_423:
+.annotate 'line', 140
+ find_lex $P428, "%adverbs"
+ unless_null $P428, vivify_62
+ $P428 = root_new ['parrot';'Hash']
+ vivify_62:
+ set $P429, $P428["target"]
+ unless_null $P429, vivify_63
+ new $P429, "Undef"
+ vivify_63:
+ set $S430, $P429
+ iseq $I431, $S430, ""
+ new $P422, 'Integer'
+ set $P422, $I431
+ if_423_end:
+ unless $P422, if_421_end
+ .const 'Sub' $P433 = "32_1274564776.02218"
+ capture_lex $P433
+ $P433()
+ if_421_end:
+.annotate 'line', 139
+ find_lex $P450, "$output"
+.annotate 'line', 135
+ .return ($P450)
+ control_410:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P451, exception, "payload"
+ .return ($P451)
+.end
+
+
+.namespace ["HLL";"Compiler"]
+.sub "_block432" :anon :subid("32_1274564776.02218") :outer("31_1274564776.02218")
+.annotate 'line', 141
+ new $P434, "Undef"
+ .lex "$outer_ctx", $P434
+ find_lex $P435, "%adverbs"
+ unless_null $P435, vivify_64
+ $P435 = root_new ['parrot';'Hash']
+ vivify_64:
+ set $P436, $P435["outer_ctx"]
+ unless_null $P436, vivify_65
+ new $P436, "Undef"
+ vivify_65:
+ store_lex "$outer_ctx", $P436
+.annotate 'line', 142
+ find_lex $P438, "$outer_ctx"
+ defined $I439, $P438
+ unless $I439, if_437_end
+.annotate 'line', 143
+ find_lex $P440, "$output"
+ unless_null $P440, vivify_66
+ $P440 = root_new ['parrot';'ResizablePMCArray']
+ vivify_66:
+ set $P441, $P440[0]
+ unless_null $P441, vivify_67
+ new $P441, "Undef"
+ vivify_67:
+ find_lex $P442, "$outer_ctx"
+ unless_null $P442, vivify_68
+ $P442 = root_new ['parrot';'Hash']
+ vivify_68:
+ set $P443, $P442["current_sub"]
+ unless_null $P443, vivify_69
+ new $P443, "Undef"
+ vivify_69:
+ $P441."set_outer"($P443)
+ if_437_end:
+.annotate 'line', 146
+ find_lex $P444, "%adverbs"
+ unless_null $P444, vivify_70
+ $P444 = root_new ['parrot';'Hash']
+ vivify_70:
+ set $P445, $P444["trace"]
+ unless_null $P445, vivify_71
+ new $P445, "Undef"
+ vivify_71:
+ set $I446, $P445
+ trace $I446
+.annotate 'line', 147
+ find_lex $P447, "$output"
+ find_lex $P448, "@args"
+ $P449 = $P447($P448 :flat)
+ store_lex "$output", $P449
+.annotate 'line', 148
+ trace 0
+.annotate 'line', 140
+ .return ()
+.end
+
+
.namespace []
-.sub "_block286" :load :anon :subid("25_1274022881.57388")
+.sub "_block455" :load :anon :subid("33_1274564776.02218")
.annotate 'line', 1
- .const 'Sub' $P288 = "10_1274022881.57388"
- $P289 = $P288()
- .return ($P289)
+ .const 'Sub' $P457 = "10_1274564776.02218"
+ $P458 = $P457()
+ .return ($P458)
.end
Modified: branches/ops_massacre/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/ops_massacre/ext/nqp-rx/src/stage0/NQP-s0.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/ext/nqp-rx/src/stage0/NQP-s0.pir Mon May 24 08:26:56 2010 (r46947)
@@ -15,403 +15,403 @@
### .include 'gen/nqp-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1274022894.43745")
+.sub "_block11" :anon :subid("10_1274564776.41408")
.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
- $P1350 = $P14()
+ $P1394 = $P14()
.annotate 'line', 1
- .return ($P1350)
- .const 'Sub' $P1352 = "344_1274022894.43745"
- .return ($P1352)
+ .return ($P1394)
+ .const 'Sub' $P1396 = "355_1274564776.41408"
+ .return ($P1396)
.end
.namespace []
-.sub "" :load :init :subid("post345") :outer("10_1274022894.43745")
+.sub "" :load :init :subid("post356") :outer("10_1274564776.41408")
.annotate 'line', 0
- .const 'Sub' $P12 = "10_1274022894.43745"
+ .const 'Sub' $P12 = "10_1274564776.41408"
.local pmc block
set block, $P12
- $P1355 = get_root_global ["parrot"], "P6metaclass"
- $P1355."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
+ $P1399 = get_root_global ["parrot"], "P6metaclass"
+ $P1399."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
.end
.namespace ["NQP";"Grammar"]
-.sub "_block13" :subid("11_1274022894.43745") :outer("10_1274022894.43745")
+.sub "_block13" :subid("11_1274564776.41408") :outer("10_1274564776.41408")
.annotate 'line', 4
get_hll_global $P1290, ["NQP";"Regex"], "_block1289"
capture_lex $P1290
- .const 'Sub' $P1276 = "329_1274022894.43745"
+ .const 'Sub' $P1276 = "329_1274564776.41408"
capture_lex $P1276
- .const 'Sub' $P1270 = "327_1274022894.43745"
+ .const 'Sub' $P1270 = "327_1274564776.41408"
capture_lex $P1270
- .const 'Sub' $P1264 = "325_1274022894.43745"
+ .const 'Sub' $P1264 = "325_1274564776.41408"
capture_lex $P1264
- .const 'Sub' $P1258 = "323_1274022894.43745"
+ .const 'Sub' $P1258 = "323_1274564776.41408"
capture_lex $P1258
- .const 'Sub' $P1252 = "321_1274022894.43745"
+ .const 'Sub' $P1252 = "321_1274564776.41408"
capture_lex $P1252
- .const 'Sub' $P1246 = "319_1274022894.43745"
+ .const 'Sub' $P1246 = "319_1274564776.41408"
capture_lex $P1246
- .const 'Sub' $P1239 = "317_1274022894.43745"
+ .const 'Sub' $P1239 = "317_1274564776.41408"
capture_lex $P1239
- .const 'Sub' $P1232 = "315_1274022894.43745"
+ .const 'Sub' $P1232 = "315_1274564776.41408"
capture_lex $P1232
- .const 'Sub' $P1225 = "313_1274022894.43745"
+ .const 'Sub' $P1225 = "313_1274564776.41408"
capture_lex $P1225
- .const 'Sub' $P1218 = "311_1274022894.43745"
+ .const 'Sub' $P1218 = "311_1274564776.41408"
capture_lex $P1218
- .const 'Sub' $P1212 = "309_1274022894.43745"
+ .const 'Sub' $P1212 = "309_1274564776.41408"
capture_lex $P1212
- .const 'Sub' $P1205 = "307_1274022894.43745"
+ .const 'Sub' $P1205 = "307_1274564776.41408"
capture_lex $P1205
- .const 'Sub' $P1198 = "305_1274022894.43745"
+ .const 'Sub' $P1198 = "305_1274564776.41408"
capture_lex $P1198
- .const 'Sub' $P1191 = "303_1274022894.43745"
+ .const 'Sub' $P1191 = "303_1274564776.41408"
capture_lex $P1191
- .const 'Sub' $P1184 = "301_1274022894.43745"
+ .const 'Sub' $P1184 = "301_1274564776.41408"
capture_lex $P1184
- .const 'Sub' $P1177 = "299_1274022894.43745"
+ .const 'Sub' $P1177 = "299_1274564776.41408"
capture_lex $P1177
- .const 'Sub' $P1170 = "297_1274022894.43745"
+ .const 'Sub' $P1170 = "297_1274564776.41408"
capture_lex $P1170
- .const 'Sub' $P1163 = "295_1274022894.43745"
+ .const 'Sub' $P1163 = "295_1274564776.41408"
capture_lex $P1163
- .const 'Sub' $P1156 = "293_1274022894.43745"
+ .const 'Sub' $P1156 = "293_1274564776.41408"
capture_lex $P1156
- .const 'Sub' $P1149 = "291_1274022894.43745"
+ .const 'Sub' $P1149 = "291_1274564776.41408"
capture_lex $P1149
- .const 'Sub' $P1142 = "289_1274022894.43745"
+ .const 'Sub' $P1142 = "289_1274564776.41408"
capture_lex $P1142
- .const 'Sub' $P1135 = "287_1274022894.43745"
+ .const 'Sub' $P1135 = "287_1274564776.41408"
capture_lex $P1135
- .const 'Sub' $P1128 = "285_1274022894.43745"
+ .const 'Sub' $P1128 = "285_1274564776.41408"
capture_lex $P1128
- .const 'Sub' $P1121 = "283_1274022894.43745"
+ .const 'Sub' $P1121 = "283_1274564776.41408"
capture_lex $P1121
- .const 'Sub' $P1114 = "281_1274022894.43745"
+ .const 'Sub' $P1114 = "281_1274564776.41408"
capture_lex $P1114
- .const 'Sub' $P1107 = "279_1274022894.43745"
+ .const 'Sub' $P1107 = "279_1274564776.41408"
capture_lex $P1107
- .const 'Sub' $P1100 = "277_1274022894.43745"
+ .const 'Sub' $P1100 = "277_1274564776.41408"
capture_lex $P1100
- .const 'Sub' $P1093 = "275_1274022894.43745"
+ .const 'Sub' $P1093 = "275_1274564776.41408"
capture_lex $P1093
- .const 'Sub' $P1086 = "273_1274022894.43745"
+ .const 'Sub' $P1086 = "273_1274564776.41408"
capture_lex $P1086
- .const 'Sub' $P1079 = "271_1274022894.43745"
+ .const 'Sub' $P1079 = "271_1274564776.41408"
capture_lex $P1079
- .const 'Sub' $P1072 = "269_1274022894.43745"
+ .const 'Sub' $P1072 = "269_1274564776.41408"
capture_lex $P1072
- .const 'Sub' $P1065 = "267_1274022894.43745"
+ .const 'Sub' $P1065 = "267_1274564776.41408"
capture_lex $P1065
- .const 'Sub' $P1058 = "265_1274022894.43745"
+ .const 'Sub' $P1058 = "265_1274564776.41408"
capture_lex $P1058
- .const 'Sub' $P1051 = "263_1274022894.43745"
+ .const 'Sub' $P1051 = "263_1274564776.41408"
capture_lex $P1051
- .const 'Sub' $P1044 = "261_1274022894.43745"
+ .const 'Sub' $P1044 = "261_1274564776.41408"
capture_lex $P1044
- .const 'Sub' $P1037 = "259_1274022894.43745"
+ .const 'Sub' $P1037 = "259_1274564776.41408"
capture_lex $P1037
- .const 'Sub' $P1030 = "257_1274022894.43745"
+ .const 'Sub' $P1030 = "257_1274564776.41408"
capture_lex $P1030
- .const 'Sub' $P1024 = "255_1274022894.43745"
+ .const 'Sub' $P1024 = "255_1274564776.41408"
capture_lex $P1024
- .const 'Sub' $P1017 = "253_1274022894.43745"
+ .const 'Sub' $P1017 = "253_1274564776.41408"
capture_lex $P1017
- .const 'Sub' $P1010 = "251_1274022894.43745"
+ .const 'Sub' $P1010 = "251_1274564776.41408"
capture_lex $P1010
- .const 'Sub' $P1003 = "249_1274022894.43745"
+ .const 'Sub' $P1003 = "249_1274564776.41408"
capture_lex $P1003
- .const 'Sub' $P996 = "247_1274022894.43745"
+ .const 'Sub' $P996 = "247_1274564776.41408"
capture_lex $P996
- .const 'Sub' $P989 = "245_1274022894.43745"
+ .const 'Sub' $P989 = "245_1274564776.41408"
capture_lex $P989
- .const 'Sub' $P982 = "243_1274022894.43745"
+ .const 'Sub' $P982 = "243_1274564776.41408"
capture_lex $P982
- .const 'Sub' $P975 = "241_1274022894.43745"
+ .const 'Sub' $P975 = "241_1274564776.41408"
capture_lex $P975
- .const 'Sub' $P969 = "239_1274022894.43745"
+ .const 'Sub' $P969 = "239_1274564776.41408"
capture_lex $P969
- .const 'Sub' $P963 = "237_1274022894.43745"
+ .const 'Sub' $P963 = "237_1274564776.41408"
capture_lex $P963
- .const 'Sub' $P958 = "235_1274022894.43745"
+ .const 'Sub' $P958 = "235_1274564776.41408"
capture_lex $P958
- .const 'Sub' $P952 = "233_1274022894.43745"
+ .const 'Sub' $P952 = "233_1274564776.41408"
capture_lex $P952
- .const 'Sub' $P946 = "231_1274022894.43745"
+ .const 'Sub' $P946 = "231_1274564776.41408"
capture_lex $P946
- .const 'Sub' $P941 = "229_1274022894.43745"
+ .const 'Sub' $P941 = "229_1274564776.41408"
capture_lex $P941
- .const 'Sub' $P936 = "227_1274022894.43745"
+ .const 'Sub' $P936 = "227_1274564776.41408"
capture_lex $P936
- .const 'Sub' $P929 = "225_1274022894.43745"
+ .const 'Sub' $P929 = "225_1274564776.41408"
capture_lex $P929
- .const 'Sub' $P921 = "223_1274022894.43745"
+ .const 'Sub' $P921 = "223_1274564776.41408"
capture_lex $P921
- .const 'Sub' $P916 = "221_1274022894.43745"
+ .const 'Sub' $P916 = "221_1274564776.41408"
capture_lex $P916
- .const 'Sub' $P911 = "219_1274022894.43745"
+ .const 'Sub' $P911 = "219_1274564776.41408"
capture_lex $P911
- .const 'Sub' $P906 = "217_1274022894.43745"
+ .const 'Sub' $P906 = "217_1274564776.41408"
capture_lex $P906
- .const 'Sub' $P898 = "215_1274022894.43745"
+ .const 'Sub' $P898 = "215_1274564776.41408"
capture_lex $P898
- .const 'Sub' $P890 = "213_1274022894.43745"
+ .const 'Sub' $P890 = "213_1274564776.41408"
capture_lex $P890
- .const 'Sub' $P885 = "211_1274022894.43745"
+ .const 'Sub' $P885 = "211_1274564776.41408"
capture_lex $P885
- .const 'Sub' $P880 = "209_1274022894.43745"
+ .const 'Sub' $P880 = "209_1274564776.41408"
capture_lex $P880
- .const 'Sub' $P875 = "207_1274022894.43745"
+ .const 'Sub' $P875 = "207_1274564776.41408"
capture_lex $P875
- .const 'Sub' $P869 = "205_1274022894.43745"
+ .const 'Sub' $P869 = "205_1274564776.41408"
capture_lex $P869
- .const 'Sub' $P863 = "203_1274022894.43745"
+ .const 'Sub' $P863 = "203_1274564776.41408"
capture_lex $P863
- .const 'Sub' $P857 = "201_1274022894.43745"
+ .const 'Sub' $P857 = "201_1274564776.41408"
capture_lex $P857
- .const 'Sub' $P851 = "199_1274022894.43745"
+ .const 'Sub' $P851 = "199_1274564776.41408"
capture_lex $P851
- .const 'Sub' $P845 = "197_1274022894.43745"
+ .const 'Sub' $P845 = "197_1274564776.41408"
capture_lex $P845
- .const 'Sub' $P840 = "195_1274022894.43745"
+ .const 'Sub' $P840 = "195_1274564776.41408"
capture_lex $P840
- .const 'Sub' $P835 = "193_1274022894.43745"
+ .const 'Sub' $P835 = "193_1274564776.41408"
capture_lex $P835
- .const 'Sub' $P822 = "189_1274022894.43745"
+ .const 'Sub' $P822 = "189_1274564776.41408"
capture_lex $P822
- .const 'Sub' $P814 = "187_1274022894.43745"
+ .const 'Sub' $P814 = "187_1274564776.41408"
capture_lex $P814
- .const 'Sub' $P808 = "185_1274022894.43745"
+ .const 'Sub' $P808 = "185_1274564776.41408"
capture_lex $P808
- .const 'Sub' $P801 = "183_1274022894.43745"
+ .const 'Sub' $P801 = "183_1274564776.41408"
capture_lex $P801
- .const 'Sub' $P795 = "181_1274022894.43745"
+ .const 'Sub' $P795 = "181_1274564776.41408"
capture_lex $P795
- .const 'Sub' $P787 = "179_1274022894.43745"
+ .const 'Sub' $P787 = "179_1274564776.41408"
capture_lex $P787
- .const 'Sub' $P779 = "177_1274022894.43745"
+ .const 'Sub' $P779 = "177_1274564776.41408"
capture_lex $P779
- .const 'Sub' $P773 = "175_1274022894.43745"
+ .const 'Sub' $P773 = "175_1274564776.41408"
capture_lex $P773
- .const 'Sub' $P767 = "173_1274022894.43745"
+ .const 'Sub' $P767 = "173_1274564776.41408"
capture_lex $P767
- .const 'Sub' $P752 = "169_1274022894.43745"
+ .const 'Sub' $P752 = "169_1274564776.41408"
capture_lex $P752
- .const 'Sub' $P715 = "167_1274022894.43745"
+ .const 'Sub' $P715 = "167_1274564776.41408"
capture_lex $P715
- .const 'Sub' $P707 = "165_1274022894.43745"
+ .const 'Sub' $P707 = "165_1274564776.41408"
capture_lex $P707
- .const 'Sub' $P701 = "163_1274022894.43745"
+ .const 'Sub' $P701 = "163_1274564776.41408"
capture_lex $P701
- .const 'Sub' $P691 = "161_1274022894.43745"
+ .const 'Sub' $P691 = "161_1274564776.41408"
capture_lex $P691
- .const 'Sub' $P677 = "159_1274022894.43745"
+ .const 'Sub' $P677 = "159_1274564776.41408"
capture_lex $P677
- .const 'Sub' $P668 = "157_1274022894.43745"
+ .const 'Sub' $P668 = "157_1274564776.41408"
capture_lex $P668
- .const 'Sub' $P649 = "155_1274022894.43745"
+ .const 'Sub' $P649 = "155_1274564776.41408"
capture_lex $P649
- .const 'Sub' $P625 = "153_1274022894.43745"
+ .const 'Sub' $P625 = "153_1274564776.41408"
capture_lex $P625
- .const 'Sub' $P618 = "151_1274022894.43745"
+ .const 'Sub' $P618 = "151_1274564776.41408"
capture_lex $P618
- .const 'Sub' $P611 = "149_1274022894.43745"
+ .const 'Sub' $P611 = "149_1274564776.41408"
capture_lex $P611
- .const 'Sub' $P601 = "145_1274022894.43745"
+ .const 'Sub' $P601 = "145_1274564776.41408"
capture_lex $P601
- .const 'Sub' $P593 = "143_1274022894.43745"
+ .const 'Sub' $P593 = "143_1274564776.41408"
capture_lex $P593
- .const 'Sub' $P587 = "141_1274022894.43745"
+ .const 'Sub' $P587 = "141_1274564776.41408"
capture_lex $P587
- .const 'Sub' $P573 = "139_1274022894.43745"
+ .const 'Sub' $P573 = "139_1274564776.41408"
capture_lex $P573
- .const 'Sub' $P566 = "137_1274022894.43745"
+ .const 'Sub' $P566 = "137_1274564776.41408"
capture_lex $P566
- .const 'Sub' $P559 = "135_1274022894.43745"
+ .const 'Sub' $P559 = "135_1274564776.41408"
capture_lex $P559
- .const 'Sub' $P552 = "133_1274022894.43745"
+ .const 'Sub' $P552 = "133_1274564776.41408"
capture_lex $P552
- .const 'Sub' $P525 = "129_1274022894.43745"
+ .const 'Sub' $P525 = "129_1274564776.41408"
capture_lex $P525
- .const 'Sub' $P516 = "127_1274022894.43745"
+ .const 'Sub' $P516 = "127_1274564776.41408"
capture_lex $P516
- .const 'Sub' $P509 = "125_1274022894.43745"
+ .const 'Sub' $P509 = "125_1274564776.41408"
capture_lex $P509
- .const 'Sub' $P500 = "121_1274022894.43745"
+ .const 'Sub' $P500 = "121_1274564776.41408"
capture_lex $P500
- .const 'Sub' $P495 = "119_1274022894.43745"
+ .const 'Sub' $P495 = "119_1274564776.41408"
capture_lex $P495
- .const 'Sub' $P483 = "117_1274022894.43745"
+ .const 'Sub' $P483 = "117_1274564776.41408"
capture_lex $P483
- .const 'Sub' $P471 = "115_1274022894.43745"
+ .const 'Sub' $P471 = "115_1274564776.41408"
capture_lex $P471
- .const 'Sub' $P463 = "113_1274022894.43745"
+ .const 'Sub' $P463 = "113_1274564776.41408"
capture_lex $P463
- .const 'Sub' $P458 = "111_1274022894.43745"
+ .const 'Sub' $P458 = "111_1274564776.41408"
capture_lex $P458
- .const 'Sub' $P452 = "109_1274022894.43745"
+ .const 'Sub' $P452 = "109_1274564776.41408"
capture_lex $P452
- .const 'Sub' $P446 = "107_1274022894.43745"
+ .const 'Sub' $P446 = "107_1274564776.41408"
capture_lex $P446
- .const 'Sub' $P440 = "105_1274022894.43745"
+ .const 'Sub' $P440 = "105_1274564776.41408"
capture_lex $P440
- .const 'Sub' $P434 = "103_1274022894.43745"
+ .const 'Sub' $P434 = "103_1274564776.41408"
capture_lex $P434
- .const 'Sub' $P428 = "101_1274022894.43745"
+ .const 'Sub' $P428 = "101_1274564776.41408"
capture_lex $P428
- .const 'Sub' $P422 = "99_1274022894.43745"
+ .const 'Sub' $P422 = "99_1274564776.41408"
capture_lex $P422
- .const 'Sub' $P416 = "97_1274022894.43745"
+ .const 'Sub' $P416 = "97_1274564776.41408"
capture_lex $P416
- .const 'Sub' $P410 = "95_1274022894.43745"
+ .const 'Sub' $P410 = "95_1274564776.41408"
capture_lex $P410
- .const 'Sub' $P402 = "93_1274022894.43745"
+ .const 'Sub' $P402 = "93_1274564776.41408"
capture_lex $P402
- .const 'Sub' $P394 = "91_1274022894.43745"
+ .const 'Sub' $P394 = "91_1274564776.41408"
capture_lex $P394
- .const 'Sub' $P382 = "87_1274022894.43745"
+ .const 'Sub' $P382 = "87_1274564776.41408"
capture_lex $P382
- .const 'Sub' $P374 = "85_1274022894.43745"
+ .const 'Sub' $P374 = "85_1274564776.41408"
capture_lex $P374
- .const 'Sub' $P364 = "81_1274022894.43745"
+ .const 'Sub' $P364 = "81_1274564776.41408"
capture_lex $P364
- .const 'Sub' $P357 = "79_1274022894.43745"
+ .const 'Sub' $P357 = "79_1274564776.41408"
capture_lex $P357
- .const 'Sub' $P350 = "77_1274022894.43745"
+ .const 'Sub' $P350 = "77_1274564776.41408"
capture_lex $P350
- .const 'Sub' $P338 = "73_1274022894.43745"
+ .const 'Sub' $P338 = "73_1274564776.41408"
capture_lex $P338
- .const 'Sub' $P330 = "71_1274022894.43745"
+ .const 'Sub' $P330 = "71_1274564776.41408"
capture_lex $P330
- .const 'Sub' $P322 = "69_1274022894.43745"
+ .const 'Sub' $P322 = "69_1274564776.41408"
capture_lex $P322
- .const 'Sub' $P302 = "67_1274022894.43745"
+ .const 'Sub' $P302 = "67_1274564776.41408"
capture_lex $P302
- .const 'Sub' $P293 = "65_1274022894.43745"
+ .const 'Sub' $P293 = "65_1274564776.41408"
capture_lex $P293
- .const 'Sub' $P275 = "62_1274022894.43745"
+ .const 'Sub' $P275 = "62_1274564776.41408"
capture_lex $P275
- .const 'Sub' $P255 = "60_1274022894.43745"
+ .const 'Sub' $P255 = "60_1274564776.41408"
capture_lex $P255
- .const 'Sub' $P246 = "56_1274022894.43745"
+ .const 'Sub' $P246 = "56_1274564776.41408"
capture_lex $P246
- .const 'Sub' $P241 = "54_1274022894.43745"
+ .const 'Sub' $P241 = "54_1274564776.41408"
capture_lex $P241
- .const 'Sub' $P232 = "50_1274022894.43745"
+ .const 'Sub' $P232 = "50_1274564776.41408"
capture_lex $P232
- .const 'Sub' $P227 = "48_1274022894.43745"
+ .const 'Sub' $P227 = "48_1274564776.41408"
capture_lex $P227
- .const 'Sub' $P219 = "46_1274022894.43745"
+ .const 'Sub' $P219 = "46_1274564776.41408"
capture_lex $P219
- .const 'Sub' $P212 = "44_1274022894.43745"
+ .const 'Sub' $P212 = "44_1274564776.41408"
capture_lex $P212
- .const 'Sub' $P206 = "42_1274022894.43745"
+ .const 'Sub' $P206 = "42_1274564776.41408"
capture_lex $P206
- .const 'Sub' $P198 = "40_1274022894.43745"
+ .const 'Sub' $P198 = "40_1274564776.41408"
capture_lex $P198
- .const 'Sub' $P192 = "38_1274022894.43745"
+ .const 'Sub' $P192 = "38_1274564776.41408"
capture_lex $P192
- .const 'Sub' $P186 = "36_1274022894.43745"
+ .const 'Sub' $P186 = "36_1274564776.41408"
capture_lex $P186
- .const 'Sub' $P170 = "33_1274022894.43745"
+ .const 'Sub' $P170 = "33_1274564776.41408"
capture_lex $P170
- .const 'Sub' $P157 = "31_1274022894.43745"
+ .const 'Sub' $P157 = "31_1274564776.41408"
capture_lex $P157
- .const 'Sub' $P150 = "29_1274022894.43745"
+ .const 'Sub' $P150 = "29_1274564776.41408"
capture_lex $P150
- .const 'Sub' $P100 = "26_1274022894.43745"
+ .const 'Sub' $P100 = "26_1274564776.41408"
capture_lex $P100
- .const 'Sub' $P82 = "23_1274022894.43745"
+ .const 'Sub' $P82 = "23_1274564776.41408"
capture_lex $P82
- .const 'Sub' $P68 = "21_1274022894.43745"
+ .const 'Sub' $P68 = "21_1274564776.41408"
capture_lex $P68
- .const 'Sub' $P54 = "19_1274022894.43745"
+ .const 'Sub' $P54 = "19_1274564776.41408"
capture_lex $P54
- .const 'Sub' $P46 = "17_1274022894.43745"
+ .const 'Sub' $P46 = "17_1274564776.41408"
capture_lex $P46
- .const 'Sub' $P39 = "15_1274022894.43745"
+ .const 'Sub' $P39 = "15_1274564776.41408"
capture_lex $P39
- .const 'Sub' $P33 = "13_1274022894.43745"
+ .const 'Sub' $P33 = "13_1274564776.41408"
capture_lex $P33
- .const 'Sub' $P15 = "12_1274022894.43745"
+ .const 'Sub' $P15 = "12_1274564776.41408"
capture_lex $P15
.annotate 'line', 548
get_hll_global $P1290, ["NQP";"Regex"], "_block1289"
capture_lex $P1290
- $P1329 = $P1290()
+ $P1373 = $P1290()
.annotate 'line', 4
- .return ($P1329)
- .const 'Sub' $P1331 = "343_1274022894.43745"
- .return ($P1331)
+ .return ($P1373)
+ .const 'Sub' $P1375 = "354_1274564776.41408"
+ .return ($P1375)
.end
.namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post346") :outer("11_1274022894.43745")
+.sub "" :load :init :subid("post357") :outer("11_1274564776.41408")
.annotate 'line', 4
get_hll_global $P14, ["NQP";"Grammar"], "_block13"
.local pmc block
set block, $P14
.annotate 'line', 432
- get_hll_global $P1334, ["NQP"], "Grammar"
- $P1334."O"(":prec<y=>, :assoc<unary>", "%methodop")
+ get_hll_global $P1378, ["NQP"], "Grammar"
+ $P1378."O"(":prec<y=>, :assoc<unary>", "%methodop")
.annotate 'line', 433
- get_hll_global $P1335, ["NQP"], "Grammar"
- $P1335."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
+ get_hll_global $P1379, ["NQP"], "Grammar"
+ $P1379."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
.annotate 'line', 434
- get_hll_global $P1336, ["NQP"], "Grammar"
- $P1336."O"(":prec<w=>, :assoc<left>", "%exponentiation")
+ get_hll_global $P1380, ["NQP"], "Grammar"
+ $P1380."O"(":prec<w=>, :assoc<left>", "%exponentiation")
.annotate 'line', 435
- get_hll_global $P1337, ["NQP"], "Grammar"
- $P1337."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
+ get_hll_global $P1381, ["NQP"], "Grammar"
+ $P1381."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
.annotate 'line', 436
- get_hll_global $P1338, ["NQP"], "Grammar"
- $P1338."O"(":prec<u=>, :assoc<left>", "%multiplicative")
+ get_hll_global $P1382, ["NQP"], "Grammar"
+ $P1382."O"(":prec<u=>, :assoc<left>", "%multiplicative")
.annotate 'line', 437
- get_hll_global $P1339, ["NQP"], "Grammar"
- $P1339."O"(":prec<t=>, :assoc<left>", "%additive")
+ get_hll_global $P1383, ["NQP"], "Grammar"
+ $P1383."O"(":prec<t=>, :assoc<left>", "%additive")
.annotate 'line', 438
- get_hll_global $P1340, ["NQP"], "Grammar"
- $P1340."O"(":prec<r=>, :assoc<left>", "%concatenation")
+ get_hll_global $P1384, ["NQP"], "Grammar"
+ $P1384."O"(":prec<r=>, :assoc<left>", "%concatenation")
.annotate 'line', 439
- get_hll_global $P1341, ["NQP"], "Grammar"
- $P1341."O"(":prec<m=>, :assoc<left>", "%relational")
+ get_hll_global $P1385, ["NQP"], "Grammar"
+ $P1385."O"(":prec<m=>, :assoc<left>", "%relational")
.annotate 'line', 440
- get_hll_global $P1342, ["NQP"], "Grammar"
- $P1342."O"(":prec<l=>, :assoc<left>", "%tight_and")
+ get_hll_global $P1386, ["NQP"], "Grammar"
+ $P1386."O"(":prec<l=>, :assoc<left>", "%tight_and")
.annotate 'line', 441
- get_hll_global $P1343, ["NQP"], "Grammar"
- $P1343."O"(":prec<k=>, :assoc<left>", "%tight_or")
+ get_hll_global $P1387, ["NQP"], "Grammar"
+ $P1387."O"(":prec<k=>, :assoc<left>", "%tight_or")
.annotate 'line', 442
- get_hll_global $P1344, ["NQP"], "Grammar"
- $P1344."O"(":prec<j=>, :assoc<right>", "%conditional")
+ get_hll_global $P1388, ["NQP"], "Grammar"
+ $P1388."O"(":prec<j=>, :assoc<right>", "%conditional")
.annotate 'line', 443
- get_hll_global $P1345, ["NQP"], "Grammar"
- $P1345."O"(":prec<i=>, :assoc<right>", "%assignment")
+ get_hll_global $P1389, ["NQP"], "Grammar"
+ $P1389."O"(":prec<i=>, :assoc<right>", "%assignment")
.annotate 'line', 444
- get_hll_global $P1346, ["NQP"], "Grammar"
- $P1346."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+ get_hll_global $P1390, ["NQP"], "Grammar"
+ $P1390."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
.annotate 'line', 445
- get_hll_global $P1347, ["NQP"], "Grammar"
- $P1347."O"(":prec<f=>, :assoc<list>", "%list_infix")
+ get_hll_global $P1391, ["NQP"], "Grammar"
+ $P1391."O"(":prec<f=>, :assoc<list>", "%list_infix")
.annotate 'line', 446
- get_hll_global $P1348, ["NQP"], "Grammar"
- $P1348."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
+ get_hll_global $P1392, ["NQP"], "Grammar"
+ $P1392."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
.annotate 'line', 431
- $P1349 = get_root_global ["parrot"], "P6metaclass"
- $P1349."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
+ $P1393 = get_root_global ["parrot"], "P6metaclass"
+ $P1393."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
.end
.namespace ["NQP";"Grammar"]
-.sub "TOP" :subid("12_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "TOP" :subid("12_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
new $P17, 'ExceptionHandler'
set_addr $P17, control_16
@@ -426,55 +426,55 @@
.lex "$*SCOPE", $P19
.annotate 'line', 4
find_lex $P20, "%*LANG"
- unless_null $P20, vivify_347
+ unless_null $P20, vivify_358
get_hll_global $P20, "%LANG"
- unless_null $P20, vivify_348
+ unless_null $P20, vivify_359
die "Contextual %*LANG not found"
- vivify_348:
- vivify_347:
+ vivify_359:
+ vivify_358:
.annotate 'line', 6
get_hll_global $P21, ["NQP"], "Regex"
find_lex $P22, "%*LANG"
- unless_null $P22, vivify_349
+ unless_null $P22, vivify_360
get_hll_global $P22, "%LANG"
- unless_null $P22, vivify_350
+ unless_null $P22, vivify_361
die "Contextual %*LANG not found"
- vivify_350:
+ vivify_361:
store_lex "%*LANG", $P22
- vivify_349:
+ vivify_360:
set $P22["Regex"], $P21
.annotate 'line', 7
get_hll_global $P23, ["NQP"], "RegexActions"
find_lex $P24, "%*LANG"
- unless_null $P24, vivify_351
+ unless_null $P24, vivify_362
get_hll_global $P24, "%LANG"
- unless_null $P24, vivify_352
+ unless_null $P24, vivify_363
die "Contextual %*LANG not found"
- vivify_352:
+ vivify_363:
store_lex "%*LANG", $P24
- vivify_351:
+ vivify_362:
set $P24["Regex-actions"], $P23
.annotate 'line', 8
get_hll_global $P25, ["NQP"], "Grammar"
find_lex $P26, "%*LANG"
- unless_null $P26, vivify_353
+ unless_null $P26, vivify_364
get_hll_global $P26, "%LANG"
- unless_null $P26, vivify_354
+ unless_null $P26, vivify_365
die "Contextual %*LANG not found"
- vivify_354:
+ vivify_365:
store_lex "%*LANG", $P26
- vivify_353:
+ vivify_364:
set $P26["MAIN"], $P25
.annotate 'line', 9
get_hll_global $P27, ["NQP"], "Actions"
find_lex $P28, "%*LANG"
- unless_null $P28, vivify_355
+ unless_null $P28, vivify_366
get_hll_global $P28, "%LANG"
- unless_null $P28, vivify_356
+ unless_null $P28, vivify_367
die "Contextual %*LANG not found"
- vivify_356:
+ vivify_367:
store_lex "%*LANG", $P28
- vivify_355:
+ vivify_366:
set $P28["MAIN-actions"], $P27
.annotate 'line', 10
new $P29, "String"
@@ -494,7 +494,7 @@
.namespace ["NQP";"Grammar"]
-.sub "identifier" :subid("13_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "identifier" :subid("13_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx34_tgt
.local int rx34_pos
@@ -552,7 +552,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier" :subid("14_1274022894.43745") :method
+.sub "!PREFIX__identifier" :subid("14_1274564776.41408") :method
.annotate 'line', 4
$P36 = self."!PREFIX__!subrule"("ident", "")
new $P37, "ResizablePMCArray"
@@ -562,7 +562,7 @@
.namespace ["NQP";"Grammar"]
-.sub "name" :subid("15_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "name" :subid("15_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx40_tgt
.local int rx40_pos
@@ -636,7 +636,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name" :subid("16_1274022894.43745") :method
+.sub "!PREFIX__name" :subid("16_1274564776.41408") :method
.annotate 'line', 4
new $P42, "ResizablePMCArray"
push $P42, ""
@@ -645,7 +645,7 @@
.namespace ["NQP";"Grammar"]
-.sub "deflongname" :subid("17_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "deflongname" :subid("17_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx47_tgt
.local int rx47_pos
@@ -718,7 +718,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname" :subid("18_1274022894.43745") :method
+.sub "!PREFIX__deflongname" :subid("18_1274564776.41408") :method
.annotate 'line', 4
$P49 = self."!PREFIX__!subrule"("identifier", "")
new $P50, "ResizablePMCArray"
@@ -728,7 +728,7 @@
.namespace ["NQP";"Grammar"]
-.sub "ENDSTMT" :subid("19_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "ENDSTMT" :subid("19_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx55_tgt
.local int rx55_pos
@@ -860,7 +860,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT" :subid("20_1274022894.43745") :method
+.sub "!PREFIX__ENDSTMT" :subid("20_1274564776.41408") :method
.annotate 'line', 4
new $P57, "ResizablePMCArray"
push $P57, ""
@@ -869,7 +869,7 @@
.namespace ["NQP";"Grammar"]
-.sub "ws" :subid("21_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "ws" :subid("21_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx69_tgt
.local int rx69_pos
@@ -1024,7 +1024,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws" :subid("22_1274022894.43745") :method
+.sub "!PREFIX__ws" :subid("22_1274564776.41408") :method
.annotate 'line', 4
new $P71, "ResizablePMCArray"
push $P71, ""
@@ -1034,9 +1034,9 @@
.namespace ["NQP";"Grammar"]
-.sub "unv" :subid("23_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "unv" :subid("23_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
- .const 'Sub' $P90 = "25_1274022894.43745"
+ .const 'Sub' $P90 = "25_1274564776.41408"
capture_lex $P90
.local string rx83_tgt
.local int rx83_pos
@@ -1082,7 +1082,7 @@
rxanchor88_done:
# rx subrule "before" subtype=zerowidth negate=
rx83_cur."!cursor_pos"(rx83_pos)
- .const 'Sub' $P90 = "25_1274022894.43745"
+ .const 'Sub' $P90 = "25_1274564776.41408"
capture_lex $P90
$P10 = rx83_cur."before"($P90)
unless $P10, rx83_fail
@@ -1161,7 +1161,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv" :subid("24_1274022894.43745") :method
+.sub "!PREFIX__unv" :subid("24_1274564776.41408") :method
.annotate 'line', 4
new $P85, "ResizablePMCArray"
push $P85, ""
@@ -1172,7 +1172,7 @@
.namespace ["NQP";"Grammar"]
-.sub "_block89" :anon :subid("25_1274022894.43745") :method :outer("23_1274022894.43745")
+.sub "_block89" :anon :subid("25_1274564776.41408") :method :outer("23_1274564776.41408")
.annotate 'line', 45
.local string rx91_tgt
.local int rx91_pos
@@ -1262,9 +1262,9 @@
.namespace ["NQP";"Grammar"]
-.sub "pod_comment" :subid("26_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "pod_comment" :subid("26_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
- .const 'Sub' $P141 = "28_1274022894.43745"
+ .const 'Sub' $P141 = "28_1274564776.41408"
capture_lex $P141
.local string rx101_tgt
.local int rx101_pos
@@ -1750,7 +1750,7 @@
rxanchor139_done:
# rx subrule "before" subtype=zerowidth negate=
rx101_cur."!cursor_pos"(rx101_pos)
- .const 'Sub' $P141 = "28_1274022894.43745"
+ .const 'Sub' $P141 = "28_1274564776.41408"
capture_lex $P141
$P10 = rx101_cur."before"($P141)
unless $P10, rx101_fail
@@ -1801,7 +1801,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment" :subid("27_1274022894.43745") :method
+.sub "!PREFIX__pod_comment" :subid("27_1274564776.41408") :method
.annotate 'line', 4
new $P103, "ResizablePMCArray"
push $P103, ""
@@ -1810,7 +1810,7 @@
.namespace ["NQP";"Grammar"]
-.sub "_block140" :anon :subid("28_1274022894.43745") :method :outer("26_1274022894.43745")
+.sub "_block140" :anon :subid("28_1274564776.41408") :method :outer("26_1274564776.41408")
.annotate 'line', 68
.local string rx142_tgt
.local int rx142_pos
@@ -1929,7 +1929,7 @@
.namespace ["NQP";"Grammar"]
-.sub "comp_unit" :subid("29_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "comp_unit" :subid("29_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx151_tgt
.local int rx151_pos
@@ -2008,7 +2008,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit" :subid("30_1274022894.43745") :method
+.sub "!PREFIX__comp_unit" :subid("30_1274564776.41408") :method
.annotate 'line', 4
$P153 = self."!PREFIX__!subrule"("", "")
new $P154, "ResizablePMCArray"
@@ -2018,7 +2018,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statementlist" :subid("31_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statementlist" :subid("31_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx158_tgt
.local int rx158_pos
@@ -2126,7 +2126,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist" :subid("32_1274022894.43745") :method
+.sub "!PREFIX__statementlist" :subid("32_1274564776.41408") :method
.annotate 'line', 4
new $P160, "ResizablePMCArray"
push $P160, ""
@@ -2136,9 +2136,9 @@
.namespace ["NQP";"Grammar"]
-.sub "statement" :subid("33_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement" :subid("33_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
- .const 'Sub' $P176 = "35_1274022894.43745"
+ .const 'Sub' $P176 = "35_1274564776.41408"
capture_lex $P176
.local string rx171_tgt
.local int rx171_pos
@@ -2173,7 +2173,7 @@
.annotate 'line', 94
# rx subrule "before" subtype=zerowidth negate=1
rx171_cur."!cursor_pos"(rx171_pos)
- .const 'Sub' $P176 = "35_1274022894.43745"
+ .const 'Sub' $P176 = "35_1274564776.41408"
capture_lex $P176
$P10 = rx171_cur."before"($P176)
if $P10, rx171_fail
@@ -2278,7 +2278,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement" :subid("34_1274022894.43745") :method
+.sub "!PREFIX__statement" :subid("34_1274564776.41408") :method
.annotate 'line', 4
new $P173, "ResizablePMCArray"
push $P173, ""
@@ -2287,7 +2287,7 @@
.namespace ["NQP";"Grammar"]
-.sub "_block175" :anon :subid("35_1274022894.43745") :method :outer("33_1274022894.43745")
+.sub "_block175" :anon :subid("35_1274564776.41408") :method :outer("33_1274564776.41408")
.annotate 'line', 94
.local string rx177_tgt
.local int rx177_pos
@@ -2351,7 +2351,7 @@
.namespace ["NQP";"Grammar"]
-.sub "eat_terminator" :subid("36_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "eat_terminator" :subid("36_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx187_tgt
.local int rx187_pos
@@ -2438,7 +2438,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator" :subid("37_1274022894.43745") :method
+.sub "!PREFIX__eat_terminator" :subid("37_1274564776.41408") :method
.annotate 'line', 4
new $P189, "ResizablePMCArray"
push $P189, ""
@@ -2450,7 +2450,7 @@
.namespace ["NQP";"Grammar"]
-.sub "xblock" :subid("38_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "xblock" :subid("38_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx193_tgt
.local int rx193_pos
@@ -2521,7 +2521,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock" :subid("39_1274022894.43745") :method
+.sub "!PREFIX__xblock" :subid("39_1274564776.41408") :method
.annotate 'line', 4
$P195 = self."!PREFIX__!subrule"("EXPR", "")
new $P196, "ResizablePMCArray"
@@ -2531,7 +2531,7 @@
.namespace ["NQP";"Grammar"]
-.sub "pblock" :subid("40_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "pblock" :subid("40_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx199_tgt
.local int rx199_pos
@@ -2650,7 +2650,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock" :subid("41_1274022894.43745") :method
+.sub "!PREFIX__pblock" :subid("41_1274564776.41408") :method
.annotate 'line', 4
$P201 = self."!PREFIX__!subrule"("", "")
$P202 = self."!PREFIX__!subrule"("", "")
@@ -2663,7 +2663,7 @@
.namespace ["NQP";"Grammar"]
-.sub "lambda" :subid("42_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "lambda" :subid("42_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx207_tgt
.local int rx207_pos
@@ -2734,7 +2734,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda" :subid("43_1274022894.43745") :method
+.sub "!PREFIX__lambda" :subid("43_1274564776.41408") :method
.annotate 'line', 4
new $P209, "ResizablePMCArray"
push $P209, "<->"
@@ -2744,7 +2744,7 @@
.namespace ["NQP";"Grammar"]
-.sub "block" :subid("44_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "block" :subid("44_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx213_tgt
.local int rx213_pos
@@ -2827,7 +2827,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block" :subid("45_1274022894.43745") :method
+.sub "!PREFIX__block" :subid("45_1274564776.41408") :method
.annotate 'line', 4
$P215 = self."!PREFIX__!subrule"("", "")
new $P216, "ResizablePMCArray"
@@ -2838,7 +2838,7 @@
.namespace ["NQP";"Grammar"]
-.sub "blockoid" :subid("46_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "blockoid" :subid("46_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx220_tgt
.local int rx220_pos
@@ -2933,7 +2933,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid" :subid("47_1274022894.43745") :method
+.sub "!PREFIX__blockoid" :subid("47_1274564776.41408") :method
.annotate 'line', 4
$P222 = self."!PREFIX__!subrule"("", "")
new $P223, "ResizablePMCArray"
@@ -2943,7 +2943,7 @@
.namespace ["NQP";"Grammar"]
-.sub "newpad" :subid("48_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "newpad" :subid("48_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx228_tgt
.local int rx228_pos
@@ -2994,7 +2994,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad" :subid("49_1274022894.43745") :method
+.sub "!PREFIX__newpad" :subid("49_1274564776.41408") :method
.annotate 'line', 4
new $P230, "ResizablePMCArray"
push $P230, ""
@@ -3003,7 +3003,7 @@
.namespace ["NQP";"Grammar"]
-.sub "finishpad" :subid("50_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "finishpad" :subid("50_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx233_tgt
.local int rx233_pos
@@ -3054,7 +3054,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad" :subid("51_1274022894.43745") :method
+.sub "!PREFIX__finishpad" :subid("51_1274564776.41408") :method
.annotate 'line', 4
new $P235, "ResizablePMCArray"
push $P235, ""
@@ -3063,7 +3063,7 @@
.namespace ["NQP";"Grammar"]
-.sub "terminator" :subid("52_1274022894.43745") :method
+.sub "terminator" :subid("52_1274564776.41408") :method
.annotate 'line', 145
$P238 = self."!protoregex"("terminator")
.return ($P238)
@@ -3071,7 +3071,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator" :subid("53_1274022894.43745") :method
+.sub "!PREFIX__terminator" :subid("53_1274564776.41408") :method
.annotate 'line', 145
$P240 = self."!PREFIX__!protoregex"("terminator")
.return ($P240)
@@ -3079,7 +3079,7 @@
.namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>" :subid("54_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "terminator:sym<;>" :subid("54_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx242_tgt
.local int rx242_pos
@@ -3136,7 +3136,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>" :subid("55_1274022894.43745") :method
+.sub "!PREFIX__terminator:sym<;>" :subid("55_1274564776.41408") :method
.annotate 'line', 4
new $P244, "ResizablePMCArray"
push $P244, ";"
@@ -3145,7 +3145,7 @@
.namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>" :subid("56_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "terminator:sym<}>" :subid("56_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx247_tgt
.local int rx247_pos
@@ -3202,7 +3202,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>" :subid("57_1274022894.43745") :method
+.sub "!PREFIX__terminator:sym<}>" :subid("57_1274564776.41408") :method
.annotate 'line', 4
new $P249, "ResizablePMCArray"
push $P249, "}"
@@ -3211,7 +3211,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control" :subid("58_1274022894.43745") :method
+.sub "statement_control" :subid("58_1274564776.41408") :method
.annotate 'line', 152
$P252 = self."!protoregex"("statement_control")
.return ($P252)
@@ -3219,7 +3219,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control" :subid("59_1274022894.43745") :method
+.sub "!PREFIX__statement_control" :subid("59_1274564776.41408") :method
.annotate 'line', 152
$P254 = self."!PREFIX__!protoregex"("statement_control")
.return ($P254)
@@ -3227,7 +3227,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>" :subid("60_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_control:sym<if>" :subid("60_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx256_tgt
.local int rx256_pos
@@ -3237,7 +3237,7 @@
.local pmc rx256_cur
(rx256_cur, rx256_pos, rx256_tgt) = self."!cursor_start"()
rx256_cur."!cursor_debug"("START ", "statement_control:sym<if>")
- rx256_cur."!cursor_caparray"("xblock", "else")
+ rx256_cur."!cursor_caparray"("else", "xblock")
.lex unicode:"$\x{a2}", rx256_cur
.local pmc match
.lex "$/", match
@@ -3421,7 +3421,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>" :subid("61_1274022894.43745") :method
+.sub "!PREFIX__statement_control:sym<if>" :subid("61_1274564776.41408") :method
.annotate 'line', 4
new $P258, "ResizablePMCArray"
push $P258, "if"
@@ -3430,9 +3430,9 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>" :subid("62_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_control:sym<unless>" :subid("62_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
- .const 'Sub' $P286 = "64_1274022894.43745"
+ .const 'Sub' $P286 = "64_1274564776.41408"
capture_lex $P286
.local string rx276_tgt
.local int rx276_pos
@@ -3520,7 +3520,7 @@
rx276_pos = $P10."pos"()
# rx subrule "before" subtype=zerowidth negate=1
rx276_cur."!cursor_pos"(rx276_pos)
- .const 'Sub' $P286 = "64_1274022894.43745"
+ .const 'Sub' $P286 = "64_1274564776.41408"
capture_lex $P286
$P10 = rx276_cur."before"($P286)
if $P10, rx276_fail
@@ -3572,7 +3572,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>" :subid("63_1274022894.43745") :method
+.sub "!PREFIX__statement_control:sym<unless>" :subid("63_1274564776.41408") :method
.annotate 'line', 4
new $P278, "ResizablePMCArray"
push $P278, "unless"
@@ -3581,7 +3581,7 @@
.namespace ["NQP";"Grammar"]
-.sub "_block285" :anon :subid("64_1274022894.43745") :method :outer("62_1274022894.43745")
+.sub "_block285" :anon :subid("64_1274564776.41408") :method :outer("62_1274564776.41408")
.annotate 'line', 164
.local string rx287_tgt
.local int rx287_pos
@@ -3637,7 +3637,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>" :subid("65_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_control:sym<while>" :subid("65_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx294_tgt
.local int rx294_pos
@@ -3747,7 +3747,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>" :subid("66_1274022894.43745") :method
+.sub "!PREFIX__statement_control:sym<while>" :subid("66_1274564776.41408") :method
.annotate 'line', 4
new $P296, "ResizablePMCArray"
push $P296, "until"
@@ -3757,7 +3757,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>" :subid("67_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_control:sym<repeat>" :subid("67_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx303_tgt
.local int rx303_pos
@@ -3992,7 +3992,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>" :subid("68_1274022894.43745") :method
+.sub "!PREFIX__statement_control:sym<repeat>" :subid("68_1274564776.41408") :method
.annotate 'line', 4
new $P305, "ResizablePMCArray"
push $P305, "repeat"
@@ -4001,7 +4001,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>" :subid("69_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_control:sym<for>" :subid("69_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx323_tgt
.local int rx323_pos
@@ -4098,7 +4098,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>" :subid("70_1274022894.43745") :method
+.sub "!PREFIX__statement_control:sym<for>" :subid("70_1274564776.41408") :method
.annotate 'line', 4
new $P325, "ResizablePMCArray"
push $P325, "for"
@@ -4107,7 +4107,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>" :subid("71_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_control:sym<CATCH>" :subid("71_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx331_tgt
.local int rx331_pos
@@ -4204,7 +4204,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>" :subid("72_1274022894.43745") :method
+.sub "!PREFIX__statement_control:sym<CATCH>" :subid("72_1274564776.41408") :method
.annotate 'line', 4
new $P333, "ResizablePMCArray"
push $P333, "CATCH"
@@ -4213,7 +4213,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>" :subid("73_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_control:sym<CONTROL>" :subid("73_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx339_tgt
.local int rx339_pos
@@ -4310,7 +4310,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>" :subid("74_1274022894.43745") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>" :subid("74_1274564776.41408") :method
.annotate 'line', 4
new $P341, "ResizablePMCArray"
push $P341, "CONTROL"
@@ -4319,7 +4319,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_prefix" :subid("75_1274022894.43745") :method
+.sub "statement_prefix" :subid("75_1274564776.41408") :method
.annotate 'line', 195
$P347 = self."!protoregex"("statement_prefix")
.return ($P347)
@@ -4327,7 +4327,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix" :subid("76_1274022894.43745") :method
+.sub "!PREFIX__statement_prefix" :subid("76_1274564776.41408") :method
.annotate 'line', 195
$P349 = self."!PREFIX__!protoregex"("statement_prefix")
.return ($P349)
@@ -4335,7 +4335,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>" :subid("77_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_prefix:sym<INIT>" :subid("77_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx351_tgt
.local int rx351_pos
@@ -4414,7 +4414,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>" :subid("78_1274022894.43745") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>" :subid("78_1274564776.41408") :method
.annotate 'line', 4
$P353 = self."!PREFIX__!subrule"("blorst", "INIT")
new $P354, "ResizablePMCArray"
@@ -4424,7 +4424,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>" :subid("79_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_prefix:sym<try>" :subid("79_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx358_tgt
.local int rx358_pos
@@ -4505,7 +4505,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>" :subid("80_1274022894.43745") :method
+.sub "!PREFIX__statement_prefix:sym<try>" :subid("80_1274564776.41408") :method
.annotate 'line', 4
$P360 = self."!PREFIX__!subrule"("blorst", "try")
new $P361, "ResizablePMCArray"
@@ -4515,7 +4515,7 @@
.namespace ["NQP";"Grammar"]
-.sub "blorst" :subid("81_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "blorst" :subid("81_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx365_tgt
.local int rx365_pos
@@ -4604,7 +4604,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst" :subid("82_1274022894.43745") :method
+.sub "!PREFIX__blorst" :subid("82_1274564776.41408") :method
.annotate 'line', 4
new $P367, "ResizablePMCArray"
push $P367, ""
@@ -4613,7 +4613,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond" :subid("83_1274022894.43745") :method
+.sub "statement_mod_cond" :subid("83_1274564776.41408") :method
.annotate 'line', 209
$P371 = self."!protoregex"("statement_mod_cond")
.return ($P371)
@@ -4621,7 +4621,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond" :subid("84_1274022894.43745") :method
+.sub "!PREFIX__statement_mod_cond" :subid("84_1274564776.41408") :method
.annotate 'line', 209
$P373 = self."!PREFIX__!protoregex"("statement_mod_cond")
.return ($P373)
@@ -4629,7 +4629,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>" :subid("85_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_mod_cond:sym<if>" :subid("85_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx375_tgt
.local int rx375_pos
@@ -4718,7 +4718,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>" :subid("86_1274022894.43745") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>" :subid("86_1274564776.41408") :method
.annotate 'line', 4
new $P377, "ResizablePMCArray"
push $P377, "if"
@@ -4727,7 +4727,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>" :subid("87_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_mod_cond:sym<unless>" :subid("87_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx383_tgt
.local int rx383_pos
@@ -4816,7 +4816,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>" :subid("88_1274022894.43745") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>" :subid("88_1274564776.41408") :method
.annotate 'line', 4
new $P385, "ResizablePMCArray"
push $P385, "unless"
@@ -4825,7 +4825,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop" :subid("89_1274022894.43745") :method
+.sub "statement_mod_loop" :subid("89_1274564776.41408") :method
.annotate 'line', 214
$P391 = self."!protoregex"("statement_mod_loop")
.return ($P391)
@@ -4833,7 +4833,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop" :subid("90_1274022894.43745") :method
+.sub "!PREFIX__statement_mod_loop" :subid("90_1274564776.41408") :method
.annotate 'line', 214
$P393 = self."!PREFIX__!protoregex"("statement_mod_loop")
.return ($P393)
@@ -4841,7 +4841,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>" :subid("91_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_mod_loop:sym<while>" :subid("91_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx395_tgt
.local int rx395_pos
@@ -4930,7 +4930,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>" :subid("92_1274022894.43745") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>" :subid("92_1274564776.41408") :method
.annotate 'line', 4
new $P397, "ResizablePMCArray"
push $P397, "while"
@@ -4939,7 +4939,7 @@
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>" :subid("93_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "statement_mod_loop:sym<until>" :subid("93_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx403_tgt
.local int rx403_pos
@@ -5028,7 +5028,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>" :subid("94_1274022894.43745") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>" :subid("94_1274564776.41408") :method
.annotate 'line', 4
new $P405, "ResizablePMCArray"
push $P405, "until"
@@ -5037,7 +5037,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>" :subid("95_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<fatarrow>" :subid("95_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx411_tgt
.local int rx411_pos
@@ -5095,7 +5095,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>" :subid("96_1274022894.43745") :method
+.sub "!PREFIX__term:sym<fatarrow>" :subid("96_1274564776.41408") :method
.annotate 'line', 4
$P413 = self."!PREFIX__!subrule"("fatarrow", "")
new $P414, "ResizablePMCArray"
@@ -5105,7 +5105,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>" :subid("97_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<colonpair>" :subid("97_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx417_tgt
.local int rx417_pos
@@ -5163,7 +5163,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>" :subid("98_1274022894.43745") :method
+.sub "!PREFIX__term:sym<colonpair>" :subid("98_1274564776.41408") :method
.annotate 'line', 4
$P419 = self."!PREFIX__!subrule"("colonpair", "")
new $P420, "ResizablePMCArray"
@@ -5173,7 +5173,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>" :subid("99_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<variable>" :subid("99_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx423_tgt
.local int rx423_pos
@@ -5231,7 +5231,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>" :subid("100_1274022894.43745") :method
+.sub "!PREFIX__term:sym<variable>" :subid("100_1274564776.41408") :method
.annotate 'line', 4
$P425 = self."!PREFIX__!subrule"("variable", "")
new $P426, "ResizablePMCArray"
@@ -5241,7 +5241,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>" :subid("101_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<package_declarator>" :subid("101_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx429_tgt
.local int rx429_pos
@@ -5299,7 +5299,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>" :subid("102_1274022894.43745") :method
+.sub "!PREFIX__term:sym<package_declarator>" :subid("102_1274564776.41408") :method
.annotate 'line', 4
$P431 = self."!PREFIX__!subrule"("package_declarator", "")
new $P432, "ResizablePMCArray"
@@ -5309,7 +5309,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>" :subid("103_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<scope_declarator>" :subid("103_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx435_tgt
.local int rx435_pos
@@ -5367,7 +5367,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>" :subid("104_1274022894.43745") :method
+.sub "!PREFIX__term:sym<scope_declarator>" :subid("104_1274564776.41408") :method
.annotate 'line', 4
$P437 = self."!PREFIX__!subrule"("scope_declarator", "")
new $P438, "ResizablePMCArray"
@@ -5377,7 +5377,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>" :subid("105_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<routine_declarator>" :subid("105_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx441_tgt
.local int rx441_pos
@@ -5435,7 +5435,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>" :subid("106_1274022894.43745") :method
+.sub "!PREFIX__term:sym<routine_declarator>" :subid("106_1274564776.41408") :method
.annotate 'line', 4
$P443 = self."!PREFIX__!subrule"("routine_declarator", "")
new $P444, "ResizablePMCArray"
@@ -5445,7 +5445,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>" :subid("107_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<regex_declarator>" :subid("107_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx447_tgt
.local int rx447_pos
@@ -5503,7 +5503,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>" :subid("108_1274022894.43745") :method
+.sub "!PREFIX__term:sym<regex_declarator>" :subid("108_1274564776.41408") :method
.annotate 'line', 4
$P449 = self."!PREFIX__!subrule"("regex_declarator", "")
new $P450, "ResizablePMCArray"
@@ -5513,7 +5513,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>" :subid("109_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<statement_prefix>" :subid("109_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx453_tgt
.local int rx453_pos
@@ -5571,7 +5571,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>" :subid("110_1274022894.43745") :method
+.sub "!PREFIX__term:sym<statement_prefix>" :subid("110_1274564776.41408") :method
.annotate 'line', 4
$P455 = self."!PREFIX__!subrule"("statement_prefix", "")
new $P456, "ResizablePMCArray"
@@ -5581,7 +5581,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>" :subid("111_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<lambda>" :subid("111_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx459_tgt
.local int rx459_pos
@@ -5643,7 +5643,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>" :subid("112_1274022894.43745") :method
+.sub "!PREFIX__term:sym<lambda>" :subid("112_1274564776.41408") :method
.annotate 'line', 4
new $P461, "ResizablePMCArray"
push $P461, ""
@@ -5652,7 +5652,7 @@
.namespace ["NQP";"Grammar"]
-.sub "fatarrow" :subid("113_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "fatarrow" :subid("113_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx464_tgt
.local int rx464_pos
@@ -5745,7 +5745,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow" :subid("114_1274022894.43745") :method
+.sub "!PREFIX__fatarrow" :subid("114_1274564776.41408") :method
.annotate 'line', 4
$P466 = self."!PREFIX__!subrule"("key", "")
new $P467, "ResizablePMCArray"
@@ -5755,7 +5755,7 @@
.namespace ["NQP";"Grammar"]
-.sub "colonpair" :subid("115_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "colonpair" :subid("115_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx472_tgt
.local int rx472_pos
@@ -5884,7 +5884,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair" :subid("116_1274022894.43745") :method
+.sub "!PREFIX__colonpair" :subid("116_1274564776.41408") :method
.annotate 'line', 4
$P474 = self."!PREFIX__!subrule"("circumfix", ":")
$P475 = self."!PREFIX__!subrule"("identifier", ":")
@@ -5898,7 +5898,7 @@
.namespace ["NQP";"Grammar"]
-.sub "variable" :subid("117_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "variable" :subid("117_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx484_tgt
.local int rx484_pos
@@ -6053,7 +6053,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable" :subid("118_1274022894.43745") :method
+.sub "!PREFIX__variable" :subid("118_1274564776.41408") :method
.annotate 'line', 4
$P486 = self."!PREFIX__!subrule"("sigil", "")
$P487 = self."!PREFIX__!subrule"("sigil", "")
@@ -6068,7 +6068,7 @@
.namespace ["NQP";"Grammar"]
-.sub "sigil" :subid("119_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "sigil" :subid("119_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx496_tgt
.local int rx496_pos
@@ -6126,7 +6126,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil" :subid("120_1274022894.43745") :method
+.sub "!PREFIX__sigil" :subid("120_1274564776.41408") :method
.annotate 'line', 4
new $P498, "ResizablePMCArray"
push $P498, "&"
@@ -6138,7 +6138,7 @@
.namespace ["NQP";"Grammar"]
-.sub "twigil" :subid("121_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "twigil" :subid("121_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx501_tgt
.local int rx501_pos
@@ -6196,7 +6196,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil" :subid("122_1274022894.43745") :method
+.sub "!PREFIX__twigil" :subid("122_1274564776.41408") :method
.annotate 'line', 4
new $P503, "ResizablePMCArray"
push $P503, "?"
@@ -6207,7 +6207,7 @@
.namespace ["NQP";"Grammar"]
-.sub "package_declarator" :subid("123_1274022894.43745") :method
+.sub "package_declarator" :subid("123_1274564776.41408") :method
.annotate 'line', 254
$P506 = self."!protoregex"("package_declarator")
.return ($P506)
@@ -6215,7 +6215,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator" :subid("124_1274022894.43745") :method
+.sub "!PREFIX__package_declarator" :subid("124_1274564776.41408") :method
.annotate 'line', 254
$P508 = self."!PREFIX__!protoregex"("package_declarator")
.return ($P508)
@@ -6223,7 +6223,7 @@
.namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>" :subid("125_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "package_declarator:sym<module>" :subid("125_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx510_tgt
.local int rx510_pos
@@ -6302,7 +6302,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>" :subid("126_1274022894.43745") :method
+.sub "!PREFIX__package_declarator:sym<module>" :subid("126_1274564776.41408") :method
.annotate 'line', 4
$P512 = self."!PREFIX__!subrule"("package_def", "module")
new $P513, "ResizablePMCArray"
@@ -6312,7 +6312,7 @@
.namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>" :subid("127_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "package_declarator:sym<class>" :subid("127_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx517_tgt
.local int rx517_pos
@@ -6404,7 +6404,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>" :subid("128_1274022894.43745") :method
+.sub "!PREFIX__package_declarator:sym<class>" :subid("128_1274564776.41408") :method
.annotate 'line', 4
$P519 = self."!PREFIX__!subrule"("package_def", "grammar")
$P520 = self."!PREFIX__!subrule"("package_def", "class")
@@ -6416,7 +6416,7 @@
.namespace ["NQP";"Grammar"]
-.sub "package_def" :subid("129_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "package_def" :subid("129_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx526_tgt
.local int rx526_pos
@@ -6620,7 +6620,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def" :subid("130_1274022894.43745") :method
+.sub "!PREFIX__package_def" :subid("130_1274564776.41408") :method
.annotate 'line', 4
new $P528, "ResizablePMCArray"
push $P528, ""
@@ -6629,7 +6629,7 @@
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator" :subid("131_1274022894.43745") :method
+.sub "scope_declarator" :subid("131_1274564776.41408") :method
.annotate 'line', 268
$P549 = self."!protoregex"("scope_declarator")
.return ($P549)
@@ -6637,7 +6637,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator" :subid("132_1274022894.43745") :method
+.sub "!PREFIX__scope_declarator" :subid("132_1274564776.41408") :method
.annotate 'line', 268
$P551 = self."!PREFIX__!protoregex"("scope_declarator")
.return ($P551)
@@ -6645,7 +6645,7 @@
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>" :subid("133_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "scope_declarator:sym<my>" :subid("133_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx553_tgt
.local int rx553_pos
@@ -6724,7 +6724,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>" :subid("134_1274022894.43745") :method
+.sub "!PREFIX__scope_declarator:sym<my>" :subid("134_1274564776.41408") :method
.annotate 'line', 4
$P555 = self."!PREFIX__!subrule"("scoped", "my")
new $P556, "ResizablePMCArray"
@@ -6734,7 +6734,7 @@
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>" :subid("135_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "scope_declarator:sym<our>" :subid("135_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx560_tgt
.local int rx560_pos
@@ -6813,7 +6813,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>" :subid("136_1274022894.43745") :method
+.sub "!PREFIX__scope_declarator:sym<our>" :subid("136_1274564776.41408") :method
.annotate 'line', 4
$P562 = self."!PREFIX__!subrule"("scoped", "our")
new $P563, "ResizablePMCArray"
@@ -6823,7 +6823,7 @@
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>" :subid("137_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "scope_declarator:sym<has>" :subid("137_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx567_tgt
.local int rx567_pos
@@ -6902,7 +6902,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>" :subid("138_1274022894.43745") :method
+.sub "!PREFIX__scope_declarator:sym<has>" :subid("138_1274564776.41408") :method
.annotate 'line', 4
$P569 = self."!PREFIX__!subrule"("scoped", "has")
new $P570, "ResizablePMCArray"
@@ -6912,7 +6912,7 @@
.namespace ["NQP";"Grammar"]
-.sub "scoped" :subid("139_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "scoped" :subid("139_1274564776.41408") :method :outer("11_1274564776.41408")
.param pmc param_574
.annotate 'line', 273
.lex "$*SCOPE", param_574
@@ -7030,7 +7030,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped" :subid("140_1274022894.43745") :method
+.sub "!PREFIX__scoped" :subid("140_1274564776.41408") :method
.annotate 'line', 4
new $P577, "ResizablePMCArray"
push $P577, ""
@@ -7040,7 +7040,7 @@
.namespace ["NQP";"Grammar"]
-.sub "typename" :subid("141_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "typename" :subid("141_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx588_tgt
.local int rx588_pos
@@ -7098,7 +7098,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__typename" :subid("142_1274022894.43745") :method
+.sub "!PREFIX__typename" :subid("142_1274564776.41408") :method
.annotate 'line', 4
$P590 = self."!PREFIX__!subrule"("name", "")
new $P591, "ResizablePMCArray"
@@ -7108,7 +7108,7 @@
.namespace ["NQP";"Grammar"]
-.sub "declarator" :subid("143_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "declarator" :subid("143_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx594_tgt
.local int rx594_pos
@@ -7182,7 +7182,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__declarator" :subid("144_1274022894.43745") :method
+.sub "!PREFIX__declarator" :subid("144_1274564776.41408") :method
.annotate 'line', 4
$P596 = self."!PREFIX__!subrule"("routine_declarator", "")
$P597 = self."!PREFIX__!subrule"("variable_declarator", "")
@@ -7194,7 +7194,7 @@
.namespace ["NQP";"Grammar"]
-.sub "variable_declarator" :subid("145_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "variable_declarator" :subid("145_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx602_tgt
.local int rx602_pos
@@ -7252,7 +7252,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator" :subid("146_1274022894.43745") :method
+.sub "!PREFIX__variable_declarator" :subid("146_1274564776.41408") :method
.annotate 'line', 4
$P604 = self."!PREFIX__!subrule"("variable", "")
new $P605, "ResizablePMCArray"
@@ -7262,7 +7262,7 @@
.namespace ["NQP";"Grammar"]
-.sub "routine_declarator" :subid("147_1274022894.43745") :method
+.sub "routine_declarator" :subid("147_1274564776.41408") :method
.annotate 'line', 287
$P608 = self."!protoregex"("routine_declarator")
.return ($P608)
@@ -7270,7 +7270,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator" :subid("148_1274022894.43745") :method
+.sub "!PREFIX__routine_declarator" :subid("148_1274564776.41408") :method
.annotate 'line', 287
$P610 = self."!PREFIX__!protoregex"("routine_declarator")
.return ($P610)
@@ -7278,7 +7278,7 @@
.namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>" :subid("149_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "routine_declarator:sym<sub>" :subid("149_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx612_tgt
.local int rx612_pos
@@ -7357,7 +7357,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>" :subid("150_1274022894.43745") :method
+.sub "!PREFIX__routine_declarator:sym<sub>" :subid("150_1274564776.41408") :method
.annotate 'line', 4
$P614 = self."!PREFIX__!subrule"("routine_def", "sub")
new $P615, "ResizablePMCArray"
@@ -7367,7 +7367,7 @@
.namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>" :subid("151_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "routine_declarator:sym<method>" :subid("151_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx619_tgt
.local int rx619_pos
@@ -7446,7 +7446,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>" :subid("152_1274022894.43745") :method
+.sub "!PREFIX__routine_declarator:sym<method>" :subid("152_1274564776.41408") :method
.annotate 'line', 4
$P621 = self."!PREFIX__!subrule"("method_def", "method")
new $P622, "ResizablePMCArray"
@@ -7456,7 +7456,7 @@
.namespace ["NQP";"Grammar"]
-.sub "routine_def" :subid("153_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "routine_def" :subid("153_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx626_tgt
.local int rx626_pos
@@ -7466,7 +7466,7 @@
.local pmc rx626_cur
(rx626_cur, rx626_pos, rx626_tgt) = self."!cursor_start"()
rx626_cur."!cursor_debug"("START ", "routine_def")
- rx626_cur."!cursor_caparray"("sigil", "deflongname")
+ rx626_cur."!cursor_caparray"("deflongname", "sigil")
.lex unicode:"$\x{a2}", rx626_cur
.local pmc match
.lex "$/", match
@@ -7663,7 +7663,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def" :subid("154_1274022894.43745") :method
+.sub "!PREFIX__routine_def" :subid("154_1274564776.41408") :method
.annotate 'line', 4
new $P628, "ResizablePMCArray"
push $P628, ""
@@ -7672,7 +7672,7 @@
.namespace ["NQP";"Grammar"]
-.sub "method_def" :subid("155_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "method_def" :subid("155_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx650_tgt
.local int rx650_pos
@@ -7842,7 +7842,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def" :subid("156_1274022894.43745") :method
+.sub "!PREFIX__method_def" :subid("156_1274564776.41408") :method
.annotate 'line', 4
new $P652, "ResizablePMCArray"
push $P652, ""
@@ -7851,7 +7851,7 @@
.namespace ["NQP";"Grammar"]
-.sub "signature" :subid("157_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "signature" :subid("157_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx669_tgt
.local int rx669_pos
@@ -7941,7 +7941,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature" :subid("158_1274022894.43745") :method
+.sub "!PREFIX__signature" :subid("158_1274564776.41408") :method
.annotate 'line', 4
new $P671, "ResizablePMCArray"
push $P671, ""
@@ -7950,7 +7950,7 @@
.namespace ["NQP";"Grammar"]
-.sub "parameter" :subid("159_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "parameter" :subid("159_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx678_tgt
.local int rx678_pos
@@ -7960,7 +7960,7 @@
.local pmc rx678_cur
(rx678_cur, rx678_pos, rx678_tgt) = self."!cursor_start"()
rx678_cur."!cursor_debug"("START ", "parameter")
- rx678_cur."!cursor_caparray"("typename", "default_value")
+ rx678_cur."!cursor_caparray"("default_value", "typename")
.lex unicode:"$\x{a2}", rx678_cur
.local pmc match
.lex "$/", match
@@ -8132,7 +8132,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter" :subid("160_1274022894.43745") :method
+.sub "!PREFIX__parameter" :subid("160_1274564776.41408") :method
.annotate 'line', 4
new $P680, "ResizablePMCArray"
push $P680, ""
@@ -8141,7 +8141,7 @@
.namespace ["NQP";"Grammar"]
-.sub "param_var" :subid("161_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "param_var" :subid("161_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx692_tgt
.local int rx692_pos
@@ -8249,7 +8249,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var" :subid("162_1274022894.43745") :method
+.sub "!PREFIX__param_var" :subid("162_1274564776.41408") :method
.annotate 'line', 4
$P694 = self."!PREFIX__!subrule"("sigil", "")
new $P695, "ResizablePMCArray"
@@ -8259,7 +8259,7 @@
.namespace ["NQP";"Grammar"]
-.sub "named_param" :subid("163_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "named_param" :subid("163_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx702_tgt
.local int rx702_pos
@@ -8325,7 +8325,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param" :subid("164_1274022894.43745") :method
+.sub "!PREFIX__named_param" :subid("164_1274564776.41408") :method
.annotate 'line', 4
$P704 = self."!PREFIX__!subrule"("param_var", ":")
new $P705, "ResizablePMCArray"
@@ -8335,7 +8335,7 @@
.namespace ["NQP";"Grammar"]
-.sub "default_value" :subid("165_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "default_value" :subid("165_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx708_tgt
.local int rx708_pos
@@ -8415,7 +8415,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value" :subid("166_1274022894.43745") :method
+.sub "!PREFIX__default_value" :subid("166_1274564776.41408") :method
.annotate 'line', 4
new $P710, "ResizablePMCArray"
push $P710, ""
@@ -8424,7 +8424,7 @@
.namespace ["NQP";"Grammar"]
-.sub "regex_declarator" :subid("167_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "regex_declarator" :subid("167_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx716_tgt
.local int rx716_pos
@@ -8825,7 +8825,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator" :subid("168_1274022894.43745") :method
+.sub "!PREFIX__regex_declarator" :subid("168_1274564776.41408") :method
.annotate 'line', 4
new $P718, "ResizablePMCArray"
push $P718, ""
@@ -8834,7 +8834,7 @@
.namespace ["NQP";"Grammar"]
-.sub "dotty" :subid("169_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "dotty" :subid("169_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx753_tgt
.local int rx753_pos
@@ -8990,7 +8990,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty" :subid("170_1274022894.43745") :method
+.sub "!PREFIX__dotty" :subid("170_1274564776.41408") :method
.annotate 'line', 4
$P755 = self."!PREFIX__!subrule"("longname=identifier", ".")
new $P756, "ResizablePMCArray"
@@ -9002,7 +9002,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term" :subid("171_1274022894.43745") :method
+.sub "term" :subid("171_1274564776.41408") :method
.annotate 'line', 360
$P764 = self."!protoregex"("term")
.return ($P764)
@@ -9010,7 +9010,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term" :subid("172_1274022894.43745") :method
+.sub "!PREFIX__term" :subid("172_1274564776.41408") :method
.annotate 'line', 360
$P766 = self."!PREFIX__!protoregex"("term")
.return ($P766)
@@ -9018,7 +9018,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<self>" :subid("173_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<self>" :subid("173_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx768_tgt
.local int rx768_pos
@@ -9098,7 +9098,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>" :subid("174_1274022894.43745") :method
+.sub "!PREFIX__term:sym<self>" :subid("174_1274564776.41408") :method
.annotate 'line', 4
new $P770, "ResizablePMCArray"
push $P770, "self"
@@ -9107,7 +9107,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>" :subid("175_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<identifier>" :subid("175_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx774_tgt
.local int rx774_pos
@@ -9179,7 +9179,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>" :subid("176_1274022894.43745") :method
+.sub "!PREFIX__term:sym<identifier>" :subid("176_1274564776.41408") :method
.annotate 'line', 4
$P776 = self."!PREFIX__!subrule"("identifier", "")
new $P777, "ResizablePMCArray"
@@ -9189,7 +9189,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<name>" :subid("177_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<name>" :subid("177_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx780_tgt
.local int rx780_pos
@@ -9262,7 +9262,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>" :subid("178_1274022894.43745") :method
+.sub "!PREFIX__term:sym<name>" :subid("178_1274564776.41408") :method
.annotate 'line', 4
$P782 = self."!PREFIX__!subrule"("name", "")
new $P783, "ResizablePMCArray"
@@ -9272,7 +9272,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>" :subid("179_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<pir::op>" :subid("179_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx788_tgt
.local int rx788_pos
@@ -9365,7 +9365,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>" :subid("180_1274022894.43745") :method
+.sub "!PREFIX__term:sym<pir::op>" :subid("180_1274564776.41408") :method
.annotate 'line', 4
new $P790, "ResizablePMCArray"
push $P790, "pir::"
@@ -9374,7 +9374,7 @@
.namespace ["NQP";"Grammar"]
-.sub "args" :subid("181_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "args" :subid("181_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx796_tgt
.local int rx796_pos
@@ -9446,7 +9446,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args" :subid("182_1274022894.43745") :method
+.sub "!PREFIX__args" :subid("182_1274564776.41408") :method
.annotate 'line', 4
$P798 = self."!PREFIX__!subrule"("arglist", "(")
new $P799, "ResizablePMCArray"
@@ -9456,7 +9456,7 @@
.namespace ["NQP";"Grammar"]
-.sub "arglist" :subid("183_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "arglist" :subid("183_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx802_tgt
.local int rx802_pos
@@ -9528,7 +9528,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist" :subid("184_1274022894.43745") :method
+.sub "!PREFIX__arglist" :subid("184_1274564776.41408") :method
.annotate 'line', 4
$P804 = self."!PREFIX__!subrule"("", "")
new $P805, "ResizablePMCArray"
@@ -9538,7 +9538,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<value>" :subid("185_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<value>" :subid("185_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx809_tgt
.local int rx809_pos
@@ -9596,7 +9596,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>" :subid("186_1274022894.43745") :method
+.sub "!PREFIX__term:sym<value>" :subid("186_1274564776.41408") :method
.annotate 'line', 4
$P811 = self."!PREFIX__!subrule"("value", "")
new $P812, "ResizablePMCArray"
@@ -9606,7 +9606,7 @@
.namespace ["NQP";"Grammar"]
-.sub "value" :subid("187_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "value" :subid("187_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx815_tgt
.local int rx815_pos
@@ -9680,7 +9680,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value" :subid("188_1274022894.43745") :method
+.sub "!PREFIX__value" :subid("188_1274564776.41408") :method
.annotate 'line', 4
$P817 = self."!PREFIX__!subrule"("number", "")
$P818 = self."!PREFIX__!subrule"("quote", "")
@@ -9692,7 +9692,7 @@
.namespace ["NQP";"Grammar"]
-.sub "number" :subid("189_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "number" :subid("189_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx823_tgt
.local int rx823_pos
@@ -9792,7 +9792,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number" :subid("190_1274022894.43745") :method
+.sub "!PREFIX__number" :subid("190_1274564776.41408") :method
.annotate 'line', 4
new $P825, "ResizablePMCArray"
push $P825, ""
@@ -9801,7 +9801,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote" :subid("191_1274022894.43745") :method
+.sub "quote" :subid("191_1274564776.41408") :method
.annotate 'line', 401
$P832 = self."!protoregex"("quote")
.return ($P832)
@@ -9809,7 +9809,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote" :subid("192_1274022894.43745") :method
+.sub "!PREFIX__quote" :subid("192_1274564776.41408") :method
.annotate 'line', 401
$P834 = self."!PREFIX__!protoregex"("quote")
.return ($P834)
@@ -9817,7 +9817,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>" :subid("193_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote:sym<apos>" :subid("193_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx836_tgt
.local int rx836_pos
@@ -9881,7 +9881,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>" :subid("194_1274022894.43745") :method
+.sub "!PREFIX__quote:sym<apos>" :subid("194_1274564776.41408") :method
.annotate 'line', 4
new $P838, "ResizablePMCArray"
push $P838, "'"
@@ -9890,7 +9890,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>" :subid("195_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote:sym<dblq>" :subid("195_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx841_tgt
.local int rx841_pos
@@ -9954,7 +9954,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>" :subid("196_1274022894.43745") :method
+.sub "!PREFIX__quote:sym<dblq>" :subid("196_1274564776.41408") :method
.annotate 'line', 4
new $P843, "ResizablePMCArray"
push $P843, "\""
@@ -9963,7 +9963,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>" :subid("197_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote:sym<q>" :subid("197_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx846_tgt
.local int rx846_pos
@@ -10047,7 +10047,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>" :subid("198_1274022894.43745") :method
+.sub "!PREFIX__quote:sym<q>" :subid("198_1274564776.41408") :method
.annotate 'line', 4
$P848 = self."!PREFIX__!subrule"("", "q")
new $P849, "ResizablePMCArray"
@@ -10057,7 +10057,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>" :subid("199_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote:sym<qq>" :subid("199_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx852_tgt
.local int rx852_pos
@@ -10141,7 +10141,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>" :subid("200_1274022894.43745") :method
+.sub "!PREFIX__quote:sym<qq>" :subid("200_1274564776.41408") :method
.annotate 'line', 4
$P854 = self."!PREFIX__!subrule"("", "qq")
new $P855, "ResizablePMCArray"
@@ -10151,7 +10151,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>" :subid("201_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote:sym<Q>" :subid("201_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx858_tgt
.local int rx858_pos
@@ -10235,7 +10235,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>" :subid("202_1274022894.43745") :method
+.sub "!PREFIX__quote:sym<Q>" :subid("202_1274564776.41408") :method
.annotate 'line', 4
$P860 = self."!PREFIX__!subrule"("", "Q")
new $P861, "ResizablePMCArray"
@@ -10245,7 +10245,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>" :subid("203_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote:sym<Q:PIR>" :subid("203_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx864_tgt
.local int rx864_pos
@@ -10315,7 +10315,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>" :subid("204_1274022894.43745") :method
+.sub "!PREFIX__quote:sym<Q:PIR>" :subid("204_1274564776.41408") :method
.annotate 'line', 4
$P866 = self."!PREFIX__!subrule"("", "Q:PIR")
new $P867, "ResizablePMCArray"
@@ -10325,7 +10325,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />" :subid("205_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote:sym</ />" :subid("205_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx870_tgt
.local int rx870_pos
@@ -10410,7 +10410,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />" :subid("206_1274022894.43745") :method
+.sub "!PREFIX__quote:sym</ />" :subid("206_1274564776.41408") :method
.annotate 'line', 4
$P872 = self."!PREFIX__!subrule"("", "/")
new $P873, "ResizablePMCArray"
@@ -10420,7 +10420,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>" :subid("207_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote_escape:sym<$>" :subid("207_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx876_tgt
.local int rx876_pos
@@ -10488,7 +10488,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>" :subid("208_1274022894.43745") :method
+.sub "!PREFIX__quote_escape:sym<$>" :subid("208_1274564776.41408") :method
.annotate 'line', 4
new $P878, "ResizablePMCArray"
push $P878, "$"
@@ -10497,7 +10497,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>" :subid("209_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote_escape:sym<{ }>" :subid("209_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx881_tgt
.local int rx881_pos
@@ -10565,7 +10565,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>" :subid("210_1274022894.43745") :method
+.sub "!PREFIX__quote_escape:sym<{ }>" :subid("210_1274564776.41408") :method
.annotate 'line', 4
new $P883, "ResizablePMCArray"
push $P883, "{"
@@ -10574,7 +10574,7 @@
.namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<esc>" :subid("211_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "quote_escape:sym<esc>" :subid("211_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx886_tgt
.local int rx886_pos
@@ -10636,7 +10636,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>" :subid("212_1274022894.43745") :method
+.sub "!PREFIX__quote_escape:sym<esc>" :subid("212_1274564776.41408") :method
.annotate 'line', 4
new $P888, "ResizablePMCArray"
push $P888, "\\e"
@@ -10645,7 +10645,7 @@
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>" :subid("213_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "circumfix:sym<( )>" :subid("213_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx891_tgt
.local int rx891_pos
@@ -10729,7 +10729,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>" :subid("214_1274022894.43745") :method
+.sub "!PREFIX__circumfix:sym<( )>" :subid("214_1274564776.41408") :method
.annotate 'line', 4
$P893 = self."!PREFIX__!subrule"("", "(")
new $P894, "ResizablePMCArray"
@@ -10739,7 +10739,7 @@
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>" :subid("215_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "circumfix:sym<[ ]>" :subid("215_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx899_tgt
.local int rx899_pos
@@ -10823,7 +10823,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>" :subid("216_1274022894.43745") :method
+.sub "!PREFIX__circumfix:sym<[ ]>" :subid("216_1274564776.41408") :method
.annotate 'line', 4
$P901 = self."!PREFIX__!subrule"("", "[")
new $P902, "ResizablePMCArray"
@@ -10833,7 +10833,7 @@
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>" :subid("217_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "circumfix:sym<ang>" :subid("217_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx907_tgt
.local int rx907_pos
@@ -10897,7 +10897,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>" :subid("218_1274022894.43745") :method
+.sub "!PREFIX__circumfix:sym<ang>" :subid("218_1274564776.41408") :method
.annotate 'line', 4
new $P909, "ResizablePMCArray"
push $P909, "<"
@@ -10906,7 +10906,7 @@
.namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("219_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("219_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx912_tgt
.local int rx912_pos
@@ -10970,7 +10970,7 @@
.namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>" :subid("220_1274022894.43745") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>" :subid("220_1274564776.41408") :method
.annotate 'line', 4
new $P914, "ResizablePMCArray"
push $P914, unicode:"\x{ab}"
@@ -10979,7 +10979,7 @@
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>" :subid("221_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "circumfix:sym<{ }>" :subid("221_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx917_tgt
.local int rx917_pos
@@ -11043,7 +11043,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>" :subid("222_1274022894.43745") :method
+.sub "!PREFIX__circumfix:sym<{ }>" :subid("222_1274564776.41408") :method
.annotate 'line', 4
new $P919, "ResizablePMCArray"
push $P919, "{"
@@ -11052,7 +11052,7 @@
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>" :subid("223_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "circumfix:sym<sigil>" :subid("223_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx922_tgt
.local int rx922_pos
@@ -11142,7 +11142,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>" :subid("224_1274022894.43745") :method
+.sub "!PREFIX__circumfix:sym<sigil>" :subid("224_1274564776.41408") :method
.annotate 'line', 4
$P924 = self."!PREFIX__!subrule"("sigil", "")
new $P925, "ResizablePMCArray"
@@ -11152,7 +11152,7 @@
.namespace ["NQP";"Grammar"]
-.sub "semilist" :subid("225_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "semilist" :subid("225_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 4
.local string rx930_tgt
.local int rx930_pos
@@ -11220,7 +11220,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist" :subid("226_1274022894.43745") :method
+.sub "!PREFIX__semilist" :subid("226_1274564776.41408") :method
.annotate 'line', 4
new $P932, "ResizablePMCArray"
push $P932, ""
@@ -11229,7 +11229,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infixish" :subid("227_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infixish" :subid("227_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx937_tgt
.local int rx937_pos
@@ -11291,7 +11291,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish" :subid("228_1274022894.43745") :method
+.sub "!PREFIX__infixish" :subid("228_1274564776.41408") :method
.annotate 'line', 431
new $P939, "ResizablePMCArray"
push $P939, ""
@@ -11300,7 +11300,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infixstopper" :subid("229_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infixstopper" :subid("229_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx942_tgt
.local int rx942_pos
@@ -11355,7 +11355,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper" :subid("230_1274022894.43745") :method
+.sub "!PREFIX__infixstopper" :subid("230_1274564776.41408") :method
.annotate 'line', 431
new $P944, "ResizablePMCArray"
push $P944, ""
@@ -11364,7 +11364,7 @@
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>" :subid("231_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "postcircumfix:sym<[ ]>" :subid("231_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx947_tgt
.local int rx947_pos
@@ -11450,7 +11450,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>" :subid("232_1274022894.43745") :method
+.sub "!PREFIX__postcircumfix:sym<[ ]>" :subid("232_1274564776.41408") :method
.annotate 'line', 431
$P949 = self."!PREFIX__!subrule"("", "[")
new $P950, "ResizablePMCArray"
@@ -11460,7 +11460,7 @@
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>" :subid("233_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "postcircumfix:sym<{ }>" :subid("233_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx953_tgt
.local int rx953_pos
@@ -11546,7 +11546,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>" :subid("234_1274022894.43745") :method
+.sub "!PREFIX__postcircumfix:sym<{ }>" :subid("234_1274564776.41408") :method
.annotate 'line', 431
$P955 = self."!PREFIX__!subrule"("", "{")
new $P956, "ResizablePMCArray"
@@ -11556,7 +11556,7 @@
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>" :subid("235_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "postcircumfix:sym<ang>" :subid("235_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx959_tgt
.local int rx959_pos
@@ -11629,7 +11629,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>" :subid("236_1274022894.43745") :method
+.sub "!PREFIX__postcircumfix:sym<ang>" :subid("236_1274564776.41408") :method
.annotate 'line', 431
new $P961, "ResizablePMCArray"
push $P961, "<"
@@ -11638,7 +11638,7 @@
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>" :subid("237_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "postcircumfix:sym<( )>" :subid("237_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx964_tgt
.local int rx964_pos
@@ -11724,7 +11724,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>" :subid("238_1274022894.43745") :method
+.sub "!PREFIX__postcircumfix:sym<( )>" :subid("238_1274564776.41408") :method
.annotate 'line', 431
$P966 = self."!PREFIX__!subrule"("", "(")
new $P967, "ResizablePMCArray"
@@ -11734,7 +11734,7 @@
.namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>" :subid("239_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "postfix:sym<.>" :subid("239_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx970_tgt
.local int rx970_pos
@@ -11799,7 +11799,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>" :subid("240_1274022894.43745") :method
+.sub "!PREFIX__postfix:sym<.>" :subid("240_1274564776.41408") :method
.annotate 'line', 431
$P972 = self."!PREFIX__!subrule"("dotty", "")
new $P973, "ResizablePMCArray"
@@ -11809,7 +11809,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>" :subid("241_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<++>" :subid("241_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx976_tgt
.local int rx976_pos
@@ -11888,7 +11888,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>" :subid("242_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<++>" :subid("242_1274564776.41408") :method
.annotate 'line', 431
$P978 = self."!PREFIX__!subrule"("O", "++")
new $P979, "ResizablePMCArray"
@@ -11898,7 +11898,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->" :subid("243_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<-->" :subid("243_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx983_tgt
.local int rx983_pos
@@ -11977,7 +11977,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->" :subid("244_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<-->" :subid("244_1274564776.41408") :method
.annotate 'line', 431
$P985 = self."!PREFIX__!subrule"("O", "--")
new $P986, "ResizablePMCArray"
@@ -11987,7 +11987,7 @@
.namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>" :subid("245_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "postfix:sym<++>" :subid("245_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx990_tgt
.local int rx990_pos
@@ -12066,7 +12066,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>" :subid("246_1274022894.43745") :method
+.sub "!PREFIX__postfix:sym<++>" :subid("246_1274564776.41408") :method
.annotate 'line', 431
$P992 = self."!PREFIX__!subrule"("O", "++")
new $P993, "ResizablePMCArray"
@@ -12076,7 +12076,7 @@
.namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->" :subid("247_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "postfix:sym<-->" :subid("247_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx997_tgt
.local int rx997_pos
@@ -12155,7 +12155,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->" :subid("248_1274022894.43745") :method
+.sub "!PREFIX__postfix:sym<-->" :subid("248_1274564776.41408") :method
.annotate 'line', 431
$P999 = self."!PREFIX__!subrule"("O", "--")
new $P1000, "ResizablePMCArray"
@@ -12165,7 +12165,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>" :subid("249_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<**>" :subid("249_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1004_tgt
.local int rx1004_pos
@@ -12244,7 +12244,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>" :subid("250_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<**>" :subid("250_1274564776.41408") :method
.annotate 'line', 431
$P1006 = self."!PREFIX__!subrule"("O", "**")
new $P1007, "ResizablePMCArray"
@@ -12254,7 +12254,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>" :subid("251_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<+>" :subid("251_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1011_tgt
.local int rx1011_pos
@@ -12333,7 +12333,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>" :subid("252_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<+>" :subid("252_1274564776.41408") :method
.annotate 'line', 431
$P1013 = self."!PREFIX__!subrule"("O", "+")
new $P1014, "ResizablePMCArray"
@@ -12343,7 +12343,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>" :subid("253_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<~>" :subid("253_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1018_tgt
.local int rx1018_pos
@@ -12422,7 +12422,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>" :subid("254_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<~>" :subid("254_1274564776.41408") :method
.annotate 'line', 431
$P1020 = self."!PREFIX__!subrule"("O", "~")
new $P1021, "ResizablePMCArray"
@@ -12432,7 +12432,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->" :subid("255_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<->" :subid("255_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1025_tgt
.local int rx1025_pos
@@ -12521,7 +12521,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->" :subid("256_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<->" :subid("256_1274564776.41408") :method
.annotate 'line', 431
new $P1027, "ResizablePMCArray"
push $P1027, "-"
@@ -12530,7 +12530,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>" :subid("257_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<?>" :subid("257_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1031_tgt
.local int rx1031_pos
@@ -12609,7 +12609,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>" :subid("258_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<?>" :subid("258_1274564776.41408") :method
.annotate 'line', 431
$P1033 = self."!PREFIX__!subrule"("O", "?")
new $P1034, "ResizablePMCArray"
@@ -12619,7 +12619,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>" :subid("259_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<!>" :subid("259_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1038_tgt
.local int rx1038_pos
@@ -12698,7 +12698,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>" :subid("260_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<!>" :subid("260_1274564776.41408") :method
.annotate 'line', 431
$P1040 = self."!PREFIX__!subrule"("O", "!")
new $P1041, "ResizablePMCArray"
@@ -12708,7 +12708,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>" :subid("261_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<|>" :subid("261_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1045_tgt
.local int rx1045_pos
@@ -12787,7 +12787,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>" :subid("262_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<|>" :subid("262_1274564776.41408") :method
.annotate 'line', 431
$P1047 = self."!PREFIX__!subrule"("O", "|")
new $P1048, "ResizablePMCArray"
@@ -12797,7 +12797,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>" :subid("263_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<*>" :subid("263_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1052_tgt
.local int rx1052_pos
@@ -12876,7 +12876,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>" :subid("264_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<*>" :subid("264_1274564776.41408") :method
.annotate 'line', 431
$P1054 = self."!PREFIX__!subrule"("O", "*")
new $P1055, "ResizablePMCArray"
@@ -12886,7 +12886,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym</>" :subid("265_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym</>" :subid("265_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1059_tgt
.local int rx1059_pos
@@ -12965,7 +12965,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>" :subid("266_1274022894.43745") :method
+.sub "!PREFIX__infix:sym</>" :subid("266_1274564776.41408") :method
.annotate 'line', 431
$P1061 = self."!PREFIX__!subrule"("O", "/")
new $P1062, "ResizablePMCArray"
@@ -12975,7 +12975,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>" :subid("267_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<%>" :subid("267_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1066_tgt
.local int rx1066_pos
@@ -13054,7 +13054,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>" :subid("268_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<%>" :subid("268_1274564776.41408") :method
.annotate 'line', 431
$P1068 = self."!PREFIX__!subrule"("O", "%")
new $P1069, "ResizablePMCArray"
@@ -13064,7 +13064,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>" :subid("269_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<+>" :subid("269_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1073_tgt
.local int rx1073_pos
@@ -13143,7 +13143,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>" :subid("270_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<+>" :subid("270_1274564776.41408") :method
.annotate 'line', 431
$P1075 = self."!PREFIX__!subrule"("O", "+")
new $P1076, "ResizablePMCArray"
@@ -13153,7 +13153,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<->" :subid("271_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<->" :subid("271_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1080_tgt
.local int rx1080_pos
@@ -13232,7 +13232,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->" :subid("272_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<->" :subid("272_1274564776.41408") :method
.annotate 'line', 431
$P1082 = self."!PREFIX__!subrule"("O", "-")
new $P1083, "ResizablePMCArray"
@@ -13242,7 +13242,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>" :subid("273_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<~>" :subid("273_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1087_tgt
.local int rx1087_pos
@@ -13321,7 +13321,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>" :subid("274_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<~>" :subid("274_1274564776.41408") :method
.annotate 'line', 431
$P1089 = self."!PREFIX__!subrule"("O", "~")
new $P1090, "ResizablePMCArray"
@@ -13331,7 +13331,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>" :subid("275_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<==>" :subid("275_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1094_tgt
.local int rx1094_pos
@@ -13410,7 +13410,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>" :subid("276_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<==>" :subid("276_1274564776.41408") :method
.annotate 'line', 431
$P1096 = self."!PREFIX__!subrule"("O", "==")
new $P1097, "ResizablePMCArray"
@@ -13420,7 +13420,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>" :subid("277_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<!=>" :subid("277_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1101_tgt
.local int rx1101_pos
@@ -13499,7 +13499,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>" :subid("278_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<!=>" :subid("278_1274564776.41408") :method
.annotate 'line', 431
$P1103 = self."!PREFIX__!subrule"("O", "!=")
new $P1104, "ResizablePMCArray"
@@ -13509,7 +13509,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>" :subid("279_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<<=>" :subid("279_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1108_tgt
.local int rx1108_pos
@@ -13588,7 +13588,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>" :subid("280_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<<=>" :subid("280_1274564776.41408") :method
.annotate 'line', 431
$P1110 = self."!PREFIX__!subrule"("O", "<=")
new $P1111, "ResizablePMCArray"
@@ -13598,7 +13598,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>" :subid("281_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<>=>" :subid("281_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1115_tgt
.local int rx1115_pos
@@ -13677,7 +13677,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>" :subid("282_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<>=>" :subid("282_1274564776.41408") :method
.annotate 'line', 431
$P1117 = self."!PREFIX__!subrule"("O", ">=")
new $P1118, "ResizablePMCArray"
@@ -13687,7 +13687,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>" :subid("283_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<<>" :subid("283_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1122_tgt
.local int rx1122_pos
@@ -13766,7 +13766,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>" :subid("284_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<<>" :subid("284_1274564776.41408") :method
.annotate 'line', 431
$P1124 = self."!PREFIX__!subrule"("O", "<")
new $P1125, "ResizablePMCArray"
@@ -13776,7 +13776,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>" :subid("285_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<>>" :subid("285_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1129_tgt
.local int rx1129_pos
@@ -13855,7 +13855,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>" :subid("286_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<>>" :subid("286_1274564776.41408") :method
.annotate 'line', 431
$P1131 = self."!PREFIX__!subrule"("O", ">")
new $P1132, "ResizablePMCArray"
@@ -13865,7 +13865,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>" :subid("287_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<eq>" :subid("287_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1136_tgt
.local int rx1136_pos
@@ -13944,7 +13944,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>" :subid("288_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<eq>" :subid("288_1274564776.41408") :method
.annotate 'line', 431
$P1138 = self."!PREFIX__!subrule"("O", "eq")
new $P1139, "ResizablePMCArray"
@@ -13954,7 +13954,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>" :subid("289_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<ne>" :subid("289_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1143_tgt
.local int rx1143_pos
@@ -14033,7 +14033,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>" :subid("290_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<ne>" :subid("290_1274564776.41408") :method
.annotate 'line', 431
$P1145 = self."!PREFIX__!subrule"("O", "ne")
new $P1146, "ResizablePMCArray"
@@ -14043,7 +14043,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>" :subid("291_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<le>" :subid("291_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1150_tgt
.local int rx1150_pos
@@ -14122,7 +14122,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>" :subid("292_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<le>" :subid("292_1274564776.41408") :method
.annotate 'line', 431
$P1152 = self."!PREFIX__!subrule"("O", "le")
new $P1153, "ResizablePMCArray"
@@ -14132,7 +14132,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>" :subid("293_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<ge>" :subid("293_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1157_tgt
.local int rx1157_pos
@@ -14211,7 +14211,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>" :subid("294_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<ge>" :subid("294_1274564776.41408") :method
.annotate 'line', 431
$P1159 = self."!PREFIX__!subrule"("O", "ge")
new $P1160, "ResizablePMCArray"
@@ -14221,7 +14221,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>" :subid("295_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<lt>" :subid("295_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1164_tgt
.local int rx1164_pos
@@ -14300,7 +14300,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>" :subid("296_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<lt>" :subid("296_1274564776.41408") :method
.annotate 'line', 431
$P1166 = self."!PREFIX__!subrule"("O", "lt")
new $P1167, "ResizablePMCArray"
@@ -14310,7 +14310,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>" :subid("297_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<gt>" :subid("297_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1171_tgt
.local int rx1171_pos
@@ -14389,7 +14389,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>" :subid("298_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<gt>" :subid("298_1274564776.41408") :method
.annotate 'line', 431
$P1173 = self."!PREFIX__!subrule"("O", "gt")
new $P1174, "ResizablePMCArray"
@@ -14399,7 +14399,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>" :subid("299_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<=:=>" :subid("299_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1178_tgt
.local int rx1178_pos
@@ -14478,7 +14478,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>" :subid("300_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<=:=>" :subid("300_1274564776.41408") :method
.annotate 'line', 431
$P1180 = self."!PREFIX__!subrule"("O", "=:=")
new $P1181, "ResizablePMCArray"
@@ -14488,7 +14488,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>" :subid("301_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<~~>" :subid("301_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1185_tgt
.local int rx1185_pos
@@ -14567,7 +14567,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>" :subid("302_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<~~>" :subid("302_1274564776.41408") :method
.annotate 'line', 431
$P1187 = self."!PREFIX__!subrule"("O", "~~")
new $P1188, "ResizablePMCArray"
@@ -14577,7 +14577,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>" :subid("303_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<&&>" :subid("303_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1192_tgt
.local int rx1192_pos
@@ -14656,7 +14656,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>" :subid("304_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<&&>" :subid("304_1274564776.41408") :method
.annotate 'line', 431
$P1194 = self."!PREFIX__!subrule"("O", "&&")
new $P1195, "ResizablePMCArray"
@@ -14666,7 +14666,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>" :subid("305_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<||>" :subid("305_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1199_tgt
.local int rx1199_pos
@@ -14745,7 +14745,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>" :subid("306_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<||>" :subid("306_1274564776.41408") :method
.annotate 'line', 431
$P1201 = self."!PREFIX__!subrule"("O", "||")
new $P1202, "ResizablePMCArray"
@@ -14755,7 +14755,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>" :subid("307_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<//>" :subid("307_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1206_tgt
.local int rx1206_pos
@@ -14834,7 +14834,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>" :subid("308_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<//>" :subid("308_1274564776.41408") :method
.annotate 'line', 431
$P1208 = self."!PREFIX__!subrule"("O", "//")
new $P1209, "ResizablePMCArray"
@@ -14844,7 +14844,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>" :subid("309_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<?? !!>" :subid("309_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1213_tgt
.local int rx1213_pos
@@ -14933,7 +14933,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>" :subid("310_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<?? !!>" :subid("310_1274564776.41408") :method
.annotate 'line', 431
$P1215 = self."!PREFIX__!subrule"("", "??")
new $P1216, "ResizablePMCArray"
@@ -14943,7 +14943,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>" :subid("311_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<=>" :subid("311_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1219_tgt
.local int rx1219_pos
@@ -15021,7 +15021,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>" :subid("312_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<=>" :subid("312_1274564776.41408") :method
.annotate 'line', 431
$P1221 = self."!PREFIX__!subrule"("", "=")
new $P1222, "ResizablePMCArray"
@@ -15031,7 +15031,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>" :subid("313_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<:=>" :subid("313_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1226_tgt
.local int rx1226_pos
@@ -15110,7 +15110,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>" :subid("314_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<:=>" :subid("314_1274564776.41408") :method
.annotate 'line', 431
$P1228 = self."!PREFIX__!subrule"("O", ":=")
new $P1229, "ResizablePMCArray"
@@ -15120,7 +15120,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>" :subid("315_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<::=>" :subid("315_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1233_tgt
.local int rx1233_pos
@@ -15199,7 +15199,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>" :subid("316_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<::=>" :subid("316_1274564776.41408") :method
.annotate 'line', 431
$P1235 = self."!PREFIX__!subrule"("O", "::=")
new $P1236, "ResizablePMCArray"
@@ -15209,7 +15209,7 @@
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>" :subid("317_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "infix:sym<,>" :subid("317_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1240_tgt
.local int rx1240_pos
@@ -15288,7 +15288,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>" :subid("318_1274022894.43745") :method
+.sub "!PREFIX__infix:sym<,>" :subid("318_1274564776.41408") :method
.annotate 'line', 431
$P1242 = self."!PREFIX__!subrule"("O", ",")
new $P1243, "ResizablePMCArray"
@@ -15298,7 +15298,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>" :subid("319_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<return>" :subid("319_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1247_tgt
.local int rx1247_pos
@@ -15383,7 +15383,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>" :subid("320_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<return>" :subid("320_1274564776.41408") :method
.annotate 'line', 431
new $P1249, "ResizablePMCArray"
push $P1249, "return"
@@ -15392,7 +15392,7 @@
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>" :subid("321_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "prefix:sym<make>" :subid("321_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1253_tgt
.local int rx1253_pos
@@ -15477,7 +15477,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>" :subid("322_1274022894.43745") :method
+.sub "!PREFIX__prefix:sym<make>" :subid("322_1274564776.41408") :method
.annotate 'line', 431
new $P1255, "ResizablePMCArray"
push $P1255, "make"
@@ -15486,7 +15486,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<last>" :subid("323_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<last>" :subid("323_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1259_tgt
.local int rx1259_pos
@@ -15558,7 +15558,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<last>" :subid("324_1274022894.43745") :method
+.sub "!PREFIX__term:sym<last>" :subid("324_1274564776.41408") :method
.annotate 'line', 431
new $P1261, "ResizablePMCArray"
push $P1261, "last"
@@ -15567,7 +15567,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<next>" :subid("325_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<next>" :subid("325_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1265_tgt
.local int rx1265_pos
@@ -15639,7 +15639,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<next>" :subid("326_1274022894.43745") :method
+.sub "!PREFIX__term:sym<next>" :subid("326_1274564776.41408") :method
.annotate 'line', 431
new $P1267, "ResizablePMCArray"
push $P1267, "next"
@@ -15648,7 +15648,7 @@
.namespace ["NQP";"Grammar"]
-.sub "term:sym<redo>" :subid("327_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "term:sym<redo>" :subid("327_1274564776.41408") :method :outer("11_1274564776.41408")
.annotate 'line', 431
.local string rx1271_tgt
.local int rx1271_pos
@@ -15720,7 +15720,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<redo>" :subid("328_1274022894.43745") :method
+.sub "!PREFIX__term:sym<redo>" :subid("328_1274564776.41408") :method
.annotate 'line', 431
new $P1273, "ResizablePMCArray"
push $P1273, "redo"
@@ -15729,7 +15729,7 @@
.namespace ["NQP";"Grammar"]
-.sub "smartmatch" :subid("329_1274022894.43745") :method :outer("11_1274022894.43745")
+.sub "smartmatch" :subid("329_1274564776.41408") :method :outer("11_1274564776.41408")
.param pmc param_1279
.annotate 'line', 542
new $P1278, 'ExceptionHandler'
@@ -15742,34 +15742,34 @@
new $P1280, "Undef"
.lex "$t", $P1280
find_lex $P1281, "$/"
- unless_null $P1281, vivify_357
+ unless_null $P1281, vivify_368
$P1281 = root_new ['parrot';'ResizablePMCArray']
- vivify_357:
+ vivify_368:
set $P1282, $P1281[0]
- unless_null $P1282, vivify_358
+ unless_null $P1282, vivify_369
new $P1282, "Undef"
- vivify_358:
+ vivify_369:
store_lex "$t", $P1282
find_lex $P1283, "$/"
- unless_null $P1283, vivify_359
+ unless_null $P1283, vivify_370
$P1283 = root_new ['parrot';'ResizablePMCArray']
- vivify_359:
+ vivify_370:
set $P1284, $P1283[1]
- unless_null $P1284, vivify_360
+ unless_null $P1284, vivify_371
new $P1284, "Undef"
- vivify_360:
+ vivify_371:
find_lex $P1285, "$/"
- unless_null $P1285, vivify_361
+ unless_null $P1285, vivify_372
$P1285 = root_new ['parrot';'ResizablePMCArray']
store_lex "$/", $P1285
- vivify_361:
+ vivify_372:
set $P1285[0], $P1284
find_lex $P1286, "$t"
find_lex $P1287, "$/"
- unless_null $P1287, vivify_362
+ unless_null $P1287, vivify_373
$P1287 = root_new ['parrot';'ResizablePMCArray']
store_lex "$/", $P1287
- vivify_362:
+ vivify_373:
set $P1287[1], $P1286
.annotate 'line', 542
.return ($P1286)
@@ -15782,28 +15782,34 @@
.namespace ["NQP";"Regex"]
-.sub "_block1289" :subid("330_1274022894.43745") :outer("11_1274022894.43745")
+.sub "_block1289" :subid("330_1274564776.41408") :outer("11_1274564776.41408")
.annotate 'line', 548
- .const 'Sub' $P1323 = "341_1274022894.43745"
- capture_lex $P1323
- .const 'Sub' $P1310 = "338_1274022894.43745"
+ .const 'Sub' $P1367 = "352_1274564776.41408"
+ capture_lex $P1367
+ .const 'Sub' $P1354 = "349_1274564776.41408"
+ capture_lex $P1354
+ .const 'Sub' $P1349 = "347_1274564776.41408"
+ capture_lex $P1349
+ .const 'Sub' $P1344 = "345_1274564776.41408"
+ capture_lex $P1344
+ .const 'Sub' $P1330 = "341_1274564776.41408"
+ capture_lex $P1330
+ .const 'Sub' $P1310 = "337_1274564776.41408"
capture_lex $P1310
- .const 'Sub' $P1305 = "336_1274022894.43745"
- capture_lex $P1305
- .const 'Sub' $P1300 = "334_1274022894.43745"
+ .const 'Sub' $P1300 = "334_1274564776.41408"
capture_lex $P1300
- .const 'Sub' $P1291 = "331_1274022894.43745"
+ .const 'Sub' $P1291 = "331_1274564776.41408"
capture_lex $P1291
- .const 'Sub' $P1323 = "341_1274022894.43745"
- capture_lex $P1323
- .return ($P1323)
+ .const 'Sub' $P1367 = "352_1274564776.41408"
+ capture_lex $P1367
+ .return ($P1367)
.end
.namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>" :subid("331_1274022894.43745") :method :outer("330_1274022894.43745")
+.sub "metachar:sym<:my>" :subid("331_1274564776.41408") :method :outer("330_1274564776.41408")
.annotate 'line', 548
- .const 'Sub' $P1297 = "333_1274022894.43745"
+ .const 'Sub' $P1297 = "333_1274564776.41408"
capture_lex $P1297
.local string rx1292_tgt
.local int rx1292_pos
@@ -15844,7 +15850,7 @@
add rx1292_pos, 1
# rx subrule "before" subtype=zerowidth negate=
rx1292_cur."!cursor_pos"(rx1292_pos)
- .const 'Sub' $P1297 = "333_1274022894.43745"
+ .const 'Sub' $P1297 = "333_1274564776.41408"
capture_lex $P1297
$P10 = rx1292_cur."before"($P1297)
unless $P10, rx1292_fail
@@ -15887,7 +15893,7 @@
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>" :subid("332_1274022894.43745") :method
+.sub "!PREFIX__metachar:sym<:my>" :subid("332_1274564776.41408") :method
.annotate 'line', 548
new $P1294, "ResizablePMCArray"
push $P1294, ":"
@@ -15896,7 +15902,7 @@
.namespace ["NQP";"Regex"]
-.sub "_block1296" :anon :subid("333_1274022894.43745") :method :outer("331_1274022894.43745")
+.sub "_block1296" :anon :subid("333_1274564776.41408") :method :outer("331_1274564776.41408")
.annotate 'line', 550
.local string rx1298_tgt
.local int rx1298_pos
@@ -15952,8 +15958,10 @@
.namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>" :subid("334_1274022894.43745") :method :outer("330_1274022894.43745")
+.sub "metachar:sym<$>" :subid("334_1274564776.41408") :method :outer("330_1274564776.41408")
.annotate 'line', 548
+ .const 'Sub' $P1307 = "336_1274564776.41408"
+ capture_lex $P1307
.local string rx1301_tgt
.local int rx1301_pos
.local int rx1301_off
@@ -15961,7 +15969,7 @@
.local int rx1301_rep
.local pmc rx1301_cur
(rx1301_cur, rx1301_pos, rx1301_tgt) = self."!cursor_start"()
- rx1301_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
+ rx1301_cur."!cursor_debug"("START ", "metachar:sym<$>")
.lex unicode:"$\x{a2}", rx1301_cur
.local pmc match
.lex "$/", match
@@ -15984,23 +15992,37 @@
rx1301_cur."!mark_push"(0, rx1301_pos, $I10)
rxscan1304_done:
.annotate 'line', 554
- # rx enumcharlist negate=0 zerowidth
- ge rx1301_pos, rx1301_eos, rx1301_fail
- sub $I10, rx1301_pos, rx1301_off
- substr $S10, rx1301_tgt, $I10, 1
- index $I11, "{", $S10
- lt $I11, 0, rx1301_fail
- # rx subrule "codeblock" subtype=capture negate=
- rx1301_cur."!cursor_pos"(rx1301_pos)
- $P10 = rx1301_cur."codeblock"()
- unless $P10, rx1301_fail
+ # rx subcapture "sym"
+ set_addr $I10, rxcap_1305_fail
+ rx1301_cur."!mark_push"(0, rx1301_pos, $I10)
+ # rx literal "$"
+ add $I11, rx1301_pos, 1
+ gt $I11, rx1301_eos, rx1301_fail
+ sub $I11, rx1301_pos, rx1301_off
+ substr $S10, rx1301_tgt, $I11, 1
+ ne $S10, "$", rx1301_fail
+ add rx1301_pos, 1
+ set_addr $I10, rxcap_1305_fail
+ ($I12, $I11) = rx1301_cur."!mark_peek"($I10)
+ rx1301_cur."!cursor_pos"($I11)
+ ($P10) = rx1301_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1301_pos, "")
rx1301_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("codeblock")
- rx1301_pos = $P10."pos"()
+ $P10."!cursor_names"("sym")
+ goto rxcap_1305_done
+ rxcap_1305_fail:
+ goto rx1301_fail
+ rxcap_1305_done:
+ # rx subrule "before" subtype=zerowidth negate=1
+ rx1301_cur."!cursor_pos"(rx1301_pos)
+ .const 'Sub' $P1307 = "336_1274564776.41408"
+ capture_lex $P1307
+ $P10 = rx1301_cur."before"($P1307)
+ if $P10, rx1301_fail
.annotate 'line', 553
# rx pass
- rx1301_cur."!cursor_pass"(rx1301_pos, "metachar:sym<{ }>")
- rx1301_cur."!cursor_debug"("PASS ", "metachar:sym<{ }>", " at pos=", rx1301_pos)
+ rx1301_cur."!cursor_pass"(rx1301_pos, "metachar:sym<$>")
+ rx1301_cur."!cursor_debug"("PASS ", "metachar:sym<$>", " at pos=", rx1301_pos)
.return (rx1301_cur)
rx1301_fail:
.annotate 'line', 548
@@ -16010,100 +16032,83 @@
jump $I10
rx1301_done:
rx1301_cur."!cursor_fail"()
- rx1301_cur."!cursor_debug"("FAIL ", "metachar:sym<{ }>")
+ rx1301_cur."!cursor_debug"("FAIL ", "metachar:sym<$>")
.return (rx1301_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>" :subid("335_1274022894.43745") :method
+.sub "!PREFIX__metachar:sym<$>" :subid("335_1274564776.41408") :method
.annotate 'line', 548
new $P1303, "ResizablePMCArray"
- push $P1303, "{"
+ push $P1303, "$"
.return ($P1303)
.end
.namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>" :subid("336_1274022894.43745") :method :outer("330_1274022894.43745")
-.annotate 'line', 548
- .local string rx1306_tgt
- .local int rx1306_pos
- .local int rx1306_off
- .local int rx1306_eos
- .local int rx1306_rep
- .local pmc rx1306_cur
- (rx1306_cur, rx1306_pos, rx1306_tgt) = self."!cursor_start"()
- rx1306_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
- .lex unicode:"$\x{a2}", rx1306_cur
- .local pmc match
- .lex "$/", match
- length rx1306_eos, rx1306_tgt
- set rx1306_off, 0
- lt rx1306_pos, 2, rx1306_start
- sub rx1306_off, rx1306_pos, 1
- substr rx1306_tgt, rx1306_tgt, rx1306_off
- rx1306_start:
+.sub "_block1306" :anon :subid("336_1274564776.41408") :method :outer("334_1274564776.41408")
+.annotate 'line', 554
+ .local string rx1308_tgt
+ .local int rx1308_pos
+ .local int rx1308_off
+ .local int rx1308_eos
+ .local int rx1308_rep
+ .local pmc rx1308_cur
+ (rx1308_cur, rx1308_pos, rx1308_tgt) = self."!cursor_start"()
+ rx1308_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1308_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1308_eos, rx1308_tgt
+ set rx1308_off, 0
+ lt rx1308_pos, 2, rx1308_start
+ sub rx1308_off, rx1308_pos, 1
+ substr rx1308_tgt, rx1308_tgt, rx1308_off
+ rx1308_start:
$I10 = self.'from'()
ne $I10, -1, rxscan1309_done
goto rxscan1309_scan
rxscan1309_loop:
- ($P10) = rx1306_cur."from"()
+ ($P10) = rx1308_cur."from"()
inc $P10
- set rx1306_pos, $P10
- ge rx1306_pos, rx1306_eos, rxscan1309_done
+ set rx1308_pos, $P10
+ ge rx1308_pos, rx1308_eos, rxscan1309_done
rxscan1309_scan:
set_addr $I10, rxscan1309_loop
- rx1306_cur."!mark_push"(0, rx1306_pos, $I10)
+ rx1308_cur."!mark_push"(0, rx1308_pos, $I10)
rxscan1309_done:
-.annotate 'line', 558
- # rx enumcharlist negate=0 zerowidth
- ge rx1306_pos, rx1306_eos, rx1306_fail
- sub $I10, rx1306_pos, rx1306_off
- substr $S10, rx1306_tgt, $I10, 1
- index $I11, "{", $S10
- lt $I11, 0, rx1306_fail
- # rx subrule "codeblock" subtype=capture negate=
- rx1306_cur."!cursor_pos"(rx1306_pos)
- $P10 = rx1306_cur."codeblock"()
- unless $P10, rx1306_fail
- rx1306_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("codeblock")
- rx1306_pos = $P10."pos"()
-.annotate 'line', 557
- # rx pass
- rx1306_cur."!cursor_pass"(rx1306_pos, "assertion:sym<{ }>")
- rx1306_cur."!cursor_debug"("PASS ", "assertion:sym<{ }>", " at pos=", rx1306_pos)
- .return (rx1306_cur)
- rx1306_fail:
-.annotate 'line', 548
- (rx1306_rep, rx1306_pos, $I10, $P10) = rx1306_cur."!mark_fail"(0)
- lt rx1306_pos, -1, rx1306_done
- eq rx1306_pos, -1, rx1306_fail
- jump $I10
- rx1306_done:
- rx1306_cur."!cursor_fail"()
- rx1306_cur."!cursor_debug"("FAIL ", "assertion:sym<{ }>")
- .return (rx1306_cur)
+ # rx charclass w
+ ge rx1308_pos, rx1308_eos, rx1308_fail
+ sub $I10, rx1308_pos, rx1308_off
+ is_cclass $I11, 8192, rx1308_tgt, $I10
+ unless $I11, rx1308_fail
+ inc rx1308_pos
+ # rx pass
+ rx1308_cur."!cursor_pass"(rx1308_pos, "")
+ rx1308_cur."!cursor_debug"("PASS ", "", " at pos=", rx1308_pos)
+ .return (rx1308_cur)
+ rx1308_fail:
+ (rx1308_rep, rx1308_pos, $I10, $P10) = rx1308_cur."!mark_fail"(0)
+ lt rx1308_pos, -1, rx1308_done
+ eq rx1308_pos, -1, rx1308_fail
+ jump $I10
+ rx1308_done:
+ rx1308_cur."!cursor_fail"()
+ rx1308_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1308_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>" :subid("337_1274022894.43745") :method
-.annotate 'line', 548
- new $P1308, "ResizablePMCArray"
- push $P1308, "{"
- .return ($P1308)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>" :subid("338_1274022894.43745") :method :outer("330_1274022894.43745")
+.sub "metachar:sym<var>" :subid("337_1274564776.41408") :method :outer("330_1274564776.41408")
.annotate 'line', 548
- .const 'Sub' $P1319 = "340_1274022894.43745"
- capture_lex $P1319
+ .const 'Sub' $P1325 = "340_1274564776.41408"
+ capture_lex $P1325
+ .const 'Sub' $P1321 = "339_1274564776.41408"
+ capture_lex $P1321
.local string rx1311_tgt
.local int rx1311_pos
.local int rx1311_off
@@ -16111,8 +16116,8 @@
.local int rx1311_rep
.local pmc rx1311_cur
(rx1311_cur, rx1311_pos, rx1311_tgt) = self."!cursor_start"()
- rx1311_cur."!cursor_debug"("START ", "assertion:sym<name>")
- rx1311_cur."!cursor_caparray"("arglist", "nibbler", "assertion")
+ rx1311_cur."!cursor_debug"("START ", "metachar:sym<var>")
+ rx1311_cur."!cursor_caparray"("quantified_atom")
.lex unicode:"$\x{a2}", rx1311_cur
.local pmc match
.lex "$/", match
@@ -16134,130 +16139,154 @@
set_addr $I10, rxscan1314_loop
rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
rxscan1314_done:
-.annotate 'line', 562
- # rx subcapture "longname"
- set_addr $I10, rxcap_1315_fail
+ alt1315_0:
+.annotate 'line', 558
+ set_addr $I10, alt1315_1
rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
- # rx charclass_q w r 1..-1
+.annotate 'line', 559
+ # rx literal "$<"
+ add $I11, rx1311_pos, 2
+ gt $I11, rx1311_eos, rx1311_fail
+ sub $I11, rx1311_pos, rx1311_off
+ substr $S10, rx1311_tgt, $I11, 2
+ ne $S10, "$<", rx1311_fail
+ add rx1311_pos, 2
+ # rx subcapture "name"
+ set_addr $I10, rxcap_1318_fail
+ rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
+ # rx rxquantr1316 ** 1..*
+ set_addr $I1317, rxquantr1316_done
+ rx1311_cur."!mark_push"(0, -1, $I1317)
+ rxquantr1316_loop:
+ # rx enumcharlist negate=1
+ ge rx1311_pos, rx1311_eos, rx1311_fail
sub $I10, rx1311_pos, rx1311_off
- find_not_cclass $I11, 8192, rx1311_tgt, $I10, rx1311_eos
- add $I12, $I10, 1
- lt $I11, $I12, rx1311_fail
- add rx1311_pos, rx1311_off, $I11
- set_addr $I10, rxcap_1315_fail
+ substr $S10, rx1311_tgt, $I10, 1
+ index $I11, ">", $S10
+ ge $I11, 0, rx1311_fail
+ inc rx1311_pos
+ (rx1311_rep) = rx1311_cur."!mark_commit"($I1317)
+ rx1311_cur."!mark_push"(rx1311_rep, rx1311_pos, $I1317)
+ goto rxquantr1316_loop
+ rxquantr1316_done:
+ set_addr $I10, rxcap_1318_fail
($I12, $I11) = rx1311_cur."!mark_peek"($I10)
rx1311_cur."!cursor_pos"($I11)
($P10) = rx1311_cur."!cursor_start"()
$P10."!cursor_pass"(rx1311_pos, "")
rx1311_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("longname")
- goto rxcap_1315_done
- rxcap_1315_fail:
+ $P10."!cursor_names"("name")
+ goto rxcap_1318_done
+ rxcap_1318_fail:
goto rx1311_fail
- rxcap_1315_done:
-.annotate 'line', 569
- # rx rxquantr1316 ** 0..1
- set_addr $I1322, rxquantr1316_done
- rx1311_cur."!mark_push"(0, rx1311_pos, $I1322)
- rxquantr1316_loop:
- alt1317_0:
-.annotate 'line', 563
- set_addr $I10, alt1317_1
- rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
-.annotate 'line', 564
- # rx subrule "before" subtype=zerowidth negate=
- rx1311_cur."!cursor_pos"(rx1311_pos)
- .const 'Sub' $P1319 = "340_1274022894.43745"
- capture_lex $P1319
- $P10 = rx1311_cur."before"($P1319)
- unless $P10, rx1311_fail
- goto alt1317_end
- alt1317_1:
- set_addr $I10, alt1317_2
- rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
-.annotate 'line', 565
- # rx literal "="
+ rxcap_1318_done:
+ # rx literal ">"
add $I11, rx1311_pos, 1
gt $I11, rx1311_eos, rx1311_fail
sub $I11, rx1311_pos, rx1311_off
substr $S10, rx1311_tgt, $I11, 1
- ne $S10, "=", rx1311_fail
+ ne $S10, ">", rx1311_fail
add rx1311_pos, 1
- # rx subrule "assertion" subtype=capture negate=
- rx1311_cur."!cursor_pos"(rx1311_pos)
- $P10 = rx1311_cur."assertion"()
- unless $P10, rx1311_fail
- rx1311_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("assertion")
- rx1311_pos = $P10."pos"()
- goto alt1317_end
- alt1317_2:
- set_addr $I10, alt1317_3
+ goto alt1315_end
+ alt1315_1:
+ set_addr $I10, alt1315_2
rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
-.annotate 'line', 566
- # rx literal ":"
+.annotate 'line', 560
+ # rx literal "$"
add $I11, rx1311_pos, 1
gt $I11, rx1311_eos, rx1311_fail
sub $I11, rx1311_pos, rx1311_off
substr $S10, rx1311_tgt, $I11, 1
- ne $S10, ":", rx1311_fail
+ ne $S10, "$", rx1311_fail
add rx1311_pos, 1
- # rx subrule "arglist" subtype=capture negate=
- rx1311_cur."!cursor_pos"(rx1311_pos)
- $P10 = rx1311_cur."arglist"()
- unless $P10, rx1311_fail
+ # rx subcapture "pos"
+ set_addr $I10, rxcap_1319_fail
+ rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
+ # rx charclass_q d r 1..-1
+ sub $I10, rx1311_pos, rx1311_off
+ find_not_cclass $I11, 8, rx1311_tgt, $I10, rx1311_eos
+ add $I12, $I10, 1
+ lt $I11, $I12, rx1311_fail
+ add rx1311_pos, rx1311_off, $I11
+ set_addr $I10, rxcap_1319_fail
+ ($I12, $I11) = rx1311_cur."!mark_peek"($I10)
+ rx1311_cur."!cursor_pos"($I11)
+ ($P10) = rx1311_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1311_pos, "")
rx1311_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("arglist")
- rx1311_pos = $P10."pos"()
- goto alt1317_end
- alt1317_3:
- set_addr $I10, alt1317_4
+ $P10."!cursor_names"("pos")
+ goto rxcap_1319_done
+ rxcap_1319_fail:
+ goto rx1311_fail
+ rxcap_1319_done:
+ goto alt1315_end
+ alt1315_2:
+ set_addr $I10, alt1315_3
rx1311_cur."!mark_push"(0, rx1311_pos, $I10)
-.annotate 'line', 567
- # rx literal "("
- add $I11, rx1311_pos, 1
- gt $I11, rx1311_eos, rx1311_fail
- sub $I11, rx1311_pos, rx1311_off
- substr $S10, rx1311_tgt, $I11, 1
- ne $S10, "(", rx1311_fail
- add rx1311_pos, 1
+.annotate 'line', 561
+ # rx subrule "before" subtype=zerowidth negate=
+ rx1311_cur."!cursor_pos"(rx1311_pos)
+ .const 'Sub' $P1321 = "339_1274564776.41408"
+ capture_lex $P1321
+ $P10 = rx1311_cur."before"($P1321)
+ unless $P10, rx1311_fail
# rx subrule "LANG" subtype=capture negate=
rx1311_cur."!cursor_pos"(rx1311_pos)
- $P10 = rx1311_cur."LANG"("MAIN", "arglist")
+ $P10 = rx1311_cur."LANG"("MAIN", "variable")
unless $P10, rx1311_fail
rx1311_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("arglist")
+ $P10."!cursor_names"("var")
rx1311_pos = $P10."pos"()
- # rx literal ")"
+ goto alt1315_end
+ alt1315_3:
+.annotate 'line', 562
+ # rx subrule "before" subtype=zerowidth negate=
+ rx1311_cur."!cursor_pos"(rx1311_pos)
+ .const 'Sub' $P1325 = "340_1274564776.41408"
+ capture_lex $P1325
+ $P10 = rx1311_cur."before"($P1325)
+ unless $P10, rx1311_fail
+ # rx subrule "panic" subtype=method negate=
+ rx1311_cur."!cursor_pos"(rx1311_pos)
+ $P10 = rx1311_cur."panic"("Use of hash variable in patterns is reserved")
+ unless $P10, rx1311_fail
+ rx1311_pos = $P10."pos"()
+ alt1315_end:
+.annotate 'line', 565
+ # rx rxquantr1328 ** 0..1
+ set_addr $I1329, rxquantr1328_done
+ rx1311_cur."!mark_push"(0, rx1311_pos, $I1329)
+ rxquantr1328_loop:
+ # rx subrule "ws" subtype=method negate=
+ rx1311_cur."!cursor_pos"(rx1311_pos)
+ $P10 = rx1311_cur."ws"()
+ unless $P10, rx1311_fail
+ rx1311_pos = $P10."pos"()
+ # rx literal "="
add $I11, rx1311_pos, 1
gt $I11, rx1311_eos, rx1311_fail
sub $I11, rx1311_pos, rx1311_off
substr $S10, rx1311_tgt, $I11, 1
- ne $S10, ")", rx1311_fail
+ ne $S10, "=", rx1311_fail
add rx1311_pos, 1
- goto alt1317_end
- alt1317_4:
-.annotate 'line', 568
- # rx subrule "normspace" subtype=method negate=
+ # rx subrule "ws" subtype=method negate=
rx1311_cur."!cursor_pos"(rx1311_pos)
- $P10 = rx1311_cur."normspace"()
+ $P10 = rx1311_cur."ws"()
unless $P10, rx1311_fail
rx1311_pos = $P10."pos"()
- # rx subrule "nibbler" subtype=capture negate=
+ # rx subrule "quantified_atom" subtype=capture negate=
rx1311_cur."!cursor_pos"(rx1311_pos)
- $P10 = rx1311_cur."nibbler"()
+ $P10 = rx1311_cur."quantified_atom"()
unless $P10, rx1311_fail
rx1311_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("nibbler")
+ $P10."!cursor_names"("quantified_atom")
rx1311_pos = $P10."pos"()
- alt1317_end:
-.annotate 'line', 569
- (rx1311_rep) = rx1311_cur."!mark_commit"($I1322)
- rxquantr1316_done:
-.annotate 'line', 561
+ (rx1311_rep) = rx1311_cur."!mark_commit"($I1329)
+ rxquantr1328_done:
+.annotate 'line', 557
# rx pass
- rx1311_cur."!cursor_pass"(rx1311_pos, "assertion:sym<name>")
- rx1311_cur."!cursor_debug"("PASS ", "assertion:sym<name>", " at pos=", rx1311_pos)
+ rx1311_cur."!cursor_pass"(rx1311_pos, "metachar:sym<var>")
+ rx1311_cur."!cursor_debug"("PASS ", "metachar:sym<var>", " at pos=", rx1311_pos)
.return (rx1311_cur)
rx1311_fail:
.annotate 'line', 548
@@ -16267,426 +16296,1106 @@
jump $I10
rx1311_done:
rx1311_cur."!cursor_fail"()
- rx1311_cur."!cursor_debug"("FAIL ", "assertion:sym<name>")
+ rx1311_cur."!cursor_debug"("FAIL ", "metachar:sym<var>")
.return (rx1311_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>" :subid("339_1274022894.43745") :method
+.sub "!PREFIX__metachar:sym<var>" :subid("338_1274564776.41408") :method
.annotate 'line', 548
new $P1313, "ResizablePMCArray"
push $P1313, ""
+ push $P1313, ""
+ push $P1313, "$"
+ push $P1313, "$<"
.return ($P1313)
.end
.namespace ["NQP";"Regex"]
-.sub "_block1318" :anon :subid("340_1274022894.43745") :method :outer("338_1274022894.43745")
-.annotate 'line', 564
- .local string rx1320_tgt
- .local int rx1320_pos
- .local int rx1320_off
- .local int rx1320_eos
- .local int rx1320_rep
- .local pmc rx1320_cur
- (rx1320_cur, rx1320_pos, rx1320_tgt) = self."!cursor_start"()
- rx1320_cur."!cursor_debug"("START ", "")
- .lex unicode:"$\x{a2}", rx1320_cur
- .local pmc match
- .lex "$/", match
- length rx1320_eos, rx1320_tgt
- set rx1320_off, 0
- lt rx1320_pos, 2, rx1320_start
- sub rx1320_off, rx1320_pos, 1
- substr rx1320_tgt, rx1320_tgt, rx1320_off
- rx1320_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1321_done
- goto rxscan1321_scan
- rxscan1321_loop:
- ($P10) = rx1320_cur."from"()
- inc $P10
- set rx1320_pos, $P10
- ge rx1320_pos, rx1320_eos, rxscan1321_done
- rxscan1321_scan:
- set_addr $I10, rxscan1321_loop
- rx1320_cur."!mark_push"(0, rx1320_pos, $I10)
- rxscan1321_done:
- # rx literal ">"
- add $I11, rx1320_pos, 1
- gt $I11, rx1320_eos, rx1320_fail
- sub $I11, rx1320_pos, rx1320_off
- substr $S10, rx1320_tgt, $I11, 1
- ne $S10, ">", rx1320_fail
- add rx1320_pos, 1
- # rx pass
- rx1320_cur."!cursor_pass"(rx1320_pos, "")
- rx1320_cur."!cursor_debug"("PASS ", "", " at pos=", rx1320_pos)
- .return (rx1320_cur)
- rx1320_fail:
- (rx1320_rep, rx1320_pos, $I10, $P10) = rx1320_cur."!mark_fail"(0)
- lt rx1320_pos, -1, rx1320_done
- eq rx1320_pos, -1, rx1320_fail
- jump $I10
- rx1320_done:
- rx1320_cur."!cursor_fail"()
- rx1320_cur."!cursor_debug"("FAIL ", "")
- .return (rx1320_cur)
+.sub "_block1320" :anon :subid("339_1274564776.41408") :method :outer("337_1274564776.41408")
+.annotate 'line', 561
+ .local string rx1322_tgt
+ .local int rx1322_pos
+ .local int rx1322_off
+ .local int rx1322_eos
+ .local int rx1322_rep
+ .local pmc rx1322_cur
+ (rx1322_cur, rx1322_pos, rx1322_tgt) = self."!cursor_start"()
+ rx1322_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1322_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1322_eos, rx1322_tgt
+ set rx1322_off, 0
+ lt rx1322_pos, 2, rx1322_start
+ sub rx1322_off, rx1322_pos, 1
+ substr rx1322_tgt, rx1322_tgt, rx1322_off
+ rx1322_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1323_done
+ goto rxscan1323_scan
+ rxscan1323_loop:
+ ($P10) = rx1322_cur."from"()
+ inc $P10
+ set rx1322_pos, $P10
+ ge rx1322_pos, rx1322_eos, rxscan1323_done
+ rxscan1323_scan:
+ set_addr $I10, rxscan1323_loop
+ rx1322_cur."!mark_push"(0, rx1322_pos, $I10)
+ rxscan1323_done:
+ # rx enumcharlist negate=0
+ ge rx1322_pos, rx1322_eos, rx1322_fail
+ sub $I10, rx1322_pos, rx1322_off
+ substr $S10, rx1322_tgt, $I10, 1
+ index $I11, "$@", $S10
+ lt $I11, 0, rx1322_fail
+ inc rx1322_pos
+ # rx charclass w
+ ge rx1322_pos, rx1322_eos, rx1322_fail
+ sub $I10, rx1322_pos, rx1322_off
+ is_cclass $I11, 8192, rx1322_tgt, $I10
+ unless $I11, rx1322_fail
+ inc rx1322_pos
+ # rx pass
+ rx1322_cur."!cursor_pass"(rx1322_pos, "")
+ rx1322_cur."!cursor_debug"("PASS ", "", " at pos=", rx1322_pos)
+ .return (rx1322_cur)
+ rx1322_fail:
+ (rx1322_rep, rx1322_pos, $I10, $P10) = rx1322_cur."!mark_fail"(0)
+ lt rx1322_pos, -1, rx1322_done
+ eq rx1322_pos, -1, rx1322_fail
+ jump $I10
+ rx1322_done:
+ rx1322_cur."!cursor_fail"()
+ rx1322_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1322_cur)
+ .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "_block1324" :anon :subid("340_1274564776.41408") :method :outer("337_1274564776.41408")
+.annotate 'line', 562
+ .local string rx1326_tgt
+ .local int rx1326_pos
+ .local int rx1326_off
+ .local int rx1326_eos
+ .local int rx1326_rep
+ .local pmc rx1326_cur
+ (rx1326_cur, rx1326_pos, rx1326_tgt) = self."!cursor_start"()
+ rx1326_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1326_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1326_eos, rx1326_tgt
+ set rx1326_off, 0
+ lt rx1326_pos, 2, rx1326_start
+ sub rx1326_off, rx1326_pos, 1
+ substr rx1326_tgt, rx1326_tgt, rx1326_off
+ rx1326_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1327_done
+ goto rxscan1327_scan
+ rxscan1327_loop:
+ ($P10) = rx1326_cur."from"()
+ inc $P10
+ set rx1326_pos, $P10
+ ge rx1326_pos, rx1326_eos, rxscan1327_done
+ rxscan1327_scan:
+ set_addr $I10, rxscan1327_loop
+ rx1326_cur."!mark_push"(0, rx1326_pos, $I10)
+ rxscan1327_done:
+ # rx literal "%"
+ add $I11, rx1326_pos, 1
+ gt $I11, rx1326_eos, rx1326_fail
+ sub $I11, rx1326_pos, rx1326_off
+ substr $S10, rx1326_tgt, $I11, 1
+ ne $S10, "%", rx1326_fail
+ add rx1326_pos, 1
+ # rx charclass w
+ ge rx1326_pos, rx1326_eos, rx1326_fail
+ sub $I10, rx1326_pos, rx1326_off
+ is_cclass $I11, 8192, rx1326_tgt, $I10
+ unless $I11, rx1326_fail
+ inc rx1326_pos
+ # rx pass
+ rx1326_cur."!cursor_pass"(rx1326_pos, "")
+ rx1326_cur."!cursor_debug"("PASS ", "", " at pos=", rx1326_pos)
+ .return (rx1326_cur)
+ rx1326_fail:
+ (rx1326_rep, rx1326_pos, $I10, $P10) = rx1326_cur."!mark_fail"(0)
+ lt rx1326_pos, -1, rx1326_done
+ eq rx1326_pos, -1, rx1326_fail
+ jump $I10
+ rx1326_done:
+ rx1326_cur."!cursor_fail"()
+ rx1326_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1326_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "codeblock" :subid("341_1274022894.43745") :method :outer("330_1274022894.43745")
+.sub "assertion:sym<var>" :subid("341_1274564776.41408") :method :outer("330_1274564776.41408")
.annotate 'line', 548
- .local string rx1324_tgt
- .local int rx1324_pos
- .local int rx1324_off
- .local int rx1324_eos
- .local int rx1324_rep
- .local pmc rx1324_cur
- (rx1324_cur, rx1324_pos, rx1324_tgt) = self."!cursor_start"()
- rx1324_cur."!cursor_debug"("START ", "codeblock")
- .lex unicode:"$\x{a2}", rx1324_cur
- .local pmc match
- .lex "$/", match
- length rx1324_eos, rx1324_tgt
- set rx1324_off, 0
- lt rx1324_pos, 2, rx1324_start
- sub rx1324_off, rx1324_pos, 1
- substr rx1324_tgt, rx1324_tgt, rx1324_off
- rx1324_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1328_done
- goto rxscan1328_scan
- rxscan1328_loop:
- ($P10) = rx1324_cur."from"()
- inc $P10
- set rx1324_pos, $P10
- ge rx1324_pos, rx1324_eos, rxscan1328_done
- rxscan1328_scan:
- set_addr $I10, rxscan1328_loop
- rx1324_cur."!mark_push"(0, rx1324_pos, $I10)
- rxscan1328_done:
-.annotate 'line', 574
+ .const 'Sub' $P1341 = "344_1274564776.41408"
+ capture_lex $P1341
+ .const 'Sub' $P1337 = "343_1274564776.41408"
+ capture_lex $P1337
+ .local string rx1331_tgt
+ .local int rx1331_pos
+ .local int rx1331_off
+ .local int rx1331_eos
+ .local int rx1331_rep
+ .local pmc rx1331_cur
+ (rx1331_cur, rx1331_pos, rx1331_tgt) = self."!cursor_start"()
+ rx1331_cur."!cursor_debug"("START ", "assertion:sym<var>")
+ .lex unicode:"$\x{a2}", rx1331_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1331_eos, rx1331_tgt
+ set rx1331_off, 0
+ lt rx1331_pos, 2, rx1331_start
+ sub rx1331_off, rx1331_pos, 1
+ substr rx1331_tgt, rx1331_tgt, rx1331_off
+ rx1331_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1334_done
+ goto rxscan1334_scan
+ rxscan1334_loop:
+ ($P10) = rx1331_cur."from"()
+ inc $P10
+ set rx1331_pos, $P10
+ ge rx1331_pos, rx1331_eos, rxscan1334_done
+ rxscan1334_scan:
+ set_addr $I10, rxscan1334_loop
+ rx1331_cur."!mark_push"(0, rx1331_pos, $I10)
+ rxscan1334_done:
+ alt1335_0:
+.annotate 'line', 568
+ set_addr $I10, alt1335_1
+ rx1331_cur."!mark_push"(0, rx1331_pos, $I10)
+.annotate 'line', 569
+ # rx subrule "before" subtype=zerowidth negate=
+ rx1331_cur."!cursor_pos"(rx1331_pos)
+ .const 'Sub' $P1337 = "343_1274564776.41408"
+ capture_lex $P1337
+ $P10 = rx1331_cur."before"($P1337)
+ unless $P10, rx1331_fail
# rx subrule "LANG" subtype=capture negate=
- rx1324_cur."!cursor_pos"(rx1324_pos)
- $P10 = rx1324_cur."LANG"("MAIN", "pblock")
- unless $P10, rx1324_fail
- rx1324_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("block")
- rx1324_pos = $P10."pos"()
-.annotate 'line', 573
+ rx1331_cur."!cursor_pos"(rx1331_pos)
+ $P10 = rx1331_cur."LANG"("MAIN", "variable")
+ unless $P10, rx1331_fail
+ rx1331_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("var")
+ rx1331_pos = $P10."pos"()
+ goto alt1335_end
+ alt1335_1:
+.annotate 'line', 570
+ # rx subrule "before" subtype=zerowidth negate=
+ rx1331_cur."!cursor_pos"(rx1331_pos)
+ .const 'Sub' $P1341 = "344_1274564776.41408"
+ capture_lex $P1341
+ $P10 = rx1331_cur."before"($P1341)
+ unless $P10, rx1331_fail
+ # rx subrule "panic" subtype=method negate=
+ rx1331_cur."!cursor_pos"(rx1331_pos)
+ $P10 = rx1331_cur."panic"("Use of hash variable in patterns is reserved")
+ unless $P10, rx1331_fail
+ rx1331_pos = $P10."pos"()
+ alt1335_end:
+.annotate 'line', 568
# rx pass
- rx1324_cur."!cursor_pass"(rx1324_pos, "codeblock")
- rx1324_cur."!cursor_debug"("PASS ", "codeblock", " at pos=", rx1324_pos)
- .return (rx1324_cur)
- rx1324_fail:
+ rx1331_cur."!cursor_pass"(rx1331_pos, "assertion:sym<var>")
+ rx1331_cur."!cursor_debug"("PASS ", "assertion:sym<var>", " at pos=", rx1331_pos)
+ .return (rx1331_cur)
+ rx1331_fail:
.annotate 'line', 548
- (rx1324_rep, rx1324_pos, $I10, $P10) = rx1324_cur."!mark_fail"(0)
- lt rx1324_pos, -1, rx1324_done
- eq rx1324_pos, -1, rx1324_fail
- jump $I10
- rx1324_done:
- rx1324_cur."!cursor_fail"()
- rx1324_cur."!cursor_debug"("FAIL ", "codeblock")
- .return (rx1324_cur)
+ (rx1331_rep, rx1331_pos, $I10, $P10) = rx1331_cur."!mark_fail"(0)
+ lt rx1331_pos, -1, rx1331_done
+ eq rx1331_pos, -1, rx1331_fail
+ jump $I10
+ rx1331_done:
+ rx1331_cur."!cursor_fail"()
+ rx1331_cur."!cursor_debug"("FAIL ", "assertion:sym<var>")
+ .return (rx1331_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock" :subid("342_1274022894.43745") :method
+.sub "!PREFIX__assertion:sym<var>" :subid("342_1274564776.41408") :method
.annotate 'line', 548
- $P1326 = self."!PREFIX__!subrule"("block", "")
- new $P1327, "ResizablePMCArray"
- push $P1327, $P1326
- .return ($P1327)
+ new $P1333, "ResizablePMCArray"
+ push $P1333, ""
+ push $P1333, ""
+ .return ($P1333)
.end
-.namespace ["NQP";"Grammar"]
-.sub "_block1330" :load :anon :subid("343_1274022894.43745")
-.annotate 'line', 4
- .const 'Sub' $P1332 = "11_1274022894.43745"
- $P1333 = $P1332()
- .return ($P1333)
+.namespace ["NQP";"Regex"]
+.sub "_block1336" :anon :subid("343_1274564776.41408") :method :outer("341_1274564776.41408")
+.annotate 'line', 569
+ .local string rx1338_tgt
+ .local int rx1338_pos
+ .local int rx1338_off
+ .local int rx1338_eos
+ .local int rx1338_rep
+ .local pmc rx1338_cur
+ (rx1338_cur, rx1338_pos, rx1338_tgt) = self."!cursor_start"()
+ rx1338_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1338_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1338_eos, rx1338_tgt
+ set rx1338_off, 0
+ lt rx1338_pos, 2, rx1338_start
+ sub rx1338_off, rx1338_pos, 1
+ substr rx1338_tgt, rx1338_tgt, rx1338_off
+ rx1338_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1339_done
+ goto rxscan1339_scan
+ rxscan1339_loop:
+ ($P10) = rx1338_cur."from"()
+ inc $P10
+ set rx1338_pos, $P10
+ ge rx1338_pos, rx1338_eos, rxscan1339_done
+ rxscan1339_scan:
+ set_addr $I10, rxscan1339_loop
+ rx1338_cur."!mark_push"(0, rx1338_pos, $I10)
+ rxscan1339_done:
+ # rx enumcharlist negate=0
+ ge rx1338_pos, rx1338_eos, rx1338_fail
+ sub $I10, rx1338_pos, rx1338_off
+ substr $S10, rx1338_tgt, $I10, 1
+ index $I11, "$@", $S10
+ lt $I11, 0, rx1338_fail
+ inc rx1338_pos
+ # rx charclass w
+ ge rx1338_pos, rx1338_eos, rx1338_fail
+ sub $I10, rx1338_pos, rx1338_off
+ is_cclass $I11, 8192, rx1338_tgt, $I10
+ unless $I11, rx1338_fail
+ inc rx1338_pos
+ # rx pass
+ rx1338_cur."!cursor_pass"(rx1338_pos, "")
+ rx1338_cur."!cursor_debug"("PASS ", "", " at pos=", rx1338_pos)
+ .return (rx1338_cur)
+ rx1338_fail:
+ (rx1338_rep, rx1338_pos, $I10, $P10) = rx1338_cur."!mark_fail"(0)
+ lt rx1338_pos, -1, rx1338_done
+ eq rx1338_pos, -1, rx1338_fail
+ jump $I10
+ rx1338_done:
+ rx1338_cur."!cursor_fail"()
+ rx1338_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1338_cur)
+ .return ()
.end
-.namespace []
-.sub "_block1351" :load :anon :subid("344_1274022894.43745")
-.annotate 'line', 1
- .const 'Sub' $P1353 = "10_1274022894.43745"
- $P1354 = $P1353()
- .return ($P1354)
+.namespace ["NQP";"Regex"]
+.sub "_block1340" :anon :subid("344_1274564776.41408") :method :outer("341_1274564776.41408")
+.annotate 'line', 570
+ .local string rx1342_tgt
+ .local int rx1342_pos
+ .local int rx1342_off
+ .local int rx1342_eos
+ .local int rx1342_rep
+ .local pmc rx1342_cur
+ (rx1342_cur, rx1342_pos, rx1342_tgt) = self."!cursor_start"()
+ rx1342_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1342_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1342_eos, rx1342_tgt
+ set rx1342_off, 0
+ lt rx1342_pos, 2, rx1342_start
+ sub rx1342_off, rx1342_pos, 1
+ substr rx1342_tgt, rx1342_tgt, rx1342_off
+ rx1342_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1343_done
+ goto rxscan1343_scan
+ rxscan1343_loop:
+ ($P10) = rx1342_cur."from"()
+ inc $P10
+ set rx1342_pos, $P10
+ ge rx1342_pos, rx1342_eos, rxscan1343_done
+ rxscan1343_scan:
+ set_addr $I10, rxscan1343_loop
+ rx1342_cur."!mark_push"(0, rx1342_pos, $I10)
+ rxscan1343_done:
+ # rx literal "%"
+ add $I11, rx1342_pos, 1
+ gt $I11, rx1342_eos, rx1342_fail
+ sub $I11, rx1342_pos, rx1342_off
+ substr $S10, rx1342_tgt, $I11, 1
+ ne $S10, "%", rx1342_fail
+ add rx1342_pos, 1
+ # rx charclass w
+ ge rx1342_pos, rx1342_eos, rx1342_fail
+ sub $I10, rx1342_pos, rx1342_off
+ is_cclass $I11, 8192, rx1342_tgt, $I10
+ unless $I11, rx1342_fail
+ inc rx1342_pos
+ # rx pass
+ rx1342_cur."!cursor_pass"(rx1342_pos, "")
+ rx1342_cur."!cursor_debug"("PASS ", "", " at pos=", rx1342_pos)
+ .return (rx1342_cur)
+ rx1342_fail:
+ (rx1342_rep, rx1342_pos, $I10, $P10) = rx1342_cur."!mark_fail"(0)
+ lt rx1342_pos, -1, rx1342_done
+ eq rx1342_pos, -1, rx1342_fail
+ jump $I10
+ rx1342_done:
+ rx1342_cur."!cursor_fail"()
+ rx1342_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1342_cur)
+ .return ()
.end
-### .include 'gen/nqp-actions.pir'
-.namespace []
-.sub "_block11" :anon :subid("10_1274022903.56472")
-.annotate 'line', 0
- get_hll_global $P14, ["NQP";"Actions"], "_block13"
- capture_lex $P14
-.annotate 'line', 3
- get_hll_global $P14, ["NQP";"Actions"], "_block13"
- capture_lex $P14
- $P2262 = $P14()
-.annotate 'line', 1
- .return ($P2262)
- .const 'Sub' $P2264 = "133_1274022903.56472"
- .return ($P2264)
+.namespace ["NQP";"Regex"]
+.sub "metachar:sym<{ }>" :subid("345_1274564776.41408") :method :outer("330_1274564776.41408")
+.annotate 'line', 548
+ .local string rx1345_tgt
+ .local int rx1345_pos
+ .local int rx1345_off
+ .local int rx1345_eos
+ .local int rx1345_rep
+ .local pmc rx1345_cur
+ (rx1345_cur, rx1345_pos, rx1345_tgt) = self."!cursor_start"()
+ rx1345_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx1345_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1345_eos, rx1345_tgt
+ set rx1345_off, 0
+ lt rx1345_pos, 2, rx1345_start
+ sub rx1345_off, rx1345_pos, 1
+ substr rx1345_tgt, rx1345_tgt, rx1345_off
+ rx1345_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1348_done
+ goto rxscan1348_scan
+ rxscan1348_loop:
+ ($P10) = rx1345_cur."from"()
+ inc $P10
+ set rx1345_pos, $P10
+ ge rx1345_pos, rx1345_eos, rxscan1348_done
+ rxscan1348_scan:
+ set_addr $I10, rxscan1348_loop
+ rx1345_cur."!mark_push"(0, rx1345_pos, $I10)
+ rxscan1348_done:
+.annotate 'line', 574
+ # rx enumcharlist negate=0 zerowidth
+ ge rx1345_pos, rx1345_eos, rx1345_fail
+ sub $I10, rx1345_pos, rx1345_off
+ substr $S10, rx1345_tgt, $I10, 1
+ index $I11, "{", $S10
+ lt $I11, 0, rx1345_fail
+ # rx subrule "codeblock" subtype=capture negate=
+ rx1345_cur."!cursor_pos"(rx1345_pos)
+ $P10 = rx1345_cur."codeblock"()
+ unless $P10, rx1345_fail
+ rx1345_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("codeblock")
+ rx1345_pos = $P10."pos"()
+.annotate 'line', 573
+ # rx pass
+ rx1345_cur."!cursor_pass"(rx1345_pos, "metachar:sym<{ }>")
+ rx1345_cur."!cursor_debug"("PASS ", "metachar:sym<{ }>", " at pos=", rx1345_pos)
+ .return (rx1345_cur)
+ rx1345_fail:
+.annotate 'line', 548
+ (rx1345_rep, rx1345_pos, $I10, $P10) = rx1345_cur."!mark_fail"(0)
+ lt rx1345_pos, -1, rx1345_done
+ eq rx1345_pos, -1, rx1345_fail
+ jump $I10
+ rx1345_done:
+ rx1345_cur."!cursor_fail"()
+ rx1345_cur."!cursor_debug"("FAIL ", "metachar:sym<{ }>")
+ .return (rx1345_cur)
+ .return ()
.end
-.namespace []
-.sub "" :load :init :subid("post134") :outer("10_1274022903.56472")
-.annotate 'line', 0
- .const 'Sub' $P12 = "10_1274022903.56472"
- .local pmc block
- set block, $P12
- $P2267 = get_root_global ["parrot"], "P6metaclass"
- $P2267."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__metachar:sym<{ }>" :subid("346_1274564776.41408") :method
+.annotate 'line', 548
+ new $P1347, "ResizablePMCArray"
+ push $P1347, "{"
+ .return ($P1347)
.end
-.namespace ["NQP";"Actions"]
-.sub "_block13" :subid("11_1274022903.56472") :outer("10_1274022903.56472")
-.annotate 'line', 3
- .const 'Sub' $P2258 = "132_1274022903.56472"
- capture_lex $P2258
- get_hll_global $P2189, ["NQP";"RegexActions"], "_block2188"
- capture_lex $P2189
- .const 'Sub' $P2178 = "125_1274022903.56472"
- capture_lex $P2178
- .const 'Sub' $P2171 = "124_1274022903.56472"
- capture_lex $P2171
- .const 'Sub' $P2164 = "123_1274022903.56472"
- capture_lex $P2164
- .const 'Sub' $P2157 = "122_1274022903.56472"
- capture_lex $P2157
- .const 'Sub' $P2144 = "121_1274022903.56472"
- capture_lex $P2144
- .const 'Sub' $P2134 = "120_1274022903.56472"
- capture_lex $P2134
- .const 'Sub' $P2124 = "119_1274022903.56472"
- capture_lex $P2124
- .const 'Sub' $P2114 = "118_1274022903.56472"
- capture_lex $P2114
- .const 'Sub' $P2107 = "117_1274022903.56472"
- capture_lex $P2107
- .const 'Sub' $P2093 = "116_1274022903.56472"
- capture_lex $P2093
- .const 'Sub' $P2083 = "115_1274022903.56472"
- capture_lex $P2083
- .const 'Sub' $P2046 = "114_1274022903.56472"
- capture_lex $P2046
- .const 'Sub' $P2032 = "113_1274022903.56472"
- capture_lex $P2032
- .const 'Sub' $P2022 = "112_1274022903.56472"
- capture_lex $P2022
- .const 'Sub' $P2012 = "111_1274022903.56472"
- capture_lex $P2012
- .const 'Sub' $P2002 = "110_1274022903.56472"
- capture_lex $P2002
- .const 'Sub' $P1992 = "109_1274022903.56472"
- capture_lex $P1992
- .const 'Sub' $P1982 = "108_1274022903.56472"
- capture_lex $P1982
- .const 'Sub' $P1954 = "107_1274022903.56472"
- capture_lex $P1954
- .const 'Sub' $P1937 = "106_1274022903.56472"
- capture_lex $P1937
- .const 'Sub' $P1927 = "105_1274022903.56472"
- capture_lex $P1927
- .const 'Sub' $P1914 = "104_1274022903.56472"
- capture_lex $P1914
- .const 'Sub' $P1901 = "103_1274022903.56472"
- capture_lex $P1901
- .const 'Sub' $P1888 = "102_1274022903.56472"
- capture_lex $P1888
- .const 'Sub' $P1878 = "101_1274022903.56472"
- capture_lex $P1878
- .const 'Sub' $P1849 = "100_1274022903.56472"
- capture_lex $P1849
- .const 'Sub' $P1825 = "99_1274022903.56472"
- capture_lex $P1825
- .const 'Sub' $P1815 = "98_1274022903.56472"
- capture_lex $P1815
- .const 'Sub' $P1805 = "97_1274022903.56472"
- capture_lex $P1805
- .const 'Sub' $P1778 = "96_1274022903.56472"
- capture_lex $P1778
- .const 'Sub' $P1760 = "95_1274022903.56472"
- capture_lex $P1760
- .const 'Sub' $P1750 = "94_1274022903.56472"
- capture_lex $P1750
- .const 'Sub' $P1646 = "91_1274022903.56472"
- capture_lex $P1646
- .const 'Sub' $P1636 = "90_1274022903.56472"
- capture_lex $P1636
- .const 'Sub' $P1607 = "89_1274022903.56472"
- capture_lex $P1607
- .const 'Sub' $P1565 = "88_1274022903.56472"
- capture_lex $P1565
- .const 'Sub' $P1549 = "87_1274022903.56472"
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<{ }>" :subid("347_1274564776.41408") :method :outer("330_1274564776.41408")
+.annotate 'line', 548
+ .local string rx1350_tgt
+ .local int rx1350_pos
+ .local int rx1350_off
+ .local int rx1350_eos
+ .local int rx1350_rep
+ .local pmc rx1350_cur
+ (rx1350_cur, rx1350_pos, rx1350_tgt) = self."!cursor_start"()
+ rx1350_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx1350_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1350_eos, rx1350_tgt
+ set rx1350_off, 0
+ lt rx1350_pos, 2, rx1350_start
+ sub rx1350_off, rx1350_pos, 1
+ substr rx1350_tgt, rx1350_tgt, rx1350_off
+ rx1350_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1353_done
+ goto rxscan1353_scan
+ rxscan1353_loop:
+ ($P10) = rx1350_cur."from"()
+ inc $P10
+ set rx1350_pos, $P10
+ ge rx1350_pos, rx1350_eos, rxscan1353_done
+ rxscan1353_scan:
+ set_addr $I10, rxscan1353_loop
+ rx1350_cur."!mark_push"(0, rx1350_pos, $I10)
+ rxscan1353_done:
+.annotate 'line', 578
+ # rx enumcharlist negate=0 zerowidth
+ ge rx1350_pos, rx1350_eos, rx1350_fail
+ sub $I10, rx1350_pos, rx1350_off
+ substr $S10, rx1350_tgt, $I10, 1
+ index $I11, "{", $S10
+ lt $I11, 0, rx1350_fail
+ # rx subrule "codeblock" subtype=capture negate=
+ rx1350_cur."!cursor_pos"(rx1350_pos)
+ $P10 = rx1350_cur."codeblock"()
+ unless $P10, rx1350_fail
+ rx1350_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("codeblock")
+ rx1350_pos = $P10."pos"()
+.annotate 'line', 577
+ # rx pass
+ rx1350_cur."!cursor_pass"(rx1350_pos, "assertion:sym<{ }>")
+ rx1350_cur."!cursor_debug"("PASS ", "assertion:sym<{ }>", " at pos=", rx1350_pos)
+ .return (rx1350_cur)
+ rx1350_fail:
+.annotate 'line', 548
+ (rx1350_rep, rx1350_pos, $I10, $P10) = rx1350_cur."!mark_fail"(0)
+ lt rx1350_pos, -1, rx1350_done
+ eq rx1350_pos, -1, rx1350_fail
+ jump $I10
+ rx1350_done:
+ rx1350_cur."!cursor_fail"()
+ rx1350_cur."!cursor_debug"("FAIL ", "assertion:sym<{ }>")
+ .return (rx1350_cur)
+ .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__assertion:sym<{ }>" :subid("348_1274564776.41408") :method
+.annotate 'line', 548
+ new $P1352, "ResizablePMCArray"
+ push $P1352, "{"
+ .return ($P1352)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<name>" :subid("349_1274564776.41408") :method :outer("330_1274564776.41408")
+.annotate 'line', 548
+ .const 'Sub' $P1363 = "351_1274564776.41408"
+ capture_lex $P1363
+ .local string rx1355_tgt
+ .local int rx1355_pos
+ .local int rx1355_off
+ .local int rx1355_eos
+ .local int rx1355_rep
+ .local pmc rx1355_cur
+ (rx1355_cur, rx1355_pos, rx1355_tgt) = self."!cursor_start"()
+ rx1355_cur."!cursor_debug"("START ", "assertion:sym<name>")
+ rx1355_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
+ .lex unicode:"$\x{a2}", rx1355_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1355_eos, rx1355_tgt
+ set rx1355_off, 0
+ lt rx1355_pos, 2, rx1355_start
+ sub rx1355_off, rx1355_pos, 1
+ substr rx1355_tgt, rx1355_tgt, rx1355_off
+ rx1355_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1358_done
+ goto rxscan1358_scan
+ rxscan1358_loop:
+ ($P10) = rx1355_cur."from"()
+ inc $P10
+ set rx1355_pos, $P10
+ ge rx1355_pos, rx1355_eos, rxscan1358_done
+ rxscan1358_scan:
+ set_addr $I10, rxscan1358_loop
+ rx1355_cur."!mark_push"(0, rx1355_pos, $I10)
+ rxscan1358_done:
+.annotate 'line', 582
+ # rx subcapture "longname"
+ set_addr $I10, rxcap_1359_fail
+ rx1355_cur."!mark_push"(0, rx1355_pos, $I10)
+ # rx charclass_q w r 1..-1
+ sub $I10, rx1355_pos, rx1355_off
+ find_not_cclass $I11, 8192, rx1355_tgt, $I10, rx1355_eos
+ add $I12, $I10, 1
+ lt $I11, $I12, rx1355_fail
+ add rx1355_pos, rx1355_off, $I11
+ set_addr $I10, rxcap_1359_fail
+ ($I12, $I11) = rx1355_cur."!mark_peek"($I10)
+ rx1355_cur."!cursor_pos"($I11)
+ ($P10) = rx1355_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1355_pos, "")
+ rx1355_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("longname")
+ goto rxcap_1359_done
+ rxcap_1359_fail:
+ goto rx1355_fail
+ rxcap_1359_done:
+.annotate 'line', 589
+ # rx rxquantr1360 ** 0..1
+ set_addr $I1366, rxquantr1360_done
+ rx1355_cur."!mark_push"(0, rx1355_pos, $I1366)
+ rxquantr1360_loop:
+ alt1361_0:
+.annotate 'line', 583
+ set_addr $I10, alt1361_1
+ rx1355_cur."!mark_push"(0, rx1355_pos, $I10)
+.annotate 'line', 584
+ # rx subrule "before" subtype=zerowidth negate=
+ rx1355_cur."!cursor_pos"(rx1355_pos)
+ .const 'Sub' $P1363 = "351_1274564776.41408"
+ capture_lex $P1363
+ $P10 = rx1355_cur."before"($P1363)
+ unless $P10, rx1355_fail
+ goto alt1361_end
+ alt1361_1:
+ set_addr $I10, alt1361_2
+ rx1355_cur."!mark_push"(0, rx1355_pos, $I10)
+.annotate 'line', 585
+ # rx literal "="
+ add $I11, rx1355_pos, 1
+ gt $I11, rx1355_eos, rx1355_fail
+ sub $I11, rx1355_pos, rx1355_off
+ substr $S10, rx1355_tgt, $I11, 1
+ ne $S10, "=", rx1355_fail
+ add rx1355_pos, 1
+ # rx subrule "assertion" subtype=capture negate=
+ rx1355_cur."!cursor_pos"(rx1355_pos)
+ $P10 = rx1355_cur."assertion"()
+ unless $P10, rx1355_fail
+ rx1355_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("assertion")
+ rx1355_pos = $P10."pos"()
+ goto alt1361_end
+ alt1361_2:
+ set_addr $I10, alt1361_3
+ rx1355_cur."!mark_push"(0, rx1355_pos, $I10)
+.annotate 'line', 586
+ # rx literal ":"
+ add $I11, rx1355_pos, 1
+ gt $I11, rx1355_eos, rx1355_fail
+ sub $I11, rx1355_pos, rx1355_off
+ substr $S10, rx1355_tgt, $I11, 1
+ ne $S10, ":", rx1355_fail
+ add rx1355_pos, 1
+ # rx subrule "arglist" subtype=capture negate=
+ rx1355_cur."!cursor_pos"(rx1355_pos)
+ $P10 = rx1355_cur."arglist"()
+ unless $P10, rx1355_fail
+ rx1355_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("arglist")
+ rx1355_pos = $P10."pos"()
+ goto alt1361_end
+ alt1361_3:
+ set_addr $I10, alt1361_4
+ rx1355_cur."!mark_push"(0, rx1355_pos, $I10)
+.annotate 'line', 587
+ # rx literal "("
+ add $I11, rx1355_pos, 1
+ gt $I11, rx1355_eos, rx1355_fail
+ sub $I11, rx1355_pos, rx1355_off
+ substr $S10, rx1355_tgt, $I11, 1
+ ne $S10, "(", rx1355_fail
+ add rx1355_pos, 1
+ # rx subrule "LANG" subtype=capture negate=
+ rx1355_cur."!cursor_pos"(rx1355_pos)
+ $P10 = rx1355_cur."LANG"("MAIN", "arglist")
+ unless $P10, rx1355_fail
+ rx1355_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("arglist")
+ rx1355_pos = $P10."pos"()
+ # rx literal ")"
+ add $I11, rx1355_pos, 1
+ gt $I11, rx1355_eos, rx1355_fail
+ sub $I11, rx1355_pos, rx1355_off
+ substr $S10, rx1355_tgt, $I11, 1
+ ne $S10, ")", rx1355_fail
+ add rx1355_pos, 1
+ goto alt1361_end
+ alt1361_4:
+.annotate 'line', 588
+ # rx subrule "normspace" subtype=method negate=
+ rx1355_cur."!cursor_pos"(rx1355_pos)
+ $P10 = rx1355_cur."normspace"()
+ unless $P10, rx1355_fail
+ rx1355_pos = $P10."pos"()
+ # rx subrule "nibbler" subtype=capture negate=
+ rx1355_cur."!cursor_pos"(rx1355_pos)
+ $P10 = rx1355_cur."nibbler"()
+ unless $P10, rx1355_fail
+ rx1355_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("nibbler")
+ rx1355_pos = $P10."pos"()
+ alt1361_end:
+.annotate 'line', 589
+ (rx1355_rep) = rx1355_cur."!mark_commit"($I1366)
+ rxquantr1360_done:
+.annotate 'line', 581
+ # rx pass
+ rx1355_cur."!cursor_pass"(rx1355_pos, "assertion:sym<name>")
+ rx1355_cur."!cursor_debug"("PASS ", "assertion:sym<name>", " at pos=", rx1355_pos)
+ .return (rx1355_cur)
+ rx1355_fail:
+.annotate 'line', 548
+ (rx1355_rep, rx1355_pos, $I10, $P10) = rx1355_cur."!mark_fail"(0)
+ lt rx1355_pos, -1, rx1355_done
+ eq rx1355_pos, -1, rx1355_fail
+ jump $I10
+ rx1355_done:
+ rx1355_cur."!cursor_fail"()
+ rx1355_cur."!cursor_debug"("FAIL ", "assertion:sym<name>")
+ .return (rx1355_cur)
+ .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__assertion:sym<name>" :subid("350_1274564776.41408") :method
+.annotate 'line', 548
+ new $P1357, "ResizablePMCArray"
+ push $P1357, ""
+ .return ($P1357)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "_block1362" :anon :subid("351_1274564776.41408") :method :outer("349_1274564776.41408")
+.annotate 'line', 584
+ .local string rx1364_tgt
+ .local int rx1364_pos
+ .local int rx1364_off
+ .local int rx1364_eos
+ .local int rx1364_rep
+ .local pmc rx1364_cur
+ (rx1364_cur, rx1364_pos, rx1364_tgt) = self."!cursor_start"()
+ rx1364_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1364_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1364_eos, rx1364_tgt
+ set rx1364_off, 0
+ lt rx1364_pos, 2, rx1364_start
+ sub rx1364_off, rx1364_pos, 1
+ substr rx1364_tgt, rx1364_tgt, rx1364_off
+ rx1364_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1365_done
+ goto rxscan1365_scan
+ rxscan1365_loop:
+ ($P10) = rx1364_cur."from"()
+ inc $P10
+ set rx1364_pos, $P10
+ ge rx1364_pos, rx1364_eos, rxscan1365_done
+ rxscan1365_scan:
+ set_addr $I10, rxscan1365_loop
+ rx1364_cur."!mark_push"(0, rx1364_pos, $I10)
+ rxscan1365_done:
+ # rx literal ">"
+ add $I11, rx1364_pos, 1
+ gt $I11, rx1364_eos, rx1364_fail
+ sub $I11, rx1364_pos, rx1364_off
+ substr $S10, rx1364_tgt, $I11, 1
+ ne $S10, ">", rx1364_fail
+ add rx1364_pos, 1
+ # rx pass
+ rx1364_cur."!cursor_pass"(rx1364_pos, "")
+ rx1364_cur."!cursor_debug"("PASS ", "", " at pos=", rx1364_pos)
+ .return (rx1364_cur)
+ rx1364_fail:
+ (rx1364_rep, rx1364_pos, $I10, $P10) = rx1364_cur."!mark_fail"(0)
+ lt rx1364_pos, -1, rx1364_done
+ eq rx1364_pos, -1, rx1364_fail
+ jump $I10
+ rx1364_done:
+ rx1364_cur."!cursor_fail"()
+ rx1364_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1364_cur)
+ .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "codeblock" :subid("352_1274564776.41408") :method :outer("330_1274564776.41408")
+.annotate 'line', 548
+ .local string rx1368_tgt
+ .local int rx1368_pos
+ .local int rx1368_off
+ .local int rx1368_eos
+ .local int rx1368_rep
+ .local pmc rx1368_cur
+ (rx1368_cur, rx1368_pos, rx1368_tgt) = self."!cursor_start"()
+ rx1368_cur."!cursor_debug"("START ", "codeblock")
+ .lex unicode:"$\x{a2}", rx1368_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1368_eos, rx1368_tgt
+ set rx1368_off, 0
+ lt rx1368_pos, 2, rx1368_start
+ sub rx1368_off, rx1368_pos, 1
+ substr rx1368_tgt, rx1368_tgt, rx1368_off
+ rx1368_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1372_done
+ goto rxscan1372_scan
+ rxscan1372_loop:
+ ($P10) = rx1368_cur."from"()
+ inc $P10
+ set rx1368_pos, $P10
+ ge rx1368_pos, rx1368_eos, rxscan1372_done
+ rxscan1372_scan:
+ set_addr $I10, rxscan1372_loop
+ rx1368_cur."!mark_push"(0, rx1368_pos, $I10)
+ rxscan1372_done:
+.annotate 'line', 594
+ # rx subrule "LANG" subtype=capture negate=
+ rx1368_cur."!cursor_pos"(rx1368_pos)
+ $P10 = rx1368_cur."LANG"("MAIN", "pblock")
+ unless $P10, rx1368_fail
+ rx1368_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("block")
+ rx1368_pos = $P10."pos"()
+.annotate 'line', 593
+ # rx pass
+ rx1368_cur."!cursor_pass"(rx1368_pos, "codeblock")
+ rx1368_cur."!cursor_debug"("PASS ", "codeblock", " at pos=", rx1368_pos)
+ .return (rx1368_cur)
+ rx1368_fail:
+.annotate 'line', 548
+ (rx1368_rep, rx1368_pos, $I10, $P10) = rx1368_cur."!mark_fail"(0)
+ lt rx1368_pos, -1, rx1368_done
+ eq rx1368_pos, -1, rx1368_fail
+ jump $I10
+ rx1368_done:
+ rx1368_cur."!cursor_fail"()
+ rx1368_cur."!cursor_debug"("FAIL ", "codeblock")
+ .return (rx1368_cur)
+ .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__codeblock" :subid("353_1274564776.41408") :method
+.annotate 'line', 548
+ $P1370 = self."!PREFIX__!subrule"("block", "")
+ new $P1371, "ResizablePMCArray"
+ push $P1371, $P1370
+ .return ($P1371)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "_block1374" :load :anon :subid("354_1274564776.41408")
+.annotate 'line', 4
+ .const 'Sub' $P1376 = "11_1274564776.41408"
+ $P1377 = $P1376()
+ .return ($P1377)
+.end
+
+
+.namespace []
+.sub "_block1395" :load :anon :subid("355_1274564776.41408")
+.annotate 'line', 1
+ .const 'Sub' $P1397 = "10_1274564776.41408"
+ $P1398 = $P1397()
+ .return ($P1398)
+.end
+
+### .include 'gen/nqp-actions.pir'
+
+.namespace []
+.sub "_block11" :anon :subid("10_1274564782.90592")
+.annotate 'line', 0
+ get_hll_global $P14, ["NQP";"Actions"], "_block13"
+ capture_lex $P14
+.annotate 'line', 3
+ get_hll_global $P14, ["NQP";"Actions"], "_block13"
+ capture_lex $P14
+ $P2370 = $P14()
+.annotate 'line', 1
+ .return ($P2370)
+ .const 'Sub' $P2372 = "137_1274564782.90592"
+ .return ($P2372)
+.end
+
+
+.namespace []
+.sub "" :load :init :subid("post138") :outer("10_1274564782.90592")
+.annotate 'line', 0
+ .const 'Sub' $P12 = "10_1274564782.90592"
+ .local pmc block
+ set block, $P12
+ $P2375 = get_root_global ["parrot"], "P6metaclass"
+ $P2375."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block13" :subid("11_1274564782.90592") :outer("10_1274564782.90592")
+.annotate 'line', 3
+ .const 'Sub' $P2366 = "136_1274564782.90592"
+ capture_lex $P2366
+ get_hll_global $P2189, ["NQP";"RegexActions"], "_block2188"
+ capture_lex $P2189
+ .const 'Sub' $P2178 = "125_1274564782.90592"
+ capture_lex $P2178
+ .const 'Sub' $P2171 = "124_1274564782.90592"
+ capture_lex $P2171
+ .const 'Sub' $P2164 = "123_1274564782.90592"
+ capture_lex $P2164
+ .const 'Sub' $P2157 = "122_1274564782.90592"
+ capture_lex $P2157
+ .const 'Sub' $P2144 = "121_1274564782.90592"
+ capture_lex $P2144
+ .const 'Sub' $P2134 = "120_1274564782.90592"
+ capture_lex $P2134
+ .const 'Sub' $P2124 = "119_1274564782.90592"
+ capture_lex $P2124
+ .const 'Sub' $P2114 = "118_1274564782.90592"
+ capture_lex $P2114
+ .const 'Sub' $P2107 = "117_1274564782.90592"
+ capture_lex $P2107
+ .const 'Sub' $P2093 = "116_1274564782.90592"
+ capture_lex $P2093
+ .const 'Sub' $P2083 = "115_1274564782.90592"
+ capture_lex $P2083
+ .const 'Sub' $P2046 = "114_1274564782.90592"
+ capture_lex $P2046
+ .const 'Sub' $P2032 = "113_1274564782.90592"
+ capture_lex $P2032
+ .const 'Sub' $P2022 = "112_1274564782.90592"
+ capture_lex $P2022
+ .const 'Sub' $P2012 = "111_1274564782.90592"
+ capture_lex $P2012
+ .const 'Sub' $P2002 = "110_1274564782.90592"
+ capture_lex $P2002
+ .const 'Sub' $P1992 = "109_1274564782.90592"
+ capture_lex $P1992
+ .const 'Sub' $P1982 = "108_1274564782.90592"
+ capture_lex $P1982
+ .const 'Sub' $P1954 = "107_1274564782.90592"
+ capture_lex $P1954
+ .const 'Sub' $P1937 = "106_1274564782.90592"
+ capture_lex $P1937
+ .const 'Sub' $P1927 = "105_1274564782.90592"
+ capture_lex $P1927
+ .const 'Sub' $P1914 = "104_1274564782.90592"
+ capture_lex $P1914
+ .const 'Sub' $P1901 = "103_1274564782.90592"
+ capture_lex $P1901
+ .const 'Sub' $P1888 = "102_1274564782.90592"
+ capture_lex $P1888
+ .const 'Sub' $P1878 = "101_1274564782.90592"
+ capture_lex $P1878
+ .const 'Sub' $P1849 = "100_1274564782.90592"
+ capture_lex $P1849
+ .const 'Sub' $P1825 = "99_1274564782.90592"
+ capture_lex $P1825
+ .const 'Sub' $P1815 = "98_1274564782.90592"
+ capture_lex $P1815
+ .const 'Sub' $P1805 = "97_1274564782.90592"
+ capture_lex $P1805
+ .const 'Sub' $P1778 = "96_1274564782.90592"
+ capture_lex $P1778
+ .const 'Sub' $P1760 = "95_1274564782.90592"
+ capture_lex $P1760
+ .const 'Sub' $P1750 = "94_1274564782.90592"
+ capture_lex $P1750
+ .const 'Sub' $P1646 = "91_1274564782.90592"
+ capture_lex $P1646
+ .const 'Sub' $P1636 = "90_1274564782.90592"
+ capture_lex $P1636
+ .const 'Sub' $P1607 = "89_1274564782.90592"
+ capture_lex $P1607
+ .const 'Sub' $P1565 = "88_1274564782.90592"
+ capture_lex $P1565
+ .const 'Sub' $P1549 = "87_1274564782.90592"
capture_lex $P1549
- .const 'Sub' $P1540 = "86_1274022903.56472"
+ .const 'Sub' $P1540 = "86_1274564782.90592"
capture_lex $P1540
- .const 'Sub' $P1508 = "85_1274022903.56472"
+ .const 'Sub' $P1508 = "85_1274564782.90592"
capture_lex $P1508
- .const 'Sub' $P1409 = "82_1274022903.56472"
+ .const 'Sub' $P1409 = "82_1274564782.90592"
capture_lex $P1409
- .const 'Sub' $P1392 = "81_1274022903.56472"
+ .const 'Sub' $P1392 = "81_1274564782.90592"
capture_lex $P1392
- .const 'Sub' $P1372 = "80_1274022903.56472"
+ .const 'Sub' $P1372 = "80_1274564782.90592"
capture_lex $P1372
- .const 'Sub' $P1288 = "79_1274022903.56472"
+ .const 'Sub' $P1288 = "79_1274564782.90592"
capture_lex $P1288
- .const 'Sub' $P1264 = "77_1274022903.56472"
+ .const 'Sub' $P1264 = "77_1274564782.90592"
capture_lex $P1264
- .const 'Sub' $P1230 = "75_1274022903.56472"
+ .const 'Sub' $P1230 = "75_1274564782.90592"
capture_lex $P1230
- .const 'Sub' $P1180 = "73_1274022903.56472"
+ .const 'Sub' $P1180 = "73_1274564782.90592"
capture_lex $P1180
- .const 'Sub' $P1170 = "72_1274022903.56472"
+ .const 'Sub' $P1170 = "72_1274564782.90592"
capture_lex $P1170
- .const 'Sub' $P1160 = "71_1274022903.56472"
+ .const 'Sub' $P1160 = "71_1274564782.90592"
capture_lex $P1160
- .const 'Sub' $P1089 = "69_1274022903.56472"
+ .const 'Sub' $P1089 = "69_1274564782.90592"
capture_lex $P1089
- .const 'Sub' $P1072 = "68_1274022903.56472"
+ .const 'Sub' $P1072 = "68_1274564782.90592"
capture_lex $P1072
- .const 'Sub' $P1062 = "67_1274022903.56472"
+ .const 'Sub' $P1062 = "67_1274564782.90592"
capture_lex $P1062
- .const 'Sub' $P1052 = "66_1274022903.56472"
+ .const 'Sub' $P1052 = "66_1274564782.90592"
capture_lex $P1052
- .const 'Sub' $P1042 = "65_1274022903.56472"
+ .const 'Sub' $P1042 = "65_1274564782.90592"
capture_lex $P1042
- .const 'Sub' $P1032 = "64_1274022903.56472"
+ .const 'Sub' $P1032 = "64_1274564782.90592"
capture_lex $P1032
- .const 'Sub' $P1008 = "63_1274022903.56472"
+ .const 'Sub' $P1008 = "63_1274564782.90592"
capture_lex $P1008
- .const 'Sub' $P955 = "62_1274022903.56472"
+ .const 'Sub' $P955 = "62_1274564782.90592"
capture_lex $P955
- .const 'Sub' $P945 = "61_1274022903.56472"
+ .const 'Sub' $P945 = "61_1274564782.90592"
capture_lex $P945
- .const 'Sub' $P856 = "59_1274022903.56472"
+ .const 'Sub' $P856 = "59_1274564782.90592"
capture_lex $P856
- .const 'Sub' $P830 = "58_1274022903.56472"
+ .const 'Sub' $P830 = "58_1274564782.90592"
capture_lex $P830
- .const 'Sub' $P814 = "57_1274022903.56472"
+ .const 'Sub' $P814 = "57_1274564782.90592"
capture_lex $P814
- .const 'Sub' $P804 = "56_1274022903.56472"
+ .const 'Sub' $P804 = "56_1274564782.90592"
capture_lex $P804
- .const 'Sub' $P794 = "55_1274022903.56472"
+ .const 'Sub' $P794 = "55_1274564782.90592"
capture_lex $P794
- .const 'Sub' $P784 = "54_1274022903.56472"
+ .const 'Sub' $P784 = "54_1274564782.90592"
capture_lex $P784
- .const 'Sub' $P774 = "53_1274022903.56472"
+ .const 'Sub' $P774 = "53_1274564782.90592"
capture_lex $P774
- .const 'Sub' $P764 = "52_1274022903.56472"
+ .const 'Sub' $P764 = "52_1274564782.90592"
capture_lex $P764
- .const 'Sub' $P754 = "51_1274022903.56472"
+ .const 'Sub' $P754 = "51_1274564782.90592"
capture_lex $P754
- .const 'Sub' $P744 = "50_1274022903.56472"
+ .const 'Sub' $P744 = "50_1274564782.90592"
capture_lex $P744
- .const 'Sub' $P734 = "49_1274022903.56472"
+ .const 'Sub' $P734 = "49_1274564782.90592"
capture_lex $P734
- .const 'Sub' $P724 = "48_1274022903.56472"
+ .const 'Sub' $P724 = "48_1274564782.90592"
capture_lex $P724
- .const 'Sub' $P714 = "47_1274022903.56472"
+ .const 'Sub' $P714 = "47_1274564782.90592"
capture_lex $P714
- .const 'Sub' $P704 = "46_1274022903.56472"
+ .const 'Sub' $P704 = "46_1274564782.90592"
capture_lex $P704
- .const 'Sub' $P694 = "45_1274022903.56472"
+ .const 'Sub' $P694 = "45_1274564782.90592"
capture_lex $P694
- .const 'Sub' $P684 = "44_1274022903.56472"
+ .const 'Sub' $P684 = "44_1274564782.90592"
capture_lex $P684
- .const 'Sub' $P666 = "43_1274022903.56472"
+ .const 'Sub' $P666 = "43_1274564782.90592"
capture_lex $P666
- .const 'Sub' $P631 = "42_1274022903.56472"
+ .const 'Sub' $P631 = "42_1274564782.90592"
capture_lex $P631
- .const 'Sub' $P615 = "41_1274022903.56472"
+ .const 'Sub' $P615 = "41_1274564782.90592"
capture_lex $P615
- .const 'Sub' $P594 = "40_1274022903.56472"
+ .const 'Sub' $P594 = "40_1274564782.90592"
capture_lex $P594
- .const 'Sub' $P574 = "39_1274022903.56472"
+ .const 'Sub' $P574 = "39_1274564782.90592"
capture_lex $P574
- .const 'Sub' $P561 = "38_1274022903.56472"
+ .const 'Sub' $P561 = "38_1274564782.90592"
capture_lex $P561
- .const 'Sub' $P535 = "37_1274022903.56472"
+ .const 'Sub' $P535 = "37_1274564782.90592"
capture_lex $P535
- .const 'Sub' $P499 = "36_1274022903.56472"
+ .const 'Sub' $P499 = "36_1274564782.90592"
capture_lex $P499
- .const 'Sub' $P482 = "35_1274022903.56472"
+ .const 'Sub' $P482 = "35_1274564782.90592"
capture_lex $P482
- .const 'Sub' $P468 = "34_1274022903.56472"
+ .const 'Sub' $P468 = "34_1274564782.90592"
capture_lex $P468
- .const 'Sub' $P415 = "32_1274022903.56472"
+ .const 'Sub' $P415 = "32_1274564782.90592"
capture_lex $P415
- .const 'Sub' $P402 = "31_1274022903.56472"
+ .const 'Sub' $P402 = "31_1274564782.90592"
capture_lex $P402
- .const 'Sub' $P382 = "30_1274022903.56472"
+ .const 'Sub' $P382 = "30_1274564782.90592"
capture_lex $P382
- .const 'Sub' $P372 = "29_1274022903.56472"
+ .const 'Sub' $P372 = "29_1274564782.90592"
capture_lex $P372
- .const 'Sub' $P362 = "28_1274022903.56472"
+ .const 'Sub' $P362 = "28_1274564782.90592"
capture_lex $P362
- .const 'Sub' $P346 = "27_1274022903.56472"
+ .const 'Sub' $P346 = "27_1274564782.90592"
capture_lex $P346
- .const 'Sub' $P286 = "25_1274022903.56472"
+ .const 'Sub' $P286 = "25_1274564782.90592"
capture_lex $P286
- .const 'Sub' $P243 = "23_1274022903.56472"
+ .const 'Sub' $P243 = "23_1274564782.90592"
capture_lex $P243
- .const 'Sub' $P214 = "22_1274022903.56472"
+ .const 'Sub' $P214 = "22_1274564782.90592"
capture_lex $P214
- .const 'Sub' $P181 = "21_1274022903.56472"
+ .const 'Sub' $P181 = "21_1274564782.90592"
capture_lex $P181
- .const 'Sub' $P171 = "20_1274022903.56472"
+ .const 'Sub' $P171 = "20_1274564782.90592"
capture_lex $P171
- .const 'Sub' $P151 = "19_1274022903.56472"
+ .const 'Sub' $P151 = "19_1274564782.90592"
capture_lex $P151
- .const 'Sub' $P100 = "18_1274022903.56472"
+ .const 'Sub' $P100 = "18_1274564782.90592"
capture_lex $P100
- .const 'Sub' $P84 = "17_1274022903.56472"
+ .const 'Sub' $P84 = "17_1274564782.90592"
capture_lex $P84
- .const 'Sub' $P63 = "16_1274022903.56472"
+ .const 'Sub' $P63 = "16_1274564782.90592"
capture_lex $P63
- .const 'Sub' $P27 = "13_1274022903.56472"
+ .const 'Sub' $P27 = "13_1274564782.90592"
capture_lex $P27
- .const 'Sub' $P16 = "12_1274022903.56472"
+ .const 'Sub' $P16 = "12_1274564782.90592"
capture_lex $P16
get_global $P15, "@BLOCK"
- unless_null $P15, vivify_137
+ unless_null $P15, vivify_141
$P15 = root_new ['parrot';'ResizablePMCArray']
set_global "@BLOCK", $P15
- vivify_137:
+ vivify_141:
.annotate 'line', 9
- .const 'Sub' $P16 = "12_1274022903.56472"
+ .const 'Sub' $P16 = "12_1274564782.90592"
newclosure $P26, $P16
.lex "xblock_immediate", $P26
.annotate 'line', 14
- .const 'Sub' $P27 = "13_1274022903.56472"
+ .const 'Sub' $P27 = "13_1274564782.90592"
newclosure $P62, $P27
.lex "block_immediate", $P62
.annotate 'line', 24
- .const 'Sub' $P63 = "16_1274022903.56472"
+ .const 'Sub' $P63 = "16_1274564782.90592"
newclosure $P83, $P63
.lex "vivitype", $P83
.annotate 'line', 43
- .const 'Sub' $P84 = "17_1274022903.56472"
+ .const 'Sub' $P84 = "17_1274564782.90592"
newclosure $P99, $P84
.lex "colonpair_str", $P99
.annotate 'line', 204
- .const 'Sub' $P100 = "18_1274022903.56472"
+ .const 'Sub' $P100 = "18_1274564782.90592"
newclosure $P150, $P100
.lex "push_block_handler", $P150
.annotate 'line', 788
- .const 'Sub' $P151 = "19_1274022903.56472"
+ .const 'Sub' $P151 = "19_1274564782.90592"
newclosure $P166, $P151
.lex "control", $P166
.annotate 'line', 3
@@ -16704,46 +17413,46 @@
.annotate 'line', 810
get_hll_global $P2189, ["NQP";"RegexActions"], "_block2188"
capture_lex $P2189
- $P2252 = $P2189()
+ $P2360 = $P2189()
.annotate 'line', 3
- .return ($P2252)
- .const 'Sub' $P2254 = "131_1274022903.56472"
- .return ($P2254)
+ .return ($P2360)
+ .const 'Sub' $P2362 = "135_1274564782.90592"
+ .return ($P2362)
.end
.namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post135") :outer("11_1274022903.56472")
+.sub "" :load :init :subid("post139") :outer("11_1274564782.90592")
.annotate 'line', 3
get_hll_global $P14, ["NQP";"Actions"], "_block13"
.local pmc block
set block, $P14
.annotate 'line', 5
- .const 'Sub' $P2258 = "132_1274022903.56472"
- capture_lex $P2258
- $P2258()
- $P2261 = get_root_global ["parrot"], "P6metaclass"
- $P2261."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
+ .const 'Sub' $P2366 = "136_1274564782.90592"
+ capture_lex $P2366
+ $P2366()
+ $P2369 = get_root_global ["parrot"], "P6metaclass"
+ $P2369."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
.end
.namespace ["NQP";"Actions"]
-.sub "_block2257" :anon :subid("132_1274022903.56472") :outer("11_1274022903.56472")
+.sub "_block2365" :anon :subid("136_1274564782.90592") :outer("11_1274564782.90592")
.annotate 'line', 6
- get_global $P2259, "@BLOCK"
- unless_null $P2259, vivify_136
- $P2259 = root_new ['parrot';'ResizablePMCArray']
- set_global "@BLOCK", $P2259
- vivify_136:
- $P2260 = new ['ResizablePMCArray']
- set_global "@BLOCK", $P2260
+ get_global $P2367, "@BLOCK"
+ unless_null $P2367, vivify_140
+ $P2367 = root_new ['parrot';'ResizablePMCArray']
+ set_global "@BLOCK", $P2367
+ vivify_140:
+ $P2368 = new ['ResizablePMCArray']
+ set_global "@BLOCK", $P2368
.annotate 'line', 5
- .return ($P2260)
+ .return ($P2368)
.end
.namespace ["NQP";"Actions"]
-.sub "xblock_immediate" :subid("12_1274022903.56472") :outer("11_1274022903.56472")
+.sub "xblock_immediate" :subid("12_1274564782.90592") :outer("11_1274564782.90592")
.param pmc param_19
.annotate 'line', 9
new $P18, 'ExceptionHandler'
@@ -16753,19 +17462,19 @@
.lex "$xblock", param_19
.annotate 'line', 10
find_lex $P20, "$xblock"
- unless_null $P20, vivify_138
+ unless_null $P20, vivify_142
$P20 = root_new ['parrot';'ResizablePMCArray']
- vivify_138:
+ vivify_142:
set $P21, $P20[1]
- unless_null $P21, vivify_139
+ unless_null $P21, vivify_143
new $P21, "Undef"
- vivify_139:
+ vivify_143:
$P22 = "block_immediate"($P21)
find_lex $P23, "$xblock"
- unless_null $P23, vivify_140
+ unless_null $P23, vivify_144
$P23 = root_new ['parrot';'ResizablePMCArray']
store_lex "$xblock", $P23
- vivify_140:
+ vivify_144:
set $P23[1], $P22
find_lex $P24, "$xblock"
.annotate 'line', 9
@@ -16779,10 +17488,10 @@
.namespace ["NQP";"Actions"]
-.sub "block_immediate" :subid("13_1274022903.56472") :outer("11_1274022903.56472")
+.sub "block_immediate" :subid("13_1274564782.90592") :outer("11_1274564782.90592")
.param pmc param_30
.annotate 'line', 14
- .const 'Sub' $P40 = "14_1274022903.56472"
+ .const 'Sub' $P40 = "14_1274564782.90592"
capture_lex $P40
new $P29, 'ExceptionHandler'
set_addr $P29, control_28
@@ -16804,7 +17513,7 @@
set $P33, $P38
unless_34_end:
if $P33, unless_32_end
- .const 'Sub' $P40 = "14_1274022903.56472"
+ .const 'Sub' $P40 = "14_1274564782.90592"
capture_lex $P40
$P40()
unless_32_end:
@@ -16820,9 +17529,9 @@
.namespace ["NQP";"Actions"]
-.sub "_block39" :anon :subid("14_1274022903.56472") :outer("13_1274022903.56472")
+.sub "_block39" :anon :subid("14_1274564782.90592") :outer("13_1274564782.90592")
.annotate 'line', 16
- .const 'Sub' $P51 = "15_1274022903.56472"
+ .const 'Sub' $P51 = "15_1274564782.90592"
capture_lex $P51
.annotate 'line', 17
new $P41, "Undef"
@@ -16835,7 +17544,7 @@
find_lex $P46, "$block"
$P47 = $P46."list"()
defined $I48, $P47
- unless $I48, for_undef_141
+ unless $I48, for_undef_145
iter $P45, $P47
new $P57, 'ExceptionHandler'
set_addr $P57, loop56_handler
@@ -16845,7 +17554,7 @@
unless $P45, loop56_done
shift $P49, $P45
loop56_redo:
- .const 'Sub' $P51 = "15_1274022903.56472"
+ .const 'Sub' $P51 = "15_1274564782.90592"
capture_lex $P51
$P51($P49)
loop56_next:
@@ -16858,7 +17567,7 @@
eq $P58, 66, loop56_redo
loop56_done:
pop_eh
- for_undef_141:
+ for_undef_145:
.annotate 'line', 19
find_lex $P59, "$stmts"
store_lex "$block", $P59
@@ -16868,7 +17577,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block50" :anon :subid("15_1274022903.56472") :outer("14_1274022903.56472")
+.sub "_block50" :anon :subid("15_1274564782.90592") :outer("14_1274564782.90592")
.param pmc param_52
.annotate 'line', 18
.lex "$_", param_52
@@ -16880,7 +17589,7 @@
.namespace ["NQP";"Actions"]
-.sub "vivitype" :subid("16_1274022903.56472") :outer("11_1274022903.56472")
+.sub "vivitype" :subid("16_1274564782.90592") :outer("11_1274564782.90592")
.param pmc param_66
.annotate 'line', 24
new $P65, 'ExceptionHandler'
@@ -16928,7 +17637,7 @@
.namespace ["NQP";"Actions"]
-.sub "colonpair_str" :subid("17_1274022903.56472") :outer("11_1274022903.56472")
+.sub "colonpair_str" :subid("17_1274564782.90592") :outer("11_1274564782.90592")
.param pmc param_87
.annotate 'line', 43
new $P86, 'ExceptionHandler'
@@ -16966,7 +17675,7 @@
.namespace ["NQP";"Actions"]
-.sub "push_block_handler" :subid("18_1274022903.56472") :outer("11_1274022903.56472")
+.sub "push_block_handler" :subid("18_1274564782.90592") :outer("11_1274564782.90592")
.param pmc param_103
.param pmc param_104
.annotate 'line', 204
@@ -16978,24 +17687,24 @@
.lex "$block", param_104
.annotate 'line', 205
get_global $P106, "@BLOCK"
- unless_null $P106, vivify_142
+ unless_null $P106, vivify_146
$P106 = root_new ['parrot';'ResizablePMCArray']
- vivify_142:
+ vivify_146:
set $P107, $P106[0]
- unless_null $P107, vivify_143
+ unless_null $P107, vivify_147
new $P107, "Undef"
- vivify_143:
+ vivify_147:
$P108 = $P107."handlers"()
if $P108, unless_105_end
.annotate 'line', 206
get_global $P109, "@BLOCK"
- unless_null $P109, vivify_144
+ unless_null $P109, vivify_148
$P109 = root_new ['parrot';'ResizablePMCArray']
- vivify_144:
+ vivify_148:
set $P110, $P109[0]
- unless_null $P110, vivify_145
+ unless_null $P110, vivify_149
new $P110, "Undef"
- vivify_145:
+ vivify_149:
new $P111, "ResizablePMCArray"
$P110."handlers"($P111)
unless_105_end:
@@ -17036,13 +17745,13 @@
$P128."blocktype"("declaration")
.annotate 'line', 221
get_global $P129, "@BLOCK"
- unless_null $P129, vivify_146
+ unless_null $P129, vivify_150
$P129 = root_new ['parrot';'ResizablePMCArray']
- vivify_146:
+ vivify_150:
set $P130, $P129[0]
- unless_null $P130, vivify_147
+ unless_null $P130, vivify_151
new $P130, "Undef"
- vivify_147:
+ vivify_151:
$P131 = $P130."handlers"()
.annotate 'line', 222
get_hll_global $P132, ["PAST"], "Control"
@@ -17083,7 +17792,7 @@
.namespace ["NQP";"Actions"]
-.sub "control" :subid("19_1274022903.56472") :outer("11_1274022903.56472")
+.sub "control" :subid("19_1274564782.90592") :outer("11_1274564782.90592")
.param pmc param_154
.param pmc param_155
.annotate 'line', 788
@@ -17121,7 +17830,7 @@
.namespace ["NQP";"Actions"]
-.sub "TOP" :subid("20_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "TOP" :subid("20_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_174
.annotate 'line', 33
new $P173, 'ExceptionHandler'
@@ -17132,13 +17841,13 @@
.lex "$/", param_174
find_lex $P175, "$/"
find_lex $P176, "$/"
- unless_null $P176, vivify_148
+ unless_null $P176, vivify_152
$P176 = root_new ['parrot';'Hash']
- vivify_148:
+ vivify_152:
set $P177, $P176["comp_unit"]
- unless_null $P177, vivify_149
+ unless_null $P177, vivify_153
new $P177, "Undef"
- vivify_149:
+ vivify_153:
$P178 = $P177."ast"()
$P179 = $P175."!make"($P178)
.return ($P179)
@@ -17151,7 +17860,7 @@
.namespace ["NQP";"Actions"]
-.sub "deflongname" :subid("21_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "deflongname" :subid("21_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_184
.annotate 'line', 35
new $P183, 'ExceptionHandler'
@@ -17164,13 +17873,13 @@
find_lex $P185, "$/"
.annotate 'line', 37
find_lex $P188, "$/"
- unless_null $P188, vivify_150
+ unless_null $P188, vivify_154
$P188 = root_new ['parrot';'Hash']
- vivify_150:
+ vivify_154:
set $P189, $P188["colonpair"]
- unless_null $P189, vivify_151
+ unless_null $P189, vivify_155
new $P189, "Undef"
- vivify_151:
+ vivify_155:
if $P189, if_187
.annotate 'line', 39
find_lex $P209, "$/"
@@ -17181,46 +17890,46 @@
goto if_187_end
if_187:
find_lex $P190, "$/"
- unless_null $P190, vivify_152
+ unless_null $P190, vivify_156
$P190 = root_new ['parrot';'Hash']
- vivify_152:
+ vivify_156:
set $P191, $P190["identifier"]
- unless_null $P191, vivify_153
+ unless_null $P191, vivify_157
new $P191, "Undef"
- vivify_153:
+ vivify_157:
set $S192, $P191
new $P193, 'String'
set $P193, $S192
concat $P194, $P193, ":"
find_lex $P195, "$/"
- unless_null $P195, vivify_154
+ unless_null $P195, vivify_158
$P195 = root_new ['parrot';'Hash']
- vivify_154:
+ vivify_158:
set $P196, $P195["colonpair"]
- unless_null $P196, vivify_155
+ unless_null $P196, vivify_159
$P196 = root_new ['parrot';'ResizablePMCArray']
- vivify_155:
+ vivify_159:
set $P197, $P196[0]
- unless_null $P197, vivify_156
+ unless_null $P197, vivify_160
new $P197, "Undef"
- vivify_156:
+ vivify_160:
$P198 = $P197."ast"()
$S199 = $P198."named"()
concat $P200, $P194, $S199
concat $P201, $P200, "<"
.annotate 'line', 38
find_lex $P202, "$/"
- unless_null $P202, vivify_157
+ unless_null $P202, vivify_161
$P202 = root_new ['parrot';'Hash']
- vivify_157:
+ vivify_161:
set $P203, $P202["colonpair"]
- unless_null $P203, vivify_158
+ unless_null $P203, vivify_162
$P203 = root_new ['parrot';'ResizablePMCArray']
- vivify_158:
+ vivify_162:
set $P204, $P203[0]
- unless_null $P204, vivify_159
+ unless_null $P204, vivify_163
new $P204, "Undef"
- vivify_159:
+ vivify_163:
$P205 = $P204."ast"()
$S206 = "colonpair_str"($P205)
concat $P207, $P201, $S206
@@ -17240,7 +17949,7 @@
.namespace ["NQP";"Actions"]
-.sub "comp_unit" :subid("22_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "comp_unit" :subid("22_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_217
.annotate 'line', 49
new $P216, 'ExceptionHandler'
@@ -17257,13 +17966,13 @@
.lex "$unit", $P219
.annotate 'line', 50
find_lex $P220, "$/"
- unless_null $P220, vivify_160
+ unless_null $P220, vivify_164
$P220 = root_new ['parrot';'Hash']
- vivify_160:
+ vivify_164:
set $P221, $P220["statementlist"]
- unless_null $P221, vivify_161
+ unless_null $P221, vivify_165
new $P221, "Undef"
- vivify_161:
+ vivify_165:
$P222 = $P221."ast"()
store_lex "$mainline", $P222
.annotate 'line', 51
@@ -17309,10 +18018,10 @@
.namespace ["NQP";"Actions"]
-.sub "statementlist" :subid("23_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statementlist" :subid("23_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_246
.annotate 'line', 72
- .const 'Sub' $P260 = "24_1274022903.56472"
+ .const 'Sub' $P260 = "24_1274564782.90592"
capture_lex $P260
new $P245, 'ExceptionHandler'
set_addr $P245, control_244
@@ -17329,25 +18038,25 @@
store_lex "$past", $P250
.annotate 'line', 74
find_lex $P252, "$/"
- unless_null $P252, vivify_162
+ unless_null $P252, vivify_166
$P252 = root_new ['parrot';'Hash']
- vivify_162:
+ vivify_166:
set $P253, $P252["statement"]
- unless_null $P253, vivify_163
+ unless_null $P253, vivify_167
new $P253, "Undef"
- vivify_163:
+ vivify_167:
unless $P253, if_251_end
.annotate 'line', 75
find_lex $P255, "$/"
- unless_null $P255, vivify_164
+ unless_null $P255, vivify_168
$P255 = root_new ['parrot';'Hash']
- vivify_164:
+ vivify_168:
set $P256, $P255["statement"]
- unless_null $P256, vivify_165
+ unless_null $P256, vivify_169
new $P256, "Undef"
- vivify_165:
+ vivify_169:
defined $I257, $P256
- unless $I257, for_undef_166
+ unless $I257, for_undef_170
iter $P254, $P256
new $P280, 'ExceptionHandler'
set_addr $P280, loop279_handler
@@ -17357,7 +18066,7 @@
unless $P254, loop279_done
shift $P258, $P254
loop279_redo:
- .const 'Sub' $P260 = "24_1274022903.56472"
+ .const 'Sub' $P260 = "24_1274564782.90592"
capture_lex $P260
$P260($P258)
loop279_next:
@@ -17370,7 +18079,7 @@
eq $P281, 66, loop279_redo
loop279_done:
pop_eh
- for_undef_166:
+ for_undef_170:
if_251_end:
.annotate 'line', 82
find_lex $P282, "$/"
@@ -17387,7 +18096,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block259" :anon :subid("24_1274022903.56472") :outer("23_1274022903.56472")
+.sub "_block259" :anon :subid("24_1274564782.90592") :outer("23_1274564782.90592")
.param pmc param_262
.annotate 'line', 76
new $P261, "Undef"
@@ -17398,34 +18107,34 @@
store_lex "$ast", $P264
.annotate 'line', 77
find_lex $P266, "$ast"
- unless_null $P266, vivify_167
+ unless_null $P266, vivify_171
$P266 = root_new ['parrot';'Hash']
- vivify_167:
+ vivify_171:
set $P267, $P266["sink"]
- unless_null $P267, vivify_168
+ unless_null $P267, vivify_172
new $P267, "Undef"
- vivify_168:
+ vivify_172:
defined $I268, $P267
unless $I268, if_265_end
find_lex $P269, "$ast"
- unless_null $P269, vivify_169
+ unless_null $P269, vivify_173
$P269 = root_new ['parrot';'Hash']
- vivify_169:
+ vivify_173:
set $P270, $P269["sink"]
- unless_null $P270, vivify_170
+ unless_null $P270, vivify_174
new $P270, "Undef"
- vivify_170:
+ vivify_174:
store_lex "$ast", $P270
if_265_end:
.annotate 'line', 78
find_lex $P272, "$ast"
- unless_null $P272, vivify_171
+ unless_null $P272, vivify_175
$P272 = root_new ['parrot';'Hash']
- vivify_171:
+ vivify_175:
set $P273, $P272["bareblock"]
- unless_null $P273, vivify_172
+ unless_null $P273, vivify_176
new $P273, "Undef"
- vivify_172:
+ vivify_176:
unless $P273, if_271_end
find_lex $P274, "$ast"
$P275 = "block_immediate"($P274)
@@ -17441,12 +18150,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement" :subid("25_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement" :subid("25_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_289
.param pmc param_290 :optional
.param int has_param_290 :opt_flag
.annotate 'line', 85
- .const 'Sub' $P298 = "26_1274022903.56472"
+ .const 'Sub' $P298 = "26_1274564782.90592"
capture_lex $P298
new $P288, 'ExceptionHandler'
set_addr $P288, control_287
@@ -17454,10 +18163,10 @@
push_eh $P288
.lex "self", self
.lex "$/", param_289
- if has_param_290, optparam_173
+ if has_param_290, optparam_177
new $P291, "Undef"
set param_290, $P291
- optparam_173:
+ optparam_177:
.lex "$key", param_290
.annotate 'line', 86
new $P292, "Undef"
@@ -17466,23 +18175,23 @@
find_lex $P293, "$past"
.annotate 'line', 87
find_lex $P295, "$/"
- unless_null $P295, vivify_174
+ unless_null $P295, vivify_178
$P295 = root_new ['parrot';'Hash']
- vivify_174:
+ vivify_178:
set $P296, $P295["EXPR"]
- unless_null $P296, vivify_175
+ unless_null $P296, vivify_179
new $P296, "Undef"
- vivify_175:
+ vivify_179:
if $P296, if_294
.annotate 'line', 98
find_lex $P336, "$/"
- unless_null $P336, vivify_176
+ unless_null $P336, vivify_180
$P336 = root_new ['parrot';'Hash']
- vivify_176:
+ vivify_180:
set $P337, $P336["statement_control"]
- unless_null $P337, vivify_177
+ unless_null $P337, vivify_181
new $P337, "Undef"
- vivify_177:
+ vivify_181:
if $P337, if_335
.annotate 'line', 99
new $P341, "Integer"
@@ -17492,20 +18201,20 @@
if_335:
.annotate 'line', 98
find_lex $P338, "$/"
- unless_null $P338, vivify_178
+ unless_null $P338, vivify_182
$P338 = root_new ['parrot';'Hash']
- vivify_178:
+ vivify_182:
set $P339, $P338["statement_control"]
- unless_null $P339, vivify_179
+ unless_null $P339, vivify_183
new $P339, "Undef"
- vivify_179:
+ vivify_183:
$P340 = $P339."ast"()
store_lex "$past", $P340
if_335_end:
goto if_294_end
if_294:
.annotate 'line', 87
- .const 'Sub' $P298 = "26_1274022903.56472"
+ .const 'Sub' $P298 = "26_1274564782.90592"
capture_lex $P298
$P298()
if_294_end:
@@ -17524,7 +18233,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block297" :anon :subid("26_1274022903.56472") :outer("25_1274022903.56472")
+.sub "_block297" :anon :subid("26_1274564782.90592") :outer("25_1274564782.90592")
.annotate 'line', 88
new $P299, "Undef"
.lex "$mc", $P299
@@ -17533,41 +18242,41 @@
.lex "$ml", $P300
.annotate 'line', 88
find_lex $P301, "$/"
- unless_null $P301, vivify_180
+ unless_null $P301, vivify_184
$P301 = root_new ['parrot';'Hash']
- vivify_180:
+ vivify_184:
set $P302, $P301["statement_mod_cond"]
- unless_null $P302, vivify_181
+ unless_null $P302, vivify_185
$P302 = root_new ['parrot';'ResizablePMCArray']
- vivify_181:
+ vivify_185:
set $P303, $P302[0]
- unless_null $P303, vivify_182
+ unless_null $P303, vivify_186
new $P303, "Undef"
- vivify_182:
+ vivify_186:
store_lex "$mc", $P303
.annotate 'line', 89
find_lex $P304, "$/"
- unless_null $P304, vivify_183
+ unless_null $P304, vivify_187
$P304 = root_new ['parrot';'Hash']
- vivify_183:
+ vivify_187:
set $P305, $P304["statement_mod_loop"]
- unless_null $P305, vivify_184
+ unless_null $P305, vivify_188
$P305 = root_new ['parrot';'ResizablePMCArray']
- vivify_184:
+ vivify_188:
set $P306, $P305[0]
- unless_null $P306, vivify_185
+ unless_null $P306, vivify_189
new $P306, "Undef"
- vivify_185:
+ vivify_189:
store_lex "$ml", $P306
.annotate 'line', 90
find_lex $P307, "$/"
- unless_null $P307, vivify_186
+ unless_null $P307, vivify_190
$P307 = root_new ['parrot';'Hash']
- vivify_186:
+ vivify_190:
set $P308, $P307["EXPR"]
- unless_null $P308, vivify_187
+ unless_null $P308, vivify_191
new $P308, "Undef"
- vivify_187:
+ vivify_191:
$P309 = $P308."ast"()
store_lex "$past", $P309
.annotate 'line', 91
@@ -17576,23 +18285,23 @@
.annotate 'line', 92
get_hll_global $P312, ["PAST"], "Op"
find_lex $P313, "$mc"
- unless_null $P313, vivify_188
+ unless_null $P313, vivify_192
$P313 = root_new ['parrot';'Hash']
- vivify_188:
+ vivify_192:
set $P314, $P313["cond"]
- unless_null $P314, vivify_189
+ unless_null $P314, vivify_193
new $P314, "Undef"
- vivify_189:
+ vivify_193:
$P315 = $P314."ast"()
find_lex $P316, "$past"
find_lex $P317, "$mc"
- unless_null $P317, vivify_190
+ unless_null $P317, vivify_194
$P317 = root_new ['parrot';'Hash']
- vivify_190:
+ vivify_194:
set $P318, $P317["sym"]
- unless_null $P318, vivify_191
+ unless_null $P318, vivify_195
new $P318, "Undef"
- vivify_191:
+ vivify_195:
set $S319, $P318
find_lex $P320, "$/"
$P321 = $P312."new"($P315, $P316, $S319 :named("pasttype"), $P320 :named("node"))
@@ -17607,23 +18316,23 @@
.annotate 'line', 95
get_hll_global $P325, ["PAST"], "Op"
find_lex $P326, "$ml"
- unless_null $P326, vivify_192
+ unless_null $P326, vivify_196
$P326 = root_new ['parrot';'Hash']
- vivify_192:
+ vivify_196:
set $P327, $P326["cond"]
- unless_null $P327, vivify_193
+ unless_null $P327, vivify_197
new $P327, "Undef"
- vivify_193:
+ vivify_197:
$P328 = $P327."ast"()
find_lex $P329, "$past"
find_lex $P330, "$ml"
- unless_null $P330, vivify_194
+ unless_null $P330, vivify_198
$P330 = root_new ['parrot';'Hash']
- vivify_194:
+ vivify_198:
set $P331, $P330["sym"]
- unless_null $P331, vivify_195
+ unless_null $P331, vivify_199
new $P331, "Undef"
- vivify_195:
+ vivify_199:
set $S332, $P331
find_lex $P333, "$/"
$P334 = $P325."new"($P328, $P329, $S332 :named("pasttype"), $P333 :named("node"))
@@ -17637,7 +18346,7 @@
.namespace ["NQP";"Actions"]
-.sub "xblock" :subid("27_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "xblock" :subid("27_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_349
.annotate 'line', 103
new $P348, 'ExceptionHandler'
@@ -17650,22 +18359,22 @@
find_lex $P350, "$/"
get_hll_global $P351, ["PAST"], "Op"
find_lex $P352, "$/"
- unless_null $P352, vivify_196
+ unless_null $P352, vivify_200
$P352 = root_new ['parrot';'Hash']
- vivify_196:
+ vivify_200:
set $P353, $P352["EXPR"]
- unless_null $P353, vivify_197
+ unless_null $P353, vivify_201
new $P353, "Undef"
- vivify_197:
+ vivify_201:
$P354 = $P353."ast"()
find_lex $P355, "$/"
- unless_null $P355, vivify_198
+ unless_null $P355, vivify_202
$P355 = root_new ['parrot';'Hash']
- vivify_198:
+ vivify_202:
set $P356, $P355["pblock"]
- unless_null $P356, vivify_199
+ unless_null $P356, vivify_203
new $P356, "Undef"
- vivify_199:
+ vivify_203:
$P357 = $P356."ast"()
find_lex $P358, "$/"
$P359 = $P351."new"($P354, $P357, "if" :named("pasttype"), $P358 :named("node"))
@@ -17681,7 +18390,7 @@
.namespace ["NQP";"Actions"]
-.sub "pblock" :subid("28_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "pblock" :subid("28_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_365
.annotate 'line', 107
new $P364, 'ExceptionHandler'
@@ -17693,13 +18402,13 @@
.annotate 'line', 108
find_lex $P366, "$/"
find_lex $P367, "$/"
- unless_null $P367, vivify_200
+ unless_null $P367, vivify_204
$P367 = root_new ['parrot';'Hash']
- vivify_200:
+ vivify_204:
set $P368, $P367["blockoid"]
- unless_null $P368, vivify_201
+ unless_null $P368, vivify_205
new $P368, "Undef"
- vivify_201:
+ vivify_205:
$P369 = $P368."ast"()
$P370 = $P366."!make"($P369)
.annotate 'line', 107
@@ -17713,7 +18422,7 @@
.namespace ["NQP";"Actions"]
-.sub "block" :subid("29_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "block" :subid("29_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_375
.annotate 'line', 111
new $P374, 'ExceptionHandler'
@@ -17725,13 +18434,13 @@
.annotate 'line', 112
find_lex $P376, "$/"
find_lex $P377, "$/"
- unless_null $P377, vivify_202
+ unless_null $P377, vivify_206
$P377 = root_new ['parrot';'Hash']
- vivify_202:
+ vivify_206:
set $P378, $P377["blockoid"]
- unless_null $P378, vivify_203
+ unless_null $P378, vivify_207
new $P378, "Undef"
- vivify_203:
+ vivify_207:
$P379 = $P378."ast"()
$P380 = $P376."!make"($P379)
.annotate 'line', 111
@@ -17745,7 +18454,7 @@
.namespace ["NQP";"Actions"]
-.sub "blockoid" :subid("30_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "blockoid" :subid("30_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_385
.annotate 'line', 115
new $P384, 'ExceptionHandler'
@@ -17762,13 +18471,13 @@
.lex "$BLOCK", $P387
.annotate 'line', 116
find_lex $P388, "$/"
- unless_null $P388, vivify_204
+ unless_null $P388, vivify_208
$P388 = root_new ['parrot';'Hash']
- vivify_204:
+ vivify_208:
set $P389, $P388["statementlist"]
- unless_null $P389, vivify_205
+ unless_null $P389, vivify_209
new $P389, "Undef"
- vivify_205:
+ vivify_209:
$P390 = $P389."ast"()
store_lex "$past", $P390
.annotate 'line', 117
@@ -17801,7 +18510,7 @@
.namespace ["NQP";"Actions"]
-.sub "newpad" :subid("31_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "newpad" :subid("31_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_405
.annotate 'line', 124
new $P404, 'ExceptionHandler'
@@ -17812,10 +18521,10 @@
.lex "$/", param_405
.annotate 'line', 125
get_global $P406, "@BLOCK"
- unless_null $P406, vivify_206
+ unless_null $P406, vivify_210
$P406 = root_new ['parrot';'ResizablePMCArray']
set_global "@BLOCK", $P406
- vivify_206:
+ vivify_210:
.annotate 'line', 124
get_global $P407, "@BLOCK"
.annotate 'line', 126
@@ -17836,10 +18545,10 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>" :subid("32_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<if>" :subid("32_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_418
.annotate 'line', 131
- .const 'Sub' $P446 = "33_1274022903.56472"
+ .const 'Sub' $P446 = "33_1274564782.90592"
capture_lex $P446
new $P417, 'ExceptionHandler'
set_addr $P417, control_416
@@ -17855,13 +18564,13 @@
.lex "$past", $P420
.annotate 'line', 132
find_lex $P421, "$/"
- unless_null $P421, vivify_207
+ unless_null $P421, vivify_211
$P421 = root_new ['parrot';'Hash']
- vivify_207:
+ vivify_211:
set $P422, $P421["xblock"]
- unless_null $P422, vivify_208
+ unless_null $P422, vivify_212
new $P422, "Undef"
- vivify_208:
+ vivify_212:
set $N423, $P422
new $P424, 'Float'
set $P424, $N423
@@ -17871,44 +18580,44 @@
find_lex $P426, "$count"
set $I427, $P426
find_lex $P428, "$/"
- unless_null $P428, vivify_209
+ unless_null $P428, vivify_213
$P428 = root_new ['parrot';'Hash']
- vivify_209:
+ vivify_213:
set $P429, $P428["xblock"]
- unless_null $P429, vivify_210
+ unless_null $P429, vivify_214
$P429 = root_new ['parrot';'ResizablePMCArray']
- vivify_210:
+ vivify_214:
set $P430, $P429[$I427]
- unless_null $P430, vivify_211
+ unless_null $P430, vivify_215
new $P430, "Undef"
- vivify_211:
+ vivify_215:
$P431 = $P430."ast"()
$P432 = "xblock_immediate"($P431)
store_lex "$past", $P432
.annotate 'line', 134
find_lex $P434, "$/"
- unless_null $P434, vivify_212
+ unless_null $P434, vivify_216
$P434 = root_new ['parrot';'Hash']
- vivify_212:
+ vivify_216:
set $P435, $P434["else"]
- unless_null $P435, vivify_213
+ unless_null $P435, vivify_217
new $P435, "Undef"
- vivify_213:
+ vivify_217:
unless $P435, if_433_end
.annotate 'line', 135
find_lex $P436, "$past"
find_lex $P437, "$/"
- unless_null $P437, vivify_214
+ unless_null $P437, vivify_218
$P437 = root_new ['parrot';'Hash']
- vivify_214:
+ vivify_218:
set $P438, $P437["else"]
- unless_null $P438, vivify_215
+ unless_null $P438, vivify_219
$P438 = root_new ['parrot';'ResizablePMCArray']
- vivify_215:
+ vivify_219:
set $P439, $P438[0]
- unless_null $P439, vivify_216
+ unless_null $P439, vivify_220
new $P439, "Undef"
- vivify_216:
+ vivify_220:
$P440 = $P439."ast"()
$P441 = "block_immediate"($P440)
$P436."push"($P441)
@@ -17924,7 +18633,7 @@
isgt $I444, $N443, 0.0
unless $I444, loop461_done
loop461_redo:
- .const 'Sub' $P446 = "33_1274022903.56472"
+ .const 'Sub' $P446 = "33_1274564782.90592"
capture_lex $P446
$P446()
loop461_next:
@@ -17952,7 +18661,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block445" :anon :subid("33_1274022903.56472") :outer("32_1274022903.56472")
+.sub "_block445" :anon :subid("33_1274564782.90592") :outer("32_1274564782.90592")
.annotate 'line', 140
new $P447, "Undef"
.lex "$else", $P447
@@ -17967,17 +18676,17 @@
find_lex $P451, "$count"
set $I452, $P451
find_lex $P453, "$/"
- unless_null $P453, vivify_217
+ unless_null $P453, vivify_221
$P453 = root_new ['parrot';'Hash']
- vivify_217:
+ vivify_221:
set $P454, $P453["xblock"]
- unless_null $P454, vivify_218
+ unless_null $P454, vivify_222
$P454 = root_new ['parrot';'ResizablePMCArray']
- vivify_218:
+ vivify_222:
set $P455, $P454[$I452]
- unless_null $P455, vivify_219
+ unless_null $P455, vivify_223
new $P455, "Undef"
- vivify_219:
+ vivify_223:
$P456 = $P455."ast"()
$P457 = "xblock_immediate"($P456)
store_lex "$past", $P457
@@ -17991,7 +18700,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>" :subid("34_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<unless>" :subid("34_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_471
.annotate 'line', 147
new $P470, 'ExceptionHandler'
@@ -18004,13 +18713,13 @@
new $P472, "Undef"
.lex "$past", $P472
find_lex $P473, "$/"
- unless_null $P473, vivify_220
+ unless_null $P473, vivify_224
$P473 = root_new ['parrot';'Hash']
- vivify_220:
+ vivify_224:
set $P474, $P473["xblock"]
- unless_null $P474, vivify_221
+ unless_null $P474, vivify_225
new $P474, "Undef"
- vivify_221:
+ vivify_225:
$P475 = $P474."ast"()
$P476 = "xblock_immediate"($P475)
store_lex "$past", $P476
@@ -18032,7 +18741,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>" :subid("35_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<while>" :subid("35_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_485
.annotate 'line', 153
new $P484, 'ExceptionHandler'
@@ -18045,26 +18754,26 @@
new $P486, "Undef"
.lex "$past", $P486
find_lex $P487, "$/"
- unless_null $P487, vivify_222
+ unless_null $P487, vivify_226
$P487 = root_new ['parrot';'Hash']
- vivify_222:
+ vivify_226:
set $P488, $P487["xblock"]
- unless_null $P488, vivify_223
+ unless_null $P488, vivify_227
new $P488, "Undef"
- vivify_223:
+ vivify_227:
$P489 = $P488."ast"()
$P490 = "xblock_immediate"($P489)
store_lex "$past", $P490
.annotate 'line', 155
find_lex $P491, "$past"
find_lex $P492, "$/"
- unless_null $P492, vivify_224
+ unless_null $P492, vivify_228
$P492 = root_new ['parrot';'Hash']
- vivify_224:
+ vivify_228:
set $P493, $P492["sym"]
- unless_null $P493, vivify_225
+ unless_null $P493, vivify_229
new $P493, "Undef"
- vivify_225:
+ vivify_229:
set $S494, $P493
$P491."pasttype"($S494)
.annotate 'line', 156
@@ -18082,7 +18791,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>" :subid("36_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<repeat>" :subid("36_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_502
.annotate 'line', 159
new $P501, 'ExceptionHandler'
@@ -18101,46 +18810,46 @@
new $P505, "String"
assign $P505, "repeat_"
find_lex $P506, "$/"
- unless_null $P506, vivify_226
+ unless_null $P506, vivify_230
$P506 = root_new ['parrot';'Hash']
- vivify_226:
+ vivify_230:
set $P507, $P506["wu"]
- unless_null $P507, vivify_227
+ unless_null $P507, vivify_231
new $P507, "Undef"
- vivify_227:
+ vivify_231:
set $S508, $P507
concat $P509, $P505, $S508
store_lex "$pasttype", $P509
find_lex $P510, "$past"
.annotate 'line', 162
find_lex $P512, "$/"
- unless_null $P512, vivify_228
+ unless_null $P512, vivify_232
$P512 = root_new ['parrot';'Hash']
- vivify_228:
+ vivify_232:
set $P513, $P512["xblock"]
- unless_null $P513, vivify_229
+ unless_null $P513, vivify_233
new $P513, "Undef"
- vivify_229:
+ vivify_233:
if $P513, if_511
.annotate 'line', 167
get_hll_global $P520, ["PAST"], "Op"
find_lex $P521, "$/"
- unless_null $P521, vivify_230
+ unless_null $P521, vivify_234
$P521 = root_new ['parrot';'Hash']
- vivify_230:
+ vivify_234:
set $P522, $P521["EXPR"]
- unless_null $P522, vivify_231
+ unless_null $P522, vivify_235
new $P522, "Undef"
- vivify_231:
+ vivify_235:
$P523 = $P522."ast"()
find_lex $P524, "$/"
- unless_null $P524, vivify_232
+ unless_null $P524, vivify_236
$P524 = root_new ['parrot';'Hash']
- vivify_232:
+ vivify_236:
set $P525, $P524["pblock"]
- unless_null $P525, vivify_233
+ unless_null $P525, vivify_237
new $P525, "Undef"
- vivify_233:
+ vivify_237:
$P526 = $P525."ast"()
$P527 = "block_immediate"($P526)
find_lex $P528, "$pasttype"
@@ -18152,13 +18861,13 @@
if_511:
.annotate 'line', 163
find_lex $P514, "$/"
- unless_null $P514, vivify_234
+ unless_null $P514, vivify_238
$P514 = root_new ['parrot';'Hash']
- vivify_234:
+ vivify_238:
set $P515, $P514["xblock"]
- unless_null $P515, vivify_235
+ unless_null $P515, vivify_239
new $P515, "Undef"
- vivify_235:
+ vivify_239:
$P516 = $P515."ast"()
$P517 = "xblock_immediate"($P516)
store_lex "$past", $P517
@@ -18182,7 +18891,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>" :subid("37_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<for>" :subid("37_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_538
.annotate 'line', 173
new $P537, 'ExceptionHandler'
@@ -18199,13 +18908,13 @@
.lex "$block", $P540
.annotate 'line', 174
find_lex $P541, "$/"
- unless_null $P541, vivify_236
+ unless_null $P541, vivify_240
$P541 = root_new ['parrot';'Hash']
- vivify_236:
+ vivify_240:
set $P542, $P541["xblock"]
- unless_null $P542, vivify_237
+ unless_null $P542, vivify_241
new $P542, "Undef"
- vivify_237:
+ vivify_241:
$P543 = $P542."ast"()
store_lex "$past", $P543
.annotate 'line', 175
@@ -18213,13 +18922,13 @@
$P544."pasttype"("for")
.annotate 'line', 176
find_lex $P545, "$past"
- unless_null $P545, vivify_238
+ unless_null $P545, vivify_242
$P545 = root_new ['parrot';'ResizablePMCArray']
- vivify_238:
+ vivify_242:
set $P546, $P545[1]
- unless_null $P546, vivify_239
+ unless_null $P546, vivify_243
new $P546, "Undef"
- vivify_239:
+ vivify_243:
store_lex "$block", $P546
.annotate 'line', 177
find_lex $P548, "$block"
@@ -18227,13 +18936,13 @@
if $P549, unless_547_end
.annotate 'line', 178
find_lex $P550, "$block"
- unless_null $P550, vivify_240
+ unless_null $P550, vivify_244
$P550 = root_new ['parrot';'ResizablePMCArray']
- vivify_240:
+ vivify_244:
set $P551, $P550[0]
- unless_null $P551, vivify_241
+ unless_null $P551, vivify_245
new $P551, "Undef"
- vivify_241:
+ vivify_245:
get_hll_global $P552, ["PAST"], "Var"
$P553 = $P552."new"("$_" :named("name"), "parameter" :named("scope"))
$P551."push"($P553)
@@ -18262,7 +18971,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>" :subid("38_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<return>" :subid("38_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_564
.annotate 'line', 186
new $P563, 'ExceptionHandler'
@@ -18275,13 +18984,13 @@
find_lex $P565, "$/"
get_hll_global $P566, ["PAST"], "Op"
find_lex $P567, "$/"
- unless_null $P567, vivify_242
+ unless_null $P567, vivify_246
$P567 = root_new ['parrot';'Hash']
- vivify_242:
+ vivify_246:
set $P568, $P567["EXPR"]
- unless_null $P568, vivify_243
+ unless_null $P568, vivify_247
new $P568, "Undef"
- vivify_243:
+ vivify_247:
$P569 = $P568."ast"()
find_lex $P570, "$/"
$P571 = $P566."new"($P569, "return" :named("pasttype"), $P570 :named("node"))
@@ -18297,7 +19006,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>" :subid("39_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<CATCH>" :subid("39_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_577
.annotate 'line', 190
new $P576, 'ExceptionHandler'
@@ -18310,13 +19019,13 @@
new $P578, "Undef"
.lex "$block", $P578
find_lex $P579, "$/"
- unless_null $P579, vivify_244
+ unless_null $P579, vivify_248
$P579 = root_new ['parrot';'Hash']
- vivify_244:
+ vivify_248:
set $P580, $P579["block"]
- unless_null $P580, vivify_245
+ unless_null $P580, vivify_249
new $P580, "Undef"
- vivify_245:
+ vivify_249:
$P581 = $P580."ast"()
store_lex "$block", $P581
.annotate 'line', 192
@@ -18325,18 +19034,18 @@
"push_block_handler"($P582, $P583)
.annotate 'line', 193
get_global $P584, "@BLOCK"
- unless_null $P584, vivify_246
+ unless_null $P584, vivify_250
$P584 = root_new ['parrot';'ResizablePMCArray']
- vivify_246:
+ vivify_250:
set $P585, $P584[0]
- unless_null $P585, vivify_247
+ unless_null $P585, vivify_251
new $P585, "Undef"
- vivify_247:
+ vivify_251:
$P586 = $P585."handlers"()
set $P587, $P586[0]
- unless_null $P587, vivify_248
+ unless_null $P587, vivify_252
new $P587, "Undef"
- vivify_248:
+ vivify_252:
$P587."handle_types_except"("CONTROL")
.annotate 'line', 194
find_lex $P588, "$/"
@@ -18355,7 +19064,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>" :subid("40_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_control:sym<CONTROL>" :subid("40_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_597
.annotate 'line', 197
new $P596, 'ExceptionHandler'
@@ -18368,13 +19077,13 @@
new $P598, "Undef"
.lex "$block", $P598
find_lex $P599, "$/"
- unless_null $P599, vivify_249
+ unless_null $P599, vivify_253
$P599 = root_new ['parrot';'Hash']
- vivify_249:
+ vivify_253:
set $P600, $P599["block"]
- unless_null $P600, vivify_250
+ unless_null $P600, vivify_254
new $P600, "Undef"
- vivify_250:
+ vivify_254:
$P601 = $P600."ast"()
store_lex "$block", $P601
.annotate 'line', 199
@@ -18383,18 +19092,18 @@
"push_block_handler"($P602, $P603)
.annotate 'line', 200
get_global $P604, "@BLOCK"
- unless_null $P604, vivify_251
+ unless_null $P604, vivify_255
$P604 = root_new ['parrot';'ResizablePMCArray']
- vivify_251:
+ vivify_255:
set $P605, $P604[0]
- unless_null $P605, vivify_252
+ unless_null $P605, vivify_256
new $P605, "Undef"
- vivify_252:
+ vivify_256:
$P606 = $P605."handlers"()
set $P607, $P606[0]
- unless_null $P607, vivify_253
+ unless_null $P607, vivify_257
new $P607, "Undef"
- vivify_253:
+ vivify_257:
$P607."handle_types"("CONTROL")
.annotate 'line', 201
find_lex $P608, "$/"
@@ -18413,7 +19122,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>" :subid("41_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_prefix:sym<INIT>" :subid("41_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_618
.annotate 'line', 241
new $P617, 'ExceptionHandler'
@@ -18424,22 +19133,22 @@
.lex "$/", param_618
.annotate 'line', 242
get_global $P619, "@BLOCK"
- unless_null $P619, vivify_254
+ unless_null $P619, vivify_258
$P619 = root_new ['parrot';'ResizablePMCArray']
- vivify_254:
+ vivify_258:
set $P620, $P619[0]
- unless_null $P620, vivify_255
+ unless_null $P620, vivify_259
new $P620, "Undef"
- vivify_255:
+ vivify_259:
$P621 = $P620."loadinit"()
find_lex $P622, "$/"
- unless_null $P622, vivify_256
+ unless_null $P622, vivify_260
$P622 = root_new ['parrot';'Hash']
- vivify_256:
+ vivify_260:
set $P623, $P622["blorst"]
- unless_null $P623, vivify_257
+ unless_null $P623, vivify_261
new $P623, "Undef"
- vivify_257:
+ vivify_261:
$P624 = $P623."ast"()
$P621."push"($P624)
.annotate 'line', 243
@@ -18459,7 +19168,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>" :subid("42_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_prefix:sym<try>" :subid("42_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_634
.annotate 'line', 246
new $P633, 'ExceptionHandler'
@@ -18472,13 +19181,13 @@
new $P635, "Undef"
.lex "$past", $P635
find_lex $P636, "$/"
- unless_null $P636, vivify_258
+ unless_null $P636, vivify_262
$P636 = root_new ['parrot';'Hash']
- vivify_258:
+ vivify_262:
set $P637, $P636["blorst"]
- unless_null $P637, vivify_259
+ unless_null $P637, vivify_263
new $P637, "Undef"
- vivify_259:
+ vivify_263:
$P638 = $P637."ast"()
store_lex "$past", $P638
.annotate 'line', 248
@@ -18536,7 +19245,7 @@
.namespace ["NQP";"Actions"]
-.sub "blorst" :subid("43_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "blorst" :subid("43_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_669
.annotate 'line', 269
new $P668, 'ExceptionHandler'
@@ -18549,36 +19258,36 @@
find_lex $P670, "$/"
.annotate 'line', 271
find_lex $P673, "$/"
- unless_null $P673, vivify_260
+ unless_null $P673, vivify_264
$P673 = root_new ['parrot';'Hash']
- vivify_260:
+ vivify_264:
set $P674, $P673["block"]
- unless_null $P674, vivify_261
+ unless_null $P674, vivify_265
new $P674, "Undef"
- vivify_261:
+ vivify_265:
if $P674, if_672
.annotate 'line', 272
find_lex $P679, "$/"
- unless_null $P679, vivify_262
+ unless_null $P679, vivify_266
$P679 = root_new ['parrot';'Hash']
- vivify_262:
+ vivify_266:
set $P680, $P679["statement"]
- unless_null $P680, vivify_263
+ unless_null $P680, vivify_267
new $P680, "Undef"
- vivify_263:
+ vivify_267:
$P681 = $P680."ast"()
set $P671, $P681
.annotate 'line', 271
goto if_672_end
if_672:
find_lex $P675, "$/"
- unless_null $P675, vivify_264
+ unless_null $P675, vivify_268
$P675 = root_new ['parrot';'Hash']
- vivify_264:
+ vivify_268:
set $P676, $P675["block"]
- unless_null $P676, vivify_265
+ unless_null $P676, vivify_269
new $P676, "Undef"
- vivify_265:
+ vivify_269:
$P677 = $P676."ast"()
$P678 = "block_immediate"($P677)
set $P671, $P678
@@ -18595,7 +19304,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>" :subid("44_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_mod_cond:sym<if>" :subid("44_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_687
.annotate 'line', 277
new $P686, 'ExceptionHandler'
@@ -18606,13 +19315,13 @@
.lex "$/", param_687
find_lex $P688, "$/"
find_lex $P689, "$/"
- unless_null $P689, vivify_266
+ unless_null $P689, vivify_270
$P689 = root_new ['parrot';'Hash']
- vivify_266:
+ vivify_270:
set $P690, $P689["cond"]
- unless_null $P690, vivify_267
+ unless_null $P690, vivify_271
new $P690, "Undef"
- vivify_267:
+ vivify_271:
$P691 = $P690."ast"()
$P692 = $P688."!make"($P691)
.return ($P692)
@@ -18625,7 +19334,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>" :subid("45_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_mod_cond:sym<unless>" :subid("45_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_697
.annotate 'line', 278
new $P696, 'ExceptionHandler'
@@ -18636,13 +19345,13 @@
.lex "$/", param_697
find_lex $P698, "$/"
find_lex $P699, "$/"
- unless_null $P699, vivify_268
+ unless_null $P699, vivify_272
$P699 = root_new ['parrot';'Hash']
- vivify_268:
+ vivify_272:
set $P700, $P699["cond"]
- unless_null $P700, vivify_269
+ unless_null $P700, vivify_273
new $P700, "Undef"
- vivify_269:
+ vivify_273:
$P701 = $P700."ast"()
$P702 = $P698."!make"($P701)
.return ($P702)
@@ -18655,7 +19364,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>" :subid("46_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_mod_loop:sym<while>" :subid("46_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_707
.annotate 'line', 280
new $P706, 'ExceptionHandler'
@@ -18666,13 +19375,13 @@
.lex "$/", param_707
find_lex $P708, "$/"
find_lex $P709, "$/"
- unless_null $P709, vivify_270
+ unless_null $P709, vivify_274
$P709 = root_new ['parrot';'Hash']
- vivify_270:
+ vivify_274:
set $P710, $P709["cond"]
- unless_null $P710, vivify_271
+ unless_null $P710, vivify_275
new $P710, "Undef"
- vivify_271:
+ vivify_275:
$P711 = $P710."ast"()
$P712 = $P708."!make"($P711)
.return ($P712)
@@ -18685,7 +19394,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>" :subid("47_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "statement_mod_loop:sym<until>" :subid("47_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_717
.annotate 'line', 281
new $P716, 'ExceptionHandler'
@@ -18696,13 +19405,13 @@
.lex "$/", param_717
find_lex $P718, "$/"
find_lex $P719, "$/"
- unless_null $P719, vivify_272
+ unless_null $P719, vivify_276
$P719 = root_new ['parrot';'Hash']
- vivify_272:
+ vivify_276:
set $P720, $P719["cond"]
- unless_null $P720, vivify_273
+ unless_null $P720, vivify_277
new $P720, "Undef"
- vivify_273:
+ vivify_277:
$P721 = $P720."ast"()
$P722 = $P718."!make"($P721)
.return ($P722)
@@ -18715,7 +19424,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>" :subid("48_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<fatarrow>" :subid("48_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_727
.annotate 'line', 285
new $P726, 'ExceptionHandler'
@@ -18726,13 +19435,13 @@
.lex "$/", param_727
find_lex $P728, "$/"
find_lex $P729, "$/"
- unless_null $P729, vivify_274
+ unless_null $P729, vivify_278
$P729 = root_new ['parrot';'Hash']
- vivify_274:
+ vivify_278:
set $P730, $P729["fatarrow"]
- unless_null $P730, vivify_275
+ unless_null $P730, vivify_279
new $P730, "Undef"
- vivify_275:
+ vivify_279:
$P731 = $P730."ast"()
$P732 = $P728."!make"($P731)
.return ($P732)
@@ -18745,7 +19454,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>" :subid("49_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<colonpair>" :subid("49_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_737
.annotate 'line', 286
new $P736, 'ExceptionHandler'
@@ -18756,13 +19465,13 @@
.lex "$/", param_737
find_lex $P738, "$/"
find_lex $P739, "$/"
- unless_null $P739, vivify_276
+ unless_null $P739, vivify_280
$P739 = root_new ['parrot';'Hash']
- vivify_276:
+ vivify_280:
set $P740, $P739["colonpair"]
- unless_null $P740, vivify_277
+ unless_null $P740, vivify_281
new $P740, "Undef"
- vivify_277:
+ vivify_281:
$P741 = $P740."ast"()
$P742 = $P738."!make"($P741)
.return ($P742)
@@ -18775,7 +19484,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<variable>" :subid("50_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<variable>" :subid("50_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_747
.annotate 'line', 287
new $P746, 'ExceptionHandler'
@@ -18786,13 +19495,13 @@
.lex "$/", param_747
find_lex $P748, "$/"
find_lex $P749, "$/"
- unless_null $P749, vivify_278
+ unless_null $P749, vivify_282
$P749 = root_new ['parrot';'Hash']
- vivify_278:
+ vivify_282:
set $P750, $P749["variable"]
- unless_null $P750, vivify_279
+ unless_null $P750, vivify_283
new $P750, "Undef"
- vivify_279:
+ vivify_283:
$P751 = $P750."ast"()
$P752 = $P748."!make"($P751)
.return ($P752)
@@ -18805,7 +19514,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>" :subid("51_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<package_declarator>" :subid("51_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_757
.annotate 'line', 288
new $P756, 'ExceptionHandler'
@@ -18816,13 +19525,13 @@
.lex "$/", param_757
find_lex $P758, "$/"
find_lex $P759, "$/"
- unless_null $P759, vivify_280
+ unless_null $P759, vivify_284
$P759 = root_new ['parrot';'Hash']
- vivify_280:
+ vivify_284:
set $P760, $P759["package_declarator"]
- unless_null $P760, vivify_281
+ unless_null $P760, vivify_285
new $P760, "Undef"
- vivify_281:
+ vivify_285:
$P761 = $P760."ast"()
$P762 = $P758."!make"($P761)
.return ($P762)
@@ -18835,7 +19544,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>" :subid("52_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<scope_declarator>" :subid("52_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_767
.annotate 'line', 289
new $P766, 'ExceptionHandler'
@@ -18846,13 +19555,13 @@
.lex "$/", param_767
find_lex $P768, "$/"
find_lex $P769, "$/"
- unless_null $P769, vivify_282
+ unless_null $P769, vivify_286
$P769 = root_new ['parrot';'Hash']
- vivify_282:
+ vivify_286:
set $P770, $P769["scope_declarator"]
- unless_null $P770, vivify_283
+ unless_null $P770, vivify_287
new $P770, "Undef"
- vivify_283:
+ vivify_287:
$P771 = $P770."ast"()
$P772 = $P768."!make"($P771)
.return ($P772)
@@ -18865,7 +19574,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>" :subid("53_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<routine_declarator>" :subid("53_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_777
.annotate 'line', 290
new $P776, 'ExceptionHandler'
@@ -18876,13 +19585,13 @@
.lex "$/", param_777
find_lex $P778, "$/"
find_lex $P779, "$/"
- unless_null $P779, vivify_284
+ unless_null $P779, vivify_288
$P779 = root_new ['parrot';'Hash']
- vivify_284:
+ vivify_288:
set $P780, $P779["routine_declarator"]
- unless_null $P780, vivify_285
+ unless_null $P780, vivify_289
new $P780, "Undef"
- vivify_285:
+ vivify_289:
$P781 = $P780."ast"()
$P782 = $P778."!make"($P781)
.return ($P782)
@@ -18895,7 +19604,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>" :subid("54_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<regex_declarator>" :subid("54_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_787
.annotate 'line', 291
new $P786, 'ExceptionHandler'
@@ -18906,13 +19615,13 @@
.lex "$/", param_787
find_lex $P788, "$/"
find_lex $P789, "$/"
- unless_null $P789, vivify_286
+ unless_null $P789, vivify_290
$P789 = root_new ['parrot';'Hash']
- vivify_286:
+ vivify_290:
set $P790, $P789["regex_declarator"]
- unless_null $P790, vivify_287
+ unless_null $P790, vivify_291
new $P790, "Undef"
- vivify_287:
+ vivify_291:
$P791 = $P790."ast"()
$P792 = $P788."!make"($P791)
.return ($P792)
@@ -18925,7 +19634,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>" :subid("55_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<statement_prefix>" :subid("55_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_797
.annotate 'line', 292
new $P796, 'ExceptionHandler'
@@ -18936,13 +19645,13 @@
.lex "$/", param_797
find_lex $P798, "$/"
find_lex $P799, "$/"
- unless_null $P799, vivify_288
+ unless_null $P799, vivify_292
$P799 = root_new ['parrot';'Hash']
- vivify_288:
+ vivify_292:
set $P800, $P799["statement_prefix"]
- unless_null $P800, vivify_289
+ unless_null $P800, vivify_293
new $P800, "Undef"
- vivify_289:
+ vivify_293:
$P801 = $P800."ast"()
$P802 = $P798."!make"($P801)
.return ($P802)
@@ -18955,7 +19664,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>" :subid("56_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<lambda>" :subid("56_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_807
.annotate 'line', 293
new $P806, 'ExceptionHandler'
@@ -18966,13 +19675,13 @@
.lex "$/", param_807
find_lex $P808, "$/"
find_lex $P809, "$/"
- unless_null $P809, vivify_290
+ unless_null $P809, vivify_294
$P809 = root_new ['parrot';'Hash']
- vivify_290:
+ vivify_294:
set $P810, $P809["pblock"]
- unless_null $P810, vivify_291
+ unless_null $P810, vivify_295
new $P810, "Undef"
- vivify_291:
+ vivify_295:
$P811 = $P810."ast"()
$P812 = $P808."!make"($P811)
.return ($P812)
@@ -18985,7 +19694,7 @@
.namespace ["NQP";"Actions"]
-.sub "fatarrow" :subid("57_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "fatarrow" :subid("57_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_817
.annotate 'line', 295
new $P816, 'ExceptionHandler'
@@ -18998,25 +19707,25 @@
new $P818, "Undef"
.lex "$past", $P818
find_lex $P819, "$/"
- unless_null $P819, vivify_292
+ unless_null $P819, vivify_296
$P819 = root_new ['parrot';'Hash']
- vivify_292:
+ vivify_296:
set $P820, $P819["val"]
- unless_null $P820, vivify_293
+ unless_null $P820, vivify_297
new $P820, "Undef"
- vivify_293:
+ vivify_297:
$P821 = $P820."ast"()
store_lex "$past", $P821
.annotate 'line', 297
find_lex $P822, "$past"
find_lex $P823, "$/"
- unless_null $P823, vivify_294
+ unless_null $P823, vivify_298
$P823 = root_new ['parrot';'Hash']
- vivify_294:
+ vivify_298:
set $P824, $P823["key"]
- unless_null $P824, vivify_295
+ unless_null $P824, vivify_299
new $P824, "Undef"
- vivify_295:
+ vivify_299:
$P825 = $P824."Str"()
$P822."named"($P825)
.annotate 'line', 298
@@ -19034,7 +19743,7 @@
.namespace ["NQP";"Actions"]
-.sub "colonpair" :subid("58_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "colonpair" :subid("58_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_833
.annotate 'line', 301
new $P832, 'ExceptionHandler'
@@ -19048,24 +19757,24 @@
.lex "$past", $P834
.annotate 'line', 303
find_lex $P837, "$/"
- unless_null $P837, vivify_296
+ unless_null $P837, vivify_300
$P837 = root_new ['parrot';'Hash']
- vivify_296:
+ vivify_300:
set $P838, $P837["circumfix"]
- unless_null $P838, vivify_297
+ unless_null $P838, vivify_301
new $P838, "Undef"
- vivify_297:
+ vivify_301:
if $P838, if_836
.annotate 'line', 304
get_hll_global $P843, ["PAST"], "Val"
find_lex $P844, "$/"
- unless_null $P844, vivify_298
+ unless_null $P844, vivify_302
$P844 = root_new ['parrot';'Hash']
- vivify_298:
+ vivify_302:
set $P845, $P844["not"]
- unless_null $P845, vivify_299
+ unless_null $P845, vivify_303
new $P845, "Undef"
- vivify_299:
+ vivify_303:
isfalse $I846, $P845
$P847 = $P843."new"($I846 :named("value"))
set $P835, $P847
@@ -19073,17 +19782,17 @@
goto if_836_end
if_836:
find_lex $P839, "$/"
- unless_null $P839, vivify_300
+ unless_null $P839, vivify_304
$P839 = root_new ['parrot';'Hash']
- vivify_300:
+ vivify_304:
set $P840, $P839["circumfix"]
- unless_null $P840, vivify_301
+ unless_null $P840, vivify_305
$P840 = root_new ['parrot';'ResizablePMCArray']
- vivify_301:
+ vivify_305:
set $P841, $P840[0]
- unless_null $P841, vivify_302
+ unless_null $P841, vivify_306
new $P841, "Undef"
- vivify_302:
+ vivify_306:
$P842 = $P841."ast"()
set $P835, $P842
if_836_end:
@@ -19091,13 +19800,13 @@
.annotate 'line', 305
find_lex $P848, "$past"
find_lex $P849, "$/"
- unless_null $P849, vivify_303
+ unless_null $P849, vivify_307
$P849 = root_new ['parrot';'Hash']
- vivify_303:
+ vivify_307:
set $P850, $P849["identifier"]
- unless_null $P850, vivify_304
+ unless_null $P850, vivify_308
new $P850, "Undef"
- vivify_304:
+ vivify_308:
set $S851, $P850
$P848."named"($S851)
.annotate 'line', 306
@@ -19115,10 +19824,10 @@
.namespace ["NQP";"Actions"]
-.sub "variable" :subid("59_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "variable" :subid("59_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_859
.annotate 'line', 309
- .const 'Sub' $P872 = "60_1274022903.56472"
+ .const 'Sub' $P872 = "60_1274564782.90592"
capture_lex $P872
new $P858, 'ExceptionHandler'
set_addr $P858, control_857
@@ -19133,29 +19842,29 @@
find_lex $P861, "$past"
.annotate 'line', 311
find_lex $P863, "$/"
- unless_null $P863, vivify_305
+ unless_null $P863, vivify_309
$P863 = root_new ['parrot';'Hash']
- vivify_305:
+ vivify_309:
set $P864, $P863["postcircumfix"]
- unless_null $P864, vivify_306
+ unless_null $P864, vivify_310
new $P864, "Undef"
- vivify_306:
+ vivify_310:
if $P864, if_862
.annotate 'line', 315
- .const 'Sub' $P872 = "60_1274022903.56472"
+ .const 'Sub' $P872 = "60_1274564782.90592"
capture_lex $P872
$P872()
goto if_862_end
if_862:
.annotate 'line', 312
find_lex $P865, "$/"
- unless_null $P865, vivify_323
+ unless_null $P865, vivify_327
$P865 = root_new ['parrot';'Hash']
- vivify_323:
+ vivify_327:
set $P866, $P865["postcircumfix"]
- unless_null $P866, vivify_324
+ unless_null $P866, vivify_328
new $P866, "Undef"
- vivify_324:
+ vivify_328:
$P867 = $P866."ast"()
store_lex "$past", $P867
.annotate 'line', 313
@@ -19179,7 +19888,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block871" :anon :subid("60_1274022903.56472") :outer("59_1274022903.56472")
+.sub "_block871" :anon :subid("60_1274564782.90592") :outer("59_1274564782.90592")
.annotate 'line', 316
$P873 = root_new ['parrot';'ResizablePMCArray']
.lex "@name", $P873
@@ -19200,13 +19909,13 @@
unless $P884, if_883_end
.annotate 'line', 319
find_lex $P886, "@name"
- unless_null $P886, vivify_307
+ unless_null $P886, vivify_311
$P886 = root_new ['parrot';'ResizablePMCArray']
- vivify_307:
+ vivify_311:
set $P887, $P886[0]
- unless_null $P887, vivify_308
+ unless_null $P887, vivify_312
new $P887, "Undef"
- vivify_308:
+ vivify_312:
set $S888, $P887
iseq $I889, $S888, "GLOBAL"
unless $I889, if_885_end
@@ -19223,13 +19932,13 @@
.annotate 'line', 322
find_lex $P894, "$past"
find_lex $P895, "$/"
- unless_null $P895, vivify_309
+ unless_null $P895, vivify_313
$P895 = root_new ['parrot';'Hash']
- vivify_309:
+ vivify_313:
set $P896, $P895["sigil"]
- unless_null $P896, vivify_310
+ unless_null $P896, vivify_314
new $P896, "Undef"
- vivify_310:
+ vivify_314:
$P897 = "vivitype"($P896)
$P894."viviself"($P897)
.annotate 'line', 323
@@ -19238,33 +19947,33 @@
if_883_end:
.annotate 'line', 325
find_lex $P901, "$/"
- unless_null $P901, vivify_311
+ unless_null $P901, vivify_315
$P901 = root_new ['parrot';'Hash']
- vivify_311:
+ vivify_315:
set $P902, $P901["twigil"]
- unless_null $P902, vivify_312
+ unless_null $P902, vivify_316
$P902 = root_new ['parrot';'ResizablePMCArray']
- vivify_312:
+ vivify_316:
set $P903, $P902[0]
- unless_null $P903, vivify_313
+ unless_null $P903, vivify_317
new $P903, "Undef"
- vivify_313:
+ vivify_317:
set $S904, $P903
iseq $I905, $S904, "*"
if $I905, if_900
.annotate 'line', 338
find_lex $P927, "$/"
- unless_null $P927, vivify_314
+ unless_null $P927, vivify_318
$P927 = root_new ['parrot';'Hash']
- vivify_314:
+ vivify_318:
set $P928, $P927["twigil"]
- unless_null $P928, vivify_315
+ unless_null $P928, vivify_319
$P928 = root_new ['parrot';'ResizablePMCArray']
- vivify_315:
+ vivify_319:
set $P929, $P928[0]
- unless_null $P929, vivify_316
+ unless_null $P929, vivify_320
new $P929, "Undef"
- vivify_316:
+ vivify_320:
set $S930, $P929
iseq $I931, $S930, "!"
if $I931, if_926
@@ -19283,13 +19992,13 @@
.annotate 'line', 341
find_lex $P936, "$past"
find_lex $P937, "$/"
- unless_null $P937, vivify_317
+ unless_null $P937, vivify_321
$P937 = root_new ['parrot';'Hash']
- vivify_317:
+ vivify_321:
set $P938, $P937["sigil"]
- unless_null $P938, vivify_318
+ unless_null $P938, vivify_322
new $P938, "Undef"
- vivify_318:
+ vivify_322:
$P939 = "vivitype"($P938)
$P940 = $P936."viviself"($P939)
.annotate 'line', 338
@@ -19308,24 +20017,24 @@
get_hll_global $P908, ["PAST"], "Var"
.annotate 'line', 330
find_lex $P909, "$/"
- unless_null $P909, vivify_319
+ unless_null $P909, vivify_323
$P909 = root_new ['parrot';'Hash']
- vivify_319:
+ vivify_323:
set $P910, $P909["sigil"]
- unless_null $P910, vivify_320
+ unless_null $P910, vivify_324
new $P910, "Undef"
- vivify_320:
+ vivify_324:
set $S911, $P910
new $P912, 'String'
set $P912, $S911
find_lex $P913, "$/"
- unless_null $P913, vivify_321
+ unless_null $P913, vivify_325
$P913 = root_new ['parrot';'Hash']
- vivify_321:
+ vivify_325:
set $P914, $P913["desigilname"]
- unless_null $P914, vivify_322
+ unless_null $P914, vivify_326
new $P914, "Undef"
- vivify_322:
+ vivify_326:
concat $P915, $P912, $P914
.annotate 'line', 332
get_hll_global $P916, ["PAST"], "Op"
@@ -19348,7 +20057,7 @@
.namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>" :subid("61_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "package_declarator:sym<module>" :subid("61_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_948
.annotate 'line', 347
new $P947, 'ExceptionHandler'
@@ -19359,13 +20068,13 @@
.lex "$/", param_948
find_lex $P949, "$/"
find_lex $P950, "$/"
- unless_null $P950, vivify_325
+ unless_null $P950, vivify_329
$P950 = root_new ['parrot';'Hash']
- vivify_325:
+ vivify_329:
set $P951, $P950["package_def"]
- unless_null $P951, vivify_326
+ unless_null $P951, vivify_330
new $P951, "Undef"
- vivify_326:
+ vivify_330:
$P952 = $P951."ast"()
$P953 = $P949."!make"($P952)
.return ($P953)
@@ -19378,7 +20087,7 @@
.namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>" :subid("62_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "package_declarator:sym<class>" :subid("62_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_958
.annotate 'line', 348
new $P957, 'ExceptionHandler'
@@ -19398,13 +20107,13 @@
.lex "$parent", $P961
.annotate 'line', 349
find_lex $P962, "$/"
- unless_null $P962, vivify_327
+ unless_null $P962, vivify_331
$P962 = root_new ['parrot';'Hash']
- vivify_327:
+ vivify_331:
set $P963, $P962["package_def"]
- unless_null $P963, vivify_328
+ unless_null $P963, vivify_332
new $P963, "Undef"
- vivify_328:
+ vivify_332:
$P964 = $P963."ast"()
store_lex "$past", $P964
.annotate 'line', 351
@@ -19414,38 +20123,38 @@
$P967 = $P966."new"(" %r = get_root_global [\"parrot\"], \"P6metaclass\"" :named("inline"))
.annotate 'line', 355
find_lex $P968, "$/"
- unless_null $P968, vivify_329
+ unless_null $P968, vivify_333
$P968 = root_new ['parrot';'Hash']
- vivify_329:
+ vivify_333:
set $P969, $P968["package_def"]
- unless_null $P969, vivify_330
+ unless_null $P969, vivify_334
$P969 = root_new ['parrot';'Hash']
- vivify_330:
+ vivify_334:
set $P970, $P969["name"]
- unless_null $P970, vivify_331
+ unless_null $P970, vivify_335
new $P970, "Undef"
- vivify_331:
+ vivify_335:
set $S971, $P970
$P972 = $P965."new"($P967, $S971, "new_class" :named("name"), "callmethod" :named("pasttype"))
.annotate 'line', 351
store_lex "$classinit", $P972
.annotate 'line', 359
find_lex $P975, "$/"
- unless_null $P975, vivify_332
+ unless_null $P975, vivify_336
$P975 = root_new ['parrot';'Hash']
- vivify_332:
+ vivify_336:
set $P976, $P975["package_def"]
- unless_null $P976, vivify_333
+ unless_null $P976, vivify_337
$P976 = root_new ['parrot';'Hash']
- vivify_333:
+ vivify_337:
set $P977, $P976["parent"]
- unless_null $P977, vivify_334
+ unless_null $P977, vivify_338
$P977 = root_new ['parrot';'ResizablePMCArray']
- vivify_334:
+ vivify_338:
set $P978, $P977[0]
- unless_null $P978, vivify_335
+ unless_null $P978, vivify_339
new $P978, "Undef"
- vivify_335:
+ vivify_339:
set $S979, $P978
unless $S979, unless_974
new $P973, 'String'
@@ -19454,13 +20163,13 @@
unless_974:
.annotate 'line', 360
find_lex $P982, "$/"
- unless_null $P982, vivify_336
+ unless_null $P982, vivify_340
$P982 = root_new ['parrot';'Hash']
- vivify_336:
+ vivify_340:
set $P983, $P982["sym"]
- unless_null $P983, vivify_337
+ unless_null $P983, vivify_341
new $P983, "Undef"
- vivify_337:
+ vivify_341:
set $S984, $P983
iseq $I985, $S984, "grammar"
if $I985, if_981
@@ -19488,35 +20197,35 @@
if_988_end:
.annotate 'line', 364
find_lex $P995, "$past"
- unless_null $P995, vivify_338
+ unless_null $P995, vivify_342
$P995 = root_new ['parrot';'Hash']
- vivify_338:
+ vivify_342:
set $P996, $P995["attributes"]
- unless_null $P996, vivify_339
+ unless_null $P996, vivify_343
new $P996, "Undef"
- vivify_339:
+ vivify_343:
unless $P996, if_994_end
.annotate 'line', 365
find_lex $P997, "$classinit"
find_lex $P998, "$past"
- unless_null $P998, vivify_340
+ unless_null $P998, vivify_344
$P998 = root_new ['parrot';'Hash']
- vivify_340:
+ vivify_344:
set $P999, $P998["attributes"]
- unless_null $P999, vivify_341
+ unless_null $P999, vivify_345
new $P999, "Undef"
- vivify_341:
+ vivify_345:
$P997."push"($P999)
if_994_end:
.annotate 'line', 367
get_global $P1000, "@BLOCK"
- unless_null $P1000, vivify_342
+ unless_null $P1000, vivify_346
$P1000 = root_new ['parrot';'ResizablePMCArray']
- vivify_342:
+ vivify_346:
set $P1001, $P1000[0]
- unless_null $P1001, vivify_343
+ unless_null $P1001, vivify_347
new $P1001, "Undef"
- vivify_343:
+ vivify_347:
$P1002 = $P1001."loadinit"()
find_lex $P1003, "$classinit"
$P1002."push"($P1003)
@@ -19535,7 +20244,7 @@
.namespace ["NQP";"Actions"]
-.sub "package_def" :subid("63_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "package_def" :subid("63_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1011
.annotate 'line', 371
new $P1010, 'ExceptionHandler'
@@ -19548,34 +20257,34 @@
new $P1012, "Undef"
.lex "$past", $P1012
find_lex $P1015, "$/"
- unless_null $P1015, vivify_344
+ unless_null $P1015, vivify_348
$P1015 = root_new ['parrot';'Hash']
- vivify_344:
+ vivify_348:
set $P1016, $P1015["block"]
- unless_null $P1016, vivify_345
+ unless_null $P1016, vivify_349
new $P1016, "Undef"
- vivify_345:
+ vivify_349:
if $P1016, if_1014
find_lex $P1020, "$/"
- unless_null $P1020, vivify_346
+ unless_null $P1020, vivify_350
$P1020 = root_new ['parrot';'Hash']
- vivify_346:
+ vivify_350:
set $P1021, $P1020["comp_unit"]
- unless_null $P1021, vivify_347
+ unless_null $P1021, vivify_351
new $P1021, "Undef"
- vivify_347:
+ vivify_351:
$P1022 = $P1021."ast"()
set $P1013, $P1022
goto if_1014_end
if_1014:
find_lex $P1017, "$/"
- unless_null $P1017, vivify_348
+ unless_null $P1017, vivify_352
$P1017 = root_new ['parrot';'Hash']
- vivify_348:
+ vivify_352:
set $P1018, $P1017["block"]
- unless_null $P1018, vivify_349
+ unless_null $P1018, vivify_353
new $P1018, "Undef"
- vivify_349:
+ vivify_353:
$P1019 = $P1018."ast"()
set $P1013, $P1019
if_1014_end:
@@ -19583,17 +20292,17 @@
.annotate 'line', 373
find_lex $P1023, "$past"
find_lex $P1024, "$/"
- unless_null $P1024, vivify_350
+ unless_null $P1024, vivify_354
$P1024 = root_new ['parrot';'Hash']
- vivify_350:
+ vivify_354:
set $P1025, $P1024["name"]
- unless_null $P1025, vivify_351
+ unless_null $P1025, vivify_355
$P1025 = root_new ['parrot';'Hash']
- vivify_351:
+ vivify_355:
set $P1026, $P1025["identifier"]
- unless_null $P1026, vivify_352
+ unless_null $P1026, vivify_356
new $P1026, "Undef"
- vivify_352:
+ vivify_356:
$P1023."namespace"($P1026)
.annotate 'line', 374
find_lex $P1027, "$past"
@@ -19613,7 +20322,7 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>" :subid("64_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "scope_declarator:sym<my>" :subid("64_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1035
.annotate 'line', 378
new $P1034, 'ExceptionHandler'
@@ -19624,13 +20333,13 @@
.lex "$/", param_1035
find_lex $P1036, "$/"
find_lex $P1037, "$/"
- unless_null $P1037, vivify_353
+ unless_null $P1037, vivify_357
$P1037 = root_new ['parrot';'Hash']
- vivify_353:
+ vivify_357:
set $P1038, $P1037["scoped"]
- unless_null $P1038, vivify_354
+ unless_null $P1038, vivify_358
new $P1038, "Undef"
- vivify_354:
+ vivify_358:
$P1039 = $P1038."ast"()
$P1040 = $P1036."!make"($P1039)
.return ($P1040)
@@ -19643,7 +20352,7 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>" :subid("65_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "scope_declarator:sym<our>" :subid("65_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1045
.annotate 'line', 379
new $P1044, 'ExceptionHandler'
@@ -19654,13 +20363,13 @@
.lex "$/", param_1045
find_lex $P1046, "$/"
find_lex $P1047, "$/"
- unless_null $P1047, vivify_355
+ unless_null $P1047, vivify_359
$P1047 = root_new ['parrot';'Hash']
- vivify_355:
+ vivify_359:
set $P1048, $P1047["scoped"]
- unless_null $P1048, vivify_356
+ unless_null $P1048, vivify_360
new $P1048, "Undef"
- vivify_356:
+ vivify_360:
$P1049 = $P1048."ast"()
$P1050 = $P1046."!make"($P1049)
.return ($P1050)
@@ -19673,7 +20382,7 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>" :subid("66_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "scope_declarator:sym<has>" :subid("66_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1055
.annotate 'line', 380
new $P1054, 'ExceptionHandler'
@@ -19684,13 +20393,13 @@
.lex "$/", param_1055
find_lex $P1056, "$/"
find_lex $P1057, "$/"
- unless_null $P1057, vivify_357
+ unless_null $P1057, vivify_361
$P1057 = root_new ['parrot';'Hash']
- vivify_357:
+ vivify_361:
set $P1058, $P1057["scoped"]
- unless_null $P1058, vivify_358
+ unless_null $P1058, vivify_362
new $P1058, "Undef"
- vivify_358:
+ vivify_362:
$P1059 = $P1058."ast"()
$P1060 = $P1056."!make"($P1059)
.return ($P1060)
@@ -19703,7 +20412,7 @@
.namespace ["NQP";"Actions"]
-.sub "scoped" :subid("67_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "scoped" :subid("67_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1065
.annotate 'line', 382
new $P1064, 'ExceptionHandler'
@@ -19715,13 +20424,13 @@
.annotate 'line', 383
find_lex $P1066, "$/"
find_lex $P1067, "$/"
- unless_null $P1067, vivify_359
+ unless_null $P1067, vivify_363
$P1067 = root_new ['parrot';'Hash']
- vivify_359:
+ vivify_363:
set $P1068, $P1067["declarator"]
- unless_null $P1068, vivify_360
+ unless_null $P1068, vivify_364
new $P1068, "Undef"
- vivify_360:
+ vivify_364:
$P1069 = $P1068."ast"()
$P1070 = $P1066."!make"($P1069)
.annotate 'line', 382
@@ -19735,7 +20444,7 @@
.namespace ["NQP";"Actions"]
-.sub "declarator" :subid("68_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "declarator" :subid("68_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1075
.annotate 'line', 386
new $P1074, 'ExceptionHandler'
@@ -19748,36 +20457,36 @@
find_lex $P1076, "$/"
.annotate 'line', 388
find_lex $P1079, "$/"
- unless_null $P1079, vivify_361
+ unless_null $P1079, vivify_365
$P1079 = root_new ['parrot';'Hash']
- vivify_361:
+ vivify_365:
set $P1080, $P1079["routine_declarator"]
- unless_null $P1080, vivify_362
+ unless_null $P1080, vivify_366
new $P1080, "Undef"
- vivify_362:
+ vivify_366:
if $P1080, if_1078
.annotate 'line', 389
find_lex $P1084, "$/"
- unless_null $P1084, vivify_363
+ unless_null $P1084, vivify_367
$P1084 = root_new ['parrot';'Hash']
- vivify_363:
+ vivify_367:
set $P1085, $P1084["variable_declarator"]
- unless_null $P1085, vivify_364
+ unless_null $P1085, vivify_368
new $P1085, "Undef"
- vivify_364:
+ vivify_368:
$P1086 = $P1085."ast"()
set $P1077, $P1086
.annotate 'line', 388
goto if_1078_end
if_1078:
find_lex $P1081, "$/"
- unless_null $P1081, vivify_365
+ unless_null $P1081, vivify_369
$P1081 = root_new ['parrot';'Hash']
- vivify_365:
+ vivify_369:
set $P1082, $P1081["routine_declarator"]
- unless_null $P1082, vivify_366
+ unless_null $P1082, vivify_370
new $P1082, "Undef"
- vivify_366:
+ vivify_370:
$P1083 = $P1082."ast"()
set $P1077, $P1083
if_1078_end:
@@ -19793,10 +20502,10 @@
.namespace ["NQP";"Actions"]
-.sub "variable_declarator" :subid("69_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "variable_declarator" :subid("69_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1092
.annotate 'line', 392
- .const 'Sub' $P1132 = "70_1274022903.56472"
+ .const 'Sub' $P1132 = "70_1274564782.90592"
capture_lex $P1132
new $P1091, 'ExceptionHandler'
set_addr $P1091, control_1090
@@ -19818,28 +20527,28 @@
.lex "$BLOCK", $P1096
.annotate 'line', 393
find_lex $P1097, "$/"
- unless_null $P1097, vivify_367
+ unless_null $P1097, vivify_371
$P1097 = root_new ['parrot';'Hash']
- vivify_367:
+ vivify_371:
set $P1098, $P1097["variable"]
- unless_null $P1098, vivify_368
+ unless_null $P1098, vivify_372
new $P1098, "Undef"
- vivify_368:
+ vivify_372:
$P1099 = $P1098."ast"()
store_lex "$past", $P1099
.annotate 'line', 394
find_lex $P1100, "$/"
- unless_null $P1100, vivify_369
+ unless_null $P1100, vivify_373
$P1100 = root_new ['parrot';'Hash']
- vivify_369:
+ vivify_373:
set $P1101, $P1100["variable"]
- unless_null $P1101, vivify_370
+ unless_null $P1101, vivify_374
$P1101 = root_new ['parrot';'Hash']
- vivify_370:
+ vivify_374:
set $P1102, $P1101["sigil"]
- unless_null $P1102, vivify_371
+ unless_null $P1102, vivify_375
new $P1102, "Undef"
- vivify_371:
+ vivify_375:
store_lex "$sigil", $P1102
.annotate 'line', 395
find_lex $P1103, "$past"
@@ -19847,13 +20556,13 @@
store_lex "$name", $P1104
.annotate 'line', 396
get_global $P1105, "@BLOCK"
- unless_null $P1105, vivify_372
+ unless_null $P1105, vivify_376
$P1105 = root_new ['parrot';'ResizablePMCArray']
- vivify_372:
+ vivify_376:
set $P1106, $P1105[0]
- unless_null $P1106, vivify_373
+ unless_null $P1106, vivify_377
new $P1106, "Undef"
- vivify_373:
+ vivify_377:
store_lex "$BLOCK", $P1106
.annotate 'line', 397
find_lex $P1108, "$BLOCK"
@@ -19868,17 +20577,17 @@
if_1107_end:
.annotate 'line', 400
find_dynamic_lex $P1115, "$*SCOPE"
- unless_null $P1115, vivify_374
+ unless_null $P1115, vivify_378
get_hll_global $P1115, "$SCOPE"
- unless_null $P1115, vivify_375
+ unless_null $P1115, vivify_379
die "Contextual $*SCOPE not found"
- vivify_375:
- vivify_374:
+ vivify_379:
+ vivify_378:
set $S1116, $P1115
iseq $I1117, $S1116, "has"
if $I1117, if_1114
.annotate 'line', 409
- .const 'Sub' $P1132 = "70_1274022903.56472"
+ .const 'Sub' $P1132 = "70_1274564782.90592"
capture_lex $P1132
$P1132()
goto if_1114_end
@@ -19889,33 +20598,33 @@
$P1118."symbol"($P1119, "attribute" :named("scope"))
.annotate 'line', 402
find_lex $P1121, "$BLOCK"
- unless_null $P1121, vivify_380
+ unless_null $P1121, vivify_384
$P1121 = root_new ['parrot';'Hash']
- vivify_380:
+ vivify_384:
set $P1122, $P1121["attributes"]
- unless_null $P1122, vivify_381
+ unless_null $P1122, vivify_385
new $P1122, "Undef"
- vivify_381:
+ vivify_385:
if $P1122, unless_1120_end
.annotate 'line', 404
get_hll_global $P1123, ["PAST"], "Op"
$P1124 = $P1123."new"("list" :named("pasttype"), "attr" :named("named"))
find_lex $P1125, "$BLOCK"
- unless_null $P1125, vivify_382
+ unless_null $P1125, vivify_386
$P1125 = root_new ['parrot';'Hash']
store_lex "$BLOCK", $P1125
- vivify_382:
+ vivify_386:
set $P1125["attributes"], $P1124
unless_1120_end:
.annotate 'line', 406
find_lex $P1126, "$BLOCK"
- unless_null $P1126, vivify_383
+ unless_null $P1126, vivify_387
$P1126 = root_new ['parrot';'Hash']
- vivify_383:
+ vivify_387:
set $P1127, $P1126["attributes"]
- unless_null $P1127, vivify_384
+ unless_null $P1127, vivify_388
new $P1127, "Undef"
- vivify_384:
+ vivify_388:
find_lex $P1128, "$name"
$P1127."push"($P1128)
.annotate 'line', 407
@@ -19938,7 +20647,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1131" :anon :subid("70_1274022903.56472") :outer("69_1274022903.56472")
+.sub "_block1131" :anon :subid("70_1274564782.90592") :outer("69_1274564782.90592")
.annotate 'line', 410
new $P1133, "Undef"
.lex "$scope", $P1133
@@ -19947,12 +20656,12 @@
.lex "$decl", $P1134
.annotate 'line', 410
find_dynamic_lex $P1137, "$*SCOPE"
- unless_null $P1137, vivify_376
+ unless_null $P1137, vivify_380
get_hll_global $P1137, "$SCOPE"
- unless_null $P1137, vivify_377
+ unless_null $P1137, vivify_381
die "Contextual $*SCOPE not found"
- vivify_377:
- vivify_376:
+ vivify_381:
+ vivify_380:
set $S1138, $P1137
iseq $I1139, $S1138, "our"
if $I1139, if_1136
@@ -19984,13 +20693,13 @@
$P1149."symbol"($P1150, $P1151 :named("scope"))
.annotate 'line', 415
find_lex $P1152, "$BLOCK"
- unless_null $P1152, vivify_378
+ unless_null $P1152, vivify_382
$P1152 = root_new ['parrot';'ResizablePMCArray']
- vivify_378:
+ vivify_382:
set $P1153, $P1152[0]
- unless_null $P1153, vivify_379
+ unless_null $P1153, vivify_383
new $P1153, "Undef"
- vivify_379:
+ vivify_383:
find_lex $P1154, "$decl"
$P1155 = $P1153."push"($P1154)
.annotate 'line', 409
@@ -19999,7 +20708,7 @@
.namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>" :subid("71_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "routine_declarator:sym<sub>" :subid("71_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1163
.annotate 'line', 420
new $P1162, 'ExceptionHandler'
@@ -20010,13 +20719,13 @@
.lex "$/", param_1163
find_lex $P1164, "$/"
find_lex $P1165, "$/"
- unless_null $P1165, vivify_385
+ unless_null $P1165, vivify_389
$P1165 = root_new ['parrot';'Hash']
- vivify_385:
+ vivify_389:
set $P1166, $P1165["routine_def"]
- unless_null $P1166, vivify_386
+ unless_null $P1166, vivify_390
new $P1166, "Undef"
- vivify_386:
+ vivify_390:
$P1167 = $P1166."ast"()
$P1168 = $P1164."!make"($P1167)
.return ($P1168)
@@ -20029,7 +20738,7 @@
.namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>" :subid("72_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "routine_declarator:sym<method>" :subid("72_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1173
.annotate 'line', 421
new $P1172, 'ExceptionHandler'
@@ -20040,13 +20749,13 @@
.lex "$/", param_1173
find_lex $P1174, "$/"
find_lex $P1175, "$/"
- unless_null $P1175, vivify_387
+ unless_null $P1175, vivify_391
$P1175 = root_new ['parrot';'Hash']
- vivify_387:
+ vivify_391:
set $P1176, $P1175["method_def"]
- unless_null $P1176, vivify_388
+ unless_null $P1176, vivify_392
new $P1176, "Undef"
- vivify_388:
+ vivify_392:
$P1177 = $P1176."ast"()
$P1178 = $P1174."!make"($P1177)
.return ($P1178)
@@ -20059,10 +20768,10 @@
.namespace ["NQP";"Actions"]
-.sub "routine_def" :subid("73_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "routine_def" :subid("73_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1183
.annotate 'line', 423
- .const 'Sub' $P1194 = "74_1274022903.56472"
+ .const 'Sub' $P1194 = "74_1274564782.90592"
capture_lex $P1194
new $P1182, 'ExceptionHandler'
set_addr $P1182, control_1181
@@ -20074,13 +20783,13 @@
new $P1184, "Undef"
.lex "$past", $P1184
find_lex $P1185, "$/"
- unless_null $P1185, vivify_389
+ unless_null $P1185, vivify_393
$P1185 = root_new ['parrot';'Hash']
- vivify_389:
+ vivify_393:
set $P1186, $P1185["blockoid"]
- unless_null $P1186, vivify_390
+ unless_null $P1186, vivify_394
new $P1186, "Undef"
- vivify_390:
+ vivify_394:
$P1187 = $P1186."ast"()
store_lex "$past", $P1187
.annotate 'line', 425
@@ -20091,15 +20800,15 @@
$P1189."control"("return_pir")
.annotate 'line', 427
find_lex $P1191, "$/"
- unless_null $P1191, vivify_391
+ unless_null $P1191, vivify_395
$P1191 = root_new ['parrot';'Hash']
- vivify_391:
+ vivify_395:
set $P1192, $P1191["deflongname"]
- unless_null $P1192, vivify_392
+ unless_null $P1192, vivify_396
new $P1192, "Undef"
- vivify_392:
+ vivify_396:
unless $P1192, if_1190_end
- .const 'Sub' $P1194 = "74_1274022903.56472"
+ .const 'Sub' $P1194 = "74_1274564782.90592"
capture_lex $P1194
$P1194()
if_1190_end:
@@ -20118,37 +20827,37 @@
.namespace ["NQP";"Actions"]
-.sub "_block1193" :anon :subid("74_1274022903.56472") :outer("73_1274022903.56472")
+.sub "_block1193" :anon :subid("74_1274564782.90592") :outer("73_1274564782.90592")
.annotate 'line', 428
new $P1195, "Undef"
.lex "$name", $P1195
find_lex $P1196, "$/"
- unless_null $P1196, vivify_393
+ unless_null $P1196, vivify_397
$P1196 = root_new ['parrot';'Hash']
- vivify_393:
+ vivify_397:
set $P1197, $P1196["sigil"]
- unless_null $P1197, vivify_394
+ unless_null $P1197, vivify_398
$P1197 = root_new ['parrot';'ResizablePMCArray']
- vivify_394:
+ vivify_398:
set $P1198, $P1197[0]
- unless_null $P1198, vivify_395
+ unless_null $P1198, vivify_399
new $P1198, "Undef"
- vivify_395:
+ vivify_399:
set $S1199, $P1198
new $P1200, 'String'
set $P1200, $S1199
find_lex $P1201, "$/"
- unless_null $P1201, vivify_396
+ unless_null $P1201, vivify_400
$P1201 = root_new ['parrot';'Hash']
- vivify_396:
+ vivify_400:
set $P1202, $P1201["deflongname"]
- unless_null $P1202, vivify_397
+ unless_null $P1202, vivify_401
$P1202 = root_new ['parrot';'ResizablePMCArray']
- vivify_397:
+ vivify_401:
set $P1203, $P1202[0]
- unless_null $P1203, vivify_398
+ unless_null $P1203, vivify_402
new $P1203, "Undef"
- vivify_398:
+ vivify_402:
$S1204 = $P1203."ast"()
concat $P1205, $P1200, $S1204
store_lex "$name", $P1205
@@ -20158,12 +20867,12 @@
$P1206."name"($P1207)
.annotate 'line', 430
find_dynamic_lex $P1210, "$*SCOPE"
- unless_null $P1210, vivify_399
+ unless_null $P1210, vivify_403
get_hll_global $P1210, "$SCOPE"
- unless_null $P1210, vivify_400
+ unless_null $P1210, vivify_404
die "Contextual $*SCOPE not found"
- vivify_400:
- vivify_399:
+ vivify_404:
+ vivify_403:
set $S1211, $P1210
isne $I1212, $S1211, "our"
if $I1212, if_1209
@@ -20173,17 +20882,17 @@
if_1209:
.annotate 'line', 431
get_global $P1213, "@BLOCK"
- unless_null $P1213, vivify_401
+ unless_null $P1213, vivify_405
$P1213 = root_new ['parrot';'ResizablePMCArray']
- vivify_401:
+ vivify_405:
set $P1214, $P1213[0]
- unless_null $P1214, vivify_402
+ unless_null $P1214, vivify_406
$P1214 = root_new ['parrot';'ResizablePMCArray']
- vivify_402:
+ vivify_406:
set $P1215, $P1214[0]
- unless_null $P1215, vivify_403
+ unless_null $P1215, vivify_407
new $P1215, "Undef"
- vivify_403:
+ vivify_407:
get_hll_global $P1216, ["PAST"], "Var"
find_lex $P1217, "$name"
find_lex $P1218, "$past"
@@ -20191,13 +20900,13 @@
$P1215."push"($P1219)
.annotate 'line', 433
get_global $P1220, "@BLOCK"
- unless_null $P1220, vivify_404
+ unless_null $P1220, vivify_408
$P1220 = root_new ['parrot';'ResizablePMCArray']
- vivify_404:
+ vivify_408:
set $P1221, $P1220[0]
- unless_null $P1221, vivify_405
+ unless_null $P1221, vivify_409
new $P1221, "Undef"
- vivify_405:
+ vivify_409:
find_lex $P1222, "$name"
$P1221."symbol"($P1222, "lexical" :named("scope"))
.annotate 'line', 434
@@ -20214,10 +20923,10 @@
.namespace ["NQP";"Actions"]
-.sub "method_def" :subid("75_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "method_def" :subid("75_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1233
.annotate 'line', 441
- .const 'Sub' $P1249 = "76_1274022903.56472"
+ .const 'Sub' $P1249 = "76_1274564782.90592"
capture_lex $P1249
new $P1232, 'ExceptionHandler'
set_addr $P1232, control_1231
@@ -20229,13 +20938,13 @@
new $P1234, "Undef"
.lex "$past", $P1234
find_lex $P1235, "$/"
- unless_null $P1235, vivify_406
+ unless_null $P1235, vivify_410
$P1235 = root_new ['parrot';'Hash']
- vivify_406:
+ vivify_410:
set $P1236, $P1235["blockoid"]
- unless_null $P1236, vivify_407
+ unless_null $P1236, vivify_411
new $P1236, "Undef"
- vivify_407:
+ vivify_411:
$P1237 = $P1236."ast"()
store_lex "$past", $P1237
.annotate 'line', 443
@@ -20246,13 +20955,13 @@
$P1239."control"("return_pir")
.annotate 'line', 445
find_lex $P1240, "$past"
- unless_null $P1240, vivify_408
+ unless_null $P1240, vivify_412
$P1240 = root_new ['parrot';'ResizablePMCArray']
- vivify_408:
+ vivify_412:
set $P1241, $P1240[0]
- unless_null $P1241, vivify_409
+ unless_null $P1241, vivify_413
new $P1241, "Undef"
- vivify_409:
+ vivify_413:
get_hll_global $P1242, ["PAST"], "Op"
$P1243 = $P1242."new"(" .lex \"self\", self" :named("inline"))
$P1241."unshift"($P1243)
@@ -20261,15 +20970,15 @@
$P1244."symbol"("self", "lexical" :named("scope"))
.annotate 'line', 447
find_lex $P1246, "$/"
- unless_null $P1246, vivify_410
+ unless_null $P1246, vivify_414
$P1246 = root_new ['parrot';'Hash']
- vivify_410:
+ vivify_414:
set $P1247, $P1246["deflongname"]
- unless_null $P1247, vivify_411
+ unless_null $P1247, vivify_415
new $P1247, "Undef"
- vivify_411:
+ vivify_415:
unless $P1247, if_1245_end
- .const 'Sub' $P1249 = "76_1274022903.56472"
+ .const 'Sub' $P1249 = "76_1274564782.90592"
capture_lex $P1249
$P1249()
if_1245_end:
@@ -20288,22 +20997,22 @@
.namespace ["NQP";"Actions"]
-.sub "_block1248" :anon :subid("76_1274022903.56472") :outer("75_1274022903.56472")
+.sub "_block1248" :anon :subid("76_1274564782.90592") :outer("75_1274564782.90592")
.annotate 'line', 448
new $P1250, "Undef"
.lex "$name", $P1250
find_lex $P1251, "$/"
- unless_null $P1251, vivify_412
+ unless_null $P1251, vivify_416
$P1251 = root_new ['parrot';'Hash']
- vivify_412:
+ vivify_416:
set $P1252, $P1251["deflongname"]
- unless_null $P1252, vivify_413
+ unless_null $P1252, vivify_417
$P1252 = root_new ['parrot';'ResizablePMCArray']
- vivify_413:
+ vivify_417:
set $P1253, $P1252[0]
- unless_null $P1253, vivify_414
+ unless_null $P1253, vivify_418
new $P1253, "Undef"
- vivify_414:
+ vivify_418:
$P1254 = $P1253."ast"()
set $S1255, $P1254
new $P1256, 'String'
@@ -20319,10 +21028,10 @@
.namespace ["NQP";"Actions"]
-.sub "signature" :subid("77_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "signature" :subid("77_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1267
.annotate 'line', 455
- .const 'Sub' $P1278 = "78_1274022903.56472"
+ .const 'Sub' $P1278 = "78_1274564782.90592"
capture_lex $P1278
new $P1266, 'ExceptionHandler'
set_addr $P1266, control_1265
@@ -20334,29 +21043,29 @@
new $P1268, "Undef"
.lex "$BLOCKINIT", $P1268
get_global $P1269, "@BLOCK"
- unless_null $P1269, vivify_415
+ unless_null $P1269, vivify_419
$P1269 = root_new ['parrot';'ResizablePMCArray']
- vivify_415:
+ vivify_419:
set $P1270, $P1269[0]
- unless_null $P1270, vivify_416
+ unless_null $P1270, vivify_420
$P1270 = root_new ['parrot';'ResizablePMCArray']
- vivify_416:
+ vivify_420:
set $P1271, $P1270[0]
- unless_null $P1271, vivify_417
+ unless_null $P1271, vivify_421
new $P1271, "Undef"
- vivify_417:
+ vivify_421:
store_lex "$BLOCKINIT", $P1271
.annotate 'line', 457
find_lex $P1273, "$/"
- unless_null $P1273, vivify_418
+ unless_null $P1273, vivify_422
$P1273 = root_new ['parrot';'Hash']
- vivify_418:
+ vivify_422:
set $P1274, $P1273["parameter"]
- unless_null $P1274, vivify_419
+ unless_null $P1274, vivify_423
new $P1274, "Undef"
- vivify_419:
+ vivify_423:
defined $I1275, $P1274
- unless $I1275, for_undef_420
+ unless $I1275, for_undef_424
iter $P1272, $P1274
new $P1285, 'ExceptionHandler'
set_addr $P1285, loop1284_handler
@@ -20366,7 +21075,7 @@
unless $P1272, loop1284_done
shift $P1276, $P1272
loop1284_redo:
- .const 'Sub' $P1278 = "78_1274022903.56472"
+ .const 'Sub' $P1278 = "78_1274564782.90592"
capture_lex $P1278
$P1278($P1276)
loop1284_next:
@@ -20379,7 +21088,7 @@
eq $P1286, 66, loop1284_redo
loop1284_done:
pop_eh
- for_undef_420:
+ for_undef_424:
.annotate 'line', 455
.return ($P1272)
control_1265:
@@ -20391,7 +21100,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1277" :anon :subid("78_1274022903.56472") :outer("77_1274022903.56472")
+.sub "_block1277" :anon :subid("78_1274564782.90592") :outer("77_1274564782.90592")
.param pmc param_1279
.annotate 'line', 457
.lex "$_", param_1279
@@ -20404,7 +21113,7 @@
.namespace ["NQP";"Actions"]
-.sub "parameter" :subid("79_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "parameter" :subid("79_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1291
.annotate 'line', 460
new $P1290, 'ExceptionHandler'
@@ -20421,34 +21130,34 @@
.lex "$past", $P1293
.annotate 'line', 461
find_lex $P1294, "$/"
- unless_null $P1294, vivify_421
+ unless_null $P1294, vivify_425
$P1294 = root_new ['parrot';'Hash']
- vivify_421:
+ vivify_425:
set $P1295, $P1294["quant"]
- unless_null $P1295, vivify_422
+ unless_null $P1295, vivify_426
new $P1295, "Undef"
- vivify_422:
+ vivify_426:
store_lex "$quant", $P1295
find_lex $P1296, "$past"
.annotate 'line', 463
find_lex $P1298, "$/"
- unless_null $P1298, vivify_423
+ unless_null $P1298, vivify_427
$P1298 = root_new ['parrot';'Hash']
- vivify_423:
+ vivify_427:
set $P1299, $P1298["named_param"]
- unless_null $P1299, vivify_424
+ unless_null $P1299, vivify_428
new $P1299, "Undef"
- vivify_424:
+ vivify_428:
if $P1299, if_1297
.annotate 'line', 470
find_lex $P1313, "$/"
- unless_null $P1313, vivify_425
+ unless_null $P1313, vivify_429
$P1313 = root_new ['parrot';'Hash']
- vivify_425:
+ vivify_429:
set $P1314, $P1313["param_var"]
- unless_null $P1314, vivify_426
+ unless_null $P1314, vivify_430
new $P1314, "Undef"
- vivify_426:
+ vivify_430:
$P1315 = $P1314."ast"()
store_lex "$past", $P1315
.annotate 'line', 471
@@ -20464,17 +21173,17 @@
.annotate 'line', 476
find_lex $P1331, "$past"
find_lex $P1332, "$/"
- unless_null $P1332, vivify_427
+ unless_null $P1332, vivify_431
$P1332 = root_new ['parrot';'Hash']
- vivify_427:
+ vivify_431:
set $P1333, $P1332["param_var"]
- unless_null $P1333, vivify_428
+ unless_null $P1333, vivify_432
$P1333 = root_new ['parrot';'Hash']
- vivify_428:
+ vivify_432:
set $P1334, $P1333["sigil"]
- unless_null $P1334, vivify_429
+ unless_null $P1334, vivify_433
new $P1334, "Undef"
- vivify_429:
+ vivify_433:
$P1335 = "vivitype"($P1334)
$P1331."viviself"($P1335)
if_1327_end:
@@ -20487,17 +21196,17 @@
.annotate 'line', 473
find_lex $P1321, "$past"
find_lex $P1322, "$/"
- unless_null $P1322, vivify_430
+ unless_null $P1322, vivify_434
$P1322 = root_new ['parrot';'Hash']
- vivify_430:
+ vivify_434:
set $P1323, $P1322["param_var"]
- unless_null $P1323, vivify_431
+ unless_null $P1323, vivify_435
$P1323 = root_new ['parrot';'Hash']
- vivify_431:
+ vivify_435:
set $P1324, $P1323["sigil"]
- unless_null $P1324, vivify_432
+ unless_null $P1324, vivify_436
new $P1324, "Undef"
- vivify_432:
+ vivify_436:
set $S1325, $P1324
iseq $I1326, $S1325, "%"
$P1321."named"($I1326)
@@ -20507,13 +21216,13 @@
if_1297:
.annotate 'line', 464
find_lex $P1300, "$/"
- unless_null $P1300, vivify_433
+ unless_null $P1300, vivify_437
$P1300 = root_new ['parrot';'Hash']
- vivify_433:
+ vivify_437:
set $P1301, $P1300["named_param"]
- unless_null $P1301, vivify_434
+ unless_null $P1301, vivify_438
new $P1301, "Undef"
- vivify_434:
+ vivify_438:
$P1302 = $P1301."ast"()
store_lex "$past", $P1302
.annotate 'line', 465
@@ -20524,34 +21233,34 @@
.annotate 'line', 466
find_lex $P1307, "$past"
find_lex $P1308, "$/"
- unless_null $P1308, vivify_435
+ unless_null $P1308, vivify_439
$P1308 = root_new ['parrot';'Hash']
- vivify_435:
+ vivify_439:
set $P1309, $P1308["named_param"]
- unless_null $P1309, vivify_436
+ unless_null $P1309, vivify_440
$P1309 = root_new ['parrot';'Hash']
- vivify_436:
+ vivify_440:
set $P1310, $P1309["param_var"]
- unless_null $P1310, vivify_437
+ unless_null $P1310, vivify_441
$P1310 = root_new ['parrot';'Hash']
- vivify_437:
+ vivify_441:
set $P1311, $P1310["sigil"]
- unless_null $P1311, vivify_438
+ unless_null $P1311, vivify_442
new $P1311, "Undef"
- vivify_438:
+ vivify_442:
$P1312 = "vivitype"($P1311)
$P1307."viviself"($P1312)
if_1303_end:
if_1297_end:
.annotate 'line', 479
find_lex $P1337, "$/"
- unless_null $P1337, vivify_439
+ unless_null $P1337, vivify_443
$P1337 = root_new ['parrot';'Hash']
- vivify_439:
+ vivify_443:
set $P1338, $P1337["default_value"]
- unless_null $P1338, vivify_440
+ unless_null $P1338, vivify_444
new $P1338, "Undef"
- vivify_440:
+ vivify_444:
unless $P1338, if_1336_end
.annotate 'line', 480
find_lex $P1340, "$quant"
@@ -20576,21 +21285,21 @@
.annotate 'line', 486
find_lex $P1351, "$past"
find_lex $P1352, "$/"
- unless_null $P1352, vivify_441
+ unless_null $P1352, vivify_445
$P1352 = root_new ['parrot';'Hash']
- vivify_441:
+ vivify_445:
set $P1353, $P1352["default_value"]
- unless_null $P1353, vivify_442
+ unless_null $P1353, vivify_446
$P1353 = root_new ['parrot';'ResizablePMCArray']
- vivify_442:
+ vivify_446:
set $P1354, $P1353[0]
- unless_null $P1354, vivify_443
+ unless_null $P1354, vivify_447
$P1354 = root_new ['parrot';'Hash']
- vivify_443:
+ vivify_447:
set $P1355, $P1354["EXPR"]
- unless_null $P1355, vivify_444
+ unless_null $P1355, vivify_448
new $P1355, "Undef"
- vivify_444:
+ vivify_448:
$P1356 = $P1355."ast"()
$P1351."viviself"($P1356)
if_1336_end:
@@ -20599,21 +21308,21 @@
$P1359 = $P1358."viviself"()
if $P1359, unless_1357_end
get_global $P1360, "@BLOCK"
- unless_null $P1360, vivify_445
+ unless_null $P1360, vivify_449
$P1360 = root_new ['parrot';'ResizablePMCArray']
- vivify_445:
+ vivify_449:
set $P1361, $P1360[0]
- unless_null $P1361, vivify_446
+ unless_null $P1361, vivify_450
new $P1361, "Undef"
- vivify_446:
+ vivify_450:
get_global $P1362, "@BLOCK"
- unless_null $P1362, vivify_447
+ unless_null $P1362, vivify_451
$P1362 = root_new ['parrot';'ResizablePMCArray']
- vivify_447:
+ vivify_451:
set $P1363, $P1362[0]
- unless_null $P1363, vivify_448
+ unless_null $P1363, vivify_452
new $P1363, "Undef"
- vivify_448:
+ vivify_452:
$P1364 = $P1363."arity"()
set $N1365, $P1364
new $P1366, 'Float'
@@ -20636,7 +21345,7 @@
.namespace ["NQP";"Actions"]
-.sub "param_var" :subid("80_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "param_var" :subid("80_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1375
.annotate 'line', 492
new $P1374, 'ExceptionHandler'
@@ -20665,13 +21374,13 @@
store_lex "$past", $P1384
.annotate 'line', 496
get_global $P1385, "@BLOCK"
- unless_null $P1385, vivify_449
+ unless_null $P1385, vivify_453
$P1385 = root_new ['parrot';'ResizablePMCArray']
- vivify_449:
+ vivify_453:
set $P1386, $P1385[0]
- unless_null $P1386, vivify_450
+ unless_null $P1386, vivify_454
new $P1386, "Undef"
- vivify_450:
+ vivify_454:
find_lex $P1387, "$name"
$P1386."symbol"($P1387, "lexical" :named("scope"))
.annotate 'line', 497
@@ -20689,7 +21398,7 @@
.namespace ["NQP";"Actions"]
-.sub "named_param" :subid("81_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "named_param" :subid("81_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1395
.annotate 'line', 500
new $P1394, 'ExceptionHandler'
@@ -20702,29 +21411,29 @@
new $P1396, "Undef"
.lex "$past", $P1396
find_lex $P1397, "$/"
- unless_null $P1397, vivify_451
+ unless_null $P1397, vivify_455
$P1397 = root_new ['parrot';'Hash']
- vivify_451:
+ vivify_455:
set $P1398, $P1397["param_var"]
- unless_null $P1398, vivify_452
+ unless_null $P1398, vivify_456
new $P1398, "Undef"
- vivify_452:
+ vivify_456:
$P1399 = $P1398."ast"()
store_lex "$past", $P1399
.annotate 'line', 502
find_lex $P1400, "$past"
find_lex $P1401, "$/"
- unless_null $P1401, vivify_453
+ unless_null $P1401, vivify_457
$P1401 = root_new ['parrot';'Hash']
- vivify_453:
+ vivify_457:
set $P1402, $P1401["param_var"]
- unless_null $P1402, vivify_454
+ unless_null $P1402, vivify_458
$P1402 = root_new ['parrot';'Hash']
- vivify_454:
+ vivify_458:
set $P1403, $P1402["name"]
- unless_null $P1403, vivify_455
+ unless_null $P1403, vivify_459
new $P1403, "Undef"
- vivify_455:
+ vivify_459:
set $S1404, $P1403
$P1400."named"($S1404)
.annotate 'line', 503
@@ -20742,14 +21451,14 @@
.namespace ["NQP";"Actions"]
-.sub "regex_declarator" :subid("82_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "regex_declarator" :subid("82_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1412
.param pmc param_1413 :optional
.param int has_param_1413 :opt_flag
.annotate 'line', 506
- .const 'Sub' $P1483 = "84_1274022903.56472"
+ .const 'Sub' $P1483 = "84_1274564782.90592"
capture_lex $P1483
- .const 'Sub' $P1455 = "83_1274022903.56472"
+ .const 'Sub' $P1455 = "83_1274564782.90592"
capture_lex $P1455
new $P1411, 'ExceptionHandler'
set_addr $P1411, control_1410
@@ -20757,10 +21466,10 @@
push_eh $P1411
.lex "self", self
.lex "$/", param_1412
- if has_param_1413, optparam_456
+ if has_param_1413, optparam_460
new $P1414, "Undef"
set param_1413, $P1414
- optparam_456:
+ optparam_460:
.lex "$key", param_1413
.annotate 'line', 507
$P1415 = root_new ['parrot';'ResizablePMCArray']
@@ -20778,13 +21487,13 @@
store_lex "@MODIFIERS", $P1418
.annotate 'line', 510
find_lex $P1419, "$/"
- unless_null $P1419, vivify_457
+ unless_null $P1419, vivify_461
$P1419 = root_new ['parrot';'Hash']
- vivify_457:
+ vivify_461:
set $P1420, $P1419["deflongname"]
- unless_null $P1420, vivify_458
+ unless_null $P1420, vivify_462
new $P1420, "Undef"
- vivify_458:
+ vivify_462:
$P1421 = $P1420."ast"()
set $S1422, $P1421
new $P1423, 'String'
@@ -20793,13 +21502,13 @@
find_lex $P1424, "$past"
.annotate 'line', 512
find_lex $P1426, "$/"
- unless_null $P1426, vivify_459
+ unless_null $P1426, vivify_463
$P1426 = root_new ['parrot';'Hash']
- vivify_459:
+ vivify_463:
set $P1427, $P1426["proto"]
- unless_null $P1427, vivify_460
+ unless_null $P1427, vivify_464
new $P1427, "Undef"
- vivify_460:
+ vivify_464:
if $P1427, if_1425
.annotate 'line', 539
find_lex $P1451, "$key"
@@ -20807,13 +21516,13 @@
iseq $I1453, $S1452, "open"
if $I1453, if_1450
.annotate 'line', 552
- .const 'Sub' $P1483 = "84_1274022903.56472"
+ .const 'Sub' $P1483 = "84_1274564782.90592"
capture_lex $P1483
$P1483()
goto if_1450_end
if_1450:
.annotate 'line', 539
- .const 'Sub' $P1455 = "83_1274022903.56472"
+ .const 'Sub' $P1455 = "83_1274564782.90592"
capture_lex $P1455
$P1455()
if_1450_end:
@@ -20870,20 +21579,20 @@
.namespace ["NQP";"Actions"]
-.sub "_block1482" :anon :subid("84_1274022903.56472") :outer("82_1274022903.56472")
+.sub "_block1482" :anon :subid("84_1274564782.90592") :outer("82_1274564782.90592")
.annotate 'line', 553
new $P1484, "Undef"
.lex "$regex", $P1484
.annotate 'line', 554
get_hll_global $P1485, ["Regex";"P6Regex";"Actions"], "buildsub"
find_lex $P1486, "$/"
- unless_null $P1486, vivify_461
+ unless_null $P1486, vivify_465
$P1486 = root_new ['parrot';'Hash']
- vivify_461:
+ vivify_465:
set $P1487, $P1486["p6regex"]
- unless_null $P1487, vivify_462
+ unless_null $P1487, vivify_466
new $P1487, "Undef"
- vivify_462:
+ vivify_466:
$P1488 = $P1487."ast"()
get_global $P1489, "@BLOCK"
$P1490 = $P1489."shift"()
@@ -20907,10 +21616,10 @@
.annotate 'line', 563
find_lex $P1500, "$regex"
find_lex $P1501, "$past"
- unless_null $P1501, vivify_463
+ unless_null $P1501, vivify_467
$P1501 = root_new ['parrot';'Hash']
store_lex "$past", $P1501
- vivify_463:
+ vivify_467:
set $P1501["sink"], $P1500
.annotate 'line', 564
find_lex $P1502, "@MODIFIERS"
@@ -20921,7 +21630,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1454" :anon :subid("83_1274022903.56472") :outer("82_1274022903.56472")
+.sub "_block1454" :anon :subid("83_1274564782.90592") :outer("82_1274564782.90592")
.annotate 'line', 540
$P1456 = root_new ['parrot';'Hash']
.lex "%h", $P1456
@@ -20929,52 +21638,52 @@
find_lex $P1457, "%h"
.annotate 'line', 541
find_lex $P1459, "$/"
- unless_null $P1459, vivify_464
+ unless_null $P1459, vivify_468
$P1459 = root_new ['parrot';'Hash']
- vivify_464:
+ vivify_468:
set $P1460, $P1459["sym"]
- unless_null $P1460, vivify_465
+ unless_null $P1460, vivify_469
new $P1460, "Undef"
- vivify_465:
+ vivify_469:
set $S1461, $P1460
iseq $I1462, $S1461, "token"
unless $I1462, if_1458_end
new $P1463, "Integer"
assign $P1463, 1
find_lex $P1464, "%h"
- unless_null $P1464, vivify_466
+ unless_null $P1464, vivify_470
$P1464 = root_new ['parrot';'Hash']
store_lex "%h", $P1464
- vivify_466:
+ vivify_470:
set $P1464["r"], $P1463
if_1458_end:
.annotate 'line', 542
find_lex $P1466, "$/"
- unless_null $P1466, vivify_467
+ unless_null $P1466, vivify_471
$P1466 = root_new ['parrot';'Hash']
- vivify_467:
+ vivify_471:
set $P1467, $P1466["sym"]
- unless_null $P1467, vivify_468
+ unless_null $P1467, vivify_472
new $P1467, "Undef"
- vivify_468:
+ vivify_472:
set $S1468, $P1467
iseq $I1469, $S1468, "rule"
unless $I1469, if_1465_end
new $P1470, "Integer"
assign $P1470, 1
find_lex $P1471, "%h"
- unless_null $P1471, vivify_469
+ unless_null $P1471, vivify_473
$P1471 = root_new ['parrot';'Hash']
store_lex "%h", $P1471
- vivify_469:
+ vivify_473:
set $P1471["r"], $P1470
new $P1472, "Integer"
assign $P1472, 1
find_lex $P1473, "%h"
- unless_null $P1473, vivify_470
+ unless_null $P1473, vivify_474
$P1473 = root_new ['parrot';'Hash']
store_lex "%h", $P1473
- vivify_470:
+ vivify_474:
set $P1473["s"], $P1472
if_1465_end:
.annotate 'line', 543
@@ -20988,23 +21697,23 @@
.annotate 'line', 548
get_global $P1476, "@BLOCK"
- unless_null $P1476, vivify_471
+ unless_null $P1476, vivify_475
$P1476 = root_new ['parrot';'ResizablePMCArray']
- vivify_471:
+ vivify_475:
set $P1477, $P1476[0]
- unless_null $P1477, vivify_472
+ unless_null $P1477, vivify_476
new $P1477, "Undef"
- vivify_472:
+ vivify_476:
$P1477."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
.annotate 'line', 549
get_global $P1478, "@BLOCK"
- unless_null $P1478, vivify_473
+ unless_null $P1478, vivify_477
$P1478 = root_new ['parrot';'ResizablePMCArray']
- vivify_473:
+ vivify_477:
set $P1479, $P1478[0]
- unless_null $P1479, vivify_474
+ unless_null $P1479, vivify_478
new $P1479, "Undef"
- vivify_474:
+ vivify_478:
$P1479."symbol"("$/", "lexical" :named("scope"))
.annotate 'line', 550
new $P1480, "Exception"
@@ -21019,7 +21728,7 @@
.namespace ["NQP";"Actions"]
-.sub "dotty" :subid("85_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "dotty" :subid("85_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1511
.annotate 'line', 570
new $P1510, 'ExceptionHandler'
@@ -21032,13 +21741,13 @@
new $P1512, "Undef"
.lex "$past", $P1512
find_lex $P1515, "$/"
- unless_null $P1515, vivify_475
+ unless_null $P1515, vivify_479
$P1515 = root_new ['parrot';'Hash']
- vivify_475:
+ vivify_479:
set $P1516, $P1515["args"]
- unless_null $P1516, vivify_476
+ unless_null $P1516, vivify_480
new $P1516, "Undef"
- vivify_476:
+ vivify_480:
if $P1516, if_1514
get_hll_global $P1521, ["PAST"], "Op"
find_lex $P1522, "$/"
@@ -21047,17 +21756,17 @@
goto if_1514_end
if_1514:
find_lex $P1517, "$/"
- unless_null $P1517, vivify_477
+ unless_null $P1517, vivify_481
$P1517 = root_new ['parrot';'Hash']
- vivify_477:
+ vivify_481:
set $P1518, $P1517["args"]
- unless_null $P1518, vivify_478
+ unless_null $P1518, vivify_482
$P1518 = root_new ['parrot';'ResizablePMCArray']
- vivify_478:
+ vivify_482:
set $P1519, $P1518[0]
- unless_null $P1519, vivify_479
+ unless_null $P1519, vivify_483
new $P1519, "Undef"
- vivify_479:
+ vivify_483:
$P1520 = $P1519."ast"()
set $P1513, $P1520
if_1514_end:
@@ -21065,35 +21774,35 @@
.annotate 'line', 572
find_lex $P1524, "$past"
find_lex $P1527, "$/"
- unless_null $P1527, vivify_480
+ unless_null $P1527, vivify_484
$P1527 = root_new ['parrot';'Hash']
- vivify_480:
+ vivify_484:
set $P1528, $P1527["quote"]
- unless_null $P1528, vivify_481
+ unless_null $P1528, vivify_485
new $P1528, "Undef"
- vivify_481:
+ vivify_485:
if $P1528, if_1526
find_lex $P1532, "$/"
- unless_null $P1532, vivify_482
+ unless_null $P1532, vivify_486
$P1532 = root_new ['parrot';'Hash']
- vivify_482:
+ vivify_486:
set $P1533, $P1532["longname"]
- unless_null $P1533, vivify_483
+ unless_null $P1533, vivify_487
new $P1533, "Undef"
- vivify_483:
+ vivify_487:
set $S1534, $P1533
new $P1525, 'String'
set $P1525, $S1534
goto if_1526_end
if_1526:
find_lex $P1529, "$/"
- unless_null $P1529, vivify_484
+ unless_null $P1529, vivify_488
$P1529 = root_new ['parrot';'Hash']
- vivify_484:
+ vivify_488:
set $P1530, $P1529["quote"]
- unless_null $P1530, vivify_485
+ unless_null $P1530, vivify_489
new $P1530, "Undef"
- vivify_485:
+ vivify_489:
$P1531 = $P1530."ast"()
set $P1525, $P1531
if_1526_end:
@@ -21116,7 +21825,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<self>" :subid("86_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<self>" :subid("86_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1543
.annotate 'line', 579
new $P1542, 'ExceptionHandler'
@@ -21141,7 +21850,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>" :subid("87_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<identifier>" :subid("87_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1552
.annotate 'line', 583
new $P1551, 'ExceptionHandler'
@@ -21154,25 +21863,25 @@
new $P1553, "Undef"
.lex "$past", $P1553
find_lex $P1554, "$/"
- unless_null $P1554, vivify_486
+ unless_null $P1554, vivify_490
$P1554 = root_new ['parrot';'Hash']
- vivify_486:
+ vivify_490:
set $P1555, $P1554["args"]
- unless_null $P1555, vivify_487
+ unless_null $P1555, vivify_491
new $P1555, "Undef"
- vivify_487:
+ vivify_491:
$P1556 = $P1555."ast"()
store_lex "$past", $P1556
.annotate 'line', 585
find_lex $P1557, "$past"
find_lex $P1558, "$/"
- unless_null $P1558, vivify_488
+ unless_null $P1558, vivify_492
$P1558 = root_new ['parrot';'Hash']
- vivify_488:
+ vivify_492:
set $P1559, $P1558["identifier"]
- unless_null $P1559, vivify_489
+ unless_null $P1559, vivify_493
new $P1559, "Undef"
- vivify_489:
+ vivify_493:
set $S1560, $P1559
$P1557."name"($S1560)
.annotate 'line', 586
@@ -21190,7 +21899,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<name>" :subid("88_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<name>" :subid("88_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1568
.annotate 'line', 589
new $P1567, 'ExceptionHandler'
@@ -21213,17 +21922,17 @@
.lex "$past", $P1572
.annotate 'line', 590
find_lex $P1573, "$/"
- unless_null $P1573, vivify_490
+ unless_null $P1573, vivify_494
$P1573 = root_new ['parrot';'Hash']
- vivify_490:
+ vivify_494:
set $P1574, $P1573["name"]
- unless_null $P1574, vivify_491
+ unless_null $P1574, vivify_495
$P1574 = root_new ['parrot';'Hash']
- vivify_491:
+ vivify_495:
set $P1575, $P1574["identifier"]
- unless_null $P1575, vivify_492
+ unless_null $P1575, vivify_496
new $P1575, "Undef"
- vivify_492:
+ vivify_496:
clone $P1576, $P1575
store_lex "@ns", $P1576
.annotate 'line', 591
@@ -21237,13 +21946,13 @@
goto if_1581_end
if_1581:
find_lex $P1583, "@ns"
- unless_null $P1583, vivify_493
+ unless_null $P1583, vivify_497
$P1583 = root_new ['parrot';'ResizablePMCArray']
- vivify_493:
+ vivify_497:
set $P1584, $P1583[0]
- unless_null $P1584, vivify_494
+ unless_null $P1584, vivify_498
new $P1584, "Undef"
- vivify_494:
+ vivify_498:
set $S1585, $P1584
iseq $I1586, $S1585, "GLOBAL"
new $P1580, 'Integer'
@@ -21265,27 +21974,27 @@
store_lex "$past", $P1593
.annotate 'line', 596
find_lex $P1595, "$/"
- unless_null $P1595, vivify_495
+ unless_null $P1595, vivify_499
$P1595 = root_new ['parrot';'Hash']
- vivify_495:
+ vivify_499:
set $P1596, $P1595["args"]
- unless_null $P1596, vivify_496
+ unless_null $P1596, vivify_500
new $P1596, "Undef"
- vivify_496:
+ vivify_500:
unless $P1596, if_1594_end
.annotate 'line', 597
find_lex $P1597, "$/"
- unless_null $P1597, vivify_497
+ unless_null $P1597, vivify_501
$P1597 = root_new ['parrot';'Hash']
- vivify_497:
+ vivify_501:
set $P1598, $P1597["args"]
- unless_null $P1598, vivify_498
+ unless_null $P1598, vivify_502
$P1598 = root_new ['parrot';'ResizablePMCArray']
- vivify_498:
+ vivify_502:
set $P1599, $P1598[0]
- unless_null $P1599, vivify_499
+ unless_null $P1599, vivify_503
new $P1599, "Undef"
- vivify_499:
+ vivify_503:
$P1600 = $P1599."ast"()
store_lex "$past", $P1600
.annotate 'line', 598
@@ -21308,7 +22017,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>" :subid("89_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<pir::op>" :subid("89_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1610
.annotate 'line', 603
new $P1609, 'ExceptionHandler'
@@ -21325,13 +22034,13 @@
.lex "$pirop", $P1612
.annotate 'line', 604
find_lex $P1615, "$/"
- unless_null $P1615, vivify_500
+ unless_null $P1615, vivify_504
$P1615 = root_new ['parrot';'Hash']
- vivify_500:
+ vivify_504:
set $P1616, $P1615["args"]
- unless_null $P1616, vivify_501
+ unless_null $P1616, vivify_505
new $P1616, "Undef"
- vivify_501:
+ vivify_505:
if $P1616, if_1614
get_hll_global $P1621, ["PAST"], "Op"
find_lex $P1622, "$/"
@@ -21340,30 +22049,30 @@
goto if_1614_end
if_1614:
find_lex $P1617, "$/"
- unless_null $P1617, vivify_502
+ unless_null $P1617, vivify_506
$P1617 = root_new ['parrot';'Hash']
- vivify_502:
+ vivify_506:
set $P1618, $P1617["args"]
- unless_null $P1618, vivify_503
+ unless_null $P1618, vivify_507
$P1618 = root_new ['parrot';'ResizablePMCArray']
- vivify_503:
+ vivify_507:
set $P1619, $P1618[0]
- unless_null $P1619, vivify_504
+ unless_null $P1619, vivify_508
new $P1619, "Undef"
- vivify_504:
+ vivify_508:
$P1620 = $P1619."ast"()
set $P1613, $P1620
if_1614_end:
store_lex "$past", $P1613
.annotate 'line', 605
find_lex $P1624, "$/"
- unless_null $P1624, vivify_505
+ unless_null $P1624, vivify_509
$P1624 = root_new ['parrot';'Hash']
- vivify_505:
+ vivify_509:
set $P1625, $P1624["op"]
- unless_null $P1625, vivify_506
+ unless_null $P1625, vivify_510
new $P1625, "Undef"
- vivify_506:
+ vivify_510:
set $S1626, $P1625
new $P1627, 'String'
set $P1627, $S1626
@@ -21399,7 +22108,7 @@
.namespace ["NQP";"Actions"]
-.sub "args" :subid("90_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "args" :subid("90_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1639
.annotate 'line', 618
new $P1638, 'ExceptionHandler'
@@ -21410,13 +22119,13 @@
.lex "$/", param_1639
find_lex $P1640, "$/"
find_lex $P1641, "$/"
- unless_null $P1641, vivify_507
+ unless_null $P1641, vivify_511
$P1641 = root_new ['parrot';'Hash']
- vivify_507:
+ vivify_511:
set $P1642, $P1641["arglist"]
- unless_null $P1642, vivify_508
+ unless_null $P1642, vivify_512
new $P1642, "Undef"
- vivify_508:
+ vivify_512:
$P1643 = $P1642."ast"()
$P1644 = $P1640."!make"($P1643)
.return ($P1644)
@@ -21429,10 +22138,10 @@
.namespace ["NQP";"Actions"]
-.sub "arglist" :subid("91_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "arglist" :subid("91_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1649
.annotate 'line', 620
- .const 'Sub' $P1660 = "92_1274022903.56472"
+ .const 'Sub' $P1660 = "92_1274564782.90592"
capture_lex $P1660
new $P1648, 'ExceptionHandler'
set_addr $P1648, control_1647
@@ -21456,15 +22165,15 @@
store_lex "$past", $P1655
.annotate 'line', 622
find_lex $P1657, "$/"
- unless_null $P1657, vivify_509
+ unless_null $P1657, vivify_513
$P1657 = root_new ['parrot';'Hash']
- vivify_509:
+ vivify_513:
set $P1658, $P1657["EXPR"]
- unless_null $P1658, vivify_510
+ unless_null $P1658, vivify_514
new $P1658, "Undef"
- vivify_510:
+ vivify_514:
unless $P1658, if_1656_end
- .const 'Sub' $P1660 = "92_1274022903.56472"
+ .const 'Sub' $P1660 = "92_1274564782.90592"
capture_lex $P1660
$P1660()
if_1656_end:
@@ -21496,13 +22205,13 @@
find_lex $P1703, "$i"
set $I1704, $P1703
find_lex $P1705, "$past"
- unless_null $P1705, vivify_514
+ unless_null $P1705, vivify_518
$P1705 = root_new ['parrot';'ResizablePMCArray']
- vivify_514:
+ vivify_518:
set $P1706, $P1705[$I1704]
- unless_null $P1706, vivify_515
+ unless_null $P1706, vivify_519
new $P1706, "Undef"
- vivify_515:
+ vivify_519:
$S1707 = $P1706."name"()
iseq $I1708, $S1707, "&prefix:<|>"
unless $I1708, if_1702_end
@@ -21510,48 +22219,48 @@
find_lex $P1709, "$i"
set $I1710, $P1709
find_lex $P1711, "$past"
- unless_null $P1711, vivify_516
+ unless_null $P1711, vivify_520
$P1711 = root_new ['parrot';'ResizablePMCArray']
- vivify_516:
+ vivify_520:
set $P1712, $P1711[$I1710]
- unless_null $P1712, vivify_517
+ unless_null $P1712, vivify_521
$P1712 = root_new ['parrot';'ResizablePMCArray']
- vivify_517:
+ vivify_521:
set $P1713, $P1712[0]
- unless_null $P1713, vivify_518
+ unless_null $P1713, vivify_522
new $P1713, "Undef"
- vivify_518:
+ vivify_522:
find_lex $P1714, "$i"
set $I1715, $P1714
find_lex $P1716, "$past"
- unless_null $P1716, vivify_519
+ unless_null $P1716, vivify_523
$P1716 = root_new ['parrot';'ResizablePMCArray']
store_lex "$past", $P1716
- vivify_519:
+ vivify_523:
set $P1716[$I1715], $P1713
.annotate 'line', 634
find_lex $P1717, "$i"
set $I1718, $P1717
find_lex $P1719, "$past"
- unless_null $P1719, vivify_520
+ unless_null $P1719, vivify_524
$P1719 = root_new ['parrot';'ResizablePMCArray']
- vivify_520:
+ vivify_524:
set $P1720, $P1719[$I1718]
- unless_null $P1720, vivify_521
+ unless_null $P1720, vivify_525
new $P1720, "Undef"
- vivify_521:
+ vivify_525:
$P1720."flat"(1)
.annotate 'line', 635
find_lex $P1724, "$i"
set $I1725, $P1724
find_lex $P1726, "$past"
- unless_null $P1726, vivify_522
+ unless_null $P1726, vivify_526
$P1726 = root_new ['parrot';'ResizablePMCArray']
- vivify_522:
+ vivify_526:
set $P1727, $P1726[$I1725]
- unless_null $P1727, vivify_523
+ unless_null $P1727, vivify_527
new $P1727, "Undef"
- vivify_523:
+ vivify_527:
get_hll_global $P1728, ["PAST"], "Val"
$P1729 = $P1727."isa"($P1728)
if $P1729, if_1723
@@ -21562,13 +22271,13 @@
find_lex $P1730, "$i"
set $I1731, $P1730
find_lex $P1732, "$past"
- unless_null $P1732, vivify_524
+ unless_null $P1732, vivify_528
$P1732 = root_new ['parrot';'ResizablePMCArray']
- vivify_524:
+ vivify_528:
set $P1733, $P1732[$I1731]
- unless_null $P1733, vivify_525
+ unless_null $P1733, vivify_529
new $P1733, "Undef"
- vivify_525:
+ vivify_529:
$S1734 = $P1733."name"()
substr $S1735, $S1734, 0, 1
iseq $I1736, $S1735, "%"
@@ -21580,13 +22289,13 @@
find_lex $P1737, "$i"
set $I1738, $P1737
find_lex $P1739, "$past"
- unless_null $P1739, vivify_526
+ unless_null $P1739, vivify_530
$P1739 = root_new ['parrot';'ResizablePMCArray']
- vivify_526:
+ vivify_530:
set $P1740, $P1739[$I1738]
- unless_null $P1740, vivify_527
+ unless_null $P1740, vivify_531
new $P1740, "Undef"
- vivify_527:
+ vivify_531:
$P1740."named"(1)
if_1721_end:
if_1702_end:
@@ -21620,21 +22329,21 @@
.namespace ["NQP";"Actions"]
-.sub "_block1659" :anon :subid("92_1274022903.56472") :outer("91_1274022903.56472")
+.sub "_block1659" :anon :subid("92_1274564782.90592") :outer("91_1274564782.90592")
.annotate 'line', 622
- .const 'Sub' $P1681 = "93_1274022903.56472"
+ .const 'Sub' $P1681 = "93_1274564782.90592"
capture_lex $P1681
.annotate 'line', 623
new $P1661, "Undef"
.lex "$expr", $P1661
find_lex $P1662, "$/"
- unless_null $P1662, vivify_511
+ unless_null $P1662, vivify_515
$P1662 = root_new ['parrot';'Hash']
- vivify_511:
+ vivify_515:
set $P1663, $P1662["EXPR"]
- unless_null $P1663, vivify_512
+ unless_null $P1663, vivify_516
new $P1663, "Undef"
- vivify_512:
+ vivify_516:
$P1664 = $P1663."ast"()
store_lex "$expr", $P1664
.annotate 'line', 624
@@ -21665,7 +22374,7 @@
find_lex $P1676, "$expr"
$P1677 = $P1676."list"()
defined $I1678, $P1677
- unless $I1678, for_undef_513
+ unless $I1678, for_undef_517
iter $P1675, $P1677
new $P1687, 'ExceptionHandler'
set_addr $P1687, loop1686_handler
@@ -21675,7 +22384,7 @@
unless $P1675, loop1686_done
shift $P1679, $P1675
loop1686_redo:
- .const 'Sub' $P1681 = "93_1274022903.56472"
+ .const 'Sub' $P1681 = "93_1274564782.90592"
capture_lex $P1681
$P1681($P1679)
loop1686_next:
@@ -21688,7 +22397,7 @@
eq $P1688, 66, loop1686_redo
loop1686_done:
pop_eh
- for_undef_513:
+ for_undef_517:
.annotate 'line', 624
set $P1665, $P1675
if_1666_end:
@@ -21698,7 +22407,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1680" :anon :subid("93_1274022903.56472") :outer("92_1274022903.56472")
+.sub "_block1680" :anon :subid("93_1274564782.90592") :outer("92_1274564782.90592")
.param pmc param_1682
.annotate 'line', 625
.lex "$_", param_1682
@@ -21710,7 +22419,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<value>" :subid("94_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<value>" :subid("94_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1753
.annotate 'line', 646
new $P1752, 'ExceptionHandler'
@@ -21721,13 +22430,13 @@
.lex "$/", param_1753
find_lex $P1754, "$/"
find_lex $P1755, "$/"
- unless_null $P1755, vivify_528
+ unless_null $P1755, vivify_532
$P1755 = root_new ['parrot';'Hash']
- vivify_528:
+ vivify_532:
set $P1756, $P1755["value"]
- unless_null $P1756, vivify_529
+ unless_null $P1756, vivify_533
new $P1756, "Undef"
- vivify_529:
+ vivify_533:
$P1757 = $P1756."ast"()
$P1758 = $P1754."!make"($P1757)
.return ($P1758)
@@ -21740,7 +22449,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>" :subid("95_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "circumfix:sym<( )>" :subid("95_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1763
.annotate 'line', 648
new $P1762, 'ExceptionHandler'
@@ -21753,13 +22462,13 @@
find_lex $P1764, "$/"
.annotate 'line', 650
find_lex $P1767, "$/"
- unless_null $P1767, vivify_530
+ unless_null $P1767, vivify_534
$P1767 = root_new ['parrot';'Hash']
- vivify_530:
+ vivify_534:
set $P1768, $P1767["EXPR"]
- unless_null $P1768, vivify_531
+ unless_null $P1768, vivify_535
new $P1768, "Undef"
- vivify_531:
+ vivify_535:
if $P1768, if_1766
.annotate 'line', 651
get_hll_global $P1773, ["PAST"], "Op"
@@ -21770,17 +22479,17 @@
goto if_1766_end
if_1766:
find_lex $P1769, "$/"
- unless_null $P1769, vivify_532
+ unless_null $P1769, vivify_536
$P1769 = root_new ['parrot';'Hash']
- vivify_532:
+ vivify_536:
set $P1770, $P1769["EXPR"]
- unless_null $P1770, vivify_533
+ unless_null $P1770, vivify_537
$P1770 = root_new ['parrot';'ResizablePMCArray']
- vivify_533:
+ vivify_537:
set $P1771, $P1770[0]
- unless_null $P1771, vivify_534
+ unless_null $P1771, vivify_538
new $P1771, "Undef"
- vivify_534:
+ vivify_538:
$P1772 = $P1771."ast"()
set $P1765, $P1772
if_1766_end:
@@ -21796,7 +22505,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>" :subid("96_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "circumfix:sym<[ ]>" :subid("96_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1781
.annotate 'line', 654
new $P1780, 'ExceptionHandler'
@@ -21812,13 +22521,13 @@
find_lex $P1783, "$past"
.annotate 'line', 656
find_lex $P1785, "$/"
- unless_null $P1785, vivify_535
+ unless_null $P1785, vivify_539
$P1785 = root_new ['parrot';'Hash']
- vivify_535:
+ vivify_539:
set $P1786, $P1785["EXPR"]
- unless_null $P1786, vivify_536
+ unless_null $P1786, vivify_540
new $P1786, "Undef"
- vivify_536:
+ vivify_540:
if $P1786, if_1784
.annotate 'line', 663
get_hll_global $P1798, ["PAST"], "Op"
@@ -21829,17 +22538,17 @@
if_1784:
.annotate 'line', 657
find_lex $P1787, "$/"
- unless_null $P1787, vivify_537
+ unless_null $P1787, vivify_541
$P1787 = root_new ['parrot';'Hash']
- vivify_537:
+ vivify_541:
set $P1788, $P1787["EXPR"]
- unless_null $P1788, vivify_538
+ unless_null $P1788, vivify_542
$P1788 = root_new ['parrot';'ResizablePMCArray']
- vivify_538:
+ vivify_542:
set $P1789, $P1788[0]
- unless_null $P1789, vivify_539
+ unless_null $P1789, vivify_543
new $P1789, "Undef"
- vivify_539:
+ vivify_543:
$P1790 = $P1789."ast"()
store_lex "$past", $P1790
.annotate 'line', 658
@@ -21872,7 +22581,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>" :subid("97_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "circumfix:sym<ang>" :subid("97_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1808
.annotate 'line', 669
new $P1807, 'ExceptionHandler'
@@ -21883,13 +22592,13 @@
.lex "$/", param_1808
find_lex $P1809, "$/"
find_lex $P1810, "$/"
- unless_null $P1810, vivify_540
+ unless_null $P1810, vivify_544
$P1810 = root_new ['parrot';'Hash']
- vivify_540:
+ vivify_544:
set $P1811, $P1810["quote_EXPR"]
- unless_null $P1811, vivify_541
+ unless_null $P1811, vivify_545
new $P1811, "Undef"
- vivify_541:
+ vivify_545:
$P1812 = $P1811."ast"()
$P1813 = $P1809."!make"($P1812)
.return ($P1813)
@@ -21902,7 +22611,7 @@
.namespace ["NQP";"Actions"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("98_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("98_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1818
.annotate 'line', 670
new $P1817, 'ExceptionHandler'
@@ -21913,13 +22622,13 @@
.lex "$/", param_1818
find_lex $P1819, "$/"
find_lex $P1820, "$/"
- unless_null $P1820, vivify_542
+ unless_null $P1820, vivify_546
$P1820 = root_new ['parrot';'Hash']
- vivify_542:
+ vivify_546:
set $P1821, $P1820["quote_EXPR"]
- unless_null $P1821, vivify_543
+ unless_null $P1821, vivify_547
new $P1821, "Undef"
- vivify_543:
+ vivify_547:
$P1822 = $P1821."ast"()
$P1823 = $P1819."!make"($P1822)
.return ($P1823)
@@ -21932,7 +22641,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>" :subid("99_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "circumfix:sym<{ }>" :subid("99_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1828
.annotate 'line', 672
new $P1827, 'ExceptionHandler'
@@ -21945,25 +22654,25 @@
new $P1829, "Undef"
.lex "$past", $P1829
find_lex $P1832, "$/"
- unless_null $P1832, vivify_544
+ unless_null $P1832, vivify_548
$P1832 = root_new ['parrot';'Hash']
- vivify_544:
+ vivify_548:
set $P1833, $P1832["pblock"]
- unless_null $P1833, vivify_545
+ unless_null $P1833, vivify_549
$P1833 = root_new ['parrot';'Hash']
- vivify_545:
+ vivify_549:
set $P1834, $P1833["blockoid"]
- unless_null $P1834, vivify_546
+ unless_null $P1834, vivify_550
$P1834 = root_new ['parrot';'Hash']
- vivify_546:
+ vivify_550:
set $P1835, $P1834["statementlist"]
- unless_null $P1835, vivify_547
+ unless_null $P1835, vivify_551
$P1835 = root_new ['parrot';'Hash']
- vivify_547:
+ vivify_551:
set $P1836, $P1835["statement"]
- unless_null $P1836, vivify_548
+ unless_null $P1836, vivify_552
new $P1836, "Undef"
- vivify_548:
+ vivify_552:
set $N1837, $P1836
isgt $I1838, $N1837, 0.0
if $I1838, if_1831
@@ -21975,13 +22684,13 @@
if_1831:
.annotate 'line', 674
find_lex $P1839, "$/"
- unless_null $P1839, vivify_549
+ unless_null $P1839, vivify_553
$P1839 = root_new ['parrot';'Hash']
- vivify_549:
+ vivify_553:
set $P1840, $P1839["pblock"]
- unless_null $P1840, vivify_550
+ unless_null $P1840, vivify_554
new $P1840, "Undef"
- vivify_550:
+ vivify_554:
$P1841 = $P1840."ast"()
set $P1830, $P1841
if_1831_end:
@@ -21990,10 +22699,10 @@
new $P1843, "Integer"
assign $P1843, 1
find_lex $P1844, "$past"
- unless_null $P1844, vivify_551
+ unless_null $P1844, vivify_555
$P1844 = root_new ['parrot';'Hash']
store_lex "$past", $P1844
- vivify_551:
+ vivify_555:
set $P1844["bareblock"], $P1843
.annotate 'line', 677
find_lex $P1845, "$/"
@@ -22010,7 +22719,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>" :subid("100_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "circumfix:sym<sigil>" :subid("100_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1852
.annotate 'line', 680
new $P1851, 'ExceptionHandler'
@@ -22023,25 +22732,25 @@
new $P1853, "Undef"
.lex "$name", $P1853
find_lex $P1856, "$/"
- unless_null $P1856, vivify_552
+ unless_null $P1856, vivify_556
$P1856 = root_new ['parrot';'Hash']
- vivify_552:
+ vivify_556:
set $P1857, $P1856["sigil"]
- unless_null $P1857, vivify_553
+ unless_null $P1857, vivify_557
new $P1857, "Undef"
- vivify_553:
+ vivify_557:
set $S1858, $P1857
iseq $I1859, $S1858, "@"
if $I1859, if_1855
.annotate 'line', 682
find_lex $P1863, "$/"
- unless_null $P1863, vivify_554
+ unless_null $P1863, vivify_558
$P1863 = root_new ['parrot';'Hash']
- vivify_554:
+ vivify_558:
set $P1864, $P1863["sigil"]
- unless_null $P1864, vivify_555
+ unless_null $P1864, vivify_559
new $P1864, "Undef"
- vivify_555:
+ vivify_559:
set $S1865, $P1864
iseq $I1866, $S1865, "%"
if $I1866, if_1862
@@ -22068,13 +22777,13 @@
get_hll_global $P1870, ["PAST"], "Op"
find_lex $P1871, "$name"
find_lex $P1872, "$/"
- unless_null $P1872, vivify_556
+ unless_null $P1872, vivify_560
$P1872 = root_new ['parrot';'Hash']
- vivify_556:
+ vivify_560:
set $P1873, $P1872["semilist"]
- unless_null $P1873, vivify_557
+ unless_null $P1873, vivify_561
new $P1873, "Undef"
- vivify_557:
+ vivify_561:
$P1874 = $P1873."ast"()
$P1875 = $P1870."new"($P1874, "callmethod" :named("pasttype"), $P1871 :named("name"))
$P1876 = $P1869."!make"($P1875)
@@ -22089,7 +22798,7 @@
.namespace ["NQP";"Actions"]
-.sub "semilist" :subid("101_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "semilist" :subid("101_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1881
.annotate 'line', 687
new $P1880, 'ExceptionHandler'
@@ -22100,13 +22809,13 @@
.lex "$/", param_1881
find_lex $P1882, "$/"
find_lex $P1883, "$/"
- unless_null $P1883, vivify_558
+ unless_null $P1883, vivify_562
$P1883 = root_new ['parrot';'Hash']
- vivify_558:
+ vivify_562:
set $P1884, $P1883["statement"]
- unless_null $P1884, vivify_559
+ unless_null $P1884, vivify_563
new $P1884, "Undef"
- vivify_559:
+ vivify_563:
$P1885 = $P1884."ast"()
$P1886 = $P1882."!make"($P1885)
.return ($P1886)
@@ -22119,7 +22828,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>" :subid("102_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "postcircumfix:sym<[ ]>" :subid("102_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1891
.annotate 'line', 689
new $P1890, 'ExceptionHandler'
@@ -22132,13 +22841,13 @@
find_lex $P1892, "$/"
get_hll_global $P1893, ["PAST"], "Var"
find_lex $P1894, "$/"
- unless_null $P1894, vivify_560
+ unless_null $P1894, vivify_564
$P1894 = root_new ['parrot';'Hash']
- vivify_560:
+ vivify_564:
set $P1895, $P1894["EXPR"]
- unless_null $P1895, vivify_561
+ unless_null $P1895, vivify_565
new $P1895, "Undef"
- vivify_561:
+ vivify_565:
$P1896 = $P1895."ast"()
.annotate 'line', 692
$P1897 = "vivitype"("@")
@@ -22156,7 +22865,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>" :subid("103_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "postcircumfix:sym<{ }>" :subid("103_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1904
.annotate 'line', 695
new $P1903, 'ExceptionHandler'
@@ -22169,13 +22878,13 @@
find_lex $P1905, "$/"
get_hll_global $P1906, ["PAST"], "Var"
find_lex $P1907, "$/"
- unless_null $P1907, vivify_562
+ unless_null $P1907, vivify_566
$P1907 = root_new ['parrot';'Hash']
- vivify_562:
+ vivify_566:
set $P1908, $P1907["EXPR"]
- unless_null $P1908, vivify_563
+ unless_null $P1908, vivify_567
new $P1908, "Undef"
- vivify_563:
+ vivify_567:
$P1909 = $P1908."ast"()
.annotate 'line', 698
$P1910 = "vivitype"("%")
@@ -22193,7 +22902,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>" :subid("104_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "postcircumfix:sym<ang>" :subid("104_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1917
.annotate 'line', 701
new $P1916, 'ExceptionHandler'
@@ -22206,13 +22915,13 @@
find_lex $P1918, "$/"
get_hll_global $P1919, ["PAST"], "Var"
find_lex $P1920, "$/"
- unless_null $P1920, vivify_564
+ unless_null $P1920, vivify_568
$P1920 = root_new ['parrot';'Hash']
- vivify_564:
+ vivify_568:
set $P1921, $P1920["quote_EXPR"]
- unless_null $P1921, vivify_565
+ unless_null $P1921, vivify_569
new $P1921, "Undef"
- vivify_565:
+ vivify_569:
$P1922 = $P1921."ast"()
.annotate 'line', 704
$P1923 = "vivitype"("%")
@@ -22230,7 +22939,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>" :subid("105_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "postcircumfix:sym<( )>" :subid("105_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1930
.annotate 'line', 707
new $P1929, 'ExceptionHandler'
@@ -22242,13 +22951,13 @@
.annotate 'line', 708
find_lex $P1931, "$/"
find_lex $P1932, "$/"
- unless_null $P1932, vivify_566
+ unless_null $P1932, vivify_570
$P1932 = root_new ['parrot';'Hash']
- vivify_566:
+ vivify_570:
set $P1933, $P1932["arglist"]
- unless_null $P1933, vivify_567
+ unless_null $P1933, vivify_571
new $P1933, "Undef"
- vivify_567:
+ vivify_571:
$P1934 = $P1933."ast"()
$P1935 = $P1931."!make"($P1934)
.annotate 'line', 707
@@ -22262,7 +22971,7 @@
.namespace ["NQP";"Actions"]
-.sub "value" :subid("106_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "value" :subid("106_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1940
.annotate 'line', 711
new $P1939, 'ExceptionHandler'
@@ -22274,34 +22983,34 @@
.annotate 'line', 712
find_lex $P1941, "$/"
find_lex $P1944, "$/"
- unless_null $P1944, vivify_568
+ unless_null $P1944, vivify_572
$P1944 = root_new ['parrot';'Hash']
- vivify_568:
+ vivify_572:
set $P1945, $P1944["quote"]
- unless_null $P1945, vivify_569
+ unless_null $P1945, vivify_573
new $P1945, "Undef"
- vivify_569:
+ vivify_573:
if $P1945, if_1943
find_lex $P1949, "$/"
- unless_null $P1949, vivify_570
+ unless_null $P1949, vivify_574
$P1949 = root_new ['parrot';'Hash']
- vivify_570:
+ vivify_574:
set $P1950, $P1949["number"]
- unless_null $P1950, vivify_571
+ unless_null $P1950, vivify_575
new $P1950, "Undef"
- vivify_571:
+ vivify_575:
$P1951 = $P1950."ast"()
set $P1942, $P1951
goto if_1943_end
if_1943:
find_lex $P1946, "$/"
- unless_null $P1946, vivify_572
+ unless_null $P1946, vivify_576
$P1946 = root_new ['parrot';'Hash']
- vivify_572:
+ vivify_576:
set $P1947, $P1946["quote"]
- unless_null $P1947, vivify_573
+ unless_null $P1947, vivify_577
new $P1947, "Undef"
- vivify_573:
+ vivify_577:
$P1948 = $P1947."ast"()
set $P1942, $P1948
if_1943_end:
@@ -22317,7 +23026,7 @@
.namespace ["NQP";"Actions"]
-.sub "number" :subid("107_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "number" :subid("107_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1957
.annotate 'line', 715
new $P1956, 'ExceptionHandler'
@@ -22330,47 +23039,47 @@
new $P1958, "Undef"
.lex "$value", $P1958
find_lex $P1961, "$/"
- unless_null $P1961, vivify_574
+ unless_null $P1961, vivify_578
$P1961 = root_new ['parrot';'Hash']
- vivify_574:
+ vivify_578:
set $P1962, $P1961["dec_number"]
- unless_null $P1962, vivify_575
+ unless_null $P1962, vivify_579
new $P1962, "Undef"
- vivify_575:
+ vivify_579:
if $P1962, if_1960
find_lex $P1966, "$/"
- unless_null $P1966, vivify_576
+ unless_null $P1966, vivify_580
$P1966 = root_new ['parrot';'Hash']
- vivify_576:
+ vivify_580:
set $P1967, $P1966["integer"]
- unless_null $P1967, vivify_577
+ unless_null $P1967, vivify_581
new $P1967, "Undef"
- vivify_577:
+ vivify_581:
$P1968 = $P1967."ast"()
set $P1959, $P1968
goto if_1960_end
if_1960:
find_lex $P1963, "$/"
- unless_null $P1963, vivify_578
+ unless_null $P1963, vivify_582
$P1963 = root_new ['parrot';'Hash']
- vivify_578:
+ vivify_582:
set $P1964, $P1963["dec_number"]
- unless_null $P1964, vivify_579
+ unless_null $P1964, vivify_583
new $P1964, "Undef"
- vivify_579:
+ vivify_583:
$P1965 = $P1964."ast"()
set $P1959, $P1965
if_1960_end:
store_lex "$value", $P1959
.annotate 'line', 717
find_lex $P1970, "$/"
- unless_null $P1970, vivify_580
+ unless_null $P1970, vivify_584
$P1970 = root_new ['parrot';'Hash']
- vivify_580:
+ vivify_584:
set $P1971, $P1970["sign"]
- unless_null $P1971, vivify_581
+ unless_null $P1971, vivify_585
new $P1971, "Undef"
- vivify_581:
+ vivify_585:
set $S1972, $P1971
iseq $I1973, $S1972, "-"
unless $I1973, if_1969_end
@@ -22395,7 +23104,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>" :subid("108_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote:sym<apos>" :subid("108_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1985
.annotate 'line', 721
new $P1984, 'ExceptionHandler'
@@ -22406,13 +23115,13 @@
.lex "$/", param_1985
find_lex $P1986, "$/"
find_lex $P1987, "$/"
- unless_null $P1987, vivify_582
+ unless_null $P1987, vivify_586
$P1987 = root_new ['parrot';'Hash']
- vivify_582:
+ vivify_586:
set $P1988, $P1987["quote_EXPR"]
- unless_null $P1988, vivify_583
+ unless_null $P1988, vivify_587
new $P1988, "Undef"
- vivify_583:
+ vivify_587:
$P1989 = $P1988."ast"()
$P1990 = $P1986."!make"($P1989)
.return ($P1990)
@@ -22425,7 +23134,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>" :subid("109_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote:sym<dblq>" :subid("109_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_1995
.annotate 'line', 722
new $P1994, 'ExceptionHandler'
@@ -22436,13 +23145,13 @@
.lex "$/", param_1995
find_lex $P1996, "$/"
find_lex $P1997, "$/"
- unless_null $P1997, vivify_584
+ unless_null $P1997, vivify_588
$P1997 = root_new ['parrot';'Hash']
- vivify_584:
+ vivify_588:
set $P1998, $P1997["quote_EXPR"]
- unless_null $P1998, vivify_585
+ unless_null $P1998, vivify_589
new $P1998, "Undef"
- vivify_585:
+ vivify_589:
$P1999 = $P1998."ast"()
$P2000 = $P1996."!make"($P1999)
.return ($P2000)
@@ -22455,7 +23164,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>" :subid("110_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote:sym<qq>" :subid("110_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2005
.annotate 'line', 723
new $P2004, 'ExceptionHandler'
@@ -22466,13 +23175,13 @@
.lex "$/", param_2005
find_lex $P2006, "$/"
find_lex $P2007, "$/"
- unless_null $P2007, vivify_586
+ unless_null $P2007, vivify_590
$P2007 = root_new ['parrot';'Hash']
- vivify_586:
+ vivify_590:
set $P2008, $P2007["quote_EXPR"]
- unless_null $P2008, vivify_587
+ unless_null $P2008, vivify_591
new $P2008, "Undef"
- vivify_587:
+ vivify_591:
$P2009 = $P2008."ast"()
$P2010 = $P2006."!make"($P2009)
.return ($P2010)
@@ -22485,7 +23194,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<q>" :subid("111_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote:sym<q>" :subid("111_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2015
.annotate 'line', 724
new $P2014, 'ExceptionHandler'
@@ -22496,13 +23205,13 @@
.lex "$/", param_2015
find_lex $P2016, "$/"
find_lex $P2017, "$/"
- unless_null $P2017, vivify_588
+ unless_null $P2017, vivify_592
$P2017 = root_new ['parrot';'Hash']
- vivify_588:
+ vivify_592:
set $P2018, $P2017["quote_EXPR"]
- unless_null $P2018, vivify_589
+ unless_null $P2018, vivify_593
new $P2018, "Undef"
- vivify_589:
+ vivify_593:
$P2019 = $P2018."ast"()
$P2020 = $P2016."!make"($P2019)
.return ($P2020)
@@ -22515,7 +23224,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>" :subid("112_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote:sym<Q>" :subid("112_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2025
.annotate 'line', 725
new $P2024, 'ExceptionHandler'
@@ -22526,13 +23235,13 @@
.lex "$/", param_2025
find_lex $P2026, "$/"
find_lex $P2027, "$/"
- unless_null $P2027, vivify_590
+ unless_null $P2027, vivify_594
$P2027 = root_new ['parrot';'Hash']
- vivify_590:
+ vivify_594:
set $P2028, $P2027["quote_EXPR"]
- unless_null $P2028, vivify_591
+ unless_null $P2028, vivify_595
new $P2028, "Undef"
- vivify_591:
+ vivify_595:
$P2029 = $P2028."ast"()
$P2030 = $P2026."!make"($P2029)
.return ($P2030)
@@ -22545,7 +23254,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>" :subid("113_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote:sym<Q:PIR>" :subid("113_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2035
.annotate 'line', 726
new $P2034, 'ExceptionHandler'
@@ -22558,13 +23267,13 @@
find_lex $P2036, "$/"
get_hll_global $P2037, ["PAST"], "Op"
find_lex $P2038, "$/"
- unless_null $P2038, vivify_592
+ unless_null $P2038, vivify_596
$P2038 = root_new ['parrot';'Hash']
- vivify_592:
+ vivify_596:
set $P2039, $P2038["quote_EXPR"]
- unless_null $P2039, vivify_593
+ unless_null $P2039, vivify_597
new $P2039, "Undef"
- vivify_593:
+ vivify_597:
$P2040 = $P2039."ast"()
$P2041 = $P2040."value"()
find_lex $P2042, "$/"
@@ -22581,7 +23290,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym</ />" :subid("114_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote:sym</ />" :subid("114_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2049
.param pmc param_2050 :optional
.param int has_param_2050 :opt_flag
@@ -22592,10 +23301,10 @@
push_eh $P2048
.lex "self", self
.lex "$/", param_2049
- if has_param_2050, optparam_594
+ if has_param_2050, optparam_598
new $P2051, "Undef"
set param_2050, $P2051
- optparam_594:
+ optparam_598:
.lex "$key", param_2050
.annotate 'line', 742
new $P2052, "Undef"
@@ -22615,23 +23324,23 @@
.annotate 'line', 738
get_global $P2058, "@BLOCK"
- unless_null $P2058, vivify_595
+ unless_null $P2058, vivify_599
$P2058 = root_new ['parrot';'ResizablePMCArray']
- vivify_595:
+ vivify_599:
set $P2059, $P2058[0]
- unless_null $P2059, vivify_596
+ unless_null $P2059, vivify_600
new $P2059, "Undef"
- vivify_596:
+ vivify_600:
$P2059."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
.annotate 'line', 739
get_global $P2060, "@BLOCK"
- unless_null $P2060, vivify_597
+ unless_null $P2060, vivify_601
$P2060 = root_new ['parrot';'ResizablePMCArray']
- vivify_597:
+ vivify_601:
set $P2061, $P2060[0]
- unless_null $P2061, vivify_598
+ unless_null $P2061, vivify_602
new $P2061, "Undef"
- vivify_598:
+ vivify_602:
$P2061."symbol"("$/", "lexical" :named("scope"))
.annotate 'line', 740
new $P2062, "Exception"
@@ -22644,13 +23353,13 @@
.annotate 'line', 743
get_hll_global $P2064, ["Regex";"P6Regex";"Actions"], "buildsub"
find_lex $P2065, "$/"
- unless_null $P2065, vivify_599
+ unless_null $P2065, vivify_603
$P2065 = root_new ['parrot';'Hash']
- vivify_599:
+ vivify_603:
set $P2066, $P2065["p6regex"]
- unless_null $P2066, vivify_600
+ unless_null $P2066, vivify_604
new $P2066, "Undef"
- vivify_600:
+ vivify_604:
$P2067 = $P2066."ast"()
get_global $P2068, "@BLOCK"
$P2069 = $P2068."shift"()
@@ -22670,10 +23379,10 @@
.annotate 'line', 751
find_lex $P2077, "$regex"
find_lex $P2078, "$past"
- unless_null $P2078, vivify_601
+ unless_null $P2078, vivify_605
$P2078 = root_new ['parrot';'Hash']
store_lex "$past", $P2078
- vivify_601:
+ vivify_605:
set $P2078["sink"], $P2077
.annotate 'line', 752
find_lex $P2079, "$/"
@@ -22690,7 +23399,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>" :subid("115_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote_escape:sym<$>" :subid("115_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2086
.annotate 'line', 755
new $P2085, 'ExceptionHandler'
@@ -22701,13 +23410,13 @@
.lex "$/", param_2086
find_lex $P2087, "$/"
find_lex $P2088, "$/"
- unless_null $P2088, vivify_602
+ unless_null $P2088, vivify_606
$P2088 = root_new ['parrot';'Hash']
- vivify_602:
+ vivify_606:
set $P2089, $P2088["variable"]
- unless_null $P2089, vivify_603
+ unless_null $P2089, vivify_607
new $P2089, "Undef"
- vivify_603:
+ vivify_607:
$P2090 = $P2089."ast"()
$P2091 = $P2087."!make"($P2090)
.return ($P2091)
@@ -22720,7 +23429,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>" :subid("116_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote_escape:sym<{ }>" :subid("116_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2096
.annotate 'line', 756
new $P2095, 'ExceptionHandler'
@@ -22734,13 +23443,13 @@
get_hll_global $P2098, ["PAST"], "Op"
.annotate 'line', 758
find_lex $P2099, "$/"
- unless_null $P2099, vivify_604
+ unless_null $P2099, vivify_608
$P2099 = root_new ['parrot';'Hash']
- vivify_604:
+ vivify_608:
set $P2100, $P2099["block"]
- unless_null $P2100, vivify_605
+ unless_null $P2100, vivify_609
new $P2100, "Undef"
- vivify_605:
+ vivify_609:
$P2101 = $P2100."ast"()
$P2102 = "block_immediate"($P2101)
find_lex $P2103, "$/"
@@ -22758,7 +23467,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<esc>" :subid("117_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "quote_escape:sym<esc>" :subid("117_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2110
.annotate 'line', 761
new $P2109, 'ExceptionHandler'
@@ -22779,7 +23488,7 @@
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>" :subid("118_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "postfix:sym<.>" :subid("118_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2117
.annotate 'line', 765
new $P2116, 'ExceptionHandler'
@@ -22790,13 +23499,13 @@
.lex "$/", param_2117
find_lex $P2118, "$/"
find_lex $P2119, "$/"
- unless_null $P2119, vivify_606
+ unless_null $P2119, vivify_610
$P2119 = root_new ['parrot';'Hash']
- vivify_606:
+ vivify_610:
set $P2120, $P2119["dotty"]
- unless_null $P2120, vivify_607
+ unless_null $P2120, vivify_611
new $P2120, "Undef"
- vivify_607:
+ vivify_611:
$P2121 = $P2120."ast"()
$P2122 = $P2118."!make"($P2121)
.return ($P2122)
@@ -22809,7 +23518,7 @@
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>" :subid("119_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "postfix:sym<++>" :subid("119_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2127
.annotate 'line', 767
new $P2126, 'ExceptionHandler'
@@ -22839,7 +23548,7 @@
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->" :subid("120_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "postfix:sym<-->" :subid("120_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2137
.annotate 'line', 773
new $P2136, 'ExceptionHandler'
@@ -22869,7 +23578,7 @@
.namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>" :subid("121_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "prefix:sym<make>" :subid("121_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2147
.annotate 'line', 779
new $P2146, 'ExceptionHandler'
@@ -22899,7 +23608,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<next>" :subid("122_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<next>" :subid("122_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2160
.annotate 'line', 801
new $P2159, 'ExceptionHandler'
@@ -22920,7 +23629,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<last>" :subid("123_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<last>" :subid("123_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2167
.annotate 'line', 802
new $P2166, 'ExceptionHandler'
@@ -22941,7 +23650,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<redo>" :subid("124_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "term:sym<redo>" :subid("124_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2174
.annotate 'line', 803
new $P2173, 'ExceptionHandler'
@@ -22962,7 +23671,7 @@
.namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>" :subid("125_1274022903.56472") :method :outer("11_1274022903.56472")
+.sub "infix:sym<~~>" :subid("125_1274564782.90592") :method :outer("11_1274564782.90592")
.param pmc param_2181
.annotate 'line', 805
new $P2180, 'ExceptionHandler'
@@ -22988,206 +23697,526 @@
.namespace ["NQP";"RegexActions"]
-.sub "_block2188" :subid("126_1274022903.56472") :outer("11_1274022903.56472")
+.sub "_block2188" :subid("126_1274564782.90592") :outer("11_1274564782.90592")
.annotate 'line', 810
- .const 'Sub' $P2224 = "130_1274022903.56472"
- capture_lex $P2224
- .const 'Sub' $P2214 = "129_1274022903.56472"
- capture_lex $P2214
- .const 'Sub' $P2204 = "128_1274022903.56472"
- capture_lex $P2204
- .const 'Sub' $P2190 = "127_1274022903.56472"
+ .const 'Sub' $P2345 = "134_1274564782.90592"
+ capture_lex $P2345
+ .const 'Sub' $P2332 = "133_1274564782.90592"
+ capture_lex $P2332
+ .const 'Sub' $P2319 = "132_1274564782.90592"
+ capture_lex $P2319
+ .const 'Sub' $P2306 = "131_1274564782.90592"
+ capture_lex $P2306
+ .const 'Sub' $P2221 = "129_1274564782.90592"
+ capture_lex $P2221
+ .const 'Sub' $P2207 = "128_1274564782.90592"
+ capture_lex $P2207
+ .const 'Sub' $P2190 = "127_1274564782.90592"
capture_lex $P2190
-.annotate 'line', 821
- .const 'Sub' $P2224 = "130_1274022903.56472"
- newclosure $P2251, $P2224
+.annotate 'line', 870
+ .const 'Sub' $P2190 = "127_1274564782.90592"
+ newclosure $P2206, $P2190
+ .lex "bindmatch", $P2206
+.annotate 'line', 864
+ find_lex $P2359, "bindmatch"
.annotate 'line', 810
- .return ($P2251)
+ .return ($P2359)
.end
.namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>" :subid("127_1274022903.56472") :method :outer("126_1274022903.56472")
+.sub "bindmatch" :subid("127_1274564782.90592") :outer("126_1274564782.90592")
.param pmc param_2193
-.annotate 'line', 812
+.annotate 'line', 870
new $P2192, 'ExceptionHandler'
set_addr $P2192, control_2191
$P2192."handle_types"(57)
push_eh $P2192
- .lex "self", self
- .lex "$/", param_2193
-.annotate 'line', 813
- new $P2194, "Undef"
- .lex "$past", $P2194
- find_lex $P2195, "$/"
- unless_null $P2195, vivify_608
- $P2195 = root_new ['parrot';'Hash']
- vivify_608:
- set $P2196, $P2195["statement"]
- unless_null $P2196, vivify_609
- new $P2196, "Undef"
- vivify_609:
- $P2197 = $P2196."ast"()
- store_lex "$past", $P2197
-.annotate 'line', 814
- find_lex $P2198, "$/"
- get_hll_global $P2199, ["PAST"], "Regex"
- find_lex $P2200, "$past"
- $P2201 = $P2199."new"($P2200, "pastnode" :named("pasttype"))
- $P2202 = $P2198."!make"($P2201)
-.annotate 'line', 812
- .return ($P2202)
+ .lex "$past", param_2193
+.annotate 'line', 871
+ get_hll_global $P2194, ["PAST"], "Stmts"
+.annotate 'line', 872
+ get_hll_global $P2195, ["PAST"], "Op"
+.annotate 'line', 873
+ get_hll_global $P2196, ["PAST"], "Var"
+ $P2197 = $P2196."new"("$/" :named("name"))
+.annotate 'line', 874
+ get_hll_global $P2198, ["PAST"], "Op"
+.annotate 'line', 875
+ get_hll_global $P2199, ["PAST"], "Var"
+ $P2200 = $P2199."new"(unicode:"$\x{a2}" :named("name"))
+ $P2201 = $P2198."new"($P2200, "MATCH" :named("name"), "callmethod" :named("pasttype"))
+.annotate 'line', 874
+ $P2202 = $P2195."new"($P2197, $P2201, "bind" :named("pasttype"))
+.annotate 'line', 872
+ find_lex $P2203, "$past"
+ $P2204 = $P2194."new"($P2202, $P2203)
+.annotate 'line', 870
+ .return ($P2204)
control_2191:
.local pmc exception
.get_results (exception)
- getattribute $P2203, exception, "payload"
- .return ($P2203)
-.end
-
-
-.namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>" :subid("128_1274022903.56472") :method :outer("126_1274022903.56472")
- .param pmc param_2207
-.annotate 'line', 817
- new $P2206, 'ExceptionHandler'
- set_addr $P2206, control_2205
- $P2206."handle_types"(57)
- push_eh $P2206
- .lex "self", self
- .lex "$/", param_2207
- find_lex $P2208, "$/"
- find_lex $P2209, "$/"
- unless_null $P2209, vivify_610
- $P2209 = root_new ['parrot';'Hash']
- vivify_610:
- set $P2210, $P2209["codeblock"]
- unless_null $P2210, vivify_611
- new $P2210, "Undef"
- vivify_611:
- $P2211 = $P2210."ast"()
- $P2212 = $P2208."!make"($P2211)
- .return ($P2212)
- control_2205:
- .local pmc exception
- .get_results (exception)
- getattribute $P2213, exception, "payload"
- .return ($P2213)
+ getattribute $P2205, exception, "payload"
+ .return ($P2205)
.end
.namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>" :subid("129_1274022903.56472") :method :outer("126_1274022903.56472")
- .param pmc param_2217
-.annotate 'line', 819
- new $P2216, 'ExceptionHandler'
- set_addr $P2216, control_2215
- $P2216."handle_types"(57)
- push_eh $P2216
- .lex "self", self
- .lex "$/", param_2217
- find_lex $P2218, "$/"
- find_lex $P2219, "$/"
- unless_null $P2219, vivify_612
- $P2219 = root_new ['parrot';'Hash']
+.sub "metachar:sym<:my>" :subid("128_1274564782.90592") :method :outer("126_1274564782.90592")
+ .param pmc param_2210
+.annotate 'line', 812
+ new $P2209, 'ExceptionHandler'
+ set_addr $P2209, control_2208
+ $P2209."handle_types"(57)
+ push_eh $P2209
+ .lex "self", self
+ .lex "$/", param_2210
+.annotate 'line', 813
+ new $P2211, "Undef"
+ .lex "$past", $P2211
+ find_lex $P2212, "$/"
+ unless_null $P2212, vivify_612
+ $P2212 = root_new ['parrot';'Hash']
vivify_612:
- set $P2220, $P2219["codeblock"]
- unless_null $P2220, vivify_613
- new $P2220, "Undef"
+ set $P2213, $P2212["statement"]
+ unless_null $P2213, vivify_613
+ new $P2213, "Undef"
vivify_613:
- $P2221 = $P2220."ast"()
- $P2222 = $P2218."!make"($P2221)
- .return ($P2222)
- control_2215:
+ $P2214 = $P2213."ast"()
+ store_lex "$past", $P2214
+.annotate 'line', 814
+ find_lex $P2215, "$/"
+ get_hll_global $P2216, ["PAST"], "Regex"
+ find_lex $P2217, "$past"
+ $P2218 = $P2216."new"($P2217, "pastnode" :named("pasttype"))
+ $P2219 = $P2215."!make"($P2218)
+.annotate 'line', 812
+ .return ($P2219)
+ control_2208:
.local pmc exception
.get_results (exception)
- getattribute $P2223, exception, "payload"
- .return ($P2223)
+ getattribute $P2220, exception, "payload"
+ .return ($P2220)
.end
.namespace ["NQP";"RegexActions"]
-.sub "codeblock" :subid("130_1274022903.56472") :method :outer("126_1274022903.56472")
- .param pmc param_2227
-.annotate 'line', 821
- new $P2226, 'ExceptionHandler'
- set_addr $P2226, control_2225
- $P2226."handle_types"(57)
- push_eh $P2226
- .lex "self", self
- .lex "$/", param_2227
-.annotate 'line', 822
- new $P2228, "Undef"
- .lex "$block", $P2228
-.annotate 'line', 824
- new $P2229, "Undef"
- .lex "$past", $P2229
-.annotate 'line', 822
+.sub "metachar:sym<var>" :subid("129_1274564782.90592") :method :outer("126_1274564782.90592")
+ .param pmc param_2224
+.annotate 'line', 817
+ .const 'Sub' $P2280 = "130_1274564782.90592"
+ capture_lex $P2280
+ new $P2223, 'ExceptionHandler'
+ set_addr $P2223, control_2222
+ $P2223."handle_types"(57)
+ push_eh $P2223
+ .lex "self", self
+ .lex "$/", param_2224
+.annotate 'line', 818
+ new $P2225, "Undef"
+ .lex "$past", $P2225
+.annotate 'line', 819
+ new $P2226, "Undef"
+ .lex "$name", $P2226
+.annotate 'line', 817
+ find_lex $P2227, "$past"
+.annotate 'line', 819
find_lex $P2230, "$/"
unless_null $P2230, vivify_614
$P2230 = root_new ['parrot';'Hash']
vivify_614:
- set $P2231, $P2230["block"]
+ set $P2231, $P2230["pos"]
unless_null $P2231, vivify_615
new $P2231, "Undef"
vivify_615:
- $P2232 = $P2231."ast"()
- store_lex "$block", $P2232
-.annotate 'line', 823
- find_lex $P2233, "$block"
- $P2233."blocktype"("immediate")
+ if $P2231, if_2229
+ find_lex $P2235, "$/"
+ unless_null $P2235, vivify_616
+ $P2235 = root_new ['parrot';'Hash']
+ vivify_616:
+ set $P2236, $P2235["name"]
+ unless_null $P2236, vivify_617
+ new $P2236, "Undef"
+ vivify_617:
+ set $S2237, $P2236
+ new $P2228, 'String'
+ set $P2228, $S2237
+ goto if_2229_end
+ if_2229:
+ find_lex $P2232, "$/"
+ unless_null $P2232, vivify_618
+ $P2232 = root_new ['parrot';'Hash']
+ vivify_618:
+ set $P2233, $P2232["pos"]
+ unless_null $P2233, vivify_619
+ new $P2233, "Undef"
+ vivify_619:
+ set $N2234, $P2233
+ new $P2228, 'Float'
+ set $P2228, $N2234
+ if_2229_end:
+ store_lex "$name", $P2228
+.annotate 'line', 820
+ find_lex $P2239, "$/"
+ unless_null $P2239, vivify_620
+ $P2239 = root_new ['parrot';'Hash']
+ vivify_620:
+ set $P2240, $P2239["quantified_atom"]
+ unless_null $P2240, vivify_621
+ new $P2240, "Undef"
+ vivify_621:
+ if $P2240, if_2238
+.annotate 'line', 834
+ find_lex $P2277, "$/"
+ unless_null $P2277, vivify_622
+ $P2277 = root_new ['parrot';'Hash']
+ vivify_622:
+ set $P2278, $P2277["var"]
+ unless_null $P2278, vivify_623
+ new $P2278, "Undef"
+ vivify_623:
+ if $P2278, if_2276
+.annotate 'line', 842
+ get_hll_global $P2298, ["PAST"], "Regex"
+ find_lex $P2299, "$name"
+ find_lex $P2300, "$/"
+ $P2301 = $P2298."new"("!BACKREF", $P2299, "subrule" :named("pasttype"), "method" :named("subtype"), $P2300 :named("node"))
+ store_lex "$past", $P2301
+.annotate 'line', 841
+ goto if_2276_end
+ if_2276:
+.annotate 'line', 834
+ .const 'Sub' $P2280 = "130_1274564782.90592"
+ capture_lex $P2280
+ $P2280()
+ if_2276_end:
+.annotate 'line', 833
+ goto if_2238_end
+ if_2238:
+.annotate 'line', 821
+ find_lex $P2242, "$/"
+ unless_null $P2242, vivify_629
+ $P2242 = root_new ['parrot';'Hash']
+ vivify_629:
+ set $P2243, $P2242["var"]
+ unless_null $P2243, vivify_630
+ new $P2243, "Undef"
+ vivify_630:
+ unless $P2243, if_2241_end
+.annotate 'line', 822
+ find_lex $P2244, "$/"
+ $P2245 = $P2244."CURSOR"()
+ $P2245."panic"("\"$var = \" syntax not yet supported in regexes")
+ if_2241_end:
+.annotate 'line', 824
+ find_lex $P2246, "$/"
+ unless_null $P2246, vivify_631
+ $P2246 = root_new ['parrot';'Hash']
+ vivify_631:
+ set $P2247, $P2246["quantified_atom"]
+ unless_null $P2247, vivify_632
+ $P2247 = root_new ['parrot';'ResizablePMCArray']
+ vivify_632:
+ set $P2248, $P2247[0]
+ unless_null $P2248, vivify_633
+ new $P2248, "Undef"
+ vivify_633:
+ $P2249 = $P2248."ast"()
+ store_lex "$past", $P2249
.annotate 'line', 825
- get_hll_global $P2234, ["PAST"], "Regex"
-.annotate 'line', 826
- get_hll_global $P2235, ["PAST"], "Stmts"
-.annotate 'line', 827
- get_hll_global $P2236, ["PAST"], "Op"
+ find_lex $P2253, "$past"
+ $S2254 = $P2253."pasttype"()
+ iseq $I2255, $S2254, "quant"
+ if $I2255, if_2252
+ new $P2251, 'Integer'
+ set $P2251, $I2255
+ goto if_2252_end
+ if_2252:
+ find_lex $P2256, "$past"
+ unless_null $P2256, vivify_634
+ $P2256 = root_new ['parrot';'ResizablePMCArray']
+ vivify_634:
+ set $P2257, $P2256[0]
+ unless_null $P2257, vivify_635
+ new $P2257, "Undef"
+ vivify_635:
+ $S2258 = $P2257."pasttype"()
+ iseq $I2259, $S2258, "subrule"
+ new $P2251, 'Integer'
+ set $P2251, $I2259
+ if_2252_end:
+ if $P2251, if_2250
.annotate 'line', 828
- get_hll_global $P2237, ["PAST"], "Var"
- $P2238 = $P2237."new"("$/" :named("name"))
-.annotate 'line', 829
- get_hll_global $P2239, ["PAST"], "Op"
+ find_lex $P2265, "$past"
+ $S2266 = $P2265."pasttype"()
+ iseq $I2267, $S2266, "subrule"
+ if $I2267, if_2264
.annotate 'line', 830
- get_hll_global $P2240, ["PAST"], "Var"
- $P2241 = $P2240."new"(unicode:"$\x{a2}" :named("name"))
- $P2242 = $P2239."new"($P2241, "MATCH" :named("name"), "callmethod" :named("pasttype"))
+ get_hll_global $P2271, ["PAST"], "Regex"
+ find_lex $P2272, "$past"
+ find_lex $P2273, "$name"
+ find_lex $P2274, "$/"
+ $P2275 = $P2271."new"($P2272, $P2273 :named("name"), "subcapture" :named("pasttype"), $P2274 :named("node"))
+ store_lex "$past", $P2275
.annotate 'line', 829
- $P2243 = $P2236."new"($P2238, $P2242, "bind" :named("pasttype"))
-.annotate 'line', 827
- find_lex $P2244, "$block"
- $P2245 = $P2235."new"($P2243, $P2244)
+ goto if_2264_end
+ if_2264:
+.annotate 'line', 828
+ get_hll_global $P2268, ["Regex";"P6Regex";"Actions"], "subrule_alias"
+ find_lex $P2269, "$past"
+ find_lex $P2270, "$name"
+ $P2268($P2269, $P2270)
+ if_2264_end:
+ goto if_2250_end
+ if_2250:
.annotate 'line', 826
- $P2246 = $P2234."new"($P2245, "pastnode" :named("pasttype"))
-.annotate 'line', 825
- store_lex "$past", $P2246
-.annotate 'line', 840
- find_lex $P2247, "$/"
- find_lex $P2248, "$past"
- $P2249 = $P2247."!make"($P2248)
-.annotate 'line', 821
- .return ($P2249)
- control_2225:
+ get_hll_global $P2260, ["Regex";"P6Regex";"Actions"], "subrule_alias"
+ find_lex $P2261, "$past"
+ unless_null $P2261, vivify_636
+ $P2261 = root_new ['parrot';'ResizablePMCArray']
+ vivify_636:
+ set $P2262, $P2261[0]
+ unless_null $P2262, vivify_637
+ new $P2262, "Undef"
+ vivify_637:
+ find_lex $P2263, "$name"
+ $P2260($P2262, $P2263)
+ if_2250_end:
+ if_2238_end:
+.annotate 'line', 846
+ find_lex $P2302, "$/"
+ find_lex $P2303, "$past"
+ $P2304 = $P2302."!make"($P2303)
+.annotate 'line', 817
+ .return ($P2304)
+ control_2222:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P2305, exception, "payload"
+ .return ($P2305)
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "_block2279" :anon :subid("130_1274564782.90592") :outer("129_1274564782.90592")
+.annotate 'line', 835
+ $P2281 = root_new ['parrot';'ResizablePMCArray']
+ .lex "@MODIFIERS", $P2281
+.annotate 'line', 838
+ new $P2282, "Undef"
+ .lex "$subtype", $P2282
+.annotate 'line', 835
+
+ $P2283 = get_hll_global ['Regex';'P6Regex';'Actions'], '@MODIFIERS'
+
+ store_lex "@MODIFIERS", $P2283
+.annotate 'line', 838
+ find_lex $P2286, "@MODIFIERS"
+ unless_null $P2286, vivify_624
+ $P2286 = root_new ['parrot';'ResizablePMCArray']
+ vivify_624:
+ set $P2287, $P2286[0]
+ unless_null $P2287, vivify_625
+ $P2287 = root_new ['parrot';'Hash']
+ vivify_625:
+ set $P2288, $P2287["i"]
+ unless_null $P2288, vivify_626
+ new $P2288, "Undef"
+ vivify_626:
+ if $P2288, if_2285
+ new $P2290, "String"
+ assign $P2290, "interp_literal"
+ set $P2284, $P2290
+ goto if_2285_end
+ if_2285:
+ new $P2289, "String"
+ assign $P2289, "interp_literal_i"
+ set $P2284, $P2289
+ if_2285_end:
+ store_lex "$subtype", $P2284
+.annotate 'line', 839
+ get_hll_global $P2291, ["PAST"], "Regex"
+ find_lex $P2292, "$/"
+ unless_null $P2292, vivify_627
+ $P2292 = root_new ['parrot';'Hash']
+ vivify_627:
+ set $P2293, $P2292["var"]
+ unless_null $P2293, vivify_628
+ new $P2293, "Undef"
+ vivify_628:
+ $P2294 = $P2293."ast"()
+ find_lex $P2295, "$subtype"
+ find_lex $P2296, "$/"
+ $P2297 = $P2291."new"($P2294, "pastnode" :named("pasttype"), $P2295 :named("subtype"), $P2296 :named("node"))
+ store_lex "$past", $P2297
+.annotate 'line', 834
+ .return ($P2297)
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "assertion:sym<var>" :subid("131_1274564782.90592") :method :outer("126_1274564782.90592")
+ .param pmc param_2309
+.annotate 'line', 849
+ new $P2308, 'ExceptionHandler'
+ set_addr $P2308, control_2307
+ $P2308."handle_types"(57)
+ push_eh $P2308
+ .lex "self", self
+ .lex "$/", param_2309
+.annotate 'line', 850
+ find_lex $P2310, "$/"
+ get_hll_global $P2311, ["PAST"], "Regex"
+ find_lex $P2312, "$/"
+ unless_null $P2312, vivify_638
+ $P2312 = root_new ['parrot';'Hash']
+ vivify_638:
+ set $P2313, $P2312["var"]
+ unless_null $P2313, vivify_639
+ new $P2313, "Undef"
+ vivify_639:
+ $P2314 = $P2313."ast"()
+ find_lex $P2315, "$/"
+ $P2316 = $P2311."new"($P2314, "pastnode" :named("pasttype"), "interp_regex" :named("subtype"), $P2315 :named("node"))
+ $P2317 = $P2310."!make"($P2316)
+.annotate 'line', 849
+ .return ($P2317)
+ control_2307:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P2318, exception, "payload"
+ .return ($P2318)
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "metachar:sym<{ }>" :subid("132_1274564782.90592") :method :outer("126_1274564782.90592")
+ .param pmc param_2322
+.annotate 'line', 855
+ new $P2321, 'ExceptionHandler'
+ set_addr $P2321, control_2320
+ $P2321."handle_types"(57)
+ push_eh $P2321
+ .lex "self", self
+ .lex "$/", param_2322
+.annotate 'line', 856
+ find_lex $P2323, "$/"
+ get_hll_global $P2324, ["PAST"], "Regex"
+ find_lex $P2325, "$/"
+ find_lex $P2326, "$/"
+ unless_null $P2326, vivify_640
+ $P2326 = root_new ['parrot';'Hash']
+ vivify_640:
+ set $P2327, $P2326["codeblock"]
+ unless_null $P2327, vivify_641
+ new $P2327, "Undef"
+ vivify_641:
+ $P2328 = $P2327."ast"()
+ $P2329 = $P2324."new"($P2328, $P2325 :named("node"), "pastnode" :named("pasttype"))
+ $P2330 = $P2323."!make"($P2329)
+.annotate 'line', 855
+ .return ($P2330)
+ control_2320:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P2331, exception, "payload"
+ .return ($P2331)
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "assertion:sym<{ }>" :subid("133_1274564782.90592") :method :outer("126_1274564782.90592")
+ .param pmc param_2335
+.annotate 'line', 859
+ new $P2334, 'ExceptionHandler'
+ set_addr $P2334, control_2333
+ $P2334."handle_types"(57)
+ push_eh $P2334
+ .lex "self", self
+ .lex "$/", param_2335
+.annotate 'line', 860
+ find_lex $P2336, "$/"
+ get_hll_global $P2337, ["PAST"], "Regex"
+ find_lex $P2338, "$/"
+.annotate 'line', 861
+ find_lex $P2339, "$/"
+ unless_null $P2339, vivify_642
+ $P2339 = root_new ['parrot';'Hash']
+ vivify_642:
+ set $P2340, $P2339["codeblock"]
+ unless_null $P2340, vivify_643
+ new $P2340, "Undef"
+ vivify_643:
+ $P2341 = $P2340."ast"()
+ $P2342 = $P2337."new"($P2341, $P2338 :named("node"), "pastnode" :named("pasttype"), "interp_regex" :named("subtype"))
+.annotate 'line', 860
+ $P2343 = $P2336."!make"($P2342)
+.annotate 'line', 859
+ .return ($P2343)
+ control_2333:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P2344, exception, "payload"
+ .return ($P2344)
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "codeblock" :subid("134_1274564782.90592") :method :outer("126_1274564782.90592")
+ .param pmc param_2348
+.annotate 'line', 864
+ new $P2347, 'ExceptionHandler'
+ set_addr $P2347, control_2346
+ $P2347."handle_types"(57)
+ push_eh $P2347
+ .lex "self", self
+ .lex "$/", param_2348
+.annotate 'line', 865
+ new $P2349, "Undef"
+ .lex "$block", $P2349
+ find_lex $P2350, "$/"
+ unless_null $P2350, vivify_644
+ $P2350 = root_new ['parrot';'Hash']
+ vivify_644:
+ set $P2351, $P2350["block"]
+ unless_null $P2351, vivify_645
+ new $P2351, "Undef"
+ vivify_645:
+ $P2352 = $P2351."ast"()
+ store_lex "$block", $P2352
+.annotate 'line', 866
+ find_lex $P2353, "$block"
+ $P2353."blocktype"("immediate")
+.annotate 'line', 867
+ find_lex $P2354, "$/"
+ find_lex $P2355, "$block"
+ $P2356 = "bindmatch"($P2355)
+ $P2357 = $P2354."!make"($P2356)
+.annotate 'line', 864
+ .return ($P2357)
+ control_2346:
.local pmc exception
.get_results (exception)
- getattribute $P2250, exception, "payload"
- .return ($P2250)
+ getattribute $P2358, exception, "payload"
+ .return ($P2358)
.end
.namespace ["NQP";"Actions"]
-.sub "_block2253" :load :anon :subid("131_1274022903.56472")
+.sub "_block2361" :load :anon :subid("135_1274564782.90592")
.annotate 'line', 3
- .const 'Sub' $P2255 = "11_1274022903.56472"
- $P2256 = $P2255()
- .return ($P2256)
+ .const 'Sub' $P2363 = "11_1274564782.90592"
+ $P2364 = $P2363()
+ .return ($P2364)
.end
.namespace []
-.sub "_block2263" :load :anon :subid("133_1274022903.56472")
+.sub "_block2371" :load :anon :subid("137_1274564782.90592")
.annotate 'line', 1
- .const 'Sub' $P2265 = "10_1274022903.56472"
- $P2266 = $P2265()
- .return ($P2266)
+ .const 'Sub' $P2373 = "10_1274564782.90592"
+ $P2374 = $P2373()
+ .return ($P2374)
.end
### .include 'src/cheats/nqp-builtins.pir'
Modified: branches/ops_massacre/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/ops_massacre/ext/nqp-rx/src/stage0/P6Regex-s0.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/ext/nqp-rx/src/stage0/P6Regex-s0.pir Mon May 24 08:26:56 2010 (r46947)
@@ -16,7 +16,7 @@
### .include 'gen/p6regex-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1274022883.50471")
+.sub "_block11" :anon :subid("10_1274564774.16047")
.annotate 'line', 0
get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13"
capture_lex $P14
@@ -26,15 +26,15 @@
$P583 = $P14()
.annotate 'line', 1
.return ($P583)
- .const 'Sub' $P585 = "159_1274022883.50471"
+ .const 'Sub' $P585 = "159_1274564774.16047"
.return ($P585)
.end
.namespace []
-.sub "" :load :init :subid("post160") :outer("10_1274022883.50471")
+.sub "" :load :init :subid("post160") :outer("10_1274564774.16047")
.annotate 'line', 0
- .const 'Sub' $P12 = "10_1274022883.50471"
+ .const 'Sub' $P12 = "10_1274564774.16047"
.local pmc block
set block, $P12
$P588 = get_root_global ["parrot"], "P6metaclass"
@@ -43,142 +43,142 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13" :subid("11_1274022883.50471") :outer("10_1274022883.50471")
+.sub "_block13" :subid("11_1274564774.16047") :outer("10_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P571 = "156_1274022883.50471"
+ .const 'Sub' $P571 = "156_1274564774.16047"
capture_lex $P571
- .const 'Sub' $P563 = "154_1274022883.50471"
+ .const 'Sub' $P563 = "154_1274564774.16047"
capture_lex $P563
- .const 'Sub' $P555 = "152_1274022883.50471"
+ .const 'Sub' $P555 = "152_1274564774.16047"
capture_lex $P555
- .const 'Sub' $P534 = "147_1274022883.50471"
+ .const 'Sub' $P534 = "147_1274564774.16047"
capture_lex $P534
- .const 'Sub' $P499 = "141_1274022883.50471"
+ .const 'Sub' $P499 = "141_1274564774.16047"
capture_lex $P499
- .const 'Sub' $P487 = "138_1274022883.50471"
+ .const 'Sub' $P487 = "138_1274564774.16047"
capture_lex $P487
- .const 'Sub' $P474 = "135_1274022883.50471"
+ .const 'Sub' $P474 = "135_1274564774.16047"
capture_lex $P474
- .const 'Sub' $P468 = "133_1274022883.50471"
+ .const 'Sub' $P468 = "133_1274564774.16047"
capture_lex $P468
- .const 'Sub' $P457 = "130_1274022883.50471"
+ .const 'Sub' $P457 = "130_1274564774.16047"
capture_lex $P457
- .const 'Sub' $P446 = "127_1274022883.50471"
+ .const 'Sub' $P446 = "127_1274564774.16047"
capture_lex $P446
- .const 'Sub' $P437 = "123_1274022883.50471"
+ .const 'Sub' $P437 = "123_1274564774.16047"
capture_lex $P437
- .const 'Sub' $P431 = "121_1274022883.50471"
+ .const 'Sub' $P431 = "121_1274564774.16047"
capture_lex $P431
- .const 'Sub' $P425 = "119_1274022883.50471"
+ .const 'Sub' $P425 = "119_1274564774.16047"
capture_lex $P425
- .const 'Sub' $P419 = "117_1274022883.50471"
+ .const 'Sub' $P419 = "117_1274564774.16047"
capture_lex $P419
- .const 'Sub' $P413 = "115_1274022883.50471"
+ .const 'Sub' $P413 = "115_1274564774.16047"
capture_lex $P413
- .const 'Sub' $P405 = "113_1274022883.50471"
+ .const 'Sub' $P405 = "113_1274564774.16047"
capture_lex $P405
- .const 'Sub' $P394 = "111_1274022883.50471"
+ .const 'Sub' $P394 = "111_1274564774.16047"
capture_lex $P394
- .const 'Sub' $P383 = "109_1274022883.50471"
+ .const 'Sub' $P383 = "109_1274564774.16047"
capture_lex $P383
- .const 'Sub' $P377 = "107_1274022883.50471"
+ .const 'Sub' $P377 = "107_1274564774.16047"
capture_lex $P377
- .const 'Sub' $P371 = "105_1274022883.50471"
+ .const 'Sub' $P371 = "105_1274564774.16047"
capture_lex $P371
- .const 'Sub' $P365 = "103_1274022883.50471"
+ .const 'Sub' $P365 = "103_1274564774.16047"
capture_lex $P365
- .const 'Sub' $P359 = "101_1274022883.50471"
+ .const 'Sub' $P359 = "101_1274564774.16047"
capture_lex $P359
- .const 'Sub' $P353 = "99_1274022883.50471"
+ .const 'Sub' $P353 = "99_1274564774.16047"
capture_lex $P353
- .const 'Sub' $P347 = "97_1274022883.50471"
+ .const 'Sub' $P347 = "97_1274564774.16047"
capture_lex $P347
- .const 'Sub' $P341 = "95_1274022883.50471"
+ .const 'Sub' $P341 = "95_1274564774.16047"
capture_lex $P341
- .const 'Sub' $P335 = "93_1274022883.50471"
+ .const 'Sub' $P335 = "93_1274564774.16047"
capture_lex $P335
- .const 'Sub' $P323 = "89_1274022883.50471"
+ .const 'Sub' $P323 = "89_1274564774.16047"
capture_lex $P323
- .const 'Sub' $P311 = "87_1274022883.50471"
+ .const 'Sub' $P311 = "87_1274564774.16047"
capture_lex $P311
- .const 'Sub' $P304 = "85_1274022883.50471"
+ .const 'Sub' $P304 = "85_1274564774.16047"
capture_lex $P304
- .const 'Sub' $P287 = "83_1274022883.50471"
+ .const 'Sub' $P287 = "83_1274564774.16047"
capture_lex $P287
- .const 'Sub' $P280 = "81_1274022883.50471"
+ .const 'Sub' $P280 = "81_1274564774.16047"
capture_lex $P280
- .const 'Sub' $P274 = "79_1274022883.50471"
+ .const 'Sub' $P274 = "79_1274564774.16047"
capture_lex $P274
- .const 'Sub' $P268 = "77_1274022883.50471"
+ .const 'Sub' $P268 = "77_1274564774.16047"
capture_lex $P268
- .const 'Sub' $P261 = "75_1274022883.50471"
+ .const 'Sub' $P261 = "75_1274564774.16047"
capture_lex $P261
- .const 'Sub' $P254 = "73_1274022883.50471"
+ .const 'Sub' $P254 = "73_1274564774.16047"
capture_lex $P254
- .const 'Sub' $P247 = "71_1274022883.50471"
+ .const 'Sub' $P247 = "71_1274564774.16047"
capture_lex $P247
- .const 'Sub' $P240 = "69_1274022883.50471"
+ .const 'Sub' $P240 = "69_1274564774.16047"
capture_lex $P240
- .const 'Sub' $P234 = "67_1274022883.50471"
+ .const 'Sub' $P234 = "67_1274564774.16047"
capture_lex $P234
- .const 'Sub' $P228 = "65_1274022883.50471"
+ .const 'Sub' $P228 = "65_1274564774.16047"
capture_lex $P228
- .const 'Sub' $P222 = "63_1274022883.50471"
+ .const 'Sub' $P222 = "63_1274564774.16047"
capture_lex $P222
- .const 'Sub' $P216 = "61_1274022883.50471"
+ .const 'Sub' $P216 = "61_1274564774.16047"
capture_lex $P216
- .const 'Sub' $P210 = "59_1274022883.50471"
+ .const 'Sub' $P210 = "59_1274564774.16047"
capture_lex $P210
- .const 'Sub' $P205 = "57_1274022883.50471"
+ .const 'Sub' $P205 = "57_1274564774.16047"
capture_lex $P205
- .const 'Sub' $P200 = "55_1274022883.50471"
+ .const 'Sub' $P200 = "55_1274564774.16047"
capture_lex $P200
- .const 'Sub' $P194 = "53_1274022883.50471"
+ .const 'Sub' $P194 = "53_1274564774.16047"
capture_lex $P194
- .const 'Sub' $P188 = "51_1274022883.50471"
+ .const 'Sub' $P188 = "51_1274564774.16047"
capture_lex $P188
- .const 'Sub' $P182 = "49_1274022883.50471"
+ .const 'Sub' $P182 = "49_1274564774.16047"
capture_lex $P182
- .const 'Sub' $P166 = "44_1274022883.50471"
+ .const 'Sub' $P166 = "44_1274564774.16047"
capture_lex $P166
- .const 'Sub' $P154 = "42_1274022883.50471"
+ .const 'Sub' $P154 = "42_1274564774.16047"
capture_lex $P154
- .const 'Sub' $P147 = "40_1274022883.50471"
+ .const 'Sub' $P147 = "40_1274564774.16047"
capture_lex $P147
- .const 'Sub' $P140 = "38_1274022883.50471"
+ .const 'Sub' $P140 = "38_1274564774.16047"
capture_lex $P140
- .const 'Sub' $P133 = "36_1274022883.50471"
+ .const 'Sub' $P133 = "36_1274564774.16047"
capture_lex $P133
- .const 'Sub' $P114 = "31_1274022883.50471"
+ .const 'Sub' $P114 = "31_1274564774.16047"
capture_lex $P114
- .const 'Sub' $P101 = "28_1274022883.50471"
+ .const 'Sub' $P101 = "28_1274564774.16047"
capture_lex $P101
- .const 'Sub' $P94 = "26_1274022883.50471"
+ .const 'Sub' $P94 = "26_1274564774.16047"
capture_lex $P94
- .const 'Sub' $P82 = "24_1274022883.50471"
+ .const 'Sub' $P82 = "24_1274564774.16047"
capture_lex $P82
- .const 'Sub' $P75 = "22_1274022883.50471"
+ .const 'Sub' $P75 = "22_1274564774.16047"
capture_lex $P75
- .const 'Sub' $P63 = "20_1274022883.50471"
+ .const 'Sub' $P63 = "20_1274564774.16047"
capture_lex $P63
- .const 'Sub' $P56 = "18_1274022883.50471"
+ .const 'Sub' $P56 = "18_1274564774.16047"
capture_lex $P56
- .const 'Sub' $P46 = "15_1274022883.50471"
+ .const 'Sub' $P46 = "15_1274564774.16047"
capture_lex $P46
- .const 'Sub' $P38 = "13_1274022883.50471"
+ .const 'Sub' $P38 = "13_1274564774.16047"
capture_lex $P38
- .const 'Sub' $P15 = "12_1274022883.50471"
+ .const 'Sub' $P15 = "12_1274564774.16047"
capture_lex $P15
- .const 'Sub' $P571 = "156_1274022883.50471"
+ .const 'Sub' $P571 = "156_1274564774.16047"
capture_lex $P571
.return ($P571)
- .const 'Sub' $P580 = "158_1274022883.50471"
+ .const 'Sub' $P580 = "158_1274564774.16047"
.return ($P580)
.end
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "obs" :subid("12_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "obs" :subid("12_1274564774.16047") :method :outer("11_1274564774.16047")
.param pmc param_18
.param pmc param_19
.param pmc param_20 :optional
@@ -226,7 +226,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws" :subid("13_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "ws" :subid("13_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx39_tgt
.local int rx39_pos
@@ -308,7 +308,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws" :subid("14_1274022883.50471") :method
+.sub "!PREFIX__ws" :subid("14_1274564774.16047") :method
.annotate 'line', 3
new $P41, "ResizablePMCArray"
push $P41, ""
@@ -317,9 +317,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace" :subid("15_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "normspace" :subid("15_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P52 = "17_1274022883.50471"
+ .const 'Sub' $P52 = "17_1274564774.16047"
capture_lex $P52
.local string rx47_tgt
.local int rx47_pos
@@ -353,7 +353,7 @@
.annotate 'line', 10
# rx subrule "before" subtype=zerowidth negate=
rx47_cur."!cursor_pos"(rx47_pos)
- .const 'Sub' $P52 = "17_1274022883.50471"
+ .const 'Sub' $P52 = "17_1274564774.16047"
capture_lex $P52
$P10 = rx47_cur."before"($P52)
unless $P10, rx47_fail
@@ -381,7 +381,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__normspace" :subid("16_1274022883.50471") :method
+.sub "!PREFIX__normspace" :subid("16_1274564774.16047") :method
.annotate 'line', 3
new $P49, "ResizablePMCArray"
push $P49, ""
@@ -390,7 +390,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block51" :anon :subid("17_1274022883.50471") :method :outer("15_1274022883.50471")
+.sub "_block51" :anon :subid("17_1274564774.16047") :method :outer("15_1274564774.16047")
.annotate 'line', 10
.local string rx53_tgt
.local int rx53_pos
@@ -458,7 +458,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg" :subid("18_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "arg" :subid("18_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx57_tgt
.local int rx57_pos
@@ -569,7 +569,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg" :subid("19_1274022883.50471") :method
+.sub "!PREFIX__arg" :subid("19_1274564774.16047") :method
.annotate 'line', 3
new $P59, "ResizablePMCArray"
push $P59, ""
@@ -580,7 +580,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist" :subid("20_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "arglist" :subid("20_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx64_tgt
.local int rx64_pos
@@ -686,7 +686,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist" :subid("21_1274022883.50471") :method
+.sub "!PREFIX__arglist" :subid("21_1274564774.16047") :method
.annotate 'line', 3
new $P66, "ResizablePMCArray"
push $P66, ""
@@ -695,7 +695,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP" :subid("22_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "TOP" :subid("22_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx76_tgt
.local int rx76_pos
@@ -768,7 +768,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP" :subid("23_1274022883.50471") :method
+.sub "!PREFIX__TOP" :subid("23_1274564774.16047") :method
.annotate 'line', 3
$P78 = self."!PREFIX__!subrule"("nibbler", "")
new $P79, "ResizablePMCArray"
@@ -778,7 +778,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler" :subid("24_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "nibbler" :subid("24_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx83_tgt
.local int rx83_pos
@@ -946,7 +946,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler" :subid("25_1274022883.50471") :method
+.sub "!PREFIX__nibbler" :subid("25_1274564774.16047") :method
.annotate 'line', 3
new $P85, "ResizablePMCArray"
push $P85, ""
@@ -955,7 +955,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish" :subid("26_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "termish" :subid("26_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx95_tgt
.local int rx95_pos
@@ -1023,7 +1023,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish" :subid("27_1274022883.50471") :method
+.sub "!PREFIX__termish" :subid("27_1274564774.16047") :method
.annotate 'line', 3
new $P97, "ResizablePMCArray"
push $P97, ""
@@ -1032,9 +1032,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom" :subid("28_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "quantified_atom" :subid("28_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P110 = "30_1274022883.50471"
+ .const 'Sub' $P110 = "30_1274564774.16047"
capture_lex $P110
.local string rx102_tgt
.local int rx102_pos
@@ -1097,7 +1097,7 @@
alt108_1:
# rx subrule "before" subtype=zerowidth negate=
rx102_cur."!cursor_pos"(rx102_pos)
- .const 'Sub' $P110 = "30_1274022883.50471"
+ .const 'Sub' $P110 = "30_1274564774.16047"
capture_lex $P110
$P10 = rx102_cur."before"($P110)
unless $P10, rx102_fail
@@ -1135,7 +1135,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantified_atom" :subid("29_1274022883.50471") :method
+.sub "!PREFIX__quantified_atom" :subid("29_1274564774.16047") :method
.annotate 'line', 3
$P104 = self."!PREFIX__!subrule"("atom", "")
new $P105, "ResizablePMCArray"
@@ -1145,7 +1145,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block109" :anon :subid("30_1274022883.50471") :method :outer("28_1274022883.50471")
+.sub "_block109" :anon :subid("30_1274564774.16047") :method :outer("28_1274564774.16047")
.annotate 'line', 41
.local string rx111_tgt
.local int rx111_pos
@@ -1201,9 +1201,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom" :subid("31_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "atom" :subid("31_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P125 = "33_1274022883.50471"
+ .const 'Sub' $P125 = "33_1274564774.16047"
capture_lex $P125
.local string rx115_tgt
.local int rx115_pos
@@ -1263,7 +1263,7 @@
rxquantg122_done:
# rx subrule "before" subtype=zerowidth negate=
rx115_cur."!cursor_pos"(rx115_pos)
- .const 'Sub' $P125 = "33_1274022883.50471"
+ .const 'Sub' $P125 = "33_1274564774.16047"
capture_lex $P125
$P10 = rx115_cur."before"($P125)
unless $P10, rx115_fail
@@ -1300,7 +1300,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__atom" :subid("32_1274022883.50471") :method
+.sub "!PREFIX__atom" :subid("32_1274564774.16047") :method
.annotate 'line', 3
$P117 = self."!PREFIX__!subrule"("metachar", "")
new $P118, "ResizablePMCArray"
@@ -1311,7 +1311,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block124" :anon :subid("33_1274022883.50471") :method :outer("31_1274022883.50471")
+.sub "_block124" :anon :subid("33_1274564774.16047") :method :outer("31_1274564774.16047")
.annotate 'line', 47
.local string rx126_tgt
.local int rx126_pos
@@ -1366,7 +1366,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier" :subid("34_1274022883.50471") :method
+.sub "quantifier" :subid("34_1274564774.16047") :method
.annotate 'line', 52
$P130 = self."!protoregex"("quantifier")
.return ($P130)
@@ -1374,7 +1374,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier" :subid("35_1274022883.50471") :method
+.sub "!PREFIX__quantifier" :subid("35_1274564774.16047") :method
.annotate 'line', 52
$P132 = self."!PREFIX__!protoregex"("quantifier")
.return ($P132)
@@ -1382,7 +1382,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>" :subid("36_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "quantifier:sym<*>" :subid("36_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx134_tgt
.local int rx134_pos
@@ -1461,7 +1461,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<*>" :subid("37_1274022883.50471") :method
+.sub "!PREFIX__quantifier:sym<*>" :subid("37_1274564774.16047") :method
.annotate 'line', 3
$P136 = self."!PREFIX__!subrule"("backmod", "*")
new $P137, "ResizablePMCArray"
@@ -1471,7 +1471,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<+>" :subid("38_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "quantifier:sym<+>" :subid("38_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx141_tgt
.local int rx141_pos
@@ -1550,7 +1550,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<+>" :subid("39_1274022883.50471") :method
+.sub "!PREFIX__quantifier:sym<+>" :subid("39_1274564774.16047") :method
.annotate 'line', 3
$P143 = self."!PREFIX__!subrule"("backmod", "+")
new $P144, "ResizablePMCArray"
@@ -1560,7 +1560,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<?>" :subid("40_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "quantifier:sym<?>" :subid("40_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx148_tgt
.local int rx148_pos
@@ -1639,7 +1639,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<?>" :subid("41_1274022883.50471") :method
+.sub "!PREFIX__quantifier:sym<?>" :subid("41_1274564774.16047") :method
.annotate 'line', 3
$P150 = self."!PREFIX__!subrule"("backmod", "?")
new $P151, "ResizablePMCArray"
@@ -1649,7 +1649,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<**>" :subid("42_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "quantifier:sym<**>" :subid("42_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx155_tgt
.local int rx155_pos
@@ -1838,7 +1838,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<**>" :subid("43_1274022883.50471") :method
+.sub "!PREFIX__quantifier:sym<**>" :subid("43_1274564774.16047") :method
.annotate 'line', 3
new $P157, "ResizablePMCArray"
push $P157, "**"
@@ -1847,9 +1847,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod" :subid("44_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backmod" :subid("44_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P175 = "46_1274022883.50471"
+ .const 'Sub' $P175 = "46_1274564774.16047"
capture_lex $P175
.local string rx167_tgt
.local int rx167_pos
@@ -1919,7 +1919,7 @@
alt173_2:
# rx subrule "before" subtype=zerowidth negate=1
rx167_cur."!cursor_pos"(rx167_pos)
- .const 'Sub' $P175 = "46_1274022883.50471"
+ .const 'Sub' $P175 = "46_1274564774.16047"
capture_lex $P175
$P10 = rx167_cur."before"($P175)
if $P10, rx167_fail
@@ -1943,7 +1943,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backmod" :subid("45_1274022883.50471") :method
+.sub "!PREFIX__backmod" :subid("45_1274564774.16047") :method
.annotate 'line', 3
new $P169, "ResizablePMCArray"
push $P169, ""
@@ -1952,7 +1952,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block174" :anon :subid("46_1274022883.50471") :method :outer("44_1274022883.50471")
+.sub "_block174" :anon :subid("46_1274564774.16047") :method :outer("44_1274564774.16047")
.annotate 'line', 71
.local string rx176_tgt
.local int rx176_pos
@@ -2008,7 +2008,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar" :subid("47_1274022883.50471") :method
+.sub "metachar" :subid("47_1274564774.16047") :method
.annotate 'line', 73
$P179 = self."!protoregex"("metachar")
.return ($P179)
@@ -2016,7 +2016,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar" :subid("48_1274022883.50471") :method
+.sub "!PREFIX__metachar" :subid("48_1274564774.16047") :method
.annotate 'line', 73
$P181 = self."!PREFIX__!protoregex"("metachar")
.return ($P181)
@@ -2024,7 +2024,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<ws>" :subid("49_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<ws>" :subid("49_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx183_tgt
.local int rx183_pos
@@ -2080,7 +2080,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<ws>" :subid("50_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<ws>" :subid("50_1274564774.16047") :method
.annotate 'line', 3
$P185 = self."!PREFIX__!subrule"("", "")
new $P186, "ResizablePMCArray"
@@ -2090,7 +2090,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>" :subid("51_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<[ ]>" :subid("51_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx189_tgt
.local int rx189_pos
@@ -2162,7 +2162,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<[ ]>" :subid("52_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<[ ]>" :subid("52_1274564774.16047") :method
.annotate 'line', 3
$P191 = self."!PREFIX__!subrule"("nibbler", "[")
new $P192, "ResizablePMCArray"
@@ -2172,7 +2172,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<( )>" :subid("53_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<( )>" :subid("53_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx195_tgt
.local int rx195_pos
@@ -2244,7 +2244,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<( )>" :subid("54_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<( )>" :subid("54_1274564774.16047") :method
.annotate 'line', 3
$P197 = self."!PREFIX__!subrule"("nibbler", "(")
new $P198, "ResizablePMCArray"
@@ -2254,7 +2254,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<'>" :subid("55_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<'>" :subid("55_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx201_tgt
.local int rx201_pos
@@ -2318,7 +2318,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<'>" :subid("56_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<'>" :subid("56_1274564774.16047") :method
.annotate 'line', 3
new $P203, "ResizablePMCArray"
push $P203, "'"
@@ -2327,7 +2327,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">" :subid("57_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<\">" :subid("57_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx206_tgt
.local int rx206_pos
@@ -2391,7 +2391,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<\">" :subid("58_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<\">" :subid("58_1274564774.16047") :method
.annotate 'line', 3
new $P208, "ResizablePMCArray"
push $P208, "\""
@@ -2400,7 +2400,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>" :subid("59_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<.>" :subid("59_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx211_tgt
.local int rx211_pos
@@ -2472,7 +2472,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<.>" :subid("60_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<.>" :subid("60_1274564774.16047") :method
.annotate 'line', 3
new $P213, "ResizablePMCArray"
push $P213, "."
@@ -2481,7 +2481,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>" :subid("61_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<^>" :subid("61_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx217_tgt
.local int rx217_pos
@@ -2553,7 +2553,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^>" :subid("62_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<^>" :subid("62_1274564774.16047") :method
.annotate 'line', 3
new $P219, "ResizablePMCArray"
push $P219, "^"
@@ -2562,7 +2562,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>" :subid("63_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<^^>" :subid("63_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx223_tgt
.local int rx223_pos
@@ -2634,7 +2634,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^^>" :subid("64_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<^^>" :subid("64_1274564774.16047") :method
.annotate 'line', 3
new $P225, "ResizablePMCArray"
push $P225, "^^"
@@ -2643,7 +2643,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>" :subid("65_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<$>" :subid("65_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx229_tgt
.local int rx229_pos
@@ -2715,7 +2715,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$>" :subid("66_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<$>" :subid("66_1274564774.16047") :method
.annotate 'line', 3
new $P231, "ResizablePMCArray"
push $P231, "$"
@@ -2724,7 +2724,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>" :subid("67_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<$$>" :subid("67_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx235_tgt
.local int rx235_pos
@@ -2796,7 +2796,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$$>" :subid("68_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<$$>" :subid("68_1274564774.16047") :method
.annotate 'line', 3
new $P237, "ResizablePMCArray"
push $P237, "$$"
@@ -2805,7 +2805,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>" :subid("69_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<:::>" :subid("69_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx241_tgt
.local int rx241_pos
@@ -2882,7 +2882,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<:::>" :subid("70_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<:::>" :subid("70_1274564774.16047") :method
.annotate 'line', 3
$P243 = self."!PREFIX__!subrule"("", ":::")
new $P244, "ResizablePMCArray"
@@ -2892,7 +2892,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>" :subid("71_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<::>" :subid("71_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx248_tgt
.local int rx248_pos
@@ -2969,7 +2969,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<::>" :subid("72_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<::>" :subid("72_1274564774.16047") :method
.annotate 'line', 3
$P250 = self."!PREFIX__!subrule"("", "::")
new $P251, "ResizablePMCArray"
@@ -2979,7 +2979,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<lwb>" :subid("73_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<lwb>" :subid("73_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx255_tgt
.local int rx255_pos
@@ -3064,7 +3064,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<lwb>" :subid("74_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<lwb>" :subid("74_1274564774.16047") :method
.annotate 'line', 3
new $P257, "ResizablePMCArray"
push $P257, unicode:"\x{ab}"
@@ -3074,7 +3074,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<rwb>" :subid("75_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<rwb>" :subid("75_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx262_tgt
.local int rx262_pos
@@ -3159,7 +3159,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<rwb>" :subid("76_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<rwb>" :subid("76_1274564774.16047") :method
.annotate 'line', 3
new $P264, "ResizablePMCArray"
push $P264, unicode:"\x{bb}"
@@ -3169,7 +3169,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<bs>" :subid("77_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<bs>" :subid("77_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx269_tgt
.local int rx269_pos
@@ -3234,7 +3234,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<bs>" :subid("78_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<bs>" :subid("78_1274564774.16047") :method
.annotate 'line', 3
$P271 = self."!PREFIX__!subrule"("backslash", "\\")
new $P272, "ResizablePMCArray"
@@ -3244,7 +3244,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<mod>" :subid("79_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<mod>" :subid("79_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx275_tgt
.local int rx275_pos
@@ -3302,7 +3302,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<mod>" :subid("80_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<mod>" :subid("80_1274564774.16047") :method
.annotate 'line', 3
$P277 = self."!PREFIX__!subrule"("mod_internal", "")
new $P278, "ResizablePMCArray"
@@ -3312,7 +3312,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<~>" :subid("81_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<~>" :subid("81_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx281_tgt
.local int rx281_pos
@@ -3411,7 +3411,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<~>" :subid("82_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<~>" :subid("82_1274564774.16047") :method
.annotate 'line', 3
$P283 = self."!PREFIX__!subrule"("", "~")
new $P284, "ResizablePMCArray"
@@ -3421,7 +3421,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>" :subid("83_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<{*}>" :subid("83_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx288_tgt
.local int rx288_pos
@@ -3588,7 +3588,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<{*}>" :subid("84_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<{*}>" :subid("84_1274564774.16047") :method
.annotate 'line', 3
new $P290, "ResizablePMCArray"
push $P290, "{*}"
@@ -3597,7 +3597,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>" :subid("85_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<assert>" :subid("85_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx305_tgt
.local int rx305_pos
@@ -3682,7 +3682,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<assert>" :subid("86_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<assert>" :subid("86_1274564774.16047") :method
.annotate 'line', 3
$P307 = self."!PREFIX__!subrule"("assertion", "<")
new $P308, "ResizablePMCArray"
@@ -3692,7 +3692,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<var>" :subid("87_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<var>" :subid("87_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx312_tgt
.local int rx312_pos
@@ -3854,7 +3854,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<var>" :subid("88_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<var>" :subid("88_1274564774.16047") :method
.annotate 'line', 3
new $P314, "ResizablePMCArray"
push $P314, "$"
@@ -3864,7 +3864,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>" :subid("89_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "metachar:sym<PIR>" :subid("89_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx324_tgt
.local int rx324_pos
@@ -3955,7 +3955,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<PIR>" :subid("90_1274022883.50471") :method
+.sub "!PREFIX__metachar:sym<PIR>" :subid("90_1274564774.16047") :method
.annotate 'line', 3
new $P326, "ResizablePMCArray"
push $P326, ":PIR{{"
@@ -3964,7 +3964,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash" :subid("91_1274022883.50471") :method
+.sub "backslash" :subid("91_1274564774.16047") :method
.annotate 'line', 120
$P332 = self."!protoregex"("backslash")
.return ($P332)
@@ -3972,7 +3972,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash" :subid("92_1274022883.50471") :method
+.sub "!PREFIX__backslash" :subid("92_1274564774.16047") :method
.annotate 'line', 120
$P334 = self."!PREFIX__!protoregex"("backslash")
.return ($P334)
@@ -3980,7 +3980,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<w>" :subid("93_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<w>" :subid("93_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx336_tgt
.local int rx336_pos
@@ -4052,7 +4052,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<w>" :subid("94_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<w>" :subid("94_1274564774.16047") :method
.annotate 'line', 3
new $P338, "ResizablePMCArray"
push $P338, "N"
@@ -4068,7 +4068,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>" :subid("95_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<b>" :subid("95_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx342_tgt
.local int rx342_pos
@@ -4140,7 +4140,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<b>" :subid("96_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<b>" :subid("96_1274564774.16047") :method
.annotate 'line', 3
new $P344, "ResizablePMCArray"
push $P344, "B"
@@ -4150,7 +4150,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>" :subid("97_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<e>" :subid("97_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx348_tgt
.local int rx348_pos
@@ -4222,7 +4222,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<e>" :subid("98_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<e>" :subid("98_1274564774.16047") :method
.annotate 'line', 3
new $P350, "ResizablePMCArray"
push $P350, "E"
@@ -4232,7 +4232,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>" :subid("99_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<f>" :subid("99_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx354_tgt
.local int rx354_pos
@@ -4304,7 +4304,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<f>" :subid("100_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<f>" :subid("100_1274564774.16047") :method
.annotate 'line', 3
new $P356, "ResizablePMCArray"
push $P356, "F"
@@ -4314,7 +4314,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>" :subid("101_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<h>" :subid("101_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx360_tgt
.local int rx360_pos
@@ -4386,7 +4386,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<h>" :subid("102_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<h>" :subid("102_1274564774.16047") :method
.annotate 'line', 3
new $P362, "ResizablePMCArray"
push $P362, "H"
@@ -4396,7 +4396,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>" :subid("103_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<r>" :subid("103_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx366_tgt
.local int rx366_pos
@@ -4468,7 +4468,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<r>" :subid("104_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<r>" :subid("104_1274564774.16047") :method
.annotate 'line', 3
new $P368, "ResizablePMCArray"
push $P368, "R"
@@ -4478,7 +4478,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>" :subid("105_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<t>" :subid("105_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx372_tgt
.local int rx372_pos
@@ -4550,7 +4550,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<t>" :subid("106_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<t>" :subid("106_1274564774.16047") :method
.annotate 'line', 3
new $P374, "ResizablePMCArray"
push $P374, "T"
@@ -4560,7 +4560,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>" :subid("107_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<v>" :subid("107_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx378_tgt
.local int rx378_pos
@@ -4632,7 +4632,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<v>" :subid("108_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<v>" :subid("108_1274564774.16047") :method
.annotate 'line', 3
new $P380, "ResizablePMCArray"
push $P380, "V"
@@ -4642,7 +4642,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>" :subid("109_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<o>" :subid("109_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx384_tgt
.local int rx384_pos
@@ -4748,7 +4748,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>" :subid("110_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<o>" :subid("110_1274564774.16047") :method
.annotate 'line', 3
$P386 = self."!PREFIX__!subrule"("octints", "O[")
$P387 = self."!PREFIX__!subrule"("octint", "O")
@@ -4764,7 +4764,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>" :subid("111_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<x>" :subid("111_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx395_tgt
.local int rx395_pos
@@ -4870,7 +4870,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>" :subid("112_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<x>" :subid("112_1274564774.16047") :method
.annotate 'line', 3
$P397 = self."!PREFIX__!subrule"("hexints", "X[")
$P398 = self."!PREFIX__!subrule"("hexint", "X")
@@ -4886,7 +4886,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>" :subid("113_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<c>" :subid("113_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx406_tgt
.local int rx406_pos
@@ -4965,7 +4965,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>" :subid("114_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<c>" :subid("114_1274564774.16047") :method
.annotate 'line', 3
$P408 = self."!PREFIX__!subrule"("charspec", "C")
$P409 = self."!PREFIX__!subrule"("charspec", "c")
@@ -4977,7 +4977,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>" :subid("115_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<A>" :subid("115_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx414_tgt
.local int rx414_pos
@@ -5040,7 +5040,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<A>" :subid("116_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<A>" :subid("116_1274564774.16047") :method
.annotate 'line', 3
$P416 = self."!PREFIX__!subrule"("", "A")
new $P417, "ResizablePMCArray"
@@ -5050,7 +5050,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<z>" :subid("117_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<z>" :subid("117_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx420_tgt
.local int rx420_pos
@@ -5113,7 +5113,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<z>" :subid("118_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<z>" :subid("118_1274564774.16047") :method
.annotate 'line', 3
$P422 = self."!PREFIX__!subrule"("", "z")
new $P423, "ResizablePMCArray"
@@ -5123,7 +5123,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Z>" :subid("119_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<Z>" :subid("119_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx426_tgt
.local int rx426_pos
@@ -5186,7 +5186,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Z>" :subid("120_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<Z>" :subid("120_1274564774.16047") :method
.annotate 'line', 3
$P428 = self."!PREFIX__!subrule"("", "Z")
new $P429, "ResizablePMCArray"
@@ -5196,7 +5196,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Q>" :subid("121_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<Q>" :subid("121_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx432_tgt
.local int rx432_pos
@@ -5259,7 +5259,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Q>" :subid("122_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<Q>" :subid("122_1274564774.16047") :method
.annotate 'line', 3
$P434 = self."!PREFIX__!subrule"("", "Q")
new $P435, "ResizablePMCArray"
@@ -5269,7 +5269,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<misc>" :subid("123_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "backslash:sym<misc>" :subid("123_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx438_tgt
.local int rx438_pos
@@ -5326,7 +5326,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<misc>" :subid("124_1274022883.50471") :method
+.sub "!PREFIX__backslash:sym<misc>" :subid("124_1274564774.16047") :method
.annotate 'line', 3
new $P440, "ResizablePMCArray"
push $P440, ""
@@ -5335,7 +5335,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion" :subid("125_1274022883.50471") :method
+.sub "assertion" :subid("125_1274564774.16047") :method
.annotate 'line', 138
$P443 = self."!protoregex"("assertion")
.return ($P443)
@@ -5343,7 +5343,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion" :subid("126_1274022883.50471") :method
+.sub "!PREFIX__assertion" :subid("126_1274564774.16047") :method
.annotate 'line', 138
$P445 = self."!PREFIX__!protoregex"("assertion")
.return ($P445)
@@ -5351,9 +5351,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>" :subid("127_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "assertion:sym<?>" :subid("127_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P454 = "129_1274022883.50471"
+ .const 'Sub' $P454 = "129_1274564774.16047"
capture_lex $P454
.local string rx447_tgt
.local int rx447_pos
@@ -5397,7 +5397,7 @@
rx447_cur."!mark_push"(0, rx447_pos, $I10)
# rx subrule "before" subtype=zerowidth negate=
rx447_cur."!cursor_pos"(rx447_pos)
- .const 'Sub' $P454 = "129_1274022883.50471"
+ .const 'Sub' $P454 = "129_1274564774.16047"
capture_lex $P454
$P10 = rx447_cur."before"($P454)
unless $P10, rx447_fail
@@ -5430,7 +5430,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<?>" :subid("128_1274022883.50471") :method
+.sub "!PREFIX__assertion:sym<?>" :subid("128_1274564774.16047") :method
.annotate 'line', 3
$P449 = self."!PREFIX__!subrule"("assertion", "?")
new $P450, "ResizablePMCArray"
@@ -5441,7 +5441,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block453" :anon :subid("129_1274022883.50471") :method :outer("127_1274022883.50471")
+.sub "_block453" :anon :subid("129_1274564774.16047") :method :outer("127_1274564774.16047")
.annotate 'line', 140
.local string rx455_tgt
.local int rx455_pos
@@ -5497,9 +5497,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>" :subid("130_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "assertion:sym<!>" :subid("130_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P465 = "132_1274022883.50471"
+ .const 'Sub' $P465 = "132_1274564774.16047"
capture_lex $P465
.local string rx458_tgt
.local int rx458_pos
@@ -5543,7 +5543,7 @@
rx458_cur."!mark_push"(0, rx458_pos, $I10)
# rx subrule "before" subtype=zerowidth negate=
rx458_cur."!cursor_pos"(rx458_pos)
- .const 'Sub' $P465 = "132_1274022883.50471"
+ .const 'Sub' $P465 = "132_1274564774.16047"
capture_lex $P465
$P10 = rx458_cur."before"($P465)
unless $P10, rx458_fail
@@ -5576,7 +5576,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<!>" :subid("131_1274022883.50471") :method
+.sub "!PREFIX__assertion:sym<!>" :subid("131_1274564774.16047") :method
.annotate 'line', 3
$P460 = self."!PREFIX__!subrule"("assertion", "!")
new $P461, "ResizablePMCArray"
@@ -5587,7 +5587,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block464" :anon :subid("132_1274022883.50471") :method :outer("130_1274022883.50471")
+.sub "_block464" :anon :subid("132_1274564774.16047") :method :outer("130_1274564774.16047")
.annotate 'line', 141
.local string rx466_tgt
.local int rx466_pos
@@ -5643,7 +5643,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<method>" :subid("133_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "assertion:sym<method>" :subid("133_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx469_tgt
.local int rx469_pos
@@ -5709,7 +5709,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<method>" :subid("134_1274022883.50471") :method
+.sub "!PREFIX__assertion:sym<method>" :subid("134_1274564774.16047") :method
.annotate 'line', 3
$P471 = self."!PREFIX__!subrule"("assertion", ".")
new $P472, "ResizablePMCArray"
@@ -5719,9 +5719,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<name>" :subid("135_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "assertion:sym<name>" :subid("135_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P483 = "137_1274022883.50471"
+ .const 'Sub' $P483 = "137_1274564774.16047"
capture_lex $P483
.local string rx475_tgt
.local int rx475_pos
@@ -5786,7 +5786,7 @@
.annotate 'line', 150
# rx subrule "before" subtype=zerowidth negate=
rx475_cur."!cursor_pos"(rx475_pos)
- .const 'Sub' $P483 = "137_1274022883.50471"
+ .const 'Sub' $P483 = "137_1274564774.16047"
capture_lex $P483
$P10 = rx475_cur."before"($P483)
unless $P10, rx475_fail
@@ -5893,7 +5893,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<name>" :subid("136_1274022883.50471") :method
+.sub "!PREFIX__assertion:sym<name>" :subid("136_1274564774.16047") :method
.annotate 'line', 3
new $P477, "ResizablePMCArray"
push $P477, ""
@@ -5902,7 +5902,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block482" :anon :subid("137_1274022883.50471") :method :outer("135_1274022883.50471")
+.sub "_block482" :anon :subid("137_1274564774.16047") :method :outer("135_1274564774.16047")
.annotate 'line', 150
.local string rx484_tgt
.local int rx484_pos
@@ -5958,9 +5958,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>" :subid("138_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "assertion:sym<[>" :subid("138_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P493 = "140_1274022883.50471"
+ .const 'Sub' $P493 = "140_1274564774.16047"
capture_lex $P493
.local string rx488_tgt
.local int rx488_pos
@@ -5995,7 +5995,7 @@
.annotate 'line', 158
# rx subrule "before" subtype=zerowidth negate=
rx488_cur."!cursor_pos"(rx488_pos)
- .const 'Sub' $P493 = "140_1274022883.50471"
+ .const 'Sub' $P493 = "140_1274564774.16047"
capture_lex $P493
$P10 = rx488_cur."before"($P493)
unless $P10, rx488_fail
@@ -6033,7 +6033,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<[>" :subid("139_1274022883.50471") :method
+.sub "!PREFIX__assertion:sym<[>" :subid("139_1274564774.16047") :method
.annotate 'line', 3
new $P490, "ResizablePMCArray"
push $P490, ""
@@ -6042,7 +6042,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block492" :anon :subid("140_1274022883.50471") :method :outer("138_1274022883.50471")
+.sub "_block492" :anon :subid("140_1274564774.16047") :method :outer("138_1274564774.16047")
.annotate 'line', 158
.local string rx494_tgt
.local int rx494_pos
@@ -6122,9 +6122,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem" :subid("141_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "cclass_elem" :subid("141_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P511 = "143_1274022883.50471"
+ .const 'Sub' $P511 = "143_1274564774.16047"
capture_lex $P511
.local string rx500_tgt
.local int rx500_pos
@@ -6227,7 +6227,7 @@
.annotate 'line', 164
# rx subrule $P511 subtype=capture negate=
rx500_cur."!cursor_pos"(rx500_pos)
- .const 'Sub' $P511 = "143_1274022883.50471"
+ .const 'Sub' $P511 = "143_1274564774.16047"
capture_lex $P511
$P10 = rx500_cur.$P511()
unless $P10, rx500_fail
@@ -6308,7 +6308,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__cclass_elem" :subid("142_1274022883.50471") :method
+.sub "!PREFIX__cclass_elem" :subid("142_1274564774.16047") :method
.annotate 'line', 3
new $P502, "ResizablePMCArray"
push $P502, ""
@@ -6319,13 +6319,13 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block510" :anon :subid("143_1274022883.50471") :method :outer("141_1274022883.50471")
+.sub "_block510" :anon :subid("143_1274564774.16047") :method :outer("141_1274564774.16047")
.annotate 'line', 164
- .const 'Sub' $P526 = "146_1274022883.50471"
+ .const 'Sub' $P526 = "146_1274564774.16047"
capture_lex $P526
- .const 'Sub' $P521 = "145_1274022883.50471"
+ .const 'Sub' $P521 = "145_1274564774.16047"
capture_lex $P521
- .const 'Sub' $P517 = "144_1274022883.50471"
+ .const 'Sub' $P517 = "144_1274564774.16047"
capture_lex $P517
.local string rx512_tgt
.local int rx512_pos
@@ -6396,7 +6396,7 @@
add rx512_pos, 1
# rx subrule $P517 subtype=capture negate=
rx512_cur."!cursor_pos"(rx512_pos)
- .const 'Sub' $P517 = "144_1274022883.50471"
+ .const 'Sub' $P517 = "144_1274564774.16047"
capture_lex $P517
$P10 = rx512_cur.$P517()
unless $P10, rx512_fail
@@ -6407,7 +6407,7 @@
alt515_1:
# rx subrule $P521 subtype=capture negate=
rx512_cur."!cursor_pos"(rx512_pos)
- .const 'Sub' $P521 = "145_1274022883.50471"
+ .const 'Sub' $P521 = "145_1274564774.16047"
capture_lex $P521
$P10 = rx512_cur.$P521()
unless $P10, rx512_fail
@@ -6436,7 +6436,7 @@
add rx512_pos, rx512_off, $I11
# rx subrule $P526 subtype=capture negate=
rx512_cur."!cursor_pos"(rx512_pos)
- .const 'Sub' $P526 = "146_1274022883.50471"
+ .const 'Sub' $P526 = "146_1274564774.16047"
capture_lex $P526
$P10 = rx512_cur.$P526()
unless $P10, rx512_fail
@@ -6465,7 +6465,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block516" :anon :subid("144_1274022883.50471") :method :outer("143_1274022883.50471")
+.sub "_block516" :anon :subid("144_1274564774.16047") :method :outer("143_1274564774.16047")
.annotate 'line', 166
.local string rx518_tgt
.local int rx518_pos
@@ -6517,7 +6517,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block520" :anon :subid("145_1274022883.50471") :method :outer("143_1274022883.50471")
+.sub "_block520" :anon :subid("145_1274564774.16047") :method :outer("143_1274564774.16047")
.annotate 'line', 166
.local string rx522_tgt
.local int rx522_pos
@@ -6573,7 +6573,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block525" :anon :subid("146_1274022883.50471") :method :outer("143_1274022883.50471")
+.sub "_block525" :anon :subid("146_1274564774.16047") :method :outer("143_1274564774.16047")
.annotate 'line', 166
.local string rx527_tgt
.local int rx527_pos
@@ -6625,9 +6625,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal" :subid("147_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "mod_internal" :subid("147_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P543 = "149_1274022883.50471"
+ .const 'Sub' $P543 = "149_1274564774.16047"
capture_lex $P543
.local string rx535_tgt
.local int rx535_pos
@@ -6677,7 +6677,7 @@
rxquantr541_loop:
# rx subrule $P543 subtype=capture negate=
rx535_cur."!cursor_pos"(rx535_pos)
- .const 'Sub' $P543 = "149_1274022883.50471"
+ .const 'Sub' $P543 = "149_1274564774.16047"
capture_lex $P543
$P10 = rx535_cur.$P543()
unless $P10, rx535_fail
@@ -6779,7 +6779,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_internal" :subid("148_1274022883.50471") :method
+.sub "!PREFIX__mod_internal" :subid("148_1274564774.16047") :method
.annotate 'line', 3
$P537 = self."!PREFIX__!subrule"("mod_ident", ":")
new $P538, "ResizablePMCArray"
@@ -6790,7 +6790,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block542" :anon :subid("149_1274022883.50471") :method :outer("147_1274022883.50471")
+.sub "_block542" :anon :subid("149_1274564774.16047") :method :outer("147_1274564774.16047")
.annotate 'line', 176
.local string rx544_tgt
.local int rx544_pos
@@ -6858,7 +6858,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident" :subid("150_1274022883.50471") :method
+.sub "mod_ident" :subid("150_1274564774.16047") :method
.annotate 'line', 181
$P552 = self."!protoregex"("mod_ident")
.return ($P552)
@@ -6866,7 +6866,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident" :subid("151_1274022883.50471") :method
+.sub "!PREFIX__mod_ident" :subid("151_1274564774.16047") :method
.annotate 'line', 181
$P554 = self."!PREFIX__!protoregex"("mod_ident")
.return ($P554)
@@ -6874,7 +6874,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ignorecase>" :subid("152_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "mod_ident:sym<ignorecase>" :subid("152_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx556_tgt
.local int rx556_pos
@@ -6959,7 +6959,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ignorecase>" :subid("153_1274022883.50471") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>" :subid("153_1274564774.16047") :method
.annotate 'line', 3
new $P558, "ResizablePMCArray"
push $P558, "i"
@@ -6968,7 +6968,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ratchet>" :subid("154_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "mod_ident:sym<ratchet>" :subid("154_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx564_tgt
.local int rx564_pos
@@ -7053,7 +7053,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ratchet>" :subid("155_1274022883.50471") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>" :subid("155_1274564774.16047") :method
.annotate 'line', 3
new $P566, "ResizablePMCArray"
push $P566, "r"
@@ -7062,7 +7062,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<sigspace>" :subid("156_1274022883.50471") :method :outer("11_1274022883.50471")
+.sub "mod_ident:sym<sigspace>" :subid("156_1274564774.16047") :method :outer("11_1274564774.16047")
.annotate 'line', 3
.local string rx572_tgt
.local int rx572_pos
@@ -7147,7 +7147,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<sigspace>" :subid("157_1274022883.50471") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>" :subid("157_1274564774.16047") :method
.annotate 'line', 3
new $P574, "ResizablePMCArray"
push $P574, "s"
@@ -7156,18 +7156,18 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block579" :load :anon :subid("158_1274022883.50471")
+.sub "_block579" :load :anon :subid("158_1274564774.16047")
.annotate 'line', 3
- .const 'Sub' $P581 = "11_1274022883.50471"
+ .const 'Sub' $P581 = "11_1274564774.16047"
$P582 = $P581()
.return ($P582)
.end
.namespace []
-.sub "_block584" :load :anon :subid("159_1274022883.50471")
+.sub "_block584" :load :anon :subid("159_1274564774.16047")
.annotate 'line', 1
- .const 'Sub' $P586 = "10_1274022883.50471"
+ .const 'Sub' $P586 = "10_1274564774.16047"
$P587 = $P586()
.return ($P587)
.end
@@ -7175,7 +7175,7 @@
### .include 'gen/p6regex-actions.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1274022889.08438")
+.sub "_block11" :anon :subid("10_1274564778.23532")
.annotate 'line', 0
get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13"
capture_lex $P14
@@ -7185,15 +7185,15 @@
$P1572 = $P14()
.annotate 'line', 1
.return ($P1572)
- .const 'Sub' $P1574 = "90_1274022889.08438"
+ .const 'Sub' $P1574 = "90_1274564778.23532"
.return ($P1574)
.end
.namespace []
-.sub "" :load :init :subid("post91") :outer("10_1274022889.08438")
+.sub "" :load :init :subid("post91") :outer("10_1274564778.23532")
.annotate 'line', 0
- .const 'Sub' $P12 = "10_1274022889.08438"
+ .const 'Sub' $P12 = "10_1274564778.23532"
.local pmc block
set block, $P12
$P1577 = get_root_global ["parrot"], "P6metaclass"
@@ -7202,115 +7202,115 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13" :subid("11_1274022889.08438") :outer("10_1274022889.08438")
+.sub "_block13" :subid("11_1274564778.23532") :outer("10_1274564778.23532")
.annotate 'line', 4
- .const 'Sub' $P1534 = "88_1274022889.08438"
+ .const 'Sub' $P1534 = "88_1274564778.23532"
capture_lex $P1534
- .const 'Sub' $P1465 = "84_1274022889.08438"
+ .const 'Sub' $P1465 = "84_1274564778.23532"
capture_lex $P1465
- .const 'Sub' $P1397 = "82_1274022889.08438"
+ .const 'Sub' $P1397 = "82_1274564778.23532"
capture_lex $P1397
- .const 'Sub' $P1324 = "79_1274022889.08438"
+ .const 'Sub' $P1324 = "79_1274564778.23532"
capture_lex $P1324
- .const 'Sub' $P1310 = "78_1274022889.08438"
+ .const 'Sub' $P1310 = "78_1274564778.23532"
capture_lex $P1310
- .const 'Sub' $P1286 = "77_1274022889.08438"
+ .const 'Sub' $P1286 = "77_1274564778.23532"
capture_lex $P1286
- .const 'Sub' $P1268 = "76_1274022889.08438"
+ .const 'Sub' $P1268 = "76_1274564778.23532"
capture_lex $P1268
- .const 'Sub' $P1254 = "75_1274022889.08438"
+ .const 'Sub' $P1254 = "75_1274564778.23532"
capture_lex $P1254
- .const 'Sub' $P1241 = "74_1274022889.08438"
+ .const 'Sub' $P1241 = "74_1274564778.23532"
capture_lex $P1241
- .const 'Sub' $P1210 = "73_1274022889.08438"
+ .const 'Sub' $P1210 = "73_1274564778.23532"
capture_lex $P1210
- .const 'Sub' $P1179 = "72_1274022889.08438"
+ .const 'Sub' $P1179 = "72_1274564778.23532"
capture_lex $P1179
- .const 'Sub' $P1163 = "71_1274022889.08438"
+ .const 'Sub' $P1163 = "71_1274564778.23532"
capture_lex $P1163
- .const 'Sub' $P1147 = "70_1274022889.08438"
+ .const 'Sub' $P1147 = "70_1274564778.23532"
capture_lex $P1147
- .const 'Sub' $P1131 = "69_1274022889.08438"
+ .const 'Sub' $P1131 = "69_1274564778.23532"
capture_lex $P1131
- .const 'Sub' $P1115 = "68_1274022889.08438"
+ .const 'Sub' $P1115 = "68_1274564778.23532"
capture_lex $P1115
- .const 'Sub' $P1099 = "67_1274022889.08438"
+ .const 'Sub' $P1099 = "67_1274564778.23532"
capture_lex $P1099
- .const 'Sub' $P1083 = "66_1274022889.08438"
+ .const 'Sub' $P1083 = "66_1274564778.23532"
capture_lex $P1083
- .const 'Sub' $P1067 = "65_1274022889.08438"
+ .const 'Sub' $P1067 = "65_1274564778.23532"
capture_lex $P1067
- .const 'Sub' $P1043 = "64_1274022889.08438"
+ .const 'Sub' $P1043 = "64_1274564778.23532"
capture_lex $P1043
- .const 'Sub' $P1028 = "63_1274022889.08438"
+ .const 'Sub' $P1028 = "63_1274564778.23532"
capture_lex $P1028
- .const 'Sub' $P972 = "62_1274022889.08438"
+ .const 'Sub' $P972 = "62_1274564778.23532"
capture_lex $P972
- .const 'Sub' $P951 = "61_1274022889.08438"
+ .const 'Sub' $P951 = "61_1274564778.23532"
capture_lex $P951
- .const 'Sub' $P929 = "60_1274022889.08438"
+ .const 'Sub' $P929 = "60_1274564778.23532"
capture_lex $P929
- .const 'Sub' $P919 = "59_1274022889.08438"
+ .const 'Sub' $P919 = "59_1274564778.23532"
capture_lex $P919
- .const 'Sub' $P909 = "58_1274022889.08438"
+ .const 'Sub' $P909 = "58_1274564778.23532"
capture_lex $P909
- .const 'Sub' $P899 = "57_1274022889.08438"
+ .const 'Sub' $P899 = "57_1274564778.23532"
capture_lex $P899
- .const 'Sub' $P887 = "56_1274022889.08438"
+ .const 'Sub' $P887 = "56_1274564778.23532"
capture_lex $P887
- .const 'Sub' $P875 = "55_1274022889.08438"
+ .const 'Sub' $P875 = "55_1274564778.23532"
capture_lex $P875
- .const 'Sub' $P863 = "54_1274022889.08438"
+ .const 'Sub' $P863 = "54_1274564778.23532"
capture_lex $P863
- .const 'Sub' $P851 = "53_1274022889.08438"
+ .const 'Sub' $P851 = "53_1274564778.23532"
capture_lex $P851
- .const 'Sub' $P839 = "52_1274022889.08438"
+ .const 'Sub' $P839 = "52_1274564778.23532"
capture_lex $P839
- .const 'Sub' $P827 = "51_1274022889.08438"
+ .const 'Sub' $P827 = "51_1274564778.23532"
capture_lex $P827
- .const 'Sub' $P815 = "50_1274022889.08438"
+ .const 'Sub' $P815 = "50_1274564778.23532"
capture_lex $P815
- .const 'Sub' $P803 = "49_1274022889.08438"
+ .const 'Sub' $P803 = "49_1274564778.23532"
capture_lex $P803
- .const 'Sub' $P780 = "48_1274022889.08438"
+ .const 'Sub' $P780 = "48_1274564778.23532"
capture_lex $P780
- .const 'Sub' $P757 = "47_1274022889.08438"
+ .const 'Sub' $P757 = "47_1274564778.23532"
capture_lex $P757
- .const 'Sub' $P739 = "46_1274022889.08438"
+ .const 'Sub' $P739 = "46_1274564778.23532"
capture_lex $P739
- .const 'Sub' $P729 = "45_1274022889.08438"
+ .const 'Sub' $P729 = "45_1274564778.23532"
capture_lex $P729
- .const 'Sub' $P711 = "44_1274022889.08438"
+ .const 'Sub' $P711 = "44_1274564778.23532"
capture_lex $P711
- .const 'Sub' $P664 = "43_1274022889.08438"
+ .const 'Sub' $P664 = "43_1274564778.23532"
capture_lex $P664
- .const 'Sub' $P647 = "42_1274022889.08438"
+ .const 'Sub' $P647 = "42_1274564778.23532"
capture_lex $P647
- .const 'Sub' $P632 = "41_1274022889.08438"
+ .const 'Sub' $P632 = "41_1274564778.23532"
capture_lex $P632
- .const 'Sub' $P617 = "40_1274022889.08438"
+ .const 'Sub' $P617 = "40_1274564778.23532"
capture_lex $P617
- .const 'Sub' $P591 = "39_1274022889.08438"
+ .const 'Sub' $P591 = "39_1274564778.23532"
capture_lex $P591
- .const 'Sub' $P541 = "37_1274022889.08438"
+ .const 'Sub' $P541 = "37_1274564778.23532"
capture_lex $P541
- .const 'Sub' $P473 = "35_1274022889.08438"
+ .const 'Sub' $P473 = "35_1274564778.23532"
capture_lex $P473
- .const 'Sub' $P418 = "32_1274022889.08438"
+ .const 'Sub' $P418 = "32_1274564778.23532"
capture_lex $P418
- .const 'Sub' $P403 = "31_1274022889.08438"
+ .const 'Sub' $P403 = "31_1274564778.23532"
capture_lex $P403
- .const 'Sub' $P377 = "29_1274022889.08438"
+ .const 'Sub' $P377 = "29_1274564778.23532"
capture_lex $P377
- .const 'Sub' $P360 = "28_1274022889.08438"
+ .const 'Sub' $P360 = "28_1274564778.23532"
capture_lex $P360
- .const 'Sub' $P338 = "27_1274022889.08438"
+ .const 'Sub' $P338 = "27_1274564778.23532"
capture_lex $P338
- .const 'Sub' $P305 = "26_1274022889.08438"
+ .const 'Sub' $P305 = "26_1274564778.23532"
capture_lex $P305
- .const 'Sub' $P50 = "13_1274022889.08438"
+ .const 'Sub' $P50 = "13_1274564778.23532"
capture_lex $P50
- .const 'Sub' $P16 = "12_1274022889.08438"
+ .const 'Sub' $P16 = "12_1274564778.23532"
capture_lex $P16
get_global $P15, "@MODIFIERS"
unless_null $P15, vivify_93
@@ -7318,19 +7318,19 @@
set_global "@MODIFIERS", $P15
vivify_93:
.annotate 'line', 479
- .const 'Sub' $P16 = "12_1274022889.08438"
+ .const 'Sub' $P16 = "12_1274564778.23532"
newclosure $P49, $P16
.lex "buildsub", $P49
.annotate 'line', 496
- .const 'Sub' $P50 = "13_1274022889.08438"
+ .const 'Sub' $P50 = "13_1274564778.23532"
newclosure $P304, $P50
.lex "capnames", $P304
.annotate 'line', 562
- .const 'Sub' $P305 = "26_1274022889.08438"
+ .const 'Sub' $P305 = "26_1274564778.23532"
newclosure $P337, $P305
.lex "backmod", $P337
.annotate 'line', 569
- .const 'Sub' $P338 = "27_1274022889.08438"
+ .const 'Sub' $P338 = "27_1274564778.23532"
newclosure $P358, $P338
.lex "subrule_alias", $P358
.annotate 'line', 4
@@ -7342,13 +7342,13 @@
find_lex $P1566, "subrule_alias"
.annotate 'line', 4
.return ($P1566)
- .const 'Sub' $P1568 = "89_1274022889.08438"
+ .const 'Sub' $P1568 = "89_1274564778.23532"
.return ($P1568)
.end
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "" :load :init :subid("post92") :outer("11_1274022889.08438")
+.sub "" :load :init :subid("post92") :outer("11_1274564778.23532")
.annotate 'line', 4
get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13"
.local pmc block
@@ -7364,7 +7364,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub" :subid("12_1274022889.08438") :outer("11_1274022889.08438")
+.sub "buildsub" :subid("12_1274564778.23532") :outer("11_1274564778.23532")
.param pmc param_19
.param pmc param_20 :optional
.param int has_param_20 :opt_flag
@@ -7441,19 +7441,19 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames" :subid("13_1274022889.08438") :outer("11_1274022889.08438")
+.sub "capnames" :subid("13_1274564778.23532") :outer("11_1274564778.23532")
.param pmc param_53
.param pmc param_54
.annotate 'line', 496
- .const 'Sub' $P279 = "24_1274022889.08438"
+ .const 'Sub' $P279 = "24_1274564778.23532"
capture_lex $P279
- .const 'Sub' $P216 = "21_1274022889.08438"
+ .const 'Sub' $P216 = "21_1274564778.23532"
capture_lex $P216
- .const 'Sub' $P174 = "19_1274022889.08438"
+ .const 'Sub' $P174 = "19_1274564778.23532"
capture_lex $P174
- .const 'Sub' $P132 = "17_1274022889.08438"
+ .const 'Sub' $P132 = "17_1274564778.23532"
capture_lex $P132
- .const 'Sub' $P65 = "14_1274022889.08438"
+ .const 'Sub' $P65 = "14_1274564778.23532"
capture_lex $P65
new $P52, 'ExceptionHandler'
set_addr $P52, control_51
@@ -7509,21 +7509,21 @@
set $S276, $P275
iseq $I277, $S276, "quant"
unless $I277, if_274_end
- .const 'Sub' $P279 = "24_1274022889.08438"
+ .const 'Sub' $P279 = "24_1274564778.23532"
capture_lex $P279
$P279()
if_274_end:
goto if_211_end
if_211:
.annotate 'line', 534
- .const 'Sub' $P216 = "21_1274022889.08438"
+ .const 'Sub' $P216 = "21_1274564778.23532"
capture_lex $P216
$P216()
if_211_end:
goto if_164_end
if_164:
.annotate 'line', 521
- .const 'Sub' $P174 = "19_1274022889.08438"
+ .const 'Sub' $P174 = "19_1274564778.23532"
capture_lex $P174
$P174()
if_164_end:
@@ -7543,7 +7543,7 @@
unless $P126, loop161_done
shift $P130, $P126
loop161_redo:
- .const 'Sub' $P132 = "17_1274022889.08438"
+ .const 'Sub' $P132 = "17_1274564778.23532"
capture_lex $P132
$P132($P130)
loop161_next:
@@ -7562,7 +7562,7 @@
goto if_60_end
if_60:
.annotate 'line', 499
- .const 'Sub' $P65 = "14_1274022889.08438"
+ .const 'Sub' $P65 = "14_1274564778.23532"
capture_lex $P65
$P65()
if_60_end:
@@ -7586,9 +7586,9 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block278" :anon :subid("24_1274022889.08438") :outer("13_1274022889.08438")
+.sub "_block278" :anon :subid("24_1274564778.23532") :outer("13_1274564778.23532")
.annotate 'line', 551
- .const 'Sub' $P290 = "25_1274022889.08438"
+ .const 'Sub' $P290 = "25_1274564778.23532"
capture_lex $P290
.annotate 'line', 552
$P280 = root_new ['parrot';'Hash']
@@ -7617,7 +7617,7 @@
unless $P285, loop295_done
shift $P288, $P285
loop295_redo:
- .const 'Sub' $P290 = "25_1274022889.08438"
+ .const 'Sub' $P290 = "25_1274564778.23532"
capture_lex $P290
$P290($P288)
loop295_next:
@@ -7647,7 +7647,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block289" :anon :subid("25_1274022889.08438") :outer("24_1274022889.08438")
+.sub "_block289" :anon :subid("25_1274564778.23532") :outer("24_1274564778.23532")
.param pmc param_291
.annotate 'line', 553
.lex "$_", param_291
@@ -7667,11 +7667,11 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block215" :anon :subid("21_1274022889.08438") :outer("13_1274022889.08438")
+.sub "_block215" :anon :subid("21_1274564778.23532") :outer("13_1274564778.23532")
.annotate 'line', 534
- .const 'Sub' $P256 = "23_1274022889.08438"
+ .const 'Sub' $P256 = "23_1274564778.23532"
capture_lex $P256
- .const 'Sub' $P228 = "22_1274022889.08438"
+ .const 'Sub' $P228 = "22_1274564778.23532"
capture_lex $P228
.annotate 'line', 535
new $P217, "Undef"
@@ -7706,7 +7706,7 @@
unless $P223, loop244_done
shift $P226, $P223
loop244_redo:
- .const 'Sub' $P228 = "22_1274022889.08438"
+ .const 'Sub' $P228 = "22_1274564778.23532"
capture_lex $P228
$P228($P226)
loop244_next:
@@ -7745,7 +7745,7 @@
unless $P251, loop269_done
shift $P254, $P251
loop269_redo:
- .const 'Sub' $P256 = "23_1274022889.08438"
+ .const 'Sub' $P256 = "23_1274564778.23532"
capture_lex $P256
$P256($P254)
loop269_next:
@@ -7775,7 +7775,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block227" :anon :subid("22_1274022889.08438") :outer("21_1274022889.08438")
+.sub "_block227" :anon :subid("22_1274564778.23532") :outer("21_1274564778.23532")
.param pmc param_229
.annotate 'line', 541
.lex "$_", param_229
@@ -7815,7 +7815,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block255" :anon :subid("23_1274022889.08438") :outer("21_1274022889.08438")
+.sub "_block255" :anon :subid("23_1274564778.23532") :outer("21_1274564778.23532")
.param pmc param_257
.annotate 'line', 546
.lex "$_", param_257
@@ -7855,9 +7855,9 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block173" :anon :subid("19_1274022889.08438") :outer("13_1274022889.08438")
+.sub "_block173" :anon :subid("19_1274564778.23532") :outer("13_1274564778.23532")
.annotate 'line', 521
- .const 'Sub' $P192 = "20_1274022889.08438"
+ .const 'Sub' $P192 = "20_1274564778.23532"
capture_lex $P192
.annotate 'line', 522
new $P175, "Undef"
@@ -7900,7 +7900,7 @@
unless $P187, loop208_done
shift $P190, $P187
loop208_redo:
- .const 'Sub' $P192 = "20_1274022889.08438"
+ .const 'Sub' $P192 = "20_1274564778.23532"
capture_lex $P192
$P192($P190)
loop208_next:
@@ -7920,7 +7920,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block191" :anon :subid("20_1274022889.08438") :outer("19_1274022889.08438")
+.sub "_block191" :anon :subid("20_1274564778.23532") :outer("19_1274564778.23532")
.param pmc param_193
.annotate 'line', 529
.lex "$_", param_193
@@ -7960,10 +7960,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block131" :anon :subid("17_1274022889.08438") :outer("13_1274022889.08438")
+.sub "_block131" :anon :subid("17_1274564778.23532") :outer("13_1274564778.23532")
.param pmc param_134
.annotate 'line', 513
- .const 'Sub' $P143 = "18_1274022889.08438"
+ .const 'Sub' $P143 = "18_1274564778.23532"
capture_lex $P143
.annotate 'line', 514
$P133 = root_new ['parrot';'Hash']
@@ -7986,7 +7986,7 @@
unless $P138, loop156_done
shift $P141, $P138
loop156_redo:
- .const 'Sub' $P143 = "18_1274022889.08438"
+ .const 'Sub' $P143 = "18_1274564778.23532"
capture_lex $P143
$P143($P141)
loop156_next:
@@ -8016,7 +8016,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block142" :anon :subid("18_1274022889.08438") :outer("17_1274022889.08438")
+.sub "_block142" :anon :subid("18_1274564778.23532") :outer("17_1274564778.23532")
.param pmc param_144
.annotate 'line', 515
.lex "$_", param_144
@@ -8056,9 +8056,9 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block64" :anon :subid("14_1274022889.08438") :outer("13_1274022889.08438")
+.sub "_block64" :anon :subid("14_1274564778.23532") :outer("13_1274564778.23532")
.annotate 'line', 499
- .const 'Sub' $P74 = "15_1274022889.08438"
+ .const 'Sub' $P74 = "15_1274564778.23532"
capture_lex $P74
.annotate 'line', 500
new $P66, "Undef"
@@ -8079,7 +8079,7 @@
unless $P68, loop118_done
shift $P72, $P68
loop118_redo:
- .const 'Sub' $P74 = "15_1274022889.08438"
+ .const 'Sub' $P74 = "15_1274564778.23532"
capture_lex $P74
$P74($P72)
loop118_next:
@@ -8102,10 +8102,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block73" :anon :subid("15_1274022889.08438") :outer("14_1274022889.08438")
+.sub "_block73" :anon :subid("15_1274564778.23532") :outer("14_1274564778.23532")
.param pmc param_76
.annotate 'line', 501
- .const 'Sub' $P85 = "16_1274022889.08438"
+ .const 'Sub' $P85 = "16_1274564778.23532"
capture_lex $P85
.annotate 'line', 502
$P75 = root_new ['parrot';'Hash']
@@ -8128,7 +8128,7 @@
unless $P80, loop105_done
shift $P83, $P80
loop105_redo:
- .const 'Sub' $P85 = "16_1274022889.08438"
+ .const 'Sub' $P85 = "16_1274564778.23532"
capture_lex $P85
$P85($P83)
loop105_next:
@@ -8177,7 +8177,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block84" :anon :subid("16_1274022889.08438") :outer("15_1274022889.08438")
+.sub "_block84" :anon :subid("16_1274564778.23532") :outer("15_1274564778.23532")
.param pmc param_86
.annotate 'line', 503
.lex "$_", param_86
@@ -8236,7 +8236,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod" :subid("26_1274022889.08438") :outer("11_1274022889.08438")
+.sub "backmod" :subid("26_1274564778.23532") :outer("11_1274564778.23532")
.param pmc param_308
.param pmc param_309
.annotate 'line', 562
@@ -8310,7 +8310,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias" :subid("27_1274022889.08438") :outer("11_1274022889.08438")
+.sub "subrule_alias" :subid("27_1274564778.23532") :outer("11_1274564778.23532")
.param pmc param_341
.param pmc param_342
.annotate 'line', 569
@@ -8354,7 +8354,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg" :subid("28_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "arg" :subid("28_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_363
.annotate 'line', 14
new $P362, 'ExceptionHandler'
@@ -8410,10 +8410,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist" :subid("29_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "arglist" :subid("29_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_380
.annotate 'line', 18
- .const 'Sub' $P390 = "30_1274022889.08438"
+ .const 'Sub' $P390 = "30_1274564778.23532"
capture_lex $P390
new $P379, 'ExceptionHandler'
set_addr $P379, control_378
@@ -8447,7 +8447,7 @@
unless $P384, loop396_done
shift $P388, $P384
loop396_redo:
- .const 'Sub' $P390 = "30_1274022889.08438"
+ .const 'Sub' $P390 = "30_1274564778.23532"
capture_lex $P390
$P390($P388)
loop396_next:
@@ -8476,7 +8476,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block389" :anon :subid("30_1274022889.08438") :outer("29_1274022889.08438")
+.sub "_block389" :anon :subid("30_1274564778.23532") :outer("29_1274564778.23532")
.param pmc param_391
.annotate 'line', 20
.lex "$_", param_391
@@ -8489,7 +8489,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP" :subid("31_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "TOP" :subid("31_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_406
.annotate 'line', 24
new $P405, 'ExceptionHandler'
@@ -8531,14 +8531,14 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler" :subid("32_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "nibbler" :subid("32_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_421
.param pmc param_422 :optional
.param int has_param_422 :opt_flag
.annotate 'line', 30
- .const 'Sub' $P456 = "34_1274022889.08438"
+ .const 'Sub' $P456 = "34_1274564778.23532"
capture_lex $P456
- .const 'Sub' $P430 = "33_1274022889.08438"
+ .const 'Sub' $P430 = "33_1274564778.23532"
capture_lex $P430
new $P420, 'ExceptionHandler'
set_addr $P420, control_419
@@ -8559,7 +8559,7 @@
set $S427, $P426
iseq $I428, $S427, "open"
unless $I428, if_425_end
- .const 'Sub' $P430 = "33_1274022889.08438"
+ .const 'Sub' $P430 = "33_1274564778.23532"
capture_lex $P430
$P430()
if_425_end:
@@ -8622,7 +8622,7 @@
unless $P450, loop462_done
shift $P454, $P450
loop462_redo:
- .const 'Sub' $P456 = "34_1274022889.08438"
+ .const 'Sub' $P456 = "34_1274564778.23532"
capture_lex $P456
$P456($P454)
loop462_next:
@@ -8652,7 +8652,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block429" :anon :subid("33_1274022889.08438") :outer("32_1274022889.08438")
+.sub "_block429" :anon :subid("33_1274564778.23532") :outer("32_1274564778.23532")
.annotate 'line', 32
$P431 = root_new ['parrot';'Hash']
.lex "%old", $P431
@@ -8692,7 +8692,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block455" :anon :subid("34_1274022889.08438") :outer("32_1274022889.08438")
+.sub "_block455" :anon :subid("34_1274564778.23532") :outer("32_1274564778.23532")
.param pmc param_457
.annotate 'line', 45
.lex "$_", param_457
@@ -8707,10 +8707,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish" :subid("35_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "termish" :subid("35_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_476
.annotate 'line', 55
- .const 'Sub' $P489 = "36_1274022889.08438"
+ .const 'Sub' $P489 = "36_1274564778.23532"
capture_lex $P489
new $P475, 'ExceptionHandler'
set_addr $P475, control_474
@@ -8753,7 +8753,7 @@
unless $P483, loop534_done
shift $P487, $P483
loop534_redo:
- .const 'Sub' $P489 = "36_1274022889.08438"
+ .const 'Sub' $P489 = "36_1274564778.23532"
capture_lex $P489
$P489($P487)
loop534_next:
@@ -8782,7 +8782,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block488" :anon :subid("36_1274022889.08438") :outer("35_1274022889.08438")
+.sub "_block488" :anon :subid("36_1274564778.23532") :outer("35_1274564778.23532")
.param pmc param_491
.annotate 'line', 59
new $P490, "Undef"
@@ -8909,10 +8909,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom" :subid("37_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "quantified_atom" :subid("37_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_544
.annotate 'line', 76
- .const 'Sub' $P553 = "38_1274022889.08438"
+ .const 'Sub' $P553 = "38_1274564778.23532"
capture_lex $P553
new $P543, 'ExceptionHandler'
set_addr $P543, control_542
@@ -8975,7 +8975,7 @@
goto if_549_end
if_549:
.annotate 'line', 78
- .const 'Sub' $P553 = "38_1274022889.08438"
+ .const 'Sub' $P553 = "38_1274564778.23532"
capture_lex $P553
$P553()
if_549_end:
@@ -9029,7 +9029,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block552" :anon :subid("38_1274022889.08438") :outer("37_1274022889.08438")
+.sub "_block552" :anon :subid("38_1274564778.23532") :outer("37_1274564778.23532")
.annotate 'line', 80
new $P554, "Undef"
.lex "$qast", $P554
@@ -9068,7 +9068,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom" :subid("39_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "atom" :subid("39_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_594
.annotate 'line', 91
new $P593, 'ExceptionHandler'
@@ -9146,7 +9146,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>" :subid("40_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "quantifier:sym<*>" :subid("40_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_620
.annotate 'line', 101
new $P619, 'ExceptionHandler'
@@ -9186,7 +9186,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>" :subid("41_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "quantifier:sym<+>" :subid("41_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_635
.annotate 'line', 106
new $P634, 'ExceptionHandler'
@@ -9226,7 +9226,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>" :subid("42_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "quantifier:sym<?>" :subid("42_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_650
.annotate 'line', 111
new $P649, 'ExceptionHandler'
@@ -9270,7 +9270,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>" :subid("43_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "quantifier:sym<**>" :subid("43_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_667
.annotate 'line', 117
new $P666, 'ExceptionHandler'
@@ -9410,7 +9410,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>" :subid("44_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<ws>" :subid("44_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_714
.annotate 'line', 131
new $P713, 'ExceptionHandler'
@@ -9462,7 +9462,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>" :subid("45_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<[ ]>" :subid("45_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_732
.annotate 'line', 140
new $P731, 'ExceptionHandler'
@@ -9494,7 +9494,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>" :subid("46_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<( )>" :subid("46_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_742
.annotate 'line', 144
new $P741, 'ExceptionHandler'
@@ -9542,7 +9542,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>" :subid("47_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<'>" :subid("47_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_760
.annotate 'line', 151
new $P759, 'ExceptionHandler'
@@ -9598,7 +9598,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">" :subid("48_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<\">" :subid("48_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_783
.annotate 'line', 158
new $P782, 'ExceptionHandler'
@@ -9654,7 +9654,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>" :subid("49_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<.>" :subid("49_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_806
.annotate 'line', 165
new $P805, 'ExceptionHandler'
@@ -9685,7 +9685,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>" :subid("50_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<^>" :subid("50_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_818
.annotate 'line', 170
new $P817, 'ExceptionHandler'
@@ -9716,7 +9716,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>" :subid("51_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<^^>" :subid("51_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_830
.annotate 'line', 175
new $P829, 'ExceptionHandler'
@@ -9747,7 +9747,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>" :subid("52_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<$>" :subid("52_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_842
.annotate 'line', 180
new $P841, 'ExceptionHandler'
@@ -9778,7 +9778,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>" :subid("53_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<$$>" :subid("53_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_854
.annotate 'line', 185
new $P853, 'ExceptionHandler'
@@ -9809,7 +9809,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>" :subid("54_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<:::>" :subid("54_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_866
.annotate 'line', 190
new $P865, 'ExceptionHandler'
@@ -9840,7 +9840,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>" :subid("55_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<lwb>" :subid("55_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_878
.annotate 'line', 195
new $P877, 'ExceptionHandler'
@@ -9871,7 +9871,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>" :subid("56_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<rwb>" :subid("56_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_890
.annotate 'line', 200
new $P889, 'ExceptionHandler'
@@ -9902,7 +9902,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>" :subid("57_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<bs>" :subid("57_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_902
.annotate 'line', 205
new $P901, 'ExceptionHandler'
@@ -9934,7 +9934,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>" :subid("58_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<mod>" :subid("58_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_912
.annotate 'line', 209
new $P911, 'ExceptionHandler'
@@ -9966,7 +9966,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>" :subid("59_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<assert>" :subid("59_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_922
.annotate 'line', 213
new $P921, 'ExceptionHandler'
@@ -9998,7 +9998,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>" :subid("60_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<~>" :subid("60_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_932
.annotate 'line', 217
new $P931, 'ExceptionHandler'
@@ -10060,7 +10060,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>" :subid("61_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<{*}>" :subid("61_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_954
.annotate 'line', 230
new $P953, 'ExceptionHandler'
@@ -10121,7 +10121,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>" :subid("62_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<var>" :subid("62_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_975
.annotate 'line', 237
new $P974, 'ExceptionHandler'
@@ -10281,7 +10281,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>" :subid("63_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "metachar:sym<PIR>" :subid("63_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1031
.annotate 'line', 257
new $P1030, 'ExceptionHandler'
@@ -10320,7 +10320,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>" :subid("64_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<w>" :subid("64_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1046
.annotate 'line', 265
new $P1045, 'ExceptionHandler'
@@ -10386,7 +10386,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>" :subid("65_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<b>" :subid("65_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1070
.annotate 'line', 271
new $P1069, 'ExceptionHandler'
@@ -10429,7 +10429,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>" :subid("66_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<e>" :subid("66_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1086
.annotate 'line', 277
new $P1085, 'ExceptionHandler'
@@ -10472,7 +10472,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>" :subid("67_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<f>" :subid("67_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1102
.annotate 'line', 283
new $P1101, 'ExceptionHandler'
@@ -10515,7 +10515,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>" :subid("68_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<h>" :subid("68_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1118
.annotate 'line', 289
new $P1117, 'ExceptionHandler'
@@ -10558,7 +10558,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>" :subid("69_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<r>" :subid("69_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1134
.annotate 'line', 295
new $P1133, 'ExceptionHandler'
@@ -10601,7 +10601,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>" :subid("70_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<t>" :subid("70_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1150
.annotate 'line', 301
new $P1149, 'ExceptionHandler'
@@ -10644,7 +10644,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>" :subid("71_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<v>" :subid("71_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1166
.annotate 'line', 307
new $P1165, 'ExceptionHandler'
@@ -10687,7 +10687,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>" :subid("72_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<o>" :subid("72_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1182
.annotate 'line', 314
new $P1181, 'ExceptionHandler'
@@ -10770,7 +10770,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>" :subid("73_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<x>" :subid("73_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1213
.annotate 'line', 323
new $P1212, 'ExceptionHandler'
@@ -10853,7 +10853,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<c>" :subid("74_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<c>" :subid("74_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1244
.annotate 'line', 332
new $P1243, 'ExceptionHandler'
@@ -10888,7 +10888,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>" :subid("75_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "backslash:sym<misc>" :subid("75_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1257
.annotate 'line', 336
new $P1256, 'ExceptionHandler'
@@ -10921,7 +10921,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>" :subid("76_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "assertion:sym<?>" :subid("76_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1271
.annotate 'line', 342
new $P1270, 'ExceptionHandler'
@@ -10981,7 +10981,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>" :subid("77_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "assertion:sym<!>" :subid("77_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1289
.annotate 'line', 352
new $P1288, 'ExceptionHandler'
@@ -11049,7 +11049,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>" :subid("78_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "assertion:sym<method>" :subid("78_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1313
.annotate 'line', 365
new $P1312, 'ExceptionHandler'
@@ -11092,12 +11092,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>" :subid("79_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "assertion:sym<name>" :subid("79_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1327
.annotate 'line', 372
- .const 'Sub' $P1385 = "81_1274022889.08438"
+ .const 'Sub' $P1385 = "81_1274564778.23532"
capture_lex $P1385
- .const 'Sub' $P1349 = "80_1274022889.08438"
+ .const 'Sub' $P1349 = "80_1274564778.23532"
capture_lex $P1349
new $P1326, 'ExceptionHandler'
set_addr $P1326, control_1325
@@ -11193,7 +11193,7 @@
unless $P1376, loop1390_done
shift $P1383, $P1376
loop1390_redo:
- .const 'Sub' $P1385 = "81_1274022889.08438"
+ .const 'Sub' $P1385 = "81_1274564778.23532"
capture_lex $P1385
$P1385($P1383)
loop1390_next:
@@ -11233,7 +11233,7 @@
goto if_1344_end
if_1344:
.annotate 'line', 379
- .const 'Sub' $P1349 = "80_1274022889.08438"
+ .const 'Sub' $P1349 = "80_1274564778.23532"
capture_lex $P1349
$P1349()
if_1344_end:
@@ -11274,7 +11274,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1384" :anon :subid("81_1274022889.08438") :outer("79_1274022889.08438")
+.sub "_block1384" :anon :subid("81_1274564778.23532") :outer("79_1274564778.23532")
.param pmc param_1386
.annotate 'line', 401
.lex "$_", param_1386
@@ -11286,7 +11286,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1348" :anon :subid("80_1274022889.08438") :outer("79_1274022889.08438")
+.sub "_block1348" :anon :subid("80_1274564778.23532") :outer("79_1274564778.23532")
.annotate 'line', 380
new $P1350, "Undef"
.lex "$regexsym", $P1350
@@ -11317,10 +11317,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>" :subid("82_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "assertion:sym<[>" :subid("82_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1400
.annotate 'line', 407
- .const 'Sub' $P1435 = "83_1274022889.08438"
+ .const 'Sub' $P1435 = "83_1274564778.23532"
capture_lex $P1435
new $P1399, 'ExceptionHandler'
set_addr $P1399, control_1398
@@ -11412,7 +11412,7 @@
islt $I1433, $N1430, $N1432
unless $I1433, loop1458_done
loop1458_redo:
- .const 'Sub' $P1435 = "83_1274022889.08438"
+ .const 'Sub' $P1435 = "83_1274564778.23532"
capture_lex $P1435
$P1435()
loop1458_next:
@@ -11440,7 +11440,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1434" :anon :subid("83_1274022889.08438") :outer("82_1274022889.08438")
+.sub "_block1434" :anon :subid("83_1274564778.23532") :outer("82_1274564778.23532")
.annotate 'line', 421
new $P1436, "Undef"
.lex "$ast", $P1436
@@ -11491,12 +11491,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem" :subid("84_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "cclass_elem" :subid("84_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1468
.annotate 'line', 434
- .const 'Sub' $P1493 = "86_1274022889.08438"
+ .const 'Sub' $P1493 = "86_1274564778.23532"
capture_lex $P1493
- .const 'Sub' $P1477 = "85_1274022889.08438"
+ .const 'Sub' $P1477 = "85_1274564778.23532"
capture_lex $P1477
new $P1467, 'ExceptionHandler'
set_addr $P1467, control_1466
@@ -11545,7 +11545,7 @@
unless $P1487, loop1518_done
shift $P1491, $P1487
loop1518_redo:
- .const 'Sub' $P1493 = "86_1274022889.08438"
+ .const 'Sub' $P1493 = "86_1274564778.23532"
capture_lex $P1493
$P1493($P1491)
loop1518_next:
@@ -11569,7 +11569,7 @@
goto if_1473_end
if_1473:
.annotate 'line', 437
- .const 'Sub' $P1477 = "85_1274022889.08438"
+ .const 'Sub' $P1477 = "85_1274564778.23532"
capture_lex $P1477
$P1477()
if_1473_end:
@@ -11601,10 +11601,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1492" :anon :subid("86_1274022889.08438") :outer("84_1274022889.08438")
+.sub "_block1492" :anon :subid("86_1274564778.23532") :outer("84_1274564778.23532")
.param pmc param_1494
.annotate 'line', 441
- .const 'Sub' $P1500 = "87_1274022889.08438"
+ .const 'Sub' $P1500 = "87_1274564778.23532"
capture_lex $P1500
.lex "$_", param_1494
.annotate 'line', 442
@@ -11633,7 +11633,7 @@
.annotate 'line', 442
goto if_1496_end
if_1496:
- .const 'Sub' $P1500 = "87_1274022889.08438"
+ .const 'Sub' $P1500 = "87_1274564778.23532"
capture_lex $P1500
$P1513 = $P1500()
set $P1495, $P1513
@@ -11644,7 +11644,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1499" :anon :subid("87_1274022889.08438") :outer("86_1274022889.08438")
+.sub "_block1499" :anon :subid("87_1274564778.23532") :outer("86_1274564778.23532")
.annotate 'line', 443
new $P1501, "Undef"
.lex "$a", $P1501
@@ -11708,7 +11708,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1476" :anon :subid("85_1274022889.08438") :outer("84_1274022889.08438")
+.sub "_block1476" :anon :subid("85_1274564778.23532") :outer("84_1274564778.23532")
.annotate 'line', 438
new $P1478, "Undef"
.lex "$name", $P1478
@@ -11736,7 +11736,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal" :subid("88_1274022889.08438") :method :outer("11_1274022889.08438")
+.sub "mod_internal" :subid("88_1274564778.23532") :method :outer("11_1274564778.23532")
.param pmc param_1537
.annotate 'line', 472
new $P1536, 'ExceptionHandler'
@@ -11834,18 +11834,18 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1567" :load :anon :subid("89_1274022889.08438")
+.sub "_block1567" :load :anon :subid("89_1274564778.23532")
.annotate 'line', 4
- .const 'Sub' $P1569 = "11_1274022889.08438"
+ .const 'Sub' $P1569 = "11_1274564778.23532"
$P1570 = $P1569()
.return ($P1570)
.end
.namespace []
-.sub "_block1573" :load :anon :subid("90_1274022889.08438")
+.sub "_block1573" :load :anon :subid("90_1274564778.23532")
.annotate 'line', 1
- .const 'Sub' $P1575 = "10_1274022889.08438"
+ .const 'Sub' $P1575 = "10_1274564778.23532"
$P1576 = $P1575()
.return ($P1576)
.end
Modified: branches/ops_massacre/ext/nqp-rx/src/stage0/Regex-s0.pir
==============================================================================
--- branches/ops_massacre/ext/nqp-rx/src/stage0/Regex-s0.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/ext/nqp-rx/src/stage0/Regex-s0.pir Mon May 24 08:26:56 2010 (r46947)
@@ -719,6 +719,82 @@
.return (cur)
.end
+=item !process_pastnode_results_for_interpolation
+
+Used by the pastnode PAST::Regex type to prepare the results of the evaluation for interpolation.
+
+Takes two arguments:
+
+=over 4
+
+=item The node results
+
+=item The subtype of the PAST::Regex node, which is one of:
+
+=over 4
+
+=item interp_regex
+
+String values should be compiled into regexes and then interpolated.
+
+=item interp_literal
+
+String values should be treated as literals.
+
+=item interp_literal_i
+
+String values should be treated as literals and matched case-insensitively.
+
+=back
+
+=back
+
+Returns a RPA containing the elements to be interpolated
+
+=cut
+
+.sub '!process_pastnode_results_for_interpolation' :method
+ .param pmc node
+ .param string subtype
+
+ .local pmc it, result, compiler, context
+ .local string codestr
+
+ result = new ['ResizablePMCArray']
+ $S0 = typeof node
+ if $S0 == 'ResizablePMCArray' goto array
+ $P1 = node
+ it = box 0
+ goto not_array
+ array:
+ it = iter node
+ loop:
+ unless it, loop_done
+ $P1 = shift it
+ not_array:
+ if subtype != 'interp_regex' goto literal
+ # Don't need to compile it if it's already a Sub
+ $I0 = isa $P1, ['Sub']
+ if $I0 goto literal
+ codestr = $P1
+ $P1 = split '/', codestr
+ codestr = join '\\/', $P1
+ codestr = concat '/', codestr
+ codestr = concat codestr, '/'
+ compiler = compreg 'NQP-rx'
+ $P2 = getinterp
+ context = $P2['context';0]
+ $P2 = compiler.'compile'(codestr, 'outer_ctx'=>context)
+ $P1 = $P2[0]
+ $P2 = getattribute context, 'current_sub'
+ $P1.'set_outer'($P2)
+ $P1 = $P1()
+ literal:
+ push result, $P1
+ goto loop
+ loop_done:
+ .return (result)
+.end
=back
@@ -1921,7 +1997,7 @@
# vim: expandtab shiftwidth=4 ft=pir:
### .include 'src/PAST/Regex.pir'
-# $Id: Regex.pir 41578 2009-09-30 14:45:23Z pmichaud $
+# $Id$
=head1 NAME
@@ -2972,31 +3048,126 @@
=item 'pastnode'(PAST::Regex node)
+Evaluates the supplied PAST node and does various things with the result, based on subtype.
+
+Subtype can be any of:
+
+=over 4
+
+=item zerowidth
+
+Only test for truthiness and fail or not. No interpolation.
+
+=item interp_regex
+
+String values should be compiled into regexes and then interpolated.
+
+=item interp_literal
+
+String values should be treated as literals.
+
+=item interp_literal_i
+
+String values should be treated as literals and matched case-insensitively.
+
+=item <nothing>
+
+Don't interpolate anything, just execute the PAST code
+
+=back
+
=cut
-.sub 'pastnode' :method :multi(_, ['PAST';'Regex'])
+.sub 'pastnode' :method :multi(_, ['PAST'; 'Regex'])
.param pmc node
- .local pmc cur, pos, fail, ops
- (cur, pos, fail) = self.'!rxregs'('cur pos fail')
+ .local pmc cur, pos, fail, ops, eos, off, tgt
+ (cur, pos, eos, off, tgt, fail) = self.'!rxregs'('cur pos eos off tgt fail')
ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+ .local pmc zerowidth, negate, testop, subtype
+ subtype = node.'subtype'()
+ ops.'push_pirop'('inline', subtype, negate, 'inline'=>' # rx pastnode subtype=%1 negate=%2')
.local pmc cpast, cpost
cpast = node[0]
cpost = self.'as_post'(cpast, 'rtype'=>'P')
-
+
self.'!cursorop'(ops, '!cursor_pos', 0, pos)
ops.'push'(cpost)
- .local pmc subtype, negate, testop
- subtype = node.'subtype'()
- if subtype != 'zerowidth' goto done
+ # If this is just a zerowidth assertion, we don't actually interpolate anything. Just evaluate
+ # and fail or not.
+ if subtype == 'zerowidth' goto zerowidth_test
+
+ # Retain backwards compatibility with old pastnode semantics
+ unless subtype goto done
+
+ .local string prefix
+ prefix = self.'unique'('pastnode_')
+ .local pmc precompiled_label, done_label, loop_label, iterator_reg, label_reg
+ $S0 = concat prefix, '_precompiled'
+ precompiled_label = self.'post_new'('Label', 'result'=>$S0)
+ $S0 = concat prefix, '_done'
+ done_label = self.'post_new'('Label', 'result'=>$S0)
+ $S0 = concat prefix, '_loop'
+ loop_label = self.'post_new'('Label', 'result'=>$S0)
+ iterator_reg = self.'uniquereg'("P")
+ label_reg = self.'uniquereg'("I")
+
+ $S10 = subtype
+ $S10 = concat '"', $S10
+ $S10 = concat $S10, '"'
+ self.'!cursorop'(ops, '!process_pastnode_results_for_interpolation', 1, '$P10', cpost, $S10)
+
+ ops.'push_pirop'('iter', iterator_reg, '$P10')
+ ops.'push_pirop'('set_addr', label_reg, loop_label)
+ ops.'push'(loop_label)
+ ops.'push_pirop'('unless', iterator_reg, fail)
+ ops.'push_pirop'('shift', '$P10', iterator_reg)
+ self.'!cursorop'(ops, '!mark_push', 0, 0, pos, label_reg)
+
+ # Check if it's already a compiled Regex, and call it as a method if so
+ ops.'push_pirop'('isa', '$I10', '$P10', "['Sub']")
+ ops.'push_pirop'('if', '$I10', precompiled_label)
+
+ # XXX This is rakudo's Regex class. I'm not sure why the above test doesn't catch it, but
+ # need to figure it out so NQP doesn't have rakudo knowledge :(
+ ops.'push_pirop'('isa', '$I10', '$P10', "['Regex']")
+ ops.'push_pirop'('if', '$I10', precompiled_label)
+
+ # Otherwise, treat it as a literal
+ ops.'push_pirop'('set', '$S10', '$P10')
+ ops.'push_pirop'('length', '$I10', '$S10')
+ ops.'push_pirop'('add', '$I11', pos, '$I10')
+ ops.'push_pirop'('gt', '$I11', eos, fail)
+ ops.'push_pirop'('sub', '$I11', pos, off)
+ ops.'push_pirop'('substr', '$S11', tgt, '$I11', '$I10')
+ ne subtype, 'interp_literal_i', dont_downcase
+ ops.'push_pirop'('downcase', '$S10', '$S10')
+ ops.'push_pirop'('downcase', '$S11', '$S11')
+ dont_downcase:
+ ops.'push_pirop'('ne', '$S11', '$S10', fail)
+ ops.'push_pirop'('add', pos, '$I10')
+ ops.'push_pirop'('goto', done_label)
+
+ ops.'push'(precompiled_label)
+ ops.'push_pirop'('callmethod', '$P10', cur, 'result'=>'$P10')
+ ops.'push_pirop'('unless', '$P10', fail)
+ self.'!cursorop'(ops, '!mark_push', 0, 0, CURSOR_FAIL, 0, '$P10')
+ ops.'push_pirop'('callmethod', '"pos"', '$P10', 'result'=>pos)
+
+ ops.'push'(done_label)
+
+ goto done
+
+ zerowidth_test:
negate = node.'negate'()
testop = self.'??!!'(negate, 'if', 'unless')
ops.'push_pirop'(testop, cpost, fail)
done:
.return (ops)
-.end
+.end
=item pass(PAST::Regex node)
Modified: branches/ops_massacre/ext/nqp-rx/src/stage0/nqp-setting.nqp
==============================================================================
--- branches/ops_massacre/ext/nqp-rx/src/stage0/nqp-setting.nqp Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/ext/nqp-rx/src/stage0/nqp-setting.nqp Mon May 24 08:26:56 2010 (r46947)
@@ -154,17 +154,17 @@
our sub match ($text, $regex, :$global?) {
my $match := $text ~~ $regex;
+ my @matches;
if $global {
- my @matches;
while $match {
@matches.push($match);
$match := $match.CURSOR.parse($text, :rule($regex), :c($match.to));
}
- @matches;
}
- else {
- $match;
+ elsif $match {
+ @matches.push($match);
}
+ @matches;
}
@@ -175,8 +175,8 @@
=end item
our sub subst ($text, $regex, $repl, :$global?) {
- my @matches := $global ?? match($text, $regex, :global)
- !! [ $text ~~ $regex ];
+ my @matches := match($text, $regex, $global);
+
my $is_code := pir::isa($repl, 'Sub');
my $offset := 0;
my $result := pir::new__Ps('StringBuilder');
Modified: branches/ops_massacre/include/parrot/charset.h
==============================================================================
--- branches/ops_massacre/include/parrot/charset.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/charset.h Mon May 24 08:26:56 2010 (r46947)
@@ -72,11 +72,13 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
const char * Parrot_charset_c_name(SHIM_INTERP, INTVAL number_of_charset);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING * Parrot_charset_name(SHIM_INTERP, INTVAL number_of_charset);
@@ -89,6 +91,7 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_charset_number_of_str(SHIM_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(2);
@@ -102,11 +105,13 @@
__attribute__nonnull__(1);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const CHARSET * Parrot_default_charset(SHIM_INTERP);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
const CHARSET * Parrot_find_charset(SHIM_INTERP,
@@ -114,6 +119,7 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
charset_converter_t Parrot_find_charset_converter(SHIM_INTERP,
@@ -123,6 +129,7 @@
__attribute__nonnull__(3);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
const CHARSET * Parrot_get_charset(SHIM_INTERP, INTVAL number_of_charset);
Modified: branches/ops_massacre/include/parrot/compiler.h
==============================================================================
--- branches/ops_massacre/include/parrot/compiler.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/compiler.h Mon May 24 08:26:56 2010 (r46947)
@@ -136,11 +136,35 @@
#define PARROT_IGNORABLE_RESULT
#define PARROT_WARN_UNUSED_RESULT __attribute__warn_unused_result__
+#define PARROT_PURE_FUNCTION __attribute__pure__ __attribute__warn_unused_result__
/* Pure functions have no side-effects, and depend only on parms or globals. e.g. strlen() */
-#define PARROT_PURE_FUNCTION __attribute__pure__ __attribute__warn_unused_result__
-
-/* Const functions are pure functions, and do not examine targets of pointers. e.g. sqrt() */
-#define PARROT_CONST_FUNCTION __attribute__const__ __attribute__warn_unused_result__
+/* "Many functions have no effects except the return value and their
+ return value depends only on the parameters and/or global
+ variables. Such a function can be subject to common subexpression
+ elimination and loop optimization just as an arithmetic operator
+ would be. For example, "PARROT_PURE_FUNCTION int square(int x)"
+ says that the hypothetical function square is safe to call fewer
+ times than the program says.
+
+ Some of common examples of pure functions are strlen or
+ memcmp. Interesting non-pure functions are functions with infinite
+ loops or those depending on volatile memory or other system resource,
+ that may change between two consecutive calls (such as feof in a
+ multithreading environment)." -- http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
+*/
+
+#define PARROT_CONST_FUNCTION __attribute__const__ __attribute__warn_unused_result__
+/* Const functions are pure functions, and also do not examine targets of pointer args or globals. e.g. sqrt() */
+/* "Many functions do not examine any values except their arguments,
+ and have no effects except the return value. Basically this is just
+ slightly more strict class than the pure attribute below, since
+ function is not allowed to read global memory. Note that a function
+ that has pointer arguments and examines the data pointed to must
+ not be declared const. Likewise, a function that calls a non-const
+ function usually must not be const. It does not make sense for a
+ const function to return void."
+ -- http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
+*/
#define PARROT_DOES_NOT_RETURN /*@noreturn@*/ __attribute__noreturn__
#define PARROT_DOES_NOT_RETURN_WHEN_FALSE /*@noreturnwhenfalse@*/
Modified: branches/ops_massacre/include/parrot/embed.h
==============================================================================
--- branches/ops_massacre/include/parrot/embed.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/embed.h Mon May 24 08:26:56 2010 (r46947)
@@ -141,14 +141,17 @@
__attribute__nonnull__(1);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
Parrot_UInt Parrot_test_debug(PARROT_INTERP, Parrot_UInt flag)
__attribute__nonnull__(1);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
Parrot_Int Parrot_test_flag(PARROT_INTERP, Parrot_Int flag)
__attribute__nonnull__(1);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
Parrot_UInt Parrot_test_trace(PARROT_INTERP, Parrot_UInt flag)
__attribute__nonnull__(1);
Modified: branches/ops_massacre/include/parrot/exceptions.h
==============================================================================
--- branches/ops_massacre/include/parrot/exceptions.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/exceptions.h Mon May 24 08:26:56 2010 (r46947)
@@ -115,9 +115,9 @@
/* HEADERIZER BEGIN: src/exceptions.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+PARROT_EXPORT
PARROT_DOES_NOT_RETURN
PARROT_COLD
-PARROT_EXPORT
void do_panic(
NULLOK_INTERP,
ARGIN_NULLOK(const char *message),
Modified: branches/ops_massacre/include/parrot/hash.h
==============================================================================
--- branches/ops_massacre/include/parrot/hash.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/hash.h Mon May 24 08:26:56 2010 (r46947)
@@ -315,13 +315,13 @@
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
int int_compare(SHIM_INTERP,
ARGIN_NULLOK(const void *a),
ARGIN_NULLOK(const void *b));
PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
size_t key_hash_int(SHIM_INTERP,
ARGIN_NULLOK(const void *value),
size_t seed);
Modified: branches/ops_massacre/include/parrot/imcc.h
==============================================================================
--- branches/ops_massacre/include/parrot/imcc.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/imcc.h Mon May 24 08:26:56 2010 (r46947)
@@ -6,10 +6,8 @@
#ifndef PARROT_IMCC_H_GUARD
#define PARROT_IMCC_H_GUARD
-PARROT_EXPORT void imcc_initialize(PARROT_INTERP);
-PARROT_EXPORT void imcc_start_handling_flags(PARROT_INTERP);
-PARROT_EXPORT int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, Parrot_Run_core_t *core);
-PARROT_EXPORT int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, const char **argv);
+PARROT_EXPORT int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, const char **argv);
+PARROT_EXPORT void imcc_run_pbc(PARROT_INTERP, const char *outputfile, int argc, const char **argv);
#endif /* PARROT_IMCC_H_GUARD */
Modified: branches/ops_massacre/include/parrot/interpreter.h
==============================================================================
--- branches/ops_massacre/include/parrot/interpreter.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/interpreter.h Mon May 24 08:26:56 2010 (r46947)
@@ -523,6 +523,7 @@
__attribute__nonnull__(4);
PARROT_WARN_UNUSED_RESULT
+PARROT_CONST_FUNCTION
INTVAL sysinfo_i(SHIM_INTERP, INTVAL info_wanted);
PARROT_CANNOT_RETURN_NULL
Modified: branches/ops_massacre/include/parrot/longopt.h
==============================================================================
--- branches/ops_massacre/include/parrot/longopt.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/longopt.h Mon May 24 08:26:56 2010 (r46947)
@@ -1,13 +1,9 @@
/* longopt.h
- * Copyright (C) 2001-2003, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
* Command line option parsing (for pre-initialized code)
- * Data Structure and Algorithms:
- * History:
- * Notes:
- * References:
*/
#ifndef PARROT_LONGOPT_H_GUARD
@@ -44,10 +40,18 @@
#define LONGOPT_OPT_INFO_INIT { 1, 0, NULL, NULL, NULL }
+#define OPT_GC_DEBUG 128
+#define OPT_DESTROY_FLAG 129
+#define OPT_HELP_DEBUG 130
+#define OPT_PBC_OUTPUT 131
+#define OPT_RUNTIME_PREFIX 132
+#define OPT_HASH_SEED 133
+
/* HEADERIZER BEGIN: src/longopt.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
int longopt_get(PARROT_INTERP,
int argc,
ARGIN(const char* argv[]),
@@ -59,11 +63,17 @@
__attribute__nonnull__(5)
FUNC_MODIFIES(* info_buf);
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_CONST_FUNCTION
+const struct longopt_opt_decl * Parrot_cmd_options(void);
+
#define ASSERT_ARGS_longopt_get __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(argv) \
, PARROT_ASSERT_ARG(options) \
, PARROT_ASSERT_ARG(info_buf))
+#define ASSERT_ARGS_Parrot_cmd_options __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: src/longopt.c */
Modified: branches/ops_massacre/include/parrot/packfile.h
==============================================================================
--- branches/ops_massacre/include/parrot/packfile.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/packfile.h Mon May 24 08:26:56 2010 (r46947)
@@ -1096,7 +1096,8 @@
size_t PF_size_string(ARGIN(const STRING *s))
__attribute__nonnull__(1);
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
+PARROT_WARN_UNUSED_RESULT
size_t PF_size_strlen(const UINTVAL len);
PARROT_WARN_UNUSED_RESULT
Modified: branches/ops_massacre/include/parrot/pmc.h
==============================================================================
--- branches/ops_massacre/include/parrot/pmc.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/pmc.h Mon May 24 08:26:56 2010 (r46947)
@@ -53,6 +53,7 @@
__attribute__nonnull__(1);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_HOT
INTVAL Parrot_pmc_is_null(SHIM_INTERP, ARGIN_NULLOK(const PMC *pmc));
@@ -84,6 +85,7 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
PMC * Parrot_pmc_new_constant_noinit(PARROT_INTERP, INTVAL base_type)
__attribute__nonnull__(1);
Modified: branches/ops_massacre/include/parrot/runcore_trace.h
==============================================================================
--- branches/ops_massacre/include/parrot/runcore_trace.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/runcore_trace.h Mon May 24 08:26:56 2010 (r46947)
@@ -18,10 +18,6 @@
/* HEADERIZER BEGIN: src/runcore/trace.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-Interp * debugger_or_interp(PARROT_INTERP)
- __attribute__nonnull__(1);
-
int trace_key_dump(PARROT_INTERP, ARGIN(PMC *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -44,8 +40,6 @@
void trace_pmc_dump(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
__attribute__nonnull__(1);
-#define ASSERT_ARGS_debugger_or_interp __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_trace_key_dump __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(key))
Modified: branches/ops_massacre/include/parrot/string_funcs.h
==============================================================================
--- branches/ops_massacre/include/parrot/string_funcs.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/include/parrot/string_funcs.h Mon May 24 08:26:56 2010 (r46947)
@@ -235,6 +235,7 @@
__attribute__nonnull__(3);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_str_length(SHIM_INTERP, ARGIN_NULLOK(const STRING *s));
Modified: branches/ops_massacre/lib/Parrot/Distribution.pm
==============================================================================
--- branches/ops_massacre/lib/Parrot/Distribution.pm Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/lib/Parrot/Distribution.pm Mon May 24 08:26:56 2010 (r46947)
@@ -430,7 +430,11 @@
compilers/pirc/macro/macroparser.h
include/parrot/config.h
include/parrot/has_header.h
+ include/parrot/oplib/core_ops.h
+ include/parrot/oplib/ops.h
+ include/parrot/opsenum.h
src/gc/malloc.c
+ src/ops/core_ops.c
} unless @exemptions;
my $path = -f $file ? $file : $file->path;
Modified: branches/ops_massacre/lib/Parrot/Harness/DefaultTests.pm
==============================================================================
--- branches/ops_massacre/lib/Parrot/Harness/DefaultTests.pm Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/lib/Parrot/Harness/DefaultTests.pm Mon May 24 08:26:56 2010 (r46947)
@@ -66,7 +66,6 @@
t/oo/*.t
t/native_pbc/*.t
t/dynpmc/*.t
- t/dynoplibs/*.t
);
# core tests are run unless --runcore-tests is present. Typically
@@ -85,7 +84,9 @@
t/compilers/pge/p5regex/*.t
t/compilers/pge/perl6regex/*.t
t/compilers/tge/*.t
+ t/compilers/opsc/*.t
t/compilers/data_json/*.t
+ t/dynoplibs/*.t
t/library/*.t
t/tools/*.t
t/profiling/*.t
Modified: branches/ops_massacre/lib/Parrot/Headerizer.pm
==============================================================================
--- branches/ops_massacre/lib/Parrot/Headerizer.pm Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/lib/Parrot/Headerizer.pm Mon May 24 08:26:56 2010 (r46947)
@@ -247,8 +247,10 @@
}
if ( $return_type =~ /\*/ ) {
if ( !$macros{PARROT_CAN_RETURN_NULL} && !$macros{PARROT_CANNOT_RETURN_NULL} ) {
- $self->squawk( $file, $name,
- 'Returns a pointer, but no PARROT_CAN(NOT)_RETURN_NULL macro found.' );
+ if ( $name !~ /^yy/ ) { # Don't complain about lexer-created functions
+ $self->squawk( $file, $name,
+ 'Returns a pointer, but no PARROT_CAN(NOT)_RETURN_NULL macro found.' );
+ }
}
elsif ( $macros{PARROT_CAN_RETURN_NULL} && $macros{PARROT_CANNOT_RETURN_NULL} ) {
$self->squawk( $file, $name,
Modified: branches/ops_massacre/lib/Parrot/Ops2c/Utils.pm
==============================================================================
--- branches/ops_massacre/lib/Parrot/Ops2c/Utils.pm Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/lib/Parrot/Ops2c/Utils.pm Mon May 24 08:26:56 2010 (r46947)
@@ -607,7 +607,7 @@
foreach my $op ( $self->{ops}->ops ) {
my $func_name = $op->func_name( $self->{trans} );
my $prototype =
- "$self->{sym_export} opcode_t * $func_name (opcode_t *, PARROT_INTERP)";
+ "$self->{sym_export} opcode_t * $func_name(opcode_t *, PARROT_INTERP)";
my $definition;
my $comment = '';
my $one_op = "";
@@ -621,7 +621,7 @@
$comment = "/* " . $op->full_name() . " */";
}
else {
- $definition = "opcode_t *\n$func_name (opcode_t *cur_opcode, PARROT_INTERP)";
+ $definition = "opcode_t *\n$func_name(opcode_t *cur_opcode, PARROT_INTERP)";
}
my $src = $op->source( $self->{trans} );
Modified: branches/ops_massacre/lib/Parrot/Test/Pod.pm
==============================================================================
--- branches/ops_massacre/lib/Parrot/Test/Pod.pm Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/lib/Parrot/Test/Pod.pm Mon May 24 08:26:56 2010 (r46947)
@@ -72,11 +72,23 @@
| t/configure/testlib/cdefectivefoobar
| t/configure/testlib/bdefectivefoobar
| examples/config/file/configwithfatalstep
+ | compilers/opsc
}x
) {
delete $files_needing_analysis->{ $file };
next SECOND_FILE;
}
+
+ # read first line. If it contains "nqp" remove file from test.
+ my $fh;
+ open $fh, '<', $full_file or croak "Can't opend file $full_file $!";
+ my $line = <$fh>;
+ close $fh;
+
+ if ($line =~ m/ nqp | use \s v6 /x) {
+ delete $files_needing_analysis->{ $file };
+ next SECOND_FILE;
+ }
}
}
nstore $files_needing_analysis, $sto;
@@ -198,7 +210,7 @@
@files = @{ $self->{argv} };
}
else {
- print STDERR "\nFinding files with POD, this may take a minute.\n";
+ print STDERR "\n# Finding files with POD, this may take a minute.\n";
@files = (
keys(%{ $self->{manifest} }),
keys(%{ $self->{manifest_gen} })
Modified: branches/ops_massacre/runtime/parrot/library/HTTP/Message.pir
==============================================================================
--- branches/ops_massacre/runtime/parrot/library/HTTP/Message.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/runtime/parrot/library/HTTP/Message.pir Mon May 24 08:26:56 2010 (r46947)
@@ -171,10 +171,11 @@
.include 'cclass.pasm'
.sub '' :init :load :anon
- load_bytecode 'URI.pir'
+ load_bytecode 'URI.pbc'
$P0 = subclass ['HTTP';'Message'], ['HTTP';'Request']
$P0.'add_attribute'('method')
$P0.'add_attribute'('uri')
+ $P0.'add_attribute'('proxy')
.end
=item method
@@ -195,6 +196,17 @@
.return ($P0)
.end
+.sub 'proxy' :method
+ .param pmc val :optional
+ .param int has_val :opt_flag
+ unless has_val goto L1
+ setattribute self, 'proxy', val
+ .return ()
+ L1:
+ $P0 = getattribute self, 'proxy'
+ .return ($P0)
+.end
+
=item GET
=cut
@@ -467,7 +479,7 @@
L2:
$S0 = $P0
.local pmc encode
- encode = get_hll_global ['MIME';'Base64'], 'encode_base64'
+ encode = get_hll_global ['MIME';'Base64'], 'encode_base64'
$S0 = encode($S0)
$I1 = length $S0
$I0 = 0
Deleted: branches/ops_massacre/runtime/parrot/library/LWP.pir
==============================================================================
--- branches/ops_massacre/runtime/parrot/library/LWP.pir Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,851 +0,0 @@
-# Copyright (C) 2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-LWP - The World-Wide Web library for Parrot
-
-=head2 DESCRIPTION
-
-Simplified port of LWP (version 5.834)
-see http://search.cpan.org/~gaas/libwww-perl/
-
-=head3 Class LWP;UserAgent
-
-=over 4
-
-=cut
-
-.namespace ['LWP';'UserAgent']
-
-.sub '' :init :load :anon
- load_bytecode 'HTTP/Message.pir'
- $P0 = newclass ['LWP';'UserAgent']
- $P0.'add_attribute'('def_headers')
- $P0.'add_attribute'('show_progress')
- $P0.'add_attribute'('progress_start')
- $P0.'add_attribute'('progress_lastp')
- $P0.'add_attribute'('progress_ani')
- $P0.'add_attribute'('max_redirect')
- .globalconst int RC_OK = 200
- .globalconst int RC_MOVED_PERMANENTLY = 301
- .globalconst int RC_FOUND = 302
- .globalconst int RC_SEE_OTHER = 303
- .globalconst int RC_TEMPORARY_REDIRECT = 307
- .globalconst int RC_BAD_REQUEST = 400
- .globalconst int RC_NOT_FOUND = 404
- .globalconst int RC_INTERNAL_SERVER_ERROR = 500
- .globalconst int RC_NOT_IMPLEMENTED = 501
-.end
-
-.sub 'init' :vtable :method
- $P0 = new ['HTTP';'Headers']
- $P0['User-Agent'] = 'libwww-parrot'
- setattribute self, 'def_headers', $P0
- $P0 = box 7
- setattribute self, 'max_redirect', $P0
-.end
-
-.sub 'send_request' :method
- .param pmc request
- .local string method
- method = request.'method'()
- .local pmc url
- url = request.'uri'()
- .local string scheme
- scheme = url.'scheme'()
- self.'progress'('begin', request)
- .local pmc protocol, response
- $P0 =get_hll_global ['LWP';'Protocol'], 'create'
- protocol = $P0(scheme, self)
- unless null protocol goto L1
- response = _new_response(request, RC_NOT_IMPLEMENTED, 'Not Implemented')
- goto L2
- L1:
- response = protocol.'request'(request)
- setattribute response, 'request', request
- $P0 = get_hll_global ['HTTP';'Date'], 'time2str'
- $I0 = time
- $S0 = $P0($I0)
- response.'push_header'('Client-Date', $S0)
- L2:
- self.'progress'('end', response)
- .return (response)
-.end
-
-.sub 'prepare_request' :method
- .param pmc request
- $P0 = request.'method'()
- unless null $P0 goto L1
- die "Method missing"
- L1:
- $P0 = request.'uri'()
- unless null $P0 goto L2
- die "URL missing"
- L2:
- $S0 = $P0.'scheme'()
- unless $S0 == '' goto L3
- die "URL must be absolute"
- L3:
- $P0 = getattribute self, 'def_headers'
- $P1 = iter $P0
- L4:
- unless $P1 goto L5
- $S0 = shift $P1
- $S1 = $P0[$S0]
- request.'push_header'($S0, $S1)
- goto L4
- L5:
-.end
-
-.sub 'simple_request' :method
- .param pmc request
- unless null request goto L1
- die "No request object passed in"
- L1:
- $I0 = isa request, ['HTTP';'Request']
- if $I0 goto L2
- die "You need a ['HTTP';'Request']"
- L2:
- self.'prepare_request'(request)
- .tailcall self.'send_request'(request)
-.end
-
-.sub 'request' :method
- .param pmc request
- .param pmc previous :optional
- .param int has_previous :opt_flag
-
- .local pmc response
- response = self.'simple_request'(request)
- unless has_previous goto L1
- response.'previous'(previous)
- L1:
-
- .local int redirect
- $P0 = response.'redirect'()
- redirect = elements $P0
- .local int max_redirect
- $P0 = getattribute self, 'max_redirect'
- max_redirect = $P0
- unless redirect >= max_redirect goto L2
- $S0 = 'Redirect loop detected (max_redirect = '
- $S1 = max_redirect
- $S0 .= $S1
- $S0 .= ')'
- response.'push_header'('Client-Warning', $S0)
- .return (response)
- L2:
-
- .local int code
- code = response.'code'()
-
- if code == RC_MOVED_PERMANENTLY goto L3
- if code == RC_FOUND goto L3
- if code == RC_SEE_OTHER goto L3
- if code == RC_TEMPORARY_REDIRECT goto L3
- goto L4
- L3:
- .local pmc referral
- referral = clone request
- # These headers should never be forwarded
- referral.'remove_header'('Host')
- referral.'remove_header'('Cookie')
-
- # work in progress
-
- .local string referral_uri
- referral_uri = response.'get_header'('Location')
- $P0 = get_hll_global ['URI'], 'new_from_string'
- $P1 = $P0(referral_uri)
- $S0 = $P1.'scheme'()
- unless $S0 == '' goto L5
- $P2 = new 'StringBuilder'
- $P3 = request.'uri'()
- $S0 = $P3.'scheme'()
- push $P2, $S0
- push $P2, '://'
- $S0 = request.'get_header'('Host')
- push $P2, $S0
- push $P2, referral_uri
- $P1 = $P0($P2)
- L5:
- setattribute referral, 'uri', $P1
-
- # work in progress
-
- $I0 = self.'redirect_ok'(referral, response)
- if $I0 goto L6
- .return (response)
- L6:
- .tailcall self.'request'(referral, response)
- L4:
-
- # work in progress
-
- .return (response)
-.end
-
-=item get
-
-=cut
-
-.sub 'get' :method
- .param pmc args :slurpy
- .param pmc kv :slurpy :named
- .local pmc request
- $P0 = get_hll_global ['HTTP';'Request'], 'GET'
- request = $P0(args :flat, kv :flat :named)
- .tailcall self.'request'(request)
-.end
-
-=item post
-
-=cut
-
-.sub 'post' :method
- .param pmc args :slurpy
- .param pmc kv :slurpy :named
- .local pmc request
- $P0 = get_hll_global ['HTTP';'Request'], 'POST'
- request = $P0(args :flat, kv :flat :named)
- .tailcall self.'request'(request)
-.end
-
-=item put
-
-=cut
-
-.sub 'put' :method
- .param pmc args :slurpy
- .param pmc kv :slurpy :named
- .local pmc request
- $P0 = get_hll_global ['HTTP';'Request'], 'PUT'
- request = $P0(args :flat, kv :flat :named)
- .tailcall self.'request'(request)
-.end
-
-=item delete
-
-=cut
-
-.sub 'delete' :method
- .param pmc args :slurpy
- .param pmc kv :slurpy :named
- .local pmc request
- $P0 = get_hll_global ['HTTP';'Request'], 'DELETE'
- request = $P0(args :flat, kv :flat :named)
- .tailcall self.'request'(request)
-.end
-
-.sub 'progress' :method
- .param string status
- .param pmc msg
- $P0 = getattribute self, 'show_progress'
- if null $P0 goto L1
- unless $P0 goto L1
- unless status == 'begin' goto L2
- printerr "** "
- $P0 = getattribute msg, 'method'
- printerr $P0
- printerr " "
- $P0 = getattribute msg, 'uri'
- printerr $P0
- printerr " ==> "
- $N1 = time
- $P0 = box $N1
- setattribute self, 'progress_start', $P0
- $P0 = box ''
- setattribute self, 'progress_lastp', $P0
- $P0 = box 0
- setattribute self, 'progress_ani', $P0
- goto L1
- L2:
- unless status == 'end' goto L3
- $P0 = getattribute self, 'progress_start'
- $N1 = $P0
- $N2 = time
- null $P0
- setattribute self, 'progress_start', $P0
- setattribute self, 'progress_lastp', $P0
- setattribute self, 'progress_ani', $P0
- $S0 = msg.'status_line'()
- printerr $S0
- $N0 =$N2 - $N1
- $I0 = $N0
- unless $I0 goto L4
- printerr " ("
- printerr $I0
- printerr "s)"
- L4:
- printerr "\n"
- goto L1
- L3:
- unless status == 'tick' goto L5
- $P0 = getattribute self, 'progress_ani'
- inc $P0
- $P0 %= 4
- $P1 = split '', '-\|/'
- $S0 = $P1[$P0]
- printerr $S0
- printerr "\b"
- goto L1
- L5:
- $N0 = status
- $N0 *= 100
- $P0 = new 'FixedFloatArray'
- set $P0, 1
- $P0[0] = $N0
- $S1 = sprintf '%3.0f%%', $P0
- $P0 = getattribute self, 'progress_lastp'
- $S0 = $P0
- if $S0 == $S1 goto L1
- set $P0, $S1
- printerr $S1
- printerr "\b\b\b\b"
- L1:
-.end
-
-.sub 'redirect_ok' :method
- .param pmc new_request
- .param pmc response
- $P0 = response.'request'()
- $S0 = $P0.'method'()
- if $S0 == 'GET' goto L1
- if $S0 == 'HEAD' goto L1
- .return (0)
- L1:
- # work in progress
- .return (1)
-.end
-
-=item max_redirect
-
-=cut
-
-.sub 'max_redirect' :method
- .param pmc val
- setattribute self, 'max_redirect', val
-.end
-
-=item show_progress
-
-=cut
-
-.sub 'show_progress' :method
- .param pmc val
- setattribute self, 'show_progress', val
-.end
-
-=item agent
-
-=cut
-
-.sub 'agent' :method
- .param string val
- $P0 = getattribute self, 'def_headers'
- $P0['User-Agent'] = val
-.end
-
-=item env_provy
-
-=cut
-
-.sub 'env_proxy' :method
- $P0 = new 'Env'
- $P1 = iter $P0
- L1:
- unless $P1 goto L2
- $S0 = shift $P1
- $S1 = downcase $S0
-
- # work in progress
-
- goto L1
- L2:
-.end
-
-.sub '_new_response'
- .param pmc request
- .param pmc code
- .param pmc message
- .local pmc response
- response = new ['HTTP';'Response']
- setattribute response, 'code', code
- setattribute response, 'message', message
- setattribute response, 'request', request
- $P0 = get_hll_global ['HTTP';'Date'], 'time2str'
- $I0 = time
- $S0 = $P0($I0)
- response.'push_header'('Client-Date', $S0)
- response.'push_header'('Client-Warning', "Internal response")
- response.'push_header'('Content-Type', 'text/plain')
- $S0 = code
- $S0 .= ' '
- $S1 = message
- $S0 .= $S1
- $S0 .= "\n"
- $P0 = box $S0
- setattribute response, 'content', $P0
- .return (response)
-.end
-
-=back
-
-=head3 Class LWP;Protocol
-
-=over 4
-
-=cut
-
-.namespace ['LWP';'Protocol']
-
-.sub '' :init :load :anon
- $P0 = newclass ['LWP';'Protocol']
- $P0.'add_attribute'('scheme')
- $P0.'add_attribute'('ua')
-.end
-
-=item create
-
-=cut
-
-.sub 'create'
- .param string scheme
- .param pmc ua
- $P1 = new 'Key'
- set $P1, 'LWP'
- $P2 = new 'Key'
- set $P2, 'Protocol'
- push $P1, $P2
- $P3 = new 'Key'
- set $P3, scheme
- push $P1, $P3
- $P0 = get_class $P1
- unless null $P0 goto L1
- .return ($P0)
- L1:
- .local pmc protocol
- protocol = new $P0
- $P0 = box scheme
- setattribute protocol, 'scheme', $P0
- setattribute protocol, 'ua', ua
- .return (protocol)
-.end
-
-=item scheme
-
-=cut
-
-.sub 'scheme' :method
- $P0 = getattribute self, 'scheme'
- .return ($P0)
-.end
-
-=item ua
-
-=cut
-
-.sub 'ua' :method
- $P0 = getattribute self, 'ua'
- .return ($P0)
-.end
-
-.sub 'request' :method
- .param pmc args :slurpy
- die 'LWP::Protocol::request() needs to be overridden in subclasses'
-.end
-
-=back
-
-=head3 Class LWP;Protocol;file
-
-=cut
-
-.namespace ['LWP';'Protocol';'file']
-
-.include 'stat.pasm'
-
-.sub '' :init :load :anon
- $P0 = subclass ['LWP';'Protocol'], ['LWP';'Protocol';'file']
-.end
-
-.sub 'request' :method
- .param pmc request
- load_bytecode 'osutils.pbc'
- .local string method
- method = request.'method'()
- $P0 = get_hll_global ['LWP';'Protocol';'file'], method
- unless null $P0 goto L1
- $P0 = new ['HTTP';'Response']
- $P1 = box RC_BAD_REQUEST
- setattribute $P0, 'code', $P1
- $S0 = "Library does not allow method " . method
- $S0 .= " for 'file:' URLs"
- $P1 = box $S0
- setattribute $P0, 'message', $P1
- .return ($P0)
- L1:
- .local pmc url
- url = request.'uri'()
- .local string scheme
- scheme = url.'scheme'()
- if scheme == 'file' goto L2
- $P0 = new ['HTTP';'Response']
- $P1 = box RC_INTERNAL_SERVER_ERROR
- setattribute $P0, 'code', $P1
- $S0 = "LWP::Protocol::file::request called for '" . scheme
- $S0 .= "'"
- $P1 = box $S0
- setattribute $P0, 'message', $P1
- .return ($P0)
- L2:
- .tailcall $P0(self, request)
-.end
-
-.sub 'HEAD' :method :nsentry
- .param pmc request
- .tailcall self.'GET'(request)
-.end
-
-.sub 'GET' :method :nsentry
- .param pmc request
- .local pmc response
- response = new ['HTTP';'Response']
- .local string method
- method = request.'method'()
- .local pmc url
- url = request.'uri'()
- .local string path
- path = url.'path'()
-
- $I0 = stat path, .STAT_EXISTS
- if $I0 goto L1
- $P0 = box RC_NOT_FOUND
- setattribute response, 'code', $P0
- $S0 = "File `" . path
- $S0 .= "' does not exist"
- $P0 = box $S0
- setattribute response, 'message', $P0
- .return (response)
- L1:
-
- .local int mtime
- mtime = stat path, .STAT_MODIFYTIME
- $P0 = get_hll_global ['HTTP';'Date'], 'time2str'
- $S0 = $P0(mtime)
- response.'push_header'('Last-Modified', $S0)
- .local int filesize
- filesize = stat path, .STAT_FILESIZE
- response.'push_header'('Content-Length', filesize)
-
- if method == 'HEAD' goto L2
- push_eh _handler
- $S0 = slurp(path)
- pop_eh
- $P0 = box $S0
- setattribute response, 'content', $P0
- L2:
- $P0 = box RC_OK
- setattribute response, 'code', $P0
- .return (response)
-
- _handler:
- .local pmc ex
- .get_results (ex)
- $P0 = box RC_INTERNAL_SERVER_ERROR
- setattribute response, 'code', $P0
- $S0 = ex
- $P0 = box $S0
- setattribute response, 'message', $P0
- .return (response)
-.end
-
-.sub 'PUT' :method :nsentry
- .param pmc request
- .local pmc response
- response = new ['HTTP';'Response']
- .local pmc url
- url = request.'uri'()
- .local string path
- path = url.'path'()
- .local string content
- content = request.'content'()
-
- push_eh _handler
- $S0 = spew(path, content)
- pop_eh
-
- $P0 = box RC_OK
- setattribute response, 'code', $P0
- .return (response)
-
- _handler:
- .local pmc ex
- .get_results (ex)
- $P0 = box RC_INTERNAL_SERVER_ERROR
- setattribute response, 'code', $P0
- $S0 = ex
- $P0 = box $S0
- setattribute response, 'message', $P0
- .return (response)
-.end
-
-.sub 'DELETE' :method :nsentry
- .param pmc request
- .local pmc response
- response = new ['HTTP';'Response']
- .local pmc url
- url = request.'uri'()
- .local string path
- path = url.'path'()
-
- $I0 = stat path, .STAT_EXISTS
- if $I0 goto L1
- $P0 = box RC_NOT_FOUND
- setattribute response, 'code', $P0
- $S0 = "File `" . path
- $S0 .= "' does not exist"
- $P0 = box $S0
- setattribute response, 'message', $P0
- .return (response)
- L1:
-
- push_eh _handler
- $S0 = unlink(path)
- pop_eh
-
- $P0 = box RC_OK
- setattribute response, 'code', $P0
- .return (response)
-
- _handler:
- .local pmc ex
- .get_results (ex)
- $P0 = box RC_INTERNAL_SERVER_ERROR
- setattribute response, 'code', $P0
- $S0 = ex
- $P0 = box $S0
- setattribute response, 'message', $P0
- .return (response)
-.end
-
-=head3 Class LWP;Protocol;http
-
-=cut
-
-.namespace ['LWP';'Protocol';'http']
-
-.include 'socket.pasm'
-
-.sub '' :init :load :anon
- $P0 = subclass ['LWP';'Protocol'], ['LWP';'Protocol';'http']
-.end
-
-.sub '_new_socket' :method
- .param string host
- .param int port
- .local pmc sock, addr
- sock = new 'Socket'
- sock.'socket'(.PIO_PF_INET, .PIO_SOCK_STREAM, .PIO_PROTO_TCP)
- addr = sock.'sockaddr'(host, port)
- sock.'connect'(addr)
- .return (sock)
-.end
-
-.sub '_fixup_header' :method
- .param pmc headers
- .param pmc url
- .local string host
- host = url.'authority'()
- headers['Host'] = host
-.end
-
-.sub '_format_request'
- .param string method
- .param string uri
- .param pmc headers
- .const string CRLF = "\r\n"
- $P0 = new 'StringBuilder'
- push $P0, method
- push $P0, ' '
- push $P0, uri
- push $P0, ' HTTP/1.1'
- push $P0, CRLF
- $P1 = iter headers
- L1:
- unless $P1 goto L2
- $S0 = shift $P1
- $S1 = headers[$S0]
- push $P0, $S0
- push $P0, ': '
- push $P0, $S1
- push $P0, CRLF
- goto L1
- L2:
- push $P0, CRLF
- .return ($P0)
-.end
-
-.sub '_parse_response_headers' :method
- .param pmc response
- .param string str
- .local string sep
- sep = "\r\n"
- $I0 = index str, "\r"
- unless $I0 < 0 goto L0
- sep = "\n"
- L0:
- $S0 = sep . sep
- $I0 = index str, $S0
- if $I0 < 0 goto L1
- str = substr str, 0, $I0
- L1:
-
- $P0 = split sep, str
- .local string status_line
- status_line = shift $P0
- $I0 = index status_line, " "
- if $I0 < 0 goto L2
- $S0 = substr status_line, 0, $I0
- $P1 = box $S0
- setattribute response, 'protocol', $P1
- $I1 = $I0 + 1
- $I0 = index status_line, " ", $I1
- if $I0 < 0 goto L2
- $I2 = $I0 - $I1
- $S0 = substr status_line, $I1, $I2
- $P1 = box $S0
- setattribute response, 'code', $P1
- inc $I0
- $S0 = substr status_line, $I0
- $P1 = box $S0
- setattribute response, 'message', $P1
-
- $P3 = new ['HTTP';'Headers']
- L3:
- unless $P0 goto L4
- $S0 = shift $P0
- $I0 = index $S0, ": "
- if $I0 < 0 goto L3
- $S1 = substr $S0, 0, $I0
- $I0 += 2
- $S2 = substr $S0, $I0
- $P3[$S1] = $S2
- goto L3
- L4:
- setattribute response, 'headers', $P3
-
- $I0 = length str
- .return ($I0)
- L2:
- .return (0)
-.end
-
-.sub '_parse_response_content' :method
- .param pmc response
- .param string str
- $I0 = index str, "\r\n\r\n"
- if $I0 < 0 goto L1
- $I0 += 4
- $S0 = substr str, $I0
- $P0 = box $S0
- setattribute response, 'content', $P0
- goto L2
- L1:
- $I0 = index str, "\n\n"
- if $I0 < 0 goto L1
- $I0 += 2
- $S0 = substr str, $I0
- $P0 = box $S0
- setattribute response, 'content', $P0
- L2:
-.end
-
-.sub 'request' :method
- .param pmc request
-
- .local string method
- method = request.'method'()
- .local pmc url
- url = request.'uri'()
- .local string host, port, fullpath
- host = url.'host'()
- port = url.'port'()
- fullpath = url.'path_query'()
- $I0 = index fullpath, '/'
- if $I0 == 0 goto L1
- fullpath = '/' . fullpath
- L1:
-
- # connect to remote site
- .local pmc sock
- sock = self.'_new_socket'(host, port)
-
- .local pmc request_headers
- request_headers = request.'headers'()
- self.'_fixup_header'(request_headers, url)
-
- .local pmc ua
- ua = self.'ua'()
- $S0 = _format_request(method, fullpath, request_headers)
- sock.'send'($S0)
-
- .local string content
- content = request.'content'()
- unless content goto L11
- .local int content_length
- content_length = length content
- $I0 = 0
- L12:
- unless $I0 < content_length goto L11
- $S0 = substr content, $I0, 8192
- $I1 = sock.'send'($S0)
- $I0 += $I1
- $N0 = $I0 / content_length
- goto L12
- L11:
-
- .local pmc response
- response = new ['HTTP';'Response']
- .local pmc buf
- buf = new 'StringBuilder'
- .local int header_length
- content_length = 0
- L21:
- ua.'progress'('tick', request)
- $S0 = sock.'recv'()
- if $S0 == '' goto L22
- push buf, $S0
- header_length = self.'_parse_response_headers'(response, buf)
- $I0 = response.'is_success'()
- unless $I0 goto L22
- $S0 = response.'get_header'('Content-Length')
- if $S0 == '' goto L21
- content_length = $S0
- L23:
- $I0 = buf.'get_string_length'()
- $I0 -= header_length
- $N0 = $I0 / content_length
- ua.'progress'($N0, request)
- $S0 = sock.'recv'()
- if $S0 == '' goto L22
- push buf, $S0
- goto L23
- L22:
- sock.'close'()
- self.'_parse_response_content'(response, buf)
- .return (response)
-.end
-
-=head1 AUTHOR
-
-Francois Perrad
-
-=cut
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_massacre/runtime/parrot/library/LWP/Protocol.pir (from r46944, trunk/runtime/parrot/library/LWP/Protocol.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/runtime/parrot/library/LWP/Protocol.pir Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/runtime/parrot/library/LWP/Protocol.pir)
@@ -0,0 +1,539 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+LWP - The World-Wide Web library for Parrot
+
+=head2 DESCRIPTION
+
+Simplified port of LWP (version 5.834)
+see http://search.cpan.org/~gaas/libwww-perl/
+
+=head3 Class LWP;Protocol
+
+=over 4
+
+=cut
+
+.namespace ['LWP';'Protocol']
+
+.sub '' :init :load :anon
+ load_bytecode 'HTTP/Message.pbc'
+ $P0 = newclass ['LWP';'Protocol']
+ $P0.'add_attribute'('scheme')
+ $P0.'add_attribute'('ua')
+.end
+
+=item create
+
+=cut
+
+.sub 'create'
+ .param string scheme
+ .param pmc ua
+ $P1 = new 'Key'
+ set $P1, 'LWP'
+ $P2 = new 'Key'
+ set $P2, 'Protocol'
+ push $P1, $P2
+ $P3 = new 'Key'
+ set $P3, scheme
+ push $P1, $P3
+ $P0 = get_class $P1
+ unless null $P0 goto L1
+ .return ($P0)
+ L1:
+ .local pmc protocol
+ protocol = new $P0
+ $P0 = box scheme
+ setattribute protocol, 'scheme', $P0
+ setattribute protocol, 'ua', ua
+ .return (protocol)
+.end
+
+=item scheme
+
+=cut
+
+.sub 'scheme' :method
+ $P0 = getattribute self, 'scheme'
+ .return ($P0)
+.end
+
+=item ua
+
+=cut
+
+.sub 'ua' :method
+ $P0 = getattribute self, 'ua'
+ .return ($P0)
+.end
+
+.sub 'request' :method
+ .param pmc args :slurpy
+ die 'LWP::Protocol::request() needs to be overridden in subclasses'
+.end
+
+=back
+
+=head3 Class LWP;Protocol;file
+
+=over 4
+
+=cut
+
+.namespace ['LWP';'Protocol';'file']
+
+.include 'stat.pasm'
+
+.sub '' :init :load :anon
+ $P0 = subclass ['LWP';'Protocol'], ['LWP';'Protocol';'file']
+ .globalconst int RC_OK = 200
+ .globalconst int RC_BAD_REQUEST = 400
+ .globalconst int RC_NOT_FOUND = 404
+ .globalconst int RC_INTERNAL_SERVER_ERROR = 500
+.end
+
+=item request
+
+=cut
+
+.sub 'request' :method
+ .param pmc request
+ .param pmc proxy
+ if null proxy goto L1
+ $P0 = new ['HTTP';'Response']
+ $P1 = box RC_BAD_REQUEST
+ setattribute $P0, 'code', $P1
+ $P1 = box 'You can not proxy through the filesystem'
+ setattribute $P0, 'message', $P1
+ .return ($P0)
+ L1:
+ load_bytecode 'osutils.pbc'
+ .local string method
+ method = request.'method'()
+ $P0 = get_hll_global ['LWP';'Protocol';'file'], method
+ unless null $P0 goto L2
+ $P0 = new ['HTTP';'Response']
+ $P1 = box RC_BAD_REQUEST
+ setattribute $P0, 'code', $P1
+ $S0 = "Library does not allow method " . method
+ $S0 .= " for 'file:' URLs"
+ $P1 = box $S0
+ setattribute $P0, 'message', $P1
+ .return ($P0)
+ L2:
+ .local pmc url
+ url = request.'uri'()
+ .local string scheme
+ scheme = url.'scheme'()
+ if scheme == 'file' goto L3
+ $P0 = new ['HTTP';'Response']
+ $P1 = box RC_INTERNAL_SERVER_ERROR
+ setattribute $P0, 'code', $P1
+ $S0 = "LWP::Protocol::file::request called for '" . scheme
+ $S0 .= "'"
+ $P1 = box $S0
+ setattribute $P0, 'message', $P1
+ .return ($P0)
+ L3:
+ .tailcall $P0(self, request)
+.end
+
+.sub 'HEAD' :method :nsentry
+ .param pmc request
+ .tailcall self.'GET'(request)
+.end
+
+.sub 'GET' :method :nsentry
+ .param pmc request
+ .local pmc response
+ response = new ['HTTP';'Response']
+ .local string method
+ method = request.'method'()
+ .local pmc url
+ url = request.'uri'()
+ .local string path
+ path = url.'path'()
+
+ $I0 = stat path, .STAT_EXISTS
+ if $I0 goto L1
+ $P0 = box RC_NOT_FOUND
+ setattribute response, 'code', $P0
+ $S0 = "File `" . path
+ $S0 .= "' does not exist"
+ $P0 = box $S0
+ setattribute response, 'message', $P0
+ .return (response)
+ L1:
+
+ .local int mtime
+ mtime = stat path, .STAT_MODIFYTIME
+ $P0 = get_hll_global ['HTTP';'Date'], 'time2str'
+ $S0 = $P0(mtime)
+ response.'push_header'('Last-Modified', $S0)
+ .local int filesize
+ filesize = stat path, .STAT_FILESIZE
+ response.'push_header'('Content-Length', filesize)
+
+ if method == 'HEAD' goto L2
+ push_eh _handler
+ $S0 = slurp(path)
+ pop_eh
+ $P0 = box $S0
+ setattribute response, 'content', $P0
+ L2:
+ $P0 = box RC_OK
+ setattribute response, 'code', $P0
+ .return (response)
+
+ _handler:
+ .local pmc ex
+ .get_results (ex)
+ $P0 = box RC_INTERNAL_SERVER_ERROR
+ setattribute response, 'code', $P0
+ $S0 = ex
+ $P0 = box $S0
+ setattribute response, 'message', $P0
+ .return (response)
+.end
+
+.sub 'PUT' :method :nsentry
+ .param pmc request
+ .local pmc response
+ response = new ['HTTP';'Response']
+ .local pmc url
+ url = request.'uri'()
+ .local string path
+ path = url.'path'()
+ .local string content
+ content = request.'content'()
+
+ push_eh _handler
+ $S0 = spew(path, content)
+ pop_eh
+
+ $P0 = box RC_OK
+ setattribute response, 'code', $P0
+ .return (response)
+
+ _handler:
+ .local pmc ex
+ .get_results (ex)
+ $P0 = box RC_INTERNAL_SERVER_ERROR
+ setattribute response, 'code', $P0
+ $S0 = ex
+ $P0 = box $S0
+ setattribute response, 'message', $P0
+ .return (response)
+.end
+
+.sub 'DELETE' :method :nsentry
+ .param pmc request
+ .local pmc response
+ response = new ['HTTP';'Response']
+ .local pmc url
+ url = request.'uri'()
+ .local string path
+ path = url.'path'()
+
+ $I0 = stat path, .STAT_EXISTS
+ if $I0 goto L1
+ $P0 = box RC_NOT_FOUND
+ setattribute response, 'code', $P0
+ $S0 = "File `" . path
+ $S0 .= "' does not exist"
+ $P0 = box $S0
+ setattribute response, 'message', $P0
+ .return (response)
+ L1:
+
+ push_eh _handler
+ $S0 = unlink(path)
+ pop_eh
+
+ $P0 = box RC_OK
+ setattribute response, 'code', $P0
+ .return (response)
+
+ _handler:
+ .local pmc ex
+ .get_results (ex)
+ $P0 = box RC_INTERNAL_SERVER_ERROR
+ setattribute response, 'code', $P0
+ $S0 = ex
+ $P0 = box $S0
+ setattribute response, 'message', $P0
+ .return (response)
+.end
+
+=back
+
+=head3 Class LWP;Protocol;http
+
+=over 4
+
+=cut
+
+.namespace ['LWP';'Protocol';'http']
+
+.include 'socket.pasm'
+
+.sub '' :init :load :anon
+ $P0 = subclass ['LWP';'Protocol'], ['LWP';'Protocol';'http']
+.end
+
+.sub '_new_socket' :method
+ .param string host
+ .param int port
+ .local pmc sock, addr
+ sock = new 'Socket'
+ sock.'socket'(.PIO_PF_INET, .PIO_SOCK_STREAM, .PIO_PROTO_TCP)
+ addr = sock.'sockaddr'(host, port)
+ sock.'connect'(addr)
+ .return (sock)
+.end
+
+.sub '_fixup_header' :method
+ .param pmc headers
+ .param pmc url
+ .param pmc proxy
+ # Extract 'Host' header
+ .local string host
+ host = url.'authority'()
+ $I0 = index host, '@'
+ if $I0 < 0 goto L1
+ .local string userinfo
+ userinfo = substr host, 0, $I0
+ inc $I0
+ host = substr host, $I1
+ $S0 = headers['Authorization']
+ unless $S0 == '' goto L1
+ load_bytecode 'MIME/Base64.pbc'
+ $P0 = get_hll_global ['MIME';'Base64'], 'encode_base64'
+ $S0 = $P0(userinfo)
+ $S0 = 'Basic ' . $S0
+ headers['Authorization'] = $S0
+ L1:
+ headers['Host'] = host
+ if null proxy goto L2
+ userinfo = proxy.'userinfo'()
+ if userinfo == '' goto L2
+ load_bytecode 'MIME/Base64.pbc'
+ $P0 = get_hll_global ['MIME';'Base64'], 'encode_base64'
+ $S0 = $P0(userinfo)
+ $S0 = 'Basic ' . $S0
+ headers['Proxy-Authorization'] = $S0
+ L2:
+.end
+
+.sub '_format_request'
+ .param string method
+ .param string uri
+ .param pmc headers
+ .const string CRLF = "\r\n"
+ $P0 = new 'StringBuilder'
+ push $P0, method
+ push $P0, ' '
+ push $P0, uri
+ push $P0, ' HTTP/1.1'
+ push $P0, CRLF
+ $P1 = iter headers
+ L1:
+ unless $P1 goto L2
+ $S0 = shift $P1
+ $S1 = headers[$S0]
+ push $P0, $S0
+ push $P0, ': '
+ push $P0, $S1
+ push $P0, CRLF
+ goto L1
+ L2:
+ push $P0, CRLF
+ .return ($P0)
+.end
+
+.sub '_parse_response_headers' :method
+ .param pmc response
+ .param string str
+ .local string sep
+ sep = "\r\n"
+ $I0 = index str, "\r"
+ unless $I0 < 0 goto L0
+ sep = "\n"
+ L0:
+ $S0 = sep . sep
+ $I0 = index str, $S0
+ if $I0 < 0 goto L1
+ str = substr str, 0, $I0
+ L1:
+
+ $P0 = split sep, str
+ .local string status_line
+ status_line = shift $P0
+ $I0 = index status_line, " "
+ if $I0 < 0 goto L2
+ $S0 = substr status_line, 0, $I0
+ $P1 = box $S0
+ setattribute response, 'protocol', $P1
+ $I1 = $I0 + 1
+ $I0 = index status_line, " ", $I1
+ if $I0 < 0 goto L2
+ $I2 = $I0 - $I1
+ $S0 = substr status_line, $I1, $I2
+ $P1 = box $S0
+ setattribute response, 'code', $P1
+ inc $I0
+ $S0 = substr status_line, $I0
+ $P1 = box $S0
+ setattribute response, 'message', $P1
+
+ $P3 = new ['HTTP';'Headers']
+ L3:
+ unless $P0 goto L4
+ $S0 = shift $P0
+ $I0 = index $S0, ": "
+ if $I0 < 0 goto L3
+ $S1 = substr $S0, 0, $I0
+ $I0 += 2
+ $S2 = substr $S0, $I0
+ $P3[$S1] = $S2
+ goto L3
+ L4:
+ setattribute response, 'headers', $P3
+
+ $I0 = length str
+ .return ($I0)
+ L2:
+ .return (0)
+.end
+
+.sub '_parse_response_content' :method
+ .param pmc response
+ .param string str
+ $I0 = index str, "\r\n\r\n"
+ if $I0 < 0 goto L1
+ $I0 += 4
+ $S0 = substr str, $I0
+ $P0 = box $S0
+ setattribute response, 'content', $P0
+ goto L2
+ L1:
+ $I0 = index str, "\n\n"
+ if $I0 < 0 goto L1
+ $I0 += 2
+ $S0 = substr str, $I0
+ $P0 = box $S0
+ setattribute response, 'content', $P0
+ L2:
+.end
+
+=item request
+
+=cut
+
+.sub 'request' :method
+ .param pmc request
+ .param pmc proxy
+
+ .local string method
+ method = request.'method'()
+ .local pmc url
+ url = request.'uri'()
+ .local string host, port, fullpath
+ if null proxy goto L1
+ # proxy is an URL to an HTTP server which will proxy this request
+ host = proxy.'host'()
+ port = proxy.'port'()
+ unless method == 'CONNECT' goto L3
+ fullpath = url.'host'()
+ fullpath .= ':'
+ $S0 = url.'port'()
+ fullpath .= $S0
+ goto L2
+ L3:
+ fullpath = url
+ goto L2
+ L1:
+ host = url.'host'()
+ port = url.'port'()
+ fullpath = url.'path_query'()
+ $I0 = index fullpath, '/'
+ if $I0 == 0 goto L2
+ fullpath = '/' . fullpath
+ L2:
+
+ # connect to remote site
+ .local pmc sock
+ sock = self.'_new_socket'(host, port)
+
+ .local pmc request_headers
+ request_headers = request.'headers'()
+ self.'_fixup_header'(request_headers, url, proxy)
+
+ .local pmc ua
+ ua = self.'ua'()
+ $S0 = _format_request(method, fullpath, request_headers)
+ sock.'send'($S0)
+
+ .local string content
+ content = request.'content'()
+ unless content goto L11
+ .local int content_length
+ content_length = length content
+ $I0 = 0
+ L12:
+ unless $I0 < content_length goto L11
+ $S0 = substr content, $I0, 8192
+ $I1 = sock.'send'($S0)
+ $I0 += $I1
+ $N0 = $I0 / content_length
+ goto L12
+ L11:
+
+ .local pmc response
+ response = new ['HTTP';'Response']
+ .local pmc buf
+ buf = new 'StringBuilder'
+ .local int header_length
+ content_length = 0
+ L21:
+ ua.'progress'('tick', request)
+ $S0 = sock.'recv'()
+ if $S0 == '' goto L22
+ push buf, $S0
+ header_length = self.'_parse_response_headers'(response, buf)
+ $I0 = response.'is_success'()
+ unless $I0 goto L22
+ $S0 = response.'get_header'('Content-Length')
+ if $S0 == '' goto L21
+ content_length = $S0
+ L23:
+ $I0 = buf.'get_string_length'()
+ $I0 -= header_length
+ $N0 = $I0 / content_length
+ ua.'progress'($N0, request)
+ $S0 = sock.'recv'()
+ if $S0 == '' goto L22
+ push buf, $S0
+ goto L23
+ L22:
+ sock.'close'()
+ self.'_parse_response_content'(response, buf)
+ .return (response)
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_massacre/runtime/parrot/library/LWP/UserAgent.pir (from r46944, trunk/runtime/parrot/library/LWP/UserAgent.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/runtime/parrot/library/LWP/UserAgent.pir Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/runtime/parrot/library/LWP/UserAgent.pir)
@@ -0,0 +1,553 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+LWP - The World-Wide Web library for Parrot
+
+=head2 DESCRIPTION
+
+Simplified port of LWP (version 5.834)
+see http://search.cpan.org/~gaas/libwww-perl/
+
+=head3 Class LWP;UserAgent
+
+=over 4
+
+=cut
+
+.namespace ['LWP';'UserAgent']
+
+.sub '' :init :load :anon
+ load_bytecode 'URI.pbc'
+ load_bytecode 'HTTP/Message.pbc'
+ load_bytecode 'LWP/Protocol.pbc'
+ $P0 = newclass ['LWP';'UserAgent']
+ $P0.'add_attribute'('def_headers')
+ $P0.'add_attribute'('show_progress')
+ $P0.'add_attribute'('progress_start')
+ $P0.'add_attribute'('progress_lastp')
+ $P0.'add_attribute'('progress_ani')
+ $P0.'add_attribute'('max_redirect')
+ $P0.'add_attribute'('proxy')
+ $P0.'add_attribute'('no_proxy')
+ .globalconst int RC_MOVED_PERMANENTLY = 301
+ .globalconst int RC_FOUND = 302
+ .globalconst int RC_SEE_OTHER = 303
+ .globalconst int RC_TEMPORARY_REDIRECT = 307
+ .globalconst int RC_UNAUTHORIZED = 401
+ .globalconst int RC_PROXY_AUTHENTICATION_REQUIRED = 407
+ .globalconst int RC_NOT_IMPLEMENTED = 501
+.end
+
+.sub 'init' :vtable :method
+ $P0 = new ['HTTP';'Headers']
+ $P0['User-Agent'] = 'libwww-parrot'
+ setattribute self, 'def_headers', $P0
+ $P0 = box 7
+ setattribute self, 'max_redirect', $P0
+ $P0 = new 'Hash'
+ setattribute self, 'proxy', $P0
+ $P0 = new 'ResizableStringArray'
+ setattribute self, 'no_proxy', $P0
+.end
+
+.sub 'send_request' :method
+ .param pmc request
+ .local string method
+ method = request.'method'()
+ .local pmc url
+ url = request.'uri'()
+ .local string scheme
+ scheme = url.'scheme'()
+ self.'progress'('begin', request)
+ .local pmc proxy
+ proxy = request.'proxy'()
+ if null proxy goto L1
+ scheme = proxy.'scheme'()
+ L1:
+ .local pmc protocol, response
+ $P0 =get_hll_global ['LWP';'Protocol'], 'create'
+ protocol = $P0(scheme, self)
+ unless null protocol goto L2
+ response = _new_response(request, RC_NOT_IMPLEMENTED, 'Not Implemented')
+ goto L3
+ L2:
+ response = protocol.'request'(request, proxy)
+ setattribute response, 'request', request
+ $P0 = get_hll_global ['HTTP';'Date'], 'time2str'
+ $I0 = time
+ $S0 = $P0($I0)
+ response.'push_header'('Client-Date', $S0)
+ L3:
+ self.'progress'('end', response)
+ .return (response)
+.end
+
+.sub 'prepare_request' :method
+ .param pmc request
+ $P0 = request.'method'()
+ unless null $P0 goto L1
+ die "Method missing"
+ L1:
+ $P0 = request.'uri'()
+ unless null $P0 goto L2
+ die "URL missing"
+ L2:
+ $S0 = $P0.'scheme'()
+ unless $S0 == '' goto L3
+ die "URL must be absolute"
+ L3:
+ self.'_need_proxy'(request)
+ $P0 = getattribute self, 'def_headers'
+ $P1 = iter $P0
+ L4:
+ unless $P1 goto L5
+ $S0 = shift $P1
+ $S1 = $P0[$S0]
+ request.'push_header'($S0, $S1)
+ goto L4
+ L5:
+.end
+
+.sub 'simple_request' :method
+ .param pmc request
+ unless null request goto L1
+ die "No request object passed in"
+ L1:
+ $I0 = isa request, ['HTTP';'Request']
+ if $I0 goto L2
+ die "You need a ['HTTP';'Request']"
+ L2:
+ self.'prepare_request'(request)
+ .tailcall self.'send_request'(request)
+.end
+
+.sub 'request' :method
+ .param pmc request
+ .param pmc previous :optional
+ .param int has_previous :opt_flag
+
+ .local pmc response
+ response = self.'simple_request'(request)
+ unless has_previous goto L1
+ response.'previous'(previous)
+ L1:
+
+ .local int redirect
+ $P0 = response.'redirect'()
+ redirect = elements $P0
+ .local int max_redirect
+ $P0 = getattribute self, 'max_redirect'
+ max_redirect = $P0
+ unless redirect >= max_redirect goto L2
+ $S0 = 'Redirect loop detected (max_redirect = '
+ $S1 = max_redirect
+ $S0 .= $S1
+ $S0 .= ')'
+ response.'push_header'('Client-Warning', $S0)
+ .return (response)
+ L2:
+
+ .local int code
+ code = response.'code'()
+
+ if code == RC_MOVED_PERMANENTLY goto L3
+ if code == RC_FOUND goto L3
+ if code == RC_SEE_OTHER goto L3
+ if code == RC_TEMPORARY_REDIRECT goto L3
+ goto L4
+ L3:
+ .local pmc referral
+ referral = clone request
+ # These headers should never be forwarded
+ referral.'remove_header'('Host')
+ referral.'remove_header'('Cookie')
+
+ # work in progress
+
+ .local string referral_uri
+ referral_uri = response.'get_header'('Location')
+ $P0 = get_hll_global ['URI'], 'new_from_string'
+ $P1 = $P0(referral_uri)
+ $S0 = $P1.'scheme'()
+ unless $S0 == '' goto L5
+ $P2 = new 'StringBuilder'
+ $P3 = request.'uri'()
+ $S0 = $P3.'scheme'()
+ push $P2, $S0
+ push $P2, '://'
+ $S0 = request.'get_header'('Host')
+ push $P2, $S0
+ push $P2, referral_uri
+ $P1 = $P0($P2)
+ L5:
+ setattribute referral, 'uri', $P1
+
+ # work in progress
+
+ $I0 = self.'redirect_ok'(referral, response)
+ if $I0 goto L6
+ .return (response)
+ L6:
+ .tailcall self.'request'(referral, response)
+
+ L4:
+ .local int proxy
+ proxy = 0
+ .local string ch_header
+ ch_header = 'WWW-Authenticate'
+ if code == RC_UNAUTHORIZED goto L11
+ proxy = 1
+ ch_header = 'Proxy-Authenticate'
+ if code == RC_PROXY_AUTHENTICATION_REQUIRED goto L11
+ goto L12
+ L11:
+ .local string challenge
+ challenge = response.'get_header'(ch_header)
+ unless challenge == '' goto L13
+ response.'push_header'('Client-Warning', 'Missing Authenticate header')
+ .return (response)
+ L13:
+
+ # work in progress
+ print "# "
+ say challenge
+
+ L12:
+ .return (response)
+.end
+
+=item get
+
+=cut
+
+.sub 'get' :method
+ .param pmc args :slurpy
+ .param pmc kv :slurpy :named
+ .local pmc request
+ $P0 = get_hll_global ['HTTP';'Request'], 'GET'
+ request = $P0(args :flat, kv :flat :named)
+ .tailcall self.'request'(request)
+.end
+
+=item head
+
+=cut
+
+.sub 'head' :method
+ .param pmc args :slurpy
+ .param pmc kv :slurpy :named
+ .local pmc request
+ $P0 = get_hll_global ['HTTP';'Request'], 'HEAD'
+ request = $P0(args :flat, kv :flat :named)
+ .tailcall self.'request'(request)
+.end
+
+=item post
+
+=cut
+
+.sub 'post' :method
+ .param pmc args :slurpy
+ .param pmc kv :slurpy :named
+ .local pmc request
+ $P0 = get_hll_global ['HTTP';'Request'], 'POST'
+ request = $P0(args :flat, kv :flat :named)
+ .tailcall self.'request'(request)
+.end
+
+=item put
+
+=cut
+
+.sub 'put' :method
+ .param pmc args :slurpy
+ .param pmc kv :slurpy :named
+ .local pmc request
+ $P0 = get_hll_global ['HTTP';'Request'], 'PUT'
+ request = $P0(args :flat, kv :flat :named)
+ .tailcall self.'request'(request)
+.end
+
+=item delete
+
+=cut
+
+.sub 'delete' :method
+ .param pmc args :slurpy
+ .param pmc kv :slurpy :named
+ .local pmc request
+ $P0 = get_hll_global ['HTTP';'Request'], 'DELETE'
+ request = $P0(args :flat, kv :flat :named)
+ .tailcall self.'request'(request)
+.end
+
+.sub 'progress' :method
+ .param string status
+ .param pmc msg
+ $P0 = getattribute self, 'show_progress'
+ if null $P0 goto L1
+ unless $P0 goto L1
+ unless status == 'begin' goto L2
+ printerr "** "
+ $P0 = getattribute msg, 'method'
+ printerr $P0
+ printerr " "
+ $P0 = getattribute msg, 'uri'
+ printerr $P0
+ printerr " ==> "
+ $N1 = time
+ $P0 = box $N1
+ setattribute self, 'progress_start', $P0
+ $P0 = box ''
+ setattribute self, 'progress_lastp', $P0
+ $P0 = box 0
+ setattribute self, 'progress_ani', $P0
+ goto L1
+ L2:
+ unless status == 'end' goto L3
+ $P0 = getattribute self, 'progress_start'
+ $N1 = $P0
+ $N2 = time
+ null $P0
+ setattribute self, 'progress_start', $P0
+ setattribute self, 'progress_lastp', $P0
+ setattribute self, 'progress_ani', $P0
+ $S0 = msg.'status_line'()
+ printerr $S0
+ $N0 =$N2 - $N1
+ $I0 = $N0
+ unless $I0 goto L4
+ printerr " ("
+ printerr $I0
+ printerr "s)"
+ L4:
+ printerr "\n"
+ goto L1
+ L3:
+ unless status == 'tick' goto L5
+ $P0 = getattribute self, 'progress_ani'
+ inc $P0
+ $P0 %= 4
+ $P1 = split '', '-\|/'
+ $S0 = $P1[$P0]
+ printerr $S0
+ printerr "\b"
+ goto L1
+ L5:
+ $N0 = status
+ $N0 *= 100
+ $P0 = new 'FixedFloatArray'
+ set $P0, 1
+ $P0[0] = $N0
+ $S1 = sprintf '%3.0f%%', $P0
+ $P0 = getattribute self, 'progress_lastp'
+ $S0 = $P0
+ if $S0 == $S1 goto L1
+ set $P0, $S1
+ printerr $S1
+ printerr "\b\b\b\b"
+ L1:
+.end
+
+.sub 'redirect_ok' :method
+ .param pmc new_request
+ .param pmc response
+ $P0 = response.'request'()
+ $S0 = $P0.'method'()
+ if $S0 == 'GET' goto L1
+ if $S0 == 'HEAD' goto L1
+ .return (0)
+ L1:
+ # work in progress
+ .return (1)
+.end
+
+=item max_redirect
+
+=cut
+
+.sub 'max_redirect' :method
+ .param pmc val
+ setattribute self, 'max_redirect', val
+.end
+
+=item show_progress
+
+=cut
+
+.sub 'show_progress' :method
+ .param pmc val
+ setattribute self, 'show_progress', val
+.end
+
+=item agent
+
+=cut
+
+.sub 'agent' :method
+ .param string val
+ $P0 = getattribute self, 'def_headers'
+ $P0['User-Agent'] = val
+.end
+
+.sub '_need_proxy' :method
+ .param pmc req
+ $P0 = req.'proxy'()
+ unless null $P0 goto L1
+ .local pmc uri
+ uri = req.'uri'()
+ .local string scheme
+ scheme = uri.'scheme'()
+ $P0 = getattribute self, 'proxy'
+ .local string proxy
+ proxy = $P0[scheme]
+ unless proxy goto L1
+ .local string host
+ host = uri.'host'()
+ $P0 = getattribute self, 'no_proxy'
+ $P1 = iter $P0
+ L2:
+ unless $P1 goto L3
+ $S0 = shift $P1
+ $I0 = index host, $S0
+ if $I0 < 0 goto L2
+ goto L1
+ L3:
+ $P0 = get_hll_global ['URI'], 'new_from_string'
+ $P0 = $P0(proxy)
+ req.'proxy'($P0)
+ L1:
+.end
+
+=item env_provy
+
+=cut
+
+.sub 'env_proxy' :method
+ $P0 = new 'Env'
+ $P1 = iter $P0
+ L1:
+ unless $P1 goto L2
+ $S0 = shift $P1
+ $S1 = downcase $S0
+ $I0 = index $S1, '_proxy'
+ if $I0 < 0 goto L1
+ $S2 = $P0[$S0]
+ unless $S1 == 'no_proxy' goto L3
+ $P2 = split ',', $S2
+ $P3 = iter $P2
+ L4:
+ unless $P3 goto L1
+ $S0 = shift $P3
+ $S0 = trim($S0)
+ self.'no_proxy'($S0)
+ goto L4
+ L3:
+ $S3 = substr $S1, 0, $I0
+ # Ignore xxx_proxy variables if xxx isn't a supported protocol
+ $P11 = new 'Key'
+ set $P11, 'LWP'
+ $P12 = new 'Key'
+ set $P12, 'Protocol'
+ push $P11, $P12
+ $P13 = new 'Key'
+ set $P13, $S3
+ push $P11, $P13
+ $P10 = get_class $P11
+ if null $P10 goto L1
+ self.'proxy'($S3, $S2)
+ goto L1
+ L2:
+.end
+
+.include 'cclass.pasm'
+
+.sub 'trim' :anon
+ .param string str
+ $I0 = length str
+ $I0 = find_not_cclass .CCLASS_WHITESPACE, str, 0, $I0
+ str = substr str, $I0
+ $I0 = length str
+ L1:
+ dec $I0
+ unless $I0 > 0 goto L2
+ $I1 = is_cclass .CCLASS_WHITESPACE, str, $I0
+ if $I1 != 0 goto L1
+ L2:
+ inc $I0
+ str = substr str, 0, $I0
+ .return (str)
+.end
+
+=item proxy
+
+=cut
+
+.sub 'proxy' :method
+ .param string scheme
+ .param string url
+ $P0 = getattribute self, 'proxy'
+ $P0[scheme] = url
+.end
+
+=item no_proxy
+
+=cut
+
+.sub 'no_proxy' :method
+ .param pmc args :slurpy
+ $I0 = elements args
+ if $I0 goto L1
+ $P0 = new 'ResizableStringArray'
+ setattribute self, 'no_proxy', $P0
+ goto L2
+ L1:
+ $P0 = getattribute self, 'no_proxy'
+ L3:
+ unless args goto L2
+ $S0 = shift args
+ push $P0, $S0
+ goto L3
+ L2:
+.end
+
+.sub '_new_response'
+ .param pmc request
+ .param pmc code
+ .param pmc message
+ .local pmc response
+ response = new ['HTTP';'Response']
+ setattribute response, 'code', code
+ setattribute response, 'message', message
+ setattribute response, 'request', request
+ $P0 = get_hll_global ['HTTP';'Date'], 'time2str'
+ $I0 = time
+ $S0 = $P0($I0)
+ response.'push_header'('Client-Date', $S0)
+ response.'push_header'('Client-Warning', "Internal response")
+ response.'push_header'('Content-Type', 'text/plain')
+ $S0 = code
+ $S0 .= ' '
+ $S1 = message
+ $S0 .= $S1
+ $S0 .= "\n"
+ $P0 = box $S0
+ setattribute response, 'content', $P0
+ .return (response)
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_massacre/runtime/parrot/library/URI.pir
==============================================================================
--- branches/ops_massacre/runtime/parrot/library/URI.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/runtime/parrot/library/URI.pir Mon May 24 08:26:56 2010 (r46947)
@@ -280,16 +280,45 @@
$P0 = subclass ['URI';'_generic'], ['URI';'_server']
.end
+=item userinfo
+
+=cut
+
+.sub 'userinfo' :method
+ $S0 = self.'authority'()
+ $I0 = index $S0, '@'
+ if $I0 < 0 goto L1
+ $S0 = substr $S0, 0, $I0
+ .return ($S0)
+ L1:
+ .return ('')
+.end
+
=item host
=cut
.sub 'host' :method
$S0 = self.'authority'()
- $I0 = index $S0, ':'
+ $I0 = index $S0, '@'
if $I0 < 0 goto L1
- $S0 = substr $S0, 0, $I0
+ inc $I0
+ $S0 = substr $S0, $I0
L1:
+ .local int pos, lastpos
+ lastpos = length $S0
+ pos = 0
+ L2:
+ pos = index $S0, ':', pos
+ if pos < 0 goto L3
+ $I1 = pos
+ inc pos
+ $I0 = is_cclass .CCLASS_NUMERIC, $S0, pos
+ unless $I0 goto L2
+ $I0 = find_not_cclass .CCLASS_NUMERIC, $S0, pos, lastpos
+ unless $I0 == lastpos goto L2
+ $S0 = substr $S0, 0, $I1
+ L3:
.return ($S0)
.end
@@ -301,8 +330,10 @@
$S0 = self.'authority'()
.local int pos, lastpos
lastpos = length $S0
- pos = index $S0, ':'
- if pos < 0 goto L1
+ pos = 0
+ L1:
+ pos = index $S0, ':', pos
+ if pos < 0 goto L2
inc pos
$I0 = is_cclass .CCLASS_NUMERIC, $S0, pos
unless $I0 goto L1
@@ -310,7 +341,7 @@
unless $I0 == lastpos goto L1
$S1 = substr $S0, pos
.return ($S1)
- L1:
+ L2:
.tailcall self.'default_port'()
.end
Modified: branches/ops_massacre/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/ops_massacre/runtime/parrot/library/distutils.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/runtime/parrot/library/distutils.pir Mon May 24 08:26:56 2010 (r46947)
@@ -1057,8 +1057,6 @@
.param string cflags
.param string ldflags
mkpath('dynext', 1 :named('verbose'))
- .local pmc cores
- cores = get_cores()
.local string load_ext
load_ext = get_load_ext()
$P0 = iter hash
@@ -1067,18 +1065,10 @@
.local string ops, src
ops = shift $P0
src = hash[ops]
- $P1 = iter cores
- L3:
- unless $P1 goto L4
- .local string core, suffix
- core = shift $P1
- suffix = cores[core]
- $S0 = _mk_path_dynops(ops, suffix, load_ext)
+ $S0 = _mk_path_dynops(ops, load_ext)
$I0 = newer($S0, src)
- if $I0 goto L3
- __build_dynops(src, ops, core, suffix, cflags, ldflags)
- goto L3
- L4:
+ if $I0 goto L1
+ __build_dynops(src, ops, cflags, ldflags)
goto L1
L2:
.end
@@ -1086,31 +1076,24 @@
.sub '__build_dynops' :anon
.param string src
.param string ops
- .param string core
- .param string suffix
.param string cflags
.param string ldflags
.local pmc config
config = get_config()
.local string cmd
- cmd = config['perl']
- cmd .= " "
- $S0 = get_tool('build/ops2c.pl')
- cmd .= $S0
- cmd .= " "
- cmd .= core
+ cmd = get_executable('ops2c')
cmd .= " --dynamic "
cmd .= src
system(cmd, 1 :named('verbose'))
$S0 = config['o']
- $S1 = _mk_path_gen_dynops(src, ops, suffix, $S0)
- $S2 = _mk_path_gen_dynops(src, ops, suffix, '.c')
+ $S1 = _mk_path_gen_dynops(src, ops, $S0)
+ $S2 = _mk_path_gen_dynops(src, ops, '.c')
__compile_cc($S1, $S2, cflags)
.local string dynext
$S0 = config['load_ext']
- dynext = _mk_path_dynops(ops, suffix, $S0)
+ dynext = _mk_path_dynops(ops, $S0)
cmd = config['ld']
cmd .= " "
$S0 = config['ld_out']
@@ -1118,7 +1101,7 @@
cmd .= dynext
cmd .= " "
$S0 = config['o']
- $S0 = _mk_path_gen_dynops(src, ops, suffix, $S0)
+ $S0 = _mk_path_gen_dynops(src, ops, $S0)
cmd .= $S0
cmd .= " "
$S0 = get_ldflags()
@@ -1176,10 +1159,8 @@
.sub '_mk_path_dynops' :anon
.param string ops
- .param string suffix
.param string load_ext
$S0 = "dynext/" . ops
- $S0 .= suffix
$S0 .= load_ext
.return ($S0)
.end
@@ -1187,22 +1168,14 @@
.sub '_mk_path_gen_dynops' :anon
.param string src
.param string ops
- .param string suffix
.param string ext
$S0 = dirname(src)
$S0 .= "/"
$S0 .= ops
- $S0 .= suffix
$S0 .= ext
.return ($S0)
.end
-.sub 'get_cores'
- $P0 = new 'Hash'
- $P0['C'] = ''
- .return ($P0)
-.end
-
=item dynpmc
hash
@@ -1711,8 +1684,6 @@
.sub 'clean_dynops'
.param pmc hash
- .local pmc cores
- cores = get_cores()
.local string load_ext, obj
load_ext = get_load_ext()
obj = get_obj()
@@ -1722,22 +1693,14 @@
.local string ops, src
ops = shift $P0
src = hash[ops]
- $P1 = iter cores
- L3:
- unless $P1 goto L4
- .local string core, suffix
- core = shift $P1
- suffix = cores[core]
- $S0 = _mk_path_dynops(ops, suffix, load_ext)
+ $S0 = _mk_path_dynops(ops, load_ext)
unlink($S0, 1 :named('verbose'))
- $S0 = _mk_path_gen_dynops(src, ops, suffix, '.c')
+ $S0 = _mk_path_gen_dynops(src, ops, '.c')
unlink($S0, 1 :named('verbose'))
- $S0 = _mk_path_gen_dynops(src, ops, suffix, '.h')
+ $S0 = _mk_path_gen_dynops(src, ops, '.h')
unlink($S0, 1 :named('verbose'))
- $S0 = _mk_path_gen_dynops(src, ops, suffix, obj)
+ $S0 = _mk_path_gen_dynops(src, ops, obj)
unlink($S0, 1 :named('verbose'))
- goto L3
- L4:
goto L1
L2:
.end
@@ -2152,9 +2115,10 @@
set $P0, 1
$P0[0] = archive
push contents, $P0
- load_bytecode 'LWP.pir'
+ load_bytecode 'LWP/UserAgent.pir'
.local pmc ua, response
ua = new ['LWP';'UserAgent']
+ ua.'env_proxy'()
ua.'show_progress'(1)
$S0 = kv['smolder_url']
response = ua.'post'($S0, contents :flat, 'form-data' :named('Content-Type'), 'close' :named('Connection'))
@@ -2406,26 +2370,17 @@
.sub 'get_install_dynops' :anon
.param pmc files
.param pmc hash
- .local string libdir, load_ext, ops, suffix
+ .local string libdir, load_ext, ops
libdir = get_libdir()
load_ext = get_load_ext()
- .local pmc cores
- cores = get_cores()
$P0 = iter hash
L1:
unless $P0 goto L2
ops = shift $P0
- $P1 = iter cores
- L3:
- unless $P1 goto L4
- $S0 = shift $P1
- suffix = cores[$S0]
- $S1 = _mk_path_dynops(ops, suffix, load_ext)
+ $S1 = _mk_path_dynops(ops, load_ext)
$S2 = libdir . "/"
$S2 .= $S1
files[$S2] = $S1
- goto L3
- L4:
goto L1
L2:
.end
Modified: branches/ops_massacre/src/debug.c
==============================================================================
--- branches/ops_massacre/src/debug.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/debug.c Mon May 24 08:26:56 2010 (r46947)
@@ -2481,8 +2481,7 @@
" :unused040",
" :optional",
" :opt_flag",
- " :named",
- NULL
+ " :named"
};
@@ -2503,7 +2502,7 @@
/* Add flags, if we have any. */
{
- int flag_idx = 0;
+ unsigned int flag_idx = 0;
int flags = sig_value;
/* End when we run out of flags, off the end of flag_names, or
@@ -2511,10 +2510,12 @@
* 100 is just an estimate of all buf lengths added together.
*/
while (flags && idx < sizeof (buf) - 100) {
- const char * const flag_string
- = (specialop == 2 && STREQ(flag_names[flag_idx], " :flat"))
+ const char * const flag_string =
+ flag_idx < (sizeof flag_names / sizeof (char *))
+ ? (specialop == 2 && STREQ(flag_names[flag_idx], " :flat"))
? " :slurpy"
- : flag_names[flag_idx];
+ : flag_names[flag_idx]
+ : (const char *) NULL;
if (! flag_string)
break;
Modified: branches/ops_massacre/src/dynoplibs/Rules.in
==============================================================================
--- branches/ops_massacre/src/dynoplibs/Rules.in Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/dynoplibs/Rules.in Mon May 24 08:26:56 2010 (r46947)
@@ -17,8 +17,8 @@
src/dynoplibs/obscure_ops.h: src/dynoplibs/obscure_ops.c
-src/dynoplibs/obscure_ops.c: src/dynoplibs/obscure.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --dynamic src/dynoplibs/obscure.ops
+src/dynoplibs/obscure_ops.c: src/dynoplibs/obscure.ops $(OPS2C)
+ $(OPS2C) --dynamic src/dynoplibs/obscure.ops
$(DYNEXT_DIR)/math_ops$(LOAD_EXT): src/dynoplibs/math_ops$(O) $(LIBPARROT)
@@ -26,8 +26,8 @@
#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
#IF(cygwin or hpux): $(CHMOD) 0775 $@
-src/dynoplibs/math_ops.c: src/dynoplibs/math.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --dynamic src/dynoplibs/math.ops
+src/dynoplibs/math_ops.c: src/dynoplibs/math.ops $(OPS2C)
+ $(OPS2C) --dynamic src/dynoplibs/math.ops
src/dynoplibs/math_ops$(O): $(DYNOP_O_DEPS) \
src/dynoplibs/math_ops.c src/dynoplibs/math_ops.h
@@ -45,8 +45,8 @@
src/dynoplibs/deprecated_ops.h: src/dynoplibs/deprecated_ops.c
-src/dynoplibs/deprecated_ops.c: src/dynoplibs/deprecated.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --dynamic src/dynoplibs/deprecated.ops
+src/dynoplibs/deprecated_ops.c: src/dynoplibs/deprecated.ops $(OPS2C)
+ $(OPS2C) --dynamic src/dynoplibs/deprecated.ops
$(DYNEXT_DIR)/trans_ops$(LOAD_EXT): src/dynoplibs/trans_ops$(O) $(LIBPARROT)
$(LD) @ld_out@$@ src/dynoplibs/trans_ops$(O) $(LINKARGS)
@@ -58,5 +58,5 @@
src/dynoplibs/trans_ops.h: src/dynoplibs/trans_ops.c
-src/dynoplibs/trans_ops.c: src/dynoplibs/trans.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --dynamic src/dynoplibs/trans.ops
+src/dynoplibs/trans_ops.c: src/dynoplibs/trans.ops $(OPS2C)
+ $(OPS2C) --dynamic src/dynoplibs/trans.ops
Modified: branches/ops_massacre/src/embed.c
==============================================================================
--- branches/ops_massacre/src/embed.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/embed.c Mon May 24 08:26:56 2010 (r46947)
@@ -281,6 +281,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
Parrot_Int
Parrot_test_flag(PARROT_INTERP, Parrot_Int flag)
{
@@ -300,6 +301,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
Parrot_UInt
Parrot_test_debug(PARROT_INTERP, Parrot_UInt flag)
{
@@ -319,6 +321,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
Parrot_UInt
Parrot_test_trace(PARROT_INTERP, Parrot_UInt flag)
{
Modified: branches/ops_massacre/src/exceptions.c
==============================================================================
--- branches/ops_massacre/src/exceptions.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/exceptions.c Mon May 24 08:26:56 2010 (r46947)
@@ -680,9 +680,9 @@
*/
+PARROT_EXPORT
PARROT_DOES_NOT_RETURN
PARROT_COLD
-PARROT_EXPORT
void
do_panic(NULLOK_INTERP, ARGIN_NULLOK(const char *message),
ARGIN_NULLOK(const char *file), unsigned int line)
Modified: branches/ops_massacre/src/gc/gc_private.h
==============================================================================
--- branches/ops_massacre/src/gc/gc_private.h Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/gc/gc_private.h Mon May 24 08:26:56 2010 (r46947)
@@ -352,7 +352,7 @@
ARGMOD(Memory_Pools *mem_pools),
int flag,
ARGIN_NULLOK(void *arg),
- ARGIN(pool_iter_fn func))
+ NOTNULL(pool_iter_fn func))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(5)
Modified: branches/ops_massacre/src/gc/mark_sweep.c
==============================================================================
--- branches/ops_massacre/src/gc/mark_sweep.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/gc/mark_sweep.c Mon May 24 08:26:56 2010 (r46947)
@@ -840,7 +840,7 @@
header_pools_iterate_callback(PARROT_INTERP,
ARGMOD(Memory_Pools *mem_pools),
int flag, ARGIN_NULLOK(void *arg),
- ARGIN(pool_iter_fn func))
+ NOTNULL(pool_iter_fn func))
{
ASSERT_ARGS(header_pools_iterate_callback)
Modified: branches/ops_massacre/src/hash.c
==============================================================================
--- branches/ops_massacre/src/hash.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/hash.c Mon May 24 08:26:56 2010 (r46947)
@@ -375,7 +375,7 @@
*/
PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
size_t
key_hash_int(SHIM_INTERP, ARGIN_NULLOK(const void *value), size_t seed)
{
@@ -396,7 +396,7 @@
*/
PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
int
int_compare(SHIM_INTERP, ARGIN_NULLOK(const void *a), ARGIN_NULLOK(const void *b))
{
@@ -1121,8 +1121,7 @@
*/
void
-parrot_chash_destroy_values(PARROT_INTERP, ARGMOD(Hash *hash),
- NOTNULL(value_free func))
+parrot_chash_destroy_values(PARROT_INTERP, ARGMOD(Hash *hash), NOTNULL(value_free func))
{
ASSERT_ARGS(parrot_chash_destroy_values)
UINTVAL i;
Modified: branches/ops_massacre/src/interp/inter_misc.c
==============================================================================
--- branches/ops_massacre/src/interp/inter_misc.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/interp/inter_misc.c Mon May 24 08:26:56 2010 (r46947)
@@ -385,6 +385,7 @@
*/
PARROT_WARN_UNUSED_RESULT
+PARROT_CONST_FUNCTION
INTVAL
sysinfo_i(SHIM_INTERP, INTVAL info_wanted)
{
Modified: branches/ops_massacre/src/longopt.c
==============================================================================
--- branches/ops_massacre/src/longopt.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/longopt.c Mon May 24 08:26:56 2010 (r46947)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2007, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -25,6 +25,7 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+PARROT_WARN_UNUSED_RESULT
static int longopt_get_longopt(PARROT_INTERP,
int argc,
ARGIN(const char* argv[]),
@@ -36,6 +37,7 @@
__attribute__nonnull__(5)
FUNC_MODIFIES(* info_buf);
+PARROT_WARN_UNUSED_RESULT
static int longopt_get_shortopt(PARROT_INTERP,
int argc,
ARGIN(const char* argv[]),
@@ -64,6 +66,57 @@
/*
+=item C<const struct longopt_opt_decl * Parrot_cmd_options(void)>
+
+Set up the const struct declaration for cmd_options
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_CONST_FUNCTION
+const struct longopt_opt_decl *
+Parrot_cmd_options(void)
+{
+ ASSERT_ARGS(Parrot_cmd_options)
+ static const struct longopt_opt_decl cmd_options[] = {
+ { '.', '.', (OPTION_flags)0, { "--wait" } },
+ { 'D', 'D', OPTION_optional_FLAG, { "--parrot-debug" } },
+ { 'E', 'E', (OPTION_flags)0, { "--pre-process-only" } },
+ { 'G', 'G', (OPTION_flags)0, { "--no-gc" } },
+ { '\0', OPT_HASH_SEED, OPTION_required_FLAG, { "--hash-seed" } },
+ { 'I', 'I', OPTION_required_FLAG, { "--include" } },
+ { 'L', 'L', OPTION_required_FLAG, { "--library" } },
+ { 'O', 'O', OPTION_optional_FLAG, { "--optimize" } },
+ { 'R', 'R', OPTION_required_FLAG, { "--runcore" } },
+ { 'g', 'g', OPTION_required_FLAG, { "--gc" } },
+ { 'V', 'V', (OPTION_flags)0, { "--version" } },
+ { 'X', 'X', OPTION_required_FLAG, { "--dynext" } },
+ { '\0', OPT_DESTROY_FLAG, (OPTION_flags)0,
+ { "--leak-test", "--destroy-at-end" } },
+ { '\0', OPT_GC_DEBUG, (OPTION_flags)0, { "--gc-debug" } },
+ { 'a', 'a', (OPTION_flags)0, { "--pasm" } },
+ { 'c', 'c', (OPTION_flags)0, { "--pbc" } },
+ { 'd', 'd', OPTION_optional_FLAG, { "--imcc-debug" } },
+ { '\0', OPT_HELP_DEBUG, (OPTION_flags)0, { "--help-debug" } },
+ { 'h', 'h', (OPTION_flags)0, { "--help" } },
+ { 'o', 'o', OPTION_required_FLAG, { "--output" } },
+ { '\0', OPT_PBC_OUTPUT, (OPTION_flags)0, { "--output-pbc" } },
+ { 'r', 'r', (OPTION_flags)0, { "--run-pbc" } },
+ { '\0', OPT_RUNTIME_PREFIX, (OPTION_flags)0, { "--runtime-prefix" } },
+ { 't', 't', OPTION_optional_FLAG, { "--trace" } },
+ { 'v', 'v', (OPTION_flags)0, { "--verbose" } },
+ { 'w', 'w', (OPTION_flags)0, { "--warnings" } },
+ { 'y', 'y', (OPTION_flags)0, { "--yydebug" } },
+ { 0, 0, (OPTION_flags)0, { NULL } }
+ };
+ return cmd_options;
+}
+
+/*
+
=item C<int longopt_get(PARROT_INTERP, int argc, const char* argv[], const
struct longopt_opt_decl options[], struct longopt_opt_info* info_buf)>
@@ -83,6 +136,7 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
int
longopt_get(PARROT_INTERP, int argc, ARGIN(const char* argv[]),
ARGIN(const struct longopt_opt_decl options[]),
@@ -134,6 +188,7 @@
*/
+PARROT_WARN_UNUSED_RESULT
static int
longopt_get_longopt(PARROT_INTERP, int argc, ARGIN(const char* argv[]),
ARGIN(const struct longopt_opt_decl options[]),
@@ -231,6 +286,7 @@
*/
+PARROT_WARN_UNUSED_RESULT
static int
longopt_get_shortopt(PARROT_INTERP, int argc, ARGIN(const char* argv[]),
ARGIN(const struct longopt_opt_decl options[]),
Modified: branches/ops_massacre/src/main.c
==============================================================================
--- branches/ops_massacre/src/main.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/main.c Mon May 24 08:26:56 2010 (r46947)
@@ -45,17 +45,20 @@
static void Parrot_version(void);
PARROT_CAN_RETURN_NULL
static const char * parseflags(PARROT_INTERP,
- ARGMOD(int *argc),
- ARGMOD(const char **argv[]),
+ int argc,
+ ARGIN(const char *argv[]),
+ ARGOUT(int *pgm_argc),
+ ARGOUT(const char ***pgm_argv),
ARGMOD(Parrot_Run_core_t *core),
ARGMOD(Parrot_trace_flags *trace))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
__attribute__nonnull__(5)
- FUNC_MODIFIES(*argc)
- FUNC_MODIFIES(*argv[])
+ __attribute__nonnull__(6)
+ __attribute__nonnull__(7)
+ FUNC_MODIFIES(*pgm_argc)
+ FUNC_MODIFIES(*pgm_argv)
FUNC_MODIFIES(*core)
FUNC_MODIFIES(*trace);
@@ -76,8 +79,9 @@
#define ASSERT_ARGS_Parrot_version __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_parseflags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(argc) \
, PARROT_ASSERT_ARG(argv) \
+ , PARROT_ASSERT_ARG(pgm_argc) \
+ , PARROT_ASSERT_ARG(pgm_argv) \
, PARROT_ASSERT_ARG(core) \
, PARROT_ASSERT_ARG(trace))
#define ASSERT_ARGS_parseflags_minimal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -101,11 +105,13 @@
int
main(int argc, const char *argv[])
{
- int stacktop;
- const char *sourcefile;
- const char *execname;
- Interp *interp;
- int status;
+ int stacktop;
+ const char *sourcefile;
+ const char *execname;
+ Interp *interp;
+ int status;
+ int pir_argc;
+ const char **pir_argv;
Parrot_Run_core_t core = PARROT_SLOW_CORE;
Parrot_trace_flags trace = PARROT_NO_TRACE;
@@ -129,66 +135,28 @@
/* Now initialize interpreter */
initialize_interpreter(interp, (void*)&stacktop);
- imcc_initialize(interp);
/* Parse flags */
- sourcefile = parseflags(interp, &argc, &argv, &core, &trace);
+ sourcefile = parseflags(interp, argc, argv, &pir_argc, &pir_argv, &core, &trace);
Parrot_set_trace(interp, trace);
Parrot_set_run_core(interp, (Parrot_Run_core_t) core);
Parrot_set_executable_name(interp, Parrot_str_new(interp, execname, 0));
- status = imcc_run(interp, sourcefile, argc, argv);
- UNUSED(status);
+ status = imcc_run(interp, sourcefile, argc, argv);
+
+ if (status)
+ imcc_run_pbc(interp, interp->output_file, pir_argc, pir_argv);
/* Clean-up after ourselves */
Parrot_destroy(interp);
Parrot_exit(interp, 0);
}
-#define OPT_GC_DEBUG 128
-#define OPT_DESTROY_FLAG 129
-#define OPT_HELP_DEBUG 130
-#define OPT_PBC_OUTPUT 131
-#define OPT_RUNTIME_PREFIX 132
-#define OPT_HASH_SEED 133
-
#define SET_FLAG(flag) Parrot_set_flag(interp, (flag))
#define SET_DEBUG(flag) Parrot_set_debug(interp, (flag))
#define SET_TRACE(flag) Parrot_set_trace(interp, (flag))
-static struct longopt_opt_decl options[] = {
- { '.', '.', (OPTION_flags)0, { "--wait" } },
- { 'D', 'D', OPTION_optional_FLAG, { "--parrot-debug" } },
- { 'E', 'E', (OPTION_flags)0, { "--pre-process-only" } },
- { 'G', 'G', (OPTION_flags)0, { "--no-gc" } },
- { '\0', OPT_HASH_SEED, OPTION_required_FLAG, { "--hash-seed" } },
- { 'I', 'I', OPTION_required_FLAG, { "--include" } },
- { 'L', 'L', OPTION_required_FLAG, { "--library" } },
- { 'O', 'O', OPTION_optional_FLAG, { "--optimize" } },
- { 'R', 'R', OPTION_required_FLAG, { "--runcore" } },
- { 'g', 'g', OPTION_required_FLAG, { "--gc" } },
- { 'V', 'V', (OPTION_flags)0, { "--version" } },
- { 'X', 'X', OPTION_required_FLAG, { "--dynext" } },
- { '\0', OPT_DESTROY_FLAG, (OPTION_flags)0,
- { "--leak-test", "--destroy-at-end" } },
- { '\0', OPT_GC_DEBUG, (OPTION_flags)0, { "--gc-debug" } },
- { 'a', 'a', (OPTION_flags)0, { "--pasm" } },
- { 'c', 'c', (OPTION_flags)0, { "--pbc" } },
- { 'd', 'd', OPTION_optional_FLAG, { "--imcc-debug" } },
- { '\0', OPT_HELP_DEBUG, (OPTION_flags)0, { "--help-debug" } },
- { 'h', 'h', (OPTION_flags)0, { "--help" } },
- { 'o', 'o', OPTION_required_FLAG, { "--output" } },
- { '\0', OPT_PBC_OUTPUT, (OPTION_flags)0, { "--output-pbc" } },
- { 'r', 'r', (OPTION_flags)0, { "--run-pbc" } },
- { '\0', OPT_RUNTIME_PREFIX, (OPTION_flags)0, { "--runtime-prefix" } },
- { 't', 't', OPTION_optional_FLAG, { "--trace" } },
- { 'v', 'v', (OPTION_flags)0, { "--verbose" } },
- { 'w', 'w', (OPTION_flags)0, { "--warnings" } },
- { 'y', 'y', (OPTION_flags)0, { "--yydebug" } },
- { 0, 0, (OPTION_flags)0, { NULL } }
-};
-
/*
=item C<static int is_all_hex_digits(const char *s)>
@@ -423,8 +391,9 @@
/*
-=item C<static const char * parseflags(PARROT_INTERP, int *argc, const char
-**argv[], Parrot_Run_core_t *core, Parrot_trace_flags *trace)>
+=item C<static const char * parseflags(PARROT_INTERP, int argc, const char
+*argv[], int *pgm_argc, const char ***pgm_argv, Parrot_Run_core_t *core,
+Parrot_trace_flags *trace)>
Parse Parrot's command line for options and set appropriate flags.
@@ -435,26 +404,20 @@
PARROT_CAN_RETURN_NULL
static const char *
parseflags(PARROT_INTERP,
- ARGMOD(int *argc), ARGMOD(const char **argv[]),
+ int argc, ARGIN(const char *argv[]),
+ ARGOUT(int *pgm_argc), ARGOUT(const char ***pgm_argv),
ARGMOD(Parrot_Run_core_t *core), ARGMOD(Parrot_trace_flags *trace))
{
ASSERT_ARGS(parseflags)
struct longopt_opt_info opt = LONGOPT_OPT_INFO_INIT;
int status;
- /* g++ complains if we cast char** to const char** directly. However, nobody
- ever complains if you const to void* first. Sure we lose a certain
- amount of compiler-enforced type safety, but this is a rare occasion
- with a very long explanatory comment. */
- const char ** const _tempargv = (const char **)((void *)*argv);
- if (*argc == 1) {
+ if (argc == 1) {
usage(stderr);
exit(EXIT_SUCCESS);
}
- imcc_start_handling_flags(interp);
-
- while ((status = longopt_get(interp, *argc, _tempargv, options, &opt)) > 0) {
+ while ((status = longopt_get(interp, argc, argv, Parrot_cmd_options(), &opt)) > 0) {
switch (opt.opt_id) {
case 'R':
if (STREQ(opt.opt_arg, "slow") || STREQ(opt.opt_arg, "bounds"))
@@ -544,16 +507,19 @@
Parrot_lib_add_path_from_cstring(interp, opt.opt_arg,
PARROT_LIB_PATH_DYNEXT);
break;
+ case 'w':
+ /* FIXME It's not best way to set warnings... */
+ Parrot_setwarnings(interp, PARROT_WARNINGS_ALL_FLAG);
+ break;
+ case 'o':
+ interp->output_file = opt.opt_arg;
+ break;
+ case OPT_PBC_OUTPUT:
+ if (!interp->output_file)
+ interp->output_file = "-";
default:
- /* Delegate handling of IMCC flags to IMCC */
- if (imcc_handle_flag(interp, &opt, core))
- break;
-
- /* PIRC flags handling goes here */
- fprintf(stderr,
- "main: Invalid flag '%s' used.\n\nhelp: parrot -h\n",
- (*argv)[0]);
- exit(EXIT_FAILURE);
+ /* languages handle their arguments later (after being initialized) */
+ break;
}
}
@@ -564,7 +530,7 @@
}
/* reached the end of the option list and consumed all of argv */
- if (*argc == opt.opt_index) {
+ if (argc == opt.opt_index) {
if (interp->output_file) {
fprintf(stderr, "Missing program name or argument for -o\n");
}
@@ -576,10 +542,10 @@
exit(EXIT_FAILURE);
}
- *argc -= opt.opt_index;
- *argv += opt.opt_index;
+ *pgm_argc = argc - opt.opt_index;
+ *pgm_argv = argv + opt.opt_index;
- return (*argv)[0];
+ return (*pgm_argv)[0];
}
/*
Modified: branches/ops_massacre/src/ops/var.ops
==============================================================================
--- branches/ops_massacre/src/ops/var.ops Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/ops/var.ops Mon May 24 08:26:56 2010 (r46947)
@@ -496,7 +496,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/ops_massacre/src/packfile/pf_items.c
==============================================================================
--- branches/ops_massacre/src/packfile/pf_items.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/packfile/pf_items.c Mon May 24 08:26:56 2010 (r46947)
@@ -1216,7 +1216,10 @@
ASSERT_ARGS(PF_fetch_string)
STRING *s;
UINTVAL flags;
+ UINTVAL encoding_nr;
UINTVAL charset_nr;
+ const ENCODING *encoding;
+ const CHARSET *charset;
size_t size;
const int wordsize = pf ? pf->header->wordsize : sizeof (opcode_t);
opcode_t flag_charset_word = PF_fetch_opcode(pf, cursor);
@@ -1224,20 +1227,31 @@
if (flag_charset_word == -1)
return STRINGNULL;
- /* decode flags and charset */
+ /* decode flags, charset and encoding */
flags = (flag_charset_word & 0x1 ? PObj_constant_FLAG : 0) |
(flag_charset_word & 0x2 ? PObj_private7_FLAG : 0) ;
- charset_nr = flag_charset_word >> 8;
+ encoding_nr = (flag_charset_word >> 16);
+ charset_nr = (flag_charset_word >> 8) & 0xFF;
size = (size_t)PF_fetch_opcode(pf, cursor);
TRACE_PRINTF(("PF_fetch_string(): flags=0x%04x, ", flags));
+ TRACE_PRINTF(("encoding_nr=%ld, ", encoding_nr));
TRACE_PRINTF(("charset_nr=%ld, ", charset_nr));
TRACE_PRINTF(("size=%ld.\n", size));
- s = string_make_from_charset(interp, (const char *)*cursor,
- size, charset_nr, flags);
+ encoding = Parrot_get_encoding(interp, encoding_nr);
+ charset = Parrot_get_charset(interp, charset_nr);
+ if (!encoding)
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+ "Invalid encoding number '%d' specified", encoding_nr);
+ if (!charset)
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+ "Invalid charset number '%d' specified", charset_nr);
+
+ s = Parrot_str_new_init(interp, (const char *)*cursor, size,
+ encoding, charset, flags);
/* print only printable characters */
TRACE_PRINTF_VAL(("PF_fetch_string(): string is '%s' at 0x%x\n",
@@ -1298,8 +1312,9 @@
* see also PF_fetch_string
*/
- /* encode charset_nr and flags into the same word for a 33% savings on constant overhead */
- *cursor++ = (Parrot_charset_number_of_str(NULL, s) << 8) |
+ /* encode charset_nr, encoding_nr and flags into the same word */
+ *cursor++ = (Parrot_encoding_number_of_str(NULL, s) << 16) |
+ (Parrot_charset_number_of_str(NULL, s) << 8) |
(PObj_get_FLAGS(s) & PObj_constant_FLAG ? 0x1 : 0x0) |
(PObj_get_FLAGS(s) & PObj_private7_FLAG ? 0x2 : 0x0) ;
*cursor++ = s->bufused;
@@ -1355,7 +1370,8 @@
*/
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
+PARROT_WARN_UNUSED_RESULT
size_t
PF_size_strlen(const UINTVAL len)
{
Modified: branches/ops_massacre/src/parrot_debugger.c
==============================================================================
--- branches/ops_massacre/src/parrot_debugger.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/parrot_debugger.c Mon May 24 08:26:56 2010 (r46947)
@@ -140,8 +140,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
-#include "../compilers/imcc/imc.h"
-#include "../compilers/imcc/parser.h"
+#include "parrot/parrot.h"
#include "parrot/embed.h"
#include "parrot/debugger.h"
#include "parrot/runcore_api.h"
@@ -206,34 +205,13 @@
PackFile_fixup_subs(interp, PBC_MAIN, NULL);
}
else {
- void *yyscanner;
- Parrot_PackFile pf = PackFile_new(interp, 0);
- int pasm_file = 0;
-
- do_yylex_init(interp, &yyscanner);
+ STRING *errmsg = NULL;
+ Parrot_PackFile pf = PackFile_new(interp, 0);
Parrot_pbc_load(interp, pf);
-
- IMCC_push_parser_state(interp);
- IMCC_INFO(interp)->state->file = mem_sys_strdup(filename);
-
- if (!(imc_yyin_set(fopen(filename, "r"), yyscanner))) {
- IMCC_fatal_standalone(interp, EXCEPTION_PIO_ERROR,
- "Error reading source file %s.\n",
- filename);
- }
-
- if (ext && STREQ(ext, ".pasm"))
- pasm_file = 1;
-
- emit_open(interp, 1, NULL);
- IMCC_INFO(interp)->state->pasm_file = pasm_file;
- yyparse(yyscanner, interp);
- imc_compile_all_units(interp);
-
- imc_cleanup(interp, yyscanner);
-
- fclose(imc_yyin_get(yyscanner));
+ Parrot_compile_file(interp, filename, &errmsg);
+ if (errmsg)
+ Parrot_ex_throw_from_c_args(interp, NULL, 1, "%S", errmsg);
PackFile_fixup_subs(interp, PBC_POSTCOMP, NULL);
/* load the source for debugger list */
Modified: branches/ops_massacre/src/pmc.c
==============================================================================
--- branches/ops_massacre/src/pmc.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/pmc.c Mon May 24 08:26:56 2010 (r46947)
@@ -80,6 +80,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_HOT
INTVAL
@@ -187,8 +188,7 @@
PARROT_CANNOT_RETURN_NULL
PARROT_IGNORABLE_RESULT
PMC *
-Parrot_pmc_reuse(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type,
- SHIM(UINTVAL flags))
+Parrot_pmc_reuse(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type, SHIM(UINTVAL flags))
{
ASSERT_ARGS(Parrot_pmc_reuse)
pmc = Parrot_pmc_reuse_noinit(interp, pmc, new_type);
@@ -292,8 +292,7 @@
PARROT_CANNOT_RETURN_NULL
PARROT_IGNORABLE_RESULT
PMC *
-Parrot_pmc_reuse_by_class(PARROT_INTERP, ARGMOD(PMC *pmc), ARGIN(PMC *class_),
- UINTVAL flags)
+Parrot_pmc_reuse_by_class(PARROT_INTERP, ARGMOD(PMC *pmc), ARGIN(PMC *class_), UINTVAL flags)
{
ASSERT_ARGS(Parrot_pmc_reuse_by_class)
const INTVAL new_type = PARROT_CLASS(class_)->id;
@@ -495,6 +494,7 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
PMC *
Parrot_pmc_new_constant_noinit(PARROT_INTERP, INTVAL base_type)
{
Modified: branches/ops_massacre/src/pmc/nci.pmc
==============================================================================
--- branches/ops_massacre/src/pmc/nci.pmc Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/pmc/nci.pmc Mon May 24 08:26:56 2010 (r46947)
@@ -169,6 +169,7 @@
pmclass NCI auto_attrs provides invokable {
/* NCI thunk handling attributes */
+ /* NCI thunk handling attributes */
ATTR STRING *signature; /* The signature. */
ATTR void *func; /* Function pointer to call. */
ATTR PMC *fb_info; /* Frame-builder info */
Modified: branches/ops_massacre/src/runcore/trace.c
==============================================================================
--- branches/ops_massacre/src/runcore/trace.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/runcore/trace.c Mon May 24 08:26:56 2010 (r46947)
@@ -34,12 +34,18 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+PARROT_CANNOT_RETURN_NULL
+static Interp * debugger_or_interp(PARROT_INTERP)
+ __attribute__nonnull__(1);
+
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING* trace_class_name(PARROT_INTERP, ARGIN(const PMC* pmc))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
+#define ASSERT_ARGS_debugger_or_interp __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_trace_class_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
@@ -48,15 +54,17 @@
/*
-=item C<Interp * debugger_or_interp(PARROT_INTERP)>
+=item C<static Interp * debugger_or_interp(PARROT_INTERP)>
Get debugger if available
=cut
*/
+
PARROT_CANNOT_RETURN_NULL
-Interp *
-debugger_or_interp(PARROT_INTERP) {
+static Interp *
+debugger_or_interp(PARROT_INTERP)
+{
ASSERT_ARGS(debugger_or_interp)
return interp->pdb && interp->pdb->debugger
@@ -231,15 +239,18 @@
break;
case KEY_string_FLAG|KEY_register_FLAG:
{
- const STRING * const s = REG_STR(interp,
- VTABLE_get_integer(interp, key));
- STRING * const escaped = Parrot_str_escape_truncate(interp, s, 20);
- if (escaped)
- len += Parrot_io_eprintf(debugger, "S%vd=\"%Ss\"",
- VTABLE_get_integer(interp, key), escaped);
+ const INTVAL keynum = VTABLE_get_integer(interp, key);
+ if (keynum < Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_STR)) {
+ const STRING * const s = REG_STR(interp, keynum);
+ STRING * const escaped = Parrot_str_escape_truncate(interp, s, 20);
+ if (escaped)
+ len += Parrot_io_eprintf(debugger, "S%vd=\"%Ss\"",
+ keynum, escaped);
+ else
+ len += Parrot_io_eprintf(debugger, "S%vd=\"(null)\"", keynum);
+ }
else
- len += Parrot_io_eprintf(debugger, "S%vd=\"(null)\"",
- VTABLE_get_integer(interp, key));
+ len += Parrot_io_eprintf(debugger, "**WRONG KEY STRING REG %d**", keynum);
}
break;
case KEY_pmc_FLAG|KEY_register_FLAG:
Modified: branches/ops_massacre/src/string/api.c
==============================================================================
--- branches/ops_massacre/src/string/api.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/string/api.c Mon May 24 08:26:56 2010 (r46947)
@@ -977,6 +977,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_str_length(SHIM_INTERP, ARGIN_NULLOK(const STRING *s))
Modified: branches/ops_massacre/src/string/charset.c
==============================================================================
--- branches/ops_massacre/src/string/charset.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/string/charset.c Mon May 24 08:26:56 2010 (r46947)
@@ -149,6 +149,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
const CHARSET *
@@ -227,6 +228,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_charset_number_of_str(SHIM_INTERP, ARGIN(const STRING *src))
@@ -254,6 +256,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING *
@@ -277,6 +280,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
const CHARSET *
@@ -301,6 +305,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
const char *
@@ -539,6 +544,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const CHARSET *
@@ -560,6 +566,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
charset_converter_t
@@ -572,7 +579,7 @@
for (i = 0; i < n; ++i) {
if (lhs == all_charsets->set[i].charset) {
- One_charset * const left = all_charsets->set + i;
+ const One_charset * const left = all_charsets->set + i;
const int nc = left->n_converters;
int j;
Modified: branches/ops_massacre/src/utils.c
==============================================================================
--- branches/ops_massacre/src/utils.c Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/src/utils.c Mon May 24 08:26:56 2010 (r46947)
@@ -62,12 +62,12 @@
static void next_rand(_rand_buf X);
static void process_cycle_without_exit(
int node_index,
- ARGIN(parrot_prm_context* c))
+ ARGIN(const parrot_prm_context *c))
__attribute__nonnull__(2);
static void rec_climb_back_and_mark(
int node_index,
- ARGIN(parrot_prm_context* c))
+ ARGIN(const parrot_prm_context *c))
__attribute__nonnull__(2);
#define ASSERT_ARGS__drand48 __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
@@ -664,8 +664,8 @@
/*
-=item C<static void rec_climb_back_and_mark(int node_index, parrot_prm_context*
-c)>
+=item C<static void rec_climb_back_and_mark(int node_index, const
+parrot_prm_context *c)>
Recursive function, used by Parrot_register_move to
climb back the graph of register moves operations.
@@ -689,7 +689,7 @@
*/
static void
-rec_climb_back_and_mark(int node_index, ARGIN(parrot_prm_context* c))
+rec_climb_back_and_mark(int node_index, ARGIN(const parrot_prm_context *c))
{
ASSERT_ARGS(rec_climb_back_and_mark)
const int node = c->dest_regs[node_index];
@@ -715,8 +715,8 @@
/*
-=item C<static void process_cycle_without_exit(int node_index,
-parrot_prm_context* c)>
+=item C<static void process_cycle_without_exit(int node_index, const
+parrot_prm_context *c)>
Recursive function, used by Parrot_register_move to handle the case
of cycles without exits, that are cycles of move ops between registers
@@ -732,7 +732,7 @@
*/
static void
-process_cycle_without_exit(int node_index, ARGIN(parrot_prm_context* c))
+process_cycle_without_exit(int node_index, ARGIN(const parrot_prm_context *c))
{
ASSERT_ARGS(process_cycle_without_exit)
const int pred = c->src_regs[node_index];
@@ -915,6 +915,7 @@
/* TODO: Macroize COMPARE */
/* This is an awfully expensive function to call, what with all the */
/* comparisons that never change. We ought to precompute everything. */
+/* XXX We should be able to guarantee that *a and *b never change via const parameters. */
static INTVAL
COMPARE(PARROT_INTERP, ARGIN(void *a), ARGIN(void *b), ARGIN(PMC *cmp))
{
Modified: branches/ops_massacre/t/codingstd/linelength.t
==============================================================================
--- branches/ops_massacre/t/codingstd/linelength.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/codingstd/linelength.t Mon May 24 08:26:56 2010 (r46947)
@@ -125,6 +125,8 @@
compilers/pirc/macro/macroparser.h
compilers/pirc/src/hdocprep.l
compilers/pirc/src/hdocprep.c
+# generated files
+src/ops/core_ops.c
# generated by tools/dev/nci_thunk_gen.pir
src/nci/core_thunks.c
src/nci/extra_thunks.c
Modified: branches/ops_massacre/t/codingstd/perlcritic.t
==============================================================================
--- branches/ops_massacre/t/codingstd/perlcritic.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/codingstd/perlcritic.t Mon May 24 08:26:56 2010 (r46947)
@@ -1,5 +1,5 @@
#! perl
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -85,6 +85,7 @@
@files = grep {! m/$filter_languages/}
map { $_->path }
grep { $_->read !~ m/use v6;/ }
+ grep { $_->read !~ m/#! nqp/ }
$dist->get_perl_language_files();
}
else {
Modified: branches/ops_massacre/t/compilers/imcc/syn/regressions.t
==============================================================================
--- branches/ops_massacre/t/compilers/imcc/syn/regressions.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/compilers/imcc/syn/regressions.t Mon May 24 08:26:56 2010 (r46947)
@@ -6,7 +6,7 @@
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
-use Parrot::Test tests => 21;
+use Parrot::Test tests => 22;
pir_error_output_like( <<'CODE', <<'OUT', 'invalid get_results syntax');
.sub main :main
@@ -37,6 +37,33 @@
ok 2 - caught div_n_nc_nc exception
OUT
+pir_output_is( <<'CODE', <<'OUT', 'fold symbolic constants (TT #1652)');
+.sub main :main
+ .const int SECONDS_PER_MINUTE = 60
+ $I0 = 30 * SECONDS_PER_MINUTE
+ say $I0
+
+ .const num DAYS_PER_YEAR = 365.24e0
+ $N0 = DAYS_PER_YEAR * 2.96460137564761618e-03
+ 'printf'("%f\n", $N0)
+
+ .const string HI = "Hello "
+ $S0 = concat HI, "World!"
+ say $S0
+.end
+
+.sub 'printf'
+ .param string fmt
+ .param pmc data :slurpy
+ $S0 = sprintf fmt, data
+ print $S0
+.end
+CODE
+1800
+1.082791
+Hello World!
+OUT
+
pir_output_is( <<'CODE', <<'OUT', 'comments before .param(TT #1035)');
.sub main :main
comments(1,2)
Copied: branches/ops_massacre/t/compilers/opsc/01-parse.t (from r46944, trunk/t/compilers/opsc/01-parse.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/01-parse.t Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/01-parse.t)
@@ -0,0 +1,205 @@
+#! parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+.include 't/compilers/opsc/common.pir'
+
+.sub 'main' :main
+
+ .include 'test_more.pir'
+ load_bytecode 'opsc.pbc'
+
+ plan(12)
+
+ test_parse_basic_op()
+ test_parse_many_ops()
+ test_parse_header()
+ test_parse_params()
+ test_parse_flags()
+.end
+
+.sub "test_parse_basic_op"
+ .local string buf
+ .local pmc res
+
+ buf = <<"END"
+inline op noop() {
+}
+END
+
+ "_parse_buffer"(buf)
+ is(1, 1, "Simple noop parsed")
+
+ buf = <<"END"
+inline op noop() {
+ foo
+}
+END
+
+ "_parse_buffer"(buf)
+ is(1, 1, "noop body parsed")
+
+ buf = <<"END"
+inline op noop() {
+ foo {
+ bar{};
+ }
+}
+END
+
+ "_parse_buffer"(buf)
+ is(1, 1, "noop nested body parsed")
+
+
+.end
+
+.sub "test_parse_many_ops"
+ .local string buf
+ .local pmc res
+
+ buf = <<"END"
+
+
+=item noop
+
+asdfs
+
+=cut
+
+inline op noop() {
+}
+
+=item halt
+
+asdsad
+
+=cut
+
+inline op halt() {
+}
+
+=head2
+
+ads
+
+=cut
+
+inline op rule_the_world() {
+}
+
+
+END
+
+ res = "_parse_buffer"(buf)
+ is(1, 1, "Multiple ops parsed")
+
+ $I0 = res['body';'op']
+ is($I0, 3, "...and we have 3 ops")
+
+.end
+
+# test parsing ops file header.
+.sub "test_parse_header"
+ .local string buf
+ .local pmc res
+
+ buf = <<"END"
+/*
+ * $Id$
+** core.ops
+*/
+
+BEGIN_OPS_PREAMBLE
+
+#include "parrot/dynext.h"
+#include "parrot/embed.h"
+#include "parrot/runcore_api.h"
+#include "../pmc/pmc_continuation.h"
+#include "../pmc/pmc_parrotlibrary.h"
+
+END_OPS_PREAMBLE
+
+=head1 NAME
+
+core.ops - Core Opcodes
+
+=cut
+
+=head1 DESCRIPTION
+
+Parrot's core library of ops.
+
+Core operations are primarily flow control and interpreter
+introspection.
+
+=cut
+
+inline op noop() {
+}
+
+END
+
+ res = "_parse_buffer"(buf)
+ is(1, 1, "Header parsed")
+
+ $I0 = res['body';'op']
+ is($I0, 1, "...and we have our op")
+
+.end
+
+.sub "test_parse_params"
+ .local string buf
+ .local pmc res
+
+ buf = <<"END"
+
+inline op reserved(inconst INT) {
+ /* reserve 1 entries */
+}
+
+END
+
+ "_parse_buffer"(buf)
+ is(1, 1, "Op with single param parsed")
+
+ buf = <<"END"
+
+inline op add(out INT, inconst INT, inconst INT) {
+}
+
+END
+
+ "_parse_buffer"(buf)
+ is(1, 1, "Op with multiple param parsed")
+
+.end
+
+.sub "test_parse_flags"
+ .local string buf
+ .local pmc res
+
+ buf = <<"END"
+
+inline op hcf() :flow :deprecated {
+}
+
+END
+
+ res = "_parse_buffer"(buf)
+ is(1, 1, "Op with flags parsed")
+
+ .local pmc op
+ op = res['body';'op';0;'op_flag']
+ $S0 = op[0]
+ is($S0, ":flow ", "First flag parsed")
+ $S0 = op[1]
+ is($S0, ":deprecated ", "Second flag parsed")
+.end
+
+# Don't forget to update plan!
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_massacre/t/compilers/opsc/02-parse-all-ops.t (from r46944, trunk/t/compilers/opsc/02-parse-all-ops.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/02-parse-all-ops.t Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/02-parse-all-ops.t)
@@ -0,0 +1,90 @@
+#! parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+.include 't/compilers/opsc/common.pir'
+
+.sub 'main' :main
+ .include 'test_more.pir'
+ load_bytecode 'opsc.pbc'
+
+ .local int total
+ .local pmc os, all_files, ops_files, dynops_files
+
+ all_files = new ['ResizablePMCArray']
+ ops_files = get_ops_from_dir('./src/ops/')
+ dynops_files = get_ops_from_dir('./src/dynoplibs/')
+
+ #prepend the arrays to all_files
+ splice all_files, ops_files, 0, 0
+ splice all_files, dynops_files, 0, 0
+
+ total = elements all_files
+ all_files.'sort'()
+
+ plan(total)
+ test_parse(all_files)
+.end
+
+.sub get_ops_from_dir
+ .param string dir
+ .local pmc files, filtered_files, os, it
+
+ $P0 = loadlib 'os'
+ os = new ['OS']
+ files = os.'readdir'(dir)
+ filtered_files = new ['ResizablePMCArray']
+
+ .local int len, is_pmc, total
+ .local string filename, filename_end
+
+ #filter out anything that doesn't end in .ops
+ it = iter files
+ iter_start:
+ unless it goto iter_done
+ filename = shift it
+
+ len = length filename
+ unless len > 4 goto iter_start
+
+ filename_end = substr filename, -4
+ is_pmc = iseq filename_end, ".ops"
+ unless is_pmc goto iter_start
+
+ filename = dir . filename
+ push filtered_files, filename
+ goto iter_start
+
+ iter_done:
+ .return (filtered_files)
+.end
+
+.sub 'test_parse'
+ .param pmc list
+ .local int i
+ .local pmc it
+
+ it = iter list
+ iter_start:
+ unless it goto iter_done
+ $S0 = shift it
+ push_eh fail
+ _parse_one_file($S0)
+ pop_eh
+ ok(1, $S0)
+ goto iter_start
+ fail:
+ ok(0, $S0)
+ goto iter_start
+
+ iter_done:
+
+.end
+
+# Don't forget to update plan!
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_massacre/t/compilers/opsc/03-past.t (from r46944, trunk/t/compilers/opsc/03-past.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/03-past.t Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/03-past.t)
@@ -0,0 +1,110 @@
+#! ./parrot-nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+
+# "Comprehensive" test for creating PAST for op.
+# Parse single op and check various aspects of created PAST.
+
+pir::load_bytecode('opsc.pbc');
+pir::load_bytecode('dumper.pbc');
+
+plan(26);
+
+my $buf := q|
+BEGIN_OPS_PREAMBLE
+/*
+THE HEADER
+*/
+END_OPS_PREAMBLE
+
+op bar() {
+ # Nothing here
+}
+
+inline op foo(out INT, in PMC, inconst NUM) :flow :deprecated {
+ foo # We don't handle anything in C<body> during parse/past.
+}
+
+|;
+my $compiler := pir::compreg__Ps('Ops');
+
+my $past := $compiler.compile($buf, target => 'past');
+
+ok(1, "PAST::Node created");
+
+my $preambles := $past<preamble>;
+
+ok(~$preambles[0] ~~ /HEADER/, 'Header parsed');
+
+my @ops := @($past<ops>);
+# One "bar" and two "foo"
+ok(+ at ops == 3, 'We have 3 ops');
+
+my $op := @ops[1];
+ok($op.name == 'foo', "Name parsed");
+
+my %flags := $op<flags>;
+ok(%flags<flow>, ':flow flag parsed');
+ok(%flags<deprecated>, ':deprecated flag parsed');
+ok(%flags == 2, "And there are only 2 flags");
+
+# Check op params
+my @args := $op<args>;
+ok(+ at args == 3, "Got 3 parameters");
+
+my $arg;
+
+$arg := @args[0];
+ok($arg<direction> eq 'out', 'First direction is correct');
+ok($arg<type> eq 'INT', 'First type is correct');
+
+$arg := @args[1];
+ok($arg<direction> eq 'in', 'Second direction is correct');
+ok($arg<type> eq 'PMC', 'Second type is correct');
+
+$arg := @args[2];
+ok($arg<direction> eq 'inconst', 'Third direction is correct');
+ok($arg<type> eq 'NUM', 'Third type is correct');
+
+# Check normalization
+ at args := $op<normalized_args>;
+$arg := @args[0];
+ok($arg<direction> eq 'o', 'First direction is correct');
+ok($arg<type> eq 'i', 'First type is correct');
+ok(!($arg<variant>), 'First arg without variant');
+
+$arg := @args[1];
+ok($arg<direction> eq 'i', 'Second direction is correct');
+ok($arg<type> eq 'p', 'Second type is correct');
+ok($arg<variant> eq 'pc', 'Second variant is correct');
+
+$arg := @args[2];
+ok($arg<direction> eq 'i', 'Third direction is correct');
+ok($arg<type> eq 'nc', 'Third type is correct');
+ok(!($arg<variant>), 'Third arg without variant');
+
+ok( ($op.arg_types).join('_') eq 'i_p_nc', "First variant correct");
+
+
+# Second created op should have _pc_
+$op := @ops[2];
+ok( $op.arg_types.join('_') eq 'i_pc_nc', "Second variant correct");
+
+# Check body munching.
+$op := @ops[0];
+my $goto_offset := 0;
+for @($op) {
+ $goto_offset := $goto_offset || $_<name> eq 'goto_offset';
+}
+ok( $goto_offset, "goto NEXT appended for non :flow ops");
+
+
+# Don't forget to update plan!
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/t/compilers/opsc/04-op.t (from r46944, trunk/t/compilers/opsc/04-op.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/04-op.t Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/04-op.t)
@@ -0,0 +1,36 @@
+#!./parrot-nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+# Checking Ops::Op
+
+pir::load_bytecode("opsc.pbc");
+
+plan(7);
+
+my $op := Ops::Op.new(
+ code => 42,
+ name => 'set',
+ type => 'inline',
+ args => <foo bar baz>,
+ flags => hash(),
+ arg_types => <i i ic>,
+);
+
+ok( 1, "Op created");
+
+ok( $op.code == 42, "... with proper code");
+ok( $op.name eq 'set', "... with proper name");
+ok( $op.type eq 'inline', "... with proper type");
+ok( +$op.arg_types == 3, "... with proper arg_types");
+say('# ' ~ $op.arg_types);
+
+ok( $op.full_name eq 'set_i_i_ic', "full_name is correct");
+
+$op := Ops::Op.new(
+ name => 'set',
+ type => 'inline',
+);
+ok( $op.full_name eq 'set', "Argless op's full_name is correct");
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/t/compilers/opsc/05-oplib.t (from r46944, trunk/t/compilers/opsc/05-oplib.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/05-oplib.t Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/05-oplib.t)
@@ -0,0 +1,28 @@
+#!./parrot-nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+# Checking for OpLib num and skip files parsing.
+
+pir::load_bytecode("opsc.pbc");
+
+plan(5);
+
+my $lib := Ops::OpLib.new(
+ :num_file('src/ops/ops.num'),
+ :skip_file('src/ops/ops.skip'),
+);
+
+# It's 1200 currently. But testing for exact match isn't nessary.
+ok( $lib.max_op_num > 1000, "ops.num file parsed");
+say('# ' ~ $lib.max_op_num);
+
+# Check couple random ops.
+ok( $lib.op_num_table<end> == 0, "'end' has code 0");
+ok( $lib.op_num_table<set_addr_p_i> != 42, "'set_addr_p_i' have non 0 code");
+
+ok( $lib.op_skip_table<abs_i_ic>, "'abs_i_ic' in skiptable");
+ok( $lib.op_skip_table<ne_nc_nc_ic>, "'ne_nc_nc_ic' in skiptable");
+#_dumper($lib.skiptable);
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/t/compilers/opsc/06-opsfile.t (from r46944, trunk/t/compilers/opsc/06-opsfile.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/06-opsfile.t Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/06-opsfile.t)
@@ -0,0 +1,45 @@
+#!./parrot-nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+pir::load_bytecode("opsc.pbc");
+pir::load_bytecode("nqp-setting.pbc");
+
+plan(7);
+
+my $oplib := Ops::OpLib.new;
+my @files := <
+ src/ops/core.ops
+ src/ops/math.ops
+>;
+
+my $f := Ops::File.new(:oplib($oplib), |@files, :core(1));
+
+my @ops := $f.ops;
+# 84 core
+# 116 math
+# We can generate more than 1 Ops::Op per op due args expansion.
+say( "# Parsed " ~ + at ops);
+# There is more than 300 ops in this 2 files.
+# Feel free to update number if you change them.
+ok(+ at ops == 306, "Ops parsed correctly");
+say('# ' ~ + at ops);
+
+my $op := @ops[0];
+#_dumper($op);
+# First op should be C<end> and has code 0.
+ok($op.name eq 'end', "First op is end");
+ok($op<code> == 0, "... with code 0");
+
+$op := @ops[(+ at ops)-1];
+ok($op.name eq 'tanh', "Last op is tanh");
+say('# ' ~ $op.name);
+ok($op<code> > 84 + 116, "... with non zero code");
+
+my $version := join(' ', |$f.version);
+ok( $version ~~ /^\d+ \s \d+ \s \d+$/, "Version parsed");
+say("# $version");
+
+ok( $f.preamble ~~ /pmc_parrotlibrary.h/, "Preamble preserved");
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/t/compilers/opsc/07-emitter.t (from r46944, trunk/t/compilers/opsc/07-emitter.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/07-emitter.t Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/07-emitter.t)
@@ -0,0 +1,129 @@
+#! ./parrot-nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+pir::load_bytecode("opsc.pbc");
+
+plan(22);
+
+my $trans := Ops::Trans::C.new();
+
+my @files := <
+ src/ops/io.ops
+ src/ops/sys.ops
+ src/ops/cmp.ops
+>;
+
+my $lib := Ops::OpLib.new();
+my $emitter := Ops::Emitter.new(
+ :ops_file(Ops::File.new(
+ :oplib($lib),
+ :core(1),
+ |@files)
+ ),
+ :trans($trans),
+ :script('ops2c'),
+ :flags(
+ hash( dir => 'tmp/', core => 1 )
+ ),
+);
+
+ok( $emitter, "Emitter created");
+ok( $emitter<include> eq 'parrot/oplib/core_ops.h', 'Include is correct');
+say('# ' ~ $emitter<include>);
+ok( $emitter<func_header> ~~ /^tmp/, 'header file in tmp');
+say('# ' ~ $emitter<func_header>);
+
+#$emitter.print_c_header_file();
+
+my $fh := pir::new__Ps('StringHandle');
+$fh.open('header.h', 'w');
+$emitter.emit_c_op_func_header($fh);
+
+$fh.close();
+my $header := $fh.readall();
+
+ok($header ~~ /define \s PARROT_OPLIB_CORE_OPS_H_GUARD/, 'Guard generated');
+ok($header ~~ /endif/, 'Close guard generated');
+ok($header ~~ /DO \s NOT \s EDIT \s THIS \s FILE/, 'Preamble generated');
+ok($header ~~ /Parrot_DynOp_core_ \d+ _ \d+ _ \d+/, '... and contains init_func');
+ok($header ~~ /Parrot_sysinfo_s_i/, 'We have proper names of ops functions');
+
+# Testing C emitting.
+#$emitter.print_c_source_file();
+
+$fh := pir::new__Ps('StringHandle');
+$fh.open('core.c', 'w');
+$emitter.emit_c_source_file($fh);
+
+$fh.close();
+my $source := $fh.readall();
+
+ok($source ~~ /DO \s NOT \s EDIT \s THIS \s FILE/, 'Preamble generated');
+ok($source ~~ /Parrot_pcc_get_constants/, 'defines from Trans::C generated');
+ok($source ~~ /io_private.h/, 'Preamble from io.ops preserved');
+
+ok($source ~~ /static \s int \s get_op/, 'Trans::C preamble generated');
+
+ok($source ~~ /PARROT_FUNCTION_CORE/, 'Trans::C core_type preserved');
+ok($source ~~ /static \s size_t \s hash_str/, 'Trans::C op_lookup preserved');
+
+ok($source ~~ /'PREG(1)'/, 'Trans::C arg translation works');
+ok($source ~! /'OP_SIZE'/, 'Trans::C translates OP_SIZE');
+
+# "eq"
+ok($source ~~ /'0,' \s '0,' \s '1'/, "Labels handled correctly");
+
+my $op_body := '
+inline op do_stuff(invar PMC)
+{
+ restart ADDRESS(234);
+}';
+my $new_body := translate_op_body($trans, $op_body);
+my $restart_addr_ok := $new_body ~~ /'return' \s '(' 'opcode_t' \s '*' ')' \s? '234'/;
+ok($restart_addr_ok, "restart ADDRESS() translated ok");
+
+$op_body := '
+inline op branch(in LABEL) :base_loop :flow {
+ goto OFFSET($1);
+}';
+$new_body := translate_op_body($trans, $op_body);
+$restart_addr_ok := $new_body ~~ /'return (opcode_t *)cur_opcode + IREG(1);'/;
+ok($restart_addr_ok, "goto OFFSET() and \$1 translated ok");
+ok($new_body ~~ /'PARROT_JUMP_RELATIVE'/, "jump flags generated");
+
+$op_body := '
+inline op thingy(in PMC) {
+ opcode * next = expr NEXT();
+}';
+$new_body := translate_op_body($trans, $op_body);
+$restart_addr_ok := $new_body ~~ /'cur_opcode + 2;'/;
+ok($restart_addr_ok, "expr NEXT() translated ok");
+
+$op_body := '
+inline op runinterp(in PMC) {
+}';
+$new_body := translate_op_body($trans, $op_body);
+$restart_addr_ok := $new_body ~~ /'PARROT_JUMP_RELATIVE'/;
+ok($restart_addr_ok, "runinterp has PARROT_JUMP_RELATIVE");
+
+#say($source);
+
+sub translate_op_body($trans, $body) {
+ my $file := Ops::File.new_str(
+ :oplib($lib), $body);
+ my $emitter := Ops::Emitter.new(
+ :ops_file($file),
+ :trans($trans),
+ :script("opsc"),
+ :flags( hash(core => '1') )
+ );
+
+ my $sh := pir::new__Ps('StringHandle');
+ $sh.open('your_bank_account_information.txt', 'w');
+ $emitter.emit_c_source_file($sh);
+ $sh.close();
+ $sh.readall();
+}
+
+# vim: expandtab shiftwidth=4 ft=perl6:
Copied: branches/ops_massacre/t/compilers/opsc/common.pir (from r46944, trunk/t/compilers/opsc/common.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_massacre/t/compilers/opsc/common.pir Mon May 24 08:26:56 2010 (r46947, copy of r46944, trunk/t/compilers/opsc/common.pir)
@@ -0,0 +1,39 @@
+#! parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 COMMON FUNCTIONS FOR TESTING
+
+=cut
+
+.sub '_parse_buffer'
+ .param string buffer
+
+ .local pmc compiler
+ compiler = compreg 'Ops'
+ .tailcall compiler.'parse'(buffer, 'target'=>'parse')
+.end
+
+.sub '_parse_one_file'
+ .param string filename
+ .local string buf
+
+ buf = '_slurp'(filename)
+ .tailcall '_parse_buffer'(buf)
+.end
+
+
+.sub '_slurp'
+ .param string file
+ .local pmc pio
+ pio = open file
+ $S0 = pio.'readall'()
+ close pio
+ .return ($S0)
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_massacre/t/harness.pir
==============================================================================
--- branches/ops_massacre/t/harness.pir Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/harness.pir Mon May 24 08:26:56 2010 (r46947)
@@ -297,7 +297,7 @@
$I1 = index $S0, '/branches/'
unless $I1 >= 0 goto L2
$I1 += 10
- $I2 = find_not_cclass .CCLASS_WHITESPACE, $S0, $I1, $I0
+ $I2 = find_cclass .CCLASS_WHITESPACE, $S0, $I1, $I0
$I3 = $I2 - $I1
$S1 = substr $S0, $I1, $I3
L2:
@@ -361,10 +361,11 @@
set $P0, 1
$P0[0] = 'parrot_test_run.tar.gz'
push contents, $P0
- load_bytecode 'LWP.pir'
+ load_bytecode 'LWP/UserAgent.pir'
.const string url = 'http://smolder.plusthree.com/app/projects/process_add_report/8'
.local pmc ua, response
ua = new ['LWP';'UserAgent']
+ ua.'env_proxy'()
ua.'show_progress'(1)
response = ua.'post'(url, contents :flat, 'form-data' :named('Content-Type'), 'close' :named('Connection'))
$I0 = response.'code'()
Modified: branches/ops_massacre/t/library/lwp.t
==============================================================================
--- branches/ops_massacre/t/library/lwp.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/library/lwp.t Mon May 24 08:26:56 2010 (r46947)
@@ -19,16 +19,18 @@
.sub 'main' :main
.include 'test_more.pir'
- load_bytecode 'LWP.pir'
+ load_bytecode 'LWP/UserAgent.pir'
load_bytecode 'osutils.pbc'
- plan(38)
+ plan(48)
test_new()
test_unknown_protocol()
test_bad_request()
test_file_not_found()
test_file()
+ test_file_head()
test_file_post_delete()
+ test_file_proxy()
.end
.sub 'test_new'
@@ -127,6 +129,28 @@
ok($I0, "Last-Modified contains GMT")
.end
+.sub 'test_file_head'
+ .local pmc ua, response
+ ua = new ['LWP';'UserAgent']
+ response = ua.'head'('file:t/library/lwp.t')
+ $I0 = isa response, ['HTTP';'Response']
+ ok($I0, "HEAD file:t/library/lwp.t")
+ $I0 = response.'code'()
+ is($I0, 200, "code")
+ $I0 = response.'is_success'()
+ ok($I0, "is success")
+ $S0 = response.'content'()
+ is($S0, '', "no content")
+ $I0 = response.'get_header'('Content-Length')
+ $I0 = $I0 > 2000
+ ok($I0, "Content-Length")
+ $S0 = response.'get_header'('Last-Modified')
+ diag($S0)
+ $I0 = index $S0, 'GMT'
+ $I0 = $I0 > 0
+ ok($I0, "Last-Modified contains GMT")
+.end
+
.sub 'test_file_post_delete'
.const string data = "the file contains some text"
.const string filename = 't/library/file.txt'
@@ -138,7 +162,7 @@
response = ua.'put'(url, data)
$I0 = isa response, ['HTTP';'Response']
- ok($I0, "POST file:t/library/file.txt")
+ ok($I0, "PUT file:t/library/file.txt")
$I0 = response.'code'()
is($I0, 200, "code")
$I0 = response.'is_success'()
@@ -165,6 +189,21 @@
ok($I0, "is error")
.end
+.sub 'test_file_proxy'
+ .local pmc ua, response
+ ua = new ['LWP';'UserAgent']
+ ua.'proxy'('file', 'file://proxy.net')
+ response = ua.'get'('file:t/library/lwp.t')
+ $I0 = isa response, ['HTTP';'Response']
+ ok($I0, "GET file:t/library/lwp.t via a proxy")
+ $I0 = response.'code'()
+ is($I0, 400, "code")
+ $S0 = response.'message'()
+ is($S0, "You can not proxy through the filesystem", "message")
+ $I0 = response.'is_error'()
+ ok($I0, "is error")
+.end
+
# Local Variables:
# mode: pir
# fill-column: 100
Modified: branches/ops_massacre/t/library/uri.t
==============================================================================
--- branches/ops_massacre/t/library/uri.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/library/uri.t Mon May 24 08:26:56 2010 (r46947)
@@ -21,7 +21,7 @@
load_bytecode 'URI.pir'
- plan(53)
+ plan(60)
test_new()
test_uri()
test_file()
@@ -158,6 +158,21 @@
is($S0, '127.0.0.1', 'host')
$S0 = $P0.'port'()
is($S0, '8080', 'port')
+
+ $P0 = factory('http://user:passwd@proxy.net:8000/path')
+ ok($P0, "http://user:passwd@proxy.net:8000/path")
+ $I0 = isa $P0, ['URI';'http']
+ ok($I0, "isa ['URI';'http']")
+ $S0 = $P0.'scheme'()
+ is($S0, 'http', "scheme")
+ $S0 = $P0.'authority'()
+ is($S0, 'user:passwd at proxy.net:8000', 'authority')
+ $S0 = $P0.'userinfo'()
+ is($S0, 'user:passwd', 'userinfo')
+ $S0 = $P0.'host'()
+ is($S0, 'proxy.net', 'host')
+ $S0 = $P0.'port'()
+ is($S0, '8000', 'port')
.end
.sub 'test_https'
Modified: branches/ops_massacre/t/native_pbc/annotations.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_massacre/t/native_pbc/integer_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_massacre/t/native_pbc/number_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_massacre/t/native_pbc/string_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Deleted: branches/ops_massacre/t/op/01-parse_ops.t
==============================================================================
--- branches/ops_massacre/t/op/01-parse_ops.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,105 +0,0 @@
-#! perl
-# Copyright (C) 2006-2008, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Parrot::Test;
-use Parrot::Op;
-use Parrot::OpLib::core;
-
-=head1 NAME
-
-t/op/01-parse_ops.t - Parse core opcodes
-
-=head1 SYNOPSIS
-
- % prove t/op/01-parse_ops.t
-
-=head1 DESCRIPTION
-
-Tests that all parrot opcodes are parsed properly.
-
-=cut
-
-my $object_map = {
- i => q<I0>,
- ic => q<42>,
- k => q<P0>,
- kc => q<[ 'foo' ; 'bar' ]>,
- kic => q<[ 1 ]>,
- ks => q<P0>,
- ksc => q<[ 'foo' ; 'bar' ]>,
- n => q<N0>,
- nc => q<13.013>,
- p => q<P0>,
- pc => undef, ## TT #1158 figure out how to test this type
- s => q<S0>,
- sc => q<'foo'>,
-};
-
-my %parse_errors = map { $_ => 1 } qw(
- defined
- delete
- eq
- exists
- le
- lt
- ne
- set
- slice
- yield
-);
-
-my %cmds;
-
-## extract the register types from each opcode
-for my $op (@$Parrot::OpLib::core::ops) {
- my @regtypes = $op->arg_types;
-
- ## for now, avoid opcodes with regtypes i do not know how to represent
- next unless @regtypes == grep { defined $$object_map{$_} } @regtypes;
-
- ## extract the basename of the opcode
- my $basename = $op->name;
-
- ## create the argument list
- my $args = join ', ' => map $$object_map{$_}, @regtypes;
-
- ## store the test commands
- $cmds{$basename}{ $basename . ' ' . $args }++;
-}
-
-$ENV{TEST_PROG_ARGS} ||= '';
-
-plan skip_all => 'IMCC cannot do parse-only with JIT enabled'
- if $ENV{TEST_PROG_ARGS} =~ /--runcore=jit/;
-
-plan skip_all => 'IMCC cannot do parse-only with switched core'
- if $ENV{TEST_PROG_ARGS} =~ /--runcore=switch/;
-
-plan tests => scalar keys %cmds;
-
-for my $cmd ( sort keys %cmds ) {
- my @args = (
- ## retrieve the test commands, and trick IMCC to parse only
- join( $/ => 'end', sort( keys %{ $cmds{$cmd} } ), '' ),
- qr/^(?!error:imcc:syntax error,)/,
- "parsing: $cmd"
- );
-
- if ( $parse_errors{$cmd} ) {
- pasm_error_output_like(@args);
- }
- else {
- pasm_output_like(@args);
- }
-}
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_massacre/t/op/stringu.t
==============================================================================
--- branches/ops_massacre/t/op/stringu.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/op/stringu.t Mon May 24 08:26:56 2010 (r46947)
@@ -6,7 +6,7 @@
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
-use Parrot::Test tests => 33;
+use Parrot::Test tests => 34;
use Parrot::Config;
=head1 NAME
@@ -574,8 +574,23 @@
equal
OUT
+pir_output_is( <<'CODE', <<'OUT', 'join mixed encodings' );
+.sub 'main'
+ new $P0, 'ResizablePMCArray'
+ push $P0, ascii:"a"
+ push $P0, unicode:"\x{e1}" # a acute
+ push $P0, iso-8859-1:"\x{e1}" # a acute
+ join $S0, "", $P0
+ $I0 = length $S0
+ say $I0
+.end
+CODE
+3
+OUT
+
SKIP: {
skip( 'no ICU lib', 1 ) unless $PConfig{has_icu};
+
pir_output_is( <<'CODE', <<'OUT', 'find_codepoint opcode (experimental)');
.sub 'main'
$I1 = find_codepoint 'THISISNOTTHENAMEOFNOTHING'
Modified: branches/ops_massacre/t/pmc/resizablestringarray.t
==============================================================================
--- branches/ops_massacre/t/pmc/resizablestringarray.t Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/t/pmc/resizablestringarray.t Mon May 24 08:26:56 2010 (r46947)
@@ -23,7 +23,7 @@
.include 'test_more.pir'
# set a test plan
- plan(261)
+ plan(263)
'size/resize'()
'clone'()
@@ -1343,6 +1343,7 @@
.SpliceMadeEasy({ splice $P1, $P2, 0, 2 }, "ABCDE345", "splice, replace at beginning")
.SpliceMadeEasy({ splice $P1, $P2, 2, 2 }, "12ABCDE5", "splice, replace in middle")
.SpliceMadeEasy({ splice $P1, $P2, 3, 2 }, "123ABCDE", "splice, replace at end")
+ .SpliceMadeEasy({ splice $P1, $P2, -3, 2 }, "12ABCDE5", "splice, replace in middle start from end")
.SpliceMadeEasy({
$P2 = new ['ResizableStringArray']
splice $P1, $P2, 2, 2
@@ -1355,6 +1356,20 @@
$P1 = new ['ResizableStringArray']
$P1[0] = "1"
+ $P2 = new ['ResizableStringArray']
+ $P2[0] = 'A'
+ $I0 = 0
+ push_eh handle_negtoobig
+ splice $P1, $P2, -10, 1
+ goto after_negtoobig
+handle_negtoobig:
+ inc $I0
+after_negtoobig:
+ pop_eh
+ is($I0, 1, 'splice, negative offset too long throws')
+
+ $P1 = new ['ResizableStringArray']
+ $P1[0] = "1"
$P1[1] = "2"
$P1[2] = "3"
$P1[3] = "4"
Deleted: branches/ops_massacre/t/tools/ops2cutils/01-new.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/01-new.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,197 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 01-new.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 15;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-use IO::CaptureOutput qw| capture |;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-my ( $msg, $tie );
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- {
- local @ARGV = qw();
- my $self;
- my ($stdout, $stderr);
- my $ret = capture(
- sub {
- $self = Parrot::Ops2c::Utils->new(
- { argv => [@ARGV], flag => {} }
- );
- },
- \$stdout,
- \$stderr
- );
- ok( !defined $self,
- "Constructor correctly returned undef due to lack of command-line arguments" );
- like(
- $stderr,
- qr/^Parrot::Ops2c::Utils::new\(\) requires 'trans' options/,
- "Error message is correct"
- );
- }
-
- {
- local @ARGV = qw( gobbledygook );
- my $self;
- my ($stdout, $stderr);
- my $ret = capture(
- sub {
- $self = Parrot::Ops2c::Utils->new(
- { argv => [@ARGV], flag => {}, }
- );
- },
- \$stdout,
- \$stderr
- );
- ok( !defined $self,
- "Constructor correctly returned undef due to bad class name command-line argument" );
- like(
- $stderr,
- qr/Parrot::Ops2c::Utils::new\(\) requires C/,
- "Got correct error message"
- );
- }
-
- test_single_trans(q{C});
-
- {
- local @ARGV = qw( C );
- my $self = Parrot::Ops2c::Utils->new(
- { argv => [@ARGV], flag => { core => 1 } }
- );
- ok( defined $self, "Constructor correctly returned when provided >= 1 arguments" );
- }
-
- {
- local @ARGV = qw( C );
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [@ARGV],
- flag => { core => 1 },
- script => "tools/build/ops2c.pl",
- }
- );
- ok( defined $self,
- "Constructor correctly returned when provided with explicit 'script' argument" );
- }
-
- {
- local @ARGV = qw( C );
- my $self;
- my ($stdout, $stderr);
- my $ret = capture(
- sub {
- $self = Parrot::Ops2c::Utils->new( { argv => [@ARGV], });
- },
- \$stdout,
- \$stderr
- );
- ok( !defined $self,
- "Constructor correctly returned undef when lacking reference to options" );
- like(
- $stderr,
- qr/^Parrot::Ops2c::Utils::new\(\) requires reference to hash of command-line options/,
- "Error message correctly returned"
- );
- }
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-pass("Completed all tests in $0");
-
-sub test_single_trans {
- my $trans = shift;
- my %available = map { $_, 1 } qw( C );
- croak "Bad argument $trans to test_single_trans()"
- unless $available{$trans};
-
- my $self = Parrot::Ops2c::Utils->new(
- { argv => [$trans], flag => { core => 1 }, }
- );
- ok( defined $self, "Constructor correct when provided with single argument $trans" );
-}
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-01-new.t - test C<Parrot::Ops2c::Utils::new()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/01-new.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<01-new.t> tests whether C<Parrot::Ops2c::Utils::new()>
-works properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/02-usage.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/02-usage.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,146 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 02-usage.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 29;
-use Carp;
-use Cwd;
-use_ok( 'Parrot::Ops2c::Auxiliary', qw| Usage getoptions | );
-use IO::CaptureOutput qw | capture |;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-my ( $msg, $tie, @lines );
-{
- my ($rv, $stdout, $stderr);
- capture( sub { $rv = Usage(); }, \$stdout, \$stderr );
- is( $rv, 1, "Usage() returned" );
- like(
- $stderr,
- qr|^
- \s*%\sperl\stools\/build\/ops2c\.pl\strans.*
- trans\s:=.*
- For\sexample.*
- core.*
- dynamic.*
- |msx,
- "Got expected usage message"
- );
-}
-
-{
- local @ARGV = qw( --no-lines );
- my $flagsref = getoptions();
- ok( $flagsref->{nolines}, "no-lines option detected" );
- ok( !defined $flagsref->{help}, "help option not defined" );
- ok( !defined $flagsref->{dynamic}, "dynamic option not defined" );
- ok( !defined $flagsref->{core}, "core option not defined" );
-}
-
-{
- local @ARGV = ();
- my $flagsref = getoptions();
- ok( !defined $flagsref->{nolines}, "no-lines option not defined" );
- ok( !defined $flagsref->{help}, "help option not defined" );
- ok( !defined $flagsref->{dynamic}, "dynamic option not defined" );
- ok( !defined $flagsref->{core}, "core option not defined" );
-}
-
-{
- local @ARGV = qw( --no-lines --help --core );
- my $flagsref = getoptions();
- ok( $flagsref->{nolines}, "no-lines option detected" );
- ok( $flagsref->{help}, "help option detected" );
- ok( !defined $flagsref->{dynamic}, "dynamic option not defined" );
- ok( $flagsref->{core}, "core option detected" );
-}
-
-{
- local @ARGV = qw( --dynamic );
- my $flagsref = getoptions();
- ok( !defined $flagsref->{nolines}, "no-lines option not defined" );
- ok( !defined $flagsref->{help}, "help option not defined" );
- ok( defined $flagsref->{dynamic}, "dynamic option defined" );
- ok( !defined $flagsref->{core}, "core option not defined" );
-}
-
-{
- local @ARGV = qw( --d );
- my $flagsref = getoptions();
- ok( !defined $flagsref->{nolines}, "no-lines option not defined" );
- ok( !defined $flagsref->{help}, "help option not defined" );
- ok( defined $flagsref->{dynamic}, "dynamic option defined" );
- ok( !defined $flagsref->{core}, "core option not defined" );
-}
-
-{
- local @ARGV = qw( --no-lines --help --core --d );
- my $flagsref = getoptions();
- ok( $flagsref->{nolines}, "no-lines option detected" );
- ok( $flagsref->{help}, "help option detected" );
- ok( defined $flagsref->{dynamic}, "dynamic option defined" );
- ok( $flagsref->{core}, "core option detected" );
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-02-usage.t - test C<Parrot::Ops2c::Auxiliary::Usage()> and <getoptions()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/02-usage.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<02-usage.t> tests whether C<Parrot::Ops2c::Auxiliary::Usage()>
-and F<getoptions()> work properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/03-print_c_header_file.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/03-print_c_header_file.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,131 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 03-print_c_header_file.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 12;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- test_single_trans_and_header(q{C});
-
- {
- local @ARGV = qw( C );
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [@ARGV],
- flag => { core => 1 },
- }
- );
- ok( defined $self, "Constructor correctly returned when provided >= 1 arguments" );
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
- }
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-pass("Completed all tests in $0");
-
-sub test_single_trans_and_header {
- my $trans = shift;
- my %available = map { $_, 1 } qw( C );
- croak "Bad argument $trans to test_single_trans()"
- unless $available{$trans};
-
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [$trans],
- flag => { core => 1 },
- }
- );
- ok( defined $self, "Constructor correct when provided with single argument $trans" );
-
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
-}
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-03-print_c_header_file.t - test C<Parrot::Ops2c::Utils::new()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/03-print_c_header_file.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<03-print_c_header_file.t> tests whether
-C<Parrot::Ops2c::Utils::print_c_header_file()> works properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/04-print_c_source_top.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/04-print_c_source_top.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,120 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 04-print_c_source_top.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 10;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- test_print_c_source_top( [qw( C )] );
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-sub test_print_c_source_top {
- my $local_argv_ref = shift;
- {
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => $local_argv_ref,
- flag => { core => 1 },
- }
- );
- ok( defined $self,
- "Constructor correctly returned when provided with argument(s): @{$local_argv_ref}" );
-
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
-
- my $source = IO::File->new('>' . $$self{source});
- $self->print_c_source_top($source);
- ok( -s $source, "print_c_source_top printed something to the file" );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-04-print_c_source_top.t - test C<Parrot::Ops2c::Utils::print_c_source_top()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/04-print_c_source_top.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<04-print_c_source_top.t> tests whether
-C<Parrot::Ops2c::Utils::print_c_source_top()> work properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/05-print_c_source_bottom.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/05-print_c_source_bottom.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,123 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 05-print_c_source_bottom.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 10;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-my ( $msg, $tie );
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- test_print_c_source_bottom( [qw( C )] );
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-pass("Completed all tests in $0");
-
-sub test_print_c_source_bottom {
- my $local_argv_ref = shift;
- {
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => $local_argv_ref,
- flag => { core => 1 },
- }
- );
- ok( defined $self,
- "Constructor correctly returned when provided with argument(s): @{$local_argv_ref}" );
-
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
-
- my $source = IO::File->new('>' . $$self{source});
- $self->print_c_source_bottom($source);
- $source->close();
- ok( -s $$self{source}, "print_c_source_bottom printed something to the file $$self{source}" );
- }
-}
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-05-print_c_source_bottom.t - test
-C<Parrot::Ops2c::Utils::print_c_source_bottom()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/05-print_c_source_bottom.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<05-print_c_source_bottom.t> tests whether
-C<Parrot::Ops2c::Utils::print_c_source_bottom()> work properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/06-dynamic.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/06-dynamic.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,157 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 06-dynamic.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 15;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-use IO::CaptureOutput qw | capture |;
-
-my @dynopsfiles = qw( src/dynoplibs/obscure.ops );
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-my ( $msg, $tie );
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- foreach my $f (@dynopsfiles) {
- copy( qq{$cwd/$f}, qq{$tdir/$f} );
- }
- chdir "src/dynoplibs" or croak "Unable to change to src/dynoplibs: $!";
-
- test_dynops( [qw( C obscure.ops )] );
-
- {
- my ($self, $stdout, $stderr);
- capture(
- sub { $self = Parrot::Ops2c::Utils->new( {
- argv => [qw( C obscure.ops obscure.ops )],
- flag => { dynamic => 1 },
- } ); },
- \$stdout,
- \$stderr,
- );
- ok( defined $self,
- "Constructor correctly returned when provided >= 1 arguments" );
- like( $stderr,
- qr/Ops file 'obscure\.ops' mentioned more than once!/, "Error message is correct" );
-
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
-
- my $source = IO::File->new('>' . $$self{source});
- $self->print_c_source_top($source);
- $self->print_c_source_bottom($source);
- $source->close();
- ok( -s $$self{source}, "file was written" );
- }
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-sub test_dynops {
- my $local_argv_ref = shift;
- {
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => $local_argv_ref,
- flag => { dynamic => 1 },
- }
- );
- ok( defined $self, "Constructor correctly returned when provided >= 1 arguments" );
-
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
-
- my $source = IO::File->new('>' . $$self{source});
- $self->print_c_source_top($source);
- $self->print_c_source_bottom($source);
- $source->close();
- ok( -s $$self{source}, "file was written" );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-06-dynamic.t - test C<--dynamic> flag to F<tools/build/ops2c.pl>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/06-dynamic.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<06-dynamic.t> tests how well
-C<Parrot::Ops2c::Utils()> works when the C<--dynamic> flag is passed to
-F<tools/build/ops2c.pl>.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/07-make_incdir.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/07-make_incdir.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,156 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 07-make_incdir.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 7;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ( "$main::topdir/t/tools/ops2cutils/testlib", "./lib" );
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- mkdir qq{$tdir/src};
- mkdir qq{$tdir/src/ops};
- mkdir qq{$tdir/src/dynoplibs};
-
- foreach my $f (@srcopsfiles) {
- copy( qq{$cwd/$f}, qq{$tdir/$f} );
- }
- copy( qq{$cwd/$num}, qq{$tdir/$num} );
- copy( qq{$cwd/$skip}, qq{$tdir/$skip} );
- my @opsfiles = glob("./src/ops/*.ops");
-
- mkdir qq{$tdir/lib};
- mkdir qq{$tdir/lib/Parrot};
- mkdir qq{$tdir/lib/Parrot/Ops2c};
- mkdir qq{$tdir/include};
- mkdir qq{$tdir/include/parrot};
-
- my $o2p = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- moddir => "lib/Parrot/OpLib",
- module => "core.pm",
- }
- );
-
- $o2p->prepare_ops();
- $o2p->load_op_map_files();
- $o2p->sort_ops();
- $o2p->prepare_real_ops();
- $o2p->print_module();
-
- croak "Temporary core.pm file not written"
- unless ( -f qq|$tdir/$o2p->{moddir}/$o2p->{module}| );
-
- my $tlib = qq{$tdir/lib};
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- {
- local @ARGV = qw( C );
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [@ARGV],
- flag => { core => 1 },
- }
- );
- ok( defined $self,
- "Constructor correctly returned even though include/parrot/oplib had to be created" );
- }
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-pass("Completed all tests in $0");
-
-sub test_single_trans {
- my $trans = shift;
- my %available = map { $_, 1 } qw( C );
- croak "Bad argument $trans to test_single_trans()"
- unless $available{$trans};
-
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [$trans],
- flag => { core => 1 },
- }
- );
- ok( defined $self, "Constructor correct when provided with single argument $trans" );
-}
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-07-make_incdir.t - test C<Parrot::Ops2c::Utils::new()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/07-make_incdir.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<07-make_incdir.t> tests whether C<Parrot::Ops2c::Utils::new()>
-works properly when F<include/parrot/oplib> was not previously created..
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/08-nolines.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/08-nolines.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,118 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 08-nolines.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 10;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- {
- local @ARGV = qw( C );
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [@ARGV],
- flag => { core => 1, nolines => 1 },
- }
- );
- ok( defined $self, "Constructor correctly returned when provided >= 1 arguments" );
-
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
-
- my $source = IO::File->new('>' . $$self{source});
- $self->print_c_source_top($source);
- $self->print_c_source_bottom($source);
- $source->close();
- ok( -s $$self{source}, "file was written" );
- }
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-08-nolines.t - test C<--nolines> option to F<tools/build/ops2c.pl>.
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/08-nolines.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<08-nolines.t> tests whether
-C<Parrot::Ops2c::Utils::new()> work properly when C<--nolines> option
-is passed to F<tools/build/ops2c.pl>.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/09-dynamic_nolines.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/09-dynamic_nolines.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,128 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# 09-dynamic_nolines.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 10;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-my @dynopsfiles = qw( src/dynoplibs/obscure.ops );
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- foreach my $f (@dynopsfiles) {
- copy( qq{$cwd/$f}, qq{$tdir/$f} );
- }
- chdir "src/dynoplibs" or croak "Unable to change to src/dynoplibs: $!";
-
- test_dynops_nolines( [qw( C obscure.ops )] );
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-pass("Completed all tests in $0");
-
-sub test_dynops_nolines {
- my $local_argv_ref = shift;
- {
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => $local_argv_ref,
- flag => { dynamic => 1, nolines => 1 },
- }
- );
- ok( defined $self, "Constructor correctly returned when provided >= 1 arguments" );
-
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
-
- my $source = IO::File->new('>' . $$self{source});
- $self->print_c_source_top($source);
- $self->print_c_source_bottom($source);
- $source->close();
- ok( -s $$self{source}, "file was written" );
- }
-}
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-09-dynamic_nolines.t - test C<--nolines> option to F<tools/build/ops2c.pl>.
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/09-dynamic_nolines.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<09-dynamic_nolines.t> tests whether
-C<Parrot::Ops2c::Utils::new()> work properly when the C<--nolines> and
-C<--dynamic> options are passed to F<tools/build/ops2c.pl>.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/10-print_c_source_file.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/10-print_c_source_file.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,131 +0,0 @@
-#! perl
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-# 10-print_c_source_file.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 12;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use_ok('Parrot::Ops2pm');
-use lib ("$main::topdir/t/tools/ops2cutils/testlib");
-use GenerateCore qw|
- generate_core
- @srcopsfiles
- $num
- $skip
-|;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
-
- my $tlib = generate_core( $cwd, $tdir, \@srcopsfiles, $num, $skip );
-
- ok( -d $tlib, "lib directory created under tempdir" );
- unshift @INC, $tlib;
- require Parrot::Ops2c::Utils;
-
- test_single_trans_and_source(q{C});
-
- {
- local @ARGV = qw( C );
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [@ARGV],
- flag => { core => 1 },
- }
- );
- ok( defined $self, "Constructor correctly returned when provided >= 1 arguments" );
- my $c_header_file = $self->print_c_header_file();
- ok( -e $c_header_file, "$c_header_file created" );
- ok( -s $c_header_file, "$c_header_file has non-zero size" );
- }
-
- ok( chdir($cwd), "returned to starting directory" );
-}
-
-pass("Completed all tests in $0");
-
-sub test_single_trans_and_source {
- my $trans = shift;
- my %available = map { $_, 1 } qw( C );
- croak "Bad argument $trans to test_single_trans()"
- unless $available{$trans};
-
- my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [$trans],
- flag => { core => 1 },
- }
- );
- ok( defined $self, "Constructor correct when provided with single argument $trans" );
-
- my $c_source_file = $self->print_c_source_file();
- ok( -e $c_source_file, "$c_source_file created" );
- ok( -s $c_source_file, "$c_source_file has non-zero size" );
-}
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-10-print_c_source_file.t - test C<Parrot::Ops2c::Utils::new()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2cutils/10-print_c_source_file.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2c/Utils.pm> and F<lib/Parrot/Ops2c/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2c.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-All the files in this directory are intended to be run B<after>
-F<Configure.pl> has been run but before F<make> has been called. Hence, they
-are B<not> part of the test suite run by F<make test>. Once you have run
-F<Configure.pl>, however, you may run these tests as part of F<make
-buildtools_tests>.
-
-F<10-print_c_source_file.t> tests whether
-C<Parrot::Ops2c::Utils::print_c_source_file()> works properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2c::Auxiliary, F<ops2c.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2cutils/testlib/GenerateCore.pm
==============================================================================
--- branches/ops_massacre/t/tools/ops2cutils/testlib/GenerateCore.pm Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,185 +0,0 @@
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-package GenerateCore;
-use strict;
-use warnings;
-our ( @ISA, @EXPORT_OK );
- at ISA = qw(Exporter);
-
-our @srcopsfiles = qw( src/ops/core.ops src/ops/bit.ops src/ops/cmp.ops
- src/ops/debug.ops src/ops/experimental.ops src/ops/io.ops src/ops/math.ops
- src/ops/object.ops src/ops/pic.ops src/ops/pmc.ops src/ops/set.ops
- src/ops/stack.ops src/ops/stm.ops src/ops/string.ops src/ops/sys.ops
- src/ops/var.ops );
-our $num = "src/ops/ops.num";
-our $skip = "src/ops/ops.skip";
-
- at EXPORT_OK = qw(
- generate_core
- @srcopsfiles
- $num
- $skip
-);
-use Carp;
-use File::Copy;
-use lib ("./lib");
-use Parrot::Ops2pm;
-
-
-sub generate_core {
- my ( $cwd, $tdir, $srcopsref, $num_file, $skip_file ) = @_;
- my @srcopsfiles = @$srcopsref;
- mkdir qq{$tdir/src};
- mkdir qq{$tdir/src/ops};
- mkdir qq{$tdir/src/dynoplibs};
-
- foreach my $f (@srcopsfiles) {
- copy( qq{$cwd/$f}, qq{$tdir/$f} );
- }
- copy( qq{$cwd/$num}, qq{$tdir/$num} );
- copy( qq{$cwd/$skip}, qq{$tdir/$skip} );
- my @opsfiles = glob("./src/ops/*.ops");
-
- mkdir qq{$tdir/lib};
- mkdir qq{$tdir/lib/Parrot};
- mkdir qq{$tdir/lib/Parrot/Ops2c};
- mkdir qq{$tdir/include};
- mkdir qq{$tdir/include/parrot};
- mkdir qq{$tdir/include/parrot/oplib};
-
- my $o2p = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- moddir => "lib/Parrot/OpLib",
- module => "core.pm",
- }
- );
-
- $o2p->prepare_ops();
- $o2p->load_op_map_files();
- $o2p->sort_ops();
- $o2p->prepare_real_ops();
- $o2p->print_module();
-
- croak "Temporary core.pm file not written"
- unless ( -f qq|$tdir/$o2p->{moddir}/$o2p->{module}| );
- return qq{$tdir/lib};
-}
-
-1;
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-GenerateCore - functionality used in testing Parrot::Ops2c::Utils
-
-=head1 SYNOPSIS
-
- use lib ("t/tools/ops2cutils/testlib");
- use GenerateCore qw| generate_core |;
-
- @srcopsfiles = qw(
- src/ops/core.ops src/ops/bit.ops src/ops/cmp.ops
- src/ops/debug.ops src/ops/experimental.ops src/ops/io.ops
- src/ops/math.ops src/ops/object.ops src/ops/pic.ops
- src/ops/pmc.ops src/ops/set.ops src/ops/stack.ops
- src/ops/stm.ops src/ops/string.ops src/ops/sys.ops
- src/ops/var.ops
- );
-
- $num = "src/ops/ops.num";
- $skip = "src/ops/ops.skip";
-
- $cwd = cwd();
- $tdir = tempdir( CLEANUP => 1 );
-
- $tlib = generate_core(
- $cwd, $tdir, \@srcopsfiles, $num, $skip);
-
-=head1 DESCRIPTION
-
-The test suite found in F<t/tools/ops2cutils/> tests the methods of
-Parrot::Ops2c::Utils. Those methods are invoked by Parrot build tool
-F<tools/build/ops2c.pl>, which in turn is invoked several times by F<make>.
-Parrot::Ops2c::Utils has as a prerequisite Parrot::OpLib::core. But
-Parrot::OpLib::core is not part of the Parrot distribution, nor does it exist
-at the point F<make> is called. Rather, it is created
-during the Parrot build process prior to the first call to F<ops2c.pl>.
-
-To test Parrot::Ops2c::Utils therefore requires a module which does not exist
-'pre-F<make>'. The tests in this suite, however, are designed to be run when
-your filesystem is in a 'post-F<Configure.pl>, pre-F<make>' state. The
-solution to this conundrum is to create a copy of Parrot::OpLib::core which
-exists only for the duration of a single test file.
-
-This package, GenerateCore, exports upon request a single subroutine,
-C<generate_core>, which (a) creates subdirectories needed underneath a
-temporary directory created solely for testing purposes; then
-(b) creates a temporary copy of Parrot::OpLib::core such that
-C<Parrot::Ops2c::Utils::new()> can successfully execute.
-
-=head1 SUBROUTINES
-
-=head2 C<generate_core()>
-
-=over 4
-
-=item * B<Purpose:> (See above.)
-
-=item * B<Arguments:> Five scalar arguments, in this order:
-
- cwd : String with full path of directory from which
- tests are invoked (generally, the top-level
- Parrot directory).
- tdir : String holding full path of temporary
- directory into which you have changed for
- testing.
- \@srcopsfiles : Reference to an array of F<.ops> files
- (generally, the list of arguments to ops2c.pl
- as invoked by make).
- $num : Path to ops.num file.
- $skip : Path to ops.skip file.
-
-=item * B<Return Value:> String holding full path to a directory F<lib/>
-found one level underneath the temporary directory denoted by F<tdir> above.
-(This is the directory underneath which the temporary copy of
-Parrot::OpLib::core is created.) The return value may be used in testing as a
-marker for the creation of all the needed temporary subdirectories and the
-temporary copy of Parrot::OpLib::core.
-
-=back
-
-=head1 DEPENDENCIES
-
-=over 4
-
-=item * File::Copy
-
-=item * Parrot::Ops2c::Utils
-
-=back
-
-=head1 AUTHOR
-
-James E Keenan (jkeenan at cpan.org).
-
-=head1 SEE ALSO
-
-=over 4
-
-=item * Parrot::Ops2c::Utils
-
-=item * F<tools/build/ops2c.pl>
-
-=back
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/00-qualify.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/00-qualify.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,66 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 00-qualify.t
-
-use strict;
-use warnings;
-use Test::More tests => 8;
-use FindBin;
-use lib ( "$FindBin::Bin/../../../lib", );
-use_ok('Parrot::Ops2pm');
-
-ok( -f "$FindBin::Bin/../../../Makefile", "Makefile located" );
-ok( -f "$FindBin::Bin/../../../myconfig", "myconfig located" );
-ok( -f "$FindBin::Bin/../../../lib/Parrot/OpsFile.pm", "lib/Parrot/OpsFile.pm located" );
-ok( -f "$FindBin::Bin/../../../src/ops/core.ops", "src/ops/core.ops located" );
-ok( -f "$FindBin::Bin/../../../src/ops/ops.num", "src/ops/ops.num located" );
-ok( -f "$FindBin::Bin/../../../src/ops/ops.skip", "src/ops/ops.skip located" );
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-00-qualify.t - Is this the right point to test Parrot build tools?
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/00-qualify.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2pm.pm>and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-Since F<ops2pm.pl> is invoked near the beginning of the build process,
-tests of its functionality can give meaningful results only if they
-are run in a way that simulates the status of the file system at the point
-at which F<make> invokes F<ops2pm.pl>. The tests in F<00-qualify.t> attempt
-to confirm that you are at that point. They test for the presence or
-absence of certain files to form a judgment as to whether F<Configure.pl>
-has been run (it should have been) and whether F<make> has been run
-(it should I<not> have been). The tests make certain assumptions
-about what files should be present or not -- assumptions which may be
-invalid if the Parrot build process changes in the future.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/01-ops2pm.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/01-ops2pm.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,64 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 01-ops2pm.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 3;
-
-use_ok('Parrot::Ops2pm');
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-01-ops2pm.t - test importability of Parrot::Ops2pm subroutines
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/01-ops2pm.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>. By doing so,
-they test the functionality of the F<ops2pm.pl> utility. That functionality
-has largely been extracted into the methods of F<Ops2pm.pm>.
-
-F<01-ops2pm.t> tests whether Parrot::Ops2pm is exporting the
-subroutines in its C<@EXPORT_OK>.:
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/02-usage.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/02-usage.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,106 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 02-usage.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 13;
-use Carp;
-use Cwd;
-use IO::CaptureOutput qw| capture |;
-use_ok( 'Parrot::Ops2pm::Auxiliary', qw| Usage getoptions | );
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-my $cwd = cwd();
-{
- my ($stdout, $stderr);
- my $ret = capture(
- sub { Usage(); },
- \$stdout,
- \$stderr
- );
- like(
- $stderr,
-qr|^usage: tools/build/ops2pm\.pl \[--help\] \[--no-lines\] input\.ops \[input2\.ops \.\.\.\]|,
- "Got expected usage message"
- );
-}
-
-{
- local @ARGV = qw( --no-lines );
- my $flagsref = getoptions();
- ok( $flagsref->{nolines}, "no-lines option detected" );
- ok( !defined $flagsref->{help}, "help option not defined" );
- ok( !defined $flagsref->{renum}, "renum option not defined" );
-}
-
-{
- local @ARGV = ();
- my $flagsref = getoptions();
- ok( !defined $flagsref->{nolines}, "no-lines option not defined" );
- ok( !defined $flagsref->{help}, "help option not defined" );
- ok( !defined $flagsref->{renum}, "renum option not defined" );
-}
-
-{
- local @ARGV = qw( --no-lines --help --renum );
- my $flagsref = getoptions();
- ok( $flagsref->{nolines}, "no-lines option detected" );
- ok( $flagsref->{help}, "help option detected" );
- ok( $flagsref->{renum}, "renum option detected" );
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-02-usage.t - test C<Parrot::Ops2pm::Usage()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/02-usage.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<02-usage.t> tests whether C<Parrot::Ops2pm::Auxiliary::Usage()>
-works properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm::Auxiliary, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/03-new.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/03-new.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,99 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 03-new.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 5;
-
-use_ok('Parrot::Ops2pm');
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-{
- local @ARGV = qw( fkadfudofyufyd );
- eval {
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@ARGV],
- script => "tools/build/ops2pm.pl",
- }
- );
- };
- like(
- $@,
- qr/Could not find ops file/,
- "Got expected error message when file could not be found"
- );
-}
-
-{
- local @ARGV = qw( src/ops/core.ops
- src/ops/bit.ops src/ops/cmp.ops src/ops/debug.ops
- src/ops/experimental.ops src/ops/io.ops src/ops/math.ops
- src/ops/object.ops src/ops/pic.ops src/ops/pmc.ops
- src/ops/set.ops src/ops/stack.ops src/ops/stm.ops
- src/ops/string.ops src/ops/sys.ops src/ops/var.ops
- );
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@ARGV],
- script => "tools/build/ops2pm.pl",
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-03-new.t - test C<Parrot::Ops2pm::new()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/03-new.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<03-new.t> tests whether Parrot::Ops2pm::new()
-works properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/04-prepare_ops.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/04-prepare_ops.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,304 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 04-prepare_ops.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 70;
-use Carp;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use IO::File;
-
-use_ok('Parrot::Ops2pm::Base');
-use IO::CaptureOutput qw| capture |;
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-
-# regular case
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $self = Parrot::Ops2pm::Base->new(
- {
- argv => [@ARGV],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm::Base} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- # The following tests will break if the output of Parrot::OpsFile changes
- my %temp = %{ $self->{ops} };
- is( scalar( keys %temp ), 4, "4 keys in object's internal hash" );
- ok( defined( $temp{FILE} ), "FILE key in object is defined" );
- ok( defined( $temp{OPS} ), "OPS key in object is defined" );
- ok( defined( $temp{PREAMBLE} ), "PREAMBLE key in object is defined" );
- ok( defined( $temp{VERSION} ), "VERSION key in object is defined" );
- ok( !ref( $temp{FILE} ), "FILE key in object is not a reference" );
- ok( ref( $temp{OPS} ), "OPS key in object is a reference" );
- is( ref( $temp{OPS} ), q{ARRAY}, "OPS key in object is an array reference" );
- ok( !ref( $temp{PREAMBLE} ), "PREAMBLE key in object is not a reference" );
- ok( !ref( $temp{VERSION} ), "VERSION key in object is not a reference" );
-}
-
-# nolines option is set true
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $self = Parrot::Ops2pm::Base->new(
- {
- argv => [@ARGV],
- script => "tools/build/ops2pm.pl",
- nolines => 1,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm::Base} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- # The following tests will break if the output of Parrot::OpsFile changes
- my %temp = %{ $self->{ops} };
- is( scalar( keys %temp ), 4, "4 keys in object's internal hash" );
- ok( defined( $temp{FILE} ), "FILE key in object is defined" );
- ok( defined( $temp{OPS} ), "OPS key in object is defined" );
- ok( defined( $temp{PREAMBLE} ), "PREAMBLE key in object is defined" );
- ok( defined( $temp{VERSION} ), "VERSION key in object is defined" );
- ok( !ref( $temp{FILE} ), "FILE key in object is not a reference" );
- ok( ref( $temp{OPS} ), "OPS key in object is a reference" );
- is( ref( $temp{OPS} ), q{ARRAY}, "OPS key in object is an array reference" );
- ok( !ref( $temp{PREAMBLE} ), "PREAMBLE key in object is not a reference" );
- ok( !ref( $temp{VERSION} ), "VERSION key in object is not a reference" );
-}
-
-# mistakenly list an ops file twice; confirm warning is correct
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- src/ops/bit.ops
- );
- my $self = Parrot::Ops2pm::Base->new(
- {
- argv => [@ARGV],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm::Base} );
-
- my ($stdout, $stderr);
- my $ret = capture(
- sub { $self->prepare_ops },
- \$stdout,
- \$stderr
- );
- ok($ret, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
- like(
- $stderr,
- qr|Ops file 'src/ops/bit.ops' mentioned more than once!|,
- "Got expected message about .ops file being mentioned twice"
- );
-
- # The following tests will break if the output of Parrot::OpsFile changes
- my %temp = %{ $self->{ops} };
- is( scalar( keys %temp ), 4, "4 keys in object's internal hash" );
- ok( defined( $temp{FILE} ), "FILE key in object is defined" );
- ok( defined( $temp{OPS} ), "OPS key in object is defined" );
- ok( defined( $temp{PREAMBLE} ), "PREAMBLE key in object is defined" );
- ok( defined( $temp{VERSION} ), "VERSION key in object is defined" );
- ok( !ref( $temp{FILE} ), "FILE key in object is not a reference" );
- ok( ref( $temp{OPS} ), "OPS key in object is a reference" );
- is( ref( $temp{OPS} ), q{ARRAY}, "OPS key in object is an array reference" );
- ok( !ref( $temp{PREAMBLE} ), "PREAMBLE key in object is not a reference" );
- ok( !ref( $temp{VERSION} ), "VERSION key in object is not a reference" );
-}
-
-# mistakenly provide a non-existent ops file; catch fatal error
-{
- my $phony = q{src/ops/sdifupasdufisduuapsdfi.ops};
- local @ARGV = ( "src/ops/core.ops", $phony );
-
- my $self = Parrot::Ops2pm::Base->new(
- {
- argv => [@ARGV],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm::Base} );
- eval { $self->prepare_ops; };
- like(
- $@,
- qr/Could not find ops file '$phony'!/,
- "Got expected error message re missing .ops file"
- );
-}
-
-# provide experimental.ops as one argument
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- src/ops/experimental.ops
- );
- my $self = Parrot::Ops2pm::Base->new(
- {
- argv => [@ARGV],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm::Base} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- # The following tests will break if the output of Parrot::OpsFile changes
- my %temp = %{ $self->{ops} };
- is( scalar( keys %temp ), 4, "4 keys in object's internal hash" );
- ok( defined( $temp{FILE} ), "FILE key in object is defined" );
- ok( defined( $temp{OPS} ), "OPS key in object is defined" );
- ok( defined( $temp{PREAMBLE} ), "PREAMBLE key in object is defined" );
- ok( defined( $temp{VERSION} ), "VERSION key in object is defined" );
- ok( !ref( $temp{FILE} ), "FILE key in object is not a reference" );
- ok( ref( $temp{OPS} ), "OPS key in object is a reference" );
- is( ref( $temp{OPS} ), q{ARRAY}, "OPS key in object is an array reference" );
- ok( !ref( $temp{PREAMBLE} ), "PREAMBLE key in object is not a reference" );
- ok( !ref( $temp{VERSION} ), "VERSION key in object is not a reference" );
-}
-
-# provide a file with good name but bad content
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $badops = qq{$tdir/src/ops/cmp.ops};
- my $fh = IO::File->new();
- ok( ( $fh->open(">$badops") ), "Able to open file for writing" );
- ok( ( $fh->print("alpha\nbeta\n") ), "Able to print to file" );
- ok( ( $fh->close ), "Able to close file after writing" );
-
- my $num = qq{src/ops/ops.num};
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm::Base->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm::Base} );
-
- eval { $self->prepare_ops; };
- like( $@, qr/OPS invalid for.*?cmp\.ops/, "ops file with bad content correctly detected" );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-04-prepare_ops.t - test C<Parrot::Ops2pm::Base::prepare_ops()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/04-prepare_ops.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable methods of
-F<lib/Parrot/Ops2pm::Base.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<04-prepare_ops.t> tests whether C<Parrot::Ops2pm::Base::prepare_ops()>
-works properly.
-
-=head1 COMMENT
-
-The following statements and branches in C<prepare_ops()> are as yet uncovered:
-
-=over 4
-
-=item *
-
-Can C<$ops> be undefined as a result of a call to C<Parrot::OpsFile->new()>?
-
- my $ops = Parrot::OpsFile->new( [$self->{file}], $self->{nolines} );
- die "$self->{script}: Could not read ops file '$self->{file}'!\n"
- unless defined $ops;
-
-Probably not, because the existence of C<$self->{file} has already been
-checked. But it never hurts to check whether a constructor has returned a
-defined value.
-
-=item *
-
-Can I provoke this C<die> message?
-
- my $temp_ops = Parrot::OpsFile->new( [$f], $self->{nolines} );
- die "$self->{script}: Could not read ops file '$f'!\n"
- unless defined $temp_ops;
-
-Probably not, for same reason as above.
-
-=back
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm::Base, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/05-renum_op_map_file.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/05-renum_op_map_file.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,138 +0,0 @@
-#! perl
-# Copyright (C) 2007-2010, Parrot Foundation.
-# $Id$
-# 05-renum_op_map_file.t
-
-use strict;
-use warnings;
-
-use Test::More tests => 6;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Path qw( mkpath );
-use File::Spec;
-use File::Temp qw( tempdir );
-use Tie::File;
-use lib 'lib';
-use Parrot::OpsRenumber;
-
-my ($self, @opsfiles);
-my ($lastcode, $lastnumber);
-my $numoutput = q{src/ops/ops.num};
-my $cwd = cwd();
-my $samplesdir = File::Spec->catdir( $cwd,
- ( qw| t tools ops2pm samples | )
-);;
-ok(-d $samplesdir, "Able to locate samples directory");
-
-{
- ##### Prepare temporary directory for testing #####
-
- my $tdir = tempdir( CLEANUP => 1 );
- chdir $tdir or croak "Unable to change to testing directory: $!";
- my $opsdir = File::Spec->catdir ( $tdir, 'src', 'ops' );
- mkpath( [ $opsdir ], 0, 0755 ) or croak "Unable to make testing directory";
- my $incpardir = File::Spec->catdir ( $tdir, 'include', 'parrot' );
- mkpath( [ $incpardir ], 0, 0755 ) or croak "Unable to make testing directory";
-
- ##### Stage 1: Generate ops.num de novo #####
-
- my @stage1 = qw(
- core_ops.original
- bit_ops.original
- ops_num.original
- );
- copy_into_position($samplesdir, \@stage1, q{original}, $opsdir);
- foreach my $f ( qw| core bit | ) {
- copy qq{$samplesdir/${f}_ops.original}, qq{src/ops/$f.ops.post}
- or croak "Unable to store $f for later testing: $!";
- }
- ($lastcode, $lastnumber) = run_test_stage(
- [ qw(
- src/ops/core.ops
- src/ops/bit.ops
- ) ],
- $numoutput,
- );
- is($lastcode, q{bxors_s_s_sc},
- "Stage 1: Got expected last opcode");
- is($lastnumber, 177,
- "Stage 1: Got expected last opcode number");
-
- ###### Stage 2: Delete some opcodes and regenerate ops.num #####
-
- my @stage2 = qw( bit_ops.second );
- copy_into_position($samplesdir, \@stage2, q{second}, $opsdir);
- ($lastcode, $lastnumber) = run_test_stage(
- [ qw(
- src/ops/core.ops
- src/ops/bit.ops
- ) ],
- $numoutput,
- );
-
- is($lastcode, q{bxor_i_i_ic},
- "Stage 2: Got expected last opcode");
- is($lastnumber, 172,
- "Stage 2: Got expected last opcode number");
-
- # Go back where we started to activate cleanup
- chdir $cwd or croak "Unable to change back to starting directory: $!";
-}
-
-pass("Completed all tests in $0");
-
-#################### SUBROUTINES ####################
-
-sub run_test_stage {
- my ($opsfilesref, $numoutput) = @_;
- my $self = Parrot::OpsRenumber->new(
- {
- argv => $opsfilesref,
- moddir => "lib/Parrot/OpLib",
- module => "core.pm",
- inc_dir => "include/parrot/oplib",
- inc_f => "ops.h",
- script => $0,
- }
- );
-
- $self->prepare_ops();
- $self->renum_op_map_file();
- my ($lastcode, $lastnumber) = get_last_opcode($numoutput);
- return ($lastcode, $lastnumber);
-}
-
-sub copy_into_position {
- my ($samplesdir, $stageref, $ext, $opsdir) = @_;
- foreach my $or ( @{ $stageref } ) {
- my $fullor = File::Spec->catfile( $samplesdir, $or );
- my $real;
- ($real = $or) =~ s/\.$ext$//;
- $real =~ s/_/\./g;
- my $fullreal = File::Spec->catfile( $opsdir, $real );
- copy $fullor, $fullreal or croak "Unable to copy $or";
- }
-}
-
-sub get_last_opcode {
- my $file = shift;
- croak "$file not found: $!" unless -f $file;
- my (@lines, $lastline);
- tie @lines, 'Tie::File', $file or croak "Unable to tie to $file: $!";
- $lastline = $lines[-1];
- untie @lines or croak "Unable to untie from $file: $!";
- my ($lastcode, $lastnumber) = split /\s+/, $lastline, 2;
- croak "Couldn't parse last line of $file: $!"
- unless (defined $lastcode and defined $lastnumber);
- return ($lastcode, $lastnumber);
-}
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
-
Deleted: branches/ops_massacre/t/tools/ops2pm/06-load_op_map_files.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/06-load_op_map_files.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,371 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 06-load_op_map_files.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 76;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use IO::File;
-
-use_ok('Parrot::Ops2pm');
-
-use constant NUM_FILE => "src/ops/ops.num";
-use constant SKIP_FILE => "src/ops/ops.skip";
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-## fail to provide ops.num file
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
-
- # ok(copy(qq{$cwd/$num}, qq{$tdir/$num}), "copied ops.num file");
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- eval { $self->load_op_map_files(); };
- like(
- $@, qr|^Can't open.*src/ops/ops\.num|, #'
- "Failure to prove ops.num correctly detected"
- );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# provide defective ops.num file: hole: missing number
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- my $realnum = qq{$tdir/$num};
- my $tmpnum = $realnum . q{.tmp};
- ok( copy( qq{$cwd/$num}, $tmpnum ), "copied ops.num file to temporary file" );
-
- my $fhin = IO::File->new();
- ok( ( $fhin->open("<$tmpnum") ), "Able to open file for reading" );
- my $fhout = IO::File->new();
- ok( ( $fhout->open(">$realnum") ), "Able to open file for writing" );
- while ( defined( my $line = <$fhin> ) ) {
- chomp $line;
- next if $line =~ /^#/;
- next if $line =~ /^\s*$/;
- next if $line =~ /^c/; # to create holes
- $fhout->print("$line\n");
- }
- ok( $fhout->close(), "Able to close file after writing" );
- ok( $fhin->close(), "Able to close file after reading" );
-
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- eval { $self->load_op_map_files(); };
- like( $@, qr|^hole in ops\.num before|, "Holes in ops.num correctly detected" );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# provide defective ops.num file: opname mentioned twice
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- my $realnum = qq{$tdir/$num};
- my $tmpnum = $realnum . q{.tmp};
- ok( copy( qq{$cwd/$num}, $tmpnum ), "copied ops.num file to temporary file" );
-
- my $fhin = IO::File->new();
- ok( ( $fhin->open("<$tmpnum") ), "Able to open file for reading" );
- my @outopnames;
- while ( defined( my $line = <$fhin> ) ) {
- chomp $line;
- next if $line =~ /^#/;
- next if $line =~ /^\s*$/;
- my ( $name, $number ) = split /\s+/, $line, 2;
- push @outopnames, $name;
- }
- ok( $fhin->close(), "Able to close file after reading" );
- my $fhout = IO::File->new();
- ok( ( $fhout->open(">$realnum") ), "Able to open file for writing" );
- for ( my $n = 0 ; $n < 3 ; $n++ ) {
- $fhout->print("$outopnames[$n]\t$n\n");
- }
- my $i = 3;
- $fhout->print("$outopnames[3]\t$i\n");
- $i++;
- for ( my $m = 3 ; $m <= $#outopnames ; $m++ ) {
- $fhout->print("$outopnames[$m]\t$i\n");
- $i++;
- }
- ok( $fhout->close(), "Able to close file after writing" );
-
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- eval { $self->load_op_map_files(); };
- like( $@, qr|^duplicate opcode|, "Duplicate opcode correctly detected" );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# provide defective ops.skip file: opname also found in ops.num
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
-
- # ok(copy(qq{$cwd/$skip}, qq{$tdir/$skip}), "copied ops.skip file");
-
- my $realskip = qq{$tdir/$skip};
- my $tmpskip = $realskip . q{.tmp};
- ok( copy( qq{$cwd/$skip}, $tmpskip ), "copied ops.skip file to temporary file" );
-
- my $fhin = IO::File->new();
- ok( ( $fhin->open("<$tmpskip") ), "Able to open file for reading" );
- my @outopnames;
- while ( defined( my $line = <$fhin> ) ) {
- chomp $line;
- next if $line =~ /^#/;
- next if $line =~ /^\s*$/;
- $line =~ s/\s+$//;
- $line =~ s/^\s+//;
- push @outopnames, $line;
- }
- ok( $fhin->close(), "Able to close file after reading" );
- my $fhout = IO::File->new();
- ok( ( $fhout->open(">$realskip") ), "Able to open file for writing" );
- $fhout->print("noop\n");
- for my $l (@outopnames) {
- $fhout->print("$l\n");
- }
- ok( $fhout->close(), "Able to close file after writing" );
-
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- eval { $self->load_op_map_files(); };
- like( $@, qr|^skipped opcode is also in|, "Opcode detected in both ops.num and ops.skip" );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-06-load_op_map_files.t - test C<Parrot::Ops2pm::load_op_map_files()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/06-load_op_map_files.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable methods of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<06-load_op_map_files.t> tests whether
-C<Parrot::Ops2pm::load_op_map_files()> works properly.
-
-=head1 TODO
-
-The following statements, branches and conditions in C<load_op_map_files()>
-are as yet uncovered:
-
-=over 4
-
-=item *
-
-Uncovered implicit 'else':
-
- $self->{max_op_num} ||= 0;
-
-Real questions: Can C<$self->{max_op_num}> ever be C<undef>, C<0>
-or empty string? Is there any place prior to this where
-C<$self->{max_op_num}> can be assigned to?
-
-=back
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/07-no_ops_skip.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/07-no_ops_skip.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,117 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 07-no_ops_skip.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 14;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-
-use_ok('Parrot::Ops2pm');
-
-use constant NUM_FILE => "src/ops/ops.num";
-use constant SKIP_FILE => "src/ops/ops.skip";
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-
-# fail to provide ops.skip file
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
-
- # ok(copy(qq{$cwd/$skip}, qq{$tdir/$skip}), "copied ops.skip file");
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- eval { $self->load_op_map_files(); };
- like(
- $@, qr|^Can't open.*src/ops/ops\.skip|, #'
- "Failure to prove ops.skip correctly detected"
- );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-07-no_ops_skip.t - test C<Parrot::Ops2pm::no_ops_skip()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/07-no_ops_skip.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<07-no_ops_skip.t> tests what happens when there is no F<src/ops/ops.skip>
-available for C<load_op_map_files()> to evaluate.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/08-sort_ops.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/08-sort_ops.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,353 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 08-sort_ops.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More;
-use Carp;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-
-my $cwd = cwd();
-plan -e "$cwd/DEVELOPING" ? ( tests => 86 ) :
- ( skip_all => 'Requires DEVELOPING file' );
-
-use_ok('Parrot::Ops2pm');
-use IO::CaptureOutput qw| capture |;
-
-use constant NUM_FILE => "src/ops/ops.num";
-use constant SKIP_FILE => "src/ops/ops.skip";
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-
-# regular case
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( $self->sort_ops(), "sort_ops returned successfully" );
-
- # To do: Test that the sorting was correct.
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# include experimental.ops in @ARGV
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- src/ops/experimental.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( $self->sort_ops(), "sort_ops returned successfully" );
-
- # To do: Test that the sorting was correct.
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# include experimental.ops in @ARGV; use 'DEVELOPING' to trigger warning
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- src/ops/experimental.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- ok( copy( qq{$cwd/DEVELOPING}, qq{$tdir/DEVELOPING} ), "copied DEVELOPING file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- my ($stdout, $stderr);
- my $ret = capture(
- sub { $self->sort_ops() },
- \$stdout,
- \$stderr
- );
- ok($ret, "sort_ops returned successfully" );
-
- like(
- $stderr,
- qr|experimental, not in ops\.num|,
- "Got expected warning about experimental ops"
- );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# include object.ops in @ARGV; use 'DEVELOPING' to trigger warning
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- src/ops/object.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- ok( copy( qq{$cwd/DEVELOPING}, qq{$tdir/DEVELOPING} ), "copied DEVELOPING file" );
- my $dummyops = "./src/ops/dummy.ops";
- open my $FH, ">", $dummyops
- or croak "Unable to open handle to create dummy ops file: $!";
- print $FH <<DUMMYOPS;
-/*
-** dummy.ops
-*/
-
-inline op zzzzzz(inout INT, in INT) :base_core {
- goto NEXT();
-}
-DUMMYOPS
- close $FH or croak "Unable to close handle after writing: $!";
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- my ($stdout, $stderr);
- eval { $self->sort_ops() };
- like(
- $@,
- qr|not in ops\.num nor ops\.skip|,
- "Got expected failure about ops in neither ops.num or ops.skip"
- );
-
- # To do: Test that the sorting was correct.
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# include object.ops in @ARGV; do not use 'DEVELOPING' to trigger warning
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- src/ops/object.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
-
- # ok(copy(qq{$cwd/DEVELOPING}, qq{$tdir/DEVELOPING}),
- # "copied DEVELOPING file");
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- my ($stdout, $stderr);
- my $ret = capture(
- sub { $self->sort_ops() },
- \$stdout,
- \$stderr
- );
- ok($ret, "sort_ops returned successfully" );
- ok( ! $stderr, "Got no warning, as expected" );
-
- # To do: Test that the sorting was correct.
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-08-sort_ops.t - test C<Parrot::Ops2pm::sort_ops()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/08-sort_ops.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable subroutines of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<08-sort_ops.t> tests whether
-C<Parrot::Ops2pm::sort_ops()> works properly.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/09-prepare_real_ops.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/09-prepare_real_ops.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,215 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 09-prepare_real_ops.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 38;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use IO::File;
-
-use_ok('Parrot::Ops2pm');
-
-use constant NUM_FILE => "src/ops/ops.num";
-use constant SKIP_FILE => "src/ops/ops.skip";
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( $self->sort_ops(), "sort_ops returned successfully" );
-
- ok( $self->prepare_real_ops(), "prepare_real_ops() returned successfully" );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
-
- # ok(copy(qq{$cwd/$num}, qq{$tdir/$num}), "copied ops.num file");
-
- my $realnum = qq{$tdir/$num};
- my $tmpnum = $realnum . q{.tmp};
- ok( copy( qq{$cwd/$num}, $tmpnum ), "copied ops.num file to temporary file" );
-
- my $fhin = IO::File->new();
- ok( ( $fhin->open("<$tmpnum") ), "Able to open file for reading" );
- my @outlines;
- while ( defined( my $line = <$fhin> ) ) {
- chomp $line;
- next if $line =~ /^#/;
- next if $line =~ /^\s*$/;
- my ( $name, $number ) = split /\s+/, $line, 2;
- push @outlines, [ $name, $number ];
- }
- ok( $fhin->close(), "Able to close file after reading" );
- my $fhout = IO::File->new();
- ok( ( $fhout->open(">$realnum") ), "Able to open file for writing" );
- $fhout->print("$outlines[0]->[0]\t$outlines[0]->[1]\n");
-
- # This misnumbering is not generating an error.
- # Reversing the order generated "hole in" error from load_op_map_files().
- $fhout->print("$outlines[2]->[0]\t$outlines[1]->[1]\n");
- $fhout->print("$outlines[1]->[0]\t$outlines[2]->[1]\n");
- for ( my $n = 3 ; $n <= $#outlines ; $n++ ) {
- $fhout->print("$outlines[$n]->[0]\t$outlines[$n]->[1]\n");
- }
- ok( $fhout->close(), "Able to close file after writing" );
-
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( $self->sort_ops(), "sort_ops returned successfully" );
-
- eval { $self->prepare_real_ops(); };
-
- # like($@, qr/number mismatch/,
- # "Number mismatch correctly detected");
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-09-prepare_real_ops.t - test C<Parrot::Ops2pm::prepare_real_ops()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/09-prepare_real_ops.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable methods of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<09-prepare_real_ops.t> tests whether
-C<Parrot::Ops2pm::prepare_real_ops()> works properly.
-
-=head1 TODO
-
-The following statements, branches and conditions in C<prepare_real_ops()>
-are as yet uncovered:
-
-=over 4
-
-=item *
-
-Can these two C<die> statements be provoked?
-
- if ( $n != $el->{CODE} ) {
- die "op $opname: number mismatch: ops.num $n vs. core.ops $el->{CODE}";
- }
- if ( $seq != $el->{CODE} ) {
- die "op $opname: sequence mismatch: ops.num $seq vs. core.ops $el->{CODE}";
- }
-
-=back
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/10-print_module.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/10-print_module.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,212 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 10-print_module.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 42;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-use IO::File;
-
-use_ok('Parrot::Ops2pm');
-
-use constant NUM_FILE => "src/ops/ops.num";
-use constant SKIP_FILE => "src/ops/ops.skip";
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- moddir => "lib/Parrot/OpLib",
- module => "core.pm",
-
- # inc_dir => "include/parrot/oplib",
- # inc_f => "ops.h",
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( $self->sort_ops(), "sort_ops returned successfully" );
-
- ok( $self->prepare_real_ops(), "prepare_real_ops() returned successfully" );
-
- ok( $self->print_module(), "print_module() returned true" );
- ok( -f qq{$tdir/$self->{moddir}/$self->{module}}, "core.pm file written" );
-
- # Todo: test characteristics of .pm file written
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-# --no-lines command-line option
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => 1,
- renum => undef,
- moddir => "lib/Parrot/OpLib",
- module => "core.pm",
-
- # inc_dir => "include/parrot/oplib",
- # inc_f => "ops.h",
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( $self->sort_ops(), "sort_ops returned successfully" );
-
- ok( $self->prepare_real_ops(), "prepare_real_ops() returned successfully" );
-
- ok( $self->print_module(), "print_module() returned true" );
- ok( -f qq{$tdir/$self->{moddir}/$self->{module}}, "core.pm file written" );
-
- my $fhin = IO::File->new();
- ok( ( $fhin->open("<$tdir/$self->{moddir}/$self->{module}") ),
- "Able to open file for reading" );
- my $corepm;
- {
- local $/;
- $corepm = <$fhin>;
- }
- ok( $fhin->close(), "Able to close file after reading" );
- unlike( $corepm, qr/#line/, "No '#line' directives found in generated C code" );
-
- # Todo: more tests of characteristics of .pm file written
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-10-print_module.t - test C<Parrot::Ops2pm::print_module()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/10-print_module.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable methods of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<10-print_module.t> tests whether
-C<Parrot::Ops2pm::print_module()> works properly.
-
-=head1 TODO
-
-The following statements, branches and conditions in C<print_module()>
-are as yet uncovered:
-
-=over 4
-
-=item *
-
-Directory failure: can it be provoked?
-
- if ( !-d $fulldir ) {
- File::Path::mkpath( [ $fulldir ], 0, 0755 )
- or die "$self->{script}: Could not mkdir $fulldir: $!!\n";
- }
-
-=back
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/11-print_h.t
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/11-print_h.t Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,144 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# 11-print_h.t
-
-use strict;
-use warnings;
-
-BEGIN {
- use FindBin qw($Bin);
- use Cwd qw(cwd realpath);
- realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
- our $topdir = $1;
- if ( defined $topdir ) {
- print "\nOK: Parrot top directory located\n";
- }
- else {
- $topdir = realpath($Bin) . "/../../..";
- }
- unshift @INC, qq{$topdir/lib};
-}
-use Test::More tests => 23;
-use Cwd;
-use File::Copy;
-use File::Temp (qw| tempdir |);
-
-use_ok('Parrot::Ops2pm');
-
-use constant NUM_FILE => "src/ops/ops.num";
-use constant SKIP_FILE => "src/ops/ops.skip";
-
-ok( chdir $main::topdir, "Positioned at top-level Parrot directory" );
-{
- local @ARGV = qw(
- src/ops/core.ops
- src/ops/bit.ops
- );
- my $cwd = cwd();
- {
- my $tdir = tempdir( CLEANUP => 1 );
- ok( chdir $tdir, 'changed to temp directory for testing' );
- ok( ( mkdir qq{$tdir/src} ), "able to make tempdir/src" );
- ok( ( mkdir qq{$tdir/src/ops} ), "able to make tempdir/src" );
- foreach my $f (@ARGV) {
- ok( copy( qq{$cwd/$f}, qq{$tdir/$f} ), "copied .ops file" );
- }
- my $num = NUM_FILE;
- my $skip = SKIP_FILE;
- ok( copy( qq{$cwd/$num}, qq{$tdir/$num} ), "copied ops.num file" );
- ok( copy( qq{$cwd/$skip}, qq{$tdir/$skip} ), "copied ops.skip file" );
- my @opsfiles = glob("./src/ops/*.ops");
-
- my $self = Parrot::Ops2pm->new(
- {
- argv => [@opsfiles],
- script => "tools/build/ops2pm.pl",
- nolines => undef,
- renum => undef,
- moddir => "lib/Parrot/OpLib",
- module => "core.pm",
- inc_dir => "include/parrot/oplib",
- inc_f => "ops.h",
- }
- );
- isa_ok( $self, q{Parrot::Ops2pm} );
-
- ok( $self->prepare_ops, "prepare_ops() returned successfully" );
- ok( defined( $self->{ops} ), "'ops' key has been defined" );
-
- ok( $self->load_op_map_files(), "load_op_map_files() completed successfully" );
- ok( -f $num, "ops.num located after renumbering" );
- ok( -f $skip, "ops.skip located after renumbering" );
-
- ok( $self->sort_ops(), "sort_ops returned successfully" );
-
- ok( $self->prepare_real_ops(), "prepare_real_ops() returned successfully" );
-
- ok( $self->print_module(), "print_module() returned true" );
- ok( -f qq{$tdir/$self->{moddir}/$self->{module}}, "core.pm file written" );
-
- ok( $self->print_h(), "print_h() returned true" );
- ok( -f qq{$tdir/$self->{inc_dir}/$self->{inc_f}}, "$self->{inc_f} created" );
-
- ok( chdir $cwd, 'changed back to starting directory after testing' );
- }
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-11-print_h.t - test C<Parrot::Ops2pm::print_h()>
-
-=head1 SYNOPSIS
-
- % prove t/tools/ops2pm/11-print_h.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable methods of
-F<lib/Parrot/Ops2pm.pm> and F<lib/Parrot/Ops2pm/Auxiliary.pm>.
-By doing so, they test the functionality of the F<ops2pm.pl> utility.
-That functionality has largely been extracted
-into the methods of F<Utils.pm>.
-
-F<11-print_h.t> tests whether
-C<Parrot::Ops2pm::print_h()> works properly.
-
-=head1 TODO
-
-The following statements, branches and conditions in C<print_h()>
-are as yet uncovered:
-
-=over 4
-
-=item *
-
-Directory failure: can it be provoked?
-
- if ( !-d $fulldir ) {
- File::Path::mkpath( [ $fulldir ], 0, 0755 )
- or die "$self->{script}: Could not mkdir $fulldir: $!!\n";
- }
-
-=back
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Ops2pm, F<ops2pm.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_massacre/t/tools/ops2pm/samples/bit_ops.original
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/samples/bit_ops.original Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,353 +0,0 @@
-/*
- * $Id$
-** bit.ops
-*/
-
- /* Signed shift operator that is compatible with PMC shifts. This is
- * guaranteed to produce the same result as bitwise_left_shift_internal modulo
- * word size, ignoring the fact that Parrot integers are always signed. This
- * usually gives the same answer regardless whether you shift PMC operands and
- * then assign to an I-reg, or move the operands to I-regs and do the shift
- * there -- except when the true result is between 2^{w-1} and 2^w (where w is
- * the word size), in which case the high order bit is taken as the sign,
- * giving a truncated result that is 2^w lower.
- */
-#define bit_shift_left(number, bits) \
- ((bits) >= 8*INTVAL_SIZE ? 0 \
- : (bits) >= 0 ? (number) << (bits) \
- : (bits) > -8*INTVAL_SIZE ? (number) >> -(bits) \
- : 0)
-
-VERSION = PARROT_VERSION;
-
-=head1 NAME
-
-bit.ops - Bitwise Operations
-
-=head1 DESCRIPTION
-
-Operations that deal with bits directly, either individually
-or in groups.
-
-The variant with an appended B<s> like B<bands> work on strings.
-
-The variants with a prepended B<n_> like <n_bnot> generate a new target PMC.
-If possible, they use the appropriate language type, specified with C<.HLL>.
-
-=over 4
-
-=cut
-
-###############################################################################
-
-=item B<band>(inout INT, in INT)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $1 and $2.
-
-=item B<band>(out INT, in INT, in INT)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op band(inout INT, in INT) :base_core {
- $1 &= $2;
-}
-
-inline op band(out INT, in INT, in INT) :base_core {
- $1 = $2 & $3;
-}
-
-=item B<bands>(inout STR, in STR)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $1 and $2.
-
-=item B<bands>(out STR, in STR, in STR)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bands(inout STR, in STR) :base_core {
- Parrot_str_bitwise_and(interp, $1, $2, &$1);
-}
-
-inline op bands(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_and(interp, $2, $3, NULL);
-}
-
-########################################
-
-=item B<bnot>(inout INT)
-
-=item B<bnot>(invar PMC)
-
-Sets $1 to C<bitwise not> $1 inplace.
-
-=item B<bnot>(out INT, in INT)
-
-=item B<bnot>(out PMC, invar PMC)
-
-=item B<n_bnot>(out PMC, invar PMC)
-
-Set the bits of $1 to the B<not> of the corresponding bits from $2.
-
-=cut
-
-inline op bnot(inout INT) :base_core {
- $1 = ~ $1;
-}
-
-inline op bnot(out INT, in INT) :base_core {
- $1 = ~ $2;
-}
-
-inline op bnot(invar PMC) :base_core {
- VTABLE_i_bitwise_not(interp, $1);
-}
-
-inline op bnot(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_not(interp, $2, $1);
-}
-
-inline op n_bnot(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_not(interp, $2, NULL);
-}
-
-=item B<bnots>(inout STR)
-
-=item B<bnots>(invar PMC)
-
-=item B<bnots>(out STR, in STR)
-
-=item B<bnots>(out PMC, invar PMC)
-
-=item B<n_bnots>(out PMC, invar PMC)
-
-Set the bits of $1 to the B<not> of the corresponding bits from $2.
-
-=cut
-
-inline op bnots(inout STR) :base_core {
- Parrot_str_bitwise_not(interp, $1, &$1);
-}
-
-inline op bnots(out STR, in STR) :base_core {
- Parrot_str_bitwise_not(interp, $2, &$1);
-}
-
-inline op bnots(invar PMC) :base_core {
- VTABLE_i_bitwise_nots(interp, $1);
-}
-
-inline op bnots(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_nots(interp, $2, $1);
-}
-
-inline op n_bnots(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_nots(interp, $2, NULL);
-}
-
-########################################
-
-=item B<bor>(inout INT, in INT)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $1 and $2.
-
-=item B<bor>(out INT, in INT, in INT)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bor(inout INT, in INT) :base_core {
- $1 |= $2;
-}
-
-inline op bor(out INT, in INT, in INT) :base_core {
- $1 = $2 | $3;
-}
-
-=item B<bors>(inout STR, in STR)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $1 and $2.
-
-=item B<bors>(out STR, in STR, in STR)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bors(inout STR, in STR) :base_core {
- Parrot_str_bitwise_or(interp, $1, $2, &$1);
-}
-
-inline op bors(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_or(interp, $2, $3, NULL);
-}
-
-########################################
-
-=item B<shl>(inout INT, in INT)
-
-Shift left $1 by $2 bits.
-
-=item B<shl>(out INT, in INT, in INT)
-
-Set $1 to the value of $2 shifted left by $3 bits.
-
-=cut
-
-inline op shl(inout INT, in INT) :base_core {
- $1 = bit_shift_left($1, $2);
-}
-
-inline op shl(out INT, in INT, in INT) :base_core {
- $1 = bit_shift_left($2, $3);
-}
-
-########################################
-
-=item B<shr>(inout INT, in INT)
-
-Shift right $1 by $2 bits.
-
-=item B<shr>(out INT, in INT, in INT)
-
-Set $1 to the value of $2 shifted right by $3 bits.
-
-=cut
-
-inline op shr(inout INT, in INT) :base_core {
- INTVAL signed_shift = -$2;
- $1 = bit_shift_left($1, signed_shift);
-}
-
-inline op shr(out INT, in INT, in INT) :base_core {
- INTVAL signed_shift = -$3;
- $1 = bit_shift_left($2, signed_shift);
-}
-
-########################################
-
-=item B<lsr>(out INT, in INT)
-
-Shift $1 logically shifted right by $2 bits.
-
-=item B<lsr>(out INT, in INT, in INT)
-
-Set $1 to the value of $2 logically shifted right by $3 bits.
-
-=cut
-
-inline op lsr(out INT, in INT) :base_core {
- /*
- * lvalue casts are evil, but this one isn't evil enough to kill.
- * it's just casting a signed integral to the equivalent unsigned.
- */
- LVALUE_CAST(UINTVAL, $1) >>= $2;
-}
-
-inline op lsr(out INT, in INT, in INT) :base_core {
- $1 = (INTVAL)((UINTVAL)$2 >> $3);
-}
-
-=item B<rot>(out INT, in INT, in INT, inconst INT)
-
-Rotate $2 left or right by $3 and place result in $1.
-$4 is the amount of bits to rotate, 32 bit on a 32-bit CPU and 32 or 64
-on a 64-bit CPU. If the rotate count is negative a rotate right by ($3+$4)
-is performed.
-
-=cut
-
-inline op rot(out INT, in INT, in INT, inconst INT) {
- const INTVAL r = $2;
- INTVAL s = $3;
- const INTVAL w = $4;
- INTVAL d, t;
- if (s < 0)
- s += w;
- d = r << s;
- t = w - s;
- t = (INTVAL)((UINTVAL)r >> t);
- d |= t;
- $1 = d;
-}
-
-
-}
-
-########################################
-
-=item B<bxor>(inout INT, in INT)
-
-Set the bits of $1 according to the B<xor> of the corresponding bits
-from $1 and $2.
-
-=item B<bxor>(out INT, in INT, in INT)
-
-Set the bits of $1 according to the B<xor> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bxor(inout INT, in INT) :base_core {
- $1 ^= $2;
-}
-
-inline op bxor(out INT, in INT, in INT) :base_core {
- $1 = $2 ^ $3;
-}
-
-=item B<bxors>(inout STR, in STR)
-
-Set the bits of $1 according to the B<xor> of the corresponding bits
-from $1 and $2.
-
-=item B<bxors>(out STR, in STR, in STR)
-
-Set the bits of $1 according to the B<xor> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bxors(inout STR, in STR) :base_core {
- Parrot_str_bitwise_xor(interp, $1, $2, &$1);
-}
-
-inline op bxors(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_xor(interp, $2, $3, NULL);
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head1 COPYRIGHT
-
-Copyright (C) 2001-2008, Parrot Foundation.
-
-=head1 LICENSE
-
-This program is free software. It is subject to the same license
-as the Parrot interpreter itself.
-
-=cut
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Deleted: branches/ops_massacre/t/tools/ops2pm/samples/bit_ops.second
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/samples/bit_ops.second Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,333 +0,0 @@
-/*
- * $Id$
-** bit.ops
-*/
-
- /* Signed shift operator that is compatible with PMC shifts. This is
- * guaranteed to produce the same result as bitwise_left_shift_internal modulo
- * word size, ignoring the fact that Parrot integers are always signed. This
- * usually gives the same answer regardless whether you shift PMC operands and
- * then assign to an I-reg, or move the operands to I-regs and do the shift
- * there -- except when the true result is between 2^{w-1} and 2^w (where w is
- * the word size), in which case the high order bit is taken as the sign,
- * giving a truncated result that is 2^w lower.
- */
-#define bit_shift_left(number, bits) \
- ((bits) >= 8*INTVAL_SIZE ? 0 \
- : (bits) >= 0 ? (number) << (bits) \
- : (bits) > -8*INTVAL_SIZE ? (number) >> -(bits) \
- : 0)
-
-VERSION = PARROT_VERSION;
-
-=head1 NAME
-
-bit.ops - Bitwise Operations
-
-=head1 DESCRIPTION
-
-Operations that deal with bits directly, either individually
-or in groups.
-
-The variant with an appended B<s> like B<bands> work on strings.
-
-The variants with a prepended B<n_> like <n_bnot> generate a new target PMC.
-If possible, they use the appropriate language type, specified with C<.HLL>.
-
-=over 4
-
-=cut
-
-###############################################################################
-
-=item B<band>(inout INT, in INT)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $1 and $2.
-
-=item B<band>(out INT, in INT, in INT)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op band(inout INT, in INT) :base_core {
- $1 &= $2;
-}
-
-inline op band(out INT, in INT, in INT) :base_core {
- $1 = $2 & $3;
-}
-
-=item B<bands>(inout STR, in STR)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $1 and $2.
-
-=item B<bands>(out STR, in STR, in STR)
-
-Set the bits of $1 according to the B<and> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bands(inout STR, in STR) :base_core {
- Parrot_str_bitwise_and(interp, $1, $2, &$1);
-}
-
-inline op bands(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_and(interp, $2, $3, NULL);
-}
-
-########################################
-
-=item B<bnot>(inout INT)
-
-=item B<bnot>(invar PMC)
-
-Sets $1 to C<bitwise not> $1 inplace.
-
-=item B<bnot>(out INT, in INT)
-
-=item B<bnot>(out PMC, invar PMC)
-
-=item B<n_bnot>(out PMC, invar PMC)
-
-Set the bits of $1 to the B<not> of the corresponding bits from $2.
-
-=cut
-
-inline op bnot(inout INT) :base_core {
- $1 = ~ $1;
-}
-
-inline op bnot(out INT, in INT) :base_core {
- $1 = ~ $2;
-}
-
-inline op bnot(invar PMC) :base_core {
- VTABLE_i_bitwise_not(interp, $1);
-}
-
-inline op bnot(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_not(interp, $2, $1);
-}
-
-inline op n_bnot(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_not(interp, $2, NULL);
-}
-
-=item B<bnots>(inout STR)
-
-=item B<bnots>(invar PMC)
-
-=item B<bnots>(out STR, in STR)
-
-=item B<bnots>(out PMC, invar PMC)
-
-=item B<n_bnots>(out PMC, invar PMC)
-
-Set the bits of $1 to the B<not> of the corresponding bits from $2.
-
-=cut
-
-inline op bnots(inout STR) :base_core {
- Parrot_str_bitwise_not(interp, $1, &$1);
-}
-
-inline op bnots(out STR, in STR) :base_core {
- Parrot_str_bitwise_not(interp, $2, &$1);
-}
-
-inline op bnots(invar PMC) :base_core {
- VTABLE_i_bitwise_nots(interp, $1);
-}
-
-inline op bnots(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_nots(interp, $2, $1);
-}
-
-inline op n_bnots(out PMC, invar PMC) :base_core {
- $1 = VTABLE_bitwise_nots(interp, $2, NULL);
-}
-
-########################################
-
-=item B<bor>(inout INT, in INT)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $1 and $2.
-
-=item B<bor>(out INT, in INT, in INT)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bor(inout INT, in INT) :base_core {
- $1 |= $2;
-}
-
-inline op bor(out INT, in INT, in INT) :base_core {
- $1 = $2 | $3;
-}
-
-=item B<bors>(inout STR, in STR)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $1 and $2.
-
-=item B<bors>(out STR, in STR, in STR)
-
-Set the bits of $1 according to the B<or> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bors(inout STR, in STR) :base_core {
- Parrot_str_bitwise_or(interp, $1, $2, &$1);
-}
-
-inline op bors(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_or(interp, $2, $3, NULL);
-}
-
-########################################
-
-=item B<shl>(inout INT, in INT)
-
-Shift left $1 by $2 bits.
-
-=item B<shl>(out INT, in INT, in INT)
-
-Set $1 to the value of $2 shifted left by $3 bits.
-
-=cut
-
-inline op shl(inout INT, in INT) :base_core {
- $1 = bit_shift_left($1, $2);
-}
-
-inline op shl(out INT, in INT, in INT) :base_core {
- $1 = bit_shift_left($2, $3);
-}
-
-########################################
-
-=item B<shr>(inout INT, in INT)
-
-Shift right $1 by $2 bits.
-
-=item B<shr>(out INT, in INT, in INT)
-
-Set $1 to the value of $2 shifted right by $3 bits.
-
-=cut
-
-inline op shr(inout INT, in INT) :base_core {
- INTVAL signed_shift = -$2;
- $1 = bit_shift_left($1, signed_shift);
-}
-
-inline op shr(out INT, in INT, in INT) :base_core {
- INTVAL signed_shift = -$3;
- $1 = bit_shift_left($2, signed_shift);
-}
-
-########################################
-
-=item B<lsr>(out INT, in INT)
-
-Shift $1 logically shifted right by $2 bits.
-
-=item B<lsr>(out INT, in INT, in INT)
-
-Set $1 to the value of $2 logically shifted right by $3 bits.
-
-=cut
-
-inline op lsr(out INT, in INT) :base_core {
- /*
- * lvalue casts are evil, but this one isn't evil enough to kill.
- * it's just casting a signed integral to the equivalent unsigned.
- */
- LVALUE_CAST(UINTVAL, $1) >>= $2;
-}
-
-inline op lsr(out INT, in INT, in INT) :base_core {
- $1 = (INTVAL)((UINTVAL)$2 >> $3);
-}
-
-=item B<rot>(out INT, in INT, in INT, inconst INT)
-
-Rotate $2 left or right by $3 and place result in $1.
-$4 is the amount of bits to rotate, 32 bit on a 32-bit CPU and 32 or 64
-on a 64-bit CPU. If the rotate count is negative a rotate right by ($3+$4)
-is performed.
-
-=cut
-
-inline op rot(out INT, in INT, in INT, inconst INT) {
- const INTVAL r = $2;
- INTVAL s = $3;
- const INTVAL w = $4;
- INTVAL d, t;
- if (s < 0)
- s += w;
- d = r << s;
- t = w - s;
- t = (INTVAL)((UINTVAL)r >> t);
- d |= t;
- $1 = d;
-}
-
-
-}
-
-########################################
-
-=item B<bxor>(inout INT, in INT)
-
-Set the bits of $1 according to the B<xor> of the corresponding bits
-from $1 and $2.
-
-=item B<bxor>(out INT, in INT, in INT)
-
-Set the bits of $1 according to the B<xor> of the corresponding bits
-from $2 and $3.
-
-=cut
-
-inline op bxor(inout INT, in INT) :base_core {
- $1 ^= $2;
-}
-
-inline op bxor(out INT, in INT, in INT) :base_core {
- $1 = $2 ^ $3;
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head1 COPYRIGHT
-
-Copyright (C) 2001-2008, Parrot Foundation.
-
-=head1 LICENSE
-
-This program is free software. It is subject to the same license
-as the Parrot interpreter itself.
-
-=cut
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Deleted: branches/ops_massacre/t/tools/ops2pm/samples/core_ops.original
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/samples/core_ops.original Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,1326 +0,0 @@
-/*
- * $Id$
-** core.ops
-*/
-
-#include "parrot/dynext.h"
-#include "parrot/embed.h"
-#include "../interp/interp_guts.h"
-
-VERSION = PARROT_VERSION;
-
-=head1 NAME
-
-core.ops - Parrot Core Ops
-
-=cut
-
-=head1 DESCRIPTION
-
-Parrot's core library of ops.
-
-Core operations are primarily flow control and interpreter
-introspection.
-
-=cut
-
-# ' for emacs
-
-###############################################################################
-
-=head2 Basic ops
-
-These are the fundamental operations.
-Please note: These opcodes must not be moved; they must have
-exactly these opcode numbers. Opcodes ending with underscores are for
-internal use only; don't emit these opcodes.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<end>()
-
-Halts the interpreter. (Must be op #0, CORE_OPS_end). See also B<exit>.
-
-=cut
-
-inline op end() :base_core :check_event :flow {
- HALT();
-}
-
-
-########################################
-
-=item B<noop>()
-
-Does nothing other than waste an iota of time and 32 bits of bytecode space.
-(Must be op #1, CORE_OPS_noop)
-
-=item B<cpu_ret>()
-
-Emit a cpu return instruction. This is used to return from CGP core
-to JIT code. Note: Do B<not> use this opcode. It is for internal use only.
-(Must be op #2, CORE_OPS_cpu_ret)
-
-=item B<check_events>()
-
-Check the event queue and run event handlers if there are unhandled events.
-Note: This opcode is mainly for testing. It should not be necessary to ever
-use it explicitly.
-(Must be op #3, CORE_OPS_check_events).
-
-=item B<check_events__>()
-
-Check the event queue and run event handlers if there are unhandled events.
-Note: Do B<not> use this opcode. It is for internal use only.
-(Must be op #4, CORE_OPS_check_events__).
-
-=item B<wrapper__>()
-
-Internal opcode to wrap unknown ops from loaded opcode libs.
-Don't use.
-(Must be op #5, CORE_OPS_wrapper__).
-
-=item B<prederef__>()
-
-Internal opcode to prederef opcodes on the fly.
-Don't use.
-(Must be op #6, CORE_OPS_prederef__).
-
-=item B<reserved>(inconst INT)
-
-Reserve 1 more fix entry.
-
-=item B<load_bytecode>(in STR)
-
-Load Parrot bytecode from file $1, and search the library path to locate the
-file.
-
-=cut
-
-inline op noop() :base_core {
-}
-
-inline op cpu_ret() {
-#ifdef __GNUC__
-# ifdef I386
- __asm__("ret");
-# endif
-#endif
-}
-
-inline op check_events() :base_core :flow {
- opcode_t *next = expr NEXT();
- Parrot_cx_check_tasks(interp, interp->scheduler);
- goto ADDRESS(next); /* force this being a branch op */
-}
-
-inline op check_events__() :internal :flow {
- opcode_t *_this = CUR_OPCODE;
- /* Restore op_func_table. */
- disable_event_checking(interp);
- Parrot_cx_handle_tasks(interp, interp->scheduler);
- goto ADDRESS(_this); /* force this being a branch op */
-}
-
-inline op wrapper__() :internal :flow {
- opcode_t *pc = CUR_OPCODE;
- DO_OP(pc, interp);
- goto ADDRESS(pc);
-}
-
-inline op prederef__() :internal :flow {
- opcode_t *_this = CUR_OPCODE;
- if (interp->run_core & PARROT_CGOTO_CORE) {
- /* must be CGP then - check for events in not yet prederefed code */
- Parrot_cx_runloop_wake(interp, interp->scheduler);
- /* _this = CHECK_EVENTS(interp, _this); */
- }
- do_prederef((void**)cur_opcode, interp, op_lib.core_type);
- goto ADDRESS(_this); /* force this being a branch op */
-}
-
-inline op reserved(inconst INT) {
- /* reserve 1 entries */
-}
-
-inline op load_bytecode(in STR) :load_file {
- Parrot_load_bytecode(interp, $1);
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head2 Control flow
-
-The control flow opcodes check conditions and manage program flow.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<branch>(in LABEL)
-
-Branch forward or backward by the amount in $1.
-
-=cut
-
-inline op branch(in LABEL) :base_loop :flow {
- goto OFFSET($1);
-}
-
-
-=item B<branch_cs>(in STR)
-
-Intersegment branch to location in fixup table named $1.
-
-=cut
-
-inline op branch_cs(in STR) :base_loop :check_event :flow {
- char * const label = string_to_cstring(interp, $1);
- PackFile_FixupEntry * const fe =
- PackFile_find_fixup_entry(interp, enum_fixup_label, label);
-
- if (!fe) {
- Parrot_str_free_cstring(label);
- real_exception(interp, NULL, 1, "branch_cs: fixup for '%Ss' not found",
- $1);
- }
- else {
- interp->resume_offset = fe->offset;
- Parrot_switch_to_cs(interp, fe->seg, 1);
- }
- mem_sys_free(fe);
- Parrot_str_free_cstring(label);
- interp->resume_flag = 2;
- goto ADDRESS(0);
-}
-
-########################################
-
-=item B<bsr>(in LABEL)
-
-Branch to the location specified by $1. Push the current location onto the call
-stack for later returning.
-
-=cut
-
-inline op bsr(in LABEL) :base_core :check_event :flow {
- stack_push(interp, &interp->dynamic_env,
- expr NEXT(), STACK_ENTRY_DESTINATION, STACK_CLEANUP_NULL);
- goto OFFSET($1);
-}
-
-=item B<ret>()
-
-Pop the location off the top of the call stack and go there.
-
-=cut
-
-inline op ret() :flow {
- goto POP();
-}
-
-
-########################################
-
-=item B<jsr>(in LABEL)
-
-Jump to the location specified by register $1. Push the current
-location onto the call stack for later returning.
-
-=cut
-
-inline op jsr(in LABEL) :base_core :check_event :flow {
- opcode_t * loc;
- stack_push(interp, &interp->dynamic_env,
- expr NEXT(), STACK_ENTRY_DESTINATION, STACK_CLEANUP_NULL);
- loc = INTVAL2PTR(opcode_t *, $1);
- goto ADDRESS(loc);
-}
-
-
-########################################
-
-=item B<jump>(in LABEL)
-
-Jump to the address held in register $1.
-
-=cut
-
-inline op jump(in LABEL) :base_loop :flow {
- opcode_t * const loc = INTVAL2PTR(opcode_t *, $1);
- goto ADDRESS(loc);
-}
-
-########################################
-
-=item B<enternative>()
-
-Internal opcode used to jump from normal bytecode into a JITted version.
-
-=cut
-
-op enternative() :flow {
- opcode_t * const addr = run_native(interp, CUR_OPCODE,
- interp->code->base.data);
- goto ADDRESS(addr);
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head2 Conditional branch operations
-
-These operations perform a conditional relative branch. If the condition is
-met, the branch happens. Otherwise control falls to the next operation.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<if>(invar INT, inconst LABEL)
-
-=item B<if>(invar NUM, inconst LABEL)
-
-=item B<if>(invar PMC, inconst LABEL)
-
-=item B<if>(invar STR, inconst LABEL)
-
-Check register $1. If true, branch by $2.
-
-=cut
-
-inline op if(invar INT, inconst LABEL) {
- if ($1 != 0)
- goto OFFSET($2);
-}
-
-inline op if(invar NUM, inconst LABEL) {
- if (!FLOAT_IS_ZERO($1))
- goto OFFSET($2);
-}
-
-op if (invar STR, inconst LABEL) {
- if (string_bool(interp, $1))
- goto OFFSET($2);
-}
-
-op if(invar PMC, inconst LABEL) {
- if (VTABLE_get_bool(interp, $1))
- goto OFFSET($2);
-}
-
-########################################
-
-=item B<unless>(invar INT, inconst LABEL)
-
-=item B<unless>(invar NUM, inconst LABEL)
-
-=item B<unless>(invar PMC, inconst LABEL)
-
-=item B<unless>(invar STR, inconst LABEL)
-
-Check register $1. If false, branch by $2.
-
-=cut
-
-inline op unless(invar INT, inconst LABEL) {
- if ($1 == 0)
- goto OFFSET($2);
-}
-
-inline op unless(invar NUM, inconst LABEL) {
- if (FLOAT_IS_ZERO($1))
- goto OFFSET($2);
-}
-
-op unless(invar STR, inconst LABEL) {
- if (!string_bool(interp, $1))
- goto OFFSET($2);
-}
-
-op unless(invar PMC, inconst LABEL) {
- if (!VTABLE_get_bool(interp, $1))
- goto OFFSET($2);
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head2 Subroutine operations
-
-These operations are used to generate and call subroutines and
-continuations.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<invokecc>(invar PMC)
-
-Call the subroutine in $1 and generate a new return continuation, if needed.
-For example, a NCI subroutine which executes code in some C library will not
-create a continuation, nor will anything but the first call to a coroutine.
-
-=item B<invoke>(invar PMC, invar PMC)
-
-Call the subroutine in $1 and use continuation $2.
-
-=item B<yield>()
-
-Yield results from a coroutine.
-
-=item B<tailcall>(invar PMC)
-
-Call the subroutine in $1 and use the current continuation as the subs
-continuation.
-
-=item B<returncc>()
-
-Return from the sub or method via the current continuation.
-
-=item B<newclosure>(out PMC, invar PMC)
-
-Create a closure of the given subroutine PMC by cloning the sub's state.
-
-=cut
-
-inline op invokecc(invar PMC) :flow {
- PMC * const p = $1;
- opcode_t *dest = expr NEXT();
-
- interp->current_object = NULL;
- interp->current_cont = NEED_CONTINUATION;
- dest = (opcode_t *)p->vtable->invoke(interp, p, dest);
-
- goto ADDRESS(dest);
-}
-
-inline op invoke(invar PMC, invar PMC) :flow {
- opcode_t *dest;
- PMC * const p = $1;
-
- interp->current_object = NULL;
- interp->current_cont = $2;
- dest = (opcode_t *)p->vtable->invoke(interp, p, expr NEXT());
- goto ADDRESS(dest);
-}
-
-inline op yield() :flow {
- opcode_t *dest = expr NEXT();
- PMC * const p = CONTEXT(interp)->current_sub;
- dest = (opcode_t *)p->vtable->invoke(interp, p, dest);
- goto ADDRESS(dest);
-}
-
-inline op tailcall(invar PMC) :flow {
- opcode_t *dest;
- PMC * const p = $1;
- dest = expr NEXT();
- interp->current_cont = CONTEXT(interp)->current_cont;
- PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
- dest = (opcode_t *)p->vtable->invoke(interp, p, dest);
- goto ADDRESS(dest);
-}
-
-inline op returncc() :flow {
- PMC * const p = CONTEXT(interp)->current_cont;
- opcode_t * const dest = (opcode_t *)p->vtable->invoke(interp,
- p, expr NEXT());
- goto ADDRESS(dest);
-}
-
-inline op newclosure(out PMC, invar PMC) {
- $1 = parrot_new_closure(interp, $2);
-}
-
-=back
-
-=head2 Function argument opcode
-
-Implementations of function argument and params handling
-
-=over 4
-
-=item B<set_args>(inconst PMC /* , ... */)
-
-Define arguments for the next function call.
-
-=item B<get_results>(inconst PMC /* , ... */)
-
-Define return values for the next function call.
-
-=item B<get_params>(inconst PMC /* , ... */)
-
-Define function parameters for this subroutine.
-
-=item B<set_returns>(inconst PMC /* , ... */)
-
-Define return results for the subroutine return statement.
-
-For all of these opcodes the passed invar PMC constant is the string
-representation of a FixedIntegerArray with one flag word per argument.
-The flags are documented currently in F<include/parrot/enum.h> only.
-
-After this argument a variable amount of arguments must follow according
-to the elements of the signature array.
-
-=cut
-
-
-op set_args(inconst PMC) :flow {
- opcode_t * const _this = CUR_OPCODE;
- PMC * const signature = $1;
- INTVAL argc;
-
- /* for now just point to the opcode */
- interp->current_args = _this;
- argc = VTABLE_elements(interp, signature);
- goto OFFSET(argc + 2);
-}
-
-op get_results(inconst PMC) :flow {
- opcode_t * const _this = CUR_OPCODE;
- PMC * const signature = $1;
- INTVAL argc;
-
- CONTEXT(interp)->current_results = _this;
- argc = VTABLE_elements(interp, signature);
- goto OFFSET(argc + 2);
-}
-
-op get_params(inconst PMC) :flow {
- opcode_t * const _this = CUR_OPCODE;
- parrot_context_t *caller_ctx, *ctx;
- PMC * ccont;
- PMC * const signature = $1;
- INTVAL argc;
- opcode_t *src_indexes, *dst_indexes;
-
- interp->current_params = _this;
- ctx = CONTEXT(interp);
- ccont = ctx->current_cont;
-
- caller_ctx = ctx->caller_ctx;
-
- src_indexes = interp->current_args;
- dst_indexes = interp->current_params;
- /* the args and params are now 'used.' */
- interp->current_args = NULL;
- interp->current_params = NULL;
-
- parrot_pass_args(interp, caller_ctx, ctx, src_indexes, dst_indexes, PARROT_PASS_PARAMS);
- if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL) {
- PObj_get_FLAGS(ccont) &= ~SUB_FLAG_TAILCALL;
- --ctx->recursion_depth;
- ctx->caller_ctx = caller_ctx->caller_ctx;
- /* ordinarily, this will free the context immediately, but not if the
- sub created a closure (or continuation, or . . .). */
- Parrot_free_context(interp, caller_ctx, 0);
- interp->current_args = NULL;
- }
- argc = VTABLE_elements(interp, signature);
- goto OFFSET(argc + 2);
-}
-
-op set_returns(inconst PMC) :flow {
- opcode_t * const _this = CUR_OPCODE;
- parrot_context_t *ctx;
- PMC *ccont;
- PMC *signature = $1;
- INTVAL argc;
- opcode_t *src_indexes, *dest_indexes;
-
- interp->current_returns = _this;
- ctx = CONTEXT(interp);
- ccont = ctx->current_cont;
-
- if (PMC_cont(ccont)->address) {
- /* else it's from runops_fromc */
- parrot_context_t * const caller_ctx = PMC_cont(ccont)->to_ctx;
- if (! caller_ctx) {
- /* there is no point calling real_exception here, because
- PDB_backtrace can't deal with a missing to_ctx either. */
- internal_exception(1, "No caller_ctx for continuation %p.", ccont);
- }
-
- src_indexes = interp->current_returns;
- dest_indexes = caller_ctx->current_results;
- interp->current_returns = NULL;
- /* does this need to be here */
- interp->current_args = NULL;
-
- parrot_pass_args(interp, ctx, caller_ctx, src_indexes, dest_indexes, PARROT_PASS_RESULTS);
- }
- argc = VTABLE_elements(interp, signature);
- goto OFFSET(argc + 2);
-}
-
-=item B<result_info>(out PMC)
-
-Returns the get_results signature PMC of the caller. This PMC is a
-FixedIntegerPMCArray. The number of elements of this PMC is equal to the number
-of return values that are expected. The individual bits per entry are
-specified in F<docs/pdds/pdd03_calling_conventions.pod>.
-
-=cut
-
-inline op result_info(out PMC) {
- /* Get context of callee from return continuation. */
- PMC * const cc = CONTEXT(interp)->current_cont;
- PMC *sig = NULL;
- if (cc && PMC_cont(cc)->to_ctx) {
- /* caller context has results */
- opcode_t * const results = PMC_cont(cc)->to_ctx->current_results;
- if (results) {
- /* get results PMC index and get PMC. */
- sig = PF_CONST(PMC_cont(cc)->seg, results[1])->u.key;
- }
- }
-
- /* If no elements, hand back empty array; otherwise PMC. */
- if (!sig)
- $1 = pmc_new(interp, enum_class_FixedIntegerArray);
- else
- $1 = sig;
-}
-
-=back
-
-=head2 Address manipulation
-
-=for clarity
-
-=cut
-
-=over 4
-
-=item B<set_addr>(out INT, inconst LABEL)
-
-Sets register $1 to the current address plus the offset $2.
-
-=item B<set_addr>(invar PMC, inconst LABEL)
-
-Sets PMC in register $1 to the current address plus the offset $2.
-
-=item B<set_addr>(invar PMC, invar LABEL)
-
-Sets PMC in register $1 to the absolute address $2 obtained from B<get_addr>.
-
-=item B<get_addr>(out INT, invar PMC)
-
-Sets $1 to the absolute address of the Sub PMC $2.
-
-=cut
-
-inline op set_addr(out INT, inconst LABEL) {
- $1 = PTR2OPCODE_T(CUR_OPCODE + $2);
-}
-
-inline op set_addr(invar PMC, inconst LABEL) {
- VTABLE_set_pointer(interp, $1, (CUR_OPCODE + $2));
-}
-
-inline op set_addr(invar PMC, invar LABEL) {
- VTABLE_set_pointer(interp, $1, (void*)$2);
-}
-
-inline op get_addr(out INT, invar PMC) {
- void *ptr = VTABLE_get_pointer(interp, $2);
- $1 = (INTVAL)ptr;
-}
-
-=back
-
-=cut
-
-########################################
-
-=head2 Concurrency operations
-
-=over 4
-
-=item B<schedule>(invar PMC)
-
-Register a task with the concurrency scheduler. Details about the task are
-stored within the task PMC.
-
-inline op schedule(invar PMC) {
- Parrot_cx_schedule_task(interp, $1);
-}
-
-=item B<addhandler>(invar PMC)
-
-Add an event or exception handler to the concurrency scheduler. Details about
-the handler are stored within the handler PMC.
-
-inline op addhandler(invar PMC) {
- Parrot_cx_add_handler(interp, $1);
-}
-
-=back
-
-=cut
-
-########################################
-
-=head2 Exception handling
-
-=over 4
-
-=item B<push_eh>(inconst LABEL)
-
-Create an exception handler for the given catch label and push it onto
-the exception handler stack.
-
-=item B<push_eh>(invar PMC)
-
-Push an invokable PMC onto the exception handler stack.
-
-=item B<pop_eh>()
-
-Pop the most recently placed exception off the handler stack.
-
-=item B<throw>(invar PMC)
-
-Throw the exception in $1.
-
-=item B<throwcc>(invar PMC)
-
-Throw the exception in $1 with current continuation. Identical to
-B<throw> in its one-argument form.
-
-=item B<throwcc>(invar PMC, invar PMC)
-
-Throw the exception in $1 with continuation from $2.
-
-=item B<rethrow>(invar PMC)
-
-Only valid inside an exception handler. Rethrow the exception $1.
-
-=item B<count_eh>(out INT)
-
-Get a count of currently active exception handlers on the stack.
-
-=item B<get_eh>(out PMC, in INT)
-
-Return the exception handler at I<index>. The index is an offset from the top
-of the stack, with '0' being the top.
-
-=item B<get_all_eh>(out PMC)
-
-Return an array of all current exception handlers.
-
-=item B<die>(in STR)
-=item B<die>(in PMC)
-
-Die with message $1
-
-=item B<die>(in INT, in INT)
-
-Die with severity $1 and error $2. If severity is .EXCEPT_DOOMED,
-call _exit($2). The latter isn't catchable.
-
-=item B<exit>(in INT)
-
-Exit the interpreter with exit_status $1. If you want to communicate an
-extended exit status, create an exception with severity B<EXCEPT_exit>
-and throw it.
-
-=item B<pushmark>(in INT)
-
-Push a mark labeled $1 onto the dynamic environment.
-
-=item B<popmark>(in INT)
-
-Pop all items off the dynamic environment to the given mark.
-
-=item B<pushaction>(invar PMC)
-
-Push the given Sub PMC $1 onto the dynamic environment. If the dynamic
-environment is unwound due to a C<popmark>, subroutine return, or an exception,
-the subroutine will be invoked with an integer argument: C<0> means a normal
-return; C<1> means an exception has been raised.
-
-=cut
-
-inline op push_eh(inconst LABEL) {
- PMC * const eh = pmc_new(interp, enum_class_Exception_Handler);
- VTABLE_set_pointer(interp, eh, CUR_OPCODE + $1);
- push_exception(interp, eh);
-}
-
-inline op push_eh(invar PMC) {
- push_exception(interp, $1);
-}
-
-inline op pop_eh() {
- pop_exception(interp);
-}
-
-inline op throw(invar PMC) :flow {
- opcode_t * const ret = expr NEXT();
- opcode_t * const dest = (opcode_t *)throw_exception(interp, $1, ret);
- goto ADDRESS(dest);
-}
-
-inline op throwcc(invar PMC) :flow {
- opcode_t * const ret = expr NEXT();
- opcode_t * const dest = (opcode_t *)throw_exception(interp, $1, ret);
- goto ADDRESS(dest);
-}
-
-inline op throwcc(invar PMC, invar PMC) :flow {
- opcode_t * const dest = (opcode_t *)throw_exception(interp, $1, $2);
- goto ADDRESS(dest);
-}
-
-inline op rethrow(invar PMC) :flow {
- opcode_t * const dest = (opcode_t *)rethrow_exception(interp, $1);
- goto ADDRESS(dest);
-}
-
-inline op count_eh(out INT) {
- $1 = count_exception_handlers(interp);
-}
-
-inline op get_eh(out PMC, in INT) {
- $1 = get_exception_handler(interp, $2);
-}
-
-inline op get_all_eh(out PMC) {
- $1 = get_all_exception_handlers(interp);
-}
-
-
-inline op die(in STR) :flow {
- do_str_exception(interp, $1);
-}
-
-inline op die(in PMC) :flow {
- do_pmc_exception(interp, $1);
-}
-
-inline op die(in INT, in INT) :flow {
- if ($1 == EXCEPT_doomed)
- _exit($2);
- do_exception(interp, $1, $2);
-}
-
-inline op exit(in INT) :flow {
- do_exception(interp, EXCEPT_exit, $1);
-}
-
-inline op pushmark(in INT) {
- Parrot_push_mark(interp, $1);
-}
-
-inline op popmark(in INT) {
- Parrot_pop_mark(interp, $1);
-}
-
-inline op pushaction(invar PMC) {
- Parrot_push_action(interp, $1);
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head2 Interpreter operations
-
-These operations inspect or modify the interpreter itself, possibly
-affecting its subsequent operation.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<debug>(in INT)
-
-If $1 is zero, turn off debugging. Otherwise turn debug flag $1 on.
-
-=cut
-
-inline op debug(in INT) :flow {
- if ($1 != 0) { Interp_debug_SET(interp, $1); }
- else { Interp_debug_CLEAR(interp, PARROT_ALL_DEBUG_FLAGS); }
- restart NEXT();
-}
-
-
-########################################
-
-=item B<bounds>(in INT)
-
-If $1 is zero, turn off byte code bounds checking. Otherwise turn it on.
-
-=cut
-
-inline op bounds(in INT) :flow {
- if ($1 != 0) { Parrot_set_flag(interp, PARROT_BOUNDS_FLAG); }
- else { Interp_flags_CLEAR(interp, PARROT_BOUNDS_FLAG); }
- restart NEXT();
-}
-
-
-########################################
-
-=item B<profile>(in INT)
-
-If $1 is zero, turn off profiling. Otherwise turn it on.
-
-=cut
-
-inline op profile(in INT) :flow {
- if ($1 != 0) { Parrot_set_flag(interp, PARROT_PROFILE_FLAG); }
- else { Interp_flags_CLEAR(interp, PARROT_PROFILE_FLAG); }
- restart NEXT();
-}
-
-
-########################################
-
-=item B<trace>(in INT)
-
-If $1 is zero, turn off tracing. Otherwise turn trace flag $1 on.
-
-=cut
-
-inline op trace(in INT) :flow {
- if ($1 != 0) { Parrot_set_trace(interp, $1); }
- else { Parrot_clear_trace(interp, PARROT_ALL_TRACE_FLAGS); }
- restart NEXT();
-}
-
-########################################
-
-=item B<gc_debug>(in INT)
-
-If $1 is zero, turn off GC_DEBUG. Otherwise turn it on.
-
-=cut
-
-inline op gc_debug(in INT) {
- if ($1 != 0) { Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG); }
- else { Interp_flags_CLEAR(interp, PARROT_GC_DEBUG_FLAG); }
-}
-
-########################################
-
-=item B<interpinfo>
-
-Fetch some piece of information about the interpreter and put it in $1.
-Possible values for $2 are defined in F<runtime/parrot/include/interpinfo.pasm>.
-The valid constants for each return value are:
-
-=over 4
-
-=item B<interpinfo>(out INT, in INT)
-
-.TOTAL_MEM_ALLOC, .DOD_RUNS, .COLLECT_RUNS, .ACTIVE_PMCS, .ACTIVE_BUFFERS,
-.TOTAL_PMCS, .TOTAL_BUFFERS, .HEADER_ALLOCS_SINCE_COLLECT,
-.MEM_ALLOCS_SINCE_COLLECT, .TOTAL_COPIED, .IMPATIENT_PMCS, .LAZY_DOD_RUNS,
-.EXTENDED_PMCS, .RUNCORE
-
-=item B<interpinfo>(out PMC, in INT)
-
-.CURRENT_SUB, .CURRENT_CONT, .CURRENT_OBJECT, .CURRENT_LEXPAD
-
-=item B<interpinfo>(out STR, in INT)
-
-.EXECUTABLE_FULLNAME, .EXECUTABLE_BASENAME, .RUNTIME_PREFIX
-
-=back
-
-=cut
-
-op interpinfo(out INT, in INT) {
- $1 = interpinfo(interp, $2);
-}
-
-op interpinfo(out PMC, in INT) {
- $1 = interpinfo_p(interp, $2);
-}
-
-op interpinfo(out STR, in INT) {
- $1 = interpinfo_s(interp, $2);
-}
-
-=item B<warningson>(in INT)
-
-Turns on warnings categories. Categories already turned on will stay on.
-Initial setting is currently all warnings off. Include F<warnings.pasm> to
-access the categories. They are:
-
-=over 4
-
-=item .PARROT_WARNINGS_UNDEF_FLAG
-
-=item .PARROT_WARNINGS_IO_FLAG
-
-=item .PARROT_WARNINGS_PLATFORM_FLAG
-
-=item .PARROT_WARNINGS_ALL_FLAG
-
-=back
-
-To turn on multiple categories, OR the category numbers together.
-
-=cut
-
-inline op warningson(in INT) {
- PARROT_WARNINGS_on(interp, $1);
-}
-
-=item B<warningsoff>(in INT)
-
-Turns off warnings categories. Categories already turned off will
-stay off. See the documentation for B<warningson> for category
-numbers.
-
-=cut
-
-inline op warningsoff(in INT) {
- PARROT_WARNINGS_off(interp, $1);
-}
-
-=item B<errorson>(in INT)
-
-Turns on error categories. Categories already turned on will stay on. To
-access these from PASM, include F<errors.pasm>. The current categories are:
-
-=over 4
-
-=item .PARROT_ERRORS_GLOBALS_FLAG
-
-Throw an exception if global doesn't exist. Default: on.
-
-=item .PARROT_ERRORS_OVERFLOW_FLAG
-
-Throw math overflow instead of promoting to BigInt. Default: off.
-
-=item .PARROT_ERRORS_PARAM_COUNT_FLAG
-
-Throw exception on argument <-> param count mismatch. Default: off.
-
-=item .PARROT_ERRORS_RESULT_COUNT_FLAG
-
-Throw exception on return <-> result count mismatch. Default: off.
-
-=item .PARROT_ERRORS_ALL_FLAG
-
-=back
-
-To turn on multiple categories, OR the category numbers together.
-
-=cut
-
-inline op errorson(in INT) {
- PARROT_ERRORS_on(interp, $1);
-}
-
-=item B<errorsoff>(in INT)
-
-Turns off errors categories. Categories already turned off will
-stay off. See the documentation for B<errorson> for category
-numbers.
-
-=cut
-
-inline op errorsoff(in INT) {
- PARROT_ERRORS_off(interp, $1);
-}
-
-########################################
-
-=item B<runinterp>(invar PMC, in LABEL)
-
-Run the code starting at offset $2 within interpreter $1.
-
-=item B<getinterp>(out PMC)
-
-Get the current ParrotInterpreter.
-
-=cut
-
-op runinterp(invar PMC, in LABEL) {
- Interp * const new_interp = (Interp *)PMC_data($1);
- Interp_flags_SET(new_interp, PARROT_EXTERN_CODE_FLAG);
- new_interp->code = interp->code;
- runops(new_interp, REL_PC + $2);
-}
-
-op getinterp(out PMC) {
- $1 = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
- IGLOBALS_INTERPRETER);
-}
-
-#######################################
-
-
-
-=back
-
-=cut
-
-###############################################################################
-
-=head2 Dead Object Detection/Garbage Collection
-
-Opcodes that interact with the DOD and GC subsystems.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<sweep>(inconst INT)
-
-Triggers a DOD run, based on the value of $1, where:
-
-=over
-
-=item * 0
-
-Trigger a DOD run only if there are things that have flagged themselves as
-really needing to be collected.
-
-=item * 1
-
-Trigger a dead object detection (DOD) sweep unconditionally.
-
-=back
-
-=cut
-
-op sweep(inconst INT) {
- if ($1)
- Parrot_do_dod_run(interp, 0);
- else
- if (interp->mem_pools->num_early_DOD_PMCs)
- Parrot_do_dod_run(interp, GC_lazy_FLAG);
-}
-
-=item B<collect>()
-
-Trigger a garbage collection.
-
-=cut
-
-op collect() {
- Parrot_go_collect(interp);
-}
-
-=item B<sweepoff>()
-
-Disable DOD sweeps. (Nestable)
-
-=cut
-
-op sweepoff() {
- Parrot_block_GC_mark(interp);
-}
-
-=item B<sweepon>()
-
-Re-enable DOD sweeps.
-
-=cut
-
-op sweepon() {
- Parrot_unblock_GC_mark(interp);
-}
-
-=item B<collectoff>()
-
-Disable GC runs (nestable).
-
-=cut
-
-op collectoff() {
- Parrot_block_GC_sweep(interp);
-}
-
-=item B<collecton>()
-
-Re-enable GC.
-
-=cut
-
-op collecton() {
- Parrot_unblock_GC_sweep(interp);
-}
-
-=item B<needs_destroy>(invar PMC)
-
-Mark the PMC wanting destruction as soon as possible, for example
-when unused during the lazy sweep, triggered by C<sweep 0>.
-
-=cut
-
-op needs_destroy(invar PMC) {
- PObj_needs_early_DOD_SET($1);
- ++interp->mem_pools->num_early_DOD_PMCs;
-}
-
-=back
-
-=head2 Native Call Interface
-
-Opcodes for interfacing with C functions in shared libraries.
-
-=over 4
-
-=cut
-
-########################################
-
-=item B<loadlib>(out PMC, in STR)
-
-Load a dynamic link library named $2 and store it in $1.
-
-=item B<dlfunc>(out PMC, invar PMC, in STR, in STR)
-
-Look up symbol $3 in library $2 with signature $4, and put the
-corresponding sub object in $1. Note that you need the signature so we
-can build or find an appropriate thunking function.
-
-=item B<dlvar>(out PMC, invar PMC, in STR)
-
-Look up symbol $3 in library $2. We assume that this is actually a
-variable address rather than a function address, and build an
-UnManagedStruct PMC and stick the address into its data pointer.
-
-=item B<compreg>(out PMC, in STR)
-
-Get the compiler object for source type $2. The returned compiler
-object should provide a C<compile> method for translating code
-in the source type. However, some Parrot compilers such as
-C<PIR> and C<PASM> currently return a sub that is to be
-invoked directly on the source.
-
-=item B<compreg>(in STR, invar PMC)
-
-Register $2 as the compiler object for source type $1.
-
-=item B<new_callback>(out PMC, invar PMC, invar PMC, in STR)
-
-Create a callback stub $1 for PASM subroutine $2 with userdata $3 and
-callback function signature $4. Only 2 argument signatures with
-signature chars I<U[1iscpt]> or I<[1iscpt]U> are handled currently.
-But these cover a lot of callback signatures. Please note that the
-userdata PMC I<U> has to be handled transparently by the caller of
-the callback function.
-
-=cut
-
-inline op loadlib(out PMC, in STR) {
- $1 = Parrot_load_lib(interp, $2, NULL);
-}
-
-op dlfunc(out PMC, invar PMC, in STR, in STR) {
- char * const name = string_to_cstring(interp, ($3));
- void *ptr = Parrot_dlsym(
- PMC_IS_NULL($2) ? NULL :
- VTABLE_defined(interp, $2) ? PMC_data($2) :
- NULL,
- name);
-
- funcptr_t p = D2FPTR(ptr);
-
- if (p == NULLfunc) {
- const char * err = Parrot_dlerror();
- Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
- "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
- $1 = pmc_new(interp, enum_class_Undef);
- }
- else {
- $1 = pmc_new(interp, enum_class_NCI);
- VTABLE_set_pointer_keyed_str(interp, $1, $4, F2DPTR(p));
- PObj_get_FLAGS($1) |= PObj_private1_FLAG;
- }
- Parrot_str_free_cstring(name);
-}
-
-op dlvar(out PMC, invar PMC, in STR) {
- char * const name = string_to_cstring(interp, ($3));
- void * const p = Parrot_dlsym(PMC_IS_NULL($2) ? NULL : PMC_data($2), name);
- Parrot_str_free_cstring(name);
- if (p == NULL) {
- const char * const err = Parrot_dlerror();
- Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
- "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
- $1 = pmc_new(interp, enum_class_Undef);
- }
- else {
- /* At this point we have the symbol's address. We just need to build
- a PMC with it so we can get and set the value */
- $1 = pmc_new(interp, enum_class_UnManagedStruct);
- PMC_data($1) = p;
- }
-}
-
-inline op compreg(in STR, invar PMC) {
- PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
- interp->iglobals, IGLOBALS_COMPREG_HASH);
- VTABLE_set_pmc_keyed_str(interp, compreg_hash, $1, $2);
-}
-
-inline op compreg(out PMC, in STR) {
- PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
- interp->iglobals, IGLOBALS_COMPREG_HASH);
- $1 = VTABLE_get_pmc_keyed_str(interp, compreg_hash, $2);
-}
-
-op new_callback(out PMC, invar PMC, invar PMC, in STR) {
- $1 = Parrot_make_cb(interp, $2, $3, $4);
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head1 COPYRIGHT
-
-Copyright (C) 2001-2008, Parrot Foundation.
-
-=head1 LICENSE
-
-This program is free software. It is subject to the same license
-as the Parrot interpreter itself.
-
-=cut
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Deleted: branches/ops_massacre/t/tools/ops2pm/samples/ops_num.original
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/samples/ops_num.original Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,1223 +0,0 @@
-# This file provides opcode name->number mapping, so we can nail down
-# the op numbers for the core opcodes and provide
-# backward-compatibility for bytecode.
-#
-# The format of this file is simple:
-#
-# opcode_name (whitespace) opcode_number
-#
-# The opcode name is the full and complete name of the
-# opcode--i.e. for the "add N1, N2, N3" op the name is add_n_n_n, not
-# add.
-#
-# once an opcode is added to this file it should never be
-# removed. Opcodes that are in here but that have no corresponding
-# function backing them (because, for example, they've been deleted,
-# which shouldn't ever happen once we hit production) should be mapped
-# by the ops processing programs to an exception op
-#
-# The numbering of opcodes whose names are *not* in this file begins
-# immediately after the highest-numbered opcode in this file,
-# regardless of what order it is found in. There should be *no* holes
-# in the numbering!
-
-# Please note that only opcodes from experimental.ops are included
-# in the core.pm, if they are missing here.
-
-# Note that end must always be op 0.
-end 0
-# the following ops are enums in oplib.h
-noop 1
-cpu_ret 2
-check_events 3
-check_events__ 4
-wrapper__ 5
-prederef__ 6
-reserved_ic 7
-###DYNAMIC### other ops
-load_bytecode_s 8
-load_bytecode_sc 9
-branch_i 10
-branch_ic 11
-branch_cs_s 12
-branch_cs_sc 13
-bsr_i 14
-bsr_ic 15
-ret 16
-jsr_i 17
-jsr_ic 18
-jump_i 19
-jump_ic 20
-enternative 21
-if_i_ic 22
-if_n_ic 23
-if_s_ic 24
-if_p_ic 25
-unless_i_ic 26
-unless_n_ic 27
-unless_s_ic 28
-unless_p_ic 29
-invokecc_p 30
-invoke_p_p 31
-yield 32
-tailcall_p 33
-returncc 34
-newclosure_p_p 35
-set_args_pc 36
-get_results_pc 37
-get_params_pc 38
-set_returns_pc 39
-result_info_p 40
-set_addr_i_ic 41
-set_addr_p_ic 42
-set_addr_p_i 43
-get_addr_i_p 44
-schedule_p 45
-addhandler_p 46
-push_eh_ic 47
-push_eh_p 48
-pop_eh 49
-throw_p 50
-rethrow_p 51
-count_eh_i 52
-get_eh_p_i 53
-get_eh_p_ic 54
-get_all_eh_p 55
-die_s 56
-die_sc 57
-die_p 58
-die_pc 59
-die_i_i 60
-die_ic_i 61
-die_i_ic 62
-die_ic_ic 63
-exit_i 64
-exit_ic 65
-pushmark_i 66
-pushmark_ic 67
-popmark_i 68
-popmark_ic 69
-pushaction_p 70
-debug_i 71
-debug_ic 72
-bounds_i 73
-bounds_ic 74
-profile_i 75
-profile_ic 76
-trace_i 77
-trace_ic 78
-gc_debug_i 79
-gc_debug_ic 80
-interpinfo_i_i 81
-interpinfo_i_ic 82
-interpinfo_p_i 83
-interpinfo_p_ic 84
-interpinfo_s_i 85
-interpinfo_s_ic 86
-warningson_i 87
-warningson_ic 88
-warningsoff_i 89
-warningsoff_ic 90
-errorson_i 91
-errorson_ic 92
-errorsoff_i 93
-errorsoff_ic 94
-runinterp_p_i 95
-runinterp_p_ic 96
-getinterp_p 97
-sweep_ic 98
-collect 99
-sweepoff 100
-sweepon 101
-collectoff 102
-collecton 103
-needs_destroy_p 104
-loadlib_p_s 105
-loadlib_p_sc 106
-dlfunc_p_p_s_s 107
-dlfunc_p_p_sc_s 108
-dlfunc_p_p_s_sc 109
-dlfunc_p_p_sc_sc 110
-dlvar_p_p_s 111
-dlvar_p_p_sc 112
-compreg_s_p 113
-compreg_sc_p 114
-compreg_p_s 115
-compreg_p_sc 116
-new_callback_p_p_p_s 117
-new_callback_p_p_p_sc 118
-band_i_i 119
-band_i_ic 120
-band_i_i_i 121
-band_i_ic_i 122
-band_i_i_ic 123
-bands_s_s 124
-bands_s_sc 125
-bands_s_s_s 126
-bands_s_sc_s 127
-bands_s_s_sc 128
-bnot_i 129
-bnot_i_i 130
-bnot_p 131
-bnot_p_p 132
-n_bnot_p_p 133
-bnots_s 134
-bnots_s_s 135
-bnots_s_sc 136
-bnots_p 137
-bnots_p_p 138
-n_bnots_p_p 139
-bor_i_i 140
-bor_i_ic 141
-bor_i_i_i 142
-bor_i_ic_i 143
-bor_i_i_ic 144
-bors_s_s 145
-bors_s_sc 146
-bors_s_s_s 147
-bors_s_sc_s 148
-bors_s_s_sc 149
-shl_i_i 150
-shl_i_ic 151
-shl_i_i_i 152
-shl_i_ic_i 153
-shl_i_i_ic 154
-shr_i_i 155
-shr_i_ic 156
-shr_i_i_i 157
-shr_i_ic_i 158
-shr_i_i_ic 159
-lsr_i_i 160
-lsr_i_ic 161
-lsr_i_i_i 162
-lsr_i_ic_i 163
-lsr_i_i_ic 164
-rot_i_i_i_ic 165
-rot_i_ic_i_ic 166
-rot_i_i_ic_ic 167
-bxor_i_i 168
-bxor_i_ic 169
-bxor_i_i_i 170
-bxor_i_ic_i 171
-bxor_i_i_ic 172
-bxors_s_s 173
-bxors_s_sc 174
-bxors_s_s_s 175
-bxors_s_sc_s 176
-bxors_s_s_sc 177
-eq_i_i_ic 178
-eq_ic_i_ic 179
-eq_i_ic_ic 180
-eq_n_n_ic 181
-eq_nc_n_ic 182
-eq_n_nc_ic 183
-eq_s_s_ic 184
-eq_sc_s_ic 185
-eq_s_sc_ic 186
-eq_p_p_ic 187
-eq_p_i_ic 188
-eq_p_ic_ic 189
-eq_p_n_ic 190
-eq_p_nc_ic 191
-eq_p_s_ic 192
-eq_p_sc_ic 193
-eq_str_p_p_ic 194
-eq_num_p_p_ic 195
-eq_addr_s_s_ic 196
-eq_addr_sc_s_ic 197
-eq_addr_s_sc_ic 198
-eq_addr_sc_sc_ic 199
-eq_addr_p_p_ic 200
-ne_i_i_ic 201
-ne_ic_i_ic 202
-ne_i_ic_ic 203
-ne_n_n_ic 204
-ne_nc_n_ic 205
-ne_n_nc_ic 206
-ne_s_s_ic 207
-ne_sc_s_ic 208
-ne_s_sc_ic 209
-ne_p_p_ic 210
-ne_p_i_ic 211
-ne_p_ic_ic 212
-ne_p_n_ic 213
-ne_p_nc_ic 214
-ne_p_s_ic 215
-ne_p_sc_ic 216
-ne_str_p_p_ic 217
-ne_num_p_p_ic 218
-ne_addr_s_s_ic 219
-ne_addr_sc_s_ic 220
-ne_addr_s_sc_ic 221
-ne_addr_sc_sc_ic 222
-ne_addr_p_p_ic 223
-lt_i_i_ic 224
-lt_ic_i_ic 225
-lt_i_ic_ic 226
-lt_n_n_ic 227
-lt_nc_n_ic 228
-lt_n_nc_ic 229
-lt_s_s_ic 230
-lt_sc_s_ic 231
-lt_s_sc_ic 232
-lt_p_p_ic 233
-lt_p_i_ic 234
-lt_p_ic_ic 235
-lt_p_n_ic 236
-lt_p_nc_ic 237
-lt_p_s_ic 238
-lt_p_sc_ic 239
-lt_str_p_p_ic 240
-lt_num_p_p_ic 241
-le_i_i_ic 242
-le_ic_i_ic 243
-le_i_ic_ic 244
-le_n_n_ic 245
-le_nc_n_ic 246
-le_n_nc_ic 247
-le_s_s_ic 248
-le_sc_s_ic 249
-le_s_sc_ic 250
-le_p_p_ic 251
-le_p_i_ic 252
-le_p_ic_ic 253
-le_p_n_ic 254
-le_p_nc_ic 255
-le_p_s_ic 256
-le_p_sc_ic 257
-le_str_p_p_ic 258
-le_num_p_p_ic 259
-gt_p_p_ic 260
-gt_p_i_ic 261
-gt_p_ic_ic 262
-gt_p_n_ic 263
-gt_p_nc_ic 264
-gt_p_s_ic 265
-gt_p_sc_ic 266
-gt_str_p_p_ic 267
-gt_num_p_p_ic 268
-ge_p_p_ic 269
-ge_p_i_ic 270
-ge_p_ic_ic 271
-ge_p_n_ic 272
-ge_p_nc_ic 273
-ge_p_s_ic 274
-ge_p_sc_ic 275
-ge_str_p_p_ic 276
-ge_num_p_p_ic 277
-if_null_p_ic 278
-if_null_s_ic 279
-unless_null_p_ic 280
-unless_null_s_ic 281
-cmp_i_i_i 282
-cmp_i_ic_i 283
-cmp_i_i_ic 284
-cmp_i_n_n 285
-cmp_i_nc_n 286
-cmp_i_n_nc 287
-cmp_i_s_s 288
-cmp_i_sc_s 289
-cmp_i_s_sc 290
-cmp_i_p_p 291
-cmp_i_p_i 292
-cmp_i_p_ic 293
-cmp_i_p_n 294
-cmp_i_p_nc 295
-cmp_i_p_s 296
-cmp_i_p_sc 297
-cmp_str_i_p_p 298
-cmp_num_i_p_p 299
-issame_i_p_p 300
-issame_i_s_s 301
-issame_i_sc_s 302
-issame_i_s_sc 303
-issame_i_sc_sc 304
-isntsame_i_p_p 305
-isntsame_i_s_s 306
-isntsame_i_sc_s 307
-isntsame_i_s_sc 308
-isntsame_i_sc_sc 309
-istrue_i_p 310
-isfalse_i_p 311
-isnull_i_p 312
-isnull_i_pc 313
-isgt_i_p_p 314
-isge_i_p_p 315
-isle_i_i_i 316
-isle_i_ic_i 317
-isle_i_i_ic 318
-isle_i_n_n 319
-isle_i_nc_n 320
-isle_i_n_nc 321
-isle_i_s_s 322
-isle_i_sc_s 323
-isle_i_s_sc 324
-isle_i_p_p 325
-islt_i_i_i 326
-islt_i_ic_i 327
-islt_i_i_ic 328
-islt_i_n_n 329
-islt_i_nc_n 330
-islt_i_n_nc 331
-islt_i_s_s 332
-islt_i_sc_s 333
-islt_i_s_sc 334
-islt_i_p_p 335
-iseq_i_i_i 336
-iseq_i_ic_i 337
-iseq_i_i_ic 338
-iseq_i_n_n 339
-iseq_i_nc_n 340
-iseq_i_n_nc 341
-iseq_i_s_s 342
-iseq_i_sc_s 343
-iseq_i_s_sc 344
-iseq_i_p_p 345
-isne_i_i_i 346
-isne_i_ic_i 347
-isne_i_i_ic 348
-isne_i_n_n 349
-isne_i_nc_n 350
-isne_i_n_nc 351
-isne_i_s_s 352
-isne_i_sc_s 353
-isne_i_s_sc 354
-isne_i_p_p 355
-and_i_i_i 356
-and_i_ic_i 357
-and_i_i_ic 358
-not_i 359
-not_i_i 360
-not_p 361
-not_p_p 362
-n_not_p_p 363
-or_i_i_i 364
-or_i_ic_i 365
-or_i_i_ic 366
-xor_i_i_i 367
-xor_i_ic_i 368
-xor_i_i_ic 369
-debug_init 370
-debug_load_sc 371
-debug_break 372
-debug_print 373
-backtrace 374
-getline_i 375
-getfile_s 376
-close_p 377
-fdopen_p_i_s 378
-fdopen_p_ic_s 379
-fdopen_p_i_sc 380
-fdopen_p_ic_sc 381
-getfd_i_p 382
-getstdin_p 383
-getstdout_p 384
-getstderr_p 385
-pioctl_i_p_i_i 386
-pioctl_i_p_ic_i 387
-pioctl_i_p_i_ic 388
-pioctl_i_p_ic_ic 389
-open_p_s_s 390
-open_p_sc_s 391
-open_p_s_sc 392
-open_p_sc_sc 393
-open_p_s 394
-open_p_sc 395
-print_i 396
-print_ic 397
-print_n 398
-print_nc 399
-print_s 400
-print_sc 401
-print_p 402
-printerr_i 403
-printerr_ic 404
-printerr_n 405
-printerr_nc 406
-printerr_s 407
-printerr_sc 408
-printerr_p 409
-print_p_i 410
-print_p_ic 411
-print_p_n 412
-print_p_nc 413
-print_p_s 414
-print_p_sc 415
-print_p_p 416
-read_s_i 417
-read_s_ic 418
-read_s_p_i 419
-read_s_p_ic 420
-readline_s_p 421
-peek_s 422
-peek_s_p 423
-stat_i_s_i 424
-stat_i_sc_i 425
-stat_i_s_ic 426
-stat_i_sc_ic 427
-stat_i_i_i 428
-stat_i_ic_i 429
-stat_i_i_ic 430
-stat_i_ic_ic 431
-seek_p_i_i 432
-seek_p_ic_i 433
-seek_p_i_ic 434
-seek_p_ic_ic 435
-seek_p_i_i_i 436
-seek_p_ic_i_i 437
-seek_p_i_ic_i 438
-seek_p_ic_ic_i 439
-seek_p_i_i_ic 440
-seek_p_ic_i_ic 441
-seek_p_i_ic_ic 442
-seek_p_ic_ic_ic 443
-tell_i_p 444
-tell_i_i_p 445
-socket_p_i_i_i 446
-socket_p_ic_i_i 447
-socket_p_i_ic_i 448
-socket_p_ic_ic_i 449
-socket_p_i_i_ic 450
-socket_p_ic_i_ic 451
-socket_p_i_ic_ic 452
-socket_p_ic_ic_ic 453
-sockaddr_s_i_s 454
-sockaddr_s_ic_s 455
-sockaddr_s_i_sc 456
-sockaddr_s_ic_sc 457
-connect_i_p_s 458
-connect_i_p_sc 459
-recv_i_p_s 460
-send_i_p_s 461
-send_i_p_sc 462
-poll_i_p_i_i_i 463
-poll_i_p_ic_i_i 464
-poll_i_p_i_ic_i 465
-poll_i_p_ic_ic_i 466
-poll_i_p_i_i_ic 467
-poll_i_p_ic_i_ic 468
-poll_i_p_i_ic_ic 469
-poll_i_p_ic_ic_ic 470
-bind_i_p_s 471
-bind_i_p_sc 472
-listen_i_p_i 473
-listen_i_p_ic 474
-accept_p_p 475
-infix_ic_p_i 476
-infix_ic_p_ic 477
-infix_ic_p_n 478
-infix_ic_p_nc 479
-infix_ic_p_s 480
-infix_ic_p_sc 481
-infix_ic_p_p 482
-infix_ic_p_p_i 483
-infix_ic_p_p_ic 484
-infix_ic_p_p_n 485
-infix_ic_p_p_nc 486
-infix_ic_p_p_s 487
-infix_ic_p_p_sc 488
-infix_ic_p_p_p 489
-n_infix_ic_p_p_i 490
-n_infix_ic_p_p_ic 491
-n_infix_ic_p_p_n 492
-n_infix_ic_p_p_nc 493
-n_infix_ic_p_p_s 494
-n_infix_ic_p_p_sc 495
-n_infix_ic_p_p_p 496
-abs_i 497
-abs_n 498
-abs_i_i 499
-abs_n_n 500
-abs_p 501
-abs_p_p 502
-n_abs_p_p 503
-add_i_i 504
-add_i_ic 505
-add_n_n 506
-add_n_nc 507
-add_i_i_i 508
-add_i_ic_i 509
-add_i_i_ic 510
-add_n_n_n 511
-add_n_nc_n 512
-add_n_n_nc 513
-cmod_i_i_i 514
-cmod_i_ic_i 515
-cmod_i_i_ic 516
-cmod_n_n_n 517
-cmod_n_nc_n 518
-cmod_n_n_nc 519
-dec_i 520
-dec_n 521
-dec_p 522
-div_i_i 523
-div_i_ic 524
-div_n_n 525
-div_n_nc 526
-div_i_i_i 527
-div_i_ic_i 528
-div_i_i_ic 529
-div_i_ic_ic 530
-div_n_n_n 531
-div_n_nc_n 532
-div_n_n_nc 533
-div_n_nc_nc 534
-fdiv_i_i 535
-fdiv_i_ic 536
-fdiv_n_n 537
-fdiv_n_nc 538
-fdiv_i_i_i 539
-fdiv_i_ic_i 540
-fdiv_i_i_ic 541
-fdiv_n_n_n 542
-fdiv_n_nc_n 543
-fdiv_n_n_nc 544
-ceil_n 545
-ceil_i_n 546
-ceil_n_n 547
-floor_n 548
-floor_i_n 549
-floor_n_n 550
-inc_i 551
-inc_n 552
-inc_p 553
-mod_i_i 554
-mod_i_ic 555
-mod_i_i_i 556
-mod_i_ic_i 557
-mod_i_i_ic 558
-mod_n_n_n 559
-mod_n_nc_n 560
-mod_n_n_nc 561
-mod_n_n 562
-mod_n_nc 563
-mul_i_i 564
-mul_i_ic 565
-mul_n_n 566
-mul_n_nc 567
-mul_i_i_i 568
-mul_i_ic_i 569
-mul_i_i_ic 570
-mul_n_n_n 571
-mul_n_nc_n 572
-mul_n_n_nc 573
-neg_i 574
-neg_n 575
-neg_p 576
-neg_i_i 577
-neg_n_n 578
-neg_p_p 579
-n_neg_p_p 580
-pow_n_n_n 581
-pow_n_nc_n 582
-pow_n_n_nc 583
-sub_i_i 584
-sub_i_ic 585
-sub_n_n 586
-sub_n_nc 587
-sub_i_i_i 588
-sub_i_ic_i 589
-sub_i_i_ic 590
-sub_n_n_n 591
-sub_n_nc_n 592
-sub_n_n_nc 593
-sqrt_n_n 594
-acos_n_n 595
-asec_n_n 596
-asin_n_n 597
-atan_n_n 598
-atan_n_n_n 599
-atan_n_nc_n 600
-atan_n_n_nc 601
-cos_n_n 602
-cosh_n_n 603
-exp_n_n 604
-ln_n_n 605
-log10_n_n 606
-log2_n_n 607
-sec_n_n 608
-sech_n_n 609
-sin_n_n 610
-sinh_n_n 611
-tan_n_n 612
-tanh_n_n 613
-gcd_i_i_i 614
-gcd_i_ic_i 615
-gcd_i_i_ic 616
-lcm_i_i_i 617
-lcm_i_ic_i 618
-lcm_i_i_ic 619
-fact_i_i 620
-fact_n_i 621
-callmethodcc_p_s 622
-callmethodcc_p_sc 623
-callmethodcc_p_p 624
-callmethod_p_s_p 625
-callmethod_p_sc_p 626
-callmethod_p_p_p 627
-tailcallmethod_p_s 628
-tailcallmethod_p_sc 629
-tailcallmethod_p_p 630
-addmethod_p_s_p 631
-addmethod_p_sc_p 632
-can_i_p_s 633
-can_i_p_sc 634
-does_i_p_s 635
-does_i_p_sc 636
-does_i_p_p 637
-does_i_p_pc 638
-isa_i_p_s 639
-isa_i_p_sc 640
-isa_i_p_p 641
-isa_i_p_pc 642
-newclass_p_s 643
-newclass_p_sc 644
-newclass_p_p 645
-newclass_p_pc 646
-subclass_p_p 647
-subclass_p_pc 648
-subclass_p_p_s 649
-subclass_p_pc_s 650
-subclass_p_p_sc 651
-subclass_p_pc_sc 652
-subclass_p_p_p 653
-subclass_p_pc_p 654
-subclass_p_p_pc 655
-subclass_p_pc_pc 656
-subclass_p_s 657
-subclass_p_sc 658
-subclass_p_s_s 659
-subclass_p_sc_s 660
-subclass_p_s_sc 661
-subclass_p_sc_sc 662
-subclass_p_s_p 663
-subclass_p_sc_p 664
-subclass_p_s_pc 665
-subclass_p_sc_pc 666
-getclass_p_s 667
-getclass_p_sc 668
-getclass_p_p 669
-getclass_p_pc 670
-get_class_p_s 671
-get_class_p_sc 672
-get_class_p_p 673
-get_class_p_pc 674
-class_p_p 675
-addparent_p_p 676
-removeparent_p_p 677
-addrole_p_p 678
-addattribute_p_s 679
-addattribute_p_sc 680
-removeattribute_p_s 681
-removeattribute_p_sc 682
-removeattribute_p_i 683
-removeattribute_p_ic 684
-getattribute_p_p_s 685
-getattribute_p_p_sc 686
-getattribute_p_p_p_s 687
-getattribute_p_p_pc_s 688
-getattribute_p_p_p_sc 689
-getattribute_p_p_pc_sc 690
-setattribute_p_s_p 691
-setattribute_p_sc_p 692
-setattribute_p_p_s_p 693
-setattribute_p_pc_s_p 694
-setattribute_p_p_sc_p 695
-setattribute_p_pc_sc_p 696
-inspect_p_p 697
-inspect_p_pc 698
-inspect_p_p_s 699
-inspect_p_pc_s 700
-inspect_p_p_sc 701
-inspect_p_pc_sc 702
-pic_infix___ic_p_p 703
-pic_inline_sub___ic_p_p 704
-pic_get_params___pc 705
-pic_set_returns___pc 706
-pic_callr___pc 707
-new_p_i 708
-new_p_ic 709
-new_p_i_p 710
-new_p_ic_p 711
-new_p_i_pc 712
-new_p_ic_pc 713
-new_p_s 714
-new_p_sc 715
-new_p_s_p 716
-new_p_sc_p 717
-new_p_s_pc 718
-new_p_sc_pc 719
-new_p_p 720
-new_p_pc 721
-new_p_p_p 722
-new_p_pc_p 723
-new_p_p_pc 724
-new_p_pc_pc 725
-typeof_s_p 726
-typeof_p_p 727
-typeof_i_p 728
-typeof_i_p_k 729
-typeof_i_p_kc 730
-typeof_i_p_ki 731
-typeof_i_p_kic 732
-typeof_s_i 733
-typeof_s_ic 734
-find_type_i_s 735
-find_type_i_sc 736
-find_type_i_p 737
-find_type_i_pc 738
-valid_type_i_i 739
-valid_type_i_ic 740
-get_repr_s_p 741
-find_method_p_p_s 742
-find_method_p_p_sc 743
-defined_i_p 744
-defined_i_p_ki 745
-defined_i_p_kic 746
-defined_i_p_k 747
-defined_i_p_kc 748
-exists_i_p_ki 749
-exists_i_p_kic 750
-exists_i_p_k 751
-exists_i_p_kc 752
-delete_p_k 753
-delete_p_kc 754
-delete_p_ki 755
-delete_p_kic 756
-elements_i_p 757
-push_p_i 758
-push_p_ic 759
-push_p_n 760
-push_p_nc 761
-push_p_s 762
-push_p_sc 763
-push_p_p 764
-pop_i_p 765
-pop_n_p 766
-pop_s_p 767
-pop_p_p 768
-unshift_p_i 769
-unshift_p_ic 770
-unshift_p_n 771
-unshift_p_nc 772
-unshift_p_s 773
-unshift_p_sc 774
-unshift_p_p 775
-shift_i_p 776
-shift_n_p 777
-shift_s_p 778
-shift_p_p 779
-setprop_p_s_p 780
-setprop_p_sc_p 781
-getprop_p_s_p 782
-getprop_p_sc_p 783
-delprop_p_s 784
-delprop_p_sc 785
-prophash_p_p 786
-freeze_s_p 787
-thaw_p_s 788
-thaw_p_sc 789
-mmdvtregister_i_i_i_p 790
-mmdvtregister_ic_i_i_p 791
-mmdvtregister_i_ic_i_p 792
-mmdvtregister_ic_ic_i_p 793
-mmdvtregister_i_i_ic_p 794
-mmdvtregister_ic_i_ic_p 795
-mmdvtregister_i_ic_ic_p 796
-mmdvtregister_ic_ic_ic_p 797
-mmdvtfind_p_i_i_i 798
-mmdvtfind_p_ic_i_i 799
-mmdvtfind_p_i_ic_i 800
-mmdvtfind_p_ic_ic_i 801
-mmdvtfind_p_i_i_ic 802
-mmdvtfind_p_ic_i_ic 803
-mmdvtfind_p_i_ic_ic 804
-mmdvtfind_p_ic_ic_ic 805
-register_p 806
-unregister_p 807
-get_mro_p_p 808
-clone_s_s 809
-clone_s_sc 810
-exchange_i_i 811
-exchange_p_p 812
-exchange_n_n 813
-exchange_s_s 814
-set_i_i 815
-set_i_ic 816
-set_i_n 817
-set_i_nc 818
-set_i_s 819
-set_i_sc 820
-set_n_n 821
-set_n_nc 822
-set_n_i 823
-set_n_ic 824
-set_n_s 825
-set_n_sc 826
-set_n_p 827
-set_s_p 828
-set_s_s 829
-set_s_sc 830
-set_s_i 831
-set_s_ic 832
-set_s_n 833
-set_s_nc 834
-set_p_pc 835
-set_p_p 836
-set_p_i 837
-set_p_ic 838
-set_p_n 839
-set_p_nc 840
-set_p_s 841
-set_p_sc 842
-set_i_p 843
-assign_p_p 844
-assign_p_i 845
-assign_p_ic 846
-assign_p_n 847
-assign_p_nc 848
-assign_p_s 849
-assign_p_sc 850
-assign_s_s 851
-assign_s_sc 852
-setref_p_p 853
-deref_p_p 854
-setp_ind_i_p 855
-setp_ind_ic_p 856
-setn_ind_i_n 857
-setn_ind_ic_n 858
-setn_ind_i_nc 859
-setn_ind_ic_nc 860
-sets_ind_i_s 861
-sets_ind_ic_s 862
-sets_ind_i_sc 863
-sets_ind_ic_sc 864
-seti_ind_i_i 865
-seti_ind_ic_i 866
-seti_ind_i_ic 867
-seti_ind_ic_ic 868
-set_p_ki_i 869
-set_p_kic_i 870
-set_p_ki_ic 871
-set_p_kic_ic 872
-set_p_ki_n 873
-set_p_kic_n 874
-set_p_ki_nc 875
-set_p_kic_nc 876
-set_p_ki_s 877
-set_p_kic_s 878
-set_p_ki_sc 879
-set_p_kic_sc 880
-set_p_ki_p 881
-set_p_kic_p 882
-set_i_p_ki 883
-set_i_p_kic 884
-set_n_p_ki 885
-set_n_p_kic 886
-set_s_p_ki 887
-set_s_p_kic 888
-set_p_p_ki 889
-set_p_p_kic 890
-set_p_k_i 891
-set_p_kc_i 892
-set_p_k_ic 893
-set_p_kc_ic 894
-set_p_k_n 895
-set_p_kc_n 896
-set_p_k_nc 897
-set_p_kc_nc 898
-set_p_k_s 899
-set_p_kc_s 900
-set_p_k_sc 901
-set_p_kc_sc 902
-set_p_k_p 903
-set_p_kc_p 904
-set_i_p_k 905
-set_i_p_kc 906
-set_n_p_k 907
-set_n_p_kc 908
-set_s_p_k 909
-set_s_p_kc 910
-set_p_p_k 911
-set_p_p_kc 912
-clone_p_p 913
-clone_p_p_p 914
-clone_p_p_pc 915
-copy_p_p 916
-null_s 917
-null_i 918
-null_p 919
-null_n 920
-cleari 921
-clearn 922
-clears 923
-clearp 924
-ord_i_s 925
-ord_i_sc 926
-ord_i_s_i 927
-ord_i_sc_i 928
-ord_i_s_ic 929
-ord_i_sc_ic 930
-chr_s_i 931
-chr_s_ic 932
-chopn_s_i 933
-chopn_s_ic 934
-chopn_s_s_i 935
-chopn_s_sc_i 936
-chopn_s_s_ic 937
-chopn_s_sc_ic 938
-concat_s_s 939
-concat_s_sc 940
-concat_s_s_s 941
-concat_s_sc_s 942
-concat_s_s_sc 943
-repeat_s_s_i 944
-repeat_s_sc_i 945
-repeat_s_s_ic 946
-repeat_s_sc_ic 947
-length_i_s 948
-length_i_sc 949
-bytelength_i_s 950
-bytelength_i_sc 951
-pin_s 952
-unpin_s 953
-substr_s_s_i 954
-substr_s_sc_i 955
-substr_s_s_ic 956
-substr_s_sc_ic 957
-substr_s_s_i_i 958
-substr_s_sc_i_i 959
-substr_s_s_ic_i 960
-substr_s_sc_ic_i 961
-substr_s_s_i_ic 962
-substr_s_sc_i_ic 963
-substr_s_s_ic_ic 964
-substr_s_sc_ic_ic 965
-substr_s_s_i_i_s 966
-substr_s_s_ic_i_s 967
-substr_s_s_i_ic_s 968
-substr_s_s_ic_ic_s 969
-substr_s_s_i_i_sc 970
-substr_s_s_ic_i_sc 971
-substr_s_s_i_ic_sc 972
-substr_s_s_ic_ic_sc 973
-substr_s_i_i_s 974
-substr_s_ic_i_s 975
-substr_s_i_ic_s 976
-substr_s_ic_ic_s 977
-substr_s_i_i_sc 978
-substr_s_ic_i_sc 979
-substr_s_i_ic_sc 980
-substr_s_ic_ic_sc 981
-substr_s_p_i_i 982
-substr_s_p_ic_i 983
-substr_s_p_i_ic 984
-substr_s_p_ic_ic 985
-index_i_s_s 986
-index_i_sc_s 987
-index_i_s_sc 988
-index_i_sc_sc 989
-index_i_s_s_i 990
-index_i_sc_s_i 991
-index_i_s_sc_i 992
-index_i_sc_sc_i 993
-index_i_s_s_ic 994
-index_i_sc_s_ic 995
-index_i_s_sc_ic 996
-index_i_sc_sc_ic 997
-sprintf_s_s_p 998
-sprintf_s_sc_p 999
-sprintf_p_p_p 1000
-new_s 1001
-new_s_i 1002
-new_s_ic 1003
-stringinfo_i_s_i 1004
-stringinfo_i_sc_i 1005
-stringinfo_i_s_ic 1006
-stringinfo_i_sc_ic 1007
-upcase_s_s 1008
-upcase_s_sc 1009
-upcase_s 1010
-downcase_s_s 1011
-downcase_s_sc 1012
-downcase_s 1013
-titlecase_s_s 1014
-titlecase_s_sc 1015
-titlecase_s 1016
-join_s_s_p 1017
-join_s_sc_p 1018
-split_p_s_s 1019
-split_p_sc_s 1020
-split_p_s_sc 1021
-split_p_sc_sc 1022
-charset_i_s 1023
-charset_i_sc 1024
-charsetname_s_i 1025
-charsetname_s_ic 1026
-find_charset_i_s 1027
-find_charset_i_sc 1028
-trans_charset_s_i 1029
-trans_charset_s_ic 1030
-trans_charset_s_s_i 1031
-trans_charset_s_sc_i 1032
-trans_charset_s_s_ic 1033
-trans_charset_s_sc_ic 1034
-encoding_i_s 1035
-encoding_i_sc 1036
-encodingname_s_i 1037
-encodingname_s_ic 1038
-find_encoding_i_s 1039
-find_encoding_i_sc 1040
-trans_encoding_s_i 1041
-trans_encoding_s_ic 1042
-trans_encoding_s_s_i 1043
-trans_encoding_s_sc_i 1044
-trans_encoding_s_s_ic 1045
-trans_encoding_s_sc_ic 1046
-is_cclass_i_i_s_i 1047
-is_cclass_i_ic_s_i 1048
-is_cclass_i_i_sc_i 1049
-is_cclass_i_ic_sc_i 1050
-is_cclass_i_i_s_ic 1051
-is_cclass_i_ic_s_ic 1052
-is_cclass_i_i_sc_ic 1053
-is_cclass_i_ic_sc_ic 1054
-find_cclass_i_i_s_i_i 1055
-find_cclass_i_ic_s_i_i 1056
-find_cclass_i_i_sc_i_i 1057
-find_cclass_i_ic_sc_i_i 1058
-find_cclass_i_i_s_ic_i 1059
-find_cclass_i_ic_s_ic_i 1060
-find_cclass_i_i_sc_ic_i 1061
-find_cclass_i_ic_sc_ic_i 1062
-find_cclass_i_i_s_i_ic 1063
-find_cclass_i_ic_s_i_ic 1064
-find_cclass_i_i_sc_i_ic 1065
-find_cclass_i_ic_sc_i_ic 1066
-find_cclass_i_i_s_ic_ic 1067
-find_cclass_i_ic_s_ic_ic 1068
-find_cclass_i_i_sc_ic_ic 1069
-find_cclass_i_ic_sc_ic_ic 1070
-find_not_cclass_i_i_s_i_i 1071
-find_not_cclass_i_ic_s_i_i 1072
-find_not_cclass_i_i_sc_i_i 1073
-find_not_cclass_i_ic_sc_i_i 1074
-find_not_cclass_i_i_s_ic_i 1075
-find_not_cclass_i_ic_s_ic_i 1076
-find_not_cclass_i_i_sc_ic_i 1077
-find_not_cclass_i_ic_sc_ic_i 1078
-find_not_cclass_i_i_s_i_ic 1079
-find_not_cclass_i_ic_s_i_ic 1080
-find_not_cclass_i_i_sc_i_ic 1081
-find_not_cclass_i_ic_sc_i_ic 1082
-find_not_cclass_i_i_s_ic_ic 1083
-find_not_cclass_i_ic_s_ic_ic 1084
-find_not_cclass_i_i_sc_ic_ic 1085
-find_not_cclass_i_ic_sc_ic_ic 1086
-escape_s_s 1087
-compose_s_s 1088
-compose_s_sc 1089
-spawnw_i_s 1090
-spawnw_i_sc 1091
-spawnw_i_p 1092
-err_i 1093
-err_s 1094
-err_s_i 1095
-err_s_ic 1096
-time_i 1097
-time_n 1098
-gmtime_s_i 1099
-gmtime_s_ic 1100
-localtime_s_i 1101
-localtime_s_ic 1102
-decodetime_p_i 1103
-decodetime_p_ic 1104
-decodelocaltime_p_i 1105
-decodelocaltime_p_ic 1106
-sysinfo_s_i 1107
-sysinfo_s_ic 1108
-sysinfo_i_i 1109
-sysinfo_i_ic 1110
-sleep_i 1111
-sleep_ic 1112
-sleep_n 1113
-sleep_nc 1114
-sizeof_i_i 1115
-sizeof_i_ic 1116
-store_lex_s_p 1117
-store_lex_sc_p 1118
-find_lex_p_s 1119
-find_lex_p_sc 1120
-get_namespace_p 1121
-get_namespace_p_p 1122
-get_namespace_p_pc 1123
-get_hll_namespace_p 1124
-get_hll_namespace_p_p 1125
-get_hll_namespace_p_pc 1126
-get_root_namespace_p 1127
-get_root_namespace_p_p 1128
-get_root_namespace_p_pc 1129
-get_global_p_s 1130
-get_global_p_sc 1131
-get_global_p_p_s 1132
-get_global_p_pc_s 1133
-get_global_p_p_sc 1134
-get_global_p_pc_sc 1135
-get_hll_global_p_s 1136
-get_hll_global_p_sc 1137
-get_hll_global_p_p_s 1138
-get_hll_global_p_pc_s 1139
-get_hll_global_p_p_sc 1140
-get_hll_global_p_pc_sc 1141
-get_root_global_p_s 1142
-get_root_global_p_sc 1143
-get_root_global_p_p_s 1144
-get_root_global_p_pc_s 1145
-get_root_global_p_p_sc 1146
-get_root_global_p_pc_sc 1147
-set_global_s_p 1148
-set_global_sc_p 1149
-set_global_p_s_p 1150
-set_global_pc_s_p 1151
-set_global_p_sc_p 1152
-set_global_pc_sc_p 1153
-set_hll_global_s_p 1154
-set_hll_global_sc_p 1155
-set_hll_global_p_s_p 1156
-set_hll_global_pc_s_p 1157
-set_hll_global_p_sc_p 1158
-set_hll_global_pc_sc_p 1159
-set_root_global_s_p 1160
-set_root_global_sc_p 1161
-set_root_global_p_s_p 1162
-set_root_global_pc_s_p 1163
-set_root_global_p_sc_p 1164
-set_root_global_pc_sc_p 1165
-store_global_s_p 1166
-store_global_sc_p 1167
-store_global_s_s_p 1168
-store_global_sc_s_p 1169
-store_global_s_sc_p 1170
-store_global_sc_sc_p 1171
-store_global_p_s_p 1172
-store_global_pc_s_p 1173
-store_global_p_sc_p 1174
-store_global_pc_sc_p 1175
-find_global_p_s 1176
-find_global_p_sc 1177
-find_global_p_s_s 1178
-find_global_p_sc_s 1179
-find_global_p_s_sc 1180
-find_global_p_sc_sc 1181
-find_global_p_p_s 1182
-find_global_p_pc_s 1183
-find_global_p_p_sc 1184
-find_global_p_pc_sc 1185
-find_name_p_s 1186
-find_name_p_sc 1187
-stm_start 1188
-stm_validate_ic 1189
-stm_commit_ic 1190
-stm_wait_ic 1191
-stm_abort 1192
-stm_depth_i 1193
Deleted: branches/ops_massacre/t/tools/ops2pm/samples/pic_ops.original
==============================================================================
--- branches/ops_massacre/t/tools/ops2pm/samples/pic_ops.original Mon May 24 08:26:56 2010 (r46946)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,316 +0,0 @@
-/*
- * $Id$
-** pic.ops
-*/
-
-#include "parrot/oplib/ops.h"
-#include "../src/pmc/pmc_fixedintegerarray.h"
-
-typedef opcode_t* (*interface_f)(Interp*, INTVAL*, void **);
-
-VERSION = PARROT_VERSION;
-
-=head1 NAME
-
-pic.ops - PIC (Polymorphic Inline Cache) opcode variants
-
-=cut
-
-=head1 DESCRIPTION
-
-During predereferencing opcodes that allow caching are rewritten so that
-equivalent opcodes in this file are used. User code MUST never emit these
-opcodes directly.
-
-=head2 General infix operations
-
-These operations take an infix operation number and PMC arguments.
-
-=cut
-
-=over 4
-
-=item B<pic_infix__>(inconst INT, invar PMC, invar PMC)
-
-One for fun and MOPS.
-
-=cut
-
-inline op pic_infix__(inconst INT, invar PMC, invar PMC) :pic :flow {
- Parrot_MIC *mic;
- Parrot_PIC_lru *lru;
- PMC *left, *right;
- INTVAL lr_types;
-
- mic = (Parrot_MIC *) cur_opcode[1];
- left = $2;
- right = $3;
- lru = &mic->lru;
- lr_types = (VTABLE_type(interp, left) << 16) | VTABLE_type(interp, right);
- if (lru->u.type == lr_types) {
-runit_v_pp:
- ((mmd_f_v_pp)lru->f.real_function)(interp, left, right);
- goto NEXT();
- }
- if (mic->pic) {
- lru = mic->pic->lru;
- if (lru->u.type == lr_types)
- goto runit_v_pp;
- if (++lru->u.type == lr_types)
- goto runit_v_pp;
- if (++lru->u.type == lr_types)
- goto runit_v_pp;
- mic->pic->miss_count++;
- }
- parrot_pic_find_infix_v_pp(interp, left, right, mic, cur_opcode);
- /* rerun this opcode */
- goto OFFSET(0);
-}
-
-=item B<pic_inline_sub__>(inconst INT, invar PMC, invar PMC)
-
-And for more fun an inlined variant too.
-
-=cut
-
-inline op pic_inline_sub__(inconst INT, invar PMC, invar PMC) :pic {
- Parrot_MIC *mic;
- Parrot_PIC_lru *lru;
- PMC *left, *right;
- INTVAL lr_types, lt, rt;
-
- left = $2;
- mic = (Parrot_MIC *) cur_opcode[1];
- lt = VTABLE_type(interp, left);
- right = $3;
- lru = &mic->lru;
- rt = VTABLE_type(interp, right);
- lr_types = (lt << 16) | rt;
- if (lru->u.type == lr_types) {
- INTVAL a = lt == enum_class_Integer ? VTABLE_get_integer(interp, left) :
- VTABLE_get_integer(interp, left);
- INTVAL b = rt == enum_class_Integer ? VTABLE_get_integer(interp, right) :
- VTABLE_get_integer(interp, right);
- INTVAL c = a - b;
- if ((c^a) >= 0 || (c^~b) >= 0) {
- if (lt == enum_class_Integer)
- VTABLE_get_integer(interp, left) = c;
- else
- VTABLE_set_integer_native(interp, left, c);
- }
- else {
- if (PARROT_ERRORS_test(interp, PARROT_ERRORS_OVERFLOW_FLAG)) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ERR_OVERFLOW,
- "Integer overflow");
- }
- VTABLE_morph(interp, left, enum_class_BigInt);
- VTABLE_set_integer_native(interp, left, a);
- mmd_dispatch_p_pip(interp, left, b, left, MMD_SUBTRACT);
- }
- }
- else {
- ((void**)cur_opcode)[0] =
- parrot_pic_opcode(interp, PARROT_OP_pic_infix___ic_p_p);
- goto OFFSET(0);
- }
-}
-
-=item B<pic_get_params__>(inconst PMC /* , ... */)
-
-Fetch function parameters for this subroutine.
-
-=item B<pic_set_returns__>(inconst PMC /* , ... */)
-
-Return values to caller.
-
-=cut
-
-inline op pic_get_params__(inconst PMC) :pic :flow {
- Parrot_MIC *mic;
- Parrot_PIC_lru *lru;
- PMC *sig, *ccont;
- opcode_t *src_pc;
- void **src_pred;
- parrot_context_t *caller_ctx, *ctx;
- int n;
-
- /* avoid load dependencies - intermix derefs
- * - yes, confusing but faster
- */
- ctx = CONTEXT(interp);
- src_pc = interp->current_args;
- mic = (Parrot_MIC *) cur_opcode[1];
- caller_ctx = ctx->caller_ctx;
- if (src_pc) {
- src_pred = (void**) src_pc - caller_ctx->pred_offset;
- sig = (PMC*)(src_pred[1]);
- }
- else {
- sig = NULL;
- src_pred = NULL; /* just for gcc */
- }
- lru = &mic->lru;
- if (lru->u.signature == sig) {
- if (sig) {
- n = ((arg_pass_f)lru->f.real_function)(interp, sig,
- (char*)caller_ctx->bp.regs_i, src_pred,
- _reg_base, (void**)cur_opcode);
- }
- else
- n = 2;
- ccont = ctx->current_cont;
- if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL) {
- PObj_get_FLAGS(ccont) &= ~SUB_FLAG_TAILCALL;
- --ctx->recursion_depth;
- ctx->caller_ctx = caller_ctx->caller_ctx;
- Parrot_free_context(interp, caller_ctx, 0);
- interp->current_args = NULL;
- }
-
- goto OFFSET(n);
- }
- /* no match redo plain opcode */
- ((void**)cur_opcode)[0] =
- parrot_pic_opcode(interp, PARROT_OP_get_params_pc);
- ((void**)cur_opcode)[1] = mic->m.sig;
- goto OFFSET(0);
-}
-
-inline op pic_set_returns__(inconst PMC) :pic :flow {
- Parrot_MIC *mic;
- Parrot_PIC_lru *lru;
- PMC *sig, *ccont;
- opcode_t *dest_pc;
- void **dest_pred;
- parrot_context_t *caller_ctx, *ctx;
- Parrot_cont *cc;
- int n;
-
- ctx = CONTEXT(interp);
- mic = (Parrot_MIC *) cur_opcode[1];
- ccont = ctx->current_cont;
- cc = PMC_cont(ccont);
- if (!cc->address) {
- interp->current_returns = CUR_OPCODE;
- n = VTABLE_get_integer(interp, mic->m.sig);
- goto OFFSET(n + 2);
- }
- caller_ctx = cc->to_ctx;
- interp->current_args = NULL;
- dest_pc = caller_ctx->current_results;
- if (dest_pc) {
- dest_pred = (void**) dest_pc - caller_ctx->pred_offset;
- sig = (PMC*)(dest_pred[1]);
- }
- else {
- sig = NULL;
- dest_pred = NULL;
- }
- lru = &mic->lru;
- if (lru->u.signature == sig) {
- if (sig) {
- n = ((arg_pass_f)lru->f.real_function)(interp, mic->m.sig,
- _reg_base, (void**)cur_opcode,
- (char*)caller_ctx->bp.regs_i, dest_pred);
- }
- else
- n = 2;
- goto OFFSET(n);
- }
- /* no match redo plain opcode */
- ((void**)cur_opcode)[0] =
- parrot_pic_opcode(interp, PARROT_OP_set_returns_pc);
- ((void**)cur_opcode)[1] = mic->m.sig;
- goto OFFSET(0);
-}
-
-=item B<pic_callr__>(inconst PMC)
-
-Call the function $1 as C<pc = func(interp, 0, **args)>. args[0] holds the
-address of the function result, args[1..] are function arguments, both
-according to the C<get_results> and C<set_args> opcodes. The function is
-a C interface function (or NCI) or a JITed PIR function. args[n+1] holds the
-C<pc> of the next opcode and is usually just returned.
-
-=cut
-
-inline op pic_callr__(inconst PMC) :pic :flow {
- Parrot_MIC *mic;
- Parrot_PIC_lru *lru;
- void *args[6];
- parrot_context_t *ctx;
- opcode_t *pc;
- void **pred_pc;
- INTVAL i, n_args, *sig_bits;
- PMC *sig;
-
- ctx = CONTEXT(interp);
- mic = (Parrot_MIC *) cur_opcode[1];
- /* get_results */
- pc = ctx->current_results;
- if (pc) {
- pred_pc = (void**) pc - ctx->pred_offset;
- sig = (PMC*)(pred_pc[1]);
- ASSERT_SIG_PMC(sig);
- PARROT_ASSERT(VTABLE_elements(interp, sig) <= 1);
- args[0] = VTABLE_elements(interp, sig) ?
- (_reg_base + ((opcode_t*)pred_pc)[2]) : NULL;
- }
- else
- args[0] = NULL;
- /* set_args */
- n_args = 0;
- sig = mic->m.sig;
- ASSERT_SIG_PMC(sig);
- n_args = VTABLE_elements(interp, sig);
- GETATTR_FixedIntegerArray_int_array(interp, sig, sig_bits);
- for (i = 0; i < n_args; ++i) {
- switch (sig_bits[i]) {
- case PARROT_ARG_INTVAL:
- args[1 + i] = (void*)*(INTVAL*)(_reg_base +
- ((opcode_t*)cur_opcode)[2 + i]);
- break;
- case PARROT_ARG_INTVAL|PARROT_ARG_CONSTANT:
- case PARROT_ARG_FLOATVAL|PARROT_ARG_CONSTANT:
- args[1 + i] = (void**)cur_opcode[2 + i];
- break;
- case PARROT_ARG_FLOATVAL:
- args[1 + i] = (_reg_base +
- ((opcode_t*)cur_opcode)[2 + i]);
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL, 1, "unhandled sig_bits");
- }
- }
- /* set_args(); set_p_pc; get_results(1), x; invokecc_p */
- pc = CUR_OPCODE + 2 + n_args + 3 + 3 + 2;
- args[1 + n_args] = pc;
- lru = &mic->lru;
- (void) ((interface_f)lru->f.real_function)(interp, sig_bits, args);
- goto ADDRESS(pc);
-}
-
-=back
-
-=cut
-
-###############################################################################
-
-=head1 COPYRIGHT
-
-Copyright (C) 2005-2008, Parrot Foundation.
-
-=head1 LICENSE
-
-This program is free software. It is subject to the same license
-as the Parrot interpreter itself.
-
-=cut
-
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Modified: branches/ops_massacre/tools/build/headerizer.pl
==============================================================================
--- branches/ops_massacre/tools/build/headerizer.pl Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/tools/build/headerizer.pl Mon May 24 08:26:56 2010 (r46947)
@@ -89,8 +89,9 @@
my $heading = $headerizer->generate_documentation_signature($decl);
- $text =~ s/=item C<[^>]*\b$name\b[^>]*>\n+/$heading\n\n/sm or
- warn "$cfile_name: $name has no POD\n";
+ $text =~ s/=item C<[^>]*\b$name\b[^>]*>\n+/$heading\n\n/sm or do {
+ warn "$cfile_name: $name has no POD\n" unless $name =~ /^yy/; # lexer funcs don't have to have POD
+ }
}
open( my $fhout, '>', $cfile_name ) or die "Can't create $cfile_name: $!";
print {$fhout} $text;
@@ -126,7 +127,9 @@
push( @attrs, "__attribute__nonnull__($n)" );
}
if ( ( $arg =~ m{\*} ) && ( $arg !~ /\b(SHIM|((ARGIN|ARGOUT|ARGMOD)(_NULLOK)?)|ARGFREE(_NOTNULL)?)\b/ ) ) {
- $headerizer->squawk( $file, $name, qq{"$arg" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE} );
+ if ( $name !~ /^yy/ ) { # Don't complain about the lexer auto-generated funcs
+ $headerizer->squawk( $file, $name, qq{"$arg" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE} );
+ }
}
if ( ($arg =~ /\bconst\b/) && ($arg =~ /\*/) && ($arg !~ /\*\*/) && ($arg =~ /\b(ARG(MOD|OUT))\b/) ) {
$headerizer->squawk( $file, $name, qq{"$arg" is const, but that $1 conflicts with const} );
Modified: branches/ops_massacre/tools/build/ops2c.pl
==============================================================================
--- branches/ops_massacre/tools/build/ops2c.pl Mon May 24 08:15:45 2010 (r46946)
+++ branches/ops_massacre/tools/build/ops2c.pl Mon May 24 08:26:56 2010 (r46947)
@@ -1,149 +1,20 @@
#! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
-use warnings;
use strict;
+use warnings;
+
use FindBin qw($Bin);
use lib "$Bin/../lib"; # install location
-use lib "$Bin/../../lib"; # build location
-use Parrot::Ops2c::Auxiliary qw( Usage getoptions );
-use Parrot::Ops2c::Utils ();
-
-my $flagref = getoptions();
-if ( ( not defined $flagref )
- or $flagref->{help}
- or ( not @ARGV ) )
-{
- Usage();
- exit 1;
-}
-
-my $self = Parrot::Ops2c::Utils->new(
- {
- argv => [@ARGV],
- flag => $flagref,
- script => $0,
- }
-);
-if ( not defined $self ) {
- Usage();
- exit 1;
-}
-
-$self->print_c_header_file();
-
-$self->print_c_source_file();
-
-exit 0;
-
-#################### DOCUMENTATION ####################
-
-=head1 NAME
-
-tools/build/ops2c.pl - Parser for .ops files
-
-=head1 SYNOPSIS
-
- % perl tools/build/ops2c.pl trans [--help] [--no-lines] [--dynamic]
- [--core | input.ops [input2.ops ...]]
- trans := C
-
-For example:
-
- % perl tools/build/ops2c.pl C --core
-
- % perl tools/build/ops2c.pl C --dynamic myops.ops
-
-=head1 DESCRIPTION
-
-This script uses a supplied transform to create a pair of C header and
-implementation files from the operation definitions found in one or more
-F<*.ops> files.
-
-=head2 Transforms
-
-The first command-line argument is the last package name component of a
-subclass of C<Parrot::OpTrans>. These subclasses all have full names of
-the form C<Parrot::OpTrans::*>. An instance of the class is created and
-later consulted for various bits of information needed to generate the C
-code. Each creates a different type of run loop.
-
-=over
-
-=item C<C>
-
-Create the function-based (slow or fast core) run loop.
-
-=back
-
-=head2 Options
-
-=over 4
-
-=item C<--help>
-
-Print synopsis.
-
-=item C<--dynamic>
-
-Indicate that the opcode library is dynamic.
-
-=item C<--core>
-
-Build the Parrot core opcode library.
-
-=item C<--no-lines>
-
-Do not generate C<#line> directives in the generated C code.
-
-=back
-
-=head1 NOTE
-
-Most of the functionality in F<tools/build/ops2c.pl> has been extracted into
-methods and subroutines found in Parrot::Ops2c::Utils and
-Parrot::Ops2c::Auxiliary. This refactoring facilitates unit testing and
-coverage analysis of that functionality. A test suite has been provided in
-F<t/tools/ops2cutils/>. It is recommended that future refactoring of this
-functionality proceed in a test-driven manner, I<i.e.,> tests should be
-written reflecting any changes to interface or functionality; the code should
-be written which implements the revisions; the code should be tested; and
-coverage analysis should be performed with Devel::Cover to measure the extent
-to which the tests exercise the code.
-
-=head1 AUTHORS
-
-Based on the commit logs, the following members of the Parrot project have
-contributed to this program:
-
- ambs bernhard boemmels brentdax chip
- coke dan gregor grunblatt jgoff
- jkeenan jonathan josh jrieks leo
- mikescott mrjoltcola nicholas particle paultcochrane
- petdance rgrjr robert simon
-
-=head1 SEE ALSO
-
-=over 4
-
-=item F<tools/build/ops2pm.pl>
-
-=item C<Parrot::OpsFile>
-
-=item C<Parrot::Op>
-
-=item C<Parrot::OpTrans>
-
-=item C<Parrot::OpTrans::C>
-
-=item C<Parrot::Ops2c::Utils>
-
-=item C<Parrot::Ops2c::Auxiliary>
-
-=back
+use Parrot::Config;
+use File::Spec;
-=cut
+warn 'ops2c.pl is deprecated. Use ops2c$(EXE) instead';
+# Ignore "core"
+shift @ARGV;
+my $ops2c = File::Spec->catfile($PConfig{bindir}, 'ops2c');
+exec $ops2c, @ARGV;
# Local Variables:
# mode: cperl
More information about the parrot-commits
mailing list