[svn:parrot] r42451 - in trunk: config/gen config/gen/makefiles ext/nqp-rx ext/nqp-rx/src ext/nqp-rx/src/stage0 ext/nqp-rx/t ext/nqp-rx/t/nqp ext/nqp-rx/t/p6regex

pmichaud at svn.parrot.org pmichaud at svn.parrot.org
Thu Nov 12 19:22:46 UTC 2009


Author: pmichaud
Date: Thu Nov 12 19:22:40 2009
New Revision: 42451
URL: https://trac.parrot.org/parrot/changeset/42451

Log:
[nqp-rx]:  First part of adding nqp-rx to Parrot repo.
Still needs MANIFEST update, propery fixes, 'install target',
and fakecutable generation (coming next).

Added:
   trunk/config/gen/makefiles/nqp-rx.in   (contents, props changed)
   trunk/ext/nqp-rx/
   trunk/ext/nqp-rx/.gitignore
   trunk/ext/nqp-rx/CREDITS
   trunk/ext/nqp-rx/LICENSE
   trunk/ext/nqp-rx/README
   trunk/ext/nqp-rx/STATUS
   trunk/ext/nqp-rx/src/
   trunk/ext/nqp-rx/src/stage0/
   trunk/ext/nqp-rx/src/stage0/HLL-s0.pir
   trunk/ext/nqp-rx/src/stage0/NQP-s0.pir
   trunk/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   trunk/ext/nqp-rx/src/stage0/Regex-s0.pir
   trunk/ext/nqp-rx/t/
   trunk/ext/nqp-rx/t/nqp/
   trunk/ext/nqp-rx/t/nqp/01-literals.t
   trunk/ext/nqp-rx/t/nqp/02-if.t
   trunk/ext/nqp-rx/t/nqp/03-if-else.t
   trunk/ext/nqp-rx/t/nqp/04-unless.t
   trunk/ext/nqp-rx/t/nqp/05-comments.t
   trunk/ext/nqp-rx/t/nqp/06-args-pos.t
   trunk/ext/nqp-rx/t/nqp/07-boolean.t
   trunk/ext/nqp-rx/t/nqp/08-blocks.t
   trunk/ext/nqp-rx/t/nqp/09-var.t
   trunk/ext/nqp-rx/t/nqp/10-cmp.t
   trunk/ext/nqp-rx/t/nqp/11-sub.t
   trunk/ext/nqp-rx/t/nqp/12-logical.t
   trunk/ext/nqp-rx/t/nqp/13-op.t
   trunk/ext/nqp-rx/t/nqp/14-while.t
   trunk/ext/nqp-rx/t/nqp/15-list.t
   trunk/ext/nqp-rx/t/nqp/16-ternary.t
   trunk/ext/nqp-rx/t/nqp/17-positional.t
   trunk/ext/nqp-rx/t/nqp/18-associative.t
   trunk/ext/nqp-rx/t/nqp/19-inline.t
   trunk/ext/nqp-rx/t/nqp/20-return.t
   trunk/ext/nqp-rx/t/nqp/21-contextual.t
   trunk/ext/nqp-rx/t/nqp/22-optional-args.t
   trunk/ext/nqp-rx/t/nqp/23-named-args.t
   trunk/ext/nqp-rx/t/nqp/24-module.t
   trunk/ext/nqp-rx/t/nqp/25-class.t
   trunk/ext/nqp-rx/t/nqp/26-methodops.t
   trunk/ext/nqp-rx/t/nqp/27-self.t
   trunk/ext/nqp-rx/t/nqp/28-subclass.t
   trunk/ext/nqp-rx/t/nqp/29-make.t
   trunk/ext/nqp-rx/t/nqp/30-pirop.t
   trunk/ext/nqp-rx/t/nqp/31-grammar.t
   trunk/ext/nqp-rx/t/nqp/32-protoregex.t
   trunk/ext/nqp-rx/t/nqp/33-init.t
   trunk/ext/nqp-rx/t/nqp/34-rxcodeblock.t
   trunk/ext/nqp-rx/t/nqp/35-prefix-sigil.t
   trunk/ext/nqp-rx/t/nqp/36-callable.t
   trunk/ext/nqp-rx/t/nqp/37-slurpy.t
   trunk/ext/nqp-rx/t/nqp/38-quotes.t
   trunk/ext/nqp-rx/t/nqp/39-pointy.t
   trunk/ext/nqp-rx/t/nqp/40-lists.t
   trunk/ext/nqp-rx/t/nqp/41-flat.t
   trunk/ext/nqp-rx/t/p6regex/
   trunk/ext/nqp-rx/t/p6regex/01-regex.t
   trunk/ext/nqp-rx/t/p6regex/rx_backtrack
   trunk/ext/nqp-rx/t/p6regex/rx_basic
   trunk/ext/nqp-rx/t/p6regex/rx_captures
   trunk/ext/nqp-rx/t/p6regex/rx_charclass
   trunk/ext/nqp-rx/t/p6regex/rx_goal
   trunk/ext/nqp-rx/t/p6regex/rx_lookarounds
   trunk/ext/nqp-rx/t/p6regex/rx_metachars
   trunk/ext/nqp-rx/t/p6regex/rx_modifiers
   trunk/ext/nqp-rx/t/p6regex/rx_quantifiers
   trunk/ext/nqp-rx/t/p6regex/rx_subrules
   trunk/ext/nqp-rx/t/p6regex/rx_syntax
Modified:
   trunk/config/gen/makefiles.pm
   trunk/config/gen/makefiles/root.in

Modified: trunk/config/gen/makefiles.pm
==============================================================================
--- trunk/config/gen/makefiles.pm	Thu Nov 12 18:17:00 2009	(r42450)
+++ trunk/config/gen/makefiles.pm	Thu Nov 12 19:22:40 2009	(r42451)
@@ -36,6 +36,8 @@
             conditioned_lines => 1,
         },
 
+        'ext/nqp-rx/Makefile' => { SOURCE => 'config/gen/makefiles/nqp-rx.in' },
+
         'compilers/ncigen/Makefile'  =>
             { SOURCE => 'compilers/ncigen/config/makefiles/ncigen.in' },
         'compilers/nqp/Makefile'     =>

Added: trunk/config/gen/makefiles/nqp-rx.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/config/gen/makefiles/nqp-rx.in	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,69 @@
+# Copyright (C) 2009, Parrot Foundation.
+# $Id$
+
+# Setup some commands
+PERL     := @perl@
+CP       := @cp@
+RM_F     := @rm_f@
+PARROT   := ../../parrot at exe@
+
+PARROT_LIBRARY := @build_dir@/runtime/parrot/library
+
+NQP_LIB_PBCS := Regex.pbc HLL.pbc P6Regex.pbc nqp-rx.pbc
+
+all: $(NQP_LIB_PBCS)
+	$(CP) $(NQP_LIB_PBCS) $(PARROT_LIBRARY)
+
+Regex.pbc: src/stage0/Regex-s0.pir
+	$(PARROT) $(PARROT_ARGS) -o Regex.pbc src/stage0/Regex-s0.pir
+
+HLL.pbc: src/stage0/HLL-s0.pir
+	$(PARROT) $(PARROT_ARGS) -o HLL.pbc src/stage0/HLL-s0.pir
+
+P6Regex.pbc: src/stage0/P6Regex-s0.pir
+	$(PARROT) $(PARROT_ARGS) -o P6Regex.pbc src/stage0/P6Regex-s0.pir
+
+nqp-rx.pbc: src/stage0/NQP-s0.pir
+	$(PARROT) $(PARROT_ARGS) -o nqp-rx.pbc src/stage0/NQP-s0.pir
+
+# This is a listing of all targets, that are meant to be called by users
+help:
+	@echo ""
+	@echo "Following targets are available for the user:"
+	@echo ""
+	@echo "  all:               nqp.pbc"
+	@echo "                     This is the default."
+	@echo "Testing:"
+	@echo "  test:              Run the test suite."
+	@echo "  testclean:         Clean up test results."
+	@echo ""
+	@echo "Cleaning:"
+	@echo "  clean:             Basic cleaning up."
+	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
+	@echo "  distclean:         Removes also anything built, in theory"
+	@echo ""
+	@echo "Misc:"
+	@echo "  help:              Print this help message."
+	@echo ""
+
+test: all
+	$(PERL) t/harness t
+
+# this target has nothing to do
+testclean:
+
+CLEANUPS := \
+  $(NQP_LIB_PBCS)
+
+clean:
+	$(RM_F) $(CLEANUPS)
+
+realclean: clean
+	$(RM_F) Makefile
+
+distclean: realclean
+
+# Local variables:
+#   mode: makefile
+# End:
+# vim: ft=make:

Modified: trunk/config/gen/makefiles/root.in
==============================================================================
--- trunk/config/gen/makefiles/root.in	Thu Nov 12 18:17:00 2009	(r42450)
+++ trunk/config/gen/makefiles/root.in	Thu Nov 12 19:22:40 2009	(r42451)
@@ -158,6 +158,7 @@
     compilers/tge/Makefile \
     editor/Makefile \
     ext/Makefile \
+    ext/nqp-rx/Makefile \
     src/dynoplibs/Makefile \
     src/dynpmc/Makefile
 
@@ -1443,6 +1444,7 @@
 	$(MAKE) compilers/nqp
 	$(MAKE) compilers/json
 	$(MAKE) compilers/data_json
+	$(MAKE) ext/nqp-rx
 
 compilers-clean :
 	$(MAKE) compilers/pct clean

Added: trunk/ext/nqp-rx/.gitignore
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/.gitignore	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,15 @@
+Makefile
+/parrot
+/parrot_install
+.*.swp
+*.c
+*.o
+Regex.pbc
+HLL.pbc
+P6Regex
+P6Regex.pbc
+nqp
+nqp.pbc
+src/gen/*.pir
+src/stage1
+src/stage2

Added: trunk/ext/nqp-rx/CREDITS
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/CREDITS	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,24 @@
+=pod
+
+    Following in the steps of other open source projects that
+    eventually take over the world, here is the partial list
+    of people who have contributed to Rakudo and its supporting
+    works.  It is sorted by name and formatted to allow easy
+    grepping and beautification by scripts.
+    The fields are: name (N), email (E), web-address (W),
+    description (D), subversion username (U) and snail-mail
+    address (S).
+
+        Thanks,
+
+        The NQP Team
+        PS: Yes, this looks remarkably like the Linux CREDITS format
+        PPS: This file is encoded in UTF-8
+
+----------
+N: Patrick R. Michaud
+U: pmichaud
+D: Perl 6 (Rakudo Perl) lead developer, pumpking
+E: pmichaud at pobox.com
+
+=cut

Added: trunk/ext/nqp-rx/LICENSE
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/LICENSE	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,201 @@
+		       The Artistic License 2.0
+
+	    Copyright (c) 2000-2006, The Perl Foundation.
+
+     Everyone is permitted to copy and distribute verbatim copies
+      of this license document, but changing it is not allowed.
+
+Preamble
+
+This license establishes the terms under which a given free software
+Package may be copied, modified, distributed, and/or redistributed.
+The intent is that the Copyright Holder maintains some artistic
+control over the development of that Package while still keeping the
+Package available as open source and free software.
+
+You are always permitted to make arrangements wholly outside of this
+license directly with the Copyright Holder of a given Package.  If the
+terms of this license do not permit the full use that you propose to
+make of the Package, you should contact the Copyright Holder and seek
+a different licensing arrangement.
+
+Definitions
+
+    "Copyright Holder" means the individual(s) or organization(s)
+    named in the copyright notice for the entire Package.
+
+    "Contributor" means any party that has contributed code or other
+    material to the Package, in accordance with the Copyright Holder's
+    procedures.
+
+    "You" and "your" means any person who would like to copy,
+    distribute, or modify the Package.
+
+    "Package" means the collection of files distributed by the
+    Copyright Holder, and derivatives of that collection and/or of
+    those files. A given Package may consist of either the Standard
+    Version, or a Modified Version.
+
+    "Distribute" means providing a copy of the Package or making it
+    accessible to anyone else, or in the case of a company or
+    organization, to others outside of your company or organization.
+
+    "Distributor Fee" means any fee that you charge for Distributing
+    this Package or providing support for this Package to another
+    party.  It does not mean licensing fees.
+
+    "Standard Version" refers to the Package if it has not been
+    modified, or has been modified only in ways explicitly requested
+    by the Copyright Holder.
+
+    "Modified Version" means the Package, if it has been changed, and
+    such changes were not explicitly requested by the Copyright
+    Holder.
+
+    "Original License" means this Artistic License as Distributed with
+    the Standard Version of the Package, in its current version or as
+    it may be modified by The Perl Foundation in the future.
+
+    "Source" form means the source code, documentation source, and
+    configuration files for the Package.
+
+    "Compiled" form means the compiled bytecode, object code, binary,
+    or any other form resulting from mechanical transformation or
+    translation of the Source form.
+
+
+Permission for Use and Modification Without Distribution
+
+(1)  You are permitted to use the Standard Version and create and use
+Modified Versions for any purpose without restriction, provided that
+you do not Distribute the Modified Version.
+
+
+Permissions for Redistribution of the Standard Version
+
+(2)  You may Distribute verbatim copies of the Source form of the
+Standard Version of this Package in any medium without restriction,
+either gratis or for a Distributor Fee, provided that you duplicate
+all of the original copyright notices and associated disclaimers.  At
+your discretion, such verbatim copies may or may not include a
+Compiled form of the Package.
+
+(3)  You may apply any bug fixes, portability changes, and other
+modifications made available from the Copyright Holder.  The resulting
+Package will still be considered the Standard Version, and as such
+will be subject to the Original License.
+
+
+Distribution of Modified Versions of the Package as Source
+
+(4)  You may Distribute your Modified Version as Source (either gratis
+or for a Distributor Fee, and with or without a Compiled form of the
+Modified Version) provided that you clearly document how it differs
+from the Standard Version, including, but not limited to, documenting
+any non-standard features, executables, or modules, and provided that
+you do at least ONE of the following:
+
+    (a)  make the Modified Version available to the Copyright Holder
+    of the Standard Version, under the Original License, so that the
+    Copyright Holder may include your modifications in the Standard
+    Version.
+
+    (b)  ensure that installation of your Modified Version does not
+    prevent the user installing or running the Standard Version. In
+    addition, the Modified Version must bear a name that is different
+    from the name of the Standard Version.
+
+    (c)  allow anyone who receives a copy of the Modified Version to
+    make the Source form of the Modified Version available to others
+    under
+		
+	(i)  the Original License or
+
+	(ii)  a license that permits the licensee to freely copy,
+	modify and redistribute the Modified Version using the same
+	licensing terms that apply to the copy that the licensee
+	received, and requires that the Source form of the Modified
+	Version, and of any works derived from it, be made freely
+	available in that license fees are prohibited but Distributor
+	Fees are allowed.
+
+
+Distribution of Compiled Forms of the Standard Version
+or Modified Versions without the Source
+
+(5)  You may Distribute Compiled forms of the Standard Version without
+the Source, provided that you include complete instructions on how to
+get the Source of the Standard Version.  Such instructions must be
+valid at the time of your distribution.  If these instructions, at any
+time while you are carrying out such distribution, become invalid, you
+must provide new instructions on demand or cease further distribution.
+If you provide valid instructions or cease distribution within thirty
+days after you become aware that the instructions are invalid, then
+you do not forfeit any of your rights under this license.
+
+(6)  You may Distribute a Modified Version in Compiled form without
+the Source, provided that you comply with Section 4 with respect to
+the Source of the Modified Version.
+
+
+Aggregating or Linking the Package
+
+(7)  You may aggregate the Package (either the Standard Version or
+Modified Version) with other packages and Distribute the resulting
+aggregation provided that you do not charge a licensing fee for the
+Package.  Distributor Fees are permitted, and licensing fees for other
+components in the aggregation are permitted. The terms of this license
+apply to the use and Distribution of the Standard or Modified Versions
+as included in the aggregation.
+
+(8) You are permitted to link Modified and Standard Versions with
+other works, to embed the Package in a larger work of your own, or to
+build stand-alone binary or bytecode versions of applications that
+include the Package, and Distribute the result without restriction,
+provided the result does not expose a direct interface to the Package.
+
+
+Items That are Not Considered Part of a Modified Version
+
+(9) Works (including, but not limited to, modules and scripts) that
+merely extend or make use of the Package, do not, by themselves, cause
+the Package to be a Modified Version.  In addition, such works are not
+considered parts of the Package itself, and are not subject to the
+terms of this license.
+
+
+General Provisions
+
+(10)  Any use, modification, and distribution of the Standard or
+Modified Versions is governed by this Artistic License. By using,
+modifying or distributing the Package, you accept this license. Do not
+use, modify, or distribute the Package, if you do not accept this
+license.
+
+(11)  If your Modified Version has been derived from a Modified
+Version made by someone other than you, you are nevertheless required
+to ensure that your Modified Version complies with the requirements of
+this license.
+
+(12)  This license does not grant you the right to use any trademark,
+service mark, tradename, or logo of the Copyright Holder.
+
+(13)  This license includes the non-exclusive, worldwide,
+free-of-charge patent license to make, have made, use, offer to sell,
+sell, import and otherwise transfer the Package with respect to any
+patent claims licensable by the Copyright Holder that are necessarily
+infringed by the Package. If you institute patent litigation
+(including a cross-claim or counterclaim) against any party alleging
+that the Package constitutes direct or contributory patent
+infringement, then this Artistic License to you shall terminate on the
+date that such litigation is filed.
+
+(14)  Disclaimer of Warranty:
+THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
+IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
+LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Added: trunk/ext/nqp-rx/README
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/README	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,97 @@
+=head1 NQP - Not Quite Perl (6)
+
+NQP is Copyright (C) 2009 by Patrick R. Michaud.  See F<LICENSE>
+for licensing details.
+
+This is "Not Quite Perl" -- a compiler for quickly generating PIR
+routines from Perl6-like code.  The key feature of NQP is that it's
+designed to be a very small compiler (as compared with, say, perl6
+or Rakudo) and is focused on being a high-level way to create
+transformers for Parrot (especially hll compilers).  In addition,
+unlike Rakudo, NQP attempts to restrict itself to generating code
+that can run in Parrot without the existence of any NQP-specific
+runtime libraries.
+
+=head2 Building from source
+
+NQP comes bundled with Parrot, so if you have a recent Parrot
+distribution you likely also have a copy of NQP.  Inside of a
+Parrot installation NQP is known as C<parrot-nqp>.
+
+To build NQP from source, you'll just need a C<make> utility
+and Perl 5.8 or newer.  To automatically obtain and build Parrot
+you may also need a subversion (svn) client.
+
+To obtain NQP directly from its repository:
+
+    $ git clone git://github.com/perl6/nqp-rx.git
+
+If you don't have git installed, you can get a tarball or zip
+of NQP from github by visiting http://github.com/perl6/nqp-rx/tree/master
+and clicking "Download".  Then unpack the tarball or zip.
+
+Once you have a copy of NQP, build it as follows:
+
+    $ cd nqp-rx
+    $ perl Configure.pl --gen-parrot
+    $ make
+
+This will create a "nqp" or "nqp.exe" executable in the
+current (nqp-rx) directory.  Programs can then be run from
+the build directory using a command like:
+
+    $ ./nqp hello.pl
+
+The C<--gen-parrot> option above tells Configure.pl to automatically
+download and build the most appropriate version of Parrot into a
+local "parrot/" subdirectory, install that Parrot into the
+"parrot_install/" subdirectory, and use that for building NQP.
+It's okay to use the C<--gen-parrot> option on later invocations
+of Configure.pl; the configure system will re-build Parrot only
+if a newer version is needed for whatever version of Rakudo you're
+working with.
+
+You can use C<--parrot-config=/path/to/parrot_config> instead
+of C<--gen-parrot> to use an already installed Parrot for building
+NQP.  This installed Parrot must include its development
+environment; typically this is done via Parrot's C<make install>
+target or by installing prebuilt C<parrot-devel> and/or C<libparrot-dev>
+packages.  The version of the already installed Parrot must satisfy a
+minimum specified by the NQP being built -- Configure.pl will
+verify this for you.  Released versions of NQP always build
+against the latest release of Parrot; checkouts of the HEAD revision
+from github often require a version of Parrot that is newer than
+the most recent Parrot monthly release.
+
+Once built, NQP's C<make install> target will install NQP
+and its libraries into the Parrot installation that was used to
+create it.  Until this step is performed, the "nqp" executable
+created by C<make> above can only be reliably run from the root of
+NQP's build directory.  After C<make install> is performed
+the executable can be run from any directory (as long as the
+Parrot installation that was used to create it remains intact).
+
+If the NQP compiler is invoked without an explicit script to
+run, it enters a small interactive mode that allows statements
+to be executed from the command line.  Each line entered is treated
+as a separate compilation unit, however (which means that subroutines
+are preserved after they are defined, but variables are not).
+
+=head2 Differences from previous version of NQP
+
+* Sub declarations are now lexical ("my") by default, use
+  "our sub xyz() { ... }" if you want package-scoped subroutines.
+
+* The  PIR q<...>;  construct is gone.  Use Q:PIR or pir::opcode(...)
+  instead.
+
+* The mainline code of modules is no longer tagged as ":load :init"
+  by default.  Use  INIT { ... }  for any code that you want to be
+  run automatically at startup.
+
+* Cuddled else's are no longer valid Perl 6, 'else' requires a
+  space after it.
+
+* Double-quoted strings now interpolate $-variables.
+
+

Added: trunk/ext/nqp-rx/STATUS
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/STATUS	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,70 @@
+2009-10-09:
+
+At the moment, nqp-rx is configured to build an executable called
+"p6regex", which is a Perl 6 regular expression compiler for Parrot.
+Yes, Parrot already has a Perl 6 regular expression compiler (PGE);
+this one is different in that it will be self-hosting and based on
+PAST/POST generation.
+
+Building the system is similar to building Rakudo:
+
+    $ perl Configure.pl --gen-parrot
+    $ make
+
+This builds a "p6regex" executable, which can be used to view
+the results of compiling various regular expressions.  Like Rakudo,
+p6regex accepts --target=parse, --target=past, and --target=pir, to
+see the results of compiling various regular expressions.  For example,
+
+    $ ./p6regex --target=parse
+    > abcde*f
+
+will display the parse tree for the regular expression "abcde*f".  Similarly,
+
+    $ ./p6regex --target=pir
+    > abcde*f
+
+will display the PIR subroutine generated to match the regular
+expression "abcde*f".
+
+At the moment there's not an easy command-line tool for doing matches
+against the compiled regular expression; that should be coming soon
+as nqp-rx gets a little farther along.
+
+The test suite can be run via "make test" -- because the new regex
+engine is incomplete, we expect quite a few failures (which should
+diminish as we add new features to the project).
+
+The key files for the p6regex compiler are:
+
+    src/Regex/P6Regex/Grammar.pm     # regular expression parse grammar
+    src/Regex/P6Regex/Actions.pm     # actions to create PAST from parse
+
+
+Things that work (2009-10-15, 06h16 UTC):
+
+* bare literal strings
+* quantifiers  *, +, ?, *:, +:, ?:, *?, +?, ??, *!, +!, ?!
+* dot
+* \d, \s, \w, \n, \D, \S, \W, \N
+* brackets for grouping
+* alternation (|| works, | cheats)
+* anchors ^, ^^, $, $$, <<, >>
+* backslash-quoted punctuation
+* #-comments (mostly)
+* obsolete backslash sequences \A \Z \z \Q
+* \b, \B, \e, \E, \f, \F, \h, \H, \r, \R, \t, \T, \v, \V
+* enumerated character lists <[ab0..9]>
+* character class compositions <+foo-bar+[xyz]>
+* quantified by numeric range
+* quantified by separator
+* capturing subrules
+* capturing subpatterns
+* capture aliases
+* cut rule
+* Match objects created lazily
+* built-in methods <alpha> <digit> <xdigit> <ws> <wb> etc.
+* :ignorecase
+* :sigspace
+* :ratchet
+* single-quoted literals (without quotes)

Added: trunk/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/src/stage0/HLL-s0.pir	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,4890 @@
+# $Id$
+
+=head1 NAME
+
+HLL - Parrot HLL library
+
+=head1 DESCRIPTION
+
+This file brings together the various modules needed for HLL::Compiler
+and HLL::Grammar.
+
+=cut
+
+.sub '' :anon :load :init
+    load_bytecode 'Regex.pbc'
+.end
+
+### .include 'src/cheats/hll-compiler.pir'
+# we have to overload PCT::HLLCompiler's parse method to support P6Regex grammars
+
+
+.namespace ['HLL';'Compiler']
+
+.sub '' :anon :init :load
+    load_bytecode 'PCT/HLLCompiler.pbc'
+    .local pmc p6meta
+    p6meta = get_hll_global 'P6metaclass'
+    p6meta.'new_class'('HLL::Compiler', 'parent'=>'PCT::HLLCompiler')
+.end
+
+
+.sub 'parse' :method
+    .param pmc source
+    .param pmc options         :slurpy :named
+
+    .local string tcode
+    tcode = options['transcode']
+    unless tcode goto transcode_done
+    .local pmc tcode_it
+    $P0 = split ' ', tcode
+    tcode_it = iter $P0
+  tcode_loop:
+    unless tcode_it goto transcode_done
+    tcode = shift tcode_it
+    push_eh tcode_enc
+    $I0 = find_charset tcode
+    $S0 = source
+    $S0 = trans_charset $S0, $I0
+    assign source, $S0
+    pop_eh
+    goto transcode_done
+  tcode_enc:
+    pop_eh
+    push_eh tcode_fail
+    $I0 = find_encoding tcode
+    $S0 = source
+    $S0 = trans_encoding $S0, $I0
+    assign source, $S0
+    pop_eh
+    goto transcode_done
+  tcode_fail:
+    pop_eh
+    goto tcode_loop
+  transcode_done:
+
+    .local pmc parsegrammar, parseactions, match
+    parsegrammar = self.'parsegrammar'()
+
+    null parseactions
+    $S0 = options['target']
+    if $S0 == 'parse' goto have_parseactions
+    parseactions = self.'parseactions'()
+  have_parseactions:
+
+    .local int rxtrace
+    rxtrace = options['parsetrace']
+    match = parsegrammar.'parse'(source, 'from'=>0, 'actions'=>parseactions, 'rxtrace'=>rxtrace)
+    unless match goto err_parsefail
+    .return (match)
+
+  err_parsefail:
+    self.'panic'('Unable to parse source')
+    .return (match)
+.end
+
+
+.sub 'pir' :method
+    .param pmc source
+    .param pmc adverbs         :slurpy :named
+
+    $P0 = compreg 'POST'
+    $S0 = $P0.'to_pir'(source, adverbs :flat :named)
+    .return ($S0)
+.end
+
+### .include 'src/cheats/hll-grammar.pir'
+# Copyright (C) 2009 Patrick R. Michaud
+
+=head1 TITLE
+
+src/cheats/hll-grammar.pir -- Additional HLL::Grammar methods
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+
+.include 'cclass.pasm'
+### .include 'src/Regex/constants.pir'
+.const int CURSOR_FAIL = -1
+.const int CURSOR_FAIL_GROUP = -2
+.const int CURSOR_FAIL_RULE = -3
+.const int CURSOR_FAIL_MATCH = -4
+
+.const int CURSOR_TYPE_SCAN = 1
+.const int CURSOR_TYPE_PEEK = 2
+
+.namespace ['HLL';'Grammar']
+
+.sub '' :load :init
+    .local pmc brackets
+    brackets = box unicode:"<>[](){}\xab\xbb\u0f3a\u0f3b\u0f3c\u0f3d\u169b\u169c\u2045\u2046\u207d\u207e\u208d\u208e\u2329\u232a\u2768\u2769\u276a\u276b\u276c\u276d\u276e\u276f\u2770\u2771\u2772\u2773\u2774\u2775\u27c5\u27c6\u27e6\u27e7\u27e8\u27e9\u27ea\u27eb\u2983\u2984\u2985\u2986\u2987\u2988\u2989\u298a\u298b\u298c\u298d\u298e\u298f\u2990\u2991\u2992\u2993\u2994\u2995\u2996\u2997\u2998\u29d8\u29d9\u29da\u29db\u29fc\u29fd\u3008\u3009\u300a\u300b\u300c\u300d\u300e\u300f\u3010\u3011\u3014\u3015\u3016\u3017\u3018\u3019\u301a\u301b\u301d\u301e\ufd3e\ufd3f\ufe17\ufe18\ufe35\ufe36\ufe37\ufe38\ufe39\ufe3a\ufe3b\ufe3c\ufe3d\ufe3e\ufe3f\ufe40\ufe41\ufe42\ufe43\ufe44\ufe47\ufe48\ufe59\ufe5a\ufe5b\ufe5c\ufe5d\ufe5e\uff08\uff09\uff3b\uff3d\uff5b\uff5d\uff5f\uff60\uff62\uff63"
+    set_global '$!brackets', brackets
+.end
+
+
+.namespace ['HLL';'Grammar']
+
+=item O(spec [, save])
+
+This subrule attaches operator precedence information to
+a match object (such as an operator token).  A typical
+invocation for the subrule might be:
+
+    token infix:sym<+> { <sym> <O( q{ %additive, :pirop<add> } )> }
+
+This says to add all of the attribute of the C<%additive> hash
+(described below) and a C<pirop> entry into the match object
+returned by the C<< infix:sym<+> >> token (as the C<O> named
+capture).  Note that this is a alphabetic 'O", not a digit zero.
+
+Currently the C<O> subrule accepts a string argument describing
+the hash to be stored.  (Note the C< q{ ... } > above.  Eventually
+it may be possible to omit the 'q' such that an actual (constant)
+hash constructor is passed as an argument to C<O>.
+
+The hash built via the string argument to C<O> is cached, so that
+subsequent parses of the same token re-use the hash built from
+previous parses of the token, rather than building a new hash
+on each invocation.
+
+The C<save> argument is used to build "hash" aggregates that can
+be referred to by subsequent calls to C<O>.  For example,
+
+    NQP::Grammar.O(':prec<t=>, :assoc<left>', '%additive' );
+
+specifies the values to be associated with later references to
+"%additive".  Eventually it will likely be possible to use true
+hashes from a package namespace, but this works for now.
+
+Currently the only pairs recognized have the form C< :pair >,
+C< :!pair >, and C<< :pair<strval> >>.
+
+=cut
+
+.sub 'O' :method
+    .param string spec
+    .param string save         :optional
+    .param int has_save        :opt_flag
+
+    # First, get the hash cache.  Right now we have one
+    # cache for all grammars; eventually we may need a way to
+    # separate them out by cursor type.
+    .local pmc ohash
+    ohash = get_global '%!ohash'
+    unless null ohash goto have_ohash
+    ohash = new ['Hash']
+    set_global '%!ohash', ohash
+  have_ohash:
+
+    # See if we've already created a Hash for the current
+    # specification string -- if so, use that.
+    .local pmc hash
+    hash = ohash[spec]
+    unless null hash goto hash_done
+
+    # Otherwise, we need to build a new one.
+    hash = new ['Hash']
+    .local int pos, eos
+    pos = 0
+    eos = length spec
+  spec_loop:
+    pos = find_not_cclass .CCLASS_WHITESPACE, spec, pos, eos
+    if pos >= eos goto spec_done
+    $S0 = substr spec, pos, 1
+    if $S0 == ',' goto spec_comma
+    if $S0 == ':' goto spec_pair
+
+    # If whatever we found doesn't start with a colon, treat it
+    # as a lookup of a previously saved hash to be merged in.
+    .local string lookup
+    .local int lpos
+    # Find the first whitespace or comma
+    lpos = find_cclass .CCLASS_WHITESPACE, spec, pos, eos
+    $I0 = index spec, ',', pos
+    if $I0 < 0 goto have_lookup_lpos
+    if $I0 >= lpos goto have_lookup_lpos
+    lpos = $I0
+  have_lookup_lpos:
+    $I0 = lpos - pos
+    lookup = substr spec, pos, $I0
+    .local pmc lhash, lhash_it
+    lhash = ohash[lookup]
+    if null lhash goto err_lookup
+    lhash_it = iter lhash
+  lhash_loop:
+    unless lhash_it goto lhash_done
+    $S0 = shift lhash_it
+    $P0 = lhash[$S0]
+    hash[$S0] = $P0
+    goto lhash_loop
+  lhash_done:
+    pos = lpos
+    goto spec_loop
+
+    # We just ignore commas between elements for now.
+  spec_comma:
+    inc pos
+    goto spec_loop
+
+    # If we see a colon, then we want to parse whatever
+    # comes next like a pair.
+  spec_pair:
+    # eat colon
+    inc pos
+    .local string name
+    .local pmc value
+    value = new ['Boolean']
+
+    # If the pair is of the form :!name, then reverse the value
+    # and skip the colon.
+    $S0 = substr spec, pos, 1
+    $I0 = iseq $S0, '!'
+    pos += $I0
+    $I0 = not $I0
+    value = $I0
+
+    # Get the name of the pair.
+    lpos = find_not_cclass .CCLASS_WORD, spec, pos, eos
+    $I0 = lpos - pos
+    name = substr spec, pos, $I0
+    pos = lpos
+
+    # Look for a <...> that follows.
+    $S0 = substr spec, pos, 1
+    unless $S0 == '<' goto have_value
+    inc pos
+    lpos = index spec, '>', pos
+    $I0 = lpos - pos
+    $S0 = substr spec, pos, $I0
+    value = box $S0
+    pos = lpos + 1
+  have_value:
+    # Done processing the pair, store it in the hash.
+    hash[name] = value
+    goto spec_loop
+  spec_done:
+    # Done processing the spec string, cache the hash for later.
+    ohash[spec] = hash
+  hash_done:
+
+    # If we've been called as a subrule, then build a pass-cursor
+    # to indicate success and set the hash as the subrule's match object.
+    if has_save goto save_hash
+    ($P0, $I0) = self.'!cursor_start'()
+    $P0.'!cursor_pass'($I0, '')
+    setattribute $P0, '$!match', hash
+    .return ($P0)
+
+    # save the hash under a new entry
+  save_hash:
+    ohash[save] = hash
+    .return (self)
+
+  err_lookup:
+    self.'panic'('Unknown operator precedence specification "', lookup, '"')
+.end
+
+
+=item panic([args :slurpy])
+
+Throw an exception at the current cursor location.  If the message
+doesn't end with a newline, also output the line number and offset
+of the match.
+
+=cut
+
+.sub 'panic' :method
+    .param pmc args            :slurpy
+
+    .local int pos
+    .local pmc target
+    pos = self.'pos'()
+    target = getattribute self, '$!target'
+
+    $I1 = target.'lineof'(pos)
+    inc $I1
+    push args, ' at line '
+    push args, $I1
+
+    $S0 = target
+    $S0 = substr $S0, pos, 10
+    $S0 = escape $S0
+    push args, ', near "'
+    push args, $S0
+    push args, '"'
+
+    .local string message
+    message = join '', args
+
+    die message
+.end
+
+
+=item peek_delimiters(target, pos)
+
+Return the start/stop delimiter pair based on peeking at C<target>
+position C<pos>.
+
+=cut
+
+.sub 'peek_delimiters' :method
+    .param string target
+    .param int pos
+
+    .local string brackets, start, stop
+    $P0 = get_global '$!brackets'
+    brackets = $P0
+
+    # peek at the next character
+    start = substr target, pos, 1
+    # colon and word characters aren't valid delimiters
+    if start == ':' goto err_colon_delim
+    $I0 = is_cclass .CCLASS_WORD, start, 0
+    if $I0 goto err_word_delim
+    $I0 = is_cclass .CCLASS_WHITESPACE, start, 0
+    if $I0 goto err_ws_delim
+
+    # assume stop delim is same as start, for the moment
+    stop = start
+
+    # see if we have an opener or closer
+    $I0 = index brackets, start
+    if $I0 < 0 goto bracket_end
+    # if it's a closing bracket, that's an error also
+    $I1 = $I0 % 2
+    if $I1 goto err_close
+    # it's an opener, so get the closing bracket
+    inc $I0
+    stop = substr brackets, $I0, 1
+
+    # see if the opening bracket is repeated
+    .local int len
+    len = 0
+  bracket_loop:
+    inc pos
+    inc len
+    $S0 = substr target, pos, 1
+    if $S0 == start goto bracket_loop
+    if len == 1 goto bracket_end
+    start = repeat start, len
+    stop = repeat stop, len
+  bracket_end:
+    .return (start, stop, pos)
+
+  err_colon_delim:
+    self.'panic'('Colons may not be used to delimit quoting constructs')
+  err_word_delim:
+    self.'panic'('Alphanumeric character is not allowed as a delimiter')
+  err_ws_delim:
+    self.'panic'('Whitespace character is not allowed as a delimiter')
+  err_close:
+    self.'panic'('Use of a closing delimiter for an opener is reserved')
+.end
+
+
+.sub 'quote_EXPR' :method
+    .param pmc args            :slurpy
+
+    .local pmc quotemod, true
+    .lex '%*QUOTEMOD', quotemod
+    quotemod = new ['Hash']
+
+    true = box 1
+
+
+  args_loop:
+    unless args goto args_done
+    .local string mod
+    mod = shift args
+    mod = substr mod, 1
+    quotemod[mod] = true
+    if mod == 'qq' goto opt_qq
+    if mod == 'b' goto opt_b
+    goto args_loop
+  opt_qq:
+    quotemod['s'] = true
+    quotemod['a'] = true
+    quotemod['h'] = true
+    quotemod['f'] = true
+    quotemod['c'] = true
+    quotemod['b'] = true
+  opt_b:
+    quotemod['q'] = true
+    goto args_loop
+  args_done:
+
+    .local pmc cur
+    .local string target
+    .local int pos
+
+    (cur, pos, target) = self.'!cursor_start'()
+
+    .local pmc start, stop
+    (start, stop) = self.'peek_delimiters'(target, pos)
+
+    .lex '$*QUOTE_START', start
+    .lex '$*QUOTE_STOP', stop
+
+    $P10 = cur.'quote_delimited'()
+    unless $P10 goto fail
+    cur.'!mark_push'(0, CURSOR_FAIL, 0, $P10)
+    $P10.'!cursor_names'('quote_delimited')
+    pos = $P10.'pos'()
+    cur.'!cursor_pass'(pos, 'quote_EXPR')
+  fail:
+    .return (cur)
+.end
+
+
+.sub 'quotemod_check' :method
+    .param string mod
+
+    $P0 = find_dynamic_lex '%*QUOTEMOD'
+    $P1 = $P0[mod]
+    unless null $P1 goto done
+    $P1 = new ['Undef']
+  done:
+    .return ($P1)
+.end
+
+
+.sub 'starter' :method
+    .local pmc cur
+    .local string target, start
+    .local int pos
+
+    (cur, pos, target) = self.'!cursor_start'()
+
+    $P0 = find_dynamic_lex '$*QUOTE_START'
+    if null $P0 goto fail
+    start = $P0
+
+    $I0 = length start
+    $S0 = substr target, pos, $I0
+    unless $S0 == start goto fail
+    pos += $I0
+    cur.'!cursor_pass'(pos, 'starter')
+  fail:
+    .return (cur)
+.end
+
+
+.sub 'stopper' :method
+    .local pmc cur
+    .local string target, stop
+    .local int pos
+
+    (cur, pos, target) = self.'!cursor_start'()
+
+    $P0 = find_dynamic_lex '$*QUOTE_STOP'
+    if null $P0 goto fail
+    stop = $P0
+
+    $I0 = length stop
+    $S0 = substr target, pos, $I0
+    unless $S0 == stop goto fail
+    pos += $I0
+    cur.'!cursor_pass'(pos, 'stopper')
+  fail:
+    .return (cur)
+.end
+
+
+.sub 'split_words' :method
+    .param string words
+    .local int pos, eos
+    .local pmc result
+    pos = 0
+    eos = length words
+    result = new ['ResizablePMCArray']
+  split_loop:
+    pos = find_not_cclass .CCLASS_WHITESPACE, words, pos, eos
+    unless pos < eos goto split_done
+    $I0 = find_cclass .CCLASS_WHITESPACE, words, pos, eos
+    $I1 = $I0 - pos
+    $S0 = substr words, pos, $I1
+    push result, $S0
+    pos = $I0
+    goto split_loop
+  split_done:
+    .return (result)
+.end
+
+
+=item EXPR(...)
+
+An operator precedence parser.
+
+=cut
+
+.sub 'EXPR' :method
+    .param string preclim      :optional
+    .param int has_preclim     :opt_flag
+
+    if has_preclim goto have_preclim
+    preclim = ''
+  have_preclim:
+
+    .const 'Sub' reduce = 'EXPR_reduce'
+    .local string termish
+    termish = 'termish'
+
+    .local pmc opstack, termstack
+    opstack = new ['ResizablePMCArray']
+    .lex '@opstack', opstack
+    termstack = new ['ResizablePMCArray']
+    .lex '@termstack', termstack
+
+    .local pmc here, from, pos
+    (here, pos) = self.'!cursor_start'()
+
+  term_loop:
+    here = here.termish()
+    unless here goto fail
+    .local pmc term
+    term = here.'MATCH'()
+    push termstack, term
+
+    # interleave any prefix/postfix we might have found
+    .local pmc termOPER, prefixish, postfixish
+    termOPER = term
+  termOPER_loop:
+    $I0 = exists termOPER['OPER']
+    unless $I0 goto termOPER_done
+    termOPER = termOPER['OPER']
+    goto termOPER_loop
+  termOPER_done:
+    prefixish = termOPER['prefixish']
+    postfixish = termOPER['postfixish']
+    if null prefixish goto prefix_done
+
+  prepostfix_loop:
+    unless prefixish goto prepostfix_done
+    unless postfixish goto prepostfix_done
+    .local pmc preO, postO
+    .local string preprec, postprec
+    $P0 = prefixish[0]
+    $P0 = $P0['OPER']
+    preO = $P0['O']
+    preprec = preO['prec']
+    $P0 = postfixish[-1]
+    $P0 = $P0['OPER']
+    postO = $P0['O']
+    postprec = postO['prec']
+    if postprec < preprec goto post_shift
+    if postprec > preprec goto pre_shift
+    $S0 = postO['uassoc']
+    if $S0 == 'right' goto pre_shift
+  post_shift:
+    $P0 = pop postfixish
+    push opstack, $P0
+    goto prepostfix_loop
+  pre_shift:
+    $P0 = shift prefixish
+    push opstack, $P0
+    goto prepostfix_loop
+  prepostfix_done:
+
+  prefix_loop:
+    unless prefixish goto prefix_done
+    $P0 = shift prefixish
+    push opstack, $P0
+    goto prefix_loop
+  prefix_done:
+    delete term['prefixish']
+
+  postfix_loop:
+    if null postfixish goto postfix_done
+    unless postfixish goto postfix_done
+    $P0 = pop postfixish
+    push opstack, $P0
+    goto postfix_loop
+  postfix_done:
+    delete term['postfixish']
+
+    # Now see if we can fetch an infix operator
+    .local pmc infixcur, infix
+    here = here.'ws'()
+    infixcur = here.'infixish'()
+    unless infixcur goto term_done
+    infix = infixcur.'MATCH'()
+
+    .local pmc inO
+    $P0 = infix['OPER']
+    inO = $P0['O']
+    termish = inO['nextterm']
+    if termish goto have_termish
+    termish = 'termish'
+  have_termish:
+
+    unless opstack goto reduce_done
+    .local string inprec, inassoc, opprec
+    inprec = inO['prec']
+    unless inprec goto err_inprec
+    if inprec <= preclim goto term_done
+    inassoc = inO['assoc']
+
+  reduce_loop:
+    unless opstack goto reduce_done
+    $P0 = opstack[-1]
+    $P0 = $P0['OPER']
+    $P0 = $P0['O']
+    opprec = $P0['prec']
+    unless opprec > inprec goto reduce_gt_done
+    capture_lex reduce
+    self.reduce()
+    goto reduce_loop
+  reduce_gt_done:
+
+    unless opprec == inprec goto reduce_done
+    # equal precedence, use associativity to decide
+    unless inassoc == 'left' goto reduce_done
+    # left associative, reduce immediately
+    capture_lex reduce
+    self.reduce()
+  reduce_done:
+
+    push opstack, infix        # The Shift
+    here = infixcur.'ws'()
+    goto term_loop
+  term_done:
+
+  opstack_loop:
+    unless opstack goto opstack_done
+    capture_lex reduce
+    self.reduce()
+    goto opstack_loop
+  opstack_done:
+
+  expr_done:
+    term = pop termstack
+    pos = here.'pos'()
+    here = self.'!cursor_start'()
+    setattribute here, '$!pos', pos
+    setattribute here, '$!match', term
+    here.'!reduce'('EXPR')
+  fail:
+    .return (here)
+
+  err_internal:
+    $I0 = termstack
+    here.'panic'('Internal operator parser error, @termstack == ', $I0)
+  err_inprec:
+    infixcur.'panic'('Missing infixish operator precedence')
+.end
+
+
+.sub 'EXPR_reduce' :method :anon :outer('EXPR')
+    .local pmc termstack, opstack
+    termstack = find_lex '@termstack'
+    opstack = find_lex '@opstack'
+
+    .local pmc op, opOPER, opO
+    .local string opassoc
+    op = pop opstack
+    opOPER = op['OPER']
+    opO = opOPER['O']
+    opassoc = opO['assoc']
+    if opassoc == 'unary' goto op_unary
+    if opassoc == 'list' goto op_list
+  op_infix:
+    .local pmc right, left
+    right = pop termstack
+    left = pop termstack
+    op[0] = left
+    op[1] = right
+    $S0 = opO['reducecheck']
+    unless $S0 goto op_infix_1
+    self.$S0(op)
+  op_infix_1:
+    self.'!reduce'('EXPR', 'INFIX', op)
+    goto done
+
+  op_unary:
+    .local pmc arg, afrom, ofrom
+    arg = pop termstack
+    op[0] = arg
+    afrom = arg.'from'()
+    ofrom = op.'from'()
+    if afrom < ofrom goto op_postfix
+  op_prefix:
+    self.'!reduce'('EXPR', 'PREFIX', op)
+    goto done
+  op_postfix:
+    self.'!reduce'('EXPR', 'POSTFIX', op)
+    goto done
+
+  op_list:
+    .local string sym
+    sym = opOPER['sym']
+    arg = pop termstack
+    unshift op, arg
+  op_sym_loop:
+    unless opstack goto op_sym_done
+    $P0 = opstack[-1]
+    $P0 = $P0['OPER']
+    $S0 = $P0['sym']
+    if sym != $S0 goto op_sym_done
+    arg = pop termstack
+    unshift op, arg
+    $P0 = pop opstack
+    goto op_sym_loop
+  op_sym_done:
+    arg = pop termstack
+    unshift op, arg
+    self.'!reduce'('EXPR', 'LIST', op)
+    goto done
+
+  done:
+    push termstack, op
+.end
+
+
+.sub 'MARKER' :method
+    .param pmc markname
+
+    .local pmc pos
+    pos = self.'pos'()
+    self.'!cursor_debug'('START MARKER name=', markname, ', pos=', pos)
+
+    .local pmc markhash
+    markhash = get_global '%!MARKHASH'
+    unless null markhash goto have_markhash
+    markhash = new ['Hash']
+    set_global '%!MARKHASH', markhash
+  have_markhash:
+    markhash[markname] = pos
+    self.'!cursor_debug'('PASS  MARKER')
+    .return (1)
+.end
+
+
+.sub 'MARKED' :method
+    .param pmc markname
+
+    self.'!cursor_debug'('START MARKED name=', markname)
+
+    .local pmc markhash
+    markhash = get_global '%!MARKHASH'
+    if null markhash goto fail
+    $P0 = markhash[markname]
+    if null $P0 goto fail
+    $P1 = self.'pos'()
+    unless $P0 == $P1 goto fail
+    self.'!cursor_debug'('PASS  MARKED')
+    .return (1)
+  fail:
+    self.'!cursor_debug'('FAIL  MARKED')
+    .return (0)
+.end
+
+
+.sub 'LANG' :method
+    .param string lang
+    .param string regex
+
+    .local pmc langhash, cur, pos
+    langhash = find_dynamic_lex '%*LANG'
+    $P0 = langhash[lang]
+    (cur, pos) = self.'!cursor_start'($P0)
+    cur.'!cursor_pos'(pos)
+
+    $S0 = concat lang, '-actions'
+    $P0 = langhash[$S0]
+    .lex '$*ACTIONS', $P0
+
+    # XXX can't use tailcall here or we lose $*ACTIONS
+    $P1 = cur.regex()
+    .return ($P1)
+.end
+
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+
+### .include 'gen/hllgrammar-grammar.pir'
+
+.namespace []
+.sub "_block11"  :anon :subid("10_1258051398.73583")
+.annotate "line", 0
+    get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
+    capture_lex $P14
+.annotate "line", 5
+    get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
+    capture_lex $P14
+    $P226 = $P14()
+.annotate "line", 1
+    .return ($P226)
+.end
+
+
+.namespace []
+.sub "" :load :init :subid("post81") :outer("10_1258051398.73583")
+.annotate "line", 0
+    .const 'Sub' $P12 = "10_1258051398.73583" 
+    .local pmc block
+    set block, $P12
+    $P227 = get_root_global ["parrot"], "P6metaclass"
+    $P227."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block13"  :subid("11_1258051398.73583") :outer("10_1258051398.73583")
+.annotate "line", 5
+    .const 'Sub' $P217 = "79_1258051398.73583" 
+    capture_lex $P217
+    .const 'Sub' $P211 = "77_1258051398.73583" 
+    capture_lex $P211
+    .const 'Sub' $P199 = "74_1258051398.73583" 
+    capture_lex $P199
+    .const 'Sub' $P195 = "72_1258051398.73583" 
+    capture_lex $P195
+    .const 'Sub' $P190 = "70_1258051398.73583" 
+    capture_lex $P190
+    .const 'Sub' $P185 = "68_1258051398.73583" 
+    capture_lex $P185
+    .const 'Sub' $P181 = "66_1258051398.73583" 
+    capture_lex $P181
+    .const 'Sub' $P177 = "64_1258051398.73583" 
+    capture_lex $P177
+    .const 'Sub' $P173 = "62_1258051398.73583" 
+    capture_lex $P173
+    .const 'Sub' $P169 = "60_1258051398.73583" 
+    capture_lex $P169
+    .const 'Sub' $P165 = "58_1258051398.73583" 
+    capture_lex $P165
+    .const 'Sub' $P161 = "56_1258051398.73583" 
+    capture_lex $P161
+    .const 'Sub' $P151 = "52_1258051398.73583" 
+    capture_lex $P151
+    .const 'Sub' $P139 = "50_1258051398.73583" 
+    capture_lex $P139
+    .const 'Sub' $P120 = "48_1258051398.73583" 
+    capture_lex $P120
+    .const 'Sub' $P114 = "46_1258051398.73583" 
+    capture_lex $P114
+    .const 'Sub' $P106 = "44_1258051398.73583" 
+    capture_lex $P106
+    .const 'Sub' $P100 = "42_1258051398.73583" 
+    capture_lex $P100
+    .const 'Sub' $P92 = "40_1258051398.73583" 
+    capture_lex $P92
+    .const 'Sub' $P83 = "38_1258051398.73583" 
+    capture_lex $P83
+    .const 'Sub' $P76 = "36_1258051398.73583" 
+    capture_lex $P76
+    .const 'Sub' $P69 = "34_1258051398.73583" 
+    capture_lex $P69
+    .const 'Sub' $P64 = "32_1258051398.73583" 
+    capture_lex $P64
+    .const 'Sub' $P59 = "30_1258051398.73583" 
+    capture_lex $P59
+    .const 'Sub' $P54 = "28_1258051398.73583" 
+    capture_lex $P54
+    .const 'Sub' $P22 = "14_1258051398.73583" 
+    capture_lex $P22
+    .const 'Sub' $P15 = "12_1258051398.73583" 
+    capture_lex $P15
+    .const 'Sub' $P217 = "79_1258051398.73583" 
+    capture_lex $P217
+    .return ($P217)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "ws"  :subid("12_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx16_tgt
+    .local int rx16_pos
+    .local int rx16_off
+    .local int rx16_eos
+    .local int rx16_rep
+    .local pmc rx16_cur
+    (rx16_cur, rx16_pos, rx16_tgt, $I10) = self."!cursor_start"()
+    rx16_cur."!cursor_debug"("START ", "ws")
+    .lex unicode:"$\x{a2}", rx16_cur
+    .local pmc match
+    .lex "$/", match
+    length rx16_eos, rx16_tgt
+    set rx16_off, 0
+    lt $I10, 2, rx16_start
+    sub rx16_off, $I10, 1
+    substr rx16_tgt, rx16_tgt, rx16_off
+  rx16_start:
+  # rx subrule "ww" subtype=zerowidth negate=1
+    rx16_cur."!cursor_pos"(rx16_pos)
+    $P10 = rx16_cur."ww"()
+    if $P10, rx16_fail
+  # rx rxquantr19 ** 0..*
+    set_addr $I21, rxquantr19_done
+    rx16_cur."!mark_push"(0, rx16_pos, $I21)
+  rxquantr19_loop:
+  alt20_0:
+    set_addr $I10, alt20_1
+    rx16_cur."!mark_push"(0, rx16_pos, $I10)
+  # rx charclass_q s r 1..-1
+    sub $I10, rx16_pos, rx16_off
+    find_not_cclass $I11, 32, rx16_tgt, $I10, rx16_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx16_fail
+    add rx16_pos, rx16_off, $I11
+    goto alt20_end
+  alt20_1:
+  # rx literal  "#"
+    add $I11, rx16_pos, 1
+    gt $I11, rx16_eos, rx16_fail
+    sub $I11, rx16_pos, rx16_off
+    substr $S10, rx16_tgt, $I11, 1
+    ne $S10, "#", rx16_fail
+    add rx16_pos, 1
+  # rx charclass_q N r 0..-1
+    sub $I10, rx16_pos, rx16_off
+    find_cclass $I11, 4096, rx16_tgt, $I10, rx16_eos
+    add rx16_pos, rx16_off, $I11
+  alt20_end:
+    (rx16_rep) = rx16_cur."!mark_commit"($I21)
+    rx16_cur."!mark_push"(rx16_rep, rx16_pos, $I21)
+    goto rxquantr19_loop
+  rxquantr19_done:
+  # rx pass
+    rx16_cur."!cursor_pass"(rx16_pos, "ws")
+    rx16_cur."!cursor_debug"("PASS  ", "ws", " at pos=", rx16_pos)
+    .return (rx16_cur)
+  rx16_fail:
+    (rx16_rep, rx16_pos, $I10, $P10) = rx16_cur."!mark_fail"(0)
+    lt rx16_pos, -1, rx16_done
+    eq rx16_pos, -1, rx16_fail
+    jump $I10
+  rx16_done:
+    rx16_cur."!cursor_fail"()
+    rx16_cur."!cursor_debug"("FAIL  ", "ws")
+    .return (rx16_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__ws"  :subid("13_1258051398.73583") :method
+.annotate "line", 5
+    new $P18, "ResizablePMCArray"
+    push $P18, ""
+    .return ($P18)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "termish"  :subid("14_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx23_tgt
+    .local int rx23_pos
+    .local int rx23_off
+    .local int rx23_eos
+    .local int rx23_rep
+    .local pmc rx23_cur
+    (rx23_cur, rx23_pos, rx23_tgt, $I10) = self."!cursor_start"()
+    rx23_cur."!cursor_debug"("START ", "termish")
+    rx23_cur."!cursor_caparray"("postfixish", "prefixish")
+    .lex unicode:"$\x{a2}", rx23_cur
+    .local pmc match
+    .lex "$/", match
+    length rx23_eos, rx23_tgt
+    set rx23_off, 0
+    lt $I10, 2, rx23_start
+    sub rx23_off, $I10, 1
+    substr rx23_tgt, rx23_tgt, rx23_off
+  rx23_start:
+.annotate "line", 8
+  # rx rxquantr26 ** 0..*
+    set_addr $I27, rxquantr26_done
+    rx23_cur."!mark_push"(0, rx23_pos, $I27)
+  rxquantr26_loop:
+  # rx subrule "prefixish" subtype=capture negate=
+    rx23_cur."!cursor_pos"(rx23_pos)
+    $P10 = rx23_cur."prefixish"()
+    unless $P10, rx23_fail
+    rx23_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("prefixish")
+    rx23_pos = $P10."pos"()
+    (rx23_rep) = rx23_cur."!mark_commit"($I27)
+    rx23_cur."!mark_push"(rx23_rep, rx23_pos, $I27)
+    goto rxquantr26_loop
+  rxquantr26_done:
+.annotate "line", 9
+  # rx subrule "term" subtype=capture negate=
+    rx23_cur."!cursor_pos"(rx23_pos)
+    $P10 = rx23_cur."term"()
+    unless $P10, rx23_fail
+    rx23_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("term")
+    rx23_pos = $P10."pos"()
+.annotate "line", 10
+  # rx rxquantr28 ** 0..*
+    set_addr $I29, rxquantr28_done
+    rx23_cur."!mark_push"(0, rx23_pos, $I29)
+  rxquantr28_loop:
+  # rx subrule "postfixish" subtype=capture negate=
+    rx23_cur."!cursor_pos"(rx23_pos)
+    $P10 = rx23_cur."postfixish"()
+    unless $P10, rx23_fail
+    rx23_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("postfixish")
+    rx23_pos = $P10."pos"()
+    (rx23_rep) = rx23_cur."!mark_commit"($I29)
+    rx23_cur."!mark_push"(rx23_rep, rx23_pos, $I29)
+    goto rxquantr28_loop
+  rxquantr28_done:
+.annotate "line", 7
+  # rx pass
+    rx23_cur."!cursor_pass"(rx23_pos, "termish")
+    rx23_cur."!cursor_debug"("PASS  ", "termish", " at pos=", rx23_pos)
+    .return (rx23_cur)
+  rx23_fail:
+.annotate "line", 5
+    (rx23_rep, rx23_pos, $I10, $P10) = rx23_cur."!mark_fail"(0)
+    lt rx23_pos, -1, rx23_done
+    eq rx23_pos, -1, rx23_fail
+    jump $I10
+  rx23_done:
+    rx23_cur."!cursor_fail"()
+    rx23_cur."!cursor_debug"("FAIL  ", "termish")
+    .return (rx23_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__termish"  :subid("15_1258051398.73583") :method
+.annotate "line", 5
+    new $P25, "ResizablePMCArray"
+    push $P25, ""
+    .return ($P25)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "term"  :subid("16_1258051398.73583") :method
+.annotate "line", 13
+    $P31 = self."!protoregex"("term")
+    .return ($P31)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__term"  :subid("17_1258051398.73583") :method
+.annotate "line", 13
+    $P33 = self."!PREFIX__!protoregex"("term")
+    .return ($P33)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "infix"  :subid("18_1258051398.73583") :method
+.annotate "line", 14
+    $P35 = self."!protoregex"("infix")
+    .return ($P35)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__infix"  :subid("19_1258051398.73583") :method
+.annotate "line", 14
+    $P37 = self."!PREFIX__!protoregex"("infix")
+    .return ($P37)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "prefix"  :subid("20_1258051398.73583") :method
+.annotate "line", 15
+    $P39 = self."!protoregex"("prefix")
+    .return ($P39)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__prefix"  :subid("21_1258051398.73583") :method
+.annotate "line", 15
+    $P41 = self."!PREFIX__!protoregex"("prefix")
+    .return ($P41)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "postfix"  :subid("22_1258051398.73583") :method
+.annotate "line", 16
+    $P43 = self."!protoregex"("postfix")
+    .return ($P43)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__postfix"  :subid("23_1258051398.73583") :method
+.annotate "line", 16
+    $P45 = self."!PREFIX__!protoregex"("postfix")
+    .return ($P45)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "circumfix"  :subid("24_1258051398.73583") :method
+.annotate "line", 17
+    $P47 = self."!protoregex"("circumfix")
+    .return ($P47)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__circumfix"  :subid("25_1258051398.73583") :method
+.annotate "line", 17
+    $P49 = self."!PREFIX__!protoregex"("circumfix")
+    .return ($P49)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "postcircumfix"  :subid("26_1258051398.73583") :method
+.annotate "line", 18
+    $P51 = self."!protoregex"("postcircumfix")
+    .return ($P51)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__postcircumfix"  :subid("27_1258051398.73583") :method
+.annotate "line", 18
+    $P53 = self."!PREFIX__!protoregex"("postcircumfix")
+    .return ($P53)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "term:sym<circumfix>"  :subid("28_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx55_tgt
+    .local int rx55_pos
+    .local int rx55_off
+    .local int rx55_eos
+    .local int rx55_rep
+    .local pmc rx55_cur
+    (rx55_cur, rx55_pos, rx55_tgt, $I10) = self."!cursor_start"()
+    rx55_cur."!cursor_debug"("START ", "term:sym<circumfix>")
+    .lex unicode:"$\x{a2}", rx55_cur
+    .local pmc match
+    .lex "$/", match
+    length rx55_eos, rx55_tgt
+    set rx55_off, 0
+    lt $I10, 2, rx55_start
+    sub rx55_off, $I10, 1
+    substr rx55_tgt, rx55_tgt, rx55_off
+  rx55_start:
+.annotate "line", 20
+  # rx subrule "circumfix" subtype=capture negate=
+    rx55_cur."!cursor_pos"(rx55_pos)
+    $P10 = rx55_cur."circumfix"()
+    unless $P10, rx55_fail
+    rx55_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("circumfix")
+    rx55_pos = $P10."pos"()
+  # rx pass
+    rx55_cur."!cursor_pass"(rx55_pos, "term:sym<circumfix>")
+    rx55_cur."!cursor_debug"("PASS  ", "term:sym<circumfix>", " at pos=", rx55_pos)
+    .return (rx55_cur)
+  rx55_fail:
+.annotate "line", 5
+    (rx55_rep, rx55_pos, $I10, $P10) = rx55_cur."!mark_fail"(0)
+    lt rx55_pos, -1, rx55_done
+    eq rx55_pos, -1, rx55_fail
+    jump $I10
+  rx55_done:
+    rx55_cur."!cursor_fail"()
+    rx55_cur."!cursor_debug"("FAIL  ", "term:sym<circumfix>")
+    .return (rx55_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1258051398.73583") :method
+.annotate "line", 5
+    $P57 = self."!PREFIX__!subrule"("circumfix", "")
+    new $P58, "ResizablePMCArray"
+    push $P58, $P57
+    .return ($P58)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "infixish"  :subid("30_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx60_tgt
+    .local int rx60_pos
+    .local int rx60_off
+    .local int rx60_eos
+    .local int rx60_rep
+    .local pmc rx60_cur
+    (rx60_cur, rx60_pos, rx60_tgt, $I10) = self."!cursor_start"()
+    rx60_cur."!cursor_debug"("START ", "infixish")
+    .lex unicode:"$\x{a2}", rx60_cur
+    .local pmc match
+    .lex "$/", match
+    length rx60_eos, rx60_tgt
+    set rx60_off, 0
+    lt $I10, 2, rx60_start
+    sub rx60_off, $I10, 1
+    substr rx60_tgt, rx60_tgt, rx60_off
+  rx60_start:
+.annotate "line", 22
+  # rx subrule "infix" subtype=capture negate=
+    rx60_cur."!cursor_pos"(rx60_pos)
+    $P10 = rx60_cur."infix"()
+    unless $P10, rx60_fail
+    rx60_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=infix")
+    rx60_pos = $P10."pos"()
+  # rx pass
+    rx60_cur."!cursor_pass"(rx60_pos, "infixish")
+    rx60_cur."!cursor_debug"("PASS  ", "infixish", " at pos=", rx60_pos)
+    .return (rx60_cur)
+  rx60_fail:
+.annotate "line", 5
+    (rx60_rep, rx60_pos, $I10, $P10) = rx60_cur."!mark_fail"(0)
+    lt rx60_pos, -1, rx60_done
+    eq rx60_pos, -1, rx60_fail
+    jump $I10
+  rx60_done:
+    rx60_cur."!cursor_fail"()
+    rx60_cur."!cursor_debug"("FAIL  ", "infixish")
+    .return (rx60_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__infixish"  :subid("31_1258051398.73583") :method
+.annotate "line", 5
+    $P62 = self."!PREFIX__!subrule"("OPER=infix", "")
+    new $P63, "ResizablePMCArray"
+    push $P63, $P62
+    .return ($P63)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "prefixish"  :subid("32_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx65_tgt
+    .local int rx65_pos
+    .local int rx65_off
+    .local int rx65_eos
+    .local int rx65_rep
+    .local pmc rx65_cur
+    (rx65_cur, rx65_pos, rx65_tgt, $I10) = self."!cursor_start"()
+    rx65_cur."!cursor_debug"("START ", "prefixish")
+    .lex unicode:"$\x{a2}", rx65_cur
+    .local pmc match
+    .lex "$/", match
+    length rx65_eos, rx65_tgt
+    set rx65_off, 0
+    lt $I10, 2, rx65_start
+    sub rx65_off, $I10, 1
+    substr rx65_tgt, rx65_tgt, rx65_off
+  rx65_start:
+.annotate "line", 23
+  # rx subrule "prefix" subtype=capture negate=
+    rx65_cur."!cursor_pos"(rx65_pos)
+    $P10 = rx65_cur."prefix"()
+    unless $P10, rx65_fail
+    rx65_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=prefix")
+    rx65_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx65_cur."!cursor_pos"(rx65_pos)
+    $P10 = rx65_cur."ws"()
+    unless $P10, rx65_fail
+    rx65_pos = $P10."pos"()
+  # rx pass
+    rx65_cur."!cursor_pass"(rx65_pos, "prefixish")
+    rx65_cur."!cursor_debug"("PASS  ", "prefixish", " at pos=", rx65_pos)
+    .return (rx65_cur)
+  rx65_fail:
+.annotate "line", 5
+    (rx65_rep, rx65_pos, $I10, $P10) = rx65_cur."!mark_fail"(0)
+    lt rx65_pos, -1, rx65_done
+    eq rx65_pos, -1, rx65_fail
+    jump $I10
+  rx65_done:
+    rx65_cur."!cursor_fail"()
+    rx65_cur."!cursor_debug"("FAIL  ", "prefixish")
+    .return (rx65_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__prefixish"  :subid("33_1258051398.73583") :method
+.annotate "line", 5
+    $P67 = self."!PREFIX__!subrule"("OPER=prefix", "")
+    new $P68, "ResizablePMCArray"
+    push $P68, $P67
+    .return ($P68)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "postfixish"  :subid("34_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx70_tgt
+    .local int rx70_pos
+    .local int rx70_off
+    .local int rx70_eos
+    .local int rx70_rep
+    .local pmc rx70_cur
+    (rx70_cur, rx70_pos, rx70_tgt, $I10) = self."!cursor_start"()
+    rx70_cur."!cursor_debug"("START ", "postfixish")
+    .lex unicode:"$\x{a2}", rx70_cur
+    .local pmc match
+    .lex "$/", match
+    length rx70_eos, rx70_tgt
+    set rx70_off, 0
+    lt $I10, 2, rx70_start
+    sub rx70_off, $I10, 1
+    substr rx70_tgt, rx70_tgt, rx70_off
+  rx70_start:
+  alt75_0:
+.annotate "line", 24
+    set_addr $I10, alt75_1
+    rx70_cur."!mark_push"(0, rx70_pos, $I10)
+.annotate "line", 25
+  # rx subrule "postfix" subtype=capture negate=
+    rx70_cur."!cursor_pos"(rx70_pos)
+    $P10 = rx70_cur."postfix"()
+    unless $P10, rx70_fail
+    rx70_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=postfix")
+    rx70_pos = $P10."pos"()
+    goto alt75_end
+  alt75_1:
+.annotate "line", 26
+  # rx subrule "postcircumfix" subtype=capture negate=
+    rx70_cur."!cursor_pos"(rx70_pos)
+    $P10 = rx70_cur."postcircumfix"()
+    unless $P10, rx70_fail
+    rx70_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=postcircumfix")
+    rx70_pos = $P10."pos"()
+  alt75_end:
+.annotate "line", 24
+  # rx pass
+    rx70_cur."!cursor_pass"(rx70_pos, "postfixish")
+    rx70_cur."!cursor_debug"("PASS  ", "postfixish", " at pos=", rx70_pos)
+    .return (rx70_cur)
+  rx70_fail:
+.annotate "line", 5
+    (rx70_rep, rx70_pos, $I10, $P10) = rx70_cur."!mark_fail"(0)
+    lt rx70_pos, -1, rx70_done
+    eq rx70_pos, -1, rx70_fail
+    jump $I10
+  rx70_done:
+    rx70_cur."!cursor_fail"()
+    rx70_cur."!cursor_debug"("FAIL  ", "postfixish")
+    .return (rx70_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__postfixish"  :subid("35_1258051398.73583") :method
+.annotate "line", 5
+    $P72 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
+    $P73 = self."!PREFIX__!subrule"("OPER=postfix", "")
+    new $P74, "ResizablePMCArray"
+    push $P74, $P72
+    push $P74, $P73
+    .return ($P74)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_delimited"  :subid("36_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx77_tgt
+    .local int rx77_pos
+    .local int rx77_off
+    .local int rx77_eos
+    .local int rx77_rep
+    .local pmc rx77_cur
+    (rx77_cur, rx77_pos, rx77_tgt, $I10) = self."!cursor_start"()
+    rx77_cur."!cursor_debug"("START ", "quote_delimited")
+    rx77_cur."!cursor_caparray"("quote_atom")
+    .lex unicode:"$\x{a2}", rx77_cur
+    .local pmc match
+    .lex "$/", match
+    length rx77_eos, rx77_tgt
+    set rx77_off, 0
+    lt $I10, 2, rx77_start
+    sub rx77_off, $I10, 1
+    substr rx77_tgt, rx77_tgt, rx77_off
+  rx77_start:
+.annotate "line", 31
+  # rx subrule "starter" subtype=capture negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."starter"()
+    unless $P10, rx77_fail
+    rx77_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("starter")
+    rx77_pos = $P10."pos"()
+  # rx rxquantr81 ** 0..*
+    set_addr $I82, rxquantr81_done
+    rx77_cur."!mark_push"(0, rx77_pos, $I82)
+  rxquantr81_loop:
+  # rx subrule "quote_atom" subtype=capture negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."quote_atom"()
+    unless $P10, rx77_fail
+    rx77_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_atom")
+    rx77_pos = $P10."pos"()
+    (rx77_rep) = rx77_cur."!mark_commit"($I82)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I82)
+    goto rxquantr81_loop
+  rxquantr81_done:
+  # rx subrule "stopper" subtype=capture negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."stopper"()
+    unless $P10, rx77_fail
+    rx77_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("stopper")
+    rx77_pos = $P10."pos"()
+.annotate "line", 30
+  # rx pass
+    rx77_cur."!cursor_pass"(rx77_pos, "quote_delimited")
+    rx77_cur."!cursor_debug"("PASS  ", "quote_delimited", " at pos=", rx77_pos)
+    .return (rx77_cur)
+  rx77_fail:
+.annotate "line", 5
+    (rx77_rep, rx77_pos, $I10, $P10) = rx77_cur."!mark_fail"(0)
+    lt rx77_pos, -1, rx77_done
+    eq rx77_pos, -1, rx77_fail
+    jump $I10
+  rx77_done:
+    rx77_cur."!cursor_fail"()
+    rx77_cur."!cursor_debug"("FAIL  ", "quote_delimited")
+    .return (rx77_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_delimited"  :subid("37_1258051398.73583") :method
+.annotate "line", 5
+    $P79 = self."!PREFIX__!subrule"("starter", "")
+    new $P80, "ResizablePMCArray"
+    push $P80, $P79
+    .return ($P80)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_atom"  :subid("38_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx84_tgt
+    .local int rx84_pos
+    .local int rx84_off
+    .local int rx84_eos
+    .local int rx84_rep
+    .local pmc rx84_cur
+    (rx84_cur, rx84_pos, rx84_tgt, $I10) = self."!cursor_start"()
+    rx84_cur."!cursor_debug"("START ", "quote_atom")
+    .lex unicode:"$\x{a2}", rx84_cur
+    .local pmc match
+    .lex "$/", match
+    length rx84_eos, rx84_tgt
+    set rx84_off, 0
+    lt $I10, 2, rx84_start
+    sub rx84_off, $I10, 1
+    substr rx84_tgt, rx84_tgt, rx84_off
+  rx84_start:
+.annotate "line", 35
+  # rx subrule "stopper" subtype=zerowidth negate=1
+    rx84_cur."!cursor_pos"(rx84_pos)
+    $P10 = rx84_cur."stopper"()
+    if $P10, rx84_fail
+  alt87_0:
+.annotate "line", 36
+    set_addr $I10, alt87_1
+    rx84_cur."!mark_push"(0, rx84_pos, $I10)
+.annotate "line", 37
+  # rx subrule "quote_escape" subtype=capture negate=
+    rx84_cur."!cursor_pos"(rx84_pos)
+    $P10 = rx84_cur."quote_escape"()
+    unless $P10, rx84_fail
+    rx84_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_escape")
+    rx84_pos = $P10."pos"()
+    goto alt87_end
+  alt87_1:
+.annotate "line", 38
+  # rx rxquantr88 ** 1..*
+    set_addr $I91, rxquantr88_done
+    rx84_cur."!mark_push"(0, -1, $I91)
+  rxquantr88_loop:
+  # rx subrule "stopper" subtype=zerowidth negate=1
+    rx84_cur."!cursor_pos"(rx84_pos)
+    $P10 = rx84_cur."stopper"()
+    if $P10, rx84_fail
+  # rx subrule "quote_escape" subtype=zerowidth negate=1
+    rx84_cur."!cursor_pos"(rx84_pos)
+    $P10 = rx84_cur."quote_escape"()
+    if $P10, rx84_fail
+  # rx charclass .
+    ge rx84_pos, rx84_eos, rx84_fail
+    inc rx84_pos
+    (rx84_rep) = rx84_cur."!mark_commit"($I91)
+    rx84_cur."!mark_push"(rx84_rep, rx84_pos, $I91)
+    goto rxquantr88_loop
+  rxquantr88_done:
+  alt87_end:
+.annotate "line", 34
+  # rx pass
+    rx84_cur."!cursor_pass"(rx84_pos, "quote_atom")
+    rx84_cur."!cursor_debug"("PASS  ", "quote_atom", " at pos=", rx84_pos)
+    .return (rx84_cur)
+  rx84_fail:
+.annotate "line", 5
+    (rx84_rep, rx84_pos, $I10, $P10) = rx84_cur."!mark_fail"(0)
+    lt rx84_pos, -1, rx84_done
+    eq rx84_pos, -1, rx84_fail
+    jump $I10
+  rx84_done:
+    rx84_cur."!cursor_fail"()
+    rx84_cur."!cursor_debug"("FAIL  ", "quote_atom")
+    .return (rx84_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_atom"  :subid("39_1258051398.73583") :method
+.annotate "line", 5
+    new $P86, "ResizablePMCArray"
+    push $P86, ""
+    .return ($P86)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "hexint"  :subid("40_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx93_tgt
+    .local int rx93_pos
+    .local int rx93_off
+    .local int rx93_eos
+    .local int rx93_rep
+    .local pmc rx93_cur
+    (rx93_cur, rx93_pos, rx93_tgt, $I10) = self."!cursor_start"()
+    rx93_cur."!cursor_debug"("START ", "hexint")
+    .lex unicode:"$\x{a2}", rx93_cur
+    .local pmc match
+    .lex "$/", match
+    length rx93_eos, rx93_tgt
+    set rx93_off, 0
+    lt $I10, 2, rx93_start
+    sub rx93_off, $I10, 1
+    substr rx93_tgt, rx93_tgt, rx93_off
+  rx93_start:
+.annotate "line", 42
+  # rx rxquantr96 ** 1..*
+    set_addr $I99, rxquantr96_done
+    rx93_cur."!mark_push"(0, -1, $I99)
+  rxquantr96_loop:
+  # rx rxquantr97 ** 1..*
+    set_addr $I98, rxquantr97_done
+    rx93_cur."!mark_push"(0, -1, $I98)
+  rxquantr97_loop:
+  # rx enumcharlist negate=0 
+    ge rx93_pos, rx93_eos, rx93_fail
+    sub $I10, rx93_pos, rx93_off
+    substr $S10, rx93_tgt, $I10, 1
+    index $I11, "0123456789abcdefABCDEF", $S10
+    lt $I11, 0, rx93_fail
+    inc rx93_pos
+    (rx93_rep) = rx93_cur."!mark_commit"($I98)
+    rx93_cur."!mark_push"(rx93_rep, rx93_pos, $I98)
+    goto rxquantr97_loop
+  rxquantr97_done:
+    (rx93_rep) = rx93_cur."!mark_commit"($I99)
+    rx93_cur."!mark_push"(rx93_rep, rx93_pos, $I99)
+  # rx literal  "_"
+    add $I11, rx93_pos, 1
+    gt $I11, rx93_eos, rx93_fail
+    sub $I11, rx93_pos, rx93_off
+    substr $S10, rx93_tgt, $I11, 1
+    ne $S10, "_", rx93_fail
+    add rx93_pos, 1
+    goto rxquantr96_loop
+  rxquantr96_done:
+  # rx pass
+    rx93_cur."!cursor_pass"(rx93_pos, "hexint")
+    rx93_cur."!cursor_debug"("PASS  ", "hexint", " at pos=", rx93_pos)
+    .return (rx93_cur)
+  rx93_fail:
+.annotate "line", 5
+    (rx93_rep, rx93_pos, $I10, $P10) = rx93_cur."!mark_fail"(0)
+    lt rx93_pos, -1, rx93_done
+    eq rx93_pos, -1, rx93_fail
+    jump $I10
+  rx93_done:
+    rx93_cur."!cursor_fail"()
+    rx93_cur."!cursor_debug"("FAIL  ", "hexint")
+    .return (rx93_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__hexint"  :subid("41_1258051398.73583") :method
+.annotate "line", 5
+    new $P95, "ResizablePMCArray"
+    push $P95, ""
+    .return ($P95)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "hexints"  :subid("42_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx101_tgt
+    .local int rx101_pos
+    .local int rx101_off
+    .local int rx101_eos
+    .local int rx101_rep
+    .local pmc rx101_cur
+    (rx101_cur, rx101_pos, rx101_tgt, $I10) = self."!cursor_start"()
+    rx101_cur."!cursor_debug"("START ", "hexints")
+    rx101_cur."!cursor_caparray"("hexint")
+    .lex unicode:"$\x{a2}", rx101_cur
+    .local pmc match
+    .lex "$/", match
+    length rx101_eos, rx101_tgt
+    set rx101_off, 0
+    lt $I10, 2, rx101_start
+    sub rx101_off, $I10, 1
+    substr rx101_tgt, rx101_tgt, rx101_off
+  rx101_start:
+.annotate "line", 43
+  # rx rxquantr104 ** 1..*
+    set_addr $I105, rxquantr104_done
+    rx101_cur."!mark_push"(0, -1, $I105)
+  rxquantr104_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx101_cur."!cursor_pos"(rx101_pos)
+    $P10 = rx101_cur."ws"()
+    unless $P10, rx101_fail
+    rx101_pos = $P10."pos"()
+  # rx subrule "hexint" subtype=capture negate=
+    rx101_cur."!cursor_pos"(rx101_pos)
+    $P10 = rx101_cur."hexint"()
+    unless $P10, rx101_fail
+    rx101_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexint")
+    rx101_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx101_cur."!cursor_pos"(rx101_pos)
+    $P10 = rx101_cur."ws"()
+    unless $P10, rx101_fail
+    rx101_pos = $P10."pos"()
+    (rx101_rep) = rx101_cur."!mark_commit"($I105)
+    rx101_cur."!mark_push"(rx101_rep, rx101_pos, $I105)
+  # rx literal  ","
+    add $I11, rx101_pos, 1
+    gt $I11, rx101_eos, rx101_fail
+    sub $I11, rx101_pos, rx101_off
+    substr $S10, rx101_tgt, $I11, 1
+    ne $S10, ",", rx101_fail
+    add rx101_pos, 1
+    goto rxquantr104_loop
+  rxquantr104_done:
+  # rx pass
+    rx101_cur."!cursor_pass"(rx101_pos, "hexints")
+    rx101_cur."!cursor_debug"("PASS  ", "hexints", " at pos=", rx101_pos)
+    .return (rx101_cur)
+  rx101_fail:
+.annotate "line", 5
+    (rx101_rep, rx101_pos, $I10, $P10) = rx101_cur."!mark_fail"(0)
+    lt rx101_pos, -1, rx101_done
+    eq rx101_pos, -1, rx101_fail
+    jump $I10
+  rx101_done:
+    rx101_cur."!cursor_fail"()
+    rx101_cur."!cursor_debug"("FAIL  ", "hexints")
+    .return (rx101_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__hexints"  :subid("43_1258051398.73583") :method
+.annotate "line", 5
+    new $P103, "ResizablePMCArray"
+    push $P103, ""
+    .return ($P103)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "octint"  :subid("44_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx107_tgt
+    .local int rx107_pos
+    .local int rx107_off
+    .local int rx107_eos
+    .local int rx107_rep
+    .local pmc rx107_cur
+    (rx107_cur, rx107_pos, rx107_tgt, $I10) = self."!cursor_start"()
+    rx107_cur."!cursor_debug"("START ", "octint")
+    .lex unicode:"$\x{a2}", rx107_cur
+    .local pmc match
+    .lex "$/", match
+    length rx107_eos, rx107_tgt
+    set rx107_off, 0
+    lt $I10, 2, rx107_start
+    sub rx107_off, $I10, 1
+    substr rx107_tgt, rx107_tgt, rx107_off
+  rx107_start:
+.annotate "line", 45
+  # rx rxquantr110 ** 1..*
+    set_addr $I113, rxquantr110_done
+    rx107_cur."!mark_push"(0, -1, $I113)
+  rxquantr110_loop:
+  # rx rxquantr111 ** 1..*
+    set_addr $I112, rxquantr111_done
+    rx107_cur."!mark_push"(0, -1, $I112)
+  rxquantr111_loop:
+  # rx enumcharlist negate=0 
+    ge rx107_pos, rx107_eos, rx107_fail
+    sub $I10, rx107_pos, rx107_off
+    substr $S10, rx107_tgt, $I10, 1
+    index $I11, "01234567", $S10
+    lt $I11, 0, rx107_fail
+    inc rx107_pos
+    (rx107_rep) = rx107_cur."!mark_commit"($I112)
+    rx107_cur."!mark_push"(rx107_rep, rx107_pos, $I112)
+    goto rxquantr111_loop
+  rxquantr111_done:
+    (rx107_rep) = rx107_cur."!mark_commit"($I113)
+    rx107_cur."!mark_push"(rx107_rep, rx107_pos, $I113)
+  # rx literal  "_"
+    add $I11, rx107_pos, 1
+    gt $I11, rx107_eos, rx107_fail
+    sub $I11, rx107_pos, rx107_off
+    substr $S10, rx107_tgt, $I11, 1
+    ne $S10, "_", rx107_fail
+    add rx107_pos, 1
+    goto rxquantr110_loop
+  rxquantr110_done:
+  # rx pass
+    rx107_cur."!cursor_pass"(rx107_pos, "octint")
+    rx107_cur."!cursor_debug"("PASS  ", "octint", " at pos=", rx107_pos)
+    .return (rx107_cur)
+  rx107_fail:
+.annotate "line", 5
+    (rx107_rep, rx107_pos, $I10, $P10) = rx107_cur."!mark_fail"(0)
+    lt rx107_pos, -1, rx107_done
+    eq rx107_pos, -1, rx107_fail
+    jump $I10
+  rx107_done:
+    rx107_cur."!cursor_fail"()
+    rx107_cur."!cursor_debug"("FAIL  ", "octint")
+    .return (rx107_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__octint"  :subid("45_1258051398.73583") :method
+.annotate "line", 5
+    new $P109, "ResizablePMCArray"
+    push $P109, ""
+    .return ($P109)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "octints"  :subid("46_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx115_tgt
+    .local int rx115_pos
+    .local int rx115_off
+    .local int rx115_eos
+    .local int rx115_rep
+    .local pmc rx115_cur
+    (rx115_cur, rx115_pos, rx115_tgt, $I10) = self."!cursor_start"()
+    rx115_cur."!cursor_debug"("START ", "octints")
+    rx115_cur."!cursor_caparray"("octint")
+    .lex unicode:"$\x{a2}", rx115_cur
+    .local pmc match
+    .lex "$/", match
+    length rx115_eos, rx115_tgt
+    set rx115_off, 0
+    lt $I10, 2, rx115_start
+    sub rx115_off, $I10, 1
+    substr rx115_tgt, rx115_tgt, rx115_off
+  rx115_start:
+.annotate "line", 46
+  # rx rxquantr118 ** 1..*
+    set_addr $I119, rxquantr118_done
+    rx115_cur."!mark_push"(0, -1, $I119)
+  rxquantr118_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx115_cur."!cursor_pos"(rx115_pos)
+    $P10 = rx115_cur."ws"()
+    unless $P10, rx115_fail
+    rx115_pos = $P10."pos"()
+  # rx subrule "octint" subtype=capture negate=
+    rx115_cur."!cursor_pos"(rx115_pos)
+    $P10 = rx115_cur."octint"()
+    unless $P10, rx115_fail
+    rx115_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octint")
+    rx115_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx115_cur."!cursor_pos"(rx115_pos)
+    $P10 = rx115_cur."ws"()
+    unless $P10, rx115_fail
+    rx115_pos = $P10."pos"()
+    (rx115_rep) = rx115_cur."!mark_commit"($I119)
+    rx115_cur."!mark_push"(rx115_rep, rx115_pos, $I119)
+  # rx literal  ","
+    add $I11, rx115_pos, 1
+    gt $I11, rx115_eos, rx115_fail
+    sub $I11, rx115_pos, rx115_off
+    substr $S10, rx115_tgt, $I11, 1
+    ne $S10, ",", rx115_fail
+    add rx115_pos, 1
+    goto rxquantr118_loop
+  rxquantr118_done:
+  # rx pass
+    rx115_cur."!cursor_pass"(rx115_pos, "octints")
+    rx115_cur."!cursor_debug"("PASS  ", "octints", " at pos=", rx115_pos)
+    .return (rx115_cur)
+  rx115_fail:
+.annotate "line", 5
+    (rx115_rep, rx115_pos, $I10, $P10) = rx115_cur."!mark_fail"(0)
+    lt rx115_pos, -1, rx115_done
+    eq rx115_pos, -1, rx115_fail
+    jump $I10
+  rx115_done:
+    rx115_cur."!cursor_fail"()
+    rx115_cur."!cursor_debug"("FAIL  ", "octints")
+    .return (rx115_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__octints"  :subid("47_1258051398.73583") :method
+.annotate "line", 5
+    new $P117, "ResizablePMCArray"
+    push $P117, ""
+    .return ($P117)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "integer"  :subid("48_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx121_tgt
+    .local int rx121_pos
+    .local int rx121_off
+    .local int rx121_eos
+    .local int rx121_rep
+    .local pmc rx121_cur
+    (rx121_cur, rx121_pos, rx121_tgt, $I10) = self."!cursor_start"()
+    rx121_cur."!cursor_debug"("START ", "integer")
+    .lex unicode:"$\x{a2}", rx121_cur
+    .local pmc match
+    .lex "$/", match
+    length rx121_eos, rx121_tgt
+    set rx121_off, 0
+    lt $I10, 2, rx121_start
+    sub rx121_off, $I10, 1
+    substr rx121_tgt, rx121_tgt, rx121_off
+  rx121_start:
+  alt126_0:
+.annotate "line", 49
+    set_addr $I10, alt126_1
+    rx121_cur."!mark_push"(0, rx121_pos, $I10)
+.annotate "line", 50
+  # rx literal  "0"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "0", rx121_fail
+    add rx121_pos, 1
+  alt127_0:
+    set_addr $I10, alt127_1
+    rx121_cur."!mark_push"(0, rx121_pos, $I10)
+  # rx literal  "b"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "b", rx121_fail
+    add rx121_pos, 1
+  # rx subcapture "binint"
+    set_addr $I10, rxcap_132_fail
+    rx121_cur."!mark_push"(0, rx121_pos, $I10)
+  # rx rxquantr128 ** 1..*
+    set_addr $I131, rxquantr128_done
+    rx121_cur."!mark_push"(0, -1, $I131)
+  rxquantr128_loop:
+  # rx rxquantr129 ** 1..*
+    set_addr $I130, rxquantr129_done
+    rx121_cur."!mark_push"(0, -1, $I130)
+  rxquantr129_loop:
+  # rx enumcharlist negate=0 
+    ge rx121_pos, rx121_eos, rx121_fail
+    sub $I10, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I10, 1
+    index $I11, "01", $S10
+    lt $I11, 0, rx121_fail
+    inc rx121_pos
+    (rx121_rep) = rx121_cur."!mark_commit"($I130)
+    rx121_cur."!mark_push"(rx121_rep, rx121_pos, $I130)
+    goto rxquantr129_loop
+  rxquantr129_done:
+    (rx121_rep) = rx121_cur."!mark_commit"($I131)
+    rx121_cur."!mark_push"(rx121_rep, rx121_pos, $I131)
+  # rx literal  "_"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "_", rx121_fail
+    add rx121_pos, 1
+    goto rxquantr128_loop
+  rxquantr128_done:
+    set_addr $I10, rxcap_132_fail
+    ($I12, $I11) = rx121_cur."!mark_peek"($I10)
+    rx121_cur."!cursor_pos"($I11)
+    ($P10) = rx121_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx121_pos, "")
+    rx121_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("binint")
+    goto rxcap_132_done
+  rxcap_132_fail:
+    goto rx121_fail
+  rxcap_132_done:
+    goto alt127_end
+  alt127_1:
+    set_addr $I10, alt127_2
+    rx121_cur."!mark_push"(0, rx121_pos, $I10)
+.annotate "line", 51
+  # rx literal  "o"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "o", rx121_fail
+    add rx121_pos, 1
+  # rx subrule "octint" subtype=capture negate=
+    rx121_cur."!cursor_pos"(rx121_pos)
+    $P10 = rx121_cur."octint"()
+    unless $P10, rx121_fail
+    rx121_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octint")
+    rx121_pos = $P10."pos"()
+    goto alt127_end
+  alt127_2:
+    set_addr $I10, alt127_3
+    rx121_cur."!mark_push"(0, rx121_pos, $I10)
+.annotate "line", 52
+  # rx literal  "x"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "x", rx121_fail
+    add rx121_pos, 1
+  # rx subrule "hexint" subtype=capture negate=
+    rx121_cur."!cursor_pos"(rx121_pos)
+    $P10 = rx121_cur."hexint"()
+    unless $P10, rx121_fail
+    rx121_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexint")
+    rx121_pos = $P10."pos"()
+    goto alt127_end
+  alt127_3:
+.annotate "line", 53
+  # rx literal  "d"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "d", rx121_fail
+    add rx121_pos, 1
+  # rx subcapture "decint"
+    set_addr $I10, rxcap_135_fail
+    rx121_cur."!mark_push"(0, rx121_pos, $I10)
+  # rx rxquantr133 ** 1..*
+    set_addr $I134, rxquantr133_done
+    rx121_cur."!mark_push"(0, -1, $I134)
+  rxquantr133_loop:
+  # rx charclass_q d r 1..-1
+    sub $I10, rx121_pos, rx121_off
+    find_not_cclass $I11, 8, rx121_tgt, $I10, rx121_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx121_fail
+    add rx121_pos, rx121_off, $I11
+    (rx121_rep) = rx121_cur."!mark_commit"($I134)
+    rx121_cur."!mark_push"(rx121_rep, rx121_pos, $I134)
+  # rx literal  "_"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "_", rx121_fail
+    add rx121_pos, 1
+    goto rxquantr133_loop
+  rxquantr133_done:
+    set_addr $I10, rxcap_135_fail
+    ($I12, $I11) = rx121_cur."!mark_peek"($I10)
+    rx121_cur."!cursor_pos"($I11)
+    ($P10) = rx121_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx121_pos, "")
+    rx121_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("decint")
+    goto rxcap_135_done
+  rxcap_135_fail:
+    goto rx121_fail
+  rxcap_135_done:
+  alt127_end:
+.annotate "line", 50
+    goto alt126_end
+  alt126_1:
+.annotate "line", 55
+  # rx subcapture "decint"
+    set_addr $I10, rxcap_138_fail
+    rx121_cur."!mark_push"(0, rx121_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx121_pos, rx121_off
+    find_not_cclass $I11, 8, rx121_tgt, $I10, rx121_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx121_fail
+    add rx121_pos, rx121_off, $I11
+  # rx rxquantr136 ** 0..*
+    set_addr $I137, rxquantr136_done
+    rx121_cur."!mark_push"(0, rx121_pos, $I137)
+  rxquantr136_loop:
+  # rx literal  "_"
+    add $I11, rx121_pos, 1
+    gt $I11, rx121_eos, rx121_fail
+    sub $I11, rx121_pos, rx121_off
+    substr $S10, rx121_tgt, $I11, 1
+    ne $S10, "_", rx121_fail
+    add rx121_pos, 1
+  # rx charclass_q d r 1..-1
+    sub $I10, rx121_pos, rx121_off
+    find_not_cclass $I11, 8, rx121_tgt, $I10, rx121_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx121_fail
+    add rx121_pos, rx121_off, $I11
+    (rx121_rep) = rx121_cur."!mark_commit"($I137)
+    rx121_cur."!mark_push"(rx121_rep, rx121_pos, $I137)
+    goto rxquantr136_loop
+  rxquantr136_done:
+    set_addr $I10, rxcap_138_fail
+    ($I12, $I11) = rx121_cur."!mark_peek"($I10)
+    rx121_cur."!cursor_pos"($I11)
+    ($P10) = rx121_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx121_pos, "")
+    rx121_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("decint")
+    goto rxcap_138_done
+  rxcap_138_fail:
+    goto rx121_fail
+  rxcap_138_done:
+  alt126_end:
+.annotate "line", 48
+  # rx pass
+    rx121_cur."!cursor_pass"(rx121_pos, "integer")
+    rx121_cur."!cursor_debug"("PASS  ", "integer", " at pos=", rx121_pos)
+    .return (rx121_cur)
+  rx121_fail:
+.annotate "line", 5
+    (rx121_rep, rx121_pos, $I10, $P10) = rx121_cur."!mark_fail"(0)
+    lt rx121_pos, -1, rx121_done
+    eq rx121_pos, -1, rx121_fail
+    jump $I10
+  rx121_done:
+    rx121_cur."!cursor_fail"()
+    rx121_cur."!cursor_debug"("FAIL  ", "integer")
+    .return (rx121_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__integer"  :subid("49_1258051398.73583") :method
+.annotate "line", 5
+    $P123 = self."!PREFIX__!subrule"("hexint", "0x")
+    $P124 = self."!PREFIX__!subrule"("octint", "0o")
+    new $P125, "ResizablePMCArray"
+    push $P125, ""
+    push $P125, "0d"
+    push $P125, $P123
+    push $P125, $P124
+    push $P125, "0b"
+    .return ($P125)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "dec_number"  :subid("50_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx140_tgt
+    .local int rx140_pos
+    .local int rx140_off
+    .local int rx140_eos
+    .local int rx140_rep
+    .local pmc rx140_cur
+    (rx140_cur, rx140_pos, rx140_tgt, $I10) = self."!cursor_start"()
+    rx140_cur."!cursor_debug"("START ", "dec_number")
+    rx140_cur."!cursor_caparray"("escale")
+    .lex unicode:"$\x{a2}", rx140_cur
+    .local pmc match
+    .lex "$/", match
+    length rx140_eos, rx140_tgt
+    set rx140_off, 0
+    lt $I10, 2, rx140_start
+    sub rx140_off, $I10, 1
+    substr rx140_tgt, rx140_tgt, rx140_off
+  rx140_start:
+  alt143_0:
+.annotate "line", 59
+    set_addr $I10, alt143_1
+    rx140_cur."!mark_push"(0, rx140_pos, $I10)
+.annotate "line", 60
+  # rx subcapture "coeff"
+    set_addr $I10, rxcap_144_fail
+    rx140_cur."!mark_push"(0, rx140_pos, $I10)
+  # rx literal  "."
+    add $I11, rx140_pos, 1
+    gt $I11, rx140_eos, rx140_fail
+    sub $I11, rx140_pos, rx140_off
+    substr $S10, rx140_tgt, $I11, 1
+    ne $S10, ".", rx140_fail
+    add rx140_pos, 1
+  # rx charclass_q d r 1..-1
+    sub $I10, rx140_pos, rx140_off
+    find_not_cclass $I11, 8, rx140_tgt, $I10, rx140_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx140_fail
+    add rx140_pos, rx140_off, $I11
+    set_addr $I10, rxcap_144_fail
+    ($I12, $I11) = rx140_cur."!mark_peek"($I10)
+    rx140_cur."!cursor_pos"($I11)
+    ($P10) = rx140_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx140_pos, "")
+    rx140_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("coeff")
+    goto rxcap_144_done
+  rxcap_144_fail:
+    goto rx140_fail
+  rxcap_144_done:
+  # rx rxquantr145 ** 0..1
+    set_addr $I146, rxquantr145_done
+    rx140_cur."!mark_push"(0, rx140_pos, $I146)
+  rxquantr145_loop:
+  # rx subrule "escale" subtype=capture negate=
+    rx140_cur."!cursor_pos"(rx140_pos)
+    $P10 = rx140_cur."escale"()
+    unless $P10, rx140_fail
+    rx140_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("escale")
+    rx140_pos = $P10."pos"()
+    (rx140_rep) = rx140_cur."!mark_commit"($I146)
+  rxquantr145_done:
+    goto alt143_end
+  alt143_1:
+    set_addr $I10, alt143_2
+    rx140_cur."!mark_push"(0, rx140_pos, $I10)
+.annotate "line", 61
+  # rx subcapture "coeff"
+    set_addr $I10, rxcap_147_fail
+    rx140_cur."!mark_push"(0, rx140_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx140_pos, rx140_off
+    find_not_cclass $I11, 8, rx140_tgt, $I10, rx140_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx140_fail
+    add rx140_pos, rx140_off, $I11
+  # rx literal  "."
+    add $I11, rx140_pos, 1
+    gt $I11, rx140_eos, rx140_fail
+    sub $I11, rx140_pos, rx140_off
+    substr $S10, rx140_tgt, $I11, 1
+    ne $S10, ".", rx140_fail
+    add rx140_pos, 1
+  # rx charclass_q d r 1..-1
+    sub $I10, rx140_pos, rx140_off
+    find_not_cclass $I11, 8, rx140_tgt, $I10, rx140_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx140_fail
+    add rx140_pos, rx140_off, $I11
+    set_addr $I10, rxcap_147_fail
+    ($I12, $I11) = rx140_cur."!mark_peek"($I10)
+    rx140_cur."!cursor_pos"($I11)
+    ($P10) = rx140_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx140_pos, "")
+    rx140_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("coeff")
+    goto rxcap_147_done
+  rxcap_147_fail:
+    goto rx140_fail
+  rxcap_147_done:
+  # rx rxquantr148 ** 0..1
+    set_addr $I149, rxquantr148_done
+    rx140_cur."!mark_push"(0, rx140_pos, $I149)
+  rxquantr148_loop:
+  # rx subrule "escale" subtype=capture negate=
+    rx140_cur."!cursor_pos"(rx140_pos)
+    $P10 = rx140_cur."escale"()
+    unless $P10, rx140_fail
+    rx140_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("escale")
+    rx140_pos = $P10."pos"()
+    (rx140_rep) = rx140_cur."!mark_commit"($I149)
+  rxquantr148_done:
+    goto alt143_end
+  alt143_2:
+.annotate "line", 62
+  # rx subcapture "coeff"
+    set_addr $I10, rxcap_150_fail
+    rx140_cur."!mark_push"(0, rx140_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx140_pos, rx140_off
+    find_not_cclass $I11, 8, rx140_tgt, $I10, rx140_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx140_fail
+    add rx140_pos, rx140_off, $I11
+    set_addr $I10, rxcap_150_fail
+    ($I12, $I11) = rx140_cur."!mark_peek"($I10)
+    rx140_cur."!cursor_pos"($I11)
+    ($P10) = rx140_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx140_pos, "")
+    rx140_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("coeff")
+    goto rxcap_150_done
+  rxcap_150_fail:
+    goto rx140_fail
+  rxcap_150_done:
+  # rx subrule "escale" subtype=capture negate=
+    rx140_cur."!cursor_pos"(rx140_pos)
+    $P10 = rx140_cur."escale"()
+    unless $P10, rx140_fail
+    rx140_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("escale")
+    rx140_pos = $P10."pos"()
+  alt143_end:
+.annotate "line", 59
+  # rx pass
+    rx140_cur."!cursor_pass"(rx140_pos, "dec_number")
+    rx140_cur."!cursor_debug"("PASS  ", "dec_number", " at pos=", rx140_pos)
+    .return (rx140_cur)
+  rx140_fail:
+.annotate "line", 5
+    (rx140_rep, rx140_pos, $I10, $P10) = rx140_cur."!mark_fail"(0)
+    lt rx140_pos, -1, rx140_done
+    eq rx140_pos, -1, rx140_fail
+    jump $I10
+  rx140_done:
+    rx140_cur."!cursor_fail"()
+    rx140_cur."!cursor_debug"("FAIL  ", "dec_number")
+    .return (rx140_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__dec_number"  :subid("51_1258051398.73583") :method
+.annotate "line", 5
+    new $P142, "ResizablePMCArray"
+    push $P142, ""
+    push $P142, ""
+    push $P142, "."
+    .return ($P142)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "escale"  :subid("52_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx152_tgt
+    .local int rx152_pos
+    .local int rx152_off
+    .local int rx152_eos
+    .local int rx152_rep
+    .local pmc rx152_cur
+    (rx152_cur, rx152_pos, rx152_tgt, $I10) = self."!cursor_start"()
+    rx152_cur."!cursor_debug"("START ", "escale")
+    .lex unicode:"$\x{a2}", rx152_cur
+    .local pmc match
+    .lex "$/", match
+    length rx152_eos, rx152_tgt
+    set rx152_off, 0
+    lt $I10, 2, rx152_start
+    sub rx152_off, $I10, 1
+    substr rx152_tgt, rx152_tgt, rx152_off
+  rx152_start:
+.annotate "line", 65
+  # rx enumcharlist negate=0 
+    ge rx152_pos, rx152_eos, rx152_fail
+    sub $I10, rx152_pos, rx152_off
+    substr $S10, rx152_tgt, $I10, 1
+    index $I11, "Ee", $S10
+    lt $I11, 0, rx152_fail
+    inc rx152_pos
+  # rx rxquantr155 ** 0..1
+    set_addr $I156, rxquantr155_done
+    rx152_cur."!mark_push"(0, rx152_pos, $I156)
+  rxquantr155_loop:
+  # rx enumcharlist negate=0 
+    ge rx152_pos, rx152_eos, rx152_fail
+    sub $I10, rx152_pos, rx152_off
+    substr $S10, rx152_tgt, $I10, 1
+    index $I11, "+-", $S10
+    lt $I11, 0, rx152_fail
+    inc rx152_pos
+    (rx152_rep) = rx152_cur."!mark_commit"($I156)
+  rxquantr155_done:
+  # rx charclass_q d r 1..-1
+    sub $I10, rx152_pos, rx152_off
+    find_not_cclass $I11, 8, rx152_tgt, $I10, rx152_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx152_fail
+    add rx152_pos, rx152_off, $I11
+  # rx pass
+    rx152_cur."!cursor_pass"(rx152_pos, "escale")
+    rx152_cur."!cursor_debug"("PASS  ", "escale", " at pos=", rx152_pos)
+    .return (rx152_cur)
+  rx152_fail:
+.annotate "line", 5
+    (rx152_rep, rx152_pos, $I10, $P10) = rx152_cur."!mark_fail"(0)
+    lt rx152_pos, -1, rx152_done
+    eq rx152_pos, -1, rx152_fail
+    jump $I10
+  rx152_done:
+    rx152_cur."!cursor_fail"()
+    rx152_cur."!cursor_debug"("FAIL  ", "escale")
+    .return (rx152_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__escale"  :subid("53_1258051398.73583") :method
+.annotate "line", 5
+    new $P154, "ResizablePMCArray"
+    push $P154, "e"
+    push $P154, "E"
+    .return ($P154)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape"  :subid("54_1258051398.73583") :method
+.annotate "line", 67
+    $P158 = self."!protoregex"("quote_escape")
+    .return ($P158)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape"  :subid("55_1258051398.73583") :method
+.annotate "line", 67
+    $P160 = self."!PREFIX__!protoregex"("quote_escape")
+    .return ($P160)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<backslash>"  :subid("56_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx162_tgt
+    .local int rx162_pos
+    .local int rx162_off
+    .local int rx162_eos
+    .local int rx162_rep
+    .local pmc rx162_cur
+    (rx162_cur, rx162_pos, rx162_tgt, $I10) = self."!cursor_start"()
+    rx162_cur."!cursor_debug"("START ", "quote_escape:sym<backslash>")
+    .lex unicode:"$\x{a2}", rx162_cur
+    .local pmc match
+    .lex "$/", match
+    length rx162_eos, rx162_tgt
+    set rx162_off, 0
+    lt $I10, 2, rx162_start
+    sub rx162_off, $I10, 1
+    substr rx162_tgt, rx162_tgt, rx162_off
+  rx162_start:
+.annotate "line", 68
+  # rx literal  "\\\\"
+    add $I11, rx162_pos, 2
+    gt $I11, rx162_eos, rx162_fail
+    sub $I11, rx162_pos, rx162_off
+    substr $S10, rx162_tgt, $I11, 2
+    ne $S10, "\\\\", rx162_fail
+    add rx162_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx162_cur."!cursor_pos"(rx162_pos)
+    $P10 = rx162_cur."quotemod_check"("q")
+    unless $P10, rx162_fail
+  # rx pass
+    rx162_cur."!cursor_pass"(rx162_pos, "quote_escape:sym<backslash>")
+    rx162_cur."!cursor_debug"("PASS  ", "quote_escape:sym<backslash>", " at pos=", rx162_pos)
+    .return (rx162_cur)
+  rx162_fail:
+.annotate "line", 5
+    (rx162_rep, rx162_pos, $I10, $P10) = rx162_cur."!mark_fail"(0)
+    lt rx162_pos, -1, rx162_done
+    eq rx162_pos, -1, rx162_fail
+    jump $I10
+  rx162_done:
+    rx162_cur."!cursor_fail"()
+    rx162_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<backslash>")
+    .return (rx162_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("57_1258051398.73583") :method
+.annotate "line", 5
+    new $P164, "ResizablePMCArray"
+    push $P164, "\\\\"
+    .return ($P164)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<stopper>"  :subid("58_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx166_tgt
+    .local int rx166_pos
+    .local int rx166_off
+    .local int rx166_eos
+    .local int rx166_rep
+    .local pmc rx166_cur
+    (rx166_cur, rx166_pos, rx166_tgt, $I10) = self."!cursor_start"()
+    rx166_cur."!cursor_debug"("START ", "quote_escape:sym<stopper>")
+    .lex unicode:"$\x{a2}", rx166_cur
+    .local pmc match
+    .lex "$/", match
+    length rx166_eos, rx166_tgt
+    set rx166_off, 0
+    lt $I10, 2, rx166_start
+    sub rx166_off, $I10, 1
+    substr rx166_tgt, rx166_tgt, rx166_off
+  rx166_start:
+.annotate "line", 69
+  # rx literal  "\\"
+    add $I11, rx166_pos, 1
+    gt $I11, rx166_eos, rx166_fail
+    sub $I11, rx166_pos, rx166_off
+    substr $S10, rx166_tgt, $I11, 1
+    ne $S10, "\\", rx166_fail
+    add rx166_pos, 1
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx166_cur."!cursor_pos"(rx166_pos)
+    $P10 = rx166_cur."quotemod_check"("q")
+    unless $P10, rx166_fail
+  # rx subrule "stopper" subtype=capture negate=
+    rx166_cur."!cursor_pos"(rx166_pos)
+    $P10 = rx166_cur."stopper"()
+    unless $P10, rx166_fail
+    rx166_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("stopper")
+    rx166_pos = $P10."pos"()
+  # rx pass
+    rx166_cur."!cursor_pass"(rx166_pos, "quote_escape:sym<stopper>")
+    rx166_cur."!cursor_debug"("PASS  ", "quote_escape:sym<stopper>", " at pos=", rx166_pos)
+    .return (rx166_cur)
+  rx166_fail:
+.annotate "line", 5
+    (rx166_rep, rx166_pos, $I10, $P10) = rx166_cur."!mark_fail"(0)
+    lt rx166_pos, -1, rx166_done
+    eq rx166_pos, -1, rx166_fail
+    jump $I10
+  rx166_done:
+    rx166_cur."!cursor_fail"()
+    rx166_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<stopper>")
+    .return (rx166_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("59_1258051398.73583") :method
+.annotate "line", 5
+    new $P168, "ResizablePMCArray"
+    push $P168, "\\"
+    .return ($P168)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<bs>"  :subid("60_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx170_tgt
+    .local int rx170_pos
+    .local int rx170_off
+    .local int rx170_eos
+    .local int rx170_rep
+    .local pmc rx170_cur
+    (rx170_cur, rx170_pos, rx170_tgt, $I10) = self."!cursor_start"()
+    rx170_cur."!cursor_debug"("START ", "quote_escape:sym<bs>")
+    .lex unicode:"$\x{a2}", rx170_cur
+    .local pmc match
+    .lex "$/", match
+    length rx170_eos, rx170_tgt
+    set rx170_off, 0
+    lt $I10, 2, rx170_start
+    sub rx170_off, $I10, 1
+    substr rx170_tgt, rx170_tgt, rx170_off
+  rx170_start:
+.annotate "line", 71
+  # rx literal  "\\b"
+    add $I11, rx170_pos, 2
+    gt $I11, rx170_eos, rx170_fail
+    sub $I11, rx170_pos, rx170_off
+    substr $S10, rx170_tgt, $I11, 2
+    ne $S10, "\\b", rx170_fail
+    add rx170_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx170_cur."!cursor_pos"(rx170_pos)
+    $P10 = rx170_cur."quotemod_check"("b")
+    unless $P10, rx170_fail
+  # rx pass
+    rx170_cur."!cursor_pass"(rx170_pos, "quote_escape:sym<bs>")
+    rx170_cur."!cursor_debug"("PASS  ", "quote_escape:sym<bs>", " at pos=", rx170_pos)
+    .return (rx170_cur)
+  rx170_fail:
+.annotate "line", 5
+    (rx170_rep, rx170_pos, $I10, $P10) = rx170_cur."!mark_fail"(0)
+    lt rx170_pos, -1, rx170_done
+    eq rx170_pos, -1, rx170_fail
+    jump $I10
+  rx170_done:
+    rx170_cur."!cursor_fail"()
+    rx170_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<bs>")
+    .return (rx170_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("61_1258051398.73583") :method
+.annotate "line", 5
+    new $P172, "ResizablePMCArray"
+    push $P172, "\\b"
+    .return ($P172)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<nl>"  :subid("62_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx174_tgt
+    .local int rx174_pos
+    .local int rx174_off
+    .local int rx174_eos
+    .local int rx174_rep
+    .local pmc rx174_cur
+    (rx174_cur, rx174_pos, rx174_tgt, $I10) = self."!cursor_start"()
+    rx174_cur."!cursor_debug"("START ", "quote_escape:sym<nl>")
+    .lex unicode:"$\x{a2}", rx174_cur
+    .local pmc match
+    .lex "$/", match
+    length rx174_eos, rx174_tgt
+    set rx174_off, 0
+    lt $I10, 2, rx174_start
+    sub rx174_off, $I10, 1
+    substr rx174_tgt, rx174_tgt, rx174_off
+  rx174_start:
+.annotate "line", 72
+  # rx literal  "\\n"
+    add $I11, rx174_pos, 2
+    gt $I11, rx174_eos, rx174_fail
+    sub $I11, rx174_pos, rx174_off
+    substr $S10, rx174_tgt, $I11, 2
+    ne $S10, "\\n", rx174_fail
+    add rx174_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx174_cur."!cursor_pos"(rx174_pos)
+    $P10 = rx174_cur."quotemod_check"("b")
+    unless $P10, rx174_fail
+  # rx pass
+    rx174_cur."!cursor_pass"(rx174_pos, "quote_escape:sym<nl>")
+    rx174_cur."!cursor_debug"("PASS  ", "quote_escape:sym<nl>", " at pos=", rx174_pos)
+    .return (rx174_cur)
+  rx174_fail:
+.annotate "line", 5
+    (rx174_rep, rx174_pos, $I10, $P10) = rx174_cur."!mark_fail"(0)
+    lt rx174_pos, -1, rx174_done
+    eq rx174_pos, -1, rx174_fail
+    jump $I10
+  rx174_done:
+    rx174_cur."!cursor_fail"()
+    rx174_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<nl>")
+    .return (rx174_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("63_1258051398.73583") :method
+.annotate "line", 5
+    new $P176, "ResizablePMCArray"
+    push $P176, "\\n"
+    .return ($P176)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<cr>"  :subid("64_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx178_tgt
+    .local int rx178_pos
+    .local int rx178_off
+    .local int rx178_eos
+    .local int rx178_rep
+    .local pmc rx178_cur
+    (rx178_cur, rx178_pos, rx178_tgt, $I10) = self."!cursor_start"()
+    rx178_cur."!cursor_debug"("START ", "quote_escape:sym<cr>")
+    .lex unicode:"$\x{a2}", rx178_cur
+    .local pmc match
+    .lex "$/", match
+    length rx178_eos, rx178_tgt
+    set rx178_off, 0
+    lt $I10, 2, rx178_start
+    sub rx178_off, $I10, 1
+    substr rx178_tgt, rx178_tgt, rx178_off
+  rx178_start:
+.annotate "line", 73
+  # rx literal  "\\r"
+    add $I11, rx178_pos, 2
+    gt $I11, rx178_eos, rx178_fail
+    sub $I11, rx178_pos, rx178_off
+    substr $S10, rx178_tgt, $I11, 2
+    ne $S10, "\\r", rx178_fail
+    add rx178_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx178_cur."!cursor_pos"(rx178_pos)
+    $P10 = rx178_cur."quotemod_check"("b")
+    unless $P10, rx178_fail
+  # rx pass
+    rx178_cur."!cursor_pass"(rx178_pos, "quote_escape:sym<cr>")
+    rx178_cur."!cursor_debug"("PASS  ", "quote_escape:sym<cr>", " at pos=", rx178_pos)
+    .return (rx178_cur)
+  rx178_fail:
+.annotate "line", 5
+    (rx178_rep, rx178_pos, $I10, $P10) = rx178_cur."!mark_fail"(0)
+    lt rx178_pos, -1, rx178_done
+    eq rx178_pos, -1, rx178_fail
+    jump $I10
+  rx178_done:
+    rx178_cur."!cursor_fail"()
+    rx178_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<cr>")
+    .return (rx178_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("65_1258051398.73583") :method
+.annotate "line", 5
+    new $P180, "ResizablePMCArray"
+    push $P180, "\\r"
+    .return ($P180)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<tab>"  :subid("66_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx182_tgt
+    .local int rx182_pos
+    .local int rx182_off
+    .local int rx182_eos
+    .local int rx182_rep
+    .local pmc rx182_cur
+    (rx182_cur, rx182_pos, rx182_tgt, $I10) = self."!cursor_start"()
+    rx182_cur."!cursor_debug"("START ", "quote_escape:sym<tab>")
+    .lex unicode:"$\x{a2}", rx182_cur
+    .local pmc match
+    .lex "$/", match
+    length rx182_eos, rx182_tgt
+    set rx182_off, 0
+    lt $I10, 2, rx182_start
+    sub rx182_off, $I10, 1
+    substr rx182_tgt, rx182_tgt, rx182_off
+  rx182_start:
+.annotate "line", 74
+  # rx literal  "\\t"
+    add $I11, rx182_pos, 2
+    gt $I11, rx182_eos, rx182_fail
+    sub $I11, rx182_pos, rx182_off
+    substr $S10, rx182_tgt, $I11, 2
+    ne $S10, "\\t", rx182_fail
+    add rx182_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx182_cur."!cursor_pos"(rx182_pos)
+    $P10 = rx182_cur."quotemod_check"("b")
+    unless $P10, rx182_fail
+  # rx pass
+    rx182_cur."!cursor_pass"(rx182_pos, "quote_escape:sym<tab>")
+    rx182_cur."!cursor_debug"("PASS  ", "quote_escape:sym<tab>", " at pos=", rx182_pos)
+    .return (rx182_cur)
+  rx182_fail:
+.annotate "line", 5
+    (rx182_rep, rx182_pos, $I10, $P10) = rx182_cur."!mark_fail"(0)
+    lt rx182_pos, -1, rx182_done
+    eq rx182_pos, -1, rx182_fail
+    jump $I10
+  rx182_done:
+    rx182_cur."!cursor_fail"()
+    rx182_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<tab>")
+    .return (rx182_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("67_1258051398.73583") :method
+.annotate "line", 5
+    new $P184, "ResizablePMCArray"
+    push $P184, "\\t"
+    .return ($P184)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<hex>"  :subid("68_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx186_tgt
+    .local int rx186_pos
+    .local int rx186_off
+    .local int rx186_eos
+    .local int rx186_rep
+    .local pmc rx186_cur
+    (rx186_cur, rx186_pos, rx186_tgt, $I10) = self."!cursor_start"()
+    rx186_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
+    .lex unicode:"$\x{a2}", rx186_cur
+    .local pmc match
+    .lex "$/", match
+    length rx186_eos, rx186_tgt
+    set rx186_off, 0
+    lt $I10, 2, rx186_start
+    sub rx186_off, $I10, 1
+    substr rx186_tgt, rx186_tgt, rx186_off
+  rx186_start:
+.annotate "line", 76
+  # rx literal  unicode:"\\x"
+    add $I11, rx186_pos, 2
+    gt $I11, rx186_eos, rx186_fail
+    sub $I11, rx186_pos, rx186_off
+    substr $S10, rx186_tgt, $I11, 2
+    ne $S10, unicode:"\\x", rx186_fail
+    add rx186_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx186_cur."!cursor_pos"(rx186_pos)
+    $P10 = rx186_cur."quotemod_check"("b")
+    unless $P10, rx186_fail
+  alt189_0:
+.annotate "line", 77
+    set_addr $I10, alt189_1
+    rx186_cur."!mark_push"(0, rx186_pos, $I10)
+  # rx subrule "hexint" subtype=capture negate=
+    rx186_cur."!cursor_pos"(rx186_pos)
+    $P10 = rx186_cur."hexint"()
+    unless $P10, rx186_fail
+    rx186_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexint")
+    rx186_pos = $P10."pos"()
+    goto alt189_end
+  alt189_1:
+  # rx literal  "["
+    add $I11, rx186_pos, 1
+    gt $I11, rx186_eos, rx186_fail
+    sub $I11, rx186_pos, rx186_off
+    substr $S10, rx186_tgt, $I11, 1
+    ne $S10, "[", rx186_fail
+    add rx186_pos, 1
+  # rx subrule "hexints" subtype=capture negate=
+    rx186_cur."!cursor_pos"(rx186_pos)
+    $P10 = rx186_cur."hexints"()
+    unless $P10, rx186_fail
+    rx186_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexints")
+    rx186_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx186_pos, 1
+    gt $I11, rx186_eos, rx186_fail
+    sub $I11, rx186_pos, rx186_off
+    substr $S10, rx186_tgt, $I11, 1
+    ne $S10, "]", rx186_fail
+    add rx186_pos, 1
+  alt189_end:
+.annotate "line", 75
+  # rx pass
+    rx186_cur."!cursor_pass"(rx186_pos, "quote_escape:sym<hex>")
+    rx186_cur."!cursor_debug"("PASS  ", "quote_escape:sym<hex>", " at pos=", rx186_pos)
+    .return (rx186_cur)
+  rx186_fail:
+.annotate "line", 5
+    (rx186_rep, rx186_pos, $I10, $P10) = rx186_cur."!mark_fail"(0)
+    lt rx186_pos, -1, rx186_done
+    eq rx186_pos, -1, rx186_fail
+    jump $I10
+  rx186_done:
+    rx186_cur."!cursor_fail"()
+    rx186_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<hex>")
+    .return (rx186_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("69_1258051398.73583") :method
+.annotate "line", 5
+    new $P188, "ResizablePMCArray"
+    push $P188, unicode:"\\x"
+    .return ($P188)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<oct>"  :subid("70_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx191_tgt
+    .local int rx191_pos
+    .local int rx191_off
+    .local int rx191_eos
+    .local int rx191_rep
+    .local pmc rx191_cur
+    (rx191_cur, rx191_pos, rx191_tgt, $I10) = self."!cursor_start"()
+    rx191_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
+    .lex unicode:"$\x{a2}", rx191_cur
+    .local pmc match
+    .lex "$/", match
+    length rx191_eos, rx191_tgt
+    set rx191_off, 0
+    lt $I10, 2, rx191_start
+    sub rx191_off, $I10, 1
+    substr rx191_tgt, rx191_tgt, rx191_off
+  rx191_start:
+.annotate "line", 80
+  # rx literal  "\\o"
+    add $I11, rx191_pos, 2
+    gt $I11, rx191_eos, rx191_fail
+    sub $I11, rx191_pos, rx191_off
+    substr $S10, rx191_tgt, $I11, 2
+    ne $S10, "\\o", rx191_fail
+    add rx191_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx191_cur."!cursor_pos"(rx191_pos)
+    $P10 = rx191_cur."quotemod_check"("b")
+    unless $P10, rx191_fail
+  alt194_0:
+.annotate "line", 81
+    set_addr $I10, alt194_1
+    rx191_cur."!mark_push"(0, rx191_pos, $I10)
+  # rx subrule "octint" subtype=capture negate=
+    rx191_cur."!cursor_pos"(rx191_pos)
+    $P10 = rx191_cur."octint"()
+    unless $P10, rx191_fail
+    rx191_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octint")
+    rx191_pos = $P10."pos"()
+    goto alt194_end
+  alt194_1:
+  # rx literal  "["
+    add $I11, rx191_pos, 1
+    gt $I11, rx191_eos, rx191_fail
+    sub $I11, rx191_pos, rx191_off
+    substr $S10, rx191_tgt, $I11, 1
+    ne $S10, "[", rx191_fail
+    add rx191_pos, 1
+  # rx subrule "octints" subtype=capture negate=
+    rx191_cur."!cursor_pos"(rx191_pos)
+    $P10 = rx191_cur."octints"()
+    unless $P10, rx191_fail
+    rx191_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octints")
+    rx191_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx191_pos, 1
+    gt $I11, rx191_eos, rx191_fail
+    sub $I11, rx191_pos, rx191_off
+    substr $S10, rx191_tgt, $I11, 1
+    ne $S10, "]", rx191_fail
+    add rx191_pos, 1
+  alt194_end:
+.annotate "line", 79
+  # rx pass
+    rx191_cur."!cursor_pass"(rx191_pos, "quote_escape:sym<oct>")
+    rx191_cur."!cursor_debug"("PASS  ", "quote_escape:sym<oct>", " at pos=", rx191_pos)
+    .return (rx191_cur)
+  rx191_fail:
+.annotate "line", 5
+    (rx191_rep, rx191_pos, $I10, $P10) = rx191_cur."!mark_fail"(0)
+    lt rx191_pos, -1, rx191_done
+    eq rx191_pos, -1, rx191_fail
+    jump $I10
+  rx191_done:
+    rx191_cur."!cursor_fail"()
+    rx191_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<oct>")
+    .return (rx191_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("71_1258051398.73583") :method
+.annotate "line", 5
+    new $P193, "ResizablePMCArray"
+    push $P193, "\\o"
+    .return ($P193)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<chr>"  :subid("72_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx196_tgt
+    .local int rx196_pos
+    .local int rx196_off
+    .local int rx196_eos
+    .local int rx196_rep
+    .local pmc rx196_cur
+    (rx196_cur, rx196_pos, rx196_tgt, $I10) = self."!cursor_start"()
+    rx196_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
+    .lex unicode:"$\x{a2}", rx196_cur
+    .local pmc match
+    .lex "$/", match
+    length rx196_eos, rx196_tgt
+    set rx196_off, 0
+    lt $I10, 2, rx196_start
+    sub rx196_off, $I10, 1
+    substr rx196_tgt, rx196_tgt, rx196_off
+  rx196_start:
+.annotate "line", 83
+  # rx literal  "\\c"
+    add $I11, rx196_pos, 2
+    gt $I11, rx196_eos, rx196_fail
+    sub $I11, rx196_pos, rx196_off
+    substr $S10, rx196_tgt, $I11, 2
+    ne $S10, "\\c", rx196_fail
+    add rx196_pos, 2
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx196_cur."!cursor_pos"(rx196_pos)
+    $P10 = rx196_cur."quotemod_check"("b")
+    unless $P10, rx196_fail
+  # rx subrule "charspec" subtype=capture negate=
+    rx196_cur."!cursor_pos"(rx196_pos)
+    $P10 = rx196_cur."charspec"()
+    unless $P10, rx196_fail
+    rx196_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charspec")
+    rx196_pos = $P10."pos"()
+  # rx pass
+    rx196_cur."!cursor_pass"(rx196_pos, "quote_escape:sym<chr>")
+    rx196_cur."!cursor_debug"("PASS  ", "quote_escape:sym<chr>", " at pos=", rx196_pos)
+    .return (rx196_cur)
+  rx196_fail:
+.annotate "line", 5
+    (rx196_rep, rx196_pos, $I10, $P10) = rx196_cur."!mark_fail"(0)
+    lt rx196_pos, -1, rx196_done
+    eq rx196_pos, -1, rx196_fail
+    jump $I10
+  rx196_done:
+    rx196_cur."!cursor_fail"()
+    rx196_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<chr>")
+    .return (rx196_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("73_1258051398.73583") :method
+.annotate "line", 5
+    new $P198, "ResizablePMCArray"
+    push $P198, "\\c"
+    .return ($P198)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "charname"  :subid("74_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .const 'Sub' $P208 = "76_1258051398.73583" 
+    capture_lex $P208
+    .local string rx200_tgt
+    .local int rx200_pos
+    .local int rx200_off
+    .local int rx200_eos
+    .local int rx200_rep
+    .local pmc rx200_cur
+    (rx200_cur, rx200_pos, rx200_tgt, $I10) = self."!cursor_start"()
+    rx200_cur."!cursor_debug"("START ", "charname")
+    .lex unicode:"$\x{a2}", rx200_cur
+    .local pmc match
+    .lex "$/", match
+    length rx200_eos, rx200_tgt
+    set rx200_off, 0
+    lt $I10, 2, rx200_start
+    sub rx200_off, $I10, 1
+    substr rx200_tgt, rx200_tgt, rx200_off
+  rx200_start:
+  alt204_0:
+.annotate "line", 85
+    set_addr $I10, alt204_1
+    rx200_cur."!mark_push"(0, rx200_pos, $I10)
+.annotate "line", 86
+  # rx subrule "integer" subtype=capture negate=
+    rx200_cur."!cursor_pos"(rx200_pos)
+    $P10 = rx200_cur."integer"()
+    unless $P10, rx200_fail
+    rx200_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("integer")
+    rx200_pos = $P10."pos"()
+    goto alt204_end
+  alt204_1:
+.annotate "line", 87
+  # rx enumcharlist negate=0 
+    ge rx200_pos, rx200_eos, rx200_fail
+    sub $I10, rx200_pos, rx200_off
+    substr $S10, rx200_tgt, $I10, 1
+    index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
+    lt $I11, 0, rx200_fail
+    inc rx200_pos
+  # rx rxquantf205 ** 0..*
+    set_addr $I10, rxquantf205_loop
+    rx200_cur."!mark_push"(0, rx200_pos, $I10)
+    goto rxquantf205_done
+  rxquantf205_loop:
+  # rx enumcharlist negate=1 
+    ge rx200_pos, rx200_eos, rx200_fail
+    sub $I10, rx200_pos, rx200_off
+    substr $S10, rx200_tgt, $I10, 1
+    index $I11, "],#", $S10
+    ge $I11, 0, rx200_fail
+    inc rx200_pos
+    set_addr $I10, rxquantf205_loop
+    rx200_cur."!mark_push"($I206, rx200_pos, $I10)
+  rxquantf205_done:
+  # rx enumcharlist negate=0 
+    ge rx200_pos, rx200_eos, rx200_fail
+    sub $I10, rx200_pos, rx200_off
+    substr $S10, rx200_tgt, $I10, 1
+    index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)", $S10
+    lt $I11, 0, rx200_fail
+    inc rx200_pos
+.annotate "line", 88
+  # rx subrule "before" subtype=zerowidth negate=
+    rx200_cur."!cursor_pos"(rx200_pos)
+    .const 'Sub' $P208 = "76_1258051398.73583" 
+    capture_lex $P208
+    $P10 = rx200_cur."before"($P208)
+    unless $P10, rx200_fail
+  alt204_end:
+.annotate "line", 85
+  # rx pass
+    rx200_cur."!cursor_pass"(rx200_pos, "charname")
+    rx200_cur."!cursor_debug"("PASS  ", "charname", " at pos=", rx200_pos)
+    .return (rx200_cur)
+  rx200_fail:
+.annotate "line", 5
+    (rx200_rep, rx200_pos, $I10, $P10) = rx200_cur."!mark_fail"(0)
+    lt rx200_pos, -1, rx200_done
+    eq rx200_pos, -1, rx200_fail
+    jump $I10
+  rx200_done:
+    rx200_cur."!cursor_fail"()
+    rx200_cur."!cursor_debug"("FAIL  ", "charname")
+    .return (rx200_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__charname"  :subid("75_1258051398.73583") :method
+.annotate "line", 5
+    $P202 = self."!PREFIX__!subrule"("integer", "")
+    new $P203, "ResizablePMCArray"
+    push $P203, "Z"
+    push $P203, "Y"
+    push $P203, "X"
+    push $P203, "W"
+    push $P203, "V"
+    push $P203, "U"
+    push $P203, "T"
+    push $P203, "S"
+    push $P203, "R"
+    push $P203, "Q"
+    push $P203, "P"
+    push $P203, "O"
+    push $P203, "N"
+    push $P203, "M"
+    push $P203, "L"
+    push $P203, "K"
+    push $P203, "J"
+    push $P203, "I"
+    push $P203, "H"
+    push $P203, "G"
+    push $P203, "F"
+    push $P203, "E"
+    push $P203, "D"
+    push $P203, "C"
+    push $P203, "B"
+    push $P203, "A"
+    push $P203, "z"
+    push $P203, "y"
+    push $P203, "x"
+    push $P203, "w"
+    push $P203, "v"
+    push $P203, "u"
+    push $P203, "t"
+    push $P203, "s"
+    push $P203, "r"
+    push $P203, "q"
+    push $P203, "p"
+    push $P203, "o"
+    push $P203, "n"
+    push $P203, "m"
+    push $P203, "l"
+    push $P203, "k"
+    push $P203, "j"
+    push $P203, "i"
+    push $P203, "h"
+    push $P203, "g"
+    push $P203, "f"
+    push $P203, "e"
+    push $P203, "d"
+    push $P203, "c"
+    push $P203, "b"
+    push $P203, "a"
+    push $P203, $P202
+    .return ($P203)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block207"  :anon :subid("76_1258051398.73583") :method :outer("74_1258051398.73583")
+.annotate "line", 88
+    .local string rx209_tgt
+    .local int rx209_pos
+    .local int rx209_off
+    .local int rx209_eos
+    .local int rx209_rep
+    .local pmc rx209_cur
+    (rx209_cur, rx209_pos, rx209_tgt, $I10) = self."!cursor_start"()
+    rx209_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx209_cur
+    .local pmc match
+    .lex "$/", match
+    length rx209_eos, rx209_tgt
+    set rx209_off, 0
+    lt $I10, 2, rx209_start
+    sub rx209_off, $I10, 1
+    substr rx209_tgt, rx209_tgt, rx209_off
+  rx209_start:
+    ge rx209_pos, 0, rxscan210_done
+  rxscan210_loop:
+    ($P10) = rx209_cur."from"()
+    inc $P10
+    set rx209_pos, $P10
+    ge rx209_pos, rx209_eos, rxscan210_done
+    set_addr $I10, rxscan210_loop
+    rx209_cur."!mark_push"(0, rx209_pos, $I10)
+  rxscan210_done:
+  # rx charclass_q s r 0..-1
+    sub $I10, rx209_pos, rx209_off
+    find_not_cclass $I11, 32, rx209_tgt, $I10, rx209_eos
+    add rx209_pos, rx209_off, $I11
+  # rx enumcharlist negate=0 
+    ge rx209_pos, rx209_eos, rx209_fail
+    sub $I10, rx209_pos, rx209_off
+    substr $S10, rx209_tgt, $I10, 1
+    index $I11, "],#", $S10
+    lt $I11, 0, rx209_fail
+    inc rx209_pos
+  # rx pass
+    rx209_cur."!cursor_pass"(rx209_pos, "")
+    rx209_cur."!cursor_debug"("PASS  ", "", " at pos=", rx209_pos)
+    .return (rx209_cur)
+  rx209_fail:
+    (rx209_rep, rx209_pos, $I10, $P10) = rx209_cur."!mark_fail"(0)
+    lt rx209_pos, -1, rx209_done
+    eq rx209_pos, -1, rx209_fail
+    jump $I10
+  rx209_done:
+    rx209_cur."!cursor_fail"()
+    rx209_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx209_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "charnames"  :subid("77_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx212_tgt
+    .local int rx212_pos
+    .local int rx212_off
+    .local int rx212_eos
+    .local int rx212_rep
+    .local pmc rx212_cur
+    (rx212_cur, rx212_pos, rx212_tgt, $I10) = self."!cursor_start"()
+    rx212_cur."!cursor_debug"("START ", "charnames")
+    rx212_cur."!cursor_caparray"("charname")
+    .lex unicode:"$\x{a2}", rx212_cur
+    .local pmc match
+    .lex "$/", match
+    length rx212_eos, rx212_tgt
+    set rx212_off, 0
+    lt $I10, 2, rx212_start
+    sub rx212_off, $I10, 1
+    substr rx212_tgt, rx212_tgt, rx212_off
+  rx212_start:
+.annotate "line", 90
+  # rx rxquantr215 ** 1..*
+    set_addr $I216, rxquantr215_done
+    rx212_cur."!mark_push"(0, -1, $I216)
+  rxquantr215_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx212_cur."!cursor_pos"(rx212_pos)
+    $P10 = rx212_cur."ws"()
+    unless $P10, rx212_fail
+    rx212_pos = $P10."pos"()
+  # rx subrule "charname" subtype=capture negate=
+    rx212_cur."!cursor_pos"(rx212_pos)
+    $P10 = rx212_cur."charname"()
+    unless $P10, rx212_fail
+    rx212_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charname")
+    rx212_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx212_cur."!cursor_pos"(rx212_pos)
+    $P10 = rx212_cur."ws"()
+    unless $P10, rx212_fail
+    rx212_pos = $P10."pos"()
+    (rx212_rep) = rx212_cur."!mark_commit"($I216)
+    rx212_cur."!mark_push"(rx212_rep, rx212_pos, $I216)
+  # rx literal  ","
+    add $I11, rx212_pos, 1
+    gt $I11, rx212_eos, rx212_fail
+    sub $I11, rx212_pos, rx212_off
+    substr $S10, rx212_tgt, $I11, 1
+    ne $S10, ",", rx212_fail
+    add rx212_pos, 1
+    goto rxquantr215_loop
+  rxquantr215_done:
+  # rx pass
+    rx212_cur."!cursor_pass"(rx212_pos, "charnames")
+    rx212_cur."!cursor_debug"("PASS  ", "charnames", " at pos=", rx212_pos)
+    .return (rx212_cur)
+  rx212_fail:
+.annotate "line", 5
+    (rx212_rep, rx212_pos, $I10, $P10) = rx212_cur."!mark_fail"(0)
+    lt rx212_pos, -1, rx212_done
+    eq rx212_pos, -1, rx212_fail
+    jump $I10
+  rx212_done:
+    rx212_cur."!cursor_fail"()
+    rx212_cur."!cursor_debug"("FAIL  ", "charnames")
+    .return (rx212_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__charnames"  :subid("78_1258051398.73583") :method
+.annotate "line", 5
+    new $P214, "ResizablePMCArray"
+    push $P214, ""
+    .return ($P214)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "charspec"  :subid("79_1258051398.73583") :method :outer("11_1258051398.73583")
+.annotate "line", 5
+    .local string rx218_tgt
+    .local int rx218_pos
+    .local int rx218_off
+    .local int rx218_eos
+    .local int rx218_rep
+    .local pmc rx218_cur
+    (rx218_cur, rx218_pos, rx218_tgt, $I10) = self."!cursor_start"()
+    rx218_cur."!cursor_debug"("START ", "charspec")
+    .lex unicode:"$\x{a2}", rx218_cur
+    .local pmc match
+    .lex "$/", match
+    length rx218_eos, rx218_tgt
+    set rx218_off, 0
+    lt $I10, 2, rx218_start
+    sub rx218_off, $I10, 1
+    substr rx218_tgt, rx218_tgt, rx218_off
+  rx218_start:
+  alt223_0:
+.annotate "line", 92
+    set_addr $I10, alt223_1
+    rx218_cur."!mark_push"(0, rx218_pos, $I10)
+.annotate "line", 93
+  # rx literal  "["
+    add $I11, rx218_pos, 1
+    gt $I11, rx218_eos, rx218_fail
+    sub $I11, rx218_pos, rx218_off
+    substr $S10, rx218_tgt, $I11, 1
+    ne $S10, "[", rx218_fail
+    add rx218_pos, 1
+  # rx subrule "charnames" subtype=capture negate=
+    rx218_cur."!cursor_pos"(rx218_pos)
+    $P10 = rx218_cur."charnames"()
+    unless $P10, rx218_fail
+    rx218_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charnames")
+    rx218_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx218_pos, 1
+    gt $I11, rx218_eos, rx218_fail
+    sub $I11, rx218_pos, rx218_off
+    substr $S10, rx218_tgt, $I11, 1
+    ne $S10, "]", rx218_fail
+    add rx218_pos, 1
+    goto alt223_end
+  alt223_1:
+    set_addr $I10, alt223_2
+    rx218_cur."!mark_push"(0, rx218_pos, $I10)
+.annotate "line", 94
+  # rx charclass_q d r 1..-1
+    sub $I10, rx218_pos, rx218_off
+    find_not_cclass $I11, 8, rx218_tgt, $I10, rx218_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx218_fail
+    add rx218_pos, rx218_off, $I11
+  # rx rxquantr224 ** 0..*
+    set_addr $I225, rxquantr224_done
+    rx218_cur."!mark_push"(0, rx218_pos, $I225)
+  rxquantr224_loop:
+  # rx literal  "_"
+    add $I11, rx218_pos, 1
+    gt $I11, rx218_eos, rx218_fail
+    sub $I11, rx218_pos, rx218_off
+    substr $S10, rx218_tgt, $I11, 1
+    ne $S10, "_", rx218_fail
+    add rx218_pos, 1
+  # rx charclass_q d r 1..-1
+    sub $I10, rx218_pos, rx218_off
+    find_not_cclass $I11, 8, rx218_tgt, $I10, rx218_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx218_fail
+    add rx218_pos, rx218_off, $I11
+    (rx218_rep) = rx218_cur."!mark_commit"($I225)
+    rx218_cur."!mark_push"(rx218_rep, rx218_pos, $I225)
+    goto rxquantr224_loop
+  rxquantr224_done:
+    goto alt223_end
+  alt223_2:
+    set_addr $I10, alt223_3
+    rx218_cur."!mark_push"(0, rx218_pos, $I10)
+.annotate "line", 95
+  # rx enumcharlist negate=0 
+    ge rx218_pos, rx218_eos, rx218_fail
+    sub $I10, rx218_pos, rx218_off
+    substr $S10, rx218_tgt, $I10, 1
+    index $I11, "?@ABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
+    lt $I11, 0, rx218_fail
+    inc rx218_pos
+    goto alt223_end
+  alt223_3:
+.annotate "line", 96
+  # rx subrule "panic" subtype=method negate=
+    rx218_cur."!cursor_pos"(rx218_pos)
+    $P10 = rx218_cur."panic"("Unrecognized \\\\c character")
+    unless $P10, rx218_fail
+    rx218_pos = $P10."pos"()
+  alt223_end:
+.annotate "line", 91
+  # rx pass
+    rx218_cur."!cursor_pass"(rx218_pos, "charspec")
+    rx218_cur."!cursor_debug"("PASS  ", "charspec", " at pos=", rx218_pos)
+    .return (rx218_cur)
+  rx218_fail:
+.annotate "line", 5
+    (rx218_rep, rx218_pos, $I10, $P10) = rx218_cur."!mark_fail"(0)
+    lt rx218_pos, -1, rx218_done
+    eq rx218_pos, -1, rx218_fail
+    jump $I10
+  rx218_done:
+    rx218_cur."!cursor_fail"()
+    rx218_cur."!cursor_debug"("FAIL  ", "charspec")
+    .return (rx218_cur)
+    .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__charspec"  :subid("80_1258051398.73583") :method
+.annotate "line", 5
+    $P220 = self."!PREFIX__!subrule"("panic", "")
+    $P221 = self."!PREFIX__!subrule"("charnames", "[")
+    new $P222, "ResizablePMCArray"
+    push $P222, $P220
+    push $P222, "Z"
+    push $P222, "Y"
+    push $P222, "X"
+    push $P222, "W"
+    push $P222, "V"
+    push $P222, "U"
+    push $P222, "T"
+    push $P222, "S"
+    push $P222, "R"
+    push $P222, "Q"
+    push $P222, "P"
+    push $P222, "O"
+    push $P222, "N"
+    push $P222, "M"
+    push $P222, "L"
+    push $P222, "K"
+    push $P222, "J"
+    push $P222, "I"
+    push $P222, "H"
+    push $P222, "G"
+    push $P222, "F"
+    push $P222, "E"
+    push $P222, "D"
+    push $P222, "C"
+    push $P222, "B"
+    push $P222, "A"
+    push $P222, "@"
+    push $P222, "?"
+    push $P222, ""
+    push $P222, $P221
+    .return ($P222)
+.end
+
+### .include 'gen/hllgrammar-actions.pir'
+
+.namespace []
+.sub "_block11"  :anon :subid("10_1258051401.26431")
+.annotate "line", 0
+    get_hll_global $P14, ["HLL";"Actions"], "_block13" 
+    capture_lex $P14
+.annotate "line", 3
+    get_hll_global $P14, ["HLL";"Actions"], "_block13" 
+    capture_lex $P14
+    $P440 = $P14()
+.annotate "line", 1
+    .return ($P440)
+.end
+
+
+.namespace []
+.sub "" :load :init :subid("post38") :outer("10_1258051401.26431")
+.annotate "line", 0
+    .const 'Sub' $P12 = "10_1258051401.26431" 
+    .local pmc block
+    set block, $P12
+    $P441 = get_root_global ["parrot"], "P6metaclass"
+    $P441."new_class"("HLL::Actions")
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block13"  :subid("11_1258051401.26431") :outer("10_1258051401.26431")
+.annotate "line", 3
+    .const 'Sub' $P423 = "37_1258051401.26431" 
+    capture_lex $P423
+    .const 'Sub' $P406 = "36_1258051401.26431" 
+    capture_lex $P406
+    .const 'Sub' $P399 = "35_1258051401.26431" 
+    capture_lex $P399
+    .const 'Sub' $P392 = "34_1258051401.26431" 
+    capture_lex $P392
+    .const 'Sub' $P385 = "33_1258051401.26431" 
+    capture_lex $P385
+    .const 'Sub' $P378 = "32_1258051401.26431" 
+    capture_lex $P378
+    .const 'Sub' $P368 = "31_1258051401.26431" 
+    capture_lex $P368
+    .const 'Sub' $P361 = "30_1258051401.26431" 
+    capture_lex $P361
+    .const 'Sub' $P345 = "29_1258051401.26431" 
+    capture_lex $P345
+    .const 'Sub' $P271 = "27_1258051401.26431" 
+    capture_lex $P271
+    .const 'Sub' $P212 = "24_1258051401.26431" 
+    capture_lex $P212
+    .const 'Sub' $P203 = "23_1258051401.26431" 
+    capture_lex $P203
+    .const 'Sub' $P194 = "22_1258051401.26431" 
+    capture_lex $P194
+    .const 'Sub' $P185 = "21_1258051401.26431" 
+    capture_lex $P185
+    .const 'Sub' $P154 = "20_1258051401.26431" 
+    capture_lex $P154
+    .const 'Sub' $P144 = "19_1258051401.26431" 
+    capture_lex $P144
+    .const 'Sub' $P134 = "18_1258051401.26431" 
+    capture_lex $P134
+    .const 'Sub' $P34 = "15_1258051401.26431" 
+    capture_lex $P34
+    .const 'Sub' $P28 = "14_1258051401.26431" 
+    capture_lex $P28
+    .const 'Sub' $P22 = "13_1258051401.26431" 
+    capture_lex $P22
+    .const 'Sub' $P15 = "12_1258051401.26431" 
+    capture_lex $P15
+.annotate "line", 183
+    .const 'Sub' $P423 = "37_1258051401.26431" 
+    capture_lex $P423
+.annotate "line", 3
+    .return ($P423)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "string_to_int"  :subid("12_1258051401.26431") :outer("11_1258051401.26431")
+    .param pmc param_18
+    .param pmc param_19
+.annotate "line", 3
+    new $P17, 'ExceptionHandler'
+    set_addr $P17, control_16
+    $P17."handle_types"(58)
+    push_eh $P17
+    .lex "$src", param_18
+    .lex "$base", param_19
+.annotate "line", 4
+
+        .local pmc src
+        .local string src_s
+        src = find_lex '$src'
+        src_s = src
+        .local int base, pos, eos, result
+        $P0 = find_lex '$base'
+        base = $P0
+        pos = 0
+        eos = length src_s
+        result = 0
+      str_loop:
+        unless pos < eos goto str_done
+        .local string char
+        char = substr src_s, pos, 1
+        if char == '_' goto str_next
+        .local int digitval
+        digitval = index "00112233445566778899AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", char
+        if digitval < 0 goto err_base
+        digitval >>= 1
+        if digitval > base goto err_base
+        result *= base
+        result += digitval
+      str_next:
+        inc pos
+        goto str_loop
+      err_base:
+	src.'panic'('Invalid radix conversion of "', char, '"')
+      str_done:
+        $P20 = box result
+    
+.annotate "line", 3
+    .return ($P20)
+  control_16:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P21, exception, "payload"
+    .return ($P21)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "ints_to_string"  :subid("13_1258051401.26431") :outer("11_1258051401.26431")
+    .param pmc param_25
+.annotate "line", 37
+    new $P24, 'ExceptionHandler'
+    set_addr $P24, control_23
+    $P24."handle_types"(58)
+    push_eh $P24
+    .lex "$ints", param_25
+.annotate "line", 38
+
+        .local string result
+        result = ''
+        .local pmc ints, ints_it
+        ints = find_lex '$ints'
+        $I0 = does ints, 'array'
+        unless $I0 goto ints_1
+        ints_it = iter ints
+      ints_loop:
+        unless ints_it goto ints_done
+        $P0 = shift ints_it
+        $I0 = $P0.'ast'()
+        $S0 = chr $I0
+        concat result, $S0
+        goto ints_loop
+      ints_1:
+        $I0 = ints.'ast'()
+        result = chr $I0
+      ints_done:
+        $P26 = box result
+    
+.annotate "line", 37
+    .return ($P26)
+  control_23:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P27, exception, "payload"
+    .return ($P27)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "isaPAST"  :subid("14_1258051401.26431") :outer("11_1258051401.26431")
+    .param pmc param_31
+.annotate "line", 61
+    new $P30, 'ExceptionHandler'
+    set_addr $P30, control_29
+    $P30."handle_types"(58)
+    push_eh $P30
+    .lex "$x", param_31
+.annotate "line", 62
+
+        $P0 = find_lex '$x'
+        $I0 = isa $P0, ['PAST';'Node']
+        $P32 = box $I0
+    
+.annotate "line", 61
+    .return ($P32)
+  control_29:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P33, exception, "payload"
+    .return ($P33)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "EXPR"  :subid("15_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_37
+    .param pmc param_38 :optional
+    .param int has_param_38 :opt_flag
+.annotate "line", 69
+    .const 'Sub' $P117 = "17_1258051401.26431" 
+    capture_lex $P117
+    .const 'Sub' $P84 = "16_1258051401.26431" 
+    capture_lex $P84
+    new $P36, 'ExceptionHandler'
+    set_addr $P36, control_35
+    $P36."handle_types"(58)
+    push_eh $P36
+    .lex "self", self
+    .lex "$/", param_37
+    if has_param_38, optparam_39
+    new $P39, "Undef"
+    set param_38, $P39
+  optparam_39:
+    .lex "$key", param_38
+.annotate "line", 71
+    new $P40, "Undef"
+    .lex "$past", $P40
+.annotate "line", 70
+    find_lex $P42, "$key"
+    if $P42, unless_41_end
+    new $P43, "Exception"
+    set $P43['type'], 58
+    new $P44, "Integer"
+    assign $P44, 0
+    setattribute $P43, 'payload', $P44
+    throw $P43
+  unless_41_end:
+.annotate "line", 71
+    find_lex $P46, "$/"
+    $P47 = $P46."peek_ast"()
+    set $P45, $P47
+    defined $I49, $P45
+    if $I49, default_48
+    find_lex $P50, "$/"
+    unless_null $P50, vivify_40
+    new $P50, "Hash"
+  vivify_40:
+    set $P51, $P50["OPER"]
+    unless_null $P51, vivify_41
+    new $P51, "Undef"
+  vivify_41:
+    $P52 = $P51."peek_ast"()
+    set $P45, $P52
+  default_48:
+    store_lex "$past", $P45
+.annotate "line", 72
+    find_lex $P54, "$past"
+    if $P54, unless_53_end
+.annotate "line", 73
+    get_hll_global $P55, ["PAST"], "Op"
+    find_lex $P56, "$/"
+    $P57 = $P55."new"($P56 :named("node"))
+    store_lex "$past", $P57
+.annotate "line", 74
+    find_lex $P59, "$/"
+    unless_null $P59, vivify_42
+    new $P59, "Hash"
+  vivify_42:
+    set $P60, $P59["OPER"]
+    unless_null $P60, vivify_43
+    new $P60, "Hash"
+  vivify_43:
+    set $P61, $P60["O"]
+    unless_null $P61, vivify_44
+    new $P61, "Hash"
+  vivify_44:
+    set $P62, $P61["pasttype"]
+    unless_null $P62, vivify_45
+    new $P62, "Undef"
+  vivify_45:
+    if $P62, if_58
+.annotate "line", 75
+    find_lex $P70, "$/"
+    unless_null $P70, vivify_46
+    new $P70, "Hash"
+  vivify_46:
+    set $P71, $P70["OPER"]
+    unless_null $P71, vivify_47
+    new $P71, "Hash"
+  vivify_47:
+    set $P72, $P71["O"]
+    unless_null $P72, vivify_48
+    new $P72, "Hash"
+  vivify_48:
+    set $P73, $P72["pirop"]
+    unless_null $P73, vivify_49
+    new $P73, "Undef"
+  vivify_49:
+    unless $P73, if_69_end
+    find_lex $P74, "$past"
+    find_lex $P75, "$/"
+    unless_null $P75, vivify_50
+    new $P75, "Hash"
+  vivify_50:
+    set $P76, $P75["OPER"]
+    unless_null $P76, vivify_51
+    new $P76, "Hash"
+  vivify_51:
+    set $P77, $P76["O"]
+    unless_null $P77, vivify_52
+    new $P77, "Hash"
+  vivify_52:
+    set $P78, $P77["pirop"]
+    unless_null $P78, vivify_53
+    new $P78, "Undef"
+  vivify_53:
+    set $S79, $P78
+    $P74."pirop"($S79)
+  if_69_end:
+    goto if_58_end
+  if_58:
+.annotate "line", 74
+    find_lex $P63, "$past"
+    find_lex $P64, "$/"
+    unless_null $P64, vivify_54
+    new $P64, "Hash"
+  vivify_54:
+    set $P65, $P64["OPER"]
+    unless_null $P65, vivify_55
+    new $P65, "Hash"
+  vivify_55:
+    set $P66, $P65["O"]
+    unless_null $P66, vivify_56
+    new $P66, "Hash"
+  vivify_56:
+    set $P67, $P66["pasttype"]
+    unless_null $P67, vivify_57
+    new $P67, "Undef"
+  vivify_57:
+    set $S68, $P67
+    $P63."pasttype"($S68)
+  if_58_end:
+.annotate "line", 76
+    find_lex $P81, "$past"
+    $P82 = $P81."name"()
+    if $P82, unless_80_end
+    .const 'Sub' $P84 = "16_1258051401.26431" 
+    capture_lex $P84
+    $P84()
+  unless_80_end:
+  unless_53_end:
+.annotate "line", 87
+    find_lex $P104, "$key"
+    set $S105, $P104
+    iseq $I106, $S105, "POSTFIX"
+    if $I106, if_103
+.annotate "line", 89
+    find_lex $P112, "$/"
+    $P113 = $P112."list"()
+    defined $I114, $P113
+    unless $I114, for_undef_61
+    iter $P111, $P113
+    new $P128, 'ExceptionHandler'
+    set_addr $P128, loop127_handler
+    $P128."handle_types"(65, 67, 66)
+    push_eh $P128
+  loop127_test:
+    unless $P111, loop127_done
+    shift $P115, $P111
+  loop127_redo:
+    .const 'Sub' $P117 = "17_1258051401.26431" 
+    capture_lex $P117
+    $P117($P115)
+  loop127_next:
+    goto loop127_test
+  loop127_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P129, exception, 'type'
+    eq $P129, 65, loop127_next
+    eq $P129, 67, loop127_redo
+  loop127_done:
+    pop_eh 
+  for_undef_61:
+.annotate "line", 88
+    goto if_103_end
+  if_103:
+.annotate "line", 87
+    find_lex $P107, "$past"
+    find_lex $P108, "$/"
+    unless_null $P108, vivify_62
+    new $P108, "ResizablePMCArray"
+  vivify_62:
+    set $P109, $P108[0]
+    unless_null $P109, vivify_63
+    new $P109, "Undef"
+  vivify_63:
+    $P110 = $P109."ast"()
+    $P107."unshift"($P110)
+  if_103_end:
+.annotate "line", 91
+    find_lex $P130, "$/"
+    find_lex $P131, "$past"
+    $P132 = $P130."!make"($P131)
+.annotate "line", 69
+    .return ($P132)
+  control_35:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P133, exception, "payload"
+    .return ($P133)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block83"  :anon :subid("16_1258051401.26431") :outer("15_1258051401.26431")
+.annotate "line", 78
+    new $P85, "Undef"
+    .lex "$name", $P85
+.annotate "line", 77
+    find_lex $P87, "$key"
+    set $S88, $P87
+    iseq $I89, $S88, "LIST"
+    unless $I89, if_86_end
+    new $P90, "String"
+    assign $P90, "infix"
+    store_lex "$key", $P90
+  if_86_end:
+.annotate "line", 78
+
+                $P0 = find_lex '$key'
+                $S0 = $P0
+                $S0 = downcase $S0
+                $P91 = box $S0
+            
+    concat $P92, $P91, ":<"
+.annotate "line", 83
+    find_lex $P93, "$/"
+    unless_null $P93, vivify_58
+    new $P93, "Hash"
+  vivify_58:
+    set $P94, $P93["OPER"]
+    unless_null $P94, vivify_59
+    new $P94, "Hash"
+  vivify_59:
+    set $P95, $P94["sym"]
+    unless_null $P95, vivify_60
+    new $P95, "Undef"
+  vivify_60:
+    concat $P96, $P92, $P95
+    concat $P97, $P96, ">"
+    store_lex "$name", $P97
+.annotate "line", 84
+    find_lex $P98, "$past"
+    new $P99, "String"
+    assign $P99, "&"
+    find_lex $P100, "$name"
+    concat $P101, $P99, $P100
+    $P102 = $P98."name"($P101)
+.annotate "line", 76
+    .return ($P102)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block116"  :anon :subid("17_1258051401.26431") :outer("15_1258051401.26431")
+    .param pmc param_118
+.annotate "line", 89
+    .lex "$_", param_118
+    find_lex $P121, "$_"
+    $P122 = $P121."ast"()
+    if $P122, if_120
+    set $P119, $P122
+    goto if_120_end
+  if_120:
+    find_lex $P123, "$past"
+    find_lex $P124, "$_"
+    $P125 = $P124."ast"()
+    $P126 = $P123."push"($P125)
+    set $P119, $P126
+  if_120_end:
+    .return ($P119)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "termish"  :subid("18_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_137
+.annotate "line", 94
+    new $P136, 'ExceptionHandler'
+    set_addr $P136, control_135
+    $P136."handle_types"(58)
+    push_eh $P136
+    .lex "self", self
+    .lex "$/", param_137
+.annotate "line", 95
+    find_lex $P138, "$/"
+    find_lex $P139, "$/"
+    unless_null $P139, vivify_64
+    new $P139, "Hash"
+  vivify_64:
+    set $P140, $P139["term"]
+    unless_null $P140, vivify_65
+    new $P140, "Undef"
+  vivify_65:
+    $P141 = $P140."ast"()
+    $P142 = $P138."!make"($P141)
+.annotate "line", 94
+    .return ($P142)
+  control_135:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P143, exception, "payload"
+    .return ($P143)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "term:sym<circumfix>"  :subid("19_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_147
+.annotate "line", 98
+    new $P146, 'ExceptionHandler'
+    set_addr $P146, control_145
+    $P146."handle_types"(58)
+    push_eh $P146
+    .lex "self", self
+    .lex "$/", param_147
+    find_lex $P148, "$/"
+    find_lex $P149, "$/"
+    unless_null $P149, vivify_66
+    new $P149, "Hash"
+  vivify_66:
+    set $P150, $P149["circumfix"]
+    unless_null $P150, vivify_67
+    new $P150, "Undef"
+  vivify_67:
+    $P151 = $P150."ast"()
+    $P152 = $P148."!make"($P151)
+    .return ($P152)
+  control_145:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P153, exception, "payload"
+    .return ($P153)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "integer"  :subid("20_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_157
+.annotate "line", 100
+    new $P156, 'ExceptionHandler'
+    set_addr $P156, control_155
+    $P156."handle_types"(58)
+    push_eh $P156
+    .lex "self", self
+    .lex "$/", param_157
+.annotate "line", 101
+    find_lex $P158, "$/"
+.annotate "line", 102
+    find_lex $P161, "$/"
+    unless_null $P161, vivify_68
+    new $P161, "Hash"
+  vivify_68:
+    set $P162, $P161["decint"]
+    unless_null $P162, vivify_69
+    new $P162, "Undef"
+  vivify_69:
+    if $P162, if_160
+.annotate "line", 104
+    find_lex $P168, "$/"
+    unless_null $P168, vivify_70
+    new $P168, "Hash"
+  vivify_70:
+    set $P169, $P168["hexint"]
+    unless_null $P169, vivify_71
+    new $P169, "Undef"
+  vivify_71:
+    if $P169, if_167
+.annotate "line", 106
+    find_lex $P175, "$/"
+    unless_null $P175, vivify_72
+    new $P175, "Hash"
+  vivify_72:
+    set $P176, $P175["octint"]
+    unless_null $P176, vivify_73
+    new $P176, "Undef"
+  vivify_73:
+    if $P176, if_174
+.annotate "line", 107
+    find_lex $P180, "$/"
+    unless_null $P180, vivify_74
+    new $P180, "Hash"
+  vivify_74:
+    set $P181, $P180["binint"]
+    unless_null $P181, vivify_75
+    new $P181, "Undef"
+  vivify_75:
+    $P182 = "string_to_int"($P181, 2)
+    set $P173, $P182
+.annotate "line", 106
+    goto if_174_end
+  if_174:
+    find_lex $P177, "$/"
+    unless_null $P177, vivify_76
+    new $P177, "Hash"
+  vivify_76:
+    set $P178, $P177["octint"]
+    unless_null $P178, vivify_77
+    new $P178, "Undef"
+  vivify_77:
+    $P179 = $P178."ast"()
+    set $P173, $P179
+  if_174_end:
+    set $P166, $P173
+.annotate "line", 104
+    goto if_167_end
+  if_167:
+    find_lex $P170, "$/"
+    unless_null $P170, vivify_78
+    new $P170, "Hash"
+  vivify_78:
+    set $P171, $P170["hexint"]
+    unless_null $P171, vivify_79
+    new $P171, "Undef"
+  vivify_79:
+    $P172 = $P171."ast"()
+    set $P166, $P172
+  if_167_end:
+    set $P159, $P166
+.annotate "line", 102
+    goto if_160_end
+  if_160:
+    find_lex $P163, "$/"
+    unless_null $P163, vivify_80
+    new $P163, "Hash"
+  vivify_80:
+    set $P164, $P163["decint"]
+    unless_null $P164, vivify_81
+    new $P164, "Undef"
+  vivify_81:
+    $P165 = "string_to_int"($P164, 10)
+    set $P159, $P165
+  if_160_end:
+    $P183 = $P158."!make"($P159)
+.annotate "line", 100
+    .return ($P183)
+  control_155:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P184, exception, "payload"
+    .return ($P184)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "dec_number"  :subid("21_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_188
+.annotate "line", 112
+    new $P187, 'ExceptionHandler'
+    set_addr $P187, control_186
+    $P187."handle_types"(58)
+    push_eh $P187
+    .lex "self", self
+    .lex "$/", param_188
+    find_lex $P189, "$/"
+    find_lex $P190, "$/"
+    set $N191, $P190
+    $P192 = $P189."!make"($N191)
+    .return ($P192)
+  control_186:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P193, exception, "payload"
+    .return ($P193)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "hexint"  :subid("22_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_197
+.annotate "line", 114
+    new $P196, 'ExceptionHandler'
+    set_addr $P196, control_195
+    $P196."handle_types"(58)
+    push_eh $P196
+    .lex "self", self
+    .lex "$/", param_197
+.annotate "line", 115
+    find_lex $P198, "$/"
+    find_lex $P199, "$/"
+    $P200 = "string_to_int"($P199, 16)
+    $P201 = $P198."!make"($P200)
+.annotate "line", 114
+    .return ($P201)
+  control_195:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P202, exception, "payload"
+    .return ($P202)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "octint"  :subid("23_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_206
+.annotate "line", 118
+    new $P205, 'ExceptionHandler'
+    set_addr $P205, control_204
+    $P205."handle_types"(58)
+    push_eh $P205
+    .lex "self", self
+    .lex "$/", param_206
+.annotate "line", 119
+    find_lex $P207, "$/"
+    find_lex $P208, "$/"
+    $P209 = "string_to_int"($P208, 8)
+    $P210 = $P207."!make"($P209)
+.annotate "line", 118
+    .return ($P210)
+  control_204:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P211, exception, "payload"
+    .return ($P211)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_EXPR"  :subid("24_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_215
+.annotate "line", 122
+    .const 'Sub' $P230 = "25_1258051401.26431" 
+    capture_lex $P230
+    new $P214, 'ExceptionHandler'
+    set_addr $P214, control_213
+    $P214."handle_types"(58)
+    push_eh $P214
+    .lex "self", self
+    .lex "$/", param_215
+.annotate "line", 123
+    new $P216, "Undef"
+    .lex "$past", $P216
+    find_lex $P217, "$/"
+    unless_null $P217, vivify_82
+    new $P217, "Hash"
+  vivify_82:
+    set $P218, $P217["quote_delimited"]
+    unless_null $P218, vivify_83
+    new $P218, "Undef"
+  vivify_83:
+    $P219 = $P218."ast"()
+    store_lex "$past", $P219
+.annotate "line", 124
+    get_hll_global $P221, ["HLL";"Grammar"], "quotemod_check"
+    find_lex $P222, "$/"
+    $P223 = $P221($P222, "w")
+    unless $P223, if_220_end
+.annotate "line", 125
+    find_lex $P225, "$past"
+    $P226 = "isaPAST"($P225)
+    if $P226, if_224
+.annotate "line", 128
+    .const 'Sub' $P230 = "25_1258051401.26431" 
+    capture_lex $P230
+    $P230()
+    goto if_224_end
+  if_224:
+.annotate "line", 126
+    find_lex $P227, "$/"
+    $P228 = $P227."CURSOR"()
+    $P228."panic"("Can't form :w list from non-constant strings (yet)")
+  if_224_end:
+  if_220_end:
+.annotate "line", 136
+    find_lex $P260, "$past"
+    $P261 = "isaPAST"($P260)
+    isfalse $I262, $P261
+    unless $I262, if_259_end
+.annotate "line", 137
+    get_hll_global $P263, ["PAST"], "Val"
+    find_lex $P264, "$past"
+    set $S265, $P264
+    $P266 = $P263."new"($S265 :named("value"))
+    store_lex "$past", $P266
+  if_259_end:
+.annotate "line", 139
+    find_lex $P267, "$/"
+    find_lex $P268, "$past"
+    $P269 = $P267."!make"($P268)
+.annotate "line", 122
+    .return ($P269)
+  control_213:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P270, exception, "payload"
+    .return ($P270)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block229"  :anon :subid("25_1258051401.26431") :outer("24_1258051401.26431")
+.annotate "line", 128
+    .const 'Sub' $P251 = "26_1258051401.26431" 
+    capture_lex $P251
+.annotate "line", 129
+    new $P231, "ResizablePMCArray"
+    .lex "@words", $P231
+    get_hll_global $P232, ["HLL";"Grammar"], "split_words"
+    find_lex $P233, "$/"
+    find_lex $P234, "$past"
+    $P235 = $P232($P233, $P234)
+    store_lex "@words", $P235
+.annotate "line", 130
+    find_lex $P238, "@words"
+    set $N239, $P238
+    new $P240, "Integer"
+    assign $P240, 1
+    set $N241, $P240
+    isgt $I242, $N239, $N241
+    if $I242, if_237
+    new $P236, 'Integer'
+    set $P236, $I242
+    goto if_237_end
+  if_237:
+.annotate "line", 131
+    get_hll_global $P243, ["PAST"], "Op"
+    find_lex $P244, "$/"
+    $P245 = $P243."new"("list" :named("pasttype"), $P244 :named("node"))
+    store_lex "$past", $P245
+.annotate "line", 132
+    find_lex $P247, "@words"
+    defined $I248, $P247
+    unless $I248, for_undef_84
+    iter $P246, $P247
+    new $P257, 'ExceptionHandler'
+    set_addr $P257, loop256_handler
+    $P257."handle_types"(65, 67, 66)
+    push_eh $P257
+  loop256_test:
+    unless $P246, loop256_done
+    shift $P249, $P246
+  loop256_redo:
+    .const 'Sub' $P251 = "26_1258051401.26431" 
+    capture_lex $P251
+    $P251($P249)
+  loop256_next:
+    goto loop256_test
+  loop256_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P258, exception, 'type'
+    eq $P258, 65, loop256_next
+    eq $P258, 67, loop256_redo
+  loop256_done:
+    pop_eh 
+  for_undef_84:
+.annotate "line", 130
+    set $P236, $P246
+  if_237_end:
+.annotate "line", 128
+    .return ($P236)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block250"  :anon :subid("26_1258051401.26431") :outer("25_1258051401.26431")
+    .param pmc param_252
+.annotate "line", 132
+    .lex "$_", param_252
+    find_lex $P253, "$past"
+    find_lex $P254, "$_"
+    $P255 = $P253."push"($P254)
+    .return ($P255)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_delimited"  :subid("27_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_274
+.annotate "line", 142
+    .const 'Sub' $P286 = "28_1258051401.26431" 
+    capture_lex $P286
+    new $P273, 'ExceptionHandler'
+    set_addr $P273, control_272
+    $P273."handle_types"(58)
+    push_eh $P273
+    .lex "self", self
+    .lex "$/", param_274
+.annotate "line", 143
+    new $P275, "ResizablePMCArray"
+    .lex "@parts", $P275
+.annotate "line", 144
+    new $P276, "Undef"
+    .lex "$lastlit", $P276
+.annotate "line", 160
+    new $P277, "Undef"
+    .lex "$past", $P277
+.annotate "line", 142
+    find_lex $P278, "@parts"
+.annotate "line", 144
+    new $P279, "String"
+    assign $P279, ""
+    store_lex "$lastlit", $P279
+.annotate "line", 145
+    find_lex $P281, "$/"
+    unless_null $P281, vivify_85
+    new $P281, "Hash"
+  vivify_85:
+    set $P282, $P281["quote_atom"]
+    unless_null $P282, vivify_86
+    new $P282, "Undef"
+  vivify_86:
+    defined $I283, $P282
+    unless $I283, for_undef_87
+    iter $P280, $P282
+    new $P318, 'ExceptionHandler'
+    set_addr $P318, loop317_handler
+    $P318."handle_types"(65, 67, 66)
+    push_eh $P318
+  loop317_test:
+    unless $P280, loop317_done
+    shift $P284, $P280
+  loop317_redo:
+    .const 'Sub' $P286 = "28_1258051401.26431" 
+    capture_lex $P286
+    $P286($P284)
+  loop317_next:
+    goto loop317_test
+  loop317_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P319, exception, 'type'
+    eq $P319, 65, loop317_next
+    eq $P319, 67, loop317_redo
+  loop317_done:
+    pop_eh 
+  for_undef_87:
+.annotate "line", 159
+    find_lex $P321, "$lastlit"
+    set $S322, $P321
+    isgt $I323, $S322, ""
+    unless $I323, if_320_end
+    find_lex $P324, "@parts"
+    find_lex $P325, "$lastlit"
+    $P324."push"($P325)
+  if_320_end:
+.annotate "line", 160
+    find_lex $P328, "@parts"
+    if $P328, if_327
+    new $P331, "String"
+    assign $P331, ""
+    set $P326, $P331
+    goto if_327_end
+  if_327:
+    find_lex $P329, "@parts"
+    $P330 = $P329."shift"()
+    set $P326, $P330
+  if_327_end:
+    store_lex "$past", $P326
+.annotate "line", 161
+    new $P339, 'ExceptionHandler'
+    set_addr $P339, loop338_handler
+    $P339."handle_types"(65, 67, 66)
+    push_eh $P339
+  loop338_test:
+    find_lex $P332, "@parts"
+    unless $P332, loop338_done
+  loop338_redo:
+.annotate "line", 162
+    get_hll_global $P333, ["PAST"], "Op"
+    find_lex $P334, "$past"
+    find_lex $P335, "@parts"
+    $P336 = $P335."shift"()
+    $P337 = $P333."new"($P334, $P336, "concat" :named("pirop"))
+    store_lex "$past", $P337
+  loop338_next:
+.annotate "line", 161
+    goto loop338_test
+  loop338_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P340, exception, 'type'
+    eq $P340, 65, loop338_next
+    eq $P340, 67, loop338_redo
+  loop338_done:
+    pop_eh 
+.annotate "line", 164
+    find_lex $P341, "$/"
+    find_lex $P342, "$past"
+    $P343 = $P341."!make"($P342)
+.annotate "line", 142
+    .return ($P343)
+  control_272:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P344, exception, "payload"
+    .return ($P344)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block285"  :anon :subid("28_1258051401.26431") :outer("27_1258051401.26431")
+    .param pmc param_288
+.annotate "line", 146
+    new $P287, "Undef"
+    .lex "$ast", $P287
+    .lex "$_", param_288
+    find_lex $P289, "$_"
+    $P290 = $P289."ast"()
+    store_lex "$ast", $P290
+.annotate "line", 147
+    find_lex $P293, "$ast"
+    $P294 = "isaPAST"($P293)
+    isfalse $I295, $P294
+    if $I295, if_292
+.annotate "line", 150
+    find_lex $P301, "$ast"
+    get_hll_global $P302, ["PAST"], "Val"
+    $P303 = $P301."isa"($P302)
+    if $P303, if_300
+.annotate "line", 154
+    find_lex $P309, "$lastlit"
+    set $S310, $P309
+    isgt $I311, $S310, ""
+    unless $I311, if_308_end
+    find_lex $P312, "@parts"
+    find_lex $P313, "$lastlit"
+    $P312."push"($P313)
+  if_308_end:
+.annotate "line", 155
+    find_lex $P314, "@parts"
+    find_lex $P315, "$ast"
+    $P314."push"($P315)
+.annotate "line", 156
+    new $P316, "String"
+    assign $P316, ""
+    store_lex "$lastlit", $P316
+.annotate "line", 153
+    set $P299, $P316
+.annotate "line", 150
+    goto if_300_end
+  if_300:
+.annotate "line", 151
+    find_lex $P304, "$lastlit"
+    find_lex $P305, "$ast"
+    $S306 = $P305."value"()
+    concat $P307, $P304, $S306
+    store_lex "$lastlit", $P307
+.annotate "line", 150
+    set $P299, $P307
+  if_300_end:
+    set $P291, $P299
+.annotate "line", 147
+    goto if_292_end
+  if_292:
+.annotate "line", 148
+    find_lex $P296, "$lastlit"
+    find_lex $P297, "$ast"
+    concat $P298, $P296, $P297
+    store_lex "$lastlit", $P298
+.annotate "line", 147
+    set $P291, $P298
+  if_292_end:
+.annotate "line", 145
+    .return ($P291)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_atom"  :subid("29_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_348
+.annotate "line", 167
+    new $P347, 'ExceptionHandler'
+    set_addr $P347, control_346
+    $P347."handle_types"(58)
+    push_eh $P347
+    .lex "self", self
+    .lex "$/", param_348
+.annotate "line", 168
+    find_lex $P349, "$/"
+    find_lex $P352, "$/"
+    unless_null $P352, vivify_88
+    new $P352, "Hash"
+  vivify_88:
+    set $P353, $P352["quote_escape"]
+    unless_null $P353, vivify_89
+    new $P353, "Undef"
+  vivify_89:
+    if $P353, if_351
+    find_lex $P357, "$/"
+    set $S358, $P357
+    new $P350, 'String'
+    set $P350, $S358
+    goto if_351_end
+  if_351:
+    find_lex $P354, "$/"
+    unless_null $P354, vivify_90
+    new $P354, "Hash"
+  vivify_90:
+    set $P355, $P354["quote_escape"]
+    unless_null $P355, vivify_91
+    new $P355, "Undef"
+  vivify_91:
+    $P356 = $P355."ast"()
+    set $P350, $P356
+  if_351_end:
+    $P359 = $P349."!make"($P350)
+.annotate "line", 167
+    .return ($P359)
+  control_346:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P360, exception, "payload"
+    .return ($P360)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<backslash>"  :subid("30_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_364
+.annotate "line", 171
+    new $P363, 'ExceptionHandler'
+    set_addr $P363, control_362
+    $P363."handle_types"(58)
+    push_eh $P363
+    .lex "self", self
+    .lex "$/", param_364
+    find_lex $P365, "$/"
+    $P366 = $P365."!make"("\\")
+    .return ($P366)
+  control_362:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P367, exception, "payload"
+    .return ($P367)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<stopper>"  :subid("31_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_371
+.annotate "line", 172
+    new $P370, 'ExceptionHandler'
+    set_addr $P370, control_369
+    $P370."handle_types"(58)
+    push_eh $P370
+    .lex "self", self
+    .lex "$/", param_371
+    find_lex $P372, "$/"
+    find_lex $P373, "$/"
+    unless_null $P373, vivify_92
+    new $P373, "Hash"
+  vivify_92:
+    set $P374, $P373["stopper"]
+    unless_null $P374, vivify_93
+    new $P374, "Undef"
+  vivify_93:
+    set $S375, $P374
+    $P376 = $P372."!make"($S375)
+    .return ($P376)
+  control_369:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P377, exception, "payload"
+    .return ($P377)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<bs>"  :subid("32_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_381
+.annotate "line", 174
+    new $P380, 'ExceptionHandler'
+    set_addr $P380, control_379
+    $P380."handle_types"(58)
+    push_eh $P380
+    .lex "self", self
+    .lex "$/", param_381
+    find_lex $P382, "$/"
+    $P383 = $P382."!make"("\b")
+    .return ($P383)
+  control_379:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P384, exception, "payload"
+    .return ($P384)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<nl>"  :subid("33_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_388
+.annotate "line", 175
+    new $P387, 'ExceptionHandler'
+    set_addr $P387, control_386
+    $P387."handle_types"(58)
+    push_eh $P387
+    .lex "self", self
+    .lex "$/", param_388
+    find_lex $P389, "$/"
+    $P390 = $P389."!make"("\n")
+    .return ($P390)
+  control_386:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P391, exception, "payload"
+    .return ($P391)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<cr>"  :subid("34_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_395
+.annotate "line", 176
+    new $P394, 'ExceptionHandler'
+    set_addr $P394, control_393
+    $P394."handle_types"(58)
+    push_eh $P394
+    .lex "self", self
+    .lex "$/", param_395
+    find_lex $P396, "$/"
+    $P397 = $P396."!make"("\r")
+    .return ($P397)
+  control_393:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P398, exception, "payload"
+    .return ($P398)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<tab>"  :subid("35_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_402
+.annotate "line", 177
+    new $P401, 'ExceptionHandler'
+    set_addr $P401, control_400
+    $P401."handle_types"(58)
+    push_eh $P401
+    .lex "self", self
+    .lex "$/", param_402
+    find_lex $P403, "$/"
+    $P404 = $P403."!make"("\t")
+    .return ($P404)
+  control_400:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P405, exception, "payload"
+    .return ($P405)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<hex>"  :subid("36_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_409
+.annotate "line", 179
+    new $P408, 'ExceptionHandler'
+    set_addr $P408, control_407
+    $P408."handle_types"(58)
+    push_eh $P408
+    .lex "self", self
+    .lex "$/", param_409
+.annotate "line", 180
+    find_lex $P410, "$/"
+    find_lex $P413, "$/"
+    unless_null $P413, vivify_94
+    new $P413, "Hash"
+  vivify_94:
+    set $P414, $P413["hexint"]
+    unless_null $P414, vivify_95
+    new $P414, "Undef"
+  vivify_95:
+    if $P414, if_412
+    find_lex $P417, "$/"
+    unless_null $P417, vivify_96
+    new $P417, "Hash"
+  vivify_96:
+    set $P418, $P417["hexints"]
+    unless_null $P418, vivify_97
+    new $P418, "Hash"
+  vivify_97:
+    set $P419, $P418["hexint"]
+    unless_null $P419, vivify_98
+    new $P419, "Undef"
+  vivify_98:
+    set $P411, $P419
+    goto if_412_end
+  if_412:
+    find_lex $P415, "$/"
+    unless_null $P415, vivify_99
+    new $P415, "Hash"
+  vivify_99:
+    set $P416, $P415["hexint"]
+    unless_null $P416, vivify_100
+    new $P416, "Undef"
+  vivify_100:
+    set $P411, $P416
+  if_412_end:
+    $P420 = "ints_to_string"($P411)
+    $P421 = $P410."!make"($P420)
+.annotate "line", 179
+    .return ($P421)
+  control_407:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P422, exception, "payload"
+    .return ($P422)
+    rethrow exception
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<oct>"  :subid("37_1258051401.26431") :method :outer("11_1258051401.26431")
+    .param pmc param_426
+.annotate "line", 183
+    new $P425, 'ExceptionHandler'
+    set_addr $P425, control_424
+    $P425."handle_types"(58)
+    push_eh $P425
+    .lex "self", self
+    .lex "$/", param_426
+.annotate "line", 184
+    find_lex $P427, "$/"
+    find_lex $P430, "$/"
+    unless_null $P430, vivify_101
+    new $P430, "Hash"
+  vivify_101:
+    set $P431, $P430["octint"]
+    unless_null $P431, vivify_102
+    new $P431, "Undef"
+  vivify_102:
+    if $P431, if_429
+    find_lex $P434, "$/"
+    unless_null $P434, vivify_103
+    new $P434, "Hash"
+  vivify_103:
+    set $P435, $P434["octints"]
+    unless_null $P435, vivify_104
+    new $P435, "Hash"
+  vivify_104:
+    set $P436, $P435["octint"]
+    unless_null $P436, vivify_105
+    new $P436, "Undef"
+  vivify_105:
+    set $P428, $P436
+    goto if_429_end
+  if_429:
+    find_lex $P432, "$/"
+    unless_null $P432, vivify_106
+    new $P432, "Hash"
+  vivify_106:
+    set $P433, $P432["octint"]
+    unless_null $P433, vivify_107
+    new $P433, "Undef"
+  vivify_107:
+    set $P428, $P433
+  if_429_end:
+    $P437 = "ints_to_string"($P428)
+    $P438 = $P427."!make"($P437)
+.annotate "line", 183
+    .return ($P438)
+  control_424:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P439, exception, "payload"
+    .return ($P439)
+    rethrow exception
+.end
+
+
+=head1 AUTHOR
+
+Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
+
+=head1 COPYRIGHT
+
+Copyright (C) 2009, Patrick R. Michaud
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: trunk/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/src/stage0/NQP-s0.pir	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,18184 @@
+# Copyright (C) 2009, Patrick R. Michaud
+
+=head1 NAME
+
+NQP::Compiler - NQP compiler
+
+=head1 DESCRIPTION
+
+=cut
+
+.sub '' :anon :load :init
+    load_bytecode 'P6Regex.pbc'
+.end
+
+### .include 'gen/nqp-grammar.pir'
+
+.namespace []
+.sub "_block11"  :anon :subid("10_1258051419.23649")
+.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
+    $P1036 = $P14()
+.annotate "line", 1
+    .return ($P1036)
+.end
+
+
+.namespace []
+.sub "" :load :init :subid("post299") :outer("10_1258051419.23649")
+.annotate "line", 0
+    .const 'Sub' $P12 = "10_1258051419.23649" 
+    .local pmc block
+    set block, $P12
+    $P1037 = get_root_global ["parrot"], "P6metaclass"
+    $P1037."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "_block13"  :subid("11_1258051419.23649") :outer("10_1258051419.23649")
+.annotate "line", 4
+    get_hll_global $P986, ["NQP";"Regex"], "_block985" 
+    capture_lex $P986
+    .const 'Sub' $P979 = "284_1258051419.23649" 
+    capture_lex $P979
+    .const 'Sub' $P973 = "282_1258051419.23649" 
+    capture_lex $P973
+    .const 'Sub' $P967 = "280_1258051419.23649" 
+    capture_lex $P967
+    .const 'Sub' $P961 = "278_1258051419.23649" 
+    capture_lex $P961
+    .const 'Sub' $P956 = "276_1258051419.23649" 
+    capture_lex $P956
+    .const 'Sub' $P950 = "274_1258051419.23649" 
+    capture_lex $P950
+    .const 'Sub' $P944 = "272_1258051419.23649" 
+    capture_lex $P944
+    .const 'Sub' $P938 = "270_1258051419.23649" 
+    capture_lex $P938
+    .const 'Sub' $P932 = "268_1258051419.23649" 
+    capture_lex $P932
+    .const 'Sub' $P926 = "266_1258051419.23649" 
+    capture_lex $P926
+    .const 'Sub' $P920 = "264_1258051419.23649" 
+    capture_lex $P920
+    .const 'Sub' $P914 = "262_1258051419.23649" 
+    capture_lex $P914
+    .const 'Sub' $P908 = "260_1258051419.23649" 
+    capture_lex $P908
+    .const 'Sub' $P902 = "258_1258051419.23649" 
+    capture_lex $P902
+    .const 'Sub' $P896 = "256_1258051419.23649" 
+    capture_lex $P896
+    .const 'Sub' $P890 = "254_1258051419.23649" 
+    capture_lex $P890
+    .const 'Sub' $P884 = "252_1258051419.23649" 
+    capture_lex $P884
+    .const 'Sub' $P878 = "250_1258051419.23649" 
+    capture_lex $P878
+    .const 'Sub' $P872 = "248_1258051419.23649" 
+    capture_lex $P872
+    .const 'Sub' $P866 = "246_1258051419.23649" 
+    capture_lex $P866
+    .const 'Sub' $P860 = "244_1258051419.23649" 
+    capture_lex $P860
+    .const 'Sub' $P854 = "242_1258051419.23649" 
+    capture_lex $P854
+    .const 'Sub' $P848 = "240_1258051419.23649" 
+    capture_lex $P848
+    .const 'Sub' $P842 = "238_1258051419.23649" 
+    capture_lex $P842
+    .const 'Sub' $P836 = "236_1258051419.23649" 
+    capture_lex $P836
+    .const 'Sub' $P830 = "234_1258051419.23649" 
+    capture_lex $P830
+    .const 'Sub' $P824 = "232_1258051419.23649" 
+    capture_lex $P824
+    .const 'Sub' $P818 = "230_1258051419.23649" 
+    capture_lex $P818
+    .const 'Sub' $P812 = "228_1258051419.23649" 
+    capture_lex $P812
+    .const 'Sub' $P806 = "226_1258051419.23649" 
+    capture_lex $P806
+    .const 'Sub' $P800 = "224_1258051419.23649" 
+    capture_lex $P800
+    .const 'Sub' $P794 = "222_1258051419.23649" 
+    capture_lex $P794
+    .const 'Sub' $P788 = "220_1258051419.23649" 
+    capture_lex $P788
+    .const 'Sub' $P782 = "218_1258051419.23649" 
+    capture_lex $P782
+    .const 'Sub' $P776 = "216_1258051419.23649" 
+    capture_lex $P776
+    .const 'Sub' $P770 = "214_1258051419.23649" 
+    capture_lex $P770
+    .const 'Sub' $P764 = "212_1258051419.23649" 
+    capture_lex $P764
+    .const 'Sub' $P758 = "210_1258051419.23649" 
+    capture_lex $P758
+    .const 'Sub' $P753 = "208_1258051419.23649" 
+    capture_lex $P753
+    .const 'Sub' $P748 = "206_1258051419.23649" 
+    capture_lex $P748
+    .const 'Sub' $P744 = "204_1258051419.23649" 
+    capture_lex $P744
+    .const 'Sub' $P739 = "202_1258051419.23649" 
+    capture_lex $P739
+    .const 'Sub' $P734 = "200_1258051419.23649" 
+    capture_lex $P734
+    .const 'Sub' $P730 = "198_1258051419.23649" 
+    capture_lex $P730
+    .const 'Sub' $P726 = "196_1258051419.23649" 
+    capture_lex $P726
+    .const 'Sub' $P720 = "194_1258051419.23649" 
+    capture_lex $P720
+    .const 'Sub' $P714 = "192_1258051419.23649" 
+    capture_lex $P714
+    .const 'Sub' $P707 = "190_1258051419.23649" 
+    capture_lex $P707
+    .const 'Sub' $P703 = "188_1258051419.23649" 
+    capture_lex $P703
+    .const 'Sub' $P699 = "186_1258051419.23649" 
+    capture_lex $P699
+    .const 'Sub' $P692 = "184_1258051419.23649" 
+    capture_lex $P692
+    .const 'Sub' $P685 = "182_1258051419.23649" 
+    capture_lex $P685
+    .const 'Sub' $P681 = "180_1258051419.23649" 
+    capture_lex $P681
+    .const 'Sub' $P677 = "178_1258051419.23649" 
+    capture_lex $P677
+    .const 'Sub' $P672 = "176_1258051419.23649" 
+    capture_lex $P672
+    .const 'Sub' $P667 = "174_1258051419.23649" 
+    capture_lex $P667
+    .const 'Sub' $P662 = "172_1258051419.23649" 
+    capture_lex $P662
+    .const 'Sub' $P657 = "170_1258051419.23649" 
+    capture_lex $P657
+    .const 'Sub' $P653 = "168_1258051419.23649" 
+    capture_lex $P653
+    .const 'Sub' $P649 = "166_1258051419.23649" 
+    capture_lex $P649
+    .const 'Sub' $P637 = "162_1258051419.23649" 
+    capture_lex $P637
+    .const 'Sub' $P632 = "160_1258051419.23649" 
+    capture_lex $P632
+    .const 'Sub' $P626 = "158_1258051419.23649" 
+    capture_lex $P626
+    .const 'Sub' $P621 = "156_1258051419.23649" 
+    capture_lex $P621
+    .const 'Sub' $P614 = "154_1258051419.23649" 
+    capture_lex $P614
+    .const 'Sub' $P607 = "152_1258051419.23649" 
+    capture_lex $P607
+    .const 'Sub' $P602 = "150_1258051419.23649" 
+    capture_lex $P602
+    .const 'Sub' $P597 = "148_1258051419.23649" 
+    capture_lex $P597
+    .const 'Sub' $P585 = "144_1258051419.23649" 
+    capture_lex $P585
+    .const 'Sub' $P554 = "142_1258051419.23649" 
+    capture_lex $P554
+    .const 'Sub' $P547 = "140_1258051419.23649" 
+    capture_lex $P547
+    .const 'Sub' $P542 = "138_1258051419.23649" 
+    capture_lex $P542
+    .const 'Sub' $P533 = "136_1258051419.23649" 
+    capture_lex $P533
+    .const 'Sub' $P519 = "134_1258051419.23649" 
+    capture_lex $P519
+    .const 'Sub' $P511 = "132_1258051419.23649" 
+    capture_lex $P511
+    .const 'Sub' $P493 = "130_1258051419.23649" 
+    capture_lex $P493
+    .const 'Sub' $P475 = "128_1258051419.23649" 
+    capture_lex $P475
+    .const 'Sub' $P469 = "126_1258051419.23649" 
+    capture_lex $P469
+    .const 'Sub' $P463 = "124_1258051419.23649" 
+    capture_lex $P463
+    .const 'Sub' $P454 = "120_1258051419.23649" 
+    capture_lex $P454
+    .const 'Sub' $P444 = "118_1258051419.23649" 
+    capture_lex $P444
+    .const 'Sub' $P438 = "116_1258051419.23649" 
+    capture_lex $P438
+    .const 'Sub' $P432 = "114_1258051419.23649" 
+    capture_lex $P432
+    .const 'Sub' $P426 = "112_1258051419.23649" 
+    capture_lex $P426
+    .const 'Sub' $P400 = "108_1258051419.23649" 
+    capture_lex $P400
+    .const 'Sub' $P392 = "106_1258051419.23649" 
+    capture_lex $P392
+    .const 'Sub' $P386 = "104_1258051419.23649" 
+    capture_lex $P386
+    .const 'Sub' $P378 = "100_1258051419.23649" 
+    capture_lex $P378
+    .const 'Sub' $P374 = "98_1258051419.23649" 
+    capture_lex $P374
+    .const 'Sub' $P363 = "96_1258051419.23649" 
+    capture_lex $P363
+    .const 'Sub' $P353 = "94_1258051419.23649" 
+    capture_lex $P353
+    .const 'Sub' $P349 = "92_1258051419.23649" 
+    capture_lex $P349
+    .const 'Sub' $P344 = "90_1258051419.23649" 
+    capture_lex $P344
+    .const 'Sub' $P339 = "88_1258051419.23649" 
+    capture_lex $P339
+    .const 'Sub' $P334 = "86_1258051419.23649" 
+    capture_lex $P334
+    .const 'Sub' $P329 = "84_1258051419.23649" 
+    capture_lex $P329
+    .const 'Sub' $P324 = "82_1258051419.23649" 
+    capture_lex $P324
+    .const 'Sub' $P319 = "80_1258051419.23649" 
+    capture_lex $P319
+    .const 'Sub' $P314 = "78_1258051419.23649" 
+    capture_lex $P314
+    .const 'Sub' $P309 = "76_1258051419.23649" 
+    capture_lex $P309
+    .const 'Sub' $P303 = "74_1258051419.23649" 
+    capture_lex $P303
+    .const 'Sub' $P287 = "70_1258051419.23649" 
+    capture_lex $P287
+    .const 'Sub' $P275 = "68_1258051419.23649" 
+    capture_lex $P275
+    .const 'Sub' $P268 = "66_1258051419.23649" 
+    capture_lex $P268
+    .const 'Sub' $P249 = "64_1258051419.23649" 
+    capture_lex $P249
+    .const 'Sub' $P241 = "62_1258051419.23649" 
+    capture_lex $P241
+    .const 'Sub' $P224 = "59_1258051419.23649" 
+    capture_lex $P224
+    .const 'Sub' $P205 = "57_1258051419.23649" 
+    capture_lex $P205
+    .const 'Sub' $P197 = "53_1258051419.23649" 
+    capture_lex $P197
+    .const 'Sub' $P193 = "51_1258051419.23649" 
+    capture_lex $P193
+    .const 'Sub' $P185 = "47_1258051419.23649" 
+    capture_lex $P185
+    .const 'Sub' $P181 = "45_1258051419.23649" 
+    capture_lex $P181
+    .const 'Sub' $P174 = "43_1258051419.23649" 
+    capture_lex $P174
+    .const 'Sub' $P168 = "41_1258051419.23649" 
+    capture_lex $P168
+    .const 'Sub' $P163 = "39_1258051419.23649" 
+    capture_lex $P163
+    .const 'Sub' $P156 = "37_1258051419.23649" 
+    capture_lex $P156
+    .const 'Sub' $P151 = "35_1258051419.23649" 
+    capture_lex $P151
+    .const 'Sub' $P146 = "33_1258051419.23649" 
+    capture_lex $P146
+    .const 'Sub' $P136 = "30_1258051419.23649" 
+    capture_lex $P136
+    .const 'Sub' $P124 = "28_1258051419.23649" 
+    capture_lex $P124
+    .const 'Sub' $P118 = "26_1258051419.23649" 
+    capture_lex $P118
+    .const 'Sub' $P76 = "23_1258051419.23649" 
+    capture_lex $P76
+    .const 'Sub' $P67 = "21_1258051419.23649" 
+    capture_lex $P67
+    .const 'Sub' $P58 = "19_1258051419.23649" 
+    capture_lex $P58
+    .const 'Sub' $P44 = "17_1258051419.23649" 
+    capture_lex $P44
+    .const 'Sub' $P38 = "15_1258051419.23649" 
+    capture_lex $P38
+    .const 'Sub' $P33 = "13_1258051419.23649" 
+    capture_lex $P33
+    .const 'Sub' $P15 = "12_1258051419.23649" 
+    capture_lex $P15
+.annotate "line", 467
+    get_hll_global $P986, ["NQP";"Regex"], "_block985" 
+    capture_lex $P986
+    $P1020 = $P986()
+.annotate "line", 4
+    .return ($P1020)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "" :load :init :subid("post300") :outer("11_1258051419.23649")
+.annotate "line", 4
+    get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
+    .local pmc block
+    set block, $P14
+.annotate "line", 359
+    get_hll_global $P1021, ["NQP"], "Grammar"
+    $P1021."O"(":prec<y=>, :assoc<unary>", "%methodop")
+.annotate "line", 360
+    get_hll_global $P1022, ["NQP"], "Grammar"
+    $P1022."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
+.annotate "line", 361
+    get_hll_global $P1023, ["NQP"], "Grammar"
+    $P1023."O"(":prec<w=>, :assoc<left>", "%exponentiation")
+.annotate "line", 362
+    get_hll_global $P1024, ["NQP"], "Grammar"
+    $P1024."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
+.annotate "line", 363
+    get_hll_global $P1025, ["NQP"], "Grammar"
+    $P1025."O"(":prec<u=>, :assoc<left>", "%multiplicative")
+.annotate "line", 364
+    get_hll_global $P1026, ["NQP"], "Grammar"
+    $P1026."O"(":prec<t=>, :assoc<left>", "%additive")
+.annotate "line", 365
+    get_hll_global $P1027, ["NQP"], "Grammar"
+    $P1027."O"(":prec<r=>, :assoc<left>", "%concatenation")
+.annotate "line", 366
+    get_hll_global $P1028, ["NQP"], "Grammar"
+    $P1028."O"(":prec<m=>, :assoc<left>", "%relational")
+.annotate "line", 367
+    get_hll_global $P1029, ["NQP"], "Grammar"
+    $P1029."O"(":prec<l=>, :assoc<left>", "%tight_and")
+.annotate "line", 368
+    get_hll_global $P1030, ["NQP"], "Grammar"
+    $P1030."O"(":prec<k=>, :assoc<left>", "%tight_or")
+.annotate "line", 369
+    get_hll_global $P1031, ["NQP"], "Grammar"
+    $P1031."O"(":prec<j=>, :assoc<right>", "%conditional")
+.annotate "line", 370
+    get_hll_global $P1032, ["NQP"], "Grammar"
+    $P1032."O"(":prec<i=>, :assoc<right>", "%assignment")
+.annotate "line", 371
+    get_hll_global $P1033, ["NQP"], "Grammar"
+    $P1033."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+.annotate "line", 372
+    get_hll_global $P1034, ["NQP"], "Grammar"
+    $P1034."O"(":prec<f=>, :assoc<list>", "%list_infix")
+.annotate "line", 358
+    $P1035 = get_root_global ["parrot"], "P6metaclass"
+    $P1035."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "TOP"  :subid("12_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    new $P17, 'ExceptionHandler'
+    set_addr $P17, control_16
+    $P17."handle_types"(58)
+    push_eh $P17
+    .lex "self", self
+.annotate "line", 5
+    new $P18, "Hash"
+    .lex "%*LANG", $P18
+.annotate "line", 10
+    new $P19, "Undef"
+    .lex "$*SCOPE", $P19
+.annotate "line", 4
+    find_lex $P20, "%*LANG"
+    unless_null $P20, vivify_301
+    die "Contextual %*LANG not found"
+  vivify_301:
+.annotate "line", 6
+    get_hll_global $P21, ["NQP"], "Regex"
+    find_lex $P22, "%*LANG"
+    unless_null $P22, vivify_302
+    die "Contextual %*LANG not found"
+    store_lex "%*LANG", $P22
+  vivify_302:
+    set $P22["Regex"], $P21
+.annotate "line", 7
+    get_hll_global $P23, ["NQP"], "RegexActions"
+    find_lex $P24, "%*LANG"
+    unless_null $P24, vivify_303
+    die "Contextual %*LANG not found"
+    store_lex "%*LANG", $P24
+  vivify_303:
+    set $P24["Regex-actions"], $P23
+.annotate "line", 8
+    get_hll_global $P25, ["NQP"], "Grammar"
+    find_lex $P26, "%*LANG"
+    unless_null $P26, vivify_304
+    die "Contextual %*LANG not found"
+    store_lex "%*LANG", $P26
+  vivify_304:
+    set $P26["MAIN"], $P25
+.annotate "line", 9
+    get_hll_global $P27, ["NQP"], "Actions"
+    find_lex $P28, "%*LANG"
+    unless_null $P28, vivify_305
+    die "Contextual %*LANG not found"
+    store_lex "%*LANG", $P28
+  vivify_305:
+    set $P28["MAIN-actions"], $P27
+.annotate "line", 10
+    new $P29, "String"
+    assign $P29, ""
+    store_lex "$*SCOPE", $P29
+.annotate "line", 11
+    find_lex $P30, "self"
+    $P31 = $P30."comp_unit"()
+.annotate "line", 4
+    .return ($P31)
+  control_16:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P32, exception, "payload"
+    .return ($P32)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "identifier"  :subid("13_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx34_tgt
+    .local int rx34_pos
+    .local int rx34_off
+    .local int rx34_eos
+    .local int rx34_rep
+    .local pmc rx34_cur
+    (rx34_cur, rx34_pos, rx34_tgt, $I10) = self."!cursor_start"()
+    rx34_cur."!cursor_debug"("START ", "identifier")
+    .lex unicode:"$\x{a2}", rx34_cur
+    .local pmc match
+    .lex "$/", match
+    length rx34_eos, rx34_tgt
+    set rx34_off, 0
+    lt $I10, 2, rx34_start
+    sub rx34_off, $I10, 1
+    substr rx34_tgt, rx34_tgt, rx34_off
+  rx34_start:
+.annotate "line", 16
+  # rx subrule "ident" subtype=capture negate=
+    rx34_cur."!cursor_pos"(rx34_pos)
+    $P10 = rx34_cur."ident"()
+    unless $P10, rx34_fail
+    rx34_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("ident")
+    rx34_pos = $P10."pos"()
+  # rx pass
+    rx34_cur."!cursor_pass"(rx34_pos, "identifier")
+    rx34_cur."!cursor_debug"("PASS  ", "identifier", " at pos=", rx34_pos)
+    .return (rx34_cur)
+  rx34_fail:
+.annotate "line", 4
+    (rx34_rep, rx34_pos, $I10, $P10) = rx34_cur."!mark_fail"(0)
+    lt rx34_pos, -1, rx34_done
+    eq rx34_pos, -1, rx34_fail
+    jump $I10
+  rx34_done:
+    rx34_cur."!cursor_fail"()
+    rx34_cur."!cursor_debug"("FAIL  ", "identifier")
+    .return (rx34_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__identifier"  :subid("14_1258051419.23649") :method
+.annotate "line", 4
+    $P36 = self."!PREFIX__!subrule"("ident", "")
+    new $P37, "ResizablePMCArray"
+    push $P37, $P36
+    .return ($P37)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "name"  :subid("15_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx39_tgt
+    .local int rx39_pos
+    .local int rx39_off
+    .local int rx39_eos
+    .local int rx39_rep
+    .local pmc rx39_cur
+    (rx39_cur, rx39_pos, rx39_tgt, $I10) = self."!cursor_start"()
+    rx39_cur."!cursor_debug"("START ", "name")
+    rx39_cur."!cursor_caparray"("identifier")
+    .lex unicode:"$\x{a2}", rx39_cur
+    .local pmc match
+    .lex "$/", match
+    length rx39_eos, rx39_tgt
+    set rx39_off, 0
+    lt $I10, 2, rx39_start
+    sub rx39_off, $I10, 1
+    substr rx39_tgt, rx39_tgt, rx39_off
+  rx39_start:
+.annotate "line", 18
+  # rx rxquantr42 ** 1..*
+    set_addr $I43, rxquantr42_done
+    rx39_cur."!mark_push"(0, -1, $I43)
+  rxquantr42_loop:
+  # rx subrule "identifier" subtype=capture negate=
+    rx39_cur."!cursor_pos"(rx39_pos)
+    $P10 = rx39_cur."identifier"()
+    unless $P10, rx39_fail
+    rx39_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("identifier")
+    rx39_pos = $P10."pos"()
+    (rx39_rep) = rx39_cur."!mark_commit"($I43)
+    rx39_cur."!mark_push"(rx39_rep, rx39_pos, $I43)
+  # rx literal  "::"
+    add $I11, rx39_pos, 2
+    gt $I11, rx39_eos, rx39_fail
+    sub $I11, rx39_pos, rx39_off
+    substr $S10, rx39_tgt, $I11, 2
+    ne $S10, "::", rx39_fail
+    add rx39_pos, 2
+    goto rxquantr42_loop
+  rxquantr42_done:
+  # rx pass
+    rx39_cur."!cursor_pass"(rx39_pos, "name")
+    rx39_cur."!cursor_debug"("PASS  ", "name", " at pos=", rx39_pos)
+    .return (rx39_cur)
+  rx39_fail:
+.annotate "line", 4
+    (rx39_rep, rx39_pos, $I10, $P10) = rx39_cur."!mark_fail"(0)
+    lt rx39_pos, -1, rx39_done
+    eq rx39_pos, -1, rx39_fail
+    jump $I10
+  rx39_done:
+    rx39_cur."!cursor_fail"()
+    rx39_cur."!cursor_debug"("FAIL  ", "name")
+    .return (rx39_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__name"  :subid("16_1258051419.23649") :method
+.annotate "line", 4
+    new $P41, "ResizablePMCArray"
+    push $P41, ""
+    .return ($P41)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "deflongname"  :subid("17_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx45_tgt
+    .local int rx45_pos
+    .local int rx45_off
+    .local int rx45_eos
+    .local int rx45_rep
+    .local pmc rx45_cur
+    (rx45_cur, rx45_pos, rx45_tgt, $I10) = self."!cursor_start"()
+    rx45_cur."!cursor_debug"("START ", "deflongname")
+    rx45_cur."!cursor_caparray"("sym")
+    .lex unicode:"$\x{a2}", rx45_cur
+    .local pmc match
+    .lex "$/", match
+    length rx45_eos, rx45_tgt
+    set rx45_off, 0
+    lt $I10, 2, rx45_start
+    sub rx45_off, $I10, 1
+    substr rx45_tgt, rx45_tgt, rx45_off
+  rx45_start:
+.annotate "line", 21
+  # rx subrule "identifier" subtype=capture negate=
+    rx45_cur."!cursor_pos"(rx45_pos)
+    $P10 = rx45_cur."identifier"()
+    unless $P10, rx45_fail
+    rx45_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("identifier")
+    rx45_pos = $P10."pos"()
+.annotate "line", 22
+  # rx rxquantr49 ** 0..1
+    set_addr $I57, rxquantr49_done
+    rx45_cur."!mark_push"(0, rx45_pos, $I57)
+  rxquantr49_loop:
+  alt50_0:
+    set_addr $I10, alt50_1
+    rx45_cur."!mark_push"(0, rx45_pos, $I10)
+  # rx literal  ":sym<"
+    add $I11, rx45_pos, 5
+    gt $I11, rx45_eos, rx45_fail
+    sub $I11, rx45_pos, rx45_off
+    substr $S10, rx45_tgt, $I11, 5
+    ne $S10, ":sym<", rx45_fail
+    add rx45_pos, 5
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_53_fail
+    rx45_cur."!mark_push"(0, rx45_pos, $I10)
+  # rx rxquantr51 ** 0..*
+    set_addr $I52, rxquantr51_done
+    rx45_cur."!mark_push"(0, rx45_pos, $I52)
+  rxquantr51_loop:
+  # rx enumcharlist negate=1 
+    ge rx45_pos, rx45_eos, rx45_fail
+    sub $I10, rx45_pos, rx45_off
+    substr $S10, rx45_tgt, $I10, 1
+    index $I11, ">", $S10
+    ge $I11, 0, rx45_fail
+    inc rx45_pos
+    (rx45_rep) = rx45_cur."!mark_commit"($I52)
+    rx45_cur."!mark_push"(rx45_rep, rx45_pos, $I52)
+    goto rxquantr51_loop
+  rxquantr51_done:
+    set_addr $I10, rxcap_53_fail
+    ($I12, $I11) = rx45_cur."!mark_peek"($I10)
+    rx45_cur."!cursor_pos"($I11)
+    ($P10) = rx45_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx45_pos, "")
+    rx45_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_53_done
+  rxcap_53_fail:
+    goto rx45_fail
+  rxcap_53_done:
+  # rx literal  ">"
+    add $I11, rx45_pos, 1
+    gt $I11, rx45_eos, rx45_fail
+    sub $I11, rx45_pos, rx45_off
+    substr $S10, rx45_tgt, $I11, 1
+    ne $S10, ">", rx45_fail
+    add rx45_pos, 1
+    goto alt50_end
+  alt50_1:
+  # rx literal  unicode:":sym\x{ab}"
+    add $I11, rx45_pos, 5
+    gt $I11, rx45_eos, rx45_fail
+    sub $I11, rx45_pos, rx45_off
+    substr $S10, rx45_tgt, $I11, 5
+    ne $S10, unicode:":sym\x{ab}", rx45_fail
+    add rx45_pos, 5
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_56_fail
+    rx45_cur."!mark_push"(0, rx45_pos, $I10)
+  # rx rxquantr54 ** 0..*
+    set_addr $I55, rxquantr54_done
+    rx45_cur."!mark_push"(0, rx45_pos, $I55)
+  rxquantr54_loop:
+  # rx enumcharlist negate=1 
+    ge rx45_pos, rx45_eos, rx45_fail
+    sub $I10, rx45_pos, rx45_off
+    substr $S10, rx45_tgt, $I10, 1
+    index $I11, unicode:"\x{bb}", $S10
+    ge $I11, 0, rx45_fail
+    inc rx45_pos
+    (rx45_rep) = rx45_cur."!mark_commit"($I55)
+    rx45_cur."!mark_push"(rx45_rep, rx45_pos, $I55)
+    goto rxquantr54_loop
+  rxquantr54_done:
+    set_addr $I10, rxcap_56_fail
+    ($I12, $I11) = rx45_cur."!mark_peek"($I10)
+    rx45_cur."!cursor_pos"($I11)
+    ($P10) = rx45_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx45_pos, "")
+    rx45_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_56_done
+  rxcap_56_fail:
+    goto rx45_fail
+  rxcap_56_done:
+  # rx literal  unicode:"\x{bb}"
+    add $I11, rx45_pos, 1
+    gt $I11, rx45_eos, rx45_fail
+    sub $I11, rx45_pos, rx45_off
+    substr $S10, rx45_tgt, $I11, 1
+    ne $S10, unicode:"\x{bb}", rx45_fail
+    add rx45_pos, 1
+  alt50_end:
+    (rx45_rep) = rx45_cur."!mark_commit"($I57)
+  rxquantr49_done:
+.annotate "line", 20
+  # rx pass
+    rx45_cur."!cursor_pass"(rx45_pos, "deflongname")
+    rx45_cur."!cursor_debug"("PASS  ", "deflongname", " at pos=", rx45_pos)
+    .return (rx45_cur)
+  rx45_fail:
+.annotate "line", 4
+    (rx45_rep, rx45_pos, $I10, $P10) = rx45_cur."!mark_fail"(0)
+    lt rx45_pos, -1, rx45_done
+    eq rx45_pos, -1, rx45_fail
+    jump $I10
+  rx45_done:
+    rx45_cur."!cursor_fail"()
+    rx45_cur."!cursor_debug"("FAIL  ", "deflongname")
+    .return (rx45_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__deflongname"  :subid("18_1258051419.23649") :method
+.annotate "line", 4
+    $P47 = self."!PREFIX__!subrule"("identifier", "")
+    new $P48, "ResizablePMCArray"
+    push $P48, $P47
+    .return ($P48)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "ENDSTMT"  :subid("19_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx59_tgt
+    .local int rx59_pos
+    .local int rx59_off
+    .local int rx59_eos
+    .local int rx59_rep
+    .local pmc rx59_cur
+    (rx59_cur, rx59_pos, rx59_tgt, $I10) = self."!cursor_start"()
+    rx59_cur."!cursor_debug"("START ", "ENDSTMT")
+    .lex unicode:"$\x{a2}", rx59_cur
+    .local pmc match
+    .lex "$/", match
+    length rx59_eos, rx59_tgt
+    set rx59_off, 0
+    lt $I10, 2, rx59_start
+    sub rx59_off, $I10, 1
+    substr rx59_tgt, rx59_tgt, rx59_off
+  rx59_start:
+.annotate "line", 26
+  # rx rxquantr62 ** 0..1
+    set_addr $I66, rxquantr62_done
+    rx59_cur."!mark_push"(0, rx59_pos, $I66)
+  rxquantr62_loop:
+  # rx rxquantr63 ** 0..*
+    set_addr $I64, rxquantr63_done
+    rx59_cur."!mark_push"(0, rx59_pos, $I64)
+  rxquantr63_loop:
+  # rx enumcharlist negate=0 
+    ge rx59_pos, rx59_eos, rx59_fail
+    sub $I10, rx59_pos, rx59_off
+    substr $S10, rx59_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx59_fail
+    inc rx59_pos
+    (rx59_rep) = rx59_cur."!mark_commit"($I64)
+    rx59_cur."!mark_push"(rx59_rep, rx59_pos, $I64)
+    goto rxquantr63_loop
+  rxquantr63_done:
+  # rxanchor eol
+    sub $I10, rx59_pos, rx59_off
+    is_cclass $I11, 4096, rx59_tgt, $I10
+    if $I11, rxanchor65_done
+    ne rx59_pos, rx59_eos, rx59_fail
+    eq rx59_pos, 0, rxanchor65_done
+    dec $I10
+    is_cclass $I11, 4096, rx59_tgt, $I10
+    if $I11, rx59_fail
+  rxanchor65_done:
+  # rx subrule "ws" subtype=method negate=
+    rx59_cur."!cursor_pos"(rx59_pos)
+    $P10 = rx59_cur."ws"()
+    unless $P10, rx59_fail
+    rx59_pos = $P10."pos"()
+  # rx subrule "MARKER" subtype=zerowidth negate=
+    rx59_cur."!cursor_pos"(rx59_pos)
+    $P10 = rx59_cur."MARKER"("endstmt")
+    unless $P10, rx59_fail
+    (rx59_rep) = rx59_cur."!mark_commit"($I66)
+  rxquantr62_done:
+.annotate "line", 25
+  # rx pass
+    rx59_cur."!cursor_pass"(rx59_pos, "ENDSTMT")
+    rx59_cur."!cursor_debug"("PASS  ", "ENDSTMT", " at pos=", rx59_pos)
+    .return (rx59_cur)
+  rx59_fail:
+.annotate "line", 4
+    (rx59_rep, rx59_pos, $I10, $P10) = rx59_cur."!mark_fail"(0)
+    lt rx59_pos, -1, rx59_done
+    eq rx59_pos, -1, rx59_fail
+    jump $I10
+  rx59_done:
+    rx59_cur."!cursor_fail"()
+    rx59_cur."!cursor_debug"("FAIL  ", "ENDSTMT")
+    .return (rx59_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__ENDSTMT"  :subid("20_1258051419.23649") :method
+.annotate "line", 4
+    new $P61, "ResizablePMCArray"
+    push $P61, ""
+    .return ($P61)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "ws"  :subid("21_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx68_tgt
+    .local int rx68_pos
+    .local int rx68_off
+    .local int rx68_eos
+    .local int rx68_rep
+    .local pmc rx68_cur
+    (rx68_cur, rx68_pos, rx68_tgt, $I10) = self."!cursor_start"()
+    rx68_cur."!cursor_debug"("START ", "ws")
+    .lex unicode:"$\x{a2}", rx68_cur
+    .local pmc match
+    .lex "$/", match
+    length rx68_eos, rx68_tgt
+    set rx68_off, 0
+    lt $I10, 2, rx68_start
+    sub rx68_off, $I10, 1
+    substr rx68_tgt, rx68_tgt, rx68_off
+  rx68_start:
+  alt71_0:
+.annotate "line", 29
+    set_addr $I10, alt71_1
+    rx68_cur."!mark_push"(0, rx68_pos, $I10)
+.annotate "line", 30
+  # rx subrule "MARKED" subtype=zerowidth negate=
+    rx68_cur."!cursor_pos"(rx68_pos)
+    $P10 = rx68_cur."MARKED"("ws")
+    unless $P10, rx68_fail
+    goto alt71_end
+  alt71_1:
+.annotate "line", 31
+  # rx subrule "ww" subtype=zerowidth negate=1
+    rx68_cur."!cursor_pos"(rx68_pos)
+    $P10 = rx68_cur."ww"()
+    if $P10, rx68_fail
+.annotate "line", 35
+  # rx rxquantr72 ** 0..*
+    set_addr $I75, rxquantr72_done
+    rx68_cur."!mark_push"(0, rx68_pos, $I75)
+  rxquantr72_loop:
+  alt73_0:
+.annotate "line", 32
+    set_addr $I10, alt73_1
+    rx68_cur."!mark_push"(0, rx68_pos, $I10)
+  # rx charclass_q s r 1..-1
+    sub $I10, rx68_pos, rx68_off
+    find_not_cclass $I11, 32, rx68_tgt, $I10, rx68_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx68_fail
+    add rx68_pos, rx68_off, $I11
+    goto alt73_end
+  alt73_1:
+    set_addr $I10, alt73_2
+    rx68_cur."!mark_push"(0, rx68_pos, $I10)
+.annotate "line", 33
+  # rx literal  "#"
+    add $I11, rx68_pos, 1
+    gt $I11, rx68_eos, rx68_fail
+    sub $I11, rx68_pos, rx68_off
+    substr $S10, rx68_tgt, $I11, 1
+    ne $S10, "#", rx68_fail
+    add rx68_pos, 1
+  # rx charclass_q N r 0..-1
+    sub $I10, rx68_pos, rx68_off
+    find_cclass $I11, 4096, rx68_tgt, $I10, rx68_eos
+    add rx68_pos, rx68_off, $I11
+    goto alt73_end
+  alt73_2:
+.annotate "line", 34
+  # rxanchor bol
+    eq rx68_pos, 0, rxanchor74_done
+    ge rx68_pos, rx68_eos, rx68_fail
+    sub $I10, rx68_pos, rx68_off
+    dec $I10
+    is_cclass $I11, 4096, rx68_tgt, $I10
+    unless $I11, rx68_fail
+  rxanchor74_done:
+  # rx subrule "pod_comment" subtype=method negate=
+    rx68_cur."!cursor_pos"(rx68_pos)
+    $P10 = rx68_cur."pod_comment"()
+    unless $P10, rx68_fail
+    rx68_pos = $P10."pos"()
+  alt73_end:
+.annotate "line", 35
+    (rx68_rep) = rx68_cur."!mark_commit"($I75)
+    rx68_cur."!mark_push"(rx68_rep, rx68_pos, $I75)
+    goto rxquantr72_loop
+  rxquantr72_done:
+.annotate "line", 36
+  # rx subrule "MARKER" subtype=zerowidth negate=
+    rx68_cur."!cursor_pos"(rx68_pos)
+    $P10 = rx68_cur."MARKER"("ws")
+    unless $P10, rx68_fail
+  alt71_end:
+.annotate "line", 29
+  # rx pass
+    rx68_cur."!cursor_pass"(rx68_pos, "ws")
+    rx68_cur."!cursor_debug"("PASS  ", "ws", " at pos=", rx68_pos)
+    .return (rx68_cur)
+  rx68_fail:
+.annotate "line", 4
+    (rx68_rep, rx68_pos, $I10, $P10) = rx68_cur."!mark_fail"(0)
+    lt rx68_pos, -1, rx68_done
+    eq rx68_pos, -1, rx68_fail
+    jump $I10
+  rx68_done:
+    rx68_cur."!cursor_fail"()
+    rx68_cur."!cursor_debug"("FAIL  ", "ws")
+    .return (rx68_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__ws"  :subid("22_1258051419.23649") :method
+.annotate "line", 4
+    new $P70, "ResizablePMCArray"
+    push $P70, ""
+    push $P70, ""
+    .return ($P70)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "pod_comment"  :subid("23_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .const 'Sub' $P110 = "25_1258051419.23649" 
+    capture_lex $P110
+    .local string rx77_tgt
+    .local int rx77_pos
+    .local int rx77_off
+    .local int rx77_eos
+    .local int rx77_rep
+    .local pmc rx77_cur
+    (rx77_cur, rx77_pos, rx77_tgt, $I10) = self."!cursor_start"()
+    rx77_cur."!cursor_debug"("START ", "pod_comment")
+    .lex unicode:"$\x{a2}", rx77_cur
+    .local pmc match
+    .lex "$/", match
+    length rx77_eos, rx77_tgt
+    set rx77_off, 0
+    lt $I10, 2, rx77_start
+    sub rx77_off, $I10, 1
+    substr rx77_tgt, rx77_tgt, rx77_off
+  rx77_start:
+.annotate "line", 40
+  # rxanchor bol
+    eq rx77_pos, 0, rxanchor80_done
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    dec $I10
+    is_cclass $I11, 4096, rx77_tgt, $I10
+    unless $I11, rx77_fail
+  rxanchor80_done:
+  # rx rxquantr81 ** 0..*
+    set_addr $I82, rxquantr81_done
+    rx77_cur."!mark_push"(0, rx77_pos, $I82)
+  rxquantr81_loop:
+  # rx enumcharlist negate=0 
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx77_fail
+    inc rx77_pos
+    (rx77_rep) = rx77_cur."!mark_commit"($I82)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I82)
+    goto rxquantr81_loop
+  rxquantr81_done:
+  # rx literal  "="
+    add $I11, rx77_pos, 1
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 1
+    ne $S10, "=", rx77_fail
+    add rx77_pos, 1
+  alt83_0:
+.annotate "line", 41
+    set_addr $I10, alt83_1
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+.annotate "line", 42
+  # rx literal  "begin"
+    add $I11, rx77_pos, 5
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 5
+    ne $S10, "begin", rx77_fail
+    add rx77_pos, 5
+  # rx rxquantr84 ** 1..*
+    set_addr $I85, rxquantr84_done
+    rx77_cur."!mark_push"(0, -1, $I85)
+  rxquantr84_loop:
+  # rx enumcharlist negate=0 
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx77_fail
+    inc rx77_pos
+    (rx77_rep) = rx77_cur."!mark_commit"($I85)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I85)
+    goto rxquantr84_loop
+  rxquantr84_done:
+  # rx literal  "END"
+    add $I11, rx77_pos, 3
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 3
+    ne $S10, "END", rx77_fail
+    add rx77_pos, 3
+  # rxanchor rwb
+    le rx77_pos, 0, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    if $I11, rx77_fail
+    dec $I10
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    unless $I11, rx77_fail
+  alt86_0:
+.annotate "line", 43
+    set_addr $I10, alt86_1
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+  # rx rxquantf87 ** 0..*
+    set_addr $I10, rxquantf87_loop
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+    goto rxquantf87_done
+  rxquantf87_loop:
+  # rx charclass .
+    ge rx77_pos, rx77_eos, rx77_fail
+    inc rx77_pos
+    set_addr $I10, rxquantf87_loop
+    rx77_cur."!mark_push"($I88, rx77_pos, $I10)
+  rxquantf87_done:
+  # rx charclass nl
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 4096, rx77_tgt, $I10
+    unless $I11, rx77_fail
+    substr $S10, rx77_tgt, $I10, 2
+    iseq $I11, $S10, "\r\n"
+    add rx77_pos, $I11
+    inc rx77_pos
+  # rx literal  "=end"
+    add $I11, rx77_pos, 4
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 4
+    ne $S10, "=end", rx77_fail
+    add rx77_pos, 4
+  # rx rxquantr89 ** 1..*
+    set_addr $I90, rxquantr89_done
+    rx77_cur."!mark_push"(0, -1, $I90)
+  rxquantr89_loop:
+  # rx enumcharlist negate=0 
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx77_fail
+    inc rx77_pos
+    (rx77_rep) = rx77_cur."!mark_commit"($I90)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I90)
+    goto rxquantr89_loop
+  rxquantr89_done:
+  # rx literal  "END"
+    add $I11, rx77_pos, 3
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 3
+    ne $S10, "END", rx77_fail
+    add rx77_pos, 3
+  # rxanchor rwb
+    le rx77_pos, 0, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    if $I11, rx77_fail
+    dec $I10
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    unless $I11, rx77_fail
+  # rx charclass_q N r 0..-1
+    sub $I10, rx77_pos, rx77_off
+    find_cclass $I11, 4096, rx77_tgt, $I10, rx77_eos
+    add rx77_pos, rx77_off, $I11
+    goto alt86_end
+  alt86_1:
+  # rx charclass_q . r 0..-1
+    sub $I10, rx77_pos, rx77_off
+    find_not_cclass $I11, 65535, rx77_tgt, $I10, rx77_eos
+    add rx77_pos, rx77_off, $I11
+  alt86_end:
+.annotate "line", 42
+    goto alt83_end
+  alt83_1:
+    set_addr $I10, alt83_2
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+.annotate "line", 44
+  # rx literal  "begin"
+    add $I11, rx77_pos, 5
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 5
+    ne $S10, "begin", rx77_fail
+    add rx77_pos, 5
+  # rx rxquantr91 ** 1..*
+    set_addr $I92, rxquantr91_done
+    rx77_cur."!mark_push"(0, -1, $I92)
+  rxquantr91_loop:
+  # rx enumcharlist negate=0 
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx77_fail
+    inc rx77_pos
+    (rx77_rep) = rx77_cur."!mark_commit"($I92)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I92)
+    goto rxquantr91_loop
+  rxquantr91_done:
+  # rx subrule "identifier" subtype=capture negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."identifier"()
+    unless $P10, rx77_fail
+    rx77_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("identifier")
+    rx77_pos = $P10."pos"()
+  alt93_0:
+.annotate "line", 45
+    set_addr $I10, alt93_1
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+.annotate "line", 46
+  # rx rxquantf94 ** 0..*
+    set_addr $I10, rxquantf94_loop
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+    goto rxquantf94_done
+  rxquantf94_loop:
+  # rx charclass .
+    ge rx77_pos, rx77_eos, rx77_fail
+    inc rx77_pos
+    set_addr $I10, rxquantf94_loop
+    rx77_cur."!mark_push"($I95, rx77_pos, $I10)
+  rxquantf94_done:
+  # rx charclass nl
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 4096, rx77_tgt, $I10
+    unless $I11, rx77_fail
+    substr $S10, rx77_tgt, $I10, 2
+    iseq $I11, $S10, "\r\n"
+    add rx77_pos, $I11
+    inc rx77_pos
+  # rx literal  "=end"
+    add $I11, rx77_pos, 4
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 4
+    ne $S10, "=end", rx77_fail
+    add rx77_pos, 4
+  # rx rxquantr96 ** 1..*
+    set_addr $I97, rxquantr96_done
+    rx77_cur."!mark_push"(0, -1, $I97)
+  rxquantr96_loop:
+  # rx enumcharlist negate=0 
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx77_fail
+    inc rx77_pos
+    (rx77_rep) = rx77_cur."!mark_commit"($I97)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I97)
+    goto rxquantr96_loop
+  rxquantr96_done:
+  # rx subrule "!BACKREF" subtype=method negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."!BACKREF"("identifier")
+    unless $P10, rx77_fail
+    rx77_pos = $P10."pos"()
+  # rxanchor rwb
+    le rx77_pos, 0, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    if $I11, rx77_fail
+    dec $I10
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    unless $I11, rx77_fail
+  # rx charclass_q N r 0..-1
+    sub $I10, rx77_pos, rx77_off
+    find_cclass $I11, 4096, rx77_tgt, $I10, rx77_eos
+    add rx77_pos, rx77_off, $I11
+    goto alt93_end
+  alt93_1:
+.annotate "line", 47
+  # rx subrule "panic" subtype=method negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."panic"("=begin without matching =end")
+    unless $P10, rx77_fail
+    rx77_pos = $P10."pos"()
+  alt93_end:
+.annotate "line", 44
+    goto alt83_end
+  alt83_2:
+    set_addr $I10, alt83_3
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+.annotate "line", 49
+  # rx literal  "begin"
+    add $I11, rx77_pos, 5
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 5
+    ne $S10, "begin", rx77_fail
+    add rx77_pos, 5
+  # rxanchor rwb
+    le rx77_pos, 0, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    if $I11, rx77_fail
+    dec $I10
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    unless $I11, rx77_fail
+  # rx rxquantr99 ** 0..*
+    set_addr $I100, rxquantr99_done
+    rx77_cur."!mark_push"(0, rx77_pos, $I100)
+  rxquantr99_loop:
+  # rx enumcharlist negate=0 
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx77_fail
+    inc rx77_pos
+    (rx77_rep) = rx77_cur."!mark_commit"($I100)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I100)
+    goto rxquantr99_loop
+  rxquantr99_done:
+  alt101_0:
+.annotate "line", 50
+    set_addr $I10, alt101_1
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+  # rxanchor eol
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 4096, rx77_tgt, $I10
+    if $I11, rxanchor102_done
+    ne rx77_pos, rx77_eos, rx77_fail
+    eq rx77_pos, 0, rxanchor102_done
+    dec $I10
+    is_cclass $I11, 4096, rx77_tgt, $I10
+    if $I11, rx77_fail
+  rxanchor102_done:
+    goto alt101_end
+  alt101_1:
+    set_addr $I10, alt101_2
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+  # rx literal  "#"
+    add $I11, rx77_pos, 1
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 1
+    ne $S10, "#", rx77_fail
+    add rx77_pos, 1
+    goto alt101_end
+  alt101_2:
+  # rx subrule "panic" subtype=method negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."panic"("Unrecognized token after =begin")
+    unless $P10, rx77_fail
+    rx77_pos = $P10."pos"()
+  alt101_end:
+  alt103_0:
+.annotate "line", 51
+    set_addr $I10, alt103_1
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+.annotate "line", 52
+  # rx rxquantf104 ** 0..*
+    set_addr $I10, rxquantf104_loop
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+    goto rxquantf104_done
+  rxquantf104_loop:
+  # rx charclass .
+    ge rx77_pos, rx77_eos, rx77_fail
+    inc rx77_pos
+    set_addr $I10, rxquantf104_loop
+    rx77_cur."!mark_push"($I105, rx77_pos, $I10)
+  rxquantf104_done:
+  # rx charclass nl
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 4096, rx77_tgt, $I10
+    unless $I11, rx77_fail
+    substr $S10, rx77_tgt, $I10, 2
+    iseq $I11, $S10, "\r\n"
+    add rx77_pos, $I11
+    inc rx77_pos
+  # rx rxquantr106 ** 0..*
+    set_addr $I107, rxquantr106_done
+    rx77_cur."!mark_push"(0, rx77_pos, $I107)
+  rxquantr106_loop:
+  # rx enumcharlist negate=0 
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx77_fail
+    inc rx77_pos
+    (rx77_rep) = rx77_cur."!mark_commit"($I107)
+    rx77_cur."!mark_push"(rx77_rep, rx77_pos, $I107)
+    goto rxquantr106_loop
+  rxquantr106_done:
+  # rx literal  "=end"
+    add $I11, rx77_pos, 4
+    gt $I11, rx77_eos, rx77_fail
+    sub $I11, rx77_pos, rx77_off
+    substr $S10, rx77_tgt, $I11, 4
+    ne $S10, "=end", rx77_fail
+    add rx77_pos, 4
+  # rxanchor rwb
+    le rx77_pos, 0, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    if $I11, rx77_fail
+    dec $I10
+    is_cclass $I11, 8192, rx77_tgt, $I10
+    unless $I11, rx77_fail
+  # rx charclass_q N r 0..-1
+    sub $I10, rx77_pos, rx77_off
+    find_cclass $I11, 4096, rx77_tgt, $I10, rx77_eos
+    add rx77_pos, rx77_off, $I11
+    goto alt103_end
+  alt103_1:
+.annotate "line", 53
+  # rx subrule "panic" subtype=method negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."panic"("=begin without matching =end")
+    unless $P10, rx77_fail
+    rx77_pos = $P10."pos"()
+  alt103_end:
+.annotate "line", 49
+    goto alt83_end
+  alt83_3:
+.annotate "line", 57
+  # rx rxquantr108 ** 0..1
+    set_addr $I116, rxquantr108_done
+    rx77_cur."!mark_push"(0, rx77_pos, $I116)
+  rxquantr108_loop:
+.annotate "line", 56
+  # rx subrule "before" subtype=zerowidth negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    .const 'Sub' $P110 = "25_1258051419.23649" 
+    capture_lex $P110
+    $P10 = rx77_cur."before"($P110)
+    unless $P10, rx77_fail
+.annotate "line", 57
+  # rx subrule "panic" subtype=method negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."panic"("Obsolete pod format, please use =begin/=end instead")
+    unless $P10, rx77_fail
+    rx77_pos = $P10."pos"()
+    (rx77_rep) = rx77_cur."!mark_commit"($I116)
+  rxquantr108_done:
+  alt117_0:
+.annotate "line", 58
+    set_addr $I10, alt117_1
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+  # rx subrule "alpha" subtype=capture negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."alpha"()
+    unless $P10, rx77_fail
+    rx77_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("alpha")
+    rx77_pos = $P10."pos"()
+    goto alt117_end
+  alt117_1:
+    set_addr $I10, alt117_2
+    rx77_cur."!mark_push"(0, rx77_pos, $I10)
+  # rx charclass s
+    ge rx77_pos, rx77_eos, rx77_fail
+    sub $I10, rx77_pos, rx77_off
+    is_cclass $I11, 32, rx77_tgt, $I10
+    unless $I11, rx77_fail
+    inc rx77_pos
+    goto alt117_end
+  alt117_2:
+  # rx subrule "panic" subtype=method negate=
+    rx77_cur."!cursor_pos"(rx77_pos)
+    $P10 = rx77_cur."panic"("Illegal pod directive")
+    unless $P10, rx77_fail
+    rx77_pos = $P10."pos"()
+  alt117_end:
+.annotate "line", 59
+  # rx charclass_q N r 0..-1
+    sub $I10, rx77_pos, rx77_off
+    find_cclass $I11, 4096, rx77_tgt, $I10, rx77_eos
+    add rx77_pos, rx77_off, $I11
+  alt83_end:
+.annotate "line", 39
+  # rx pass
+    rx77_cur."!cursor_pass"(rx77_pos, "pod_comment")
+    rx77_cur."!cursor_debug"("PASS  ", "pod_comment", " at pos=", rx77_pos)
+    .return (rx77_cur)
+  rx77_fail:
+.annotate "line", 4
+    (rx77_rep, rx77_pos, $I10, $P10) = rx77_cur."!mark_fail"(0)
+    lt rx77_pos, -1, rx77_done
+    eq rx77_pos, -1, rx77_fail
+    jump $I10
+  rx77_done:
+    rx77_cur."!cursor_fail"()
+    rx77_cur."!cursor_debug"("FAIL  ", "pod_comment")
+    .return (rx77_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__pod_comment"  :subid("24_1258051419.23649") :method
+.annotate "line", 4
+    new $P79, "ResizablePMCArray"
+    push $P79, ""
+    .return ($P79)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "_block109"  :anon :subid("25_1258051419.23649") :method :outer("23_1258051419.23649")
+.annotate "line", 56
+    .local string rx111_tgt
+    .local int rx111_pos
+    .local int rx111_off
+    .local int rx111_eos
+    .local int rx111_rep
+    .local pmc rx111_cur
+    (rx111_cur, rx111_pos, rx111_tgt, $I10) = self."!cursor_start"()
+    rx111_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx111_cur
+    .local pmc match
+    .lex "$/", match
+    length rx111_eos, rx111_tgt
+    set rx111_off, 0
+    lt $I10, 2, rx111_start
+    sub rx111_off, $I10, 1
+    substr rx111_tgt, rx111_tgt, rx111_off
+  rx111_start:
+    ge rx111_pos, 0, rxscan112_done
+  rxscan112_loop:
+    ($P10) = rx111_cur."from"()
+    inc $P10
+    set rx111_pos, $P10
+    ge rx111_pos, rx111_eos, rxscan112_done
+    set_addr $I10, rxscan112_loop
+    rx111_cur."!mark_push"(0, rx111_pos, $I10)
+  rxscan112_done:
+  # rx rxquantf113 ** 0..*
+    set_addr $I10, rxquantf113_loop
+    rx111_cur."!mark_push"(0, rx111_pos, $I10)
+    goto rxquantf113_done
+  rxquantf113_loop:
+  # rx charclass .
+    ge rx111_pos, rx111_eos, rx111_fail
+    inc rx111_pos
+    set_addr $I10, rxquantf113_loop
+    rx111_cur."!mark_push"($I114, rx111_pos, $I10)
+  rxquantf113_done:
+  # rxanchor bol
+    eq rx111_pos, 0, rxanchor115_done
+    ge rx111_pos, rx111_eos, rx111_fail
+    sub $I10, rx111_pos, rx111_off
+    dec $I10
+    is_cclass $I11, 4096, rx111_tgt, $I10
+    unless $I11, rx111_fail
+  rxanchor115_done:
+  # rx literal  "=cut"
+    add $I11, rx111_pos, 4
+    gt $I11, rx111_eos, rx111_fail
+    sub $I11, rx111_pos, rx111_off
+    substr $S10, rx111_tgt, $I11, 4
+    ne $S10, "=cut", rx111_fail
+    add rx111_pos, 4
+  # rxanchor rwb
+    le rx111_pos, 0, rx111_fail
+    sub $I10, rx111_pos, rx111_off
+    is_cclass $I11, 8192, rx111_tgt, $I10
+    if $I11, rx111_fail
+    dec $I10
+    is_cclass $I11, 8192, rx111_tgt, $I10
+    unless $I11, rx111_fail
+  # rx pass
+    rx111_cur."!cursor_pass"(rx111_pos, "")
+    rx111_cur."!cursor_debug"("PASS  ", "", " at pos=", rx111_pos)
+    .return (rx111_cur)
+  rx111_fail:
+    (rx111_rep, rx111_pos, $I10, $P10) = rx111_cur."!mark_fail"(0)
+    lt rx111_pos, -1, rx111_done
+    eq rx111_pos, -1, rx111_fail
+    jump $I10
+  rx111_done:
+    rx111_cur."!cursor_fail"()
+    rx111_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx111_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "comp_unit"  :subid("26_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx119_tgt
+    .local int rx119_pos
+    .local int rx119_off
+    .local int rx119_eos
+    .local int rx119_rep
+    .local pmc rx119_cur
+    (rx119_cur, rx119_pos, rx119_tgt, $I10) = self."!cursor_start"()
+    rx119_cur."!cursor_debug"("START ", "comp_unit")
+    .lex unicode:"$\x{a2}", rx119_cur
+    .local pmc match
+    .lex "$/", match
+    length rx119_eos, rx119_tgt
+    set rx119_off, 0
+    lt $I10, 2, rx119_start
+    sub rx119_off, $I10, 1
+    substr rx119_tgt, rx119_tgt, rx119_off
+  rx119_start:
+.annotate "line", 67
+  # rx subrule "newpad" subtype=method negate=
+    rx119_cur."!cursor_pos"(rx119_pos)
+    $P10 = rx119_cur."newpad"()
+    unless $P10, rx119_fail
+    rx119_pos = $P10."pos"()
+.annotate "line", 68
+  # rx subrule "statementlist" subtype=capture negate=
+    rx119_cur."!cursor_pos"(rx119_pos)
+    $P10 = rx119_cur."statementlist"()
+    unless $P10, rx119_fail
+    rx119_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statementlist")
+    rx119_pos = $P10."pos"()
+  alt123_0:
+.annotate "line", 69
+    set_addr $I10, alt123_1
+    rx119_cur."!mark_push"(0, rx119_pos, $I10)
+  # rxanchor eos
+    ne rx119_pos, rx119_eos, rx119_fail
+    goto alt123_end
+  alt123_1:
+  # rx subrule "panic" subtype=method negate=
+    rx119_cur."!cursor_pos"(rx119_pos)
+    $P10 = rx119_cur."panic"("Confused")
+    unless $P10, rx119_fail
+    rx119_pos = $P10."pos"()
+  alt123_end:
+.annotate "line", 66
+  # rx pass
+    rx119_cur."!cursor_pass"(rx119_pos, "comp_unit")
+    rx119_cur."!cursor_debug"("PASS  ", "comp_unit", " at pos=", rx119_pos)
+    .return (rx119_cur)
+  rx119_fail:
+.annotate "line", 4
+    (rx119_rep, rx119_pos, $I10, $P10) = rx119_cur."!mark_fail"(0)
+    lt rx119_pos, -1, rx119_done
+    eq rx119_pos, -1, rx119_fail
+    jump $I10
+  rx119_done:
+    rx119_cur."!cursor_fail"()
+    rx119_cur."!cursor_debug"("FAIL  ", "comp_unit")
+    .return (rx119_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__comp_unit"  :subid("27_1258051419.23649") :method
+.annotate "line", 4
+    $P121 = self."!PREFIX__!subrule"("newpad", "")
+    new $P122, "ResizablePMCArray"
+    push $P122, $P121
+    .return ($P122)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statementlist"  :subid("28_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx125_tgt
+    .local int rx125_pos
+    .local int rx125_off
+    .local int rx125_eos
+    .local int rx125_rep
+    .local pmc rx125_cur
+    (rx125_cur, rx125_pos, rx125_tgt, $I10) = self."!cursor_start"()
+    rx125_cur."!cursor_debug"("START ", "statementlist")
+    rx125_cur."!cursor_caparray"("statement")
+    .lex unicode:"$\x{a2}", rx125_cur
+    .local pmc match
+    .lex "$/", match
+    length rx125_eos, rx125_tgt
+    set rx125_off, 0
+    lt $I10, 2, rx125_start
+    sub rx125_off, $I10, 1
+    substr rx125_tgt, rx125_tgt, rx125_off
+  rx125_start:
+  alt128_0:
+.annotate "line", 72
+    set_addr $I10, alt128_1
+    rx125_cur."!mark_push"(0, rx125_pos, $I10)
+.annotate "line", 73
+  # rx subrule "ws" subtype=method negate=
+    rx125_cur."!cursor_pos"(rx125_pos)
+    $P10 = rx125_cur."ws"()
+    unless $P10, rx125_fail
+    rx125_pos = $P10."pos"()
+  # rxanchor eos
+    ne rx125_pos, rx125_eos, rx125_fail
+  # rx subrule "ws" subtype=method negate=
+    rx125_cur."!cursor_pos"(rx125_pos)
+    $P10 = rx125_cur."ws"()
+    unless $P10, rx125_fail
+    rx125_pos = $P10."pos"()
+    goto alt128_end
+  alt128_1:
+.annotate "line", 74
+  # rx subrule "ws" subtype=method negate=
+    rx125_cur."!cursor_pos"(rx125_pos)
+    $P10 = rx125_cur."ws"()
+    unless $P10, rx125_fail
+    rx125_pos = $P10."pos"()
+  # rx rxquantr132 ** 0..*
+    set_addr $I134, rxquantr132_done
+    rx125_cur."!mark_push"(0, rx125_pos, $I134)
+  rxquantr132_loop:
+  # rx subrule "statement" subtype=capture negate=
+    rx125_cur."!cursor_pos"(rx125_pos)
+    $P10 = rx125_cur."statement"()
+    unless $P10, rx125_fail
+    rx125_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement")
+    rx125_pos = $P10."pos"()
+  # rx subrule "eat_terminator" subtype=method negate=
+    rx125_cur."!cursor_pos"(rx125_pos)
+    $P10 = rx125_cur."eat_terminator"()
+    unless $P10, rx125_fail
+    rx125_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx125_cur."!cursor_pos"(rx125_pos)
+    $P10 = rx125_cur."ws"()
+    unless $P10, rx125_fail
+    rx125_pos = $P10."pos"()
+    (rx125_rep) = rx125_cur."!mark_commit"($I134)
+    rx125_cur."!mark_push"(rx125_rep, rx125_pos, $I134)
+    goto rxquantr132_loop
+  rxquantr132_done:
+  # rx subrule "ws" subtype=method negate=
+    rx125_cur."!cursor_pos"(rx125_pos)
+    $P10 = rx125_cur."ws"()
+    unless $P10, rx125_fail
+    rx125_pos = $P10."pos"()
+  alt128_end:
+.annotate "line", 72
+  # rx pass
+    rx125_cur."!cursor_pass"(rx125_pos, "statementlist")
+    rx125_cur."!cursor_debug"("PASS  ", "statementlist", " at pos=", rx125_pos)
+    .return (rx125_cur)
+  rx125_fail:
+.annotate "line", 4
+    (rx125_rep, rx125_pos, $I10, $P10) = rx125_cur."!mark_fail"(0)
+    lt rx125_pos, -1, rx125_done
+    eq rx125_pos, -1, rx125_fail
+    jump $I10
+  rx125_done:
+    rx125_cur."!cursor_fail"()
+    rx125_cur."!cursor_debug"("FAIL  ", "statementlist")
+    .return (rx125_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statementlist"  :subid("29_1258051419.23649") :method
+.annotate "line", 4
+    new $P127, "ResizablePMCArray"
+    push $P127, ""
+    push $P127, ""
+    .return ($P127)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement"  :subid("30_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .const 'Sub' $P141 = "32_1258051419.23649" 
+    capture_lex $P141
+    .local string rx137_tgt
+    .local int rx137_pos
+    .local int rx137_off
+    .local int rx137_eos
+    .local int rx137_rep
+    .local pmc rx137_cur
+    (rx137_cur, rx137_pos, rx137_tgt, $I10) = self."!cursor_start"()
+    rx137_cur."!cursor_debug"("START ", "statement")
+    .lex unicode:"$\x{a2}", rx137_cur
+    .local pmc match
+    .lex "$/", match
+    length rx137_eos, rx137_tgt
+    set rx137_off, 0
+    lt $I10, 2, rx137_start
+    sub rx137_off, $I10, 1
+    substr rx137_tgt, rx137_tgt, rx137_off
+  rx137_start:
+.annotate "line", 78
+  # rx subrule "before" subtype=zerowidth negate=1
+    rx137_cur."!cursor_pos"(rx137_pos)
+    .const 'Sub' $P141 = "32_1258051419.23649" 
+    capture_lex $P141
+    $P10 = rx137_cur."before"($P141)
+    if $P10, rx137_fail
+  alt145_0:
+.annotate "line", 79
+    set_addr $I10, alt145_1
+    rx137_cur."!mark_push"(0, rx137_pos, $I10)
+.annotate "line", 80
+  # rx subrule "statement_control" subtype=capture negate=
+    rx137_cur."!cursor_pos"(rx137_pos)
+    $P10 = rx137_cur."statement_control"()
+    unless $P10, rx137_fail
+    rx137_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement_control")
+    rx137_pos = $P10."pos"()
+    goto alt145_end
+  alt145_1:
+.annotate "line", 81
+  # rx subrule "EXPR" subtype=capture negate=
+    rx137_cur."!cursor_pos"(rx137_pos)
+    $P10 = rx137_cur."EXPR"()
+    unless $P10, rx137_fail
+    rx137_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx137_pos = $P10."pos"()
+  alt145_end:
+.annotate "line", 77
+  # rx pass
+    rx137_cur."!cursor_pass"(rx137_pos, "statement")
+    rx137_cur."!cursor_debug"("PASS  ", "statement", " at pos=", rx137_pos)
+    .return (rx137_cur)
+  rx137_fail:
+.annotate "line", 4
+    (rx137_rep, rx137_pos, $I10, $P10) = rx137_cur."!mark_fail"(0)
+    lt rx137_pos, -1, rx137_done
+    eq rx137_pos, -1, rx137_fail
+    jump $I10
+  rx137_done:
+    rx137_cur."!cursor_fail"()
+    rx137_cur."!cursor_debug"("FAIL  ", "statement")
+    .return (rx137_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement"  :subid("31_1258051419.23649") :method
+.annotate "line", 4
+    new $P139, "ResizablePMCArray"
+    push $P139, ""
+    .return ($P139)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "_block140"  :anon :subid("32_1258051419.23649") :method :outer("30_1258051419.23649")
+.annotate "line", 78
+    .local string rx142_tgt
+    .local int rx142_pos
+    .local int rx142_off
+    .local int rx142_eos
+    .local int rx142_rep
+    .local pmc rx142_cur
+    (rx142_cur, rx142_pos, rx142_tgt, $I10) = self."!cursor_start"()
+    rx142_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx142_cur
+    .local pmc match
+    .lex "$/", match
+    length rx142_eos, rx142_tgt
+    set rx142_off, 0
+    lt $I10, 2, rx142_start
+    sub rx142_off, $I10, 1
+    substr rx142_tgt, rx142_tgt, rx142_off
+  rx142_start:
+    ge rx142_pos, 0, rxscan143_done
+  rxscan143_loop:
+    ($P10) = rx142_cur."from"()
+    inc $P10
+    set rx142_pos, $P10
+    ge rx142_pos, rx142_eos, rxscan143_done
+    set_addr $I10, rxscan143_loop
+    rx142_cur."!mark_push"(0, rx142_pos, $I10)
+  rxscan143_done:
+  alt144_0:
+    set_addr $I10, alt144_1
+    rx142_cur."!mark_push"(0, rx142_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx142_pos, rx142_eos, rx142_fail
+    sub $I10, rx142_pos, rx142_off
+    substr $S10, rx142_tgt, $I10, 1
+    index $I11, "])}", $S10
+    lt $I11, 0, rx142_fail
+    inc rx142_pos
+    goto alt144_end
+  alt144_1:
+  # rxanchor eos
+    ne rx142_pos, rx142_eos, rx142_fail
+  alt144_end:
+  # rx pass
+    rx142_cur."!cursor_pass"(rx142_pos, "")
+    rx142_cur."!cursor_debug"("PASS  ", "", " at pos=", rx142_pos)
+    .return (rx142_cur)
+  rx142_fail:
+    (rx142_rep, rx142_pos, $I10, $P10) = rx142_cur."!mark_fail"(0)
+    lt rx142_pos, -1, rx142_done
+    eq rx142_pos, -1, rx142_fail
+    jump $I10
+  rx142_done:
+    rx142_cur."!cursor_fail"()
+    rx142_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx142_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "eat_terminator"  :subid("33_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx147_tgt
+    .local int rx147_pos
+    .local int rx147_off
+    .local int rx147_eos
+    .local int rx147_rep
+    .local pmc rx147_cur
+    (rx147_cur, rx147_pos, rx147_tgt, $I10) = self."!cursor_start"()
+    rx147_cur."!cursor_debug"("START ", "eat_terminator")
+    .lex unicode:"$\x{a2}", rx147_cur
+    .local pmc match
+    .lex "$/", match
+    length rx147_eos, rx147_tgt
+    set rx147_off, 0
+    lt $I10, 2, rx147_start
+    sub rx147_off, $I10, 1
+    substr rx147_tgt, rx147_tgt, rx147_off
+  rx147_start:
+  alt150_0:
+.annotate "line", 85
+    set_addr $I10, alt150_1
+    rx147_cur."!mark_push"(0, rx147_pos, $I10)
+.annotate "line", 86
+  # rx literal  ";"
+    add $I11, rx147_pos, 1
+    gt $I11, rx147_eos, rx147_fail
+    sub $I11, rx147_pos, rx147_off
+    substr $S10, rx147_tgt, $I11, 1
+    ne $S10, ";", rx147_fail
+    add rx147_pos, 1
+    goto alt150_end
+  alt150_1:
+    set_addr $I10, alt150_2
+    rx147_cur."!mark_push"(0, rx147_pos, $I10)
+.annotate "line", 87
+  # rx subrule "MARKED" subtype=zerowidth negate=
+    rx147_cur."!cursor_pos"(rx147_pos)
+    $P10 = rx147_cur."MARKED"("endstmt")
+    unless $P10, rx147_fail
+    goto alt150_end
+  alt150_2:
+    set_addr $I10, alt150_3
+    rx147_cur."!mark_push"(0, rx147_pos, $I10)
+.annotate "line", 88
+  # rx subrule "terminator" subtype=zerowidth negate=
+    rx147_cur."!cursor_pos"(rx147_pos)
+    $P10 = rx147_cur."terminator"()
+    unless $P10, rx147_fail
+    goto alt150_end
+  alt150_3:
+.annotate "line", 89
+  # rxanchor eos
+    ne rx147_pos, rx147_eos, rx147_fail
+  alt150_end:
+.annotate "line", 85
+  # rx pass
+    rx147_cur."!cursor_pass"(rx147_pos, "eat_terminator")
+    rx147_cur."!cursor_debug"("PASS  ", "eat_terminator", " at pos=", rx147_pos)
+    .return (rx147_cur)
+  rx147_fail:
+.annotate "line", 4
+    (rx147_rep, rx147_pos, $I10, $P10) = rx147_cur."!mark_fail"(0)
+    lt rx147_pos, -1, rx147_done
+    eq rx147_pos, -1, rx147_fail
+    jump $I10
+  rx147_done:
+    rx147_cur."!cursor_fail"()
+    rx147_cur."!cursor_debug"("FAIL  ", "eat_terminator")
+    .return (rx147_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__eat_terminator"  :subid("34_1258051419.23649") :method
+.annotate "line", 4
+    new $P149, "ResizablePMCArray"
+    push $P149, ""
+    push $P149, ""
+    push $P149, ""
+    push $P149, ";"
+    .return ($P149)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "xblock"  :subid("35_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx152_tgt
+    .local int rx152_pos
+    .local int rx152_off
+    .local int rx152_eos
+    .local int rx152_rep
+    .local pmc rx152_cur
+    (rx152_cur, rx152_pos, rx152_tgt, $I10) = self."!cursor_start"()
+    rx152_cur."!cursor_debug"("START ", "xblock")
+    .lex unicode:"$\x{a2}", rx152_cur
+    .local pmc match
+    .lex "$/", match
+    length rx152_eos, rx152_tgt
+    set rx152_off, 0
+    lt $I10, 2, rx152_start
+    sub rx152_off, $I10, 1
+    substr rx152_tgt, rx152_tgt, rx152_off
+  rx152_start:
+.annotate "line", 93
+  # rx subrule "EXPR" subtype=capture negate=
+    rx152_cur."!cursor_pos"(rx152_pos)
+    $P10 = rx152_cur."EXPR"()
+    unless $P10, rx152_fail
+    rx152_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx152_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx152_cur."!cursor_pos"(rx152_pos)
+    $P10 = rx152_cur."ws"()
+    unless $P10, rx152_fail
+    rx152_pos = $P10."pos"()
+  # rx subrule "pblock" subtype=capture negate=
+    rx152_cur."!cursor_pos"(rx152_pos)
+    $P10 = rx152_cur."pblock"()
+    unless $P10, rx152_fail
+    rx152_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("pblock")
+    rx152_pos = $P10."pos"()
+.annotate "line", 92
+  # rx pass
+    rx152_cur."!cursor_pass"(rx152_pos, "xblock")
+    rx152_cur."!cursor_debug"("PASS  ", "xblock", " at pos=", rx152_pos)
+    .return (rx152_cur)
+  rx152_fail:
+.annotate "line", 4
+    (rx152_rep, rx152_pos, $I10, $P10) = rx152_cur."!mark_fail"(0)
+    lt rx152_pos, -1, rx152_done
+    eq rx152_pos, -1, rx152_fail
+    jump $I10
+  rx152_done:
+    rx152_cur."!cursor_fail"()
+    rx152_cur."!cursor_debug"("FAIL  ", "xblock")
+    .return (rx152_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__xblock"  :subid("36_1258051419.23649") :method
+.annotate "line", 4
+    $P154 = self."!PREFIX__!subrule"("EXPR", "")
+    new $P155, "ResizablePMCArray"
+    push $P155, $P154
+    .return ($P155)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "pblock"  :subid("37_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx157_tgt
+    .local int rx157_pos
+    .local int rx157_off
+    .local int rx157_eos
+    .local int rx157_rep
+    .local pmc rx157_cur
+    (rx157_cur, rx157_pos, rx157_tgt, $I10) = self."!cursor_start"()
+    rx157_cur."!cursor_debug"("START ", "pblock")
+    .lex unicode:"$\x{a2}", rx157_cur
+    .local pmc match
+    .lex "$/", match
+    length rx157_eos, rx157_tgt
+    set rx157_off, 0
+    lt $I10, 2, rx157_start
+    sub rx157_off, $I10, 1
+    substr rx157_tgt, rx157_tgt, rx157_off
+  rx157_start:
+  alt162_0:
+.annotate "line", 96
+    set_addr $I10, alt162_1
+    rx157_cur."!mark_push"(0, rx157_pos, $I10)
+.annotate "line", 97
+  # rx subrule "lambda" subtype=method negate=
+    rx157_cur."!cursor_pos"(rx157_pos)
+    $P10 = rx157_cur."lambda"()
+    unless $P10, rx157_fail
+    rx157_pos = $P10."pos"()
+.annotate "line", 98
+  # rx subrule "newpad" subtype=method negate=
+    rx157_cur."!cursor_pos"(rx157_pos)
+    $P10 = rx157_cur."newpad"()
+    unless $P10, rx157_fail
+    rx157_pos = $P10."pos"()
+.annotate "line", 99
+  # rx subrule "signature" subtype=capture negate=
+    rx157_cur."!cursor_pos"(rx157_pos)
+    $P10 = rx157_cur."signature"()
+    unless $P10, rx157_fail
+    rx157_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("signature")
+    rx157_pos = $P10."pos"()
+.annotate "line", 100
+  # rx subrule "blockoid" subtype=capture negate=
+    rx157_cur."!cursor_pos"(rx157_pos)
+    $P10 = rx157_cur."blockoid"()
+    unless $P10, rx157_fail
+    rx157_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("blockoid")
+    rx157_pos = $P10."pos"()
+.annotate "line", 97
+    goto alt162_end
+  alt162_1:
+    set_addr $I10, alt162_2
+    rx157_cur."!mark_push"(0, rx157_pos, $I10)
+.annotate "line", 101
+  # rx enumcharlist negate=0 zerowidth
+    ge rx157_pos, rx157_eos, rx157_fail
+    sub $I10, rx157_pos, rx157_off
+    substr $S10, rx157_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx157_fail
+.annotate "line", 102
+  # rx subrule "newpad" subtype=method negate=
+    rx157_cur."!cursor_pos"(rx157_pos)
+    $P10 = rx157_cur."newpad"()
+    unless $P10, rx157_fail
+    rx157_pos = $P10."pos"()
+.annotate "line", 103
+  # rx subrule "blockoid" subtype=capture negate=
+    rx157_cur."!cursor_pos"(rx157_pos)
+    $P10 = rx157_cur."blockoid"()
+    unless $P10, rx157_fail
+    rx157_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("blockoid")
+    rx157_pos = $P10."pos"()
+.annotate "line", 101
+    goto alt162_end
+  alt162_2:
+.annotate "line", 104
+  # rx subrule "panic" subtype=method negate=
+    rx157_cur."!cursor_pos"(rx157_pos)
+    $P10 = rx157_cur."panic"("Missing block")
+    unless $P10, rx157_fail
+    rx157_pos = $P10."pos"()
+  alt162_end:
+.annotate "line", 96
+  # rx pass
+    rx157_cur."!cursor_pass"(rx157_pos, "pblock")
+    rx157_cur."!cursor_debug"("PASS  ", "pblock", " at pos=", rx157_pos)
+    .return (rx157_cur)
+  rx157_fail:
+.annotate "line", 4
+    (rx157_rep, rx157_pos, $I10, $P10) = rx157_cur."!mark_fail"(0)
+    lt rx157_pos, -1, rx157_done
+    eq rx157_pos, -1, rx157_fail
+    jump $I10
+  rx157_done:
+    rx157_cur."!cursor_fail"()
+    rx157_cur."!cursor_debug"("FAIL  ", "pblock")
+    .return (rx157_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__pblock"  :subid("38_1258051419.23649") :method
+.annotate "line", 4
+    $P159 = self."!PREFIX__!subrule"("panic", "")
+    $P160 = self."!PREFIX__!subrule"("lambda", "")
+    new $P161, "ResizablePMCArray"
+    push $P161, $P159
+    push $P161, "{"
+    push $P161, $P160
+    .return ($P161)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "lambda"  :subid("39_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx164_tgt
+    .local int rx164_pos
+    .local int rx164_off
+    .local int rx164_eos
+    .local int rx164_rep
+    .local pmc rx164_cur
+    (rx164_cur, rx164_pos, rx164_tgt, $I10) = self."!cursor_start"()
+    rx164_cur."!cursor_debug"("START ", "lambda")
+    .lex unicode:"$\x{a2}", rx164_cur
+    .local pmc match
+    .lex "$/", match
+    length rx164_eos, rx164_tgt
+    set rx164_off, 0
+    lt $I10, 2, rx164_start
+    sub rx164_off, $I10, 1
+    substr rx164_tgt, rx164_tgt, rx164_off
+  rx164_start:
+  alt167_0:
+.annotate "line", 107
+    set_addr $I10, alt167_1
+    rx164_cur."!mark_push"(0, rx164_pos, $I10)
+  # rx literal  "->"
+    add $I11, rx164_pos, 2
+    gt $I11, rx164_eos, rx164_fail
+    sub $I11, rx164_pos, rx164_off
+    substr $S10, rx164_tgt, $I11, 2
+    ne $S10, "->", rx164_fail
+    add rx164_pos, 2
+    goto alt167_end
+  alt167_1:
+  # rx literal  "<->"
+    add $I11, rx164_pos, 3
+    gt $I11, rx164_eos, rx164_fail
+    sub $I11, rx164_pos, rx164_off
+    substr $S10, rx164_tgt, $I11, 3
+    ne $S10, "<->", rx164_fail
+    add rx164_pos, 3
+  alt167_end:
+  # rx pass
+    rx164_cur."!cursor_pass"(rx164_pos, "lambda")
+    rx164_cur."!cursor_debug"("PASS  ", "lambda", " at pos=", rx164_pos)
+    .return (rx164_cur)
+  rx164_fail:
+.annotate "line", 4
+    (rx164_rep, rx164_pos, $I10, $P10) = rx164_cur."!mark_fail"(0)
+    lt rx164_pos, -1, rx164_done
+    eq rx164_pos, -1, rx164_fail
+    jump $I10
+  rx164_done:
+    rx164_cur."!cursor_fail"()
+    rx164_cur."!cursor_debug"("FAIL  ", "lambda")
+    .return (rx164_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__lambda"  :subid("40_1258051419.23649") :method
+.annotate "line", 4
+    new $P166, "ResizablePMCArray"
+    push $P166, "<->"
+    push $P166, "->"
+    .return ($P166)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "block"  :subid("41_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx169_tgt
+    .local int rx169_pos
+    .local int rx169_off
+    .local int rx169_eos
+    .local int rx169_rep
+    .local pmc rx169_cur
+    (rx169_cur, rx169_pos, rx169_tgt, $I10) = self."!cursor_start"()
+    rx169_cur."!cursor_debug"("START ", "block")
+    .lex unicode:"$\x{a2}", rx169_cur
+    .local pmc match
+    .lex "$/", match
+    length rx169_eos, rx169_tgt
+    set rx169_off, 0
+    lt $I10, 2, rx169_start
+    sub rx169_off, $I10, 1
+    substr rx169_tgt, rx169_tgt, rx169_off
+  rx169_start:
+  alt173_0:
+.annotate "line", 110
+    set_addr $I10, alt173_1
+    rx169_cur."!mark_push"(0, rx169_pos, $I10)
+  # rx enumcharlist negate=0 zerowidth
+    ge rx169_pos, rx169_eos, rx169_fail
+    sub $I10, rx169_pos, rx169_off
+    substr $S10, rx169_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx169_fail
+    goto alt173_end
+  alt173_1:
+  # rx subrule "panic" subtype=method negate=
+    rx169_cur."!cursor_pos"(rx169_pos)
+    $P10 = rx169_cur."panic"("Missing block")
+    unless $P10, rx169_fail
+    rx169_pos = $P10."pos"()
+  alt173_end:
+.annotate "line", 111
+  # rx subrule "newpad" subtype=method negate=
+    rx169_cur."!cursor_pos"(rx169_pos)
+    $P10 = rx169_cur."newpad"()
+    unless $P10, rx169_fail
+    rx169_pos = $P10."pos"()
+.annotate "line", 112
+  # rx subrule "blockoid" subtype=capture negate=
+    rx169_cur."!cursor_pos"(rx169_pos)
+    $P10 = rx169_cur."blockoid"()
+    unless $P10, rx169_fail
+    rx169_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("blockoid")
+    rx169_pos = $P10."pos"()
+.annotate "line", 109
+  # rx pass
+    rx169_cur."!cursor_pass"(rx169_pos, "block")
+    rx169_cur."!cursor_debug"("PASS  ", "block", " at pos=", rx169_pos)
+    .return (rx169_cur)
+  rx169_fail:
+.annotate "line", 4
+    (rx169_rep, rx169_pos, $I10, $P10) = rx169_cur."!mark_fail"(0)
+    lt rx169_pos, -1, rx169_done
+    eq rx169_pos, -1, rx169_fail
+    jump $I10
+  rx169_done:
+    rx169_cur."!cursor_fail"()
+    rx169_cur."!cursor_debug"("FAIL  ", "block")
+    .return (rx169_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__block"  :subid("42_1258051419.23649") :method
+.annotate "line", 4
+    $P171 = self."!PREFIX__!subrule"("panic", "")
+    new $P172, "ResizablePMCArray"
+    push $P172, $P171
+    push $P172, "{"
+    .return ($P172)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "blockoid"  :subid("43_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx175_tgt
+    .local int rx175_pos
+    .local int rx175_off
+    .local int rx175_eos
+    .local int rx175_rep
+    .local pmc rx175_cur
+    (rx175_cur, rx175_pos, rx175_tgt, $I10) = self."!cursor_start"()
+    rx175_cur."!cursor_debug"("START ", "blockoid")
+    .lex unicode:"$\x{a2}", rx175_cur
+    .local pmc match
+    .lex "$/", match
+    length rx175_eos, rx175_tgt
+    set rx175_off, 0
+    lt $I10, 2, rx175_start
+    sub rx175_off, $I10, 1
+    substr rx175_tgt, rx175_tgt, rx175_off
+  rx175_start:
+.annotate "line", 116
+  # rx subrule "finishpad" subtype=method negate=
+    rx175_cur."!cursor_pos"(rx175_pos)
+    $P10 = rx175_cur."finishpad"()
+    unless $P10, rx175_fail
+    rx175_pos = $P10."pos"()
+.annotate "line", 117
+  # rx literal  "{"
+    add $I11, rx175_pos, 1
+    gt $I11, rx175_eos, rx175_fail
+    sub $I11, rx175_pos, rx175_off
+    substr $S10, rx175_tgt, $I11, 1
+    ne $S10, "{", rx175_fail
+    add rx175_pos, 1
+  # rx subrule "statementlist" subtype=capture negate=
+    rx175_cur."!cursor_pos"(rx175_pos)
+    $P10 = rx175_cur."statementlist"()
+    unless $P10, rx175_fail
+    rx175_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statementlist")
+    rx175_pos = $P10."pos"()
+  alt179_0:
+    set_addr $I10, alt179_1
+    rx175_cur."!mark_push"(0, rx175_pos, $I10)
+  # rx literal  "}"
+    add $I11, rx175_pos, 1
+    gt $I11, rx175_eos, rx175_fail
+    sub $I11, rx175_pos, rx175_off
+    substr $S10, rx175_tgt, $I11, 1
+    ne $S10, "}", rx175_fail
+    add rx175_pos, 1
+    goto alt179_end
+  alt179_1:
+  # rx subrule "FAILGOAL" subtype=method negate=
+    rx175_cur."!cursor_pos"(rx175_pos)
+    $P10 = rx175_cur."FAILGOAL"("'}'")
+    unless $P10, rx175_fail
+    rx175_pos = $P10."pos"()
+  alt179_end:
+.annotate "line", 118
+  # rx subrule "ENDSTMT" subtype=zerowidth negate=
+    rx175_cur."!cursor_pos"(rx175_pos)
+    $P10 = rx175_cur."ENDSTMT"()
+    unless $P10, rx175_fail
+.annotate "line", 115
+  # rx pass
+    rx175_cur."!cursor_pass"(rx175_pos, "blockoid")
+    rx175_cur."!cursor_debug"("PASS  ", "blockoid", " at pos=", rx175_pos)
+    .return (rx175_cur)
+  rx175_fail:
+.annotate "line", 4
+    (rx175_rep, rx175_pos, $I10, $P10) = rx175_cur."!mark_fail"(0)
+    lt rx175_pos, -1, rx175_done
+    eq rx175_pos, -1, rx175_fail
+    jump $I10
+  rx175_done:
+    rx175_cur."!cursor_fail"()
+    rx175_cur."!cursor_debug"("FAIL  ", "blockoid")
+    .return (rx175_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__blockoid"  :subid("44_1258051419.23649") :method
+.annotate "line", 4
+    $P177 = self."!PREFIX__!subrule"("finishpad", "")
+    new $P178, "ResizablePMCArray"
+    push $P178, $P177
+    .return ($P178)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "newpad"  :subid("45_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx182_tgt
+    .local int rx182_pos
+    .local int rx182_off
+    .local int rx182_eos
+    .local int rx182_rep
+    .local pmc rx182_cur
+    (rx182_cur, rx182_pos, rx182_tgt, $I10) = self."!cursor_start"()
+    rx182_cur."!cursor_debug"("START ", "newpad")
+    .lex unicode:"$\x{a2}", rx182_cur
+    .local pmc match
+    .lex "$/", match
+    length rx182_eos, rx182_tgt
+    set rx182_off, 0
+    lt $I10, 2, rx182_start
+    sub rx182_off, $I10, 1
+    substr rx182_tgt, rx182_tgt, rx182_off
+  rx182_start:
+.annotate "line", 121
+  # rx pass
+    rx182_cur."!cursor_pass"(rx182_pos, "newpad")
+    rx182_cur."!cursor_debug"("PASS  ", "newpad", " at pos=", rx182_pos)
+    .return (rx182_cur)
+  rx182_fail:
+.annotate "line", 4
+    (rx182_rep, rx182_pos, $I10, $P10) = rx182_cur."!mark_fail"(0)
+    lt rx182_pos, -1, rx182_done
+    eq rx182_pos, -1, rx182_fail
+    jump $I10
+  rx182_done:
+    rx182_cur."!cursor_fail"()
+    rx182_cur."!cursor_debug"("FAIL  ", "newpad")
+    .return (rx182_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__newpad"  :subid("46_1258051419.23649") :method
+.annotate "line", 4
+    new $P184, "ResizablePMCArray"
+    push $P184, ""
+    .return ($P184)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "finishpad"  :subid("47_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx186_tgt
+    .local int rx186_pos
+    .local int rx186_off
+    .local int rx186_eos
+    .local int rx186_rep
+    .local pmc rx186_cur
+    (rx186_cur, rx186_pos, rx186_tgt, $I10) = self."!cursor_start"()
+    rx186_cur."!cursor_debug"("START ", "finishpad")
+    .lex unicode:"$\x{a2}", rx186_cur
+    .local pmc match
+    .lex "$/", match
+    length rx186_eos, rx186_tgt
+    set rx186_off, 0
+    lt $I10, 2, rx186_start
+    sub rx186_off, $I10, 1
+    substr rx186_tgt, rx186_tgt, rx186_off
+  rx186_start:
+.annotate "line", 122
+  # rx pass
+    rx186_cur."!cursor_pass"(rx186_pos, "finishpad")
+    rx186_cur."!cursor_debug"("PASS  ", "finishpad", " at pos=", rx186_pos)
+    .return (rx186_cur)
+  rx186_fail:
+.annotate "line", 4
+    (rx186_rep, rx186_pos, $I10, $P10) = rx186_cur."!mark_fail"(0)
+    lt rx186_pos, -1, rx186_done
+    eq rx186_pos, -1, rx186_fail
+    jump $I10
+  rx186_done:
+    rx186_cur."!cursor_fail"()
+    rx186_cur."!cursor_debug"("FAIL  ", "finishpad")
+    .return (rx186_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__finishpad"  :subid("48_1258051419.23649") :method
+.annotate "line", 4
+    new $P188, "ResizablePMCArray"
+    push $P188, ""
+    .return ($P188)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "terminator"  :subid("49_1258051419.23649") :method
+.annotate "line", 124
+    $P190 = self."!protoregex"("terminator")
+    .return ($P190)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__terminator"  :subid("50_1258051419.23649") :method
+.annotate "line", 124
+    $P192 = self."!PREFIX__!protoregex"("terminator")
+    .return ($P192)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "terminator:sym<;>"  :subid("51_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx194_tgt
+    .local int rx194_pos
+    .local int rx194_off
+    .local int rx194_eos
+    .local int rx194_rep
+    .local pmc rx194_cur
+    (rx194_cur, rx194_pos, rx194_tgt, $I10) = self."!cursor_start"()
+    rx194_cur."!cursor_debug"("START ", "terminator:sym<;>")
+    .lex unicode:"$\x{a2}", rx194_cur
+    .local pmc match
+    .lex "$/", match
+    length rx194_eos, rx194_tgt
+    set rx194_off, 0
+    lt $I10, 2, rx194_start
+    sub rx194_off, $I10, 1
+    substr rx194_tgt, rx194_tgt, rx194_off
+  rx194_start:
+.annotate "line", 126
+  # rx enumcharlist negate=0 zerowidth
+    ge rx194_pos, rx194_eos, rx194_fail
+    sub $I10, rx194_pos, rx194_off
+    substr $S10, rx194_tgt, $I10, 1
+    index $I11, ";", $S10
+    lt $I11, 0, rx194_fail
+  # rx pass
+    rx194_cur."!cursor_pass"(rx194_pos, "terminator:sym<;>")
+    rx194_cur."!cursor_debug"("PASS  ", "terminator:sym<;>", " at pos=", rx194_pos)
+    .return (rx194_cur)
+  rx194_fail:
+.annotate "line", 4
+    (rx194_rep, rx194_pos, $I10, $P10) = rx194_cur."!mark_fail"(0)
+    lt rx194_pos, -1, rx194_done
+    eq rx194_pos, -1, rx194_fail
+    jump $I10
+  rx194_done:
+    rx194_cur."!cursor_fail"()
+    rx194_cur."!cursor_debug"("FAIL  ", "terminator:sym<;>")
+    .return (rx194_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__terminator:sym<;>"  :subid("52_1258051419.23649") :method
+.annotate "line", 4
+    new $P196, "ResizablePMCArray"
+    push $P196, ";"
+    .return ($P196)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "terminator:sym<}>"  :subid("53_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx198_tgt
+    .local int rx198_pos
+    .local int rx198_off
+    .local int rx198_eos
+    .local int rx198_rep
+    .local pmc rx198_cur
+    (rx198_cur, rx198_pos, rx198_tgt, $I10) = self."!cursor_start"()
+    rx198_cur."!cursor_debug"("START ", "terminator:sym<}>")
+    .lex unicode:"$\x{a2}", rx198_cur
+    .local pmc match
+    .lex "$/", match
+    length rx198_eos, rx198_tgt
+    set rx198_off, 0
+    lt $I10, 2, rx198_start
+    sub rx198_off, $I10, 1
+    substr rx198_tgt, rx198_tgt, rx198_off
+  rx198_start:
+.annotate "line", 127
+  # rx enumcharlist negate=0 zerowidth
+    ge rx198_pos, rx198_eos, rx198_fail
+    sub $I10, rx198_pos, rx198_off
+    substr $S10, rx198_tgt, $I10, 1
+    index $I11, "}", $S10
+    lt $I11, 0, rx198_fail
+  # rx pass
+    rx198_cur."!cursor_pass"(rx198_pos, "terminator:sym<}>")
+    rx198_cur."!cursor_debug"("PASS  ", "terminator:sym<}>", " at pos=", rx198_pos)
+    .return (rx198_cur)
+  rx198_fail:
+.annotate "line", 4
+    (rx198_rep, rx198_pos, $I10, $P10) = rx198_cur."!mark_fail"(0)
+    lt rx198_pos, -1, rx198_done
+    eq rx198_pos, -1, rx198_fail
+    jump $I10
+  rx198_done:
+    rx198_cur."!cursor_fail"()
+    rx198_cur."!cursor_debug"("FAIL  ", "terminator:sym<}>")
+    .return (rx198_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__terminator:sym<}>"  :subid("54_1258051419.23649") :method
+.annotate "line", 4
+    new $P200, "ResizablePMCArray"
+    push $P200, "}"
+    .return ($P200)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control"  :subid("55_1258051419.23649") :method
+.annotate "line", 131
+    $P202 = self."!protoregex"("statement_control")
+    .return ($P202)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control"  :subid("56_1258051419.23649") :method
+.annotate "line", 131
+    $P204 = self."!PREFIX__!protoregex"("statement_control")
+    .return ($P204)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control:sym<if>"  :subid("57_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx206_tgt
+    .local int rx206_pos
+    .local int rx206_off
+    .local int rx206_eos
+    .local int rx206_rep
+    .local pmc rx206_cur
+    (rx206_cur, rx206_pos, rx206_tgt, $I10) = self."!cursor_start"()
+    rx206_cur."!cursor_debug"("START ", "statement_control:sym<if>")
+    rx206_cur."!cursor_caparray"("else", "xblock")
+    .lex unicode:"$\x{a2}", rx206_cur
+    .local pmc match
+    .lex "$/", match
+    length rx206_eos, rx206_tgt
+    set rx206_off, 0
+    lt $I10, 2, rx206_start
+    sub rx206_off, $I10, 1
+    substr rx206_tgt, rx206_tgt, rx206_off
+  rx206_start:
+.annotate "line", 134
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_209_fail
+    rx206_cur."!mark_push"(0, rx206_pos, $I10)
+  # rx literal  "if"
+    add $I11, rx206_pos, 2
+    gt $I11, rx206_eos, rx206_fail
+    sub $I11, rx206_pos, rx206_off
+    substr $S10, rx206_tgt, $I11, 2
+    ne $S10, "if", rx206_fail
+    add rx206_pos, 2
+    set_addr $I10, rxcap_209_fail
+    ($I12, $I11) = rx206_cur."!mark_peek"($I10)
+    rx206_cur."!cursor_pos"($I11)
+    ($P10) = rx206_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx206_pos, "")
+    rx206_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_209_done
+  rxcap_209_fail:
+    goto rx206_fail
+  rxcap_209_done:
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+.annotate "line", 135
+  # rx subrule "xblock" subtype=capture negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."xblock"()
+    unless $P10, rx206_fail
+    rx206_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("xblock")
+    rx206_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+.annotate "line", 136
+  # rx rxquantr212 ** 0..*
+    set_addr $I216, rxquantr212_done
+    rx206_cur."!mark_push"(0, rx206_pos, $I216)
+  rxquantr212_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+  # rx literal  "elsif"
+    add $I11, rx206_pos, 5
+    gt $I11, rx206_eos, rx206_fail
+    sub $I11, rx206_pos, rx206_off
+    substr $S10, rx206_tgt, $I11, 5
+    ne $S10, "elsif", rx206_fail
+    add rx206_pos, 5
+  # rx charclass s
+    ge rx206_pos, rx206_eos, rx206_fail
+    sub $I10, rx206_pos, rx206_off
+    is_cclass $I11, 32, rx206_tgt, $I10
+    unless $I11, rx206_fail
+    inc rx206_pos
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+  # rx subrule "xblock" subtype=capture negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."xblock"()
+    unless $P10, rx206_fail
+    rx206_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("xblock")
+    rx206_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+    (rx206_rep) = rx206_cur."!mark_commit"($I216)
+    rx206_cur."!mark_push"(rx206_rep, rx206_pos, $I216)
+    goto rxquantr212_loop
+  rxquantr212_done:
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+.annotate "line", 137
+  # rx rxquantr218 ** 0..1
+    set_addr $I222, rxquantr218_done
+    rx206_cur."!mark_push"(0, rx206_pos, $I222)
+  rxquantr218_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+  # rx literal  "else"
+    add $I11, rx206_pos, 4
+    gt $I11, rx206_eos, rx206_fail
+    sub $I11, rx206_pos, rx206_off
+    substr $S10, rx206_tgt, $I11, 4
+    ne $S10, "else", rx206_fail
+    add rx206_pos, 4
+  # rx charclass s
+    ge rx206_pos, rx206_eos, rx206_fail
+    sub $I10, rx206_pos, rx206_off
+    is_cclass $I11, 32, rx206_tgt, $I10
+    unless $I11, rx206_fail
+    inc rx206_pos
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+  # rx subrule "pblock" subtype=capture negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."pblock"()
+    unless $P10, rx206_fail
+    rx206_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("else")
+    rx206_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+    (rx206_rep) = rx206_cur."!mark_commit"($I222)
+  rxquantr218_done:
+  # rx subrule "ws" subtype=method negate=
+    rx206_cur."!cursor_pos"(rx206_pos)
+    $P10 = rx206_cur."ws"()
+    unless $P10, rx206_fail
+    rx206_pos = $P10."pos"()
+.annotate "line", 133
+  # rx pass
+    rx206_cur."!cursor_pass"(rx206_pos, "statement_control:sym<if>")
+    rx206_cur."!cursor_debug"("PASS  ", "statement_control:sym<if>", " at pos=", rx206_pos)
+    .return (rx206_cur)
+  rx206_fail:
+.annotate "line", 4
+    (rx206_rep, rx206_pos, $I10, $P10) = rx206_cur."!mark_fail"(0)
+    lt rx206_pos, -1, rx206_done
+    eq rx206_pos, -1, rx206_fail
+    jump $I10
+  rx206_done:
+    rx206_cur."!cursor_fail"()
+    rx206_cur."!cursor_debug"("FAIL  ", "statement_control:sym<if>")
+    .return (rx206_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control:sym<if>"  :subid("58_1258051419.23649") :method
+.annotate "line", 4
+    new $P208, "ResizablePMCArray"
+    push $P208, "if"
+    .return ($P208)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control:sym<unless>"  :subid("59_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .const 'Sub' $P234 = "61_1258051419.23649" 
+    capture_lex $P234
+    .local string rx225_tgt
+    .local int rx225_pos
+    .local int rx225_off
+    .local int rx225_eos
+    .local int rx225_rep
+    .local pmc rx225_cur
+    (rx225_cur, rx225_pos, rx225_tgt, $I10) = self."!cursor_start"()
+    rx225_cur."!cursor_debug"("START ", "statement_control:sym<unless>")
+    .lex unicode:"$\x{a2}", rx225_cur
+    .local pmc match
+    .lex "$/", match
+    length rx225_eos, rx225_tgt
+    set rx225_off, 0
+    lt $I10, 2, rx225_start
+    sub rx225_off, $I10, 1
+    substr rx225_tgt, rx225_tgt, rx225_off
+  rx225_start:
+.annotate "line", 141
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_228_fail
+    rx225_cur."!mark_push"(0, rx225_pos, $I10)
+  # rx literal  "unless"
+    add $I11, rx225_pos, 6
+    gt $I11, rx225_eos, rx225_fail
+    sub $I11, rx225_pos, rx225_off
+    substr $S10, rx225_tgt, $I11, 6
+    ne $S10, "unless", rx225_fail
+    add rx225_pos, 6
+    set_addr $I10, rxcap_228_fail
+    ($I12, $I11) = rx225_cur."!mark_peek"($I10)
+    rx225_cur."!cursor_pos"($I11)
+    ($P10) = rx225_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx225_pos, "")
+    rx225_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_228_done
+  rxcap_228_fail:
+    goto rx225_fail
+  rxcap_228_done:
+  # rx subrule "ws" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."ws"()
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+.annotate "line", 142
+  # rx subrule "xblock" subtype=capture negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."xblock"()
+    unless $P10, rx225_fail
+    rx225_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("xblock")
+    rx225_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."ws"()
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+  alt231_0:
+.annotate "line", 143
+    set_addr $I10, alt231_1
+    rx225_cur."!mark_push"(0, rx225_pos, $I10)
+  # rx subrule "ws" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."ws"()
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+  # rx subrule "before" subtype=zerowidth negate=1
+    rx225_cur."!cursor_pos"(rx225_pos)
+    .const 'Sub' $P234 = "61_1258051419.23649" 
+    capture_lex $P234
+    $P10 = rx225_cur."before"($P234)
+    if $P10, rx225_fail
+  # rx subrule "ws" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."ws"()
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+    goto alt231_end
+  alt231_1:
+  # rx subrule "ws" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."ws"()
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+  # rx subrule "panic" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."panic"("unless does not take \"else\", please rewrite using \"if\"")
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."ws"()
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+  alt231_end:
+  # rx subrule "ws" subtype=method negate=
+    rx225_cur."!cursor_pos"(rx225_pos)
+    $P10 = rx225_cur."ws"()
+    unless $P10, rx225_fail
+    rx225_pos = $P10."pos"()
+.annotate "line", 140
+  # rx pass
+    rx225_cur."!cursor_pass"(rx225_pos, "statement_control:sym<unless>")
+    rx225_cur."!cursor_debug"("PASS  ", "statement_control:sym<unless>", " at pos=", rx225_pos)
+    .return (rx225_cur)
+  rx225_fail:
+.annotate "line", 4
+    (rx225_rep, rx225_pos, $I10, $P10) = rx225_cur."!mark_fail"(0)
+    lt rx225_pos, -1, rx225_done
+    eq rx225_pos, -1, rx225_fail
+    jump $I10
+  rx225_done:
+    rx225_cur."!cursor_fail"()
+    rx225_cur."!cursor_debug"("FAIL  ", "statement_control:sym<unless>")
+    .return (rx225_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("60_1258051419.23649") :method
+.annotate "line", 4
+    new $P227, "ResizablePMCArray"
+    push $P227, "unless"
+    .return ($P227)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "_block233"  :anon :subid("61_1258051419.23649") :method :outer("59_1258051419.23649")
+.annotate "line", 143
+    .local string rx235_tgt
+    .local int rx235_pos
+    .local int rx235_off
+    .local int rx235_eos
+    .local int rx235_rep
+    .local pmc rx235_cur
+    (rx235_cur, rx235_pos, rx235_tgt, $I10) = self."!cursor_start"()
+    rx235_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx235_cur
+    .local pmc match
+    .lex "$/", match
+    length rx235_eos, rx235_tgt
+    set rx235_off, 0
+    lt $I10, 2, rx235_start
+    sub rx235_off, $I10, 1
+    substr rx235_tgt, rx235_tgt, rx235_off
+  rx235_start:
+    ge rx235_pos, 0, rxscan236_done
+  rxscan236_loop:
+    ($P10) = rx235_cur."from"()
+    inc $P10
+    set rx235_pos, $P10
+    ge rx235_pos, rx235_eos, rxscan236_done
+    set_addr $I10, rxscan236_loop
+    rx235_cur."!mark_push"(0, rx235_pos, $I10)
+  rxscan236_done:
+  # rx literal  "else"
+    add $I11, rx235_pos, 4
+    gt $I11, rx235_eos, rx235_fail
+    sub $I11, rx235_pos, rx235_off
+    substr $S10, rx235_tgt, $I11, 4
+    ne $S10, "else", rx235_fail
+    add rx235_pos, 4
+  # rx pass
+    rx235_cur."!cursor_pass"(rx235_pos, "")
+    rx235_cur."!cursor_debug"("PASS  ", "", " at pos=", rx235_pos)
+    .return (rx235_cur)
+  rx235_fail:
+    (rx235_rep, rx235_pos, $I10, $P10) = rx235_cur."!mark_fail"(0)
+    lt rx235_pos, -1, rx235_done
+    eq rx235_pos, -1, rx235_fail
+    jump $I10
+  rx235_done:
+    rx235_cur."!cursor_fail"()
+    rx235_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx235_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control:sym<while>"  :subid("62_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx242_tgt
+    .local int rx242_pos
+    .local int rx242_off
+    .local int rx242_eos
+    .local int rx242_rep
+    .local pmc rx242_cur
+    (rx242_cur, rx242_pos, rx242_tgt, $I10) = self."!cursor_start"()
+    rx242_cur."!cursor_debug"("START ", "statement_control:sym<while>")
+    .lex unicode:"$\x{a2}", rx242_cur
+    .local pmc match
+    .lex "$/", match
+    length rx242_eos, rx242_tgt
+    set rx242_off, 0
+    lt $I10, 2, rx242_start
+    sub rx242_off, $I10, 1
+    substr rx242_tgt, rx242_tgt, rx242_off
+  rx242_start:
+.annotate "line", 147
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_246_fail
+    rx242_cur."!mark_push"(0, rx242_pos, $I10)
+  alt245_0:
+    set_addr $I10, alt245_1
+    rx242_cur."!mark_push"(0, rx242_pos, $I10)
+  # rx literal  "while"
+    add $I11, rx242_pos, 5
+    gt $I11, rx242_eos, rx242_fail
+    sub $I11, rx242_pos, rx242_off
+    substr $S10, rx242_tgt, $I11, 5
+    ne $S10, "while", rx242_fail
+    add rx242_pos, 5
+    goto alt245_end
+  alt245_1:
+  # rx literal  "until"
+    add $I11, rx242_pos, 5
+    gt $I11, rx242_eos, rx242_fail
+    sub $I11, rx242_pos, rx242_off
+    substr $S10, rx242_tgt, $I11, 5
+    ne $S10, "until", rx242_fail
+    add rx242_pos, 5
+  alt245_end:
+    set_addr $I10, rxcap_246_fail
+    ($I12, $I11) = rx242_cur."!mark_peek"($I10)
+    rx242_cur."!cursor_pos"($I11)
+    ($P10) = rx242_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx242_pos, "")
+    rx242_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_246_done
+  rxcap_246_fail:
+    goto rx242_fail
+  rxcap_246_done:
+  # rx subrule "ws" subtype=method negate=
+    rx242_cur."!cursor_pos"(rx242_pos)
+    $P10 = rx242_cur."ws"()
+    unless $P10, rx242_fail
+    rx242_pos = $P10."pos"()
+.annotate "line", 148
+  # rx subrule "xblock" subtype=capture negate=
+    rx242_cur."!cursor_pos"(rx242_pos)
+    $P10 = rx242_cur."xblock"()
+    unless $P10, rx242_fail
+    rx242_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("xblock")
+    rx242_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx242_cur."!cursor_pos"(rx242_pos)
+    $P10 = rx242_cur."ws"()
+    unless $P10, rx242_fail
+    rx242_pos = $P10."pos"()
+.annotate "line", 146
+  # rx pass
+    rx242_cur."!cursor_pass"(rx242_pos, "statement_control:sym<while>")
+    rx242_cur."!cursor_debug"("PASS  ", "statement_control:sym<while>", " at pos=", rx242_pos)
+    .return (rx242_cur)
+  rx242_fail:
+.annotate "line", 4
+    (rx242_rep, rx242_pos, $I10, $P10) = rx242_cur."!mark_fail"(0)
+    lt rx242_pos, -1, rx242_done
+    eq rx242_pos, -1, rx242_fail
+    jump $I10
+  rx242_done:
+    rx242_cur."!cursor_fail"()
+    rx242_cur."!cursor_debug"("FAIL  ", "statement_control:sym<while>")
+    .return (rx242_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control:sym<while>"  :subid("63_1258051419.23649") :method
+.annotate "line", 4
+    new $P244, "ResizablePMCArray"
+    push $P244, "until"
+    push $P244, "while"
+    .return ($P244)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control:sym<repeat>"  :subid("64_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx250_tgt
+    .local int rx250_pos
+    .local int rx250_off
+    .local int rx250_eos
+    .local int rx250_rep
+    .local pmc rx250_cur
+    (rx250_cur, rx250_pos, rx250_tgt, $I10) = self."!cursor_start"()
+    rx250_cur."!cursor_debug"("START ", "statement_control:sym<repeat>")
+    .lex unicode:"$\x{a2}", rx250_cur
+    .local pmc match
+    .lex "$/", match
+    length rx250_eos, rx250_tgt
+    set rx250_off, 0
+    lt $I10, 2, rx250_start
+    sub rx250_off, $I10, 1
+    substr rx250_tgt, rx250_tgt, rx250_off
+  rx250_start:
+.annotate "line", 152
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_253_fail
+    rx250_cur."!mark_push"(0, rx250_pos, $I10)
+  # rx literal  "repeat"
+    add $I11, rx250_pos, 6
+    gt $I11, rx250_eos, rx250_fail
+    sub $I11, rx250_pos, rx250_off
+    substr $S10, rx250_tgt, $I11, 6
+    ne $S10, "repeat", rx250_fail
+    add rx250_pos, 6
+    set_addr $I10, rxcap_253_fail
+    ($I12, $I11) = rx250_cur."!mark_peek"($I10)
+    rx250_cur."!cursor_pos"($I11)
+    ($P10) = rx250_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx250_pos, "")
+    rx250_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_253_done
+  rxcap_253_fail:
+    goto rx250_fail
+  rxcap_253_done:
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+  alt255_0:
+.annotate "line", 153
+    set_addr $I10, alt255_1
+    rx250_cur."!mark_push"(0, rx250_pos, $I10)
+.annotate "line", 154
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+  # rx subcapture "wu"
+    set_addr $I10, rxcap_258_fail
+    rx250_cur."!mark_push"(0, rx250_pos, $I10)
+  alt257_0:
+    set_addr $I10, alt257_1
+    rx250_cur."!mark_push"(0, rx250_pos, $I10)
+  # rx literal  "while"
+    add $I11, rx250_pos, 5
+    gt $I11, rx250_eos, rx250_fail
+    sub $I11, rx250_pos, rx250_off
+    substr $S10, rx250_tgt, $I11, 5
+    ne $S10, "while", rx250_fail
+    add rx250_pos, 5
+    goto alt257_end
+  alt257_1:
+  # rx literal  "until"
+    add $I11, rx250_pos, 5
+    gt $I11, rx250_eos, rx250_fail
+    sub $I11, rx250_pos, rx250_off
+    substr $S10, rx250_tgt, $I11, 5
+    ne $S10, "until", rx250_fail
+    add rx250_pos, 5
+  alt257_end:
+    set_addr $I10, rxcap_258_fail
+    ($I12, $I11) = rx250_cur."!mark_peek"($I10)
+    rx250_cur."!cursor_pos"($I11)
+    ($P10) = rx250_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx250_pos, "")
+    rx250_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("wu")
+    goto rxcap_258_done
+  rxcap_258_fail:
+    goto rx250_fail
+  rxcap_258_done:
+  # rx charclass s
+    ge rx250_pos, rx250_eos, rx250_fail
+    sub $I10, rx250_pos, rx250_off
+    is_cclass $I11, 32, rx250_tgt, $I10
+    unless $I11, rx250_fail
+    inc rx250_pos
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+  # rx subrule "xblock" subtype=capture negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."xblock"()
+    unless $P10, rx250_fail
+    rx250_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("xblock")
+    rx250_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+    goto alt255_end
+  alt255_1:
+.annotate "line", 155
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+  # rx subrule "pblock" subtype=capture negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."pblock"()
+    unless $P10, rx250_fail
+    rx250_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("pblock")
+    rx250_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+  # rx subcapture "wu"
+    set_addr $I10, rxcap_264_fail
+    rx250_cur."!mark_push"(0, rx250_pos, $I10)
+  alt263_0:
+    set_addr $I10, alt263_1
+    rx250_cur."!mark_push"(0, rx250_pos, $I10)
+  # rx literal  "while"
+    add $I11, rx250_pos, 5
+    gt $I11, rx250_eos, rx250_fail
+    sub $I11, rx250_pos, rx250_off
+    substr $S10, rx250_tgt, $I11, 5
+    ne $S10, "while", rx250_fail
+    add rx250_pos, 5
+    goto alt263_end
+  alt263_1:
+  # rx literal  "until"
+    add $I11, rx250_pos, 5
+    gt $I11, rx250_eos, rx250_fail
+    sub $I11, rx250_pos, rx250_off
+    substr $S10, rx250_tgt, $I11, 5
+    ne $S10, "until", rx250_fail
+    add rx250_pos, 5
+  alt263_end:
+    set_addr $I10, rxcap_264_fail
+    ($I12, $I11) = rx250_cur."!mark_peek"($I10)
+    rx250_cur."!cursor_pos"($I11)
+    ($P10) = rx250_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx250_pos, "")
+    rx250_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("wu")
+    goto rxcap_264_done
+  rxcap_264_fail:
+    goto rx250_fail
+  rxcap_264_done:
+  # rx charclass s
+    ge rx250_pos, rx250_eos, rx250_fail
+    sub $I10, rx250_pos, rx250_off
+    is_cclass $I11, 32, rx250_tgt, $I10
+    unless $I11, rx250_fail
+    inc rx250_pos
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."EXPR"()
+    unless $P10, rx250_fail
+    rx250_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx250_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+  alt255_end:
+.annotate "line", 156
+  # rx subrule "ws" subtype=method negate=
+    rx250_cur."!cursor_pos"(rx250_pos)
+    $P10 = rx250_cur."ws"()
+    unless $P10, rx250_fail
+    rx250_pos = $P10."pos"()
+.annotate "line", 151
+  # rx pass
+    rx250_cur."!cursor_pass"(rx250_pos, "statement_control:sym<repeat>")
+    rx250_cur."!cursor_debug"("PASS  ", "statement_control:sym<repeat>", " at pos=", rx250_pos)
+    .return (rx250_cur)
+  rx250_fail:
+.annotate "line", 4
+    (rx250_rep, rx250_pos, $I10, $P10) = rx250_cur."!mark_fail"(0)
+    lt rx250_pos, -1, rx250_done
+    eq rx250_pos, -1, rx250_fail
+    jump $I10
+  rx250_done:
+    rx250_cur."!cursor_fail"()
+    rx250_cur."!cursor_debug"("FAIL  ", "statement_control:sym<repeat>")
+    .return (rx250_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("65_1258051419.23649") :method
+.annotate "line", 4
+    new $P252, "ResizablePMCArray"
+    push $P252, "repeat"
+    .return ($P252)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control:sym<for>"  :subid("66_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx269_tgt
+    .local int rx269_pos
+    .local int rx269_off
+    .local int rx269_eos
+    .local int rx269_rep
+    .local pmc rx269_cur
+    (rx269_cur, rx269_pos, rx269_tgt, $I10) = self."!cursor_start"()
+    rx269_cur."!cursor_debug"("START ", "statement_control:sym<for>")
+    .lex unicode:"$\x{a2}", rx269_cur
+    .local pmc match
+    .lex "$/", match
+    length rx269_eos, rx269_tgt
+    set rx269_off, 0
+    lt $I10, 2, rx269_start
+    sub rx269_off, $I10, 1
+    substr rx269_tgt, rx269_tgt, rx269_off
+  rx269_start:
+.annotate "line", 160
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_272_fail
+    rx269_cur."!mark_push"(0, rx269_pos, $I10)
+  # rx literal  "for"
+    add $I11, rx269_pos, 3
+    gt $I11, rx269_eos, rx269_fail
+    sub $I11, rx269_pos, rx269_off
+    substr $S10, rx269_tgt, $I11, 3
+    ne $S10, "for", rx269_fail
+    add rx269_pos, 3
+    set_addr $I10, rxcap_272_fail
+    ($I12, $I11) = rx269_cur."!mark_peek"($I10)
+    rx269_cur."!cursor_pos"($I11)
+    ($P10) = rx269_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx269_pos, "")
+    rx269_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_272_done
+  rxcap_272_fail:
+    goto rx269_fail
+  rxcap_272_done:
+  # rx subrule "ws" subtype=method negate=
+    rx269_cur."!cursor_pos"(rx269_pos)
+    $P10 = rx269_cur."ws"()
+    unless $P10, rx269_fail
+    rx269_pos = $P10."pos"()
+.annotate "line", 161
+  # rx subrule "xblock" subtype=capture negate=
+    rx269_cur."!cursor_pos"(rx269_pos)
+    $P10 = rx269_cur."xblock"()
+    unless $P10, rx269_fail
+    rx269_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("xblock")
+    rx269_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx269_cur."!cursor_pos"(rx269_pos)
+    $P10 = rx269_cur."ws"()
+    unless $P10, rx269_fail
+    rx269_pos = $P10."pos"()
+.annotate "line", 159
+  # rx pass
+    rx269_cur."!cursor_pass"(rx269_pos, "statement_control:sym<for>")
+    rx269_cur."!cursor_debug"("PASS  ", "statement_control:sym<for>", " at pos=", rx269_pos)
+    .return (rx269_cur)
+  rx269_fail:
+.annotate "line", 4
+    (rx269_rep, rx269_pos, $I10, $P10) = rx269_cur."!mark_fail"(0)
+    lt rx269_pos, -1, rx269_done
+    eq rx269_pos, -1, rx269_fail
+    jump $I10
+  rx269_done:
+    rx269_cur."!cursor_fail"()
+    rx269_cur."!cursor_debug"("FAIL  ", "statement_control:sym<for>")
+    .return (rx269_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control:sym<for>"  :subid("67_1258051419.23649") :method
+.annotate "line", 4
+    new $P271, "ResizablePMCArray"
+    push $P271, "for"
+    .return ($P271)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control:sym<return>"  :subid("68_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx276_tgt
+    .local int rx276_pos
+    .local int rx276_off
+    .local int rx276_eos
+    .local int rx276_rep
+    .local pmc rx276_cur
+    (rx276_cur, rx276_pos, rx276_tgt, $I10) = self."!cursor_start"()
+    rx276_cur."!cursor_debug"("START ", "statement_control:sym<return>")
+    .lex unicode:"$\x{a2}", rx276_cur
+    .local pmc match
+    .lex "$/", match
+    length rx276_eos, rx276_tgt
+    set rx276_off, 0
+    lt $I10, 2, rx276_start
+    sub rx276_off, $I10, 1
+    substr rx276_tgt, rx276_tgt, rx276_off
+  rx276_start:
+.annotate "line", 165
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_279_fail
+    rx276_cur."!mark_push"(0, rx276_pos, $I10)
+  # rx literal  "return"
+    add $I11, rx276_pos, 6
+    gt $I11, rx276_eos, rx276_fail
+    sub $I11, rx276_pos, rx276_off
+    substr $S10, rx276_tgt, $I11, 6
+    ne $S10, "return", rx276_fail
+    add rx276_pos, 6
+    set_addr $I10, rxcap_279_fail
+    ($I12, $I11) = rx276_cur."!mark_peek"($I10)
+    rx276_cur."!cursor_pos"($I11)
+    ($P10) = rx276_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx276_pos, "")
+    rx276_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_279_done
+  rxcap_279_fail:
+    goto rx276_fail
+  rxcap_279_done:
+  # rx subrule "ws" subtype=method negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."ws"()
+    unless $P10, rx276_fail
+    rx276_pos = $P10."pos"()
+  alt281_0:
+.annotate "line", 166
+    set_addr $I10, alt281_1
+    rx276_cur."!mark_push"(0, rx276_pos, $I10)
+  # rx subrule "ws" subtype=method negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."ws"()
+    unless $P10, rx276_fail
+    rx276_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."EXPR"()
+    unless $P10, rx276_fail
+    rx276_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx276_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."ws"()
+    unless $P10, rx276_fail
+    rx276_pos = $P10."pos"()
+    goto alt281_end
+  alt281_1:
+  # rx subrule "ws" subtype=method negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."ws"()
+    unless $P10, rx276_fail
+    rx276_pos = $P10."pos"()
+  # rx subrule "panic" subtype=method negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."panic"("return requires an expression argument")
+    unless $P10, rx276_fail
+    rx276_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."ws"()
+    unless $P10, rx276_fail
+    rx276_pos = $P10."pos"()
+  alt281_end:
+  # rx subrule "ws" subtype=method negate=
+    rx276_cur."!cursor_pos"(rx276_pos)
+    $P10 = rx276_cur."ws"()
+    unless $P10, rx276_fail
+    rx276_pos = $P10."pos"()
+.annotate "line", 164
+  # rx pass
+    rx276_cur."!cursor_pass"(rx276_pos, "statement_control:sym<return>")
+    rx276_cur."!cursor_debug"("PASS  ", "statement_control:sym<return>", " at pos=", rx276_pos)
+    .return (rx276_cur)
+  rx276_fail:
+.annotate "line", 4
+    (rx276_rep, rx276_pos, $I10, $P10) = rx276_cur."!mark_fail"(0)
+    lt rx276_pos, -1, rx276_done
+    eq rx276_pos, -1, rx276_fail
+    jump $I10
+  rx276_done:
+    rx276_cur."!cursor_fail"()
+    rx276_cur."!cursor_debug"("FAIL  ", "statement_control:sym<return>")
+    .return (rx276_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control:sym<return>"  :subid("69_1258051419.23649") :method
+.annotate "line", 4
+    new $P278, "ResizablePMCArray"
+    push $P278, "return"
+    .return ($P278)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_control:sym<make>"  :subid("70_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx288_tgt
+    .local int rx288_pos
+    .local int rx288_off
+    .local int rx288_eos
+    .local int rx288_rep
+    .local pmc rx288_cur
+    (rx288_cur, rx288_pos, rx288_tgt, $I10) = self."!cursor_start"()
+    rx288_cur."!cursor_debug"("START ", "statement_control:sym<make>")
+    .lex unicode:"$\x{a2}", rx288_cur
+    .local pmc match
+    .lex "$/", match
+    length rx288_eos, rx288_tgt
+    set rx288_off, 0
+    lt $I10, 2, rx288_start
+    sub rx288_off, $I10, 1
+    substr rx288_tgt, rx288_tgt, rx288_off
+  rx288_start:
+.annotate "line", 170
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_291_fail
+    rx288_cur."!mark_push"(0, rx288_pos, $I10)
+  # rx literal  "make"
+    add $I11, rx288_pos, 4
+    gt $I11, rx288_eos, rx288_fail
+    sub $I11, rx288_pos, rx288_off
+    substr $S10, rx288_tgt, $I11, 4
+    ne $S10, "make", rx288_fail
+    add rx288_pos, 4
+    set_addr $I10, rxcap_291_fail
+    ($I12, $I11) = rx288_cur."!mark_peek"($I10)
+    rx288_cur."!cursor_pos"($I11)
+    ($P10) = rx288_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx288_pos, "")
+    rx288_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_291_done
+  rxcap_291_fail:
+    goto rx288_fail
+  rxcap_291_done:
+  # rx subrule "ws" subtype=method negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."ws"()
+    unless $P10, rx288_fail
+    rx288_pos = $P10."pos"()
+  alt293_0:
+.annotate "line", 171
+    set_addr $I10, alt293_1
+    rx288_cur."!mark_push"(0, rx288_pos, $I10)
+  # rx subrule "ws" subtype=method negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."ws"()
+    unless $P10, rx288_fail
+    rx288_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."EXPR"()
+    unless $P10, rx288_fail
+    rx288_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx288_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."ws"()
+    unless $P10, rx288_fail
+    rx288_pos = $P10."pos"()
+    goto alt293_end
+  alt293_1:
+  # rx subrule "ws" subtype=method negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."ws"()
+    unless $P10, rx288_fail
+    rx288_pos = $P10."pos"()
+  # rx subrule "panic" subtype=method negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."panic"("make requires an expression argument")
+    unless $P10, rx288_fail
+    rx288_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."ws"()
+    unless $P10, rx288_fail
+    rx288_pos = $P10."pos"()
+  alt293_end:
+  # rx subrule "ws" subtype=method negate=
+    rx288_cur."!cursor_pos"(rx288_pos)
+    $P10 = rx288_cur."ws"()
+    unless $P10, rx288_fail
+    rx288_pos = $P10."pos"()
+.annotate "line", 169
+  # rx pass
+    rx288_cur."!cursor_pass"(rx288_pos, "statement_control:sym<make>")
+    rx288_cur."!cursor_debug"("PASS  ", "statement_control:sym<make>", " at pos=", rx288_pos)
+    .return (rx288_cur)
+  rx288_fail:
+.annotate "line", 4
+    (rx288_rep, rx288_pos, $I10, $P10) = rx288_cur."!mark_fail"(0)
+    lt rx288_pos, -1, rx288_done
+    eq rx288_pos, -1, rx288_fail
+    jump $I10
+  rx288_done:
+    rx288_cur."!cursor_fail"()
+    rx288_cur."!cursor_debug"("FAIL  ", "statement_control:sym<make>")
+    .return (rx288_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_control:sym<make>"  :subid("71_1258051419.23649") :method
+.annotate "line", 4
+    new $P290, "ResizablePMCArray"
+    push $P290, "make"
+    .return ($P290)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_prefix"  :subid("72_1258051419.23649") :method
+.annotate "line", 174
+    $P300 = self."!protoregex"("statement_prefix")
+    .return ($P300)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_prefix"  :subid("73_1258051419.23649") :method
+.annotate "line", 174
+    $P302 = self."!PREFIX__!protoregex"("statement_prefix")
+    .return ($P302)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "statement_prefix:sym<INIT>"  :subid("74_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx304_tgt
+    .local int rx304_pos
+    .local int rx304_off
+    .local int rx304_eos
+    .local int rx304_rep
+    .local pmc rx304_cur
+    (rx304_cur, rx304_pos, rx304_tgt, $I10) = self."!cursor_start"()
+    rx304_cur."!cursor_debug"("START ", "statement_prefix:sym<INIT>")
+    .lex unicode:"$\x{a2}", rx304_cur
+    .local pmc match
+    .lex "$/", match
+    length rx304_eos, rx304_tgt
+    set rx304_off, 0
+    lt $I10, 2, rx304_start
+    sub rx304_off, $I10, 1
+    substr rx304_tgt, rx304_tgt, rx304_off
+  rx304_start:
+.annotate "line", 175
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_308_fail
+    rx304_cur."!mark_push"(0, rx304_pos, $I10)
+  # rx literal  "INIT"
+    add $I11, rx304_pos, 4
+    gt $I11, rx304_eos, rx304_fail
+    sub $I11, rx304_pos, rx304_off
+    substr $S10, rx304_tgt, $I11, 4
+    ne $S10, "INIT", rx304_fail
+    add rx304_pos, 4
+    set_addr $I10, rxcap_308_fail
+    ($I12, $I11) = rx304_cur."!mark_peek"($I10)
+    rx304_cur."!cursor_pos"($I11)
+    ($P10) = rx304_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx304_pos, "")
+    rx304_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_308_done
+  rxcap_308_fail:
+    goto rx304_fail
+  rxcap_308_done:
+  # rx subrule "blorst" subtype=capture negate=
+    rx304_cur."!cursor_pos"(rx304_pos)
+    $P10 = rx304_cur."blorst"()
+    unless $P10, rx304_fail
+    rx304_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("blorst")
+    rx304_pos = $P10."pos"()
+  # rx pass
+    rx304_cur."!cursor_pass"(rx304_pos, "statement_prefix:sym<INIT>")
+    rx304_cur."!cursor_debug"("PASS  ", "statement_prefix:sym<INIT>", " at pos=", rx304_pos)
+    .return (rx304_cur)
+  rx304_fail:
+.annotate "line", 4
+    (rx304_rep, rx304_pos, $I10, $P10) = rx304_cur."!mark_fail"(0)
+    lt rx304_pos, -1, rx304_done
+    eq rx304_pos, -1, rx304_fail
+    jump $I10
+  rx304_done:
+    rx304_cur."!cursor_fail"()
+    rx304_cur."!cursor_debug"("FAIL  ", "statement_prefix:sym<INIT>")
+    .return (rx304_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("75_1258051419.23649") :method
+.annotate "line", 4
+    $P306 = self."!PREFIX__!subrule"("blorst", "INIT")
+    new $P307, "ResizablePMCArray"
+    push $P307, $P306
+    .return ($P307)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "blorst"  :subid("76_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx310_tgt
+    .local int rx310_pos
+    .local int rx310_off
+    .local int rx310_eos
+    .local int rx310_rep
+    .local pmc rx310_cur
+    (rx310_cur, rx310_pos, rx310_tgt, $I10) = self."!cursor_start"()
+    rx310_cur."!cursor_debug"("START ", "blorst")
+    .lex unicode:"$\x{a2}", rx310_cur
+    .local pmc match
+    .lex "$/", match
+    length rx310_eos, rx310_tgt
+    set rx310_off, 0
+    lt $I10, 2, rx310_start
+    sub rx310_off, $I10, 1
+    substr rx310_tgt, rx310_tgt, rx310_off
+  rx310_start:
+.annotate "line", 178
+  # rx charclass s
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    is_cclass $I11, 32, rx310_tgt, $I10
+    unless $I11, rx310_fail
+    inc rx310_pos
+  # rx subrule "ws" subtype=method negate=
+    rx310_cur."!cursor_pos"(rx310_pos)
+    $P10 = rx310_cur."ws"()
+    unless $P10, rx310_fail
+    rx310_pos = $P10."pos"()
+  alt313_0:
+    set_addr $I10, alt313_1
+    rx310_cur."!mark_push"(0, rx310_pos, $I10)
+  # rx enumcharlist negate=0 zerowidth
+    ge rx310_pos, rx310_eos, rx310_fail
+    sub $I10, rx310_pos, rx310_off
+    substr $S10, rx310_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx310_fail
+  # rx subrule "block" subtype=capture negate=
+    rx310_cur."!cursor_pos"(rx310_pos)
+    $P10 = rx310_cur."block"()
+    unless $P10, rx310_fail
+    rx310_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("block")
+    rx310_pos = $P10."pos"()
+    goto alt313_end
+  alt313_1:
+  # rx subrule "statement" subtype=capture negate=
+    rx310_cur."!cursor_pos"(rx310_pos)
+    $P10 = rx310_cur."statement"()
+    unless $P10, rx310_fail
+    rx310_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement")
+    rx310_pos = $P10."pos"()
+  alt313_end:
+.annotate "line", 177
+  # rx pass
+    rx310_cur."!cursor_pass"(rx310_pos, "blorst")
+    rx310_cur."!cursor_debug"("PASS  ", "blorst", " at pos=", rx310_pos)
+    .return (rx310_cur)
+  rx310_fail:
+.annotate "line", 4
+    (rx310_rep, rx310_pos, $I10, $P10) = rx310_cur."!mark_fail"(0)
+    lt rx310_pos, -1, rx310_done
+    eq rx310_pos, -1, rx310_fail
+    jump $I10
+  rx310_done:
+    rx310_cur."!cursor_fail"()
+    rx310_cur."!cursor_debug"("FAIL  ", "blorst")
+    .return (rx310_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__blorst"  :subid("77_1258051419.23649") :method
+.annotate "line", 4
+    new $P312, "ResizablePMCArray"
+    push $P312, ""
+    .return ($P312)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<colonpair>"  :subid("78_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx315_tgt
+    .local int rx315_pos
+    .local int rx315_off
+    .local int rx315_eos
+    .local int rx315_rep
+    .local pmc rx315_cur
+    (rx315_cur, rx315_pos, rx315_tgt, $I10) = self."!cursor_start"()
+    rx315_cur."!cursor_debug"("START ", "term:sym<colonpair>")
+    .lex unicode:"$\x{a2}", rx315_cur
+    .local pmc match
+    .lex "$/", match
+    length rx315_eos, rx315_tgt
+    set rx315_off, 0
+    lt $I10, 2, rx315_start
+    sub rx315_off, $I10, 1
+    substr rx315_tgt, rx315_tgt, rx315_off
+  rx315_start:
+.annotate "line", 183
+  # rx subrule "colonpair" subtype=capture negate=
+    rx315_cur."!cursor_pos"(rx315_pos)
+    $P10 = rx315_cur."colonpair"()
+    unless $P10, rx315_fail
+    rx315_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("colonpair")
+    rx315_pos = $P10."pos"()
+  # rx pass
+    rx315_cur."!cursor_pass"(rx315_pos, "term:sym<colonpair>")
+    rx315_cur."!cursor_debug"("PASS  ", "term:sym<colonpair>", " at pos=", rx315_pos)
+    .return (rx315_cur)
+  rx315_fail:
+.annotate "line", 4
+    (rx315_rep, rx315_pos, $I10, $P10) = rx315_cur."!mark_fail"(0)
+    lt rx315_pos, -1, rx315_done
+    eq rx315_pos, -1, rx315_fail
+    jump $I10
+  rx315_done:
+    rx315_cur."!cursor_fail"()
+    rx315_cur."!cursor_debug"("FAIL  ", "term:sym<colonpair>")
+    .return (rx315_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<colonpair>"  :subid("79_1258051419.23649") :method
+.annotate "line", 4
+    $P317 = self."!PREFIX__!subrule"("colonpair", "")
+    new $P318, "ResizablePMCArray"
+    push $P318, $P317
+    .return ($P318)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<variable>"  :subid("80_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx320_tgt
+    .local int rx320_pos
+    .local int rx320_off
+    .local int rx320_eos
+    .local int rx320_rep
+    .local pmc rx320_cur
+    (rx320_cur, rx320_pos, rx320_tgt, $I10) = self."!cursor_start"()
+    rx320_cur."!cursor_debug"("START ", "term:sym<variable>")
+    .lex unicode:"$\x{a2}", rx320_cur
+    .local pmc match
+    .lex "$/", match
+    length rx320_eos, rx320_tgt
+    set rx320_off, 0
+    lt $I10, 2, rx320_start
+    sub rx320_off, $I10, 1
+    substr rx320_tgt, rx320_tgt, rx320_off
+  rx320_start:
+.annotate "line", 184
+  # rx subrule "variable" subtype=capture negate=
+    rx320_cur."!cursor_pos"(rx320_pos)
+    $P10 = rx320_cur."variable"()
+    unless $P10, rx320_fail
+    rx320_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("variable")
+    rx320_pos = $P10."pos"()
+  # rx pass
+    rx320_cur."!cursor_pass"(rx320_pos, "term:sym<variable>")
+    rx320_cur."!cursor_debug"("PASS  ", "term:sym<variable>", " at pos=", rx320_pos)
+    .return (rx320_cur)
+  rx320_fail:
+.annotate "line", 4
+    (rx320_rep, rx320_pos, $I10, $P10) = rx320_cur."!mark_fail"(0)
+    lt rx320_pos, -1, rx320_done
+    eq rx320_pos, -1, rx320_fail
+    jump $I10
+  rx320_done:
+    rx320_cur."!cursor_fail"()
+    rx320_cur."!cursor_debug"("FAIL  ", "term:sym<variable>")
+    .return (rx320_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<variable>"  :subid("81_1258051419.23649") :method
+.annotate "line", 4
+    $P322 = self."!PREFIX__!subrule"("variable", "")
+    new $P323, "ResizablePMCArray"
+    push $P323, $P322
+    .return ($P323)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<package_declarator>"  :subid("82_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx325_tgt
+    .local int rx325_pos
+    .local int rx325_off
+    .local int rx325_eos
+    .local int rx325_rep
+    .local pmc rx325_cur
+    (rx325_cur, rx325_pos, rx325_tgt, $I10) = self."!cursor_start"()
+    rx325_cur."!cursor_debug"("START ", "term:sym<package_declarator>")
+    .lex unicode:"$\x{a2}", rx325_cur
+    .local pmc match
+    .lex "$/", match
+    length rx325_eos, rx325_tgt
+    set rx325_off, 0
+    lt $I10, 2, rx325_start
+    sub rx325_off, $I10, 1
+    substr rx325_tgt, rx325_tgt, rx325_off
+  rx325_start:
+.annotate "line", 185
+  # rx subrule "package_declarator" subtype=capture negate=
+    rx325_cur."!cursor_pos"(rx325_pos)
+    $P10 = rx325_cur."package_declarator"()
+    unless $P10, rx325_fail
+    rx325_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("package_declarator")
+    rx325_pos = $P10."pos"()
+  # rx pass
+    rx325_cur."!cursor_pass"(rx325_pos, "term:sym<package_declarator>")
+    rx325_cur."!cursor_debug"("PASS  ", "term:sym<package_declarator>", " at pos=", rx325_pos)
+    .return (rx325_cur)
+  rx325_fail:
+.annotate "line", 4
+    (rx325_rep, rx325_pos, $I10, $P10) = rx325_cur."!mark_fail"(0)
+    lt rx325_pos, -1, rx325_done
+    eq rx325_pos, -1, rx325_fail
+    jump $I10
+  rx325_done:
+    rx325_cur."!cursor_fail"()
+    rx325_cur."!cursor_debug"("FAIL  ", "term:sym<package_declarator>")
+    .return (rx325_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("83_1258051419.23649") :method
+.annotate "line", 4
+    $P327 = self."!PREFIX__!subrule"("package_declarator", "")
+    new $P328, "ResizablePMCArray"
+    push $P328, $P327
+    .return ($P328)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<scope_declarator>"  :subid("84_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx330_tgt
+    .local int rx330_pos
+    .local int rx330_off
+    .local int rx330_eos
+    .local int rx330_rep
+    .local pmc rx330_cur
+    (rx330_cur, rx330_pos, rx330_tgt, $I10) = self."!cursor_start"()
+    rx330_cur."!cursor_debug"("START ", "term:sym<scope_declarator>")
+    .lex unicode:"$\x{a2}", rx330_cur
+    .local pmc match
+    .lex "$/", match
+    length rx330_eos, rx330_tgt
+    set rx330_off, 0
+    lt $I10, 2, rx330_start
+    sub rx330_off, $I10, 1
+    substr rx330_tgt, rx330_tgt, rx330_off
+  rx330_start:
+.annotate "line", 186
+  # rx subrule "scope_declarator" subtype=capture negate=
+    rx330_cur."!cursor_pos"(rx330_pos)
+    $P10 = rx330_cur."scope_declarator"()
+    unless $P10, rx330_fail
+    rx330_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("scope_declarator")
+    rx330_pos = $P10."pos"()
+  # rx pass
+    rx330_cur."!cursor_pass"(rx330_pos, "term:sym<scope_declarator>")
+    rx330_cur."!cursor_debug"("PASS  ", "term:sym<scope_declarator>", " at pos=", rx330_pos)
+    .return (rx330_cur)
+  rx330_fail:
+.annotate "line", 4
+    (rx330_rep, rx330_pos, $I10, $P10) = rx330_cur."!mark_fail"(0)
+    lt rx330_pos, -1, rx330_done
+    eq rx330_pos, -1, rx330_fail
+    jump $I10
+  rx330_done:
+    rx330_cur."!cursor_fail"()
+    rx330_cur."!cursor_debug"("FAIL  ", "term:sym<scope_declarator>")
+    .return (rx330_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("85_1258051419.23649") :method
+.annotate "line", 4
+    $P332 = self."!PREFIX__!subrule"("scope_declarator", "")
+    new $P333, "ResizablePMCArray"
+    push $P333, $P332
+    .return ($P333)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<routine_declarator>"  :subid("86_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx335_tgt
+    .local int rx335_pos
+    .local int rx335_off
+    .local int rx335_eos
+    .local int rx335_rep
+    .local pmc rx335_cur
+    (rx335_cur, rx335_pos, rx335_tgt, $I10) = self."!cursor_start"()
+    rx335_cur."!cursor_debug"("START ", "term:sym<routine_declarator>")
+    .lex unicode:"$\x{a2}", rx335_cur
+    .local pmc match
+    .lex "$/", match
+    length rx335_eos, rx335_tgt
+    set rx335_off, 0
+    lt $I10, 2, rx335_start
+    sub rx335_off, $I10, 1
+    substr rx335_tgt, rx335_tgt, rx335_off
+  rx335_start:
+.annotate "line", 187
+  # rx subrule "routine_declarator" subtype=capture negate=
+    rx335_cur."!cursor_pos"(rx335_pos)
+    $P10 = rx335_cur."routine_declarator"()
+    unless $P10, rx335_fail
+    rx335_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("routine_declarator")
+    rx335_pos = $P10."pos"()
+  # rx pass
+    rx335_cur."!cursor_pass"(rx335_pos, "term:sym<routine_declarator>")
+    rx335_cur."!cursor_debug"("PASS  ", "term:sym<routine_declarator>", " at pos=", rx335_pos)
+    .return (rx335_cur)
+  rx335_fail:
+.annotate "line", 4
+    (rx335_rep, rx335_pos, $I10, $P10) = rx335_cur."!mark_fail"(0)
+    lt rx335_pos, -1, rx335_done
+    eq rx335_pos, -1, rx335_fail
+    jump $I10
+  rx335_done:
+    rx335_cur."!cursor_fail"()
+    rx335_cur."!cursor_debug"("FAIL  ", "term:sym<routine_declarator>")
+    .return (rx335_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("87_1258051419.23649") :method
+.annotate "line", 4
+    $P337 = self."!PREFIX__!subrule"("routine_declarator", "")
+    new $P338, "ResizablePMCArray"
+    push $P338, $P337
+    .return ($P338)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<regex_declarator>"  :subid("88_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx340_tgt
+    .local int rx340_pos
+    .local int rx340_off
+    .local int rx340_eos
+    .local int rx340_rep
+    .local pmc rx340_cur
+    (rx340_cur, rx340_pos, rx340_tgt, $I10) = self."!cursor_start"()
+    rx340_cur."!cursor_debug"("START ", "term:sym<regex_declarator>")
+    .lex unicode:"$\x{a2}", rx340_cur
+    .local pmc match
+    .lex "$/", match
+    length rx340_eos, rx340_tgt
+    set rx340_off, 0
+    lt $I10, 2, rx340_start
+    sub rx340_off, $I10, 1
+    substr rx340_tgt, rx340_tgt, rx340_off
+  rx340_start:
+.annotate "line", 188
+  # rx subrule "regex_declarator" subtype=capture negate=
+    rx340_cur."!cursor_pos"(rx340_pos)
+    $P10 = rx340_cur."regex_declarator"()
+    unless $P10, rx340_fail
+    rx340_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("regex_declarator")
+    rx340_pos = $P10."pos"()
+  # rx pass
+    rx340_cur."!cursor_pass"(rx340_pos, "term:sym<regex_declarator>")
+    rx340_cur."!cursor_debug"("PASS  ", "term:sym<regex_declarator>", " at pos=", rx340_pos)
+    .return (rx340_cur)
+  rx340_fail:
+.annotate "line", 4
+    (rx340_rep, rx340_pos, $I10, $P10) = rx340_cur."!mark_fail"(0)
+    lt rx340_pos, -1, rx340_done
+    eq rx340_pos, -1, rx340_fail
+    jump $I10
+  rx340_done:
+    rx340_cur."!cursor_fail"()
+    rx340_cur."!cursor_debug"("FAIL  ", "term:sym<regex_declarator>")
+    .return (rx340_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("89_1258051419.23649") :method
+.annotate "line", 4
+    $P342 = self."!PREFIX__!subrule"("regex_declarator", "")
+    new $P343, "ResizablePMCArray"
+    push $P343, $P342
+    .return ($P343)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<statement_prefix>"  :subid("90_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx345_tgt
+    .local int rx345_pos
+    .local int rx345_off
+    .local int rx345_eos
+    .local int rx345_rep
+    .local pmc rx345_cur
+    (rx345_cur, rx345_pos, rx345_tgt, $I10) = self."!cursor_start"()
+    rx345_cur."!cursor_debug"("START ", "term:sym<statement_prefix>")
+    .lex unicode:"$\x{a2}", rx345_cur
+    .local pmc match
+    .lex "$/", match
+    length rx345_eos, rx345_tgt
+    set rx345_off, 0
+    lt $I10, 2, rx345_start
+    sub rx345_off, $I10, 1
+    substr rx345_tgt, rx345_tgt, rx345_off
+  rx345_start:
+.annotate "line", 189
+  # rx subrule "statement_prefix" subtype=capture negate=
+    rx345_cur."!cursor_pos"(rx345_pos)
+    $P10 = rx345_cur."statement_prefix"()
+    unless $P10, rx345_fail
+    rx345_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement_prefix")
+    rx345_pos = $P10."pos"()
+  # rx pass
+    rx345_cur."!cursor_pass"(rx345_pos, "term:sym<statement_prefix>")
+    rx345_cur."!cursor_debug"("PASS  ", "term:sym<statement_prefix>", " at pos=", rx345_pos)
+    .return (rx345_cur)
+  rx345_fail:
+.annotate "line", 4
+    (rx345_rep, rx345_pos, $I10, $P10) = rx345_cur."!mark_fail"(0)
+    lt rx345_pos, -1, rx345_done
+    eq rx345_pos, -1, rx345_fail
+    jump $I10
+  rx345_done:
+    rx345_cur."!cursor_fail"()
+    rx345_cur."!cursor_debug"("FAIL  ", "term:sym<statement_prefix>")
+    .return (rx345_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("91_1258051419.23649") :method
+.annotate "line", 4
+    $P347 = self."!PREFIX__!subrule"("statement_prefix", "")
+    new $P348, "ResizablePMCArray"
+    push $P348, $P347
+    .return ($P348)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<lambda>"  :subid("92_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx350_tgt
+    .local int rx350_pos
+    .local int rx350_off
+    .local int rx350_eos
+    .local int rx350_rep
+    .local pmc rx350_cur
+    (rx350_cur, rx350_pos, rx350_tgt, $I10) = self."!cursor_start"()
+    rx350_cur."!cursor_debug"("START ", "term:sym<lambda>")
+    .lex unicode:"$\x{a2}", rx350_cur
+    .local pmc match
+    .lex "$/", match
+    length rx350_eos, rx350_tgt
+    set rx350_off, 0
+    lt $I10, 2, rx350_start
+    sub rx350_off, $I10, 1
+    substr rx350_tgt, rx350_tgt, rx350_off
+  rx350_start:
+.annotate "line", 190
+  # rx subrule "lambda" subtype=zerowidth negate=
+    rx350_cur."!cursor_pos"(rx350_pos)
+    $P10 = rx350_cur."lambda"()
+    unless $P10, rx350_fail
+  # rx subrule "pblock" subtype=capture negate=
+    rx350_cur."!cursor_pos"(rx350_pos)
+    $P10 = rx350_cur."pblock"()
+    unless $P10, rx350_fail
+    rx350_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("pblock")
+    rx350_pos = $P10."pos"()
+  # rx pass
+    rx350_cur."!cursor_pass"(rx350_pos, "term:sym<lambda>")
+    rx350_cur."!cursor_debug"("PASS  ", "term:sym<lambda>", " at pos=", rx350_pos)
+    .return (rx350_cur)
+  rx350_fail:
+.annotate "line", 4
+    (rx350_rep, rx350_pos, $I10, $P10) = rx350_cur."!mark_fail"(0)
+    lt rx350_pos, -1, rx350_done
+    eq rx350_pos, -1, rx350_fail
+    jump $I10
+  rx350_done:
+    rx350_cur."!cursor_fail"()
+    rx350_cur."!cursor_debug"("FAIL  ", "term:sym<lambda>")
+    .return (rx350_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<lambda>"  :subid("93_1258051419.23649") :method
+.annotate "line", 4
+    new $P352, "ResizablePMCArray"
+    push $P352, ""
+    .return ($P352)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "colonpair"  :subid("94_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx354_tgt
+    .local int rx354_pos
+    .local int rx354_off
+    .local int rx354_eos
+    .local int rx354_rep
+    .local pmc rx354_cur
+    (rx354_cur, rx354_pos, rx354_tgt, $I10) = self."!cursor_start"()
+    rx354_cur."!cursor_debug"("START ", "colonpair")
+    rx354_cur."!cursor_caparray"("circumfix")
+    .lex unicode:"$\x{a2}", rx354_cur
+    .local pmc match
+    .lex "$/", match
+    length rx354_eos, rx354_tgt
+    set rx354_off, 0
+    lt $I10, 2, rx354_start
+    sub rx354_off, $I10, 1
+    substr rx354_tgt, rx354_tgt, rx354_off
+  rx354_start:
+.annotate "line", 193
+  # rx literal  ":"
+    add $I11, rx354_pos, 1
+    gt $I11, rx354_eos, rx354_fail
+    sub $I11, rx354_pos, rx354_off
+    substr $S10, rx354_tgt, $I11, 1
+    ne $S10, ":", rx354_fail
+    add rx354_pos, 1
+  alt359_0:
+.annotate "line", 194
+    set_addr $I10, alt359_1
+    rx354_cur."!mark_push"(0, rx354_pos, $I10)
+.annotate "line", 195
+  # rx subcapture "not"
+    set_addr $I10, rxcap_360_fail
+    rx354_cur."!mark_push"(0, rx354_pos, $I10)
+  # rx literal  "!"
+    add $I11, rx354_pos, 1
+    gt $I11, rx354_eos, rx354_fail
+    sub $I11, rx354_pos, rx354_off
+    substr $S10, rx354_tgt, $I11, 1
+    ne $S10, "!", rx354_fail
+    add rx354_pos, 1
+    set_addr $I10, rxcap_360_fail
+    ($I12, $I11) = rx354_cur."!mark_peek"($I10)
+    rx354_cur."!cursor_pos"($I11)
+    ($P10) = rx354_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx354_pos, "")
+    rx354_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("not")
+    goto rxcap_360_done
+  rxcap_360_fail:
+    goto rx354_fail
+  rxcap_360_done:
+  # rx subrule "identifier" subtype=capture negate=
+    rx354_cur."!cursor_pos"(rx354_pos)
+    $P10 = rx354_cur."identifier"()
+    unless $P10, rx354_fail
+    rx354_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("identifier")
+    rx354_pos = $P10."pos"()
+    goto alt359_end
+  alt359_1:
+.annotate "line", 196
+  # rx subrule "identifier" subtype=capture negate=
+    rx354_cur."!cursor_pos"(rx354_pos)
+    $P10 = rx354_cur."identifier"()
+    unless $P10, rx354_fail
+    rx354_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("identifier")
+    rx354_pos = $P10."pos"()
+  # rx rxquantr361 ** 0..1
+    set_addr $I362, rxquantr361_done
+    rx354_cur."!mark_push"(0, rx354_pos, $I362)
+  rxquantr361_loop:
+  # rx subrule "circumfix" subtype=capture negate=
+    rx354_cur."!cursor_pos"(rx354_pos)
+    $P10 = rx354_cur."circumfix"()
+    unless $P10, rx354_fail
+    rx354_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("circumfix")
+    rx354_pos = $P10."pos"()
+    (rx354_rep) = rx354_cur."!mark_commit"($I362)
+  rxquantr361_done:
+  alt359_end:
+.annotate "line", 192
+  # rx pass
+    rx354_cur."!cursor_pass"(rx354_pos, "colonpair")
+    rx354_cur."!cursor_debug"("PASS  ", "colonpair", " at pos=", rx354_pos)
+    .return (rx354_cur)
+  rx354_fail:
+.annotate "line", 4
+    (rx354_rep, rx354_pos, $I10, $P10) = rx354_cur."!mark_fail"(0)
+    lt rx354_pos, -1, rx354_done
+    eq rx354_pos, -1, rx354_fail
+    jump $I10
+  rx354_done:
+    rx354_cur."!cursor_fail"()
+    rx354_cur."!cursor_debug"("FAIL  ", "colonpair")
+    .return (rx354_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__colonpair"  :subid("95_1258051419.23649") :method
+.annotate "line", 4
+    $P356 = self."!PREFIX__!subrule"("identifier", ":")
+    $P357 = self."!PREFIX__!subrule"("identifier", ":!")
+    new $P358, "ResizablePMCArray"
+    push $P358, $P356
+    push $P358, $P357
+    .return ($P358)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "variable"  :subid("96_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx364_tgt
+    .local int rx364_pos
+    .local int rx364_off
+    .local int rx364_eos
+    .local int rx364_rep
+    .local pmc rx364_cur
+    (rx364_cur, rx364_pos, rx364_tgt, $I10) = self."!cursor_start"()
+    rx364_cur."!cursor_debug"("START ", "variable")
+    rx364_cur."!cursor_caparray"("twigil")
+    .lex unicode:"$\x{a2}", rx364_cur
+    .local pmc match
+    .lex "$/", match
+    length rx364_eos, rx364_tgt
+    set rx364_off, 0
+    lt $I10, 2, rx364_start
+    sub rx364_off, $I10, 1
+    substr rx364_tgt, rx364_tgt, rx364_off
+  rx364_start:
+  alt369_0:
+.annotate "line", 200
+    set_addr $I10, alt369_1
+    rx364_cur."!mark_push"(0, rx364_pos, $I10)
+.annotate "line", 201
+  # rx subrule "sigil" subtype=capture negate=
+    rx364_cur."!cursor_pos"(rx364_pos)
+    $P10 = rx364_cur."sigil"()
+    unless $P10, rx364_fail
+    rx364_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sigil")
+    rx364_pos = $P10."pos"()
+  # rx rxquantr370 ** 0..1
+    set_addr $I371, rxquantr370_done
+    rx364_cur."!mark_push"(0, rx364_pos, $I371)
+  rxquantr370_loop:
+  # rx subrule "twigil" subtype=capture negate=
+    rx364_cur."!cursor_pos"(rx364_pos)
+    $P10 = rx364_cur."twigil"()
+    unless $P10, rx364_fail
+    rx364_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("twigil")
+    rx364_pos = $P10."pos"()
+    (rx364_rep) = rx364_cur."!mark_commit"($I371)
+  rxquantr370_done:
+  # rx subrule "ident" subtype=capture negate=
+    rx364_cur."!cursor_pos"(rx364_pos)
+    $P10 = rx364_cur."ident"()
+    unless $P10, rx364_fail
+    rx364_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("desigilname")
+    rx364_pos = $P10."pos"()
+    goto alt369_end
+  alt369_1:
+    set_addr $I10, alt369_2
+    rx364_cur."!mark_push"(0, rx364_pos, $I10)
+.annotate "line", 202
+  # rx subrule "sigil" subtype=capture negate=
+    rx364_cur."!cursor_pos"(rx364_pos)
+    $P10 = rx364_cur."sigil"()
+    unless $P10, rx364_fail
+    rx364_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sigil")
+    rx364_pos = $P10."pos"()
+  # rx enumcharlist negate=0 zerowidth
+    ge rx364_pos, rx364_eos, rx364_fail
+    sub $I10, rx364_pos, rx364_off
+    substr $S10, rx364_tgt, $I10, 1
+    index $I11, "<[", $S10
+    lt $I11, 0, rx364_fail
+  # rx subrule "postcircumfix" subtype=capture negate=
+    rx364_cur."!cursor_pos"(rx364_pos)
+    $P10 = rx364_cur."postcircumfix"()
+    unless $P10, rx364_fail
+    rx364_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("postcircumfix")
+    rx364_pos = $P10."pos"()
+    goto alt369_end
+  alt369_2:
+.annotate "line", 203
+  # rx subcapture "sigil"
+    set_addr $I10, rxcap_372_fail
+    rx364_cur."!mark_push"(0, rx364_pos, $I10)
+  # rx literal  "$"
+    add $I11, rx364_pos, 1
+    gt $I11, rx364_eos, rx364_fail
+    sub $I11, rx364_pos, rx364_off
+    substr $S10, rx364_tgt, $I11, 1
+    ne $S10, "$", rx364_fail
+    add rx364_pos, 1
+    set_addr $I10, rxcap_372_fail
+    ($I12, $I11) = rx364_cur."!mark_peek"($I10)
+    rx364_cur."!cursor_pos"($I11)
+    ($P10) = rx364_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx364_pos, "")
+    rx364_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sigil")
+    goto rxcap_372_done
+  rxcap_372_fail:
+    goto rx364_fail
+  rxcap_372_done:
+  # rx subcapture "desigilname"
+    set_addr $I10, rxcap_373_fail
+    rx364_cur."!mark_push"(0, rx364_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx364_pos, rx364_eos, rx364_fail
+    sub $I10, rx364_pos, rx364_off
+    substr $S10, rx364_tgt, $I10, 1
+    index $I11, "/_!", $S10
+    lt $I11, 0, rx364_fail
+    inc rx364_pos
+    set_addr $I10, rxcap_373_fail
+    ($I12, $I11) = rx364_cur."!mark_peek"($I10)
+    rx364_cur."!cursor_pos"($I11)
+    ($P10) = rx364_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx364_pos, "")
+    rx364_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("desigilname")
+    goto rxcap_373_done
+  rxcap_373_fail:
+    goto rx364_fail
+  rxcap_373_done:
+  alt369_end:
+.annotate "line", 200
+  # rx pass
+    rx364_cur."!cursor_pass"(rx364_pos, "variable")
+    rx364_cur."!cursor_debug"("PASS  ", "variable", " at pos=", rx364_pos)
+    .return (rx364_cur)
+  rx364_fail:
+.annotate "line", 4
+    (rx364_rep, rx364_pos, $I10, $P10) = rx364_cur."!mark_fail"(0)
+    lt rx364_pos, -1, rx364_done
+    eq rx364_pos, -1, rx364_fail
+    jump $I10
+  rx364_done:
+    rx364_cur."!cursor_fail"()
+    rx364_cur."!cursor_debug"("FAIL  ", "variable")
+    .return (rx364_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__variable"  :subid("97_1258051419.23649") :method
+.annotate "line", 4
+    $P366 = self."!PREFIX__!subrule"("sigil", "")
+    $P367 = self."!PREFIX__!subrule"("sigil", "")
+    new $P368, "ResizablePMCArray"
+    push $P368, "$!"
+    push $P368, "$_"
+    push $P368, "$/"
+    push $P368, $P366
+    push $P368, $P367
+    .return ($P368)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "sigil"  :subid("98_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx375_tgt
+    .local int rx375_pos
+    .local int rx375_off
+    .local int rx375_eos
+    .local int rx375_rep
+    .local pmc rx375_cur
+    (rx375_cur, rx375_pos, rx375_tgt, $I10) = self."!cursor_start"()
+    rx375_cur."!cursor_debug"("START ", "sigil")
+    .lex unicode:"$\x{a2}", rx375_cur
+    .local pmc match
+    .lex "$/", match
+    length rx375_eos, rx375_tgt
+    set rx375_off, 0
+    lt $I10, 2, rx375_start
+    sub rx375_off, $I10, 1
+    substr rx375_tgt, rx375_tgt, rx375_off
+  rx375_start:
+.annotate "line", 206
+  # rx enumcharlist negate=0 
+    ge rx375_pos, rx375_eos, rx375_fail
+    sub $I10, rx375_pos, rx375_off
+    substr $S10, rx375_tgt, $I10, 1
+    index $I11, "$@%&", $S10
+    lt $I11, 0, rx375_fail
+    inc rx375_pos
+  # rx pass
+    rx375_cur."!cursor_pass"(rx375_pos, "sigil")
+    rx375_cur."!cursor_debug"("PASS  ", "sigil", " at pos=", rx375_pos)
+    .return (rx375_cur)
+  rx375_fail:
+.annotate "line", 4
+    (rx375_rep, rx375_pos, $I10, $P10) = rx375_cur."!mark_fail"(0)
+    lt rx375_pos, -1, rx375_done
+    eq rx375_pos, -1, rx375_fail
+    jump $I10
+  rx375_done:
+    rx375_cur."!cursor_fail"()
+    rx375_cur."!cursor_debug"("FAIL  ", "sigil")
+    .return (rx375_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__sigil"  :subid("99_1258051419.23649") :method
+.annotate "line", 4
+    new $P377, "ResizablePMCArray"
+    push $P377, "&"
+    push $P377, "%"
+    push $P377, "@"
+    push $P377, "$"
+    .return ($P377)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "twigil"  :subid("100_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx379_tgt
+    .local int rx379_pos
+    .local int rx379_off
+    .local int rx379_eos
+    .local int rx379_rep
+    .local pmc rx379_cur
+    (rx379_cur, rx379_pos, rx379_tgt, $I10) = self."!cursor_start"()
+    rx379_cur."!cursor_debug"("START ", "twigil")
+    .lex unicode:"$\x{a2}", rx379_cur
+    .local pmc match
+    .lex "$/", match
+    length rx379_eos, rx379_tgt
+    set rx379_off, 0
+    lt $I10, 2, rx379_start
+    sub rx379_off, $I10, 1
+    substr rx379_tgt, rx379_tgt, rx379_off
+  rx379_start:
+.annotate "line", 208
+  # rx enumcharlist negate=0 
+    ge rx379_pos, rx379_eos, rx379_fail
+    sub $I10, rx379_pos, rx379_off
+    substr $S10, rx379_tgt, $I10, 1
+    index $I11, "*!?", $S10
+    lt $I11, 0, rx379_fail
+    inc rx379_pos
+  # rx pass
+    rx379_cur."!cursor_pass"(rx379_pos, "twigil")
+    rx379_cur."!cursor_debug"("PASS  ", "twigil", " at pos=", rx379_pos)
+    .return (rx379_cur)
+  rx379_fail:
+.annotate "line", 4
+    (rx379_rep, rx379_pos, $I10, $P10) = rx379_cur."!mark_fail"(0)
+    lt rx379_pos, -1, rx379_done
+    eq rx379_pos, -1, rx379_fail
+    jump $I10
+  rx379_done:
+    rx379_cur."!cursor_fail"()
+    rx379_cur."!cursor_debug"("FAIL  ", "twigil")
+    .return (rx379_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__twigil"  :subid("101_1258051419.23649") :method
+.annotate "line", 4
+    new $P381, "ResizablePMCArray"
+    push $P381, "?"
+    push $P381, "!"
+    push $P381, "*"
+    .return ($P381)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "package_declarator"  :subid("102_1258051419.23649") :method
+.annotate "line", 210
+    $P383 = self."!protoregex"("package_declarator")
+    .return ($P383)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__package_declarator"  :subid("103_1258051419.23649") :method
+.annotate "line", 210
+    $P385 = self."!PREFIX__!protoregex"("package_declarator")
+    .return ($P385)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "package_declarator:sym<module>"  :subid("104_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx387_tgt
+    .local int rx387_pos
+    .local int rx387_off
+    .local int rx387_eos
+    .local int rx387_rep
+    .local pmc rx387_cur
+    (rx387_cur, rx387_pos, rx387_tgt, $I10) = self."!cursor_start"()
+    rx387_cur."!cursor_debug"("START ", "package_declarator:sym<module>")
+    .lex unicode:"$\x{a2}", rx387_cur
+    .local pmc match
+    .lex "$/", match
+    length rx387_eos, rx387_tgt
+    set rx387_off, 0
+    lt $I10, 2, rx387_start
+    sub rx387_off, $I10, 1
+    substr rx387_tgt, rx387_tgt, rx387_off
+  rx387_start:
+.annotate "line", 211
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_391_fail
+    rx387_cur."!mark_push"(0, rx387_pos, $I10)
+  # rx literal  "module"
+    add $I11, rx387_pos, 6
+    gt $I11, rx387_eos, rx387_fail
+    sub $I11, rx387_pos, rx387_off
+    substr $S10, rx387_tgt, $I11, 6
+    ne $S10, "module", rx387_fail
+    add rx387_pos, 6
+    set_addr $I10, rxcap_391_fail
+    ($I12, $I11) = rx387_cur."!mark_peek"($I10)
+    rx387_cur."!cursor_pos"($I11)
+    ($P10) = rx387_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx387_pos, "")
+    rx387_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_391_done
+  rxcap_391_fail:
+    goto rx387_fail
+  rxcap_391_done:
+  # rx subrule "package_def" subtype=capture negate=
+    rx387_cur."!cursor_pos"(rx387_pos)
+    $P10 = rx387_cur."package_def"()
+    unless $P10, rx387_fail
+    rx387_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("package_def")
+    rx387_pos = $P10."pos"()
+  # rx pass
+    rx387_cur."!cursor_pass"(rx387_pos, "package_declarator:sym<module>")
+    rx387_cur."!cursor_debug"("PASS  ", "package_declarator:sym<module>", " at pos=", rx387_pos)
+    .return (rx387_cur)
+  rx387_fail:
+.annotate "line", 4
+    (rx387_rep, rx387_pos, $I10, $P10) = rx387_cur."!mark_fail"(0)
+    lt rx387_pos, -1, rx387_done
+    eq rx387_pos, -1, rx387_fail
+    jump $I10
+  rx387_done:
+    rx387_cur."!cursor_fail"()
+    rx387_cur."!cursor_debug"("FAIL  ", "package_declarator:sym<module>")
+    .return (rx387_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("105_1258051419.23649") :method
+.annotate "line", 4
+    $P389 = self."!PREFIX__!subrule"("package_def", "module")
+    new $P390, "ResizablePMCArray"
+    push $P390, $P389
+    .return ($P390)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "package_declarator:sym<class>"  :subid("106_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx393_tgt
+    .local int rx393_pos
+    .local int rx393_off
+    .local int rx393_eos
+    .local int rx393_rep
+    .local pmc rx393_cur
+    (rx393_cur, rx393_pos, rx393_tgt, $I10) = self."!cursor_start"()
+    rx393_cur."!cursor_debug"("START ", "package_declarator:sym<class>")
+    .lex unicode:"$\x{a2}", rx393_cur
+    .local pmc match
+    .lex "$/", match
+    length rx393_eos, rx393_tgt
+    set rx393_off, 0
+    lt $I10, 2, rx393_start
+    sub rx393_off, $I10, 1
+    substr rx393_tgt, rx393_tgt, rx393_off
+  rx393_start:
+.annotate "line", 212
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_399_fail
+    rx393_cur."!mark_push"(0, rx393_pos, $I10)
+  alt398_0:
+    set_addr $I10, alt398_1
+    rx393_cur."!mark_push"(0, rx393_pos, $I10)
+  # rx literal  "class"
+    add $I11, rx393_pos, 5
+    gt $I11, rx393_eos, rx393_fail
+    sub $I11, rx393_pos, rx393_off
+    substr $S10, rx393_tgt, $I11, 5
+    ne $S10, "class", rx393_fail
+    add rx393_pos, 5
+    goto alt398_end
+  alt398_1:
+  # rx literal  "grammar"
+    add $I11, rx393_pos, 7
+    gt $I11, rx393_eos, rx393_fail
+    sub $I11, rx393_pos, rx393_off
+    substr $S10, rx393_tgt, $I11, 7
+    ne $S10, "grammar", rx393_fail
+    add rx393_pos, 7
+  alt398_end:
+    set_addr $I10, rxcap_399_fail
+    ($I12, $I11) = rx393_cur."!mark_peek"($I10)
+    rx393_cur."!cursor_pos"($I11)
+    ($P10) = rx393_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx393_pos, "")
+    rx393_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_399_done
+  rxcap_399_fail:
+    goto rx393_fail
+  rxcap_399_done:
+  # rx subrule "package_def" subtype=capture negate=
+    rx393_cur."!cursor_pos"(rx393_pos)
+    $P10 = rx393_cur."package_def"()
+    unless $P10, rx393_fail
+    rx393_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("package_def")
+    rx393_pos = $P10."pos"()
+  # rx pass
+    rx393_cur."!cursor_pass"(rx393_pos, "package_declarator:sym<class>")
+    rx393_cur."!cursor_debug"("PASS  ", "package_declarator:sym<class>", " at pos=", rx393_pos)
+    .return (rx393_cur)
+  rx393_fail:
+.annotate "line", 4
+    (rx393_rep, rx393_pos, $I10, $P10) = rx393_cur."!mark_fail"(0)
+    lt rx393_pos, -1, rx393_done
+    eq rx393_pos, -1, rx393_fail
+    jump $I10
+  rx393_done:
+    rx393_cur."!cursor_fail"()
+    rx393_cur."!cursor_debug"("FAIL  ", "package_declarator:sym<class>")
+    .return (rx393_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("107_1258051419.23649") :method
+.annotate "line", 4
+    $P395 = self."!PREFIX__!subrule"("package_def", "grammar")
+    $P396 = self."!PREFIX__!subrule"("package_def", "class")
+    new $P397, "ResizablePMCArray"
+    push $P397, $P395
+    push $P397, $P396
+    .return ($P397)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "package_def"  :subid("108_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx401_tgt
+    .local int rx401_pos
+    .local int rx401_off
+    .local int rx401_eos
+    .local int rx401_rep
+    .local pmc rx401_cur
+    (rx401_cur, rx401_pos, rx401_tgt, $I10) = self."!cursor_start"()
+    rx401_cur."!cursor_debug"("START ", "package_def")
+    rx401_cur."!cursor_caparray"("parent")
+    .lex unicode:"$\x{a2}", rx401_cur
+    .local pmc match
+    .lex "$/", match
+    length rx401_eos, rx401_tgt
+    set rx401_off, 0
+    lt $I10, 2, rx401_start
+    sub rx401_off, $I10, 1
+    substr rx401_tgt, rx401_tgt, rx401_off
+  rx401_start:
+.annotate "line", 214
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+.annotate "line", 215
+  # rx subrule "name" subtype=capture negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."name"()
+    unless $P10, rx401_fail
+    rx401_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("name")
+    rx401_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+.annotate "line", 216
+  # rx rxquantr406 ** 0..1
+    set_addr $I410, rxquantr406_done
+    rx401_cur."!mark_push"(0, rx401_pos, $I410)
+  rxquantr406_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx literal  "is"
+    add $I11, rx401_pos, 2
+    gt $I11, rx401_eos, rx401_fail
+    sub $I11, rx401_pos, rx401_off
+    substr $S10, rx401_tgt, $I11, 2
+    ne $S10, "is", rx401_fail
+    add rx401_pos, 2
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx subrule "name" subtype=capture negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."name"()
+    unless $P10, rx401_fail
+    rx401_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("parent")
+    rx401_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+    (rx401_rep) = rx401_cur."!mark_commit"($I410)
+  rxquantr406_done:
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  alt412_0:
+.annotate "line", 217
+    set_addr $I10, alt412_1
+    rx401_cur."!mark_push"(0, rx401_pos, $I10)
+.annotate "line", 218
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx literal  ";"
+    add $I11, rx401_pos, 1
+    gt $I11, rx401_eos, rx401_fail
+    sub $I11, rx401_pos, rx401_off
+    substr $S10, rx401_tgt, $I11, 1
+    ne $S10, ";", rx401_fail
+    add rx401_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx subrule "comp_unit" subtype=capture negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."comp_unit"()
+    unless $P10, rx401_fail
+    rx401_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("comp_unit")
+    rx401_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+    goto alt412_end
+  alt412_1:
+    set_addr $I10, alt412_2
+    rx401_cur."!mark_push"(0, rx401_pos, $I10)
+.annotate "line", 219
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx enumcharlist negate=0 zerowidth
+    ge rx401_pos, rx401_eos, rx401_fail
+    sub $I10, rx401_pos, rx401_off
+    substr $S10, rx401_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx401_fail
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx subrule "block" subtype=capture negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."block"()
+    unless $P10, rx401_fail
+    rx401_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("block")
+    rx401_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+    goto alt412_end
+  alt412_2:
+.annotate "line", 220
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx subrule "panic" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."panic"("Malformed package declaration")
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+  alt412_end:
+.annotate "line", 221
+  # rx subrule "ws" subtype=method negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."ws"()
+    unless $P10, rx401_fail
+    rx401_pos = $P10."pos"()
+.annotate "line", 214
+  # rx pass
+    rx401_cur."!cursor_pass"(rx401_pos, "package_def")
+    rx401_cur."!cursor_debug"("PASS  ", "package_def", " at pos=", rx401_pos)
+    .return (rx401_cur)
+  rx401_fail:
+.annotate "line", 4
+    (rx401_rep, rx401_pos, $I10, $P10) = rx401_cur."!mark_fail"(0)
+    lt rx401_pos, -1, rx401_done
+    eq rx401_pos, -1, rx401_fail
+    jump $I10
+  rx401_done:
+    rx401_cur."!cursor_fail"()
+    rx401_cur."!cursor_debug"("FAIL  ", "package_def")
+    .return (rx401_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__package_def"  :subid("109_1258051419.23649") :method
+.annotate "line", 4
+    new $P403, "ResizablePMCArray"
+    push $P403, ""
+    .return ($P403)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "scope_declarator"  :subid("110_1258051419.23649") :method
+.annotate "line", 224
+    $P423 = self."!protoregex"("scope_declarator")
+    .return ($P423)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__scope_declarator"  :subid("111_1258051419.23649") :method
+.annotate "line", 224
+    $P425 = self."!PREFIX__!protoregex"("scope_declarator")
+    .return ($P425)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "scope_declarator:sym<my>"  :subid("112_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx427_tgt
+    .local int rx427_pos
+    .local int rx427_off
+    .local int rx427_eos
+    .local int rx427_rep
+    .local pmc rx427_cur
+    (rx427_cur, rx427_pos, rx427_tgt, $I10) = self."!cursor_start"()
+    rx427_cur."!cursor_debug"("START ", "scope_declarator:sym<my>")
+    .lex unicode:"$\x{a2}", rx427_cur
+    .local pmc match
+    .lex "$/", match
+    length rx427_eos, rx427_tgt
+    set rx427_off, 0
+    lt $I10, 2, rx427_start
+    sub rx427_off, $I10, 1
+    substr rx427_tgt, rx427_tgt, rx427_off
+  rx427_start:
+.annotate "line", 225
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_431_fail
+    rx427_cur."!mark_push"(0, rx427_pos, $I10)
+  # rx literal  "my"
+    add $I11, rx427_pos, 2
+    gt $I11, rx427_eos, rx427_fail
+    sub $I11, rx427_pos, rx427_off
+    substr $S10, rx427_tgt, $I11, 2
+    ne $S10, "my", rx427_fail
+    add rx427_pos, 2
+    set_addr $I10, rxcap_431_fail
+    ($I12, $I11) = rx427_cur."!mark_peek"($I10)
+    rx427_cur."!cursor_pos"($I11)
+    ($P10) = rx427_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx427_pos, "")
+    rx427_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_431_done
+  rxcap_431_fail:
+    goto rx427_fail
+  rxcap_431_done:
+  # rx subrule "scoped" subtype=capture negate=
+    rx427_cur."!cursor_pos"(rx427_pos)
+    $P10 = rx427_cur."scoped"("my")
+    unless $P10, rx427_fail
+    rx427_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("scoped")
+    rx427_pos = $P10."pos"()
+  # rx pass
+    rx427_cur."!cursor_pass"(rx427_pos, "scope_declarator:sym<my>")
+    rx427_cur."!cursor_debug"("PASS  ", "scope_declarator:sym<my>", " at pos=", rx427_pos)
+    .return (rx427_cur)
+  rx427_fail:
+.annotate "line", 4
+    (rx427_rep, rx427_pos, $I10, $P10) = rx427_cur."!mark_fail"(0)
+    lt rx427_pos, -1, rx427_done
+    eq rx427_pos, -1, rx427_fail
+    jump $I10
+  rx427_done:
+    rx427_cur."!cursor_fail"()
+    rx427_cur."!cursor_debug"("FAIL  ", "scope_declarator:sym<my>")
+    .return (rx427_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("113_1258051419.23649") :method
+.annotate "line", 4
+    $P429 = self."!PREFIX__!subrule"("scoped", "my")
+    new $P430, "ResizablePMCArray"
+    push $P430, $P429
+    .return ($P430)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "scope_declarator:sym<our>"  :subid("114_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx433_tgt
+    .local int rx433_pos
+    .local int rx433_off
+    .local int rx433_eos
+    .local int rx433_rep
+    .local pmc rx433_cur
+    (rx433_cur, rx433_pos, rx433_tgt, $I10) = self."!cursor_start"()
+    rx433_cur."!cursor_debug"("START ", "scope_declarator:sym<our>")
+    .lex unicode:"$\x{a2}", rx433_cur
+    .local pmc match
+    .lex "$/", match
+    length rx433_eos, rx433_tgt
+    set rx433_off, 0
+    lt $I10, 2, rx433_start
+    sub rx433_off, $I10, 1
+    substr rx433_tgt, rx433_tgt, rx433_off
+  rx433_start:
+.annotate "line", 226
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_437_fail
+    rx433_cur."!mark_push"(0, rx433_pos, $I10)
+  # rx literal  "our"
+    add $I11, rx433_pos, 3
+    gt $I11, rx433_eos, rx433_fail
+    sub $I11, rx433_pos, rx433_off
+    substr $S10, rx433_tgt, $I11, 3
+    ne $S10, "our", rx433_fail
+    add rx433_pos, 3
+    set_addr $I10, rxcap_437_fail
+    ($I12, $I11) = rx433_cur."!mark_peek"($I10)
+    rx433_cur."!cursor_pos"($I11)
+    ($P10) = rx433_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx433_pos, "")
+    rx433_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_437_done
+  rxcap_437_fail:
+    goto rx433_fail
+  rxcap_437_done:
+  # rx subrule "scoped" subtype=capture negate=
+    rx433_cur."!cursor_pos"(rx433_pos)
+    $P10 = rx433_cur."scoped"("our")
+    unless $P10, rx433_fail
+    rx433_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("scoped")
+    rx433_pos = $P10."pos"()
+  # rx pass
+    rx433_cur."!cursor_pass"(rx433_pos, "scope_declarator:sym<our>")
+    rx433_cur."!cursor_debug"("PASS  ", "scope_declarator:sym<our>", " at pos=", rx433_pos)
+    .return (rx433_cur)
+  rx433_fail:
+.annotate "line", 4
+    (rx433_rep, rx433_pos, $I10, $P10) = rx433_cur."!mark_fail"(0)
+    lt rx433_pos, -1, rx433_done
+    eq rx433_pos, -1, rx433_fail
+    jump $I10
+  rx433_done:
+    rx433_cur."!cursor_fail"()
+    rx433_cur."!cursor_debug"("FAIL  ", "scope_declarator:sym<our>")
+    .return (rx433_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("115_1258051419.23649") :method
+.annotate "line", 4
+    $P435 = self."!PREFIX__!subrule"("scoped", "our")
+    new $P436, "ResizablePMCArray"
+    push $P436, $P435
+    .return ($P436)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "scope_declarator:sym<has>"  :subid("116_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx439_tgt
+    .local int rx439_pos
+    .local int rx439_off
+    .local int rx439_eos
+    .local int rx439_rep
+    .local pmc rx439_cur
+    (rx439_cur, rx439_pos, rx439_tgt, $I10) = self."!cursor_start"()
+    rx439_cur."!cursor_debug"("START ", "scope_declarator:sym<has>")
+    .lex unicode:"$\x{a2}", rx439_cur
+    .local pmc match
+    .lex "$/", match
+    length rx439_eos, rx439_tgt
+    set rx439_off, 0
+    lt $I10, 2, rx439_start
+    sub rx439_off, $I10, 1
+    substr rx439_tgt, rx439_tgt, rx439_off
+  rx439_start:
+.annotate "line", 227
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_443_fail
+    rx439_cur."!mark_push"(0, rx439_pos, $I10)
+  # rx literal  "has"
+    add $I11, rx439_pos, 3
+    gt $I11, rx439_eos, rx439_fail
+    sub $I11, rx439_pos, rx439_off
+    substr $S10, rx439_tgt, $I11, 3
+    ne $S10, "has", rx439_fail
+    add rx439_pos, 3
+    set_addr $I10, rxcap_443_fail
+    ($I12, $I11) = rx439_cur."!mark_peek"($I10)
+    rx439_cur."!cursor_pos"($I11)
+    ($P10) = rx439_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx439_pos, "")
+    rx439_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_443_done
+  rxcap_443_fail:
+    goto rx439_fail
+  rxcap_443_done:
+  # rx subrule "scoped" subtype=capture negate=
+    rx439_cur."!cursor_pos"(rx439_pos)
+    $P10 = rx439_cur."scoped"("has")
+    unless $P10, rx439_fail
+    rx439_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("scoped")
+    rx439_pos = $P10."pos"()
+  # rx pass
+    rx439_cur."!cursor_pass"(rx439_pos, "scope_declarator:sym<has>")
+    rx439_cur."!cursor_debug"("PASS  ", "scope_declarator:sym<has>", " at pos=", rx439_pos)
+    .return (rx439_cur)
+  rx439_fail:
+.annotate "line", 4
+    (rx439_rep, rx439_pos, $I10, $P10) = rx439_cur."!mark_fail"(0)
+    lt rx439_pos, -1, rx439_done
+    eq rx439_pos, -1, rx439_fail
+    jump $I10
+  rx439_done:
+    rx439_cur."!cursor_fail"()
+    rx439_cur."!cursor_debug"("FAIL  ", "scope_declarator:sym<has>")
+    .return (rx439_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("117_1258051419.23649") :method
+.annotate "line", 4
+    $P441 = self."!PREFIX__!subrule"("scoped", "has")
+    new $P442, "ResizablePMCArray"
+    push $P442, $P441
+    .return ($P442)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "scoped"  :subid("118_1258051419.23649") :method :outer("11_1258051419.23649")
+    .param pmc param_445
+.annotate "line", 229
+    .lex "$*SCOPE", param_445
+.annotate "line", 4
+    .local string rx446_tgt
+    .local int rx446_pos
+    .local int rx446_off
+    .local int rx446_eos
+    .local int rx446_rep
+    .local pmc rx446_cur
+    (rx446_cur, rx446_pos, rx446_tgt, $I10) = self."!cursor_start"()
+    rx446_cur."!cursor_debug"("START ", "scoped")
+    .lex unicode:"$\x{a2}", rx446_cur
+    .local pmc match
+    .lex "$/", match
+    length rx446_eos, rx446_tgt
+    set rx446_off, 0
+    lt $I10, 2, rx446_start
+    sub rx446_off, $I10, 1
+    substr rx446_tgt, rx446_tgt, rx446_off
+  rx446_start:
+  alt449_0:
+.annotate "line", 229
+    set_addr $I10, alt449_1
+    rx446_cur."!mark_push"(0, rx446_pos, $I10)
+.annotate "line", 230
+  # rx subrule "ws" subtype=method negate=
+    rx446_cur."!cursor_pos"(rx446_pos)
+    $P10 = rx446_cur."ws"()
+    unless $P10, rx446_fail
+    rx446_pos = $P10."pos"()
+  # rx subrule "variable_declarator" subtype=capture negate=
+    rx446_cur."!cursor_pos"(rx446_pos)
+    $P10 = rx446_cur."variable_declarator"()
+    unless $P10, rx446_fail
+    rx446_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("variable_declarator")
+    rx446_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx446_cur."!cursor_pos"(rx446_pos)
+    $P10 = rx446_cur."ws"()
+    unless $P10, rx446_fail
+    rx446_pos = $P10."pos"()
+    goto alt449_end
+  alt449_1:
+.annotate "line", 231
+  # rx subrule "ws" subtype=method negate=
+    rx446_cur."!cursor_pos"(rx446_pos)
+    $P10 = rx446_cur."ws"()
+    unless $P10, rx446_fail
+    rx446_pos = $P10."pos"()
+  # rx subrule "routine_declarator" subtype=capture negate=
+    rx446_cur."!cursor_pos"(rx446_pos)
+    $P10 = rx446_cur."routine_declarator"()
+    unless $P10, rx446_fail
+    rx446_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("routine_declarator")
+    rx446_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx446_cur."!cursor_pos"(rx446_pos)
+    $P10 = rx446_cur."ws"()
+    unless $P10, rx446_fail
+    rx446_pos = $P10."pos"()
+  alt449_end:
+.annotate "line", 229
+  # rx pass
+    rx446_cur."!cursor_pass"(rx446_pos, "scoped")
+    rx446_cur."!cursor_debug"("PASS  ", "scoped", " at pos=", rx446_pos)
+    .return (rx446_cur)
+  rx446_fail:
+.annotate "line", 4
+    (rx446_rep, rx446_pos, $I10, $P10) = rx446_cur."!mark_fail"(0)
+    lt rx446_pos, -1, rx446_done
+    eq rx446_pos, -1, rx446_fail
+    jump $I10
+  rx446_done:
+    rx446_cur."!cursor_fail"()
+    rx446_cur."!cursor_debug"("FAIL  ", "scoped")
+    .return (rx446_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__scoped"  :subid("119_1258051419.23649") :method
+.annotate "line", 4
+    new $P448, "ResizablePMCArray"
+    push $P448, ""
+    push $P448, ""
+    .return ($P448)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "variable_declarator"  :subid("120_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx455_tgt
+    .local int rx455_pos
+    .local int rx455_off
+    .local int rx455_eos
+    .local int rx455_rep
+    .local pmc rx455_cur
+    (rx455_cur, rx455_pos, rx455_tgt, $I10) = self."!cursor_start"()
+    rx455_cur."!cursor_debug"("START ", "variable_declarator")
+    .lex unicode:"$\x{a2}", rx455_cur
+    .local pmc match
+    .lex "$/", match
+    length rx455_eos, rx455_tgt
+    set rx455_off, 0
+    lt $I10, 2, rx455_start
+    sub rx455_off, $I10, 1
+    substr rx455_tgt, rx455_tgt, rx455_off
+  rx455_start:
+.annotate "line", 234
+  # rx subrule "variable" subtype=capture negate=
+    rx455_cur."!cursor_pos"(rx455_pos)
+    $P10 = rx455_cur."variable"()
+    unless $P10, rx455_fail
+    rx455_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("variable")
+    rx455_pos = $P10."pos"()
+  # rx pass
+    rx455_cur."!cursor_pass"(rx455_pos, "variable_declarator")
+    rx455_cur."!cursor_debug"("PASS  ", "variable_declarator", " at pos=", rx455_pos)
+    .return (rx455_cur)
+  rx455_fail:
+.annotate "line", 4
+    (rx455_rep, rx455_pos, $I10, $P10) = rx455_cur."!mark_fail"(0)
+    lt rx455_pos, -1, rx455_done
+    eq rx455_pos, -1, rx455_fail
+    jump $I10
+  rx455_done:
+    rx455_cur."!cursor_fail"()
+    rx455_cur."!cursor_debug"("FAIL  ", "variable_declarator")
+    .return (rx455_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__variable_declarator"  :subid("121_1258051419.23649") :method
+.annotate "line", 4
+    $P457 = self."!PREFIX__!subrule"("variable", "")
+    new $P458, "ResizablePMCArray"
+    push $P458, $P457
+    .return ($P458)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "routine_declarator"  :subid("122_1258051419.23649") :method
+.annotate "line", 236
+    $P460 = self."!protoregex"("routine_declarator")
+    .return ($P460)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__routine_declarator"  :subid("123_1258051419.23649") :method
+.annotate "line", 236
+    $P462 = self."!PREFIX__!protoregex"("routine_declarator")
+    .return ($P462)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "routine_declarator:sym<sub>"  :subid("124_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx464_tgt
+    .local int rx464_pos
+    .local int rx464_off
+    .local int rx464_eos
+    .local int rx464_rep
+    .local pmc rx464_cur
+    (rx464_cur, rx464_pos, rx464_tgt, $I10) = self."!cursor_start"()
+    rx464_cur."!cursor_debug"("START ", "routine_declarator:sym<sub>")
+    .lex unicode:"$\x{a2}", rx464_cur
+    .local pmc match
+    .lex "$/", match
+    length rx464_eos, rx464_tgt
+    set rx464_off, 0
+    lt $I10, 2, rx464_start
+    sub rx464_off, $I10, 1
+    substr rx464_tgt, rx464_tgt, rx464_off
+  rx464_start:
+.annotate "line", 237
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_468_fail
+    rx464_cur."!mark_push"(0, rx464_pos, $I10)
+  # rx literal  "sub"
+    add $I11, rx464_pos, 3
+    gt $I11, rx464_eos, rx464_fail
+    sub $I11, rx464_pos, rx464_off
+    substr $S10, rx464_tgt, $I11, 3
+    ne $S10, "sub", rx464_fail
+    add rx464_pos, 3
+    set_addr $I10, rxcap_468_fail
+    ($I12, $I11) = rx464_cur."!mark_peek"($I10)
+    rx464_cur."!cursor_pos"($I11)
+    ($P10) = rx464_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx464_pos, "")
+    rx464_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_468_done
+  rxcap_468_fail:
+    goto rx464_fail
+  rxcap_468_done:
+  # rx subrule "routine_def" subtype=capture negate=
+    rx464_cur."!cursor_pos"(rx464_pos)
+    $P10 = rx464_cur."routine_def"()
+    unless $P10, rx464_fail
+    rx464_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("routine_def")
+    rx464_pos = $P10."pos"()
+  # rx pass
+    rx464_cur."!cursor_pass"(rx464_pos, "routine_declarator:sym<sub>")
+    rx464_cur."!cursor_debug"("PASS  ", "routine_declarator:sym<sub>", " at pos=", rx464_pos)
+    .return (rx464_cur)
+  rx464_fail:
+.annotate "line", 4
+    (rx464_rep, rx464_pos, $I10, $P10) = rx464_cur."!mark_fail"(0)
+    lt rx464_pos, -1, rx464_done
+    eq rx464_pos, -1, rx464_fail
+    jump $I10
+  rx464_done:
+    rx464_cur."!cursor_fail"()
+    rx464_cur."!cursor_debug"("FAIL  ", "routine_declarator:sym<sub>")
+    .return (rx464_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("125_1258051419.23649") :method
+.annotate "line", 4
+    $P466 = self."!PREFIX__!subrule"("routine_def", "sub")
+    new $P467, "ResizablePMCArray"
+    push $P467, $P466
+    .return ($P467)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "routine_declarator:sym<method>"  :subid("126_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx470_tgt
+    .local int rx470_pos
+    .local int rx470_off
+    .local int rx470_eos
+    .local int rx470_rep
+    .local pmc rx470_cur
+    (rx470_cur, rx470_pos, rx470_tgt, $I10) = self."!cursor_start"()
+    rx470_cur."!cursor_debug"("START ", "routine_declarator:sym<method>")
+    .lex unicode:"$\x{a2}", rx470_cur
+    .local pmc match
+    .lex "$/", match
+    length rx470_eos, rx470_tgt
+    set rx470_off, 0
+    lt $I10, 2, rx470_start
+    sub rx470_off, $I10, 1
+    substr rx470_tgt, rx470_tgt, rx470_off
+  rx470_start:
+.annotate "line", 238
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_474_fail
+    rx470_cur."!mark_push"(0, rx470_pos, $I10)
+  # rx literal  "method"
+    add $I11, rx470_pos, 6
+    gt $I11, rx470_eos, rx470_fail
+    sub $I11, rx470_pos, rx470_off
+    substr $S10, rx470_tgt, $I11, 6
+    ne $S10, "method", rx470_fail
+    add rx470_pos, 6
+    set_addr $I10, rxcap_474_fail
+    ($I12, $I11) = rx470_cur."!mark_peek"($I10)
+    rx470_cur."!cursor_pos"($I11)
+    ($P10) = rx470_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx470_pos, "")
+    rx470_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_474_done
+  rxcap_474_fail:
+    goto rx470_fail
+  rxcap_474_done:
+  # rx subrule "method_def" subtype=capture negate=
+    rx470_cur."!cursor_pos"(rx470_pos)
+    $P10 = rx470_cur."method_def"()
+    unless $P10, rx470_fail
+    rx470_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("method_def")
+    rx470_pos = $P10."pos"()
+  # rx pass
+    rx470_cur."!cursor_pass"(rx470_pos, "routine_declarator:sym<method>")
+    rx470_cur."!cursor_debug"("PASS  ", "routine_declarator:sym<method>", " at pos=", rx470_pos)
+    .return (rx470_cur)
+  rx470_fail:
+.annotate "line", 4
+    (rx470_rep, rx470_pos, $I10, $P10) = rx470_cur."!mark_fail"(0)
+    lt rx470_pos, -1, rx470_done
+    eq rx470_pos, -1, rx470_fail
+    jump $I10
+  rx470_done:
+    rx470_cur."!cursor_fail"()
+    rx470_cur."!cursor_debug"("FAIL  ", "routine_declarator:sym<method>")
+    .return (rx470_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("127_1258051419.23649") :method
+.annotate "line", 4
+    $P472 = self."!PREFIX__!subrule"("method_def", "method")
+    new $P473, "ResizablePMCArray"
+    push $P473, $P472
+    .return ($P473)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "routine_def"  :subid("128_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx476_tgt
+    .local int rx476_pos
+    .local int rx476_off
+    .local int rx476_eos
+    .local int rx476_rep
+    .local pmc rx476_cur
+    (rx476_cur, rx476_pos, rx476_tgt, $I10) = self."!cursor_start"()
+    rx476_cur."!cursor_debug"("START ", "routine_def")
+    rx476_cur."!cursor_caparray"("deflongname")
+    .lex unicode:"$\x{a2}", rx476_cur
+    .local pmc match
+    .lex "$/", match
+    length rx476_eos, rx476_tgt
+    set rx476_off, 0
+    lt $I10, 2, rx476_start
+    sub rx476_off, $I10, 1
+    substr rx476_tgt, rx476_tgt, rx476_off
+  rx476_start:
+.annotate "line", 240
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+.annotate "line", 241
+  # rx rxquantr480 ** 0..1
+    set_addr $I481, rxquantr480_done
+    rx476_cur."!mark_push"(0, rx476_pos, $I481)
+  rxquantr480_loop:
+  # rx subrule "deflongname" subtype=capture negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."deflongname"()
+    unless $P10, rx476_fail
+    rx476_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("deflongname")
+    rx476_pos = $P10."pos"()
+    (rx476_rep) = rx476_cur."!mark_commit"($I481)
+  rxquantr480_done:
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+.annotate "line", 242
+  # rx subrule "newpad" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."newpad"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  alt484_0:
+.annotate "line", 243
+    set_addr $I10, alt484_1
+    rx476_cur."!mark_push"(0, rx476_pos, $I10)
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  # rx literal  "("
+    add $I11, rx476_pos, 1
+    gt $I11, rx476_eos, rx476_fail
+    sub $I11, rx476_pos, rx476_off
+    substr $S10, rx476_tgt, $I11, 1
+    ne $S10, "(", rx476_fail
+    add rx476_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  # rx subrule "signature" subtype=capture negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."signature"()
+    unless $P10, rx476_fail
+    rx476_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("signature")
+    rx476_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx476_pos, 1
+    gt $I11, rx476_eos, rx476_fail
+    sub $I11, rx476_pos, rx476_off
+    substr $S10, rx476_tgt, $I11, 1
+    ne $S10, ")", rx476_fail
+    add rx476_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+    goto alt484_end
+  alt484_1:
+.annotate "line", 244
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  # rx subrule "panic" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."panic"("Routine declaration requires a signature")
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+  alt484_end:
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+.annotate "line", 245
+  # rx subrule "blockoid" subtype=capture negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."blockoid"()
+    unless $P10, rx476_fail
+    rx476_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("blockoid")
+    rx476_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx476_cur."!cursor_pos"(rx476_pos)
+    $P10 = rx476_cur."ws"()
+    unless $P10, rx476_fail
+    rx476_pos = $P10."pos"()
+.annotate "line", 240
+  # rx pass
+    rx476_cur."!cursor_pass"(rx476_pos, "routine_def")
+    rx476_cur."!cursor_debug"("PASS  ", "routine_def", " at pos=", rx476_pos)
+    .return (rx476_cur)
+  rx476_fail:
+.annotate "line", 4
+    (rx476_rep, rx476_pos, $I10, $P10) = rx476_cur."!mark_fail"(0)
+    lt rx476_pos, -1, rx476_done
+    eq rx476_pos, -1, rx476_fail
+    jump $I10
+  rx476_done:
+    rx476_cur."!cursor_fail"()
+    rx476_cur."!cursor_debug"("FAIL  ", "routine_def")
+    .return (rx476_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__routine_def"  :subid("129_1258051419.23649") :method
+.annotate "line", 4
+    new $P478, "ResizablePMCArray"
+    push $P478, ""
+    .return ($P478)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "method_def"  :subid("130_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx494_tgt
+    .local int rx494_pos
+    .local int rx494_off
+    .local int rx494_eos
+    .local int rx494_rep
+    .local pmc rx494_cur
+    (rx494_cur, rx494_pos, rx494_tgt, $I10) = self."!cursor_start"()
+    rx494_cur."!cursor_debug"("START ", "method_def")
+    rx494_cur."!cursor_caparray"("deflongname")
+    .lex unicode:"$\x{a2}", rx494_cur
+    .local pmc match
+    .lex "$/", match
+    length rx494_eos, rx494_tgt
+    set rx494_off, 0
+    lt $I10, 2, rx494_start
+    sub rx494_off, $I10, 1
+    substr rx494_tgt, rx494_tgt, rx494_off
+  rx494_start:
+.annotate "line", 248
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+.annotate "line", 249
+  # rx rxquantr498 ** 0..1
+    set_addr $I499, rxquantr498_done
+    rx494_cur."!mark_push"(0, rx494_pos, $I499)
+  rxquantr498_loop:
+  # rx subrule "deflongname" subtype=capture negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."deflongname"()
+    unless $P10, rx494_fail
+    rx494_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("deflongname")
+    rx494_pos = $P10."pos"()
+    (rx494_rep) = rx494_cur."!mark_commit"($I499)
+  rxquantr498_done:
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+.annotate "line", 250
+  # rx subrule "newpad" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."newpad"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  alt502_0:
+.annotate "line", 251
+    set_addr $I10, alt502_1
+    rx494_cur."!mark_push"(0, rx494_pos, $I10)
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  # rx literal  "("
+    add $I11, rx494_pos, 1
+    gt $I11, rx494_eos, rx494_fail
+    sub $I11, rx494_pos, rx494_off
+    substr $S10, rx494_tgt, $I11, 1
+    ne $S10, "(", rx494_fail
+    add rx494_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  # rx subrule "signature" subtype=capture negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."signature"()
+    unless $P10, rx494_fail
+    rx494_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("signature")
+    rx494_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx494_pos, 1
+    gt $I11, rx494_eos, rx494_fail
+    sub $I11, rx494_pos, rx494_off
+    substr $S10, rx494_tgt, $I11, 1
+    ne $S10, ")", rx494_fail
+    add rx494_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+    goto alt502_end
+  alt502_1:
+.annotate "line", 252
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  # rx subrule "panic" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."panic"("Routine declaration requires a signature")
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+  alt502_end:
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+.annotate "line", 253
+  # rx subrule "blockoid" subtype=capture negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."blockoid"()
+    unless $P10, rx494_fail
+    rx494_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("blockoid")
+    rx494_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx494_cur."!cursor_pos"(rx494_pos)
+    $P10 = rx494_cur."ws"()
+    unless $P10, rx494_fail
+    rx494_pos = $P10."pos"()
+.annotate "line", 248
+  # rx pass
+    rx494_cur."!cursor_pass"(rx494_pos, "method_def")
+    rx494_cur."!cursor_debug"("PASS  ", "method_def", " at pos=", rx494_pos)
+    .return (rx494_cur)
+  rx494_fail:
+.annotate "line", 4
+    (rx494_rep, rx494_pos, $I10, $P10) = rx494_cur."!mark_fail"(0)
+    lt rx494_pos, -1, rx494_done
+    eq rx494_pos, -1, rx494_fail
+    jump $I10
+  rx494_done:
+    rx494_cur."!cursor_fail"()
+    rx494_cur."!cursor_debug"("FAIL  ", "method_def")
+    .return (rx494_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__method_def"  :subid("131_1258051419.23649") :method
+.annotate "line", 4
+    new $P496, "ResizablePMCArray"
+    push $P496, ""
+    .return ($P496)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "signature"  :subid("132_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx512_tgt
+    .local int rx512_pos
+    .local int rx512_off
+    .local int rx512_eos
+    .local int rx512_rep
+    .local pmc rx512_cur
+    (rx512_cur, rx512_pos, rx512_tgt, $I10) = self."!cursor_start"()
+    rx512_cur."!cursor_debug"("START ", "signature")
+    rx512_cur."!cursor_caparray"("parameter")
+    .lex unicode:"$\x{a2}", rx512_cur
+    .local pmc match
+    .lex "$/", match
+    length rx512_eos, rx512_tgt
+    set rx512_off, 0
+    lt $I10, 2, rx512_start
+    sub rx512_off, $I10, 1
+    substr rx512_tgt, rx512_tgt, rx512_off
+  rx512_start:
+.annotate "line", 256
+  # rx rxquantr515 ** 0..1
+    set_addr $I518, rxquantr515_done
+    rx512_cur."!mark_push"(0, rx512_pos, $I518)
+  rxquantr515_loop:
+  # rx rxquantr516 ** 1..*
+    set_addr $I517, rxquantr516_done
+    rx512_cur."!mark_push"(0, -1, $I517)
+  rxquantr516_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx512_cur."!cursor_pos"(rx512_pos)
+    $P10 = rx512_cur."ws"()
+    unless $P10, rx512_fail
+    rx512_pos = $P10."pos"()
+  # rx subrule "parameter" subtype=capture negate=
+    rx512_cur."!cursor_pos"(rx512_pos)
+    $P10 = rx512_cur."parameter"()
+    unless $P10, rx512_fail
+    rx512_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("parameter")
+    rx512_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx512_cur."!cursor_pos"(rx512_pos)
+    $P10 = rx512_cur."ws"()
+    unless $P10, rx512_fail
+    rx512_pos = $P10."pos"()
+    (rx512_rep) = rx512_cur."!mark_commit"($I517)
+    rx512_cur."!mark_push"(rx512_rep, rx512_pos, $I517)
+  # rx literal  ","
+    add $I11, rx512_pos, 1
+    gt $I11, rx512_eos, rx512_fail
+    sub $I11, rx512_pos, rx512_off
+    substr $S10, rx512_tgt, $I11, 1
+    ne $S10, ",", rx512_fail
+    add rx512_pos, 1
+    goto rxquantr516_loop
+  rxquantr516_done:
+    (rx512_rep) = rx512_cur."!mark_commit"($I518)
+  rxquantr515_done:
+  # rx pass
+    rx512_cur."!cursor_pass"(rx512_pos, "signature")
+    rx512_cur."!cursor_debug"("PASS  ", "signature", " at pos=", rx512_pos)
+    .return (rx512_cur)
+  rx512_fail:
+.annotate "line", 4
+    (rx512_rep, rx512_pos, $I10, $P10) = rx512_cur."!mark_fail"(0)
+    lt rx512_pos, -1, rx512_done
+    eq rx512_pos, -1, rx512_fail
+    jump $I10
+  rx512_done:
+    rx512_cur."!cursor_fail"()
+    rx512_cur."!cursor_debug"("FAIL  ", "signature")
+    .return (rx512_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__signature"  :subid("133_1258051419.23649") :method
+.annotate "line", 4
+    new $P514, "ResizablePMCArray"
+    push $P514, ""
+    .return ($P514)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "parameter"  :subid("134_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx520_tgt
+    .local int rx520_pos
+    .local int rx520_off
+    .local int rx520_eos
+    .local int rx520_rep
+    .local pmc rx520_cur
+    (rx520_cur, rx520_pos, rx520_tgt, $I10) = self."!cursor_start"()
+    rx520_cur."!cursor_debug"("START ", "parameter")
+    rx520_cur."!cursor_caparray"("default_value")
+    .lex unicode:"$\x{a2}", rx520_cur
+    .local pmc match
+    .lex "$/", match
+    length rx520_eos, rx520_tgt
+    set rx520_off, 0
+    lt $I10, 2, rx520_start
+    sub rx520_off, $I10, 1
+    substr rx520_tgt, rx520_tgt, rx520_off
+  rx520_start:
+  alt526_0:
+.annotate "line", 259
+    set_addr $I10, alt526_1
+    rx520_cur."!mark_push"(0, rx520_pos, $I10)
+.annotate "line", 260
+  # rx subcapture "quant"
+    set_addr $I10, rxcap_527_fail
+    rx520_cur."!mark_push"(0, rx520_pos, $I10)
+  # rx literal  "*"
+    add $I11, rx520_pos, 1
+    gt $I11, rx520_eos, rx520_fail
+    sub $I11, rx520_pos, rx520_off
+    substr $S10, rx520_tgt, $I11, 1
+    ne $S10, "*", rx520_fail
+    add rx520_pos, 1
+    set_addr $I10, rxcap_527_fail
+    ($I12, $I11) = rx520_cur."!mark_peek"($I10)
+    rx520_cur."!cursor_pos"($I11)
+    ($P10) = rx520_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx520_pos, "")
+    rx520_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quant")
+    goto rxcap_527_done
+  rxcap_527_fail:
+    goto rx520_fail
+  rxcap_527_done:
+  # rx subrule "param_var" subtype=capture negate=
+    rx520_cur."!cursor_pos"(rx520_pos)
+    $P10 = rx520_cur."param_var"()
+    unless $P10, rx520_fail
+    rx520_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("param_var")
+    rx520_pos = $P10."pos"()
+    goto alt526_end
+  alt526_1:
+  alt528_0:
+.annotate "line", 261
+    set_addr $I10, alt528_1
+    rx520_cur."!mark_push"(0, rx520_pos, $I10)
+  # rx subrule "param_var" subtype=capture negate=
+    rx520_cur."!cursor_pos"(rx520_pos)
+    $P10 = rx520_cur."param_var"()
+    unless $P10, rx520_fail
+    rx520_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("param_var")
+    rx520_pos = $P10."pos"()
+    goto alt528_end
+  alt528_1:
+  # rx subrule "named_param" subtype=capture negate=
+    rx520_cur."!cursor_pos"(rx520_pos)
+    $P10 = rx520_cur."named_param"()
+    unless $P10, rx520_fail
+    rx520_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("named_param")
+    rx520_pos = $P10."pos"()
+  alt528_end:
+  # rx subcapture "quant"
+    set_addr $I10, rxcap_530_fail
+    rx520_cur."!mark_push"(0, rx520_pos, $I10)
+  alt529_0:
+    set_addr $I10, alt529_1
+    rx520_cur."!mark_push"(0, rx520_pos, $I10)
+  # rx literal  "?"
+    add $I11, rx520_pos, 1
+    gt $I11, rx520_eos, rx520_fail
+    sub $I11, rx520_pos, rx520_off
+    substr $S10, rx520_tgt, $I11, 1
+    ne $S10, "?", rx520_fail
+    add rx520_pos, 1
+    goto alt529_end
+  alt529_1:
+    set_addr $I10, alt529_2
+    rx520_cur."!mark_push"(0, rx520_pos, $I10)
+  # rx literal  "!"
+    add $I11, rx520_pos, 1
+    gt $I11, rx520_eos, rx520_fail
+    sub $I11, rx520_pos, rx520_off
+    substr $S10, rx520_tgt, $I11, 1
+    ne $S10, "!", rx520_fail
+    add rx520_pos, 1
+    goto alt529_end
+  alt529_2:
+  alt529_end:
+    set_addr $I10, rxcap_530_fail
+    ($I12, $I11) = rx520_cur."!mark_peek"($I10)
+    rx520_cur."!cursor_pos"($I11)
+    ($P10) = rx520_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx520_pos, "")
+    rx520_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quant")
+    goto rxcap_530_done
+  rxcap_530_fail:
+    goto rx520_fail
+  rxcap_530_done:
+  alt526_end:
+.annotate "line", 263
+  # rx rxquantr531 ** 0..1
+    set_addr $I532, rxquantr531_done
+    rx520_cur."!mark_push"(0, rx520_pos, $I532)
+  rxquantr531_loop:
+  # rx subrule "default_value" subtype=capture negate=
+    rx520_cur."!cursor_pos"(rx520_pos)
+    $P10 = rx520_cur."default_value"()
+    unless $P10, rx520_fail
+    rx520_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("default_value")
+    rx520_pos = $P10."pos"()
+    (rx520_rep) = rx520_cur."!mark_commit"($I532)
+  rxquantr531_done:
+.annotate "line", 258
+  # rx pass
+    rx520_cur."!cursor_pass"(rx520_pos, "parameter")
+    rx520_cur."!cursor_debug"("PASS  ", "parameter", " at pos=", rx520_pos)
+    .return (rx520_cur)
+  rx520_fail:
+.annotate "line", 4
+    (rx520_rep, rx520_pos, $I10, $P10) = rx520_cur."!mark_fail"(0)
+    lt rx520_pos, -1, rx520_done
+    eq rx520_pos, -1, rx520_fail
+    jump $I10
+  rx520_done:
+    rx520_cur."!cursor_fail"()
+    rx520_cur."!cursor_debug"("FAIL  ", "parameter")
+    .return (rx520_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__parameter"  :subid("135_1258051419.23649") :method
+.annotate "line", 4
+    $P522 = self."!PREFIX__!subrule"("named_param", "")
+    $P523 = self."!PREFIX__!subrule"("param_var", "")
+    $P524 = self."!PREFIX__!subrule"("param_var", "*")
+    new $P525, "ResizablePMCArray"
+    push $P525, $P522
+    push $P525, $P523
+    push $P525, $P524
+    .return ($P525)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "param_var"  :subid("136_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx534_tgt
+    .local int rx534_pos
+    .local int rx534_off
+    .local int rx534_eos
+    .local int rx534_rep
+    .local pmc rx534_cur
+    (rx534_cur, rx534_pos, rx534_tgt, $I10) = self."!cursor_start"()
+    rx534_cur."!cursor_debug"("START ", "param_var")
+    rx534_cur."!cursor_caparray"("twigil")
+    .lex unicode:"$\x{a2}", rx534_cur
+    .local pmc match
+    .lex "$/", match
+    length rx534_eos, rx534_tgt
+    set rx534_off, 0
+    lt $I10, 2, rx534_start
+    sub rx534_off, $I10, 1
+    substr rx534_tgt, rx534_tgt, rx534_off
+  rx534_start:
+.annotate "line", 267
+  # rx subrule "sigil" subtype=capture negate=
+    rx534_cur."!cursor_pos"(rx534_pos)
+    $P10 = rx534_cur."sigil"()
+    unless $P10, rx534_fail
+    rx534_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sigil")
+    rx534_pos = $P10."pos"()
+  # rx rxquantr538 ** 0..1
+    set_addr $I539, rxquantr538_done
+    rx534_cur."!mark_push"(0, rx534_pos, $I539)
+  rxquantr538_loop:
+  # rx subrule "twigil" subtype=capture negate=
+    rx534_cur."!cursor_pos"(rx534_pos)
+    $P10 = rx534_cur."twigil"()
+    unless $P10, rx534_fail
+    rx534_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("twigil")
+    rx534_pos = $P10."pos"()
+    (rx534_rep) = rx534_cur."!mark_commit"($I539)
+  rxquantr538_done:
+  alt540_0:
+.annotate "line", 268
+    set_addr $I10, alt540_1
+    rx534_cur."!mark_push"(0, rx534_pos, $I10)
+  # rx subrule "ident" subtype=capture negate=
+    rx534_cur."!cursor_pos"(rx534_pos)
+    $P10 = rx534_cur."ident"()
+    unless $P10, rx534_fail
+    rx534_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("name")
+    rx534_pos = $P10."pos"()
+    goto alt540_end
+  alt540_1:
+  # rx subcapture "name"
+    set_addr $I10, rxcap_541_fail
+    rx534_cur."!mark_push"(0, rx534_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx534_pos, rx534_eos, rx534_fail
+    sub $I10, rx534_pos, rx534_off
+    substr $S10, rx534_tgt, $I10, 1
+    index $I11, "/!", $S10
+    lt $I11, 0, rx534_fail
+    inc rx534_pos
+    set_addr $I10, rxcap_541_fail
+    ($I12, $I11) = rx534_cur."!mark_peek"($I10)
+    rx534_cur."!cursor_pos"($I11)
+    ($P10) = rx534_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx534_pos, "")
+    rx534_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("name")
+    goto rxcap_541_done
+  rxcap_541_fail:
+    goto rx534_fail
+  rxcap_541_done:
+  alt540_end:
+.annotate "line", 266
+  # rx pass
+    rx534_cur."!cursor_pass"(rx534_pos, "param_var")
+    rx534_cur."!cursor_debug"("PASS  ", "param_var", " at pos=", rx534_pos)
+    .return (rx534_cur)
+  rx534_fail:
+.annotate "line", 4
+    (rx534_rep, rx534_pos, $I10, $P10) = rx534_cur."!mark_fail"(0)
+    lt rx534_pos, -1, rx534_done
+    eq rx534_pos, -1, rx534_fail
+    jump $I10
+  rx534_done:
+    rx534_cur."!cursor_fail"()
+    rx534_cur."!cursor_debug"("FAIL  ", "param_var")
+    .return (rx534_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__param_var"  :subid("137_1258051419.23649") :method
+.annotate "line", 4
+    $P536 = self."!PREFIX__!subrule"("sigil", "")
+    new $P537, "ResizablePMCArray"
+    push $P537, $P536
+    .return ($P537)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "named_param"  :subid("138_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx543_tgt
+    .local int rx543_pos
+    .local int rx543_off
+    .local int rx543_eos
+    .local int rx543_rep
+    .local pmc rx543_cur
+    (rx543_cur, rx543_pos, rx543_tgt, $I10) = self."!cursor_start"()
+    rx543_cur."!cursor_debug"("START ", "named_param")
+    .lex unicode:"$\x{a2}", rx543_cur
+    .local pmc match
+    .lex "$/", match
+    length rx543_eos, rx543_tgt
+    set rx543_off, 0
+    lt $I10, 2, rx543_start
+    sub rx543_off, $I10, 1
+    substr rx543_tgt, rx543_tgt, rx543_off
+  rx543_start:
+.annotate "line", 272
+  # rx literal  ":"
+    add $I11, rx543_pos, 1
+    gt $I11, rx543_eos, rx543_fail
+    sub $I11, rx543_pos, rx543_off
+    substr $S10, rx543_tgt, $I11, 1
+    ne $S10, ":", rx543_fail
+    add rx543_pos, 1
+  # rx subrule "param_var" subtype=capture negate=
+    rx543_cur."!cursor_pos"(rx543_pos)
+    $P10 = rx543_cur."param_var"()
+    unless $P10, rx543_fail
+    rx543_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("param_var")
+    rx543_pos = $P10."pos"()
+.annotate "line", 271
+  # rx pass
+    rx543_cur."!cursor_pass"(rx543_pos, "named_param")
+    rx543_cur."!cursor_debug"("PASS  ", "named_param", " at pos=", rx543_pos)
+    .return (rx543_cur)
+  rx543_fail:
+.annotate "line", 4
+    (rx543_rep, rx543_pos, $I10, $P10) = rx543_cur."!mark_fail"(0)
+    lt rx543_pos, -1, rx543_done
+    eq rx543_pos, -1, rx543_fail
+    jump $I10
+  rx543_done:
+    rx543_cur."!cursor_fail"()
+    rx543_cur."!cursor_debug"("FAIL  ", "named_param")
+    .return (rx543_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__named_param"  :subid("139_1258051419.23649") :method
+.annotate "line", 4
+    $P545 = self."!PREFIX__!subrule"("param_var", ":")
+    new $P546, "ResizablePMCArray"
+    push $P546, $P545
+    .return ($P546)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "default_value"  :subid("140_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx548_tgt
+    .local int rx548_pos
+    .local int rx548_off
+    .local int rx548_eos
+    .local int rx548_rep
+    .local pmc rx548_cur
+    (rx548_cur, rx548_pos, rx548_tgt, $I10) = self."!cursor_start"()
+    rx548_cur."!cursor_debug"("START ", "default_value")
+    .lex unicode:"$\x{a2}", rx548_cur
+    .local pmc match
+    .lex "$/", match
+    length rx548_eos, rx548_tgt
+    set rx548_off, 0
+    lt $I10, 2, rx548_start
+    sub rx548_off, $I10, 1
+    substr rx548_tgt, rx548_tgt, rx548_off
+  rx548_start:
+.annotate "line", 275
+  # rx subrule "ws" subtype=method negate=
+    rx548_cur."!cursor_pos"(rx548_pos)
+    $P10 = rx548_cur."ws"()
+    unless $P10, rx548_fail
+    rx548_pos = $P10."pos"()
+  # rx literal  "="
+    add $I11, rx548_pos, 1
+    gt $I11, rx548_eos, rx548_fail
+    sub $I11, rx548_pos, rx548_off
+    substr $S10, rx548_tgt, $I11, 1
+    ne $S10, "=", rx548_fail
+    add rx548_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx548_cur."!cursor_pos"(rx548_pos)
+    $P10 = rx548_cur."ws"()
+    unless $P10, rx548_fail
+    rx548_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx548_cur."!cursor_pos"(rx548_pos)
+    $P10 = rx548_cur."EXPR"("i=")
+    unless $P10, rx548_fail
+    rx548_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx548_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx548_cur."!cursor_pos"(rx548_pos)
+    $P10 = rx548_cur."ws"()
+    unless $P10, rx548_fail
+    rx548_pos = $P10."pos"()
+  # rx pass
+    rx548_cur."!cursor_pass"(rx548_pos, "default_value")
+    rx548_cur."!cursor_debug"("PASS  ", "default_value", " at pos=", rx548_pos)
+    .return (rx548_cur)
+  rx548_fail:
+.annotate "line", 4
+    (rx548_rep, rx548_pos, $I10, $P10) = rx548_cur."!mark_fail"(0)
+    lt rx548_pos, -1, rx548_done
+    eq rx548_pos, -1, rx548_fail
+    jump $I10
+  rx548_done:
+    rx548_cur."!cursor_fail"()
+    rx548_cur."!cursor_debug"("FAIL  ", "default_value")
+    .return (rx548_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__default_value"  :subid("141_1258051419.23649") :method
+.annotate "line", 4
+    new $P550, "ResizablePMCArray"
+    push $P550, ""
+    .return ($P550)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "regex_declarator"  :subid("142_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx555_tgt
+    .local int rx555_pos
+    .local int rx555_off
+    .local int rx555_eos
+    .local int rx555_rep
+    .local pmc rx555_cur
+    (rx555_cur, rx555_pos, rx555_tgt, $I10) = self."!cursor_start"()
+    rx555_cur."!cursor_debug"("START ", "regex_declarator")
+    rx555_cur."!cursor_caparray"("signature")
+    .lex unicode:"$\x{a2}", rx555_cur
+    .local pmc match
+    .lex "$/", match
+    length rx555_eos, rx555_tgt
+    set rx555_off, 0
+    lt $I10, 2, rx555_start
+    sub rx555_off, $I10, 1
+    substr rx555_tgt, rx555_tgt, rx555_off
+  rx555_start:
+.annotate "line", 277
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  alt559_0:
+.annotate "line", 278
+    set_addr $I10, alt559_1
+    rx555_cur."!mark_push"(0, rx555_pos, $I10)
+.annotate "line", 279
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx subcapture "proto"
+    set_addr $I10, rxcap_561_fail
+    rx555_cur."!mark_push"(0, rx555_pos, $I10)
+  # rx literal  "proto"
+    add $I11, rx555_pos, 5
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 5
+    ne $S10, "proto", rx555_fail
+    add rx555_pos, 5
+    set_addr $I10, rxcap_561_fail
+    ($I12, $I11) = rx555_cur."!mark_peek"($I10)
+    rx555_cur."!cursor_pos"($I11)
+    ($P10) = rx555_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx555_pos, "")
+    rx555_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("proto")
+    goto rxcap_561_done
+  rxcap_561_fail:
+    goto rx555_fail
+  rxcap_561_done:
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  alt563_0:
+    set_addr $I10, alt563_1
+    rx555_cur."!mark_push"(0, rx555_pos, $I10)
+  # rx literal  "regex"
+    add $I11, rx555_pos, 5
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 5
+    ne $S10, "regex", rx555_fail
+    add rx555_pos, 5
+    goto alt563_end
+  alt563_1:
+    set_addr $I10, alt563_2
+    rx555_cur."!mark_push"(0, rx555_pos, $I10)
+  # rx literal  "token"
+    add $I11, rx555_pos, 5
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 5
+    ne $S10, "token", rx555_fail
+    add rx555_pos, 5
+    goto alt563_end
+  alt563_2:
+  # rx literal  "rule"
+    add $I11, rx555_pos, 4
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 4
+    ne $S10, "rule", rx555_fail
+    add rx555_pos, 4
+  alt563_end:
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 280
+  # rx subrule "deflongname" subtype=capture negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."deflongname"()
+    unless $P10, rx555_fail
+    rx555_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("deflongname")
+    rx555_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 281
+  # rx literal  "{"
+    add $I11, rx555_pos, 1
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 1
+    ne $S10, "{", rx555_fail
+    add rx555_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx literal  "<...>"
+    add $I11, rx555_pos, 5
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 5
+    ne $S10, "<...>", rx555_fail
+    add rx555_pos, 5
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx literal  "}"
+    add $I11, rx555_pos, 1
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 1
+    ne $S10, "}", rx555_fail
+    add rx555_pos, 1
+  # rx subrule "ENDSTMT" subtype=zerowidth negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ENDSTMT"()
+    unless $P10, rx555_fail
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 279
+    goto alt559_end
+  alt559_1:
+.annotate "line", 282
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_571_fail
+    rx555_cur."!mark_push"(0, rx555_pos, $I10)
+  alt570_0:
+    set_addr $I10, alt570_1
+    rx555_cur."!mark_push"(0, rx555_pos, $I10)
+  # rx literal  "regex"
+    add $I11, rx555_pos, 5
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 5
+    ne $S10, "regex", rx555_fail
+    add rx555_pos, 5
+    goto alt570_end
+  alt570_1:
+    set_addr $I10, alt570_2
+    rx555_cur."!mark_push"(0, rx555_pos, $I10)
+  # rx literal  "token"
+    add $I11, rx555_pos, 5
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 5
+    ne $S10, "token", rx555_fail
+    add rx555_pos, 5
+    goto alt570_end
+  alt570_2:
+  # rx literal  "rule"
+    add $I11, rx555_pos, 4
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 4
+    ne $S10, "rule", rx555_fail
+    add rx555_pos, 4
+  alt570_end:
+    set_addr $I10, rxcap_571_fail
+    ($I12, $I11) = rx555_cur."!mark_peek"($I10)
+    rx555_cur."!cursor_pos"($I11)
+    ($P10) = rx555_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx555_pos, "")
+    rx555_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_571_done
+  rxcap_571_fail:
+    goto rx555_fail
+  rxcap_571_done:
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 283
+  # rx subrule "deflongname" subtype=capture negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."deflongname"()
+    unless $P10, rx555_fail
+    rx555_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("deflongname")
+    rx555_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 284
+  # rx subrule "newpad" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."newpad"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 285
+  # rx rxquantr575 ** 0..1
+    set_addr $I580, rxquantr575_done
+    rx555_cur."!mark_push"(0, rx555_pos, $I580)
+  rxquantr575_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx literal  "("
+    add $I11, rx555_pos, 1
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 1
+    ne $S10, "(", rx555_fail
+    add rx555_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx subrule "signature" subtype=capture negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."signature"()
+    unless $P10, rx555_fail
+    rx555_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("signature")
+    rx555_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx555_pos, 1
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 1
+    ne $S10, ")", rx555_fail
+    add rx555_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+    (rx555_rep) = rx555_cur."!mark_commit"($I580)
+  rxquantr575_done:
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 286
+  # rx reduce name="regex_declarator" key="open"
+    rx555_cur."!cursor_pos"(rx555_pos)
+    rx555_cur."!reduce"("regex_declarator", "open")
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 287
+  # rx literal  "{"
+    add $I11, rx555_pos, 1
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 1
+    ne $S10, "{", rx555_fail
+    add rx555_pos, 1
+  # rx subrule "LANG" subtype=capture negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."LANG"("Regex", "nibbler")
+    unless $P10, rx555_fail
+    rx555_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("p6regex")
+    rx555_pos = $P10."pos"()
+  # rx literal  "}"
+    add $I11, rx555_pos, 1
+    gt $I11, rx555_eos, rx555_fail
+    sub $I11, rx555_pos, rx555_off
+    substr $S10, rx555_tgt, $I11, 1
+    ne $S10, "}", rx555_fail
+    add rx555_pos, 1
+  # rx subrule "ENDSTMT" subtype=zerowidth negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ENDSTMT"()
+    unless $P10, rx555_fail
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+  alt559_end:
+.annotate "line", 288
+  # rx subrule "ws" subtype=method negate=
+    rx555_cur."!cursor_pos"(rx555_pos)
+    $P10 = rx555_cur."ws"()
+    unless $P10, rx555_fail
+    rx555_pos = $P10."pos"()
+.annotate "line", 277
+  # rx pass
+    rx555_cur."!cursor_pass"(rx555_pos, "regex_declarator")
+    rx555_cur."!cursor_debug"("PASS  ", "regex_declarator", " at pos=", rx555_pos)
+    .return (rx555_cur)
+  rx555_fail:
+.annotate "line", 4
+    (rx555_rep, rx555_pos, $I10, $P10) = rx555_cur."!mark_fail"(0)
+    lt rx555_pos, -1, rx555_done
+    eq rx555_pos, -1, rx555_fail
+    jump $I10
+  rx555_done:
+    rx555_cur."!cursor_fail"()
+    rx555_cur."!cursor_debug"("FAIL  ", "regex_declarator")
+    .return (rx555_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__regex_declarator"  :subid("143_1258051419.23649") :method
+.annotate "line", 4
+    new $P557, "ResizablePMCArray"
+    push $P557, ""
+    .return ($P557)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "dotty"  :subid("144_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx586_tgt
+    .local int rx586_pos
+    .local int rx586_off
+    .local int rx586_eos
+    .local int rx586_rep
+    .local pmc rx586_cur
+    (rx586_cur, rx586_pos, rx586_tgt, $I10) = self."!cursor_start"()
+    rx586_cur."!cursor_debug"("START ", "dotty")
+    rx586_cur."!cursor_caparray"("args")
+    .lex unicode:"$\x{a2}", rx586_cur
+    .local pmc match
+    .lex "$/", match
+    length rx586_eos, rx586_tgt
+    set rx586_off, 0
+    lt $I10, 2, rx586_start
+    sub rx586_off, $I10, 1
+    substr rx586_tgt, rx586_tgt, rx586_off
+  rx586_start:
+.annotate "line", 292
+  # rx literal  "."
+    add $I11, rx586_pos, 1
+    gt $I11, rx586_eos, rx586_fail
+    sub $I11, rx586_pos, rx586_off
+    substr $S10, rx586_tgt, $I11, 1
+    ne $S10, ".", rx586_fail
+    add rx586_pos, 1
+  # rx subrule "identifier" subtype=capture negate=
+    rx586_cur."!cursor_pos"(rx586_pos)
+    $P10 = rx586_cur."identifier"()
+    unless $P10, rx586_fail
+    rx586_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("identifier")
+    rx586_pos = $P10."pos"()
+.annotate "line", 296
+  # rx rxquantr590 ** 0..1
+    set_addr $I592, rxquantr590_done
+    rx586_cur."!mark_push"(0, rx586_pos, $I592)
+  rxquantr590_loop:
+  alt591_0:
+.annotate "line", 293
+    set_addr $I10, alt591_1
+    rx586_cur."!mark_push"(0, rx586_pos, $I10)
+.annotate "line", 294
+  # rx enumcharlist negate=0 zerowidth
+    ge rx586_pos, rx586_eos, rx586_fail
+    sub $I10, rx586_pos, rx586_off
+    substr $S10, rx586_tgt, $I10, 1
+    index $I11, "(", $S10
+    lt $I11, 0, rx586_fail
+  # rx subrule "args" subtype=capture negate=
+    rx586_cur."!cursor_pos"(rx586_pos)
+    $P10 = rx586_cur."args"()
+    unless $P10, rx586_fail
+    rx586_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("args")
+    rx586_pos = $P10."pos"()
+    goto alt591_end
+  alt591_1:
+.annotate "line", 295
+  # rx literal  ":"
+    add $I11, rx586_pos, 1
+    gt $I11, rx586_eos, rx586_fail
+    sub $I11, rx586_pos, rx586_off
+    substr $S10, rx586_tgt, $I11, 1
+    ne $S10, ":", rx586_fail
+    add rx586_pos, 1
+  # rx charclass s
+    ge rx586_pos, rx586_eos, rx586_fail
+    sub $I10, rx586_pos, rx586_off
+    is_cclass $I11, 32, rx586_tgt, $I10
+    unless $I11, rx586_fail
+    inc rx586_pos
+  # rx subrule "arglist" subtype=capture negate=
+    rx586_cur."!cursor_pos"(rx586_pos)
+    $P10 = rx586_cur."arglist"()
+    unless $P10, rx586_fail
+    rx586_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("args")
+    rx586_pos = $P10."pos"()
+  alt591_end:
+.annotate "line", 296
+    (rx586_rep) = rx586_cur."!mark_commit"($I592)
+  rxquantr590_done:
+.annotate "line", 291
+  # rx pass
+    rx586_cur."!cursor_pass"(rx586_pos, "dotty")
+    rx586_cur."!cursor_debug"("PASS  ", "dotty", " at pos=", rx586_pos)
+    .return (rx586_cur)
+  rx586_fail:
+.annotate "line", 4
+    (rx586_rep, rx586_pos, $I10, $P10) = rx586_cur."!mark_fail"(0)
+    lt rx586_pos, -1, rx586_done
+    eq rx586_pos, -1, rx586_fail
+    jump $I10
+  rx586_done:
+    rx586_cur."!cursor_fail"()
+    rx586_cur."!cursor_debug"("FAIL  ", "dotty")
+    .return (rx586_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__dotty"  :subid("145_1258051419.23649") :method
+.annotate "line", 4
+    $P588 = self."!PREFIX__!subrule"("identifier", ".")
+    new $P589, "ResizablePMCArray"
+    push $P589, $P588
+    .return ($P589)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term"  :subid("146_1258051419.23649") :method
+.annotate "line", 300
+    $P594 = self."!protoregex"("term")
+    .return ($P594)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term"  :subid("147_1258051419.23649") :method
+.annotate "line", 300
+    $P596 = self."!PREFIX__!protoregex"("term")
+    .return ($P596)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<self>"  :subid("148_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx598_tgt
+    .local int rx598_pos
+    .local int rx598_off
+    .local int rx598_eos
+    .local int rx598_rep
+    .local pmc rx598_cur
+    (rx598_cur, rx598_pos, rx598_tgt, $I10) = self."!cursor_start"()
+    rx598_cur."!cursor_debug"("START ", "term:sym<self>")
+    .lex unicode:"$\x{a2}", rx598_cur
+    .local pmc match
+    .lex "$/", match
+    length rx598_eos, rx598_tgt
+    set rx598_off, 0
+    lt $I10, 2, rx598_start
+    sub rx598_off, $I10, 1
+    substr rx598_tgt, rx598_tgt, rx598_off
+  rx598_start:
+.annotate "line", 302
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_601_fail
+    rx598_cur."!mark_push"(0, rx598_pos, $I10)
+  # rx literal  "self"
+    add $I11, rx598_pos, 4
+    gt $I11, rx598_eos, rx598_fail
+    sub $I11, rx598_pos, rx598_off
+    substr $S10, rx598_tgt, $I11, 4
+    ne $S10, "self", rx598_fail
+    add rx598_pos, 4
+    set_addr $I10, rxcap_601_fail
+    ($I12, $I11) = rx598_cur."!mark_peek"($I10)
+    rx598_cur."!cursor_pos"($I11)
+    ($P10) = rx598_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx598_pos, "")
+    rx598_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_601_done
+  rxcap_601_fail:
+    goto rx598_fail
+  rxcap_601_done:
+  # rxanchor rwb
+    le rx598_pos, 0, rx598_fail
+    sub $I10, rx598_pos, rx598_off
+    is_cclass $I11, 8192, rx598_tgt, $I10
+    if $I11, rx598_fail
+    dec $I10
+    is_cclass $I11, 8192, rx598_tgt, $I10
+    unless $I11, rx598_fail
+  # rx pass
+    rx598_cur."!cursor_pass"(rx598_pos, "term:sym<self>")
+    rx598_cur."!cursor_debug"("PASS  ", "term:sym<self>", " at pos=", rx598_pos)
+    .return (rx598_cur)
+  rx598_fail:
+.annotate "line", 4
+    (rx598_rep, rx598_pos, $I10, $P10) = rx598_cur."!mark_fail"(0)
+    lt rx598_pos, -1, rx598_done
+    eq rx598_pos, -1, rx598_fail
+    jump $I10
+  rx598_done:
+    rx598_cur."!cursor_fail"()
+    rx598_cur."!cursor_debug"("FAIL  ", "term:sym<self>")
+    .return (rx598_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<self>"  :subid("149_1258051419.23649") :method
+.annotate "line", 4
+    new $P600, "ResizablePMCArray"
+    push $P600, "self"
+    .return ($P600)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<identifier>"  :subid("150_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx603_tgt
+    .local int rx603_pos
+    .local int rx603_off
+    .local int rx603_eos
+    .local int rx603_rep
+    .local pmc rx603_cur
+    (rx603_cur, rx603_pos, rx603_tgt, $I10) = self."!cursor_start"()
+    rx603_cur."!cursor_debug"("START ", "term:sym<identifier>")
+    .lex unicode:"$\x{a2}", rx603_cur
+    .local pmc match
+    .lex "$/", match
+    length rx603_eos, rx603_tgt
+    set rx603_off, 0
+    lt $I10, 2, rx603_start
+    sub rx603_off, $I10, 1
+    substr rx603_tgt, rx603_tgt, rx603_off
+  rx603_start:
+.annotate "line", 305
+  # rx subrule "identifier" subtype=capture negate=
+    rx603_cur."!cursor_pos"(rx603_pos)
+    $P10 = rx603_cur."identifier"()
+    unless $P10, rx603_fail
+    rx603_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("identifier")
+    rx603_pos = $P10."pos"()
+  # rx enumcharlist negate=0 zerowidth
+    ge rx603_pos, rx603_eos, rx603_fail
+    sub $I10, rx603_pos, rx603_off
+    substr $S10, rx603_tgt, $I10, 1
+    index $I11, "(", $S10
+    lt $I11, 0, rx603_fail
+  # rx subrule "args" subtype=capture negate=
+    rx603_cur."!cursor_pos"(rx603_pos)
+    $P10 = rx603_cur."args"()
+    unless $P10, rx603_fail
+    rx603_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("args")
+    rx603_pos = $P10."pos"()
+.annotate "line", 304
+  # rx pass
+    rx603_cur."!cursor_pass"(rx603_pos, "term:sym<identifier>")
+    rx603_cur."!cursor_debug"("PASS  ", "term:sym<identifier>", " at pos=", rx603_pos)
+    .return (rx603_cur)
+  rx603_fail:
+.annotate "line", 4
+    (rx603_rep, rx603_pos, $I10, $P10) = rx603_cur."!mark_fail"(0)
+    lt rx603_pos, -1, rx603_done
+    eq rx603_pos, -1, rx603_fail
+    jump $I10
+  rx603_done:
+    rx603_cur."!cursor_fail"()
+    rx603_cur."!cursor_debug"("FAIL  ", "term:sym<identifier>")
+    .return (rx603_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<identifier>"  :subid("151_1258051419.23649") :method
+.annotate "line", 4
+    $P605 = self."!PREFIX__!subrule"("identifier", "")
+    new $P606, "ResizablePMCArray"
+    push $P606, $P605
+    .return ($P606)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<name>"  :subid("152_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx608_tgt
+    .local int rx608_pos
+    .local int rx608_off
+    .local int rx608_eos
+    .local int rx608_rep
+    .local pmc rx608_cur
+    (rx608_cur, rx608_pos, rx608_tgt, $I10) = self."!cursor_start"()
+    rx608_cur."!cursor_debug"("START ", "term:sym<name>")
+    rx608_cur."!cursor_caparray"("args")
+    .lex unicode:"$\x{a2}", rx608_cur
+    .local pmc match
+    .lex "$/", match
+    length rx608_eos, rx608_tgt
+    set rx608_off, 0
+    lt $I10, 2, rx608_start
+    sub rx608_off, $I10, 1
+    substr rx608_tgt, rx608_tgt, rx608_off
+  rx608_start:
+.annotate "line", 309
+  # rx subrule "name" subtype=capture negate=
+    rx608_cur."!cursor_pos"(rx608_pos)
+    $P10 = rx608_cur."name"()
+    unless $P10, rx608_fail
+    rx608_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("name")
+    rx608_pos = $P10."pos"()
+  # rx rxquantr612 ** 0..1
+    set_addr $I613, rxquantr612_done
+    rx608_cur."!mark_push"(0, rx608_pos, $I613)
+  rxquantr612_loop:
+  # rx subrule "args" subtype=capture negate=
+    rx608_cur."!cursor_pos"(rx608_pos)
+    $P10 = rx608_cur."args"()
+    unless $P10, rx608_fail
+    rx608_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("args")
+    rx608_pos = $P10."pos"()
+    (rx608_rep) = rx608_cur."!mark_commit"($I613)
+  rxquantr612_done:
+.annotate "line", 308
+  # rx pass
+    rx608_cur."!cursor_pass"(rx608_pos, "term:sym<name>")
+    rx608_cur."!cursor_debug"("PASS  ", "term:sym<name>", " at pos=", rx608_pos)
+    .return (rx608_cur)
+  rx608_fail:
+.annotate "line", 4
+    (rx608_rep, rx608_pos, $I10, $P10) = rx608_cur."!mark_fail"(0)
+    lt rx608_pos, -1, rx608_done
+    eq rx608_pos, -1, rx608_fail
+    jump $I10
+  rx608_done:
+    rx608_cur."!cursor_fail"()
+    rx608_cur."!cursor_debug"("FAIL  ", "term:sym<name>")
+    .return (rx608_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<name>"  :subid("153_1258051419.23649") :method
+.annotate "line", 4
+    $P610 = self."!PREFIX__!subrule"("name", "")
+    new $P611, "ResizablePMCArray"
+    push $P611, $P610
+    .return ($P611)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<pir::op>"  :subid("154_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx615_tgt
+    .local int rx615_pos
+    .local int rx615_off
+    .local int rx615_eos
+    .local int rx615_rep
+    .local pmc rx615_cur
+    (rx615_cur, rx615_pos, rx615_tgt, $I10) = self."!cursor_start"()
+    rx615_cur."!cursor_debug"("START ", "term:sym<pir::op>")
+    rx615_cur."!cursor_caparray"("args")
+    .lex unicode:"$\x{a2}", rx615_cur
+    .local pmc match
+    .lex "$/", match
+    length rx615_eos, rx615_tgt
+    set rx615_off, 0
+    lt $I10, 2, rx615_start
+    sub rx615_off, $I10, 1
+    substr rx615_tgt, rx615_tgt, rx615_off
+  rx615_start:
+.annotate "line", 313
+  # rx literal  "pir::"
+    add $I11, rx615_pos, 5
+    gt $I11, rx615_eos, rx615_fail
+    sub $I11, rx615_pos, rx615_off
+    substr $S10, rx615_tgt, $I11, 5
+    ne $S10, "pir::", rx615_fail
+    add rx615_pos, 5
+  # rx subcapture "op"
+    set_addr $I10, rxcap_618_fail
+    rx615_cur."!mark_push"(0, rx615_pos, $I10)
+  # rx charclass_q w r 1..-1
+    sub $I10, rx615_pos, rx615_off
+    find_not_cclass $I11, 8192, rx615_tgt, $I10, rx615_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx615_fail
+    add rx615_pos, rx615_off, $I11
+    set_addr $I10, rxcap_618_fail
+    ($I12, $I11) = rx615_cur."!mark_peek"($I10)
+    rx615_cur."!cursor_pos"($I11)
+    ($P10) = rx615_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx615_pos, "")
+    rx615_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("op")
+    goto rxcap_618_done
+  rxcap_618_fail:
+    goto rx615_fail
+  rxcap_618_done:
+  # rx rxquantr619 ** 0..1
+    set_addr $I620, rxquantr619_done
+    rx615_cur."!mark_push"(0, rx615_pos, $I620)
+  rxquantr619_loop:
+  # rx subrule "args" subtype=capture negate=
+    rx615_cur."!cursor_pos"(rx615_pos)
+    $P10 = rx615_cur."args"()
+    unless $P10, rx615_fail
+    rx615_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("args")
+    rx615_pos = $P10."pos"()
+    (rx615_rep) = rx615_cur."!mark_commit"($I620)
+  rxquantr619_done:
+.annotate "line", 312
+  # rx pass
+    rx615_cur."!cursor_pass"(rx615_pos, "term:sym<pir::op>")
+    rx615_cur."!cursor_debug"("PASS  ", "term:sym<pir::op>", " at pos=", rx615_pos)
+    .return (rx615_cur)
+  rx615_fail:
+.annotate "line", 4
+    (rx615_rep, rx615_pos, $I10, $P10) = rx615_cur."!mark_fail"(0)
+    lt rx615_pos, -1, rx615_done
+    eq rx615_pos, -1, rx615_fail
+    jump $I10
+  rx615_done:
+    rx615_cur."!cursor_fail"()
+    rx615_cur."!cursor_debug"("FAIL  ", "term:sym<pir::op>")
+    .return (rx615_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<pir::op>"  :subid("155_1258051419.23649") :method
+.annotate "line", 4
+    new $P617, "ResizablePMCArray"
+    push $P617, "pir::"
+    .return ($P617)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "args"  :subid("156_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx622_tgt
+    .local int rx622_pos
+    .local int rx622_off
+    .local int rx622_eos
+    .local int rx622_rep
+    .local pmc rx622_cur
+    (rx622_cur, rx622_pos, rx622_tgt, $I10) = self."!cursor_start"()
+    rx622_cur."!cursor_debug"("START ", "args")
+    .lex unicode:"$\x{a2}", rx622_cur
+    .local pmc match
+    .lex "$/", match
+    length rx622_eos, rx622_tgt
+    set rx622_off, 0
+    lt $I10, 2, rx622_start
+    sub rx622_off, $I10, 1
+    substr rx622_tgt, rx622_tgt, rx622_off
+  rx622_start:
+.annotate "line", 317
+  # rx literal  "("
+    add $I11, rx622_pos, 1
+    gt $I11, rx622_eos, rx622_fail
+    sub $I11, rx622_pos, rx622_off
+    substr $S10, rx622_tgt, $I11, 1
+    ne $S10, "(", rx622_fail
+    add rx622_pos, 1
+  # rx subrule "arglist" subtype=capture negate=
+    rx622_cur."!cursor_pos"(rx622_pos)
+    $P10 = rx622_cur."arglist"()
+    unless $P10, rx622_fail
+    rx622_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx622_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx622_pos, 1
+    gt $I11, rx622_eos, rx622_fail
+    sub $I11, rx622_pos, rx622_off
+    substr $S10, rx622_tgt, $I11, 1
+    ne $S10, ")", rx622_fail
+    add rx622_pos, 1
+  # rx pass
+    rx622_cur."!cursor_pass"(rx622_pos, "args")
+    rx622_cur."!cursor_debug"("PASS  ", "args", " at pos=", rx622_pos)
+    .return (rx622_cur)
+  rx622_fail:
+.annotate "line", 4
+    (rx622_rep, rx622_pos, $I10, $P10) = rx622_cur."!mark_fail"(0)
+    lt rx622_pos, -1, rx622_done
+    eq rx622_pos, -1, rx622_fail
+    jump $I10
+  rx622_done:
+    rx622_cur."!cursor_fail"()
+    rx622_cur."!cursor_debug"("FAIL  ", "args")
+    .return (rx622_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__args"  :subid("157_1258051419.23649") :method
+.annotate "line", 4
+    $P624 = self."!PREFIX__!subrule"("arglist", "(")
+    new $P625, "ResizablePMCArray"
+    push $P625, $P624
+    .return ($P625)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "arglist"  :subid("158_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx627_tgt
+    .local int rx627_pos
+    .local int rx627_off
+    .local int rx627_eos
+    .local int rx627_rep
+    .local pmc rx627_cur
+    (rx627_cur, rx627_pos, rx627_tgt, $I10) = self."!cursor_start"()
+    rx627_cur."!cursor_debug"("START ", "arglist")
+    .lex unicode:"$\x{a2}", rx627_cur
+    .local pmc match
+    .lex "$/", match
+    length rx627_eos, rx627_tgt
+    set rx627_off, 0
+    lt $I10, 2, rx627_start
+    sub rx627_off, $I10, 1
+    substr rx627_tgt, rx627_tgt, rx627_off
+  rx627_start:
+.annotate "line", 321
+  # rx subrule "ws" subtype=method negate=
+    rx627_cur."!cursor_pos"(rx627_pos)
+    $P10 = rx627_cur."ws"()
+    unless $P10, rx627_fail
+    rx627_pos = $P10."pos"()
+  alt631_0:
+.annotate "line", 322
+    set_addr $I10, alt631_1
+    rx627_cur."!mark_push"(0, rx627_pos, $I10)
+.annotate "line", 323
+  # rx subrule "EXPR" subtype=capture negate=
+    rx627_cur."!cursor_pos"(rx627_pos)
+    $P10 = rx627_cur."EXPR"("f=")
+    unless $P10, rx627_fail
+    rx627_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx627_pos = $P10."pos"()
+    goto alt631_end
+  alt631_1:
+  alt631_end:
+.annotate "line", 320
+  # rx pass
+    rx627_cur."!cursor_pass"(rx627_pos, "arglist")
+    rx627_cur."!cursor_debug"("PASS  ", "arglist", " at pos=", rx627_pos)
+    .return (rx627_cur)
+  rx627_fail:
+.annotate "line", 4
+    (rx627_rep, rx627_pos, $I10, $P10) = rx627_cur."!mark_fail"(0)
+    lt rx627_pos, -1, rx627_done
+    eq rx627_pos, -1, rx627_fail
+    jump $I10
+  rx627_done:
+    rx627_cur."!cursor_fail"()
+    rx627_cur."!cursor_debug"("FAIL  ", "arglist")
+    .return (rx627_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__arglist"  :subid("159_1258051419.23649") :method
+.annotate "line", 4
+    $P629 = self."!PREFIX__!subrule"("ws", "")
+    new $P630, "ResizablePMCArray"
+    push $P630, $P629
+    .return ($P630)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "term:sym<value>"  :subid("160_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx633_tgt
+    .local int rx633_pos
+    .local int rx633_off
+    .local int rx633_eos
+    .local int rx633_rep
+    .local pmc rx633_cur
+    (rx633_cur, rx633_pos, rx633_tgt, $I10) = self."!cursor_start"()
+    rx633_cur."!cursor_debug"("START ", "term:sym<value>")
+    .lex unicode:"$\x{a2}", rx633_cur
+    .local pmc match
+    .lex "$/", match
+    length rx633_eos, rx633_tgt
+    set rx633_off, 0
+    lt $I10, 2, rx633_start
+    sub rx633_off, $I10, 1
+    substr rx633_tgt, rx633_tgt, rx633_off
+  rx633_start:
+.annotate "line", 329
+  # rx subrule "value" subtype=capture negate=
+    rx633_cur."!cursor_pos"(rx633_pos)
+    $P10 = rx633_cur."value"()
+    unless $P10, rx633_fail
+    rx633_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("value")
+    rx633_pos = $P10."pos"()
+  # rx pass
+    rx633_cur."!cursor_pass"(rx633_pos, "term:sym<value>")
+    rx633_cur."!cursor_debug"("PASS  ", "term:sym<value>", " at pos=", rx633_pos)
+    .return (rx633_cur)
+  rx633_fail:
+.annotate "line", 4
+    (rx633_rep, rx633_pos, $I10, $P10) = rx633_cur."!mark_fail"(0)
+    lt rx633_pos, -1, rx633_done
+    eq rx633_pos, -1, rx633_fail
+    jump $I10
+  rx633_done:
+    rx633_cur."!cursor_fail"()
+    rx633_cur."!cursor_debug"("FAIL  ", "term:sym<value>")
+    .return (rx633_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__term:sym<value>"  :subid("161_1258051419.23649") :method
+.annotate "line", 4
+    $P635 = self."!PREFIX__!subrule"("value", "")
+    new $P636, "ResizablePMCArray"
+    push $P636, $P635
+    .return ($P636)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "value"  :subid("162_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx638_tgt
+    .local int rx638_pos
+    .local int rx638_off
+    .local int rx638_eos
+    .local int rx638_rep
+    .local pmc rx638_cur
+    (rx638_cur, rx638_pos, rx638_tgt, $I10) = self."!cursor_start"()
+    rx638_cur."!cursor_debug"("START ", "value")
+    .lex unicode:"$\x{a2}", rx638_cur
+    .local pmc match
+    .lex "$/", match
+    length rx638_eos, rx638_tgt
+    set rx638_off, 0
+    lt $I10, 2, rx638_start
+    sub rx638_off, $I10, 1
+    substr rx638_tgt, rx638_tgt, rx638_off
+  rx638_start:
+  alt644_0:
+.annotate "line", 331
+    set_addr $I10, alt644_1
+    rx638_cur."!mark_push"(0, rx638_pos, $I10)
+.annotate "line", 332
+  # rx subrule "dec_number" subtype=capture negate=
+    rx638_cur."!cursor_pos"(rx638_pos)
+    $P10 = rx638_cur."dec_number"()
+    unless $P10, rx638_fail
+    rx638_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("dec_number")
+    rx638_pos = $P10."pos"()
+    goto alt644_end
+  alt644_1:
+    set_addr $I10, alt644_2
+    rx638_cur."!mark_push"(0, rx638_pos, $I10)
+.annotate "line", 333
+  # rx subrule "quote" subtype=capture negate=
+    rx638_cur."!cursor_pos"(rx638_pos)
+    $P10 = rx638_cur."quote"()
+    unless $P10, rx638_fail
+    rx638_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote")
+    rx638_pos = $P10."pos"()
+    goto alt644_end
+  alt644_2:
+.annotate "line", 334
+  # rx subrule "integer" subtype=capture negate=
+    rx638_cur."!cursor_pos"(rx638_pos)
+    $P10 = rx638_cur."integer"()
+    unless $P10, rx638_fail
+    rx638_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("integer")
+    rx638_pos = $P10."pos"()
+  alt644_end:
+.annotate "line", 331
+  # rx pass
+    rx638_cur."!cursor_pass"(rx638_pos, "value")
+    rx638_cur."!cursor_debug"("PASS  ", "value", " at pos=", rx638_pos)
+    .return (rx638_cur)
+  rx638_fail:
+.annotate "line", 4
+    (rx638_rep, rx638_pos, $I10, $P10) = rx638_cur."!mark_fail"(0)
+    lt rx638_pos, -1, rx638_done
+    eq rx638_pos, -1, rx638_fail
+    jump $I10
+  rx638_done:
+    rx638_cur."!cursor_fail"()
+    rx638_cur."!cursor_debug"("FAIL  ", "value")
+    .return (rx638_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__value"  :subid("163_1258051419.23649") :method
+.annotate "line", 4
+    $P640 = self."!PREFIX__!subrule"("integer", "")
+    $P641 = self."!PREFIX__!subrule"("quote", "")
+    $P642 = self."!PREFIX__!subrule"("dec_number", "")
+    new $P643, "ResizablePMCArray"
+    push $P643, $P640
+    push $P643, $P641
+    push $P643, $P642
+    .return ($P643)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote"  :subid("164_1258051419.23649") :method
+.annotate "line", 337
+    $P646 = self."!protoregex"("quote")
+    .return ($P646)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote"  :subid("165_1258051419.23649") :method
+.annotate "line", 337
+    $P648 = self."!PREFIX__!protoregex"("quote")
+    .return ($P648)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote:sym<apos>"  :subid("166_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx650_tgt
+    .local int rx650_pos
+    .local int rx650_off
+    .local int rx650_eos
+    .local int rx650_rep
+    .local pmc rx650_cur
+    (rx650_cur, rx650_pos, rx650_tgt, $I10) = self."!cursor_start"()
+    rx650_cur."!cursor_debug"("START ", "quote:sym<apos>")
+    .lex unicode:"$\x{a2}", rx650_cur
+    .local pmc match
+    .lex "$/", match
+    length rx650_eos, rx650_tgt
+    set rx650_off, 0
+    lt $I10, 2, rx650_start
+    sub rx650_off, $I10, 1
+    substr rx650_tgt, rx650_tgt, rx650_off
+  rx650_start:
+.annotate "line", 338
+  # rx enumcharlist negate=0 zerowidth
+    ge rx650_pos, rx650_eos, rx650_fail
+    sub $I10, rx650_pos, rx650_off
+    substr $S10, rx650_tgt, $I10, 1
+    index $I11, "'", $S10
+    lt $I11, 0, rx650_fail
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx650_cur."!cursor_pos"(rx650_pos)
+    $P10 = rx650_cur."quote_EXPR"(":q")
+    unless $P10, rx650_fail
+    rx650_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx650_pos = $P10."pos"()
+  # rx pass
+    rx650_cur."!cursor_pass"(rx650_pos, "quote:sym<apos>")
+    rx650_cur."!cursor_debug"("PASS  ", "quote:sym<apos>", " at pos=", rx650_pos)
+    .return (rx650_cur)
+  rx650_fail:
+.annotate "line", 4
+    (rx650_rep, rx650_pos, $I10, $P10) = rx650_cur."!mark_fail"(0)
+    lt rx650_pos, -1, rx650_done
+    eq rx650_pos, -1, rx650_fail
+    jump $I10
+  rx650_done:
+    rx650_cur."!cursor_fail"()
+    rx650_cur."!cursor_debug"("FAIL  ", "quote:sym<apos>")
+    .return (rx650_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote:sym<apos>"  :subid("167_1258051419.23649") :method
+.annotate "line", 4
+    new $P652, "ResizablePMCArray"
+    push $P652, "'"
+    .return ($P652)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote:sym<dblq>"  :subid("168_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx654_tgt
+    .local int rx654_pos
+    .local int rx654_off
+    .local int rx654_eos
+    .local int rx654_rep
+    .local pmc rx654_cur
+    (rx654_cur, rx654_pos, rx654_tgt, $I10) = self."!cursor_start"()
+    rx654_cur."!cursor_debug"("START ", "quote:sym<dblq>")
+    .lex unicode:"$\x{a2}", rx654_cur
+    .local pmc match
+    .lex "$/", match
+    length rx654_eos, rx654_tgt
+    set rx654_off, 0
+    lt $I10, 2, rx654_start
+    sub rx654_off, $I10, 1
+    substr rx654_tgt, rx654_tgt, rx654_off
+  rx654_start:
+.annotate "line", 339
+  # rx enumcharlist negate=0 zerowidth
+    ge rx654_pos, rx654_eos, rx654_fail
+    sub $I10, rx654_pos, rx654_off
+    substr $S10, rx654_tgt, $I10, 1
+    index $I11, "\"", $S10
+    lt $I11, 0, rx654_fail
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx654_cur."!cursor_pos"(rx654_pos)
+    $P10 = rx654_cur."quote_EXPR"(":qq")
+    unless $P10, rx654_fail
+    rx654_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx654_pos = $P10."pos"()
+  # rx pass
+    rx654_cur."!cursor_pass"(rx654_pos, "quote:sym<dblq>")
+    rx654_cur."!cursor_debug"("PASS  ", "quote:sym<dblq>", " at pos=", rx654_pos)
+    .return (rx654_cur)
+  rx654_fail:
+.annotate "line", 4
+    (rx654_rep, rx654_pos, $I10, $P10) = rx654_cur."!mark_fail"(0)
+    lt rx654_pos, -1, rx654_done
+    eq rx654_pos, -1, rx654_fail
+    jump $I10
+  rx654_done:
+    rx654_cur."!cursor_fail"()
+    rx654_cur."!cursor_debug"("FAIL  ", "quote:sym<dblq>")
+    .return (rx654_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote:sym<dblq>"  :subid("169_1258051419.23649") :method
+.annotate "line", 4
+    new $P656, "ResizablePMCArray"
+    push $P656, "\""
+    .return ($P656)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote:sym<q>"  :subid("170_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx658_tgt
+    .local int rx658_pos
+    .local int rx658_off
+    .local int rx658_eos
+    .local int rx658_rep
+    .local pmc rx658_cur
+    (rx658_cur, rx658_pos, rx658_tgt, $I10) = self."!cursor_start"()
+    rx658_cur."!cursor_debug"("START ", "quote:sym<q>")
+    .lex unicode:"$\x{a2}", rx658_cur
+    .local pmc match
+    .lex "$/", match
+    length rx658_eos, rx658_tgt
+    set rx658_off, 0
+    lt $I10, 2, rx658_start
+    sub rx658_off, $I10, 1
+    substr rx658_tgt, rx658_tgt, rx658_off
+  rx658_start:
+.annotate "line", 340
+  # rx literal  "q"
+    add $I11, rx658_pos, 1
+    gt $I11, rx658_eos, rx658_fail
+    sub $I11, rx658_pos, rx658_off
+    substr $S10, rx658_tgt, $I11, 1
+    ne $S10, "q", rx658_fail
+    add rx658_pos, 1
+  # rx enumcharlist negate=1 zerowidth
+    ge rx658_pos, rx658_eos, rx658_fail
+    sub $I10, rx658_pos, rx658_off
+    substr $S10, rx658_tgt, $I10, 1
+    index $I11, "(", $S10
+    ge $I11, 0, rx658_fail
+  # rx subrule "ws" subtype=method negate=
+    rx658_cur."!cursor_pos"(rx658_pos)
+    $P10 = rx658_cur."ws"()
+    unless $P10, rx658_fail
+    rx658_pos = $P10."pos"()
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx658_cur."!cursor_pos"(rx658_pos)
+    $P10 = rx658_cur."quote_EXPR"(":q")
+    unless $P10, rx658_fail
+    rx658_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx658_pos = $P10."pos"()
+  # rx pass
+    rx658_cur."!cursor_pass"(rx658_pos, "quote:sym<q>")
+    rx658_cur."!cursor_debug"("PASS  ", "quote:sym<q>", " at pos=", rx658_pos)
+    .return (rx658_cur)
+  rx658_fail:
+.annotate "line", 4
+    (rx658_rep, rx658_pos, $I10, $P10) = rx658_cur."!mark_fail"(0)
+    lt rx658_pos, -1, rx658_done
+    eq rx658_pos, -1, rx658_fail
+    jump $I10
+  rx658_done:
+    rx658_cur."!cursor_fail"()
+    rx658_cur."!cursor_debug"("FAIL  ", "quote:sym<q>")
+    .return (rx658_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote:sym<q>"  :subid("171_1258051419.23649") :method
+.annotate "line", 4
+    $P660 = self."!PREFIX__!subrule"("ws", "q")
+    new $P661, "ResizablePMCArray"
+    push $P661, $P660
+    .return ($P661)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote:sym<qq>"  :subid("172_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx663_tgt
+    .local int rx663_pos
+    .local int rx663_off
+    .local int rx663_eos
+    .local int rx663_rep
+    .local pmc rx663_cur
+    (rx663_cur, rx663_pos, rx663_tgt, $I10) = self."!cursor_start"()
+    rx663_cur."!cursor_debug"("START ", "quote:sym<qq>")
+    .lex unicode:"$\x{a2}", rx663_cur
+    .local pmc match
+    .lex "$/", match
+    length rx663_eos, rx663_tgt
+    set rx663_off, 0
+    lt $I10, 2, rx663_start
+    sub rx663_off, $I10, 1
+    substr rx663_tgt, rx663_tgt, rx663_off
+  rx663_start:
+.annotate "line", 341
+  # rx literal  "qq"
+    add $I11, rx663_pos, 2
+    gt $I11, rx663_eos, rx663_fail
+    sub $I11, rx663_pos, rx663_off
+    substr $S10, rx663_tgt, $I11, 2
+    ne $S10, "qq", rx663_fail
+    add rx663_pos, 2
+  # rx enumcharlist negate=1 zerowidth
+    ge rx663_pos, rx663_eos, rx663_fail
+    sub $I10, rx663_pos, rx663_off
+    substr $S10, rx663_tgt, $I10, 1
+    index $I11, "(", $S10
+    ge $I11, 0, rx663_fail
+  # rx subrule "ws" subtype=method negate=
+    rx663_cur."!cursor_pos"(rx663_pos)
+    $P10 = rx663_cur."ws"()
+    unless $P10, rx663_fail
+    rx663_pos = $P10."pos"()
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx663_cur."!cursor_pos"(rx663_pos)
+    $P10 = rx663_cur."quote_EXPR"(":qq")
+    unless $P10, rx663_fail
+    rx663_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx663_pos = $P10."pos"()
+  # rx pass
+    rx663_cur."!cursor_pass"(rx663_pos, "quote:sym<qq>")
+    rx663_cur."!cursor_debug"("PASS  ", "quote:sym<qq>", " at pos=", rx663_pos)
+    .return (rx663_cur)
+  rx663_fail:
+.annotate "line", 4
+    (rx663_rep, rx663_pos, $I10, $P10) = rx663_cur."!mark_fail"(0)
+    lt rx663_pos, -1, rx663_done
+    eq rx663_pos, -1, rx663_fail
+    jump $I10
+  rx663_done:
+    rx663_cur."!cursor_fail"()
+    rx663_cur."!cursor_debug"("FAIL  ", "quote:sym<qq>")
+    .return (rx663_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote:sym<qq>"  :subid("173_1258051419.23649") :method
+.annotate "line", 4
+    $P665 = self."!PREFIX__!subrule"("ws", "qq")
+    new $P666, "ResizablePMCArray"
+    push $P666, $P665
+    .return ($P666)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote:sym<Q>"  :subid("174_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx668_tgt
+    .local int rx668_pos
+    .local int rx668_off
+    .local int rx668_eos
+    .local int rx668_rep
+    .local pmc rx668_cur
+    (rx668_cur, rx668_pos, rx668_tgt, $I10) = self."!cursor_start"()
+    rx668_cur."!cursor_debug"("START ", "quote:sym<Q>")
+    .lex unicode:"$\x{a2}", rx668_cur
+    .local pmc match
+    .lex "$/", match
+    length rx668_eos, rx668_tgt
+    set rx668_off, 0
+    lt $I10, 2, rx668_start
+    sub rx668_off, $I10, 1
+    substr rx668_tgt, rx668_tgt, rx668_off
+  rx668_start:
+.annotate "line", 342
+  # rx literal  "Q"
+    add $I11, rx668_pos, 1
+    gt $I11, rx668_eos, rx668_fail
+    sub $I11, rx668_pos, rx668_off
+    substr $S10, rx668_tgt, $I11, 1
+    ne $S10, "Q", rx668_fail
+    add rx668_pos, 1
+  # rx enumcharlist negate=1 zerowidth
+    ge rx668_pos, rx668_eos, rx668_fail
+    sub $I10, rx668_pos, rx668_off
+    substr $S10, rx668_tgt, $I10, 1
+    index $I11, "(", $S10
+    ge $I11, 0, rx668_fail
+  # rx subrule "ws" subtype=method negate=
+    rx668_cur."!cursor_pos"(rx668_pos)
+    $P10 = rx668_cur."ws"()
+    unless $P10, rx668_fail
+    rx668_pos = $P10."pos"()
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx668_cur."!cursor_pos"(rx668_pos)
+    $P10 = rx668_cur."quote_EXPR"()
+    unless $P10, rx668_fail
+    rx668_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx668_pos = $P10."pos"()
+  # rx pass
+    rx668_cur."!cursor_pass"(rx668_pos, "quote:sym<Q>")
+    rx668_cur."!cursor_debug"("PASS  ", "quote:sym<Q>", " at pos=", rx668_pos)
+    .return (rx668_cur)
+  rx668_fail:
+.annotate "line", 4
+    (rx668_rep, rx668_pos, $I10, $P10) = rx668_cur."!mark_fail"(0)
+    lt rx668_pos, -1, rx668_done
+    eq rx668_pos, -1, rx668_fail
+    jump $I10
+  rx668_done:
+    rx668_cur."!cursor_fail"()
+    rx668_cur."!cursor_debug"("FAIL  ", "quote:sym<Q>")
+    .return (rx668_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote:sym<Q>"  :subid("175_1258051419.23649") :method
+.annotate "line", 4
+    $P670 = self."!PREFIX__!subrule"("ws", "Q")
+    new $P671, "ResizablePMCArray"
+    push $P671, $P670
+    .return ($P671)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote:sym<Q:PIR>"  :subid("176_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx673_tgt
+    .local int rx673_pos
+    .local int rx673_off
+    .local int rx673_eos
+    .local int rx673_rep
+    .local pmc rx673_cur
+    (rx673_cur, rx673_pos, rx673_tgt, $I10) = self."!cursor_start"()
+    rx673_cur."!cursor_debug"("START ", "quote:sym<Q:PIR>")
+    .lex unicode:"$\x{a2}", rx673_cur
+    .local pmc match
+    .lex "$/", match
+    length rx673_eos, rx673_tgt
+    set rx673_off, 0
+    lt $I10, 2, rx673_start
+    sub rx673_off, $I10, 1
+    substr rx673_tgt, rx673_tgt, rx673_off
+  rx673_start:
+.annotate "line", 343
+  # rx literal  "Q:PIR"
+    add $I11, rx673_pos, 5
+    gt $I11, rx673_eos, rx673_fail
+    sub $I11, rx673_pos, rx673_off
+    substr $S10, rx673_tgt, $I11, 5
+    ne $S10, "Q:PIR", rx673_fail
+    add rx673_pos, 5
+  # rx subrule "ws" subtype=method negate=
+    rx673_cur."!cursor_pos"(rx673_pos)
+    $P10 = rx673_cur."ws"()
+    unless $P10, rx673_fail
+    rx673_pos = $P10."pos"()
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx673_cur."!cursor_pos"(rx673_pos)
+    $P10 = rx673_cur."quote_EXPR"()
+    unless $P10, rx673_fail
+    rx673_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx673_pos = $P10."pos"()
+  # rx pass
+    rx673_cur."!cursor_pass"(rx673_pos, "quote:sym<Q:PIR>")
+    rx673_cur."!cursor_debug"("PASS  ", "quote:sym<Q:PIR>", " at pos=", rx673_pos)
+    .return (rx673_cur)
+  rx673_fail:
+.annotate "line", 4
+    (rx673_rep, rx673_pos, $I10, $P10) = rx673_cur."!mark_fail"(0)
+    lt rx673_pos, -1, rx673_done
+    eq rx673_pos, -1, rx673_fail
+    jump $I10
+  rx673_done:
+    rx673_cur."!cursor_fail"()
+    rx673_cur."!cursor_debug"("FAIL  ", "quote:sym<Q:PIR>")
+    .return (rx673_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("177_1258051419.23649") :method
+.annotate "line", 4
+    $P675 = self."!PREFIX__!subrule"("ws", "Q:PIR")
+    new $P676, "ResizablePMCArray"
+    push $P676, $P675
+    .return ($P676)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote_escape:sym<$>"  :subid("178_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx678_tgt
+    .local int rx678_pos
+    .local int rx678_off
+    .local int rx678_eos
+    .local int rx678_rep
+    .local pmc rx678_cur
+    (rx678_cur, rx678_pos, rx678_tgt, $I10) = self."!cursor_start"()
+    rx678_cur."!cursor_debug"("START ", "quote_escape:sym<$>")
+    .lex unicode:"$\x{a2}", rx678_cur
+    .local pmc match
+    .lex "$/", match
+    length rx678_eos, rx678_tgt
+    set rx678_off, 0
+    lt $I10, 2, rx678_start
+    sub rx678_off, $I10, 1
+    substr rx678_tgt, rx678_tgt, rx678_off
+  rx678_start:
+.annotate "line", 345
+  # rx enumcharlist negate=0 zerowidth
+    ge rx678_pos, rx678_eos, rx678_fail
+    sub $I10, rx678_pos, rx678_off
+    substr $S10, rx678_tgt, $I10, 1
+    index $I11, "$", $S10
+    lt $I11, 0, rx678_fail
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx678_cur."!cursor_pos"(rx678_pos)
+    $P10 = rx678_cur."quotemod_check"("s")
+    unless $P10, rx678_fail
+  # rx subrule "variable" subtype=capture negate=
+    rx678_cur."!cursor_pos"(rx678_pos)
+    $P10 = rx678_cur."variable"()
+    unless $P10, rx678_fail
+    rx678_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("variable")
+    rx678_pos = $P10."pos"()
+  # rx pass
+    rx678_cur."!cursor_pass"(rx678_pos, "quote_escape:sym<$>")
+    rx678_cur."!cursor_debug"("PASS  ", "quote_escape:sym<$>", " at pos=", rx678_pos)
+    .return (rx678_cur)
+  rx678_fail:
+.annotate "line", 4
+    (rx678_rep, rx678_pos, $I10, $P10) = rx678_cur."!mark_fail"(0)
+    lt rx678_pos, -1, rx678_done
+    eq rx678_pos, -1, rx678_fail
+    jump $I10
+  rx678_done:
+    rx678_cur."!cursor_fail"()
+    rx678_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<$>")
+    .return (rx678_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("179_1258051419.23649") :method
+.annotate "line", 4
+    new $P680, "ResizablePMCArray"
+    push $P680, "$"
+    .return ($P680)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "quote_escape:sym<{ }>"  :subid("180_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx682_tgt
+    .local int rx682_pos
+    .local int rx682_off
+    .local int rx682_eos
+    .local int rx682_rep
+    .local pmc rx682_cur
+    (rx682_cur, rx682_pos, rx682_tgt, $I10) = self."!cursor_start"()
+    rx682_cur."!cursor_debug"("START ", "quote_escape:sym<{ }>")
+    .lex unicode:"$\x{a2}", rx682_cur
+    .local pmc match
+    .lex "$/", match
+    length rx682_eos, rx682_tgt
+    set rx682_off, 0
+    lt $I10, 2, rx682_start
+    sub rx682_off, $I10, 1
+    substr rx682_tgt, rx682_tgt, rx682_off
+  rx682_start:
+.annotate "line", 346
+  # rx enumcharlist negate=0 zerowidth
+    ge rx682_pos, rx682_eos, rx682_fail
+    sub $I10, rx682_pos, rx682_off
+    substr $S10, rx682_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx682_fail
+  # rx subrule "quotemod_check" subtype=zerowidth negate=
+    rx682_cur."!cursor_pos"(rx682_pos)
+    $P10 = rx682_cur."quotemod_check"("c")
+    unless $P10, rx682_fail
+  # rx subrule "block" subtype=capture negate=
+    rx682_cur."!cursor_pos"(rx682_pos)
+    $P10 = rx682_cur."block"()
+    unless $P10, rx682_fail
+    rx682_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("block")
+    rx682_pos = $P10."pos"()
+  # rx pass
+    rx682_cur."!cursor_pass"(rx682_pos, "quote_escape:sym<{ }>")
+    rx682_cur."!cursor_debug"("PASS  ", "quote_escape:sym<{ }>", " at pos=", rx682_pos)
+    .return (rx682_cur)
+  rx682_fail:
+.annotate "line", 4
+    (rx682_rep, rx682_pos, $I10, $P10) = rx682_cur."!mark_fail"(0)
+    lt rx682_pos, -1, rx682_done
+    eq rx682_pos, -1, rx682_fail
+    jump $I10
+  rx682_done:
+    rx682_cur."!cursor_fail"()
+    rx682_cur."!cursor_debug"("FAIL  ", "quote_escape:sym<{ }>")
+    .return (rx682_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("181_1258051419.23649") :method
+.annotate "line", 4
+    new $P684, "ResizablePMCArray"
+    push $P684, "{"
+    .return ($P684)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "circumfix:sym<( )>"  :subid("182_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx686_tgt
+    .local int rx686_pos
+    .local int rx686_off
+    .local int rx686_eos
+    .local int rx686_rep
+    .local pmc rx686_cur
+    (rx686_cur, rx686_pos, rx686_tgt, $I10) = self."!cursor_start"()
+    rx686_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
+    rx686_cur."!cursor_caparray"("EXPR")
+    .lex unicode:"$\x{a2}", rx686_cur
+    .local pmc match
+    .lex "$/", match
+    length rx686_eos, rx686_tgt
+    set rx686_off, 0
+    lt $I10, 2, rx686_start
+    sub rx686_off, $I10, 1
+    substr rx686_tgt, rx686_tgt, rx686_off
+  rx686_start:
+.annotate "line", 348
+  # rx literal  "("
+    add $I11, rx686_pos, 1
+    gt $I11, rx686_eos, rx686_fail
+    sub $I11, rx686_pos, rx686_off
+    substr $S10, rx686_tgt, $I11, 1
+    ne $S10, "(", rx686_fail
+    add rx686_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx686_cur."!cursor_pos"(rx686_pos)
+    $P10 = rx686_cur."ws"()
+    unless $P10, rx686_fail
+    rx686_pos = $P10."pos"()
+  # rx rxquantr690 ** 0..1
+    set_addr $I691, rxquantr690_done
+    rx686_cur."!mark_push"(0, rx686_pos, $I691)
+  rxquantr690_loop:
+  # rx subrule "EXPR" subtype=capture negate=
+    rx686_cur."!cursor_pos"(rx686_pos)
+    $P10 = rx686_cur."EXPR"()
+    unless $P10, rx686_fail
+    rx686_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx686_pos = $P10."pos"()
+    (rx686_rep) = rx686_cur."!mark_commit"($I691)
+  rxquantr690_done:
+  # rx literal  ")"
+    add $I11, rx686_pos, 1
+    gt $I11, rx686_eos, rx686_fail
+    sub $I11, rx686_pos, rx686_off
+    substr $S10, rx686_tgt, $I11, 1
+    ne $S10, ")", rx686_fail
+    add rx686_pos, 1
+  # rx pass
+    rx686_cur."!cursor_pass"(rx686_pos, "circumfix:sym<( )>")
+    rx686_cur."!cursor_debug"("PASS  ", "circumfix:sym<( )>", " at pos=", rx686_pos)
+    .return (rx686_cur)
+  rx686_fail:
+.annotate "line", 4
+    (rx686_rep, rx686_pos, $I10, $P10) = rx686_cur."!mark_fail"(0)
+    lt rx686_pos, -1, rx686_done
+    eq rx686_pos, -1, rx686_fail
+    jump $I10
+  rx686_done:
+    rx686_cur."!cursor_fail"()
+    rx686_cur."!cursor_debug"("FAIL  ", "circumfix:sym<( )>")
+    .return (rx686_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("183_1258051419.23649") :method
+.annotate "line", 4
+    $P688 = self."!PREFIX__!subrule"("ws", "(")
+    new $P689, "ResizablePMCArray"
+    push $P689, $P688
+    .return ($P689)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "circumfix:sym<[ ]>"  :subid("184_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx693_tgt
+    .local int rx693_pos
+    .local int rx693_off
+    .local int rx693_eos
+    .local int rx693_rep
+    .local pmc rx693_cur
+    (rx693_cur, rx693_pos, rx693_tgt, $I10) = self."!cursor_start"()
+    rx693_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
+    rx693_cur."!cursor_caparray"("EXPR")
+    .lex unicode:"$\x{a2}", rx693_cur
+    .local pmc match
+    .lex "$/", match
+    length rx693_eos, rx693_tgt
+    set rx693_off, 0
+    lt $I10, 2, rx693_start
+    sub rx693_off, $I10, 1
+    substr rx693_tgt, rx693_tgt, rx693_off
+  rx693_start:
+.annotate "line", 349
+  # rx literal  "["
+    add $I11, rx693_pos, 1
+    gt $I11, rx693_eos, rx693_fail
+    sub $I11, rx693_pos, rx693_off
+    substr $S10, rx693_tgt, $I11, 1
+    ne $S10, "[", rx693_fail
+    add rx693_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx693_cur."!cursor_pos"(rx693_pos)
+    $P10 = rx693_cur."ws"()
+    unless $P10, rx693_fail
+    rx693_pos = $P10."pos"()
+  # rx rxquantr697 ** 0..1
+    set_addr $I698, rxquantr697_done
+    rx693_cur."!mark_push"(0, rx693_pos, $I698)
+  rxquantr697_loop:
+  # rx subrule "EXPR" subtype=capture negate=
+    rx693_cur."!cursor_pos"(rx693_pos)
+    $P10 = rx693_cur."EXPR"()
+    unless $P10, rx693_fail
+    rx693_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx693_pos = $P10."pos"()
+    (rx693_rep) = rx693_cur."!mark_commit"($I698)
+  rxquantr697_done:
+  # rx literal  "]"
+    add $I11, rx693_pos, 1
+    gt $I11, rx693_eos, rx693_fail
+    sub $I11, rx693_pos, rx693_off
+    substr $S10, rx693_tgt, $I11, 1
+    ne $S10, "]", rx693_fail
+    add rx693_pos, 1
+  # rx pass
+    rx693_cur."!cursor_pass"(rx693_pos, "circumfix:sym<[ ]>")
+    rx693_cur."!cursor_debug"("PASS  ", "circumfix:sym<[ ]>", " at pos=", rx693_pos)
+    .return (rx693_cur)
+  rx693_fail:
+.annotate "line", 4
+    (rx693_rep, rx693_pos, $I10, $P10) = rx693_cur."!mark_fail"(0)
+    lt rx693_pos, -1, rx693_done
+    eq rx693_pos, -1, rx693_fail
+    jump $I10
+  rx693_done:
+    rx693_cur."!cursor_fail"()
+    rx693_cur."!cursor_debug"("FAIL  ", "circumfix:sym<[ ]>")
+    .return (rx693_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("185_1258051419.23649") :method
+.annotate "line", 4
+    $P695 = self."!PREFIX__!subrule"("ws", "[")
+    new $P696, "ResizablePMCArray"
+    push $P696, $P695
+    .return ($P696)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "circumfix:sym<ang>"  :subid("186_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx700_tgt
+    .local int rx700_pos
+    .local int rx700_off
+    .local int rx700_eos
+    .local int rx700_rep
+    .local pmc rx700_cur
+    (rx700_cur, rx700_pos, rx700_tgt, $I10) = self."!cursor_start"()
+    rx700_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
+    .lex unicode:"$\x{a2}", rx700_cur
+    .local pmc match
+    .lex "$/", match
+    length rx700_eos, rx700_tgt
+    set rx700_off, 0
+    lt $I10, 2, rx700_start
+    sub rx700_off, $I10, 1
+    substr rx700_tgt, rx700_tgt, rx700_off
+  rx700_start:
+.annotate "line", 350
+  # rx enumcharlist negate=0 zerowidth
+    ge rx700_pos, rx700_eos, rx700_fail
+    sub $I10, rx700_pos, rx700_off
+    substr $S10, rx700_tgt, $I10, 1
+    index $I11, "<", $S10
+    lt $I11, 0, rx700_fail
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx700_cur."!cursor_pos"(rx700_pos)
+    $P10 = rx700_cur."quote_EXPR"(":q", ":w")
+    unless $P10, rx700_fail
+    rx700_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx700_pos = $P10."pos"()
+  # rx pass
+    rx700_cur."!cursor_pass"(rx700_pos, "circumfix:sym<ang>")
+    rx700_cur."!cursor_debug"("PASS  ", "circumfix:sym<ang>", " at pos=", rx700_pos)
+    .return (rx700_cur)
+  rx700_fail:
+.annotate "line", 4
+    (rx700_rep, rx700_pos, $I10, $P10) = rx700_cur."!mark_fail"(0)
+    lt rx700_pos, -1, rx700_done
+    eq rx700_pos, -1, rx700_fail
+    jump $I10
+  rx700_done:
+    rx700_cur."!cursor_fail"()
+    rx700_cur."!cursor_debug"("FAIL  ", "circumfix:sym<ang>")
+    .return (rx700_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("187_1258051419.23649") :method
+.annotate "line", 4
+    new $P702, "ResizablePMCArray"
+    push $P702, "<"
+    .return ($P702)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "circumfix:sym<{ }>"  :subid("188_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx704_tgt
+    .local int rx704_pos
+    .local int rx704_off
+    .local int rx704_eos
+    .local int rx704_rep
+    .local pmc rx704_cur
+    (rx704_cur, rx704_pos, rx704_tgt, $I10) = self."!cursor_start"()
+    rx704_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
+    .lex unicode:"$\x{a2}", rx704_cur
+    .local pmc match
+    .lex "$/", match
+    length rx704_eos, rx704_tgt
+    set rx704_off, 0
+    lt $I10, 2, rx704_start
+    sub rx704_off, $I10, 1
+    substr rx704_tgt, rx704_tgt, rx704_off
+  rx704_start:
+.annotate "line", 351
+  # rx enumcharlist negate=0 zerowidth
+    ge rx704_pos, rx704_eos, rx704_fail
+    sub $I10, rx704_pos, rx704_off
+    substr $S10, rx704_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx704_fail
+  # rx subrule "pblock" subtype=capture negate=
+    rx704_cur."!cursor_pos"(rx704_pos)
+    $P10 = rx704_cur."pblock"()
+    unless $P10, rx704_fail
+    rx704_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("pblock")
+    rx704_pos = $P10."pos"()
+  # rx pass
+    rx704_cur."!cursor_pass"(rx704_pos, "circumfix:sym<{ }>")
+    rx704_cur."!cursor_debug"("PASS  ", "circumfix:sym<{ }>", " at pos=", rx704_pos)
+    .return (rx704_cur)
+  rx704_fail:
+.annotate "line", 4
+    (rx704_rep, rx704_pos, $I10, $P10) = rx704_cur."!mark_fail"(0)
+    lt rx704_pos, -1, rx704_done
+    eq rx704_pos, -1, rx704_fail
+    jump $I10
+  rx704_done:
+    rx704_cur."!cursor_fail"()
+    rx704_cur."!cursor_debug"("FAIL  ", "circumfix:sym<{ }>")
+    .return (rx704_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("189_1258051419.23649") :method
+.annotate "line", 4
+    new $P706, "ResizablePMCArray"
+    push $P706, "{"
+    .return ($P706)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "circumfix:sym<sigil>"  :subid("190_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx708_tgt
+    .local int rx708_pos
+    .local int rx708_off
+    .local int rx708_eos
+    .local int rx708_rep
+    .local pmc rx708_cur
+    (rx708_cur, rx708_pos, rx708_tgt, $I10) = self."!cursor_start"()
+    rx708_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
+    .lex unicode:"$\x{a2}", rx708_cur
+    .local pmc match
+    .lex "$/", match
+    length rx708_eos, rx708_tgt
+    set rx708_off, 0
+    lt $I10, 2, rx708_start
+    sub rx708_off, $I10, 1
+    substr rx708_tgt, rx708_tgt, rx708_off
+  rx708_start:
+.annotate "line", 352
+  # rx subrule "sigil" subtype=capture negate=
+    rx708_cur."!cursor_pos"(rx708_pos)
+    $P10 = rx708_cur."sigil"()
+    unless $P10, rx708_fail
+    rx708_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sigil")
+    rx708_pos = $P10."pos"()
+  # rx literal  "("
+    add $I11, rx708_pos, 1
+    gt $I11, rx708_eos, rx708_fail
+    sub $I11, rx708_pos, rx708_off
+    substr $S10, rx708_tgt, $I11, 1
+    ne $S10, "(", rx708_fail
+    add rx708_pos, 1
+  # rx subrule "semilist" subtype=capture negate=
+    rx708_cur."!cursor_pos"(rx708_pos)
+    $P10 = rx708_cur."semilist"()
+    unless $P10, rx708_fail
+    rx708_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("semilist")
+    rx708_pos = $P10."pos"()
+  alt712_0:
+    set_addr $I10, alt712_1
+    rx708_cur."!mark_push"(0, rx708_pos, $I10)
+  # rx literal  ")"
+    add $I11, rx708_pos, 1
+    gt $I11, rx708_eos, rx708_fail
+    sub $I11, rx708_pos, rx708_off
+    substr $S10, rx708_tgt, $I11, 1
+    ne $S10, ")", rx708_fail
+    add rx708_pos, 1
+    goto alt712_end
+  alt712_1:
+  # rx subrule "FAILGOAL" subtype=method negate=
+    rx708_cur."!cursor_pos"(rx708_pos)
+    $P10 = rx708_cur."FAILGOAL"("')'")
+    unless $P10, rx708_fail
+    rx708_pos = $P10."pos"()
+  alt712_end:
+  # rx pass
+    rx708_cur."!cursor_pass"(rx708_pos, "circumfix:sym<sigil>")
+    rx708_cur."!cursor_debug"("PASS  ", "circumfix:sym<sigil>", " at pos=", rx708_pos)
+    .return (rx708_cur)
+  rx708_fail:
+.annotate "line", 4
+    (rx708_rep, rx708_pos, $I10, $P10) = rx708_cur."!mark_fail"(0)
+    lt rx708_pos, -1, rx708_done
+    eq rx708_pos, -1, rx708_fail
+    jump $I10
+  rx708_done:
+    rx708_cur."!cursor_fail"()
+    rx708_cur."!cursor_debug"("FAIL  ", "circumfix:sym<sigil>")
+    .return (rx708_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("191_1258051419.23649") :method
+.annotate "line", 4
+    $P710 = self."!PREFIX__!subrule"("sigil", "")
+    new $P711, "ResizablePMCArray"
+    push $P711, $P710
+    .return ($P711)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "semilist"  :subid("192_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 4
+    .local string rx715_tgt
+    .local int rx715_pos
+    .local int rx715_off
+    .local int rx715_eos
+    .local int rx715_rep
+    .local pmc rx715_cur
+    (rx715_cur, rx715_pos, rx715_tgt, $I10) = self."!cursor_start"()
+    rx715_cur."!cursor_debug"("START ", "semilist")
+    .lex unicode:"$\x{a2}", rx715_cur
+    .local pmc match
+    .lex "$/", match
+    length rx715_eos, rx715_tgt
+    set rx715_off, 0
+    lt $I10, 2, rx715_start
+    sub rx715_off, $I10, 1
+    substr rx715_tgt, rx715_tgt, rx715_off
+  rx715_start:
+.annotate "line", 354
+  # rx subrule "ws" subtype=method negate=
+    rx715_cur."!cursor_pos"(rx715_pos)
+    $P10 = rx715_cur."ws"()
+    unless $P10, rx715_fail
+    rx715_pos = $P10."pos"()
+  # rx subrule "statement" subtype=capture negate=
+    rx715_cur."!cursor_pos"(rx715_pos)
+    $P10 = rx715_cur."statement"()
+    unless $P10, rx715_fail
+    rx715_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement")
+    rx715_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx715_cur."!cursor_pos"(rx715_pos)
+    $P10 = rx715_cur."ws"()
+    unless $P10, rx715_fail
+    rx715_pos = $P10."pos"()
+  # rx pass
+    rx715_cur."!cursor_pass"(rx715_pos, "semilist")
+    rx715_cur."!cursor_debug"("PASS  ", "semilist", " at pos=", rx715_pos)
+    .return (rx715_cur)
+  rx715_fail:
+.annotate "line", 4
+    (rx715_rep, rx715_pos, $I10, $P10) = rx715_cur."!mark_fail"(0)
+    lt rx715_pos, -1, rx715_done
+    eq rx715_pos, -1, rx715_fail
+    jump $I10
+  rx715_done:
+    rx715_cur."!cursor_fail"()
+    rx715_cur."!cursor_debug"("FAIL  ", "semilist")
+    .return (rx715_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__semilist"  :subid("193_1258051419.23649") :method
+.annotate "line", 4
+    new $P717, "ResizablePMCArray"
+    push $P717, ""
+    .return ($P717)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "nulltermish"  :subid("194_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx721_tgt
+    .local int rx721_pos
+    .local int rx721_off
+    .local int rx721_eos
+    .local int rx721_rep
+    .local pmc rx721_cur
+    (rx721_cur, rx721_pos, rx721_tgt, $I10) = self."!cursor_start"()
+    rx721_cur."!cursor_debug"("START ", "nulltermish")
+    .lex unicode:"$\x{a2}", rx721_cur
+    .local pmc match
+    .lex "$/", match
+    length rx721_eos, rx721_tgt
+    set rx721_off, 0
+    lt $I10, 2, rx721_start
+    sub rx721_off, $I10, 1
+    substr rx721_tgt, rx721_tgt, rx721_off
+  rx721_start:
+  alt725_0:
+.annotate "line", 376
+    set_addr $I10, alt725_1
+    rx721_cur."!mark_push"(0, rx721_pos, $I10)
+.annotate "line", 377
+  # rx subrule "termish" subtype=capture negate=
+    rx721_cur."!cursor_pos"(rx721_pos)
+    $P10 = rx721_cur."termish"()
+    unless $P10, rx721_fail
+    rx721_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=term")
+    rx721_pos = $P10."pos"()
+    goto alt725_end
+  alt725_1:
+  alt725_end:
+.annotate "line", 376
+  # rx pass
+    rx721_cur."!cursor_pass"(rx721_pos, "nulltermish")
+    rx721_cur."!cursor_debug"("PASS  ", "nulltermish", " at pos=", rx721_pos)
+    .return (rx721_cur)
+  rx721_fail:
+.annotate "line", 358
+    (rx721_rep, rx721_pos, $I10, $P10) = rx721_cur."!mark_fail"(0)
+    lt rx721_pos, -1, rx721_done
+    eq rx721_pos, -1, rx721_fail
+    jump $I10
+  rx721_done:
+    rx721_cur."!cursor_fail"()
+    rx721_cur."!cursor_debug"("FAIL  ", "nulltermish")
+    .return (rx721_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__nulltermish"  :subid("195_1258051419.23649") :method
+.annotate "line", 358
+    $P723 = self."!PREFIX__!subrule"("OPER=term", "")
+    new $P724, "ResizablePMCArray"
+    push $P724, ""
+    push $P724, $P723
+    .return ($P724)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infixish"  :subid("196_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx727_tgt
+    .local int rx727_pos
+    .local int rx727_off
+    .local int rx727_eos
+    .local int rx727_rep
+    .local pmc rx727_cur
+    (rx727_cur, rx727_pos, rx727_tgt, $I10) = self."!cursor_start"()
+    rx727_cur."!cursor_debug"("START ", "infixish")
+    .lex unicode:"$\x{a2}", rx727_cur
+    .local pmc match
+    .lex "$/", match
+    length rx727_eos, rx727_tgt
+    set rx727_off, 0
+    lt $I10, 2, rx727_start
+    sub rx727_off, $I10, 1
+    substr rx727_tgt, rx727_tgt, rx727_off
+  rx727_start:
+.annotate "line", 381
+  # rx subrule "infixstopper" subtype=zerowidth negate=1
+    rx727_cur."!cursor_pos"(rx727_pos)
+    $P10 = rx727_cur."infixstopper"()
+    if $P10, rx727_fail
+  # rx subrule "infix" subtype=capture negate=
+    rx727_cur."!cursor_pos"(rx727_pos)
+    $P10 = rx727_cur."infix"()
+    unless $P10, rx727_fail
+    rx727_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("OPER=infix")
+    rx727_pos = $P10."pos"()
+  # rx pass
+    rx727_cur."!cursor_pass"(rx727_pos, "infixish")
+    rx727_cur."!cursor_debug"("PASS  ", "infixish", " at pos=", rx727_pos)
+    .return (rx727_cur)
+  rx727_fail:
+.annotate "line", 358
+    (rx727_rep, rx727_pos, $I10, $P10) = rx727_cur."!mark_fail"(0)
+    lt rx727_pos, -1, rx727_done
+    eq rx727_pos, -1, rx727_fail
+    jump $I10
+  rx727_done:
+    rx727_cur."!cursor_fail"()
+    rx727_cur."!cursor_debug"("FAIL  ", "infixish")
+    .return (rx727_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infixish"  :subid("197_1258051419.23649") :method
+.annotate "line", 358
+    new $P729, "ResizablePMCArray"
+    push $P729, ""
+    .return ($P729)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infixstopper"  :subid("198_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx731_tgt
+    .local int rx731_pos
+    .local int rx731_off
+    .local int rx731_eos
+    .local int rx731_rep
+    .local pmc rx731_cur
+    (rx731_cur, rx731_pos, rx731_tgt, $I10) = self."!cursor_start"()
+    rx731_cur."!cursor_debug"("START ", "infixstopper")
+    .lex unicode:"$\x{a2}", rx731_cur
+    .local pmc match
+    .lex "$/", match
+    length rx731_eos, rx731_tgt
+    set rx731_off, 0
+    lt $I10, 2, rx731_start
+    sub rx731_off, $I10, 1
+    substr rx731_tgt, rx731_tgt, rx731_off
+  rx731_start:
+.annotate "line", 382
+  # rx subrule "lambda" subtype=zerowidth negate=
+    rx731_cur."!cursor_pos"(rx731_pos)
+    $P10 = rx731_cur."lambda"()
+    unless $P10, rx731_fail
+  # rx pass
+    rx731_cur."!cursor_pass"(rx731_pos, "infixstopper")
+    rx731_cur."!cursor_debug"("PASS  ", "infixstopper", " at pos=", rx731_pos)
+    .return (rx731_cur)
+  rx731_fail:
+.annotate "line", 358
+    (rx731_rep, rx731_pos, $I10, $P10) = rx731_cur."!mark_fail"(0)
+    lt rx731_pos, -1, rx731_done
+    eq rx731_pos, -1, rx731_fail
+    jump $I10
+  rx731_done:
+    rx731_cur."!cursor_fail"()
+    rx731_cur."!cursor_debug"("FAIL  ", "infixstopper")
+    .return (rx731_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infixstopper"  :subid("199_1258051419.23649") :method
+.annotate "line", 358
+    new $P733, "ResizablePMCArray"
+    push $P733, ""
+    .return ($P733)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postcircumfix:sym<[ ]>"  :subid("200_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx735_tgt
+    .local int rx735_pos
+    .local int rx735_off
+    .local int rx735_eos
+    .local int rx735_rep
+    .local pmc rx735_cur
+    (rx735_cur, rx735_pos, rx735_tgt, $I10) = self."!cursor_start"()
+    rx735_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
+    .lex unicode:"$\x{a2}", rx735_cur
+    .local pmc match
+    .lex "$/", match
+    length rx735_eos, rx735_tgt
+    set rx735_off, 0
+    lt $I10, 2, rx735_start
+    sub rx735_off, $I10, 1
+    substr rx735_tgt, rx735_tgt, rx735_off
+  rx735_start:
+.annotate "line", 385
+  # rx literal  "["
+    add $I11, rx735_pos, 1
+    gt $I11, rx735_eos, rx735_fail
+    sub $I11, rx735_pos, rx735_off
+    substr $S10, rx735_tgt, $I11, 1
+    ne $S10, "[", rx735_fail
+    add rx735_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx735_cur."!cursor_pos"(rx735_pos)
+    $P10 = rx735_cur."ws"()
+    unless $P10, rx735_fail
+    rx735_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx735_cur."!cursor_pos"(rx735_pos)
+    $P10 = rx735_cur."EXPR"()
+    unless $P10, rx735_fail
+    rx735_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx735_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx735_pos, 1
+    gt $I11, rx735_eos, rx735_fail
+    sub $I11, rx735_pos, rx735_off
+    substr $S10, rx735_tgt, $I11, 1
+    ne $S10, "]", rx735_fail
+    add rx735_pos, 1
+.annotate "line", 386
+  # rx subrule "O" subtype=capture negate=
+    rx735_cur."!cursor_pos"(rx735_pos)
+    $P10 = rx735_cur."O"("%methodop")
+    unless $P10, rx735_fail
+    rx735_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx735_pos = $P10."pos"()
+.annotate "line", 384
+  # rx pass
+    rx735_cur."!cursor_pass"(rx735_pos, "postcircumfix:sym<[ ]>")
+    rx735_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<[ ]>", " at pos=", rx735_pos)
+    .return (rx735_cur)
+  rx735_fail:
+.annotate "line", 358
+    (rx735_rep, rx735_pos, $I10, $P10) = rx735_cur."!mark_fail"(0)
+    lt rx735_pos, -1, rx735_done
+    eq rx735_pos, -1, rx735_fail
+    jump $I10
+  rx735_done:
+    rx735_cur."!cursor_fail"()
+    rx735_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<[ ]>")
+    .return (rx735_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("201_1258051419.23649") :method
+.annotate "line", 358
+    $P737 = self."!PREFIX__!subrule"("ws", "[")
+    new $P738, "ResizablePMCArray"
+    push $P738, $P737
+    .return ($P738)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postcircumfix:sym<{ }>"  :subid("202_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx740_tgt
+    .local int rx740_pos
+    .local int rx740_off
+    .local int rx740_eos
+    .local int rx740_rep
+    .local pmc rx740_cur
+    (rx740_cur, rx740_pos, rx740_tgt, $I10) = self."!cursor_start"()
+    rx740_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
+    .lex unicode:"$\x{a2}", rx740_cur
+    .local pmc match
+    .lex "$/", match
+    length rx740_eos, rx740_tgt
+    set rx740_off, 0
+    lt $I10, 2, rx740_start
+    sub rx740_off, $I10, 1
+    substr rx740_tgt, rx740_tgt, rx740_off
+  rx740_start:
+.annotate "line", 390
+  # rx literal  "{"
+    add $I11, rx740_pos, 1
+    gt $I11, rx740_eos, rx740_fail
+    sub $I11, rx740_pos, rx740_off
+    substr $S10, rx740_tgt, $I11, 1
+    ne $S10, "{", rx740_fail
+    add rx740_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx740_cur."!cursor_pos"(rx740_pos)
+    $P10 = rx740_cur."ws"()
+    unless $P10, rx740_fail
+    rx740_pos = $P10."pos"()
+  # rx subrule "EXPR" subtype=capture negate=
+    rx740_cur."!cursor_pos"(rx740_pos)
+    $P10 = rx740_cur."EXPR"()
+    unless $P10, rx740_fail
+    rx740_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx740_pos = $P10."pos"()
+  # rx literal  "}"
+    add $I11, rx740_pos, 1
+    gt $I11, rx740_eos, rx740_fail
+    sub $I11, rx740_pos, rx740_off
+    substr $S10, rx740_tgt, $I11, 1
+    ne $S10, "}", rx740_fail
+    add rx740_pos, 1
+.annotate "line", 391
+  # rx subrule "O" subtype=capture negate=
+    rx740_cur."!cursor_pos"(rx740_pos)
+    $P10 = rx740_cur."O"("%methodop")
+    unless $P10, rx740_fail
+    rx740_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx740_pos = $P10."pos"()
+.annotate "line", 389
+  # rx pass
+    rx740_cur."!cursor_pass"(rx740_pos, "postcircumfix:sym<{ }>")
+    rx740_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<{ }>", " at pos=", rx740_pos)
+    .return (rx740_cur)
+  rx740_fail:
+.annotate "line", 358
+    (rx740_rep, rx740_pos, $I10, $P10) = rx740_cur."!mark_fail"(0)
+    lt rx740_pos, -1, rx740_done
+    eq rx740_pos, -1, rx740_fail
+    jump $I10
+  rx740_done:
+    rx740_cur."!cursor_fail"()
+    rx740_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<{ }>")
+    .return (rx740_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("203_1258051419.23649") :method
+.annotate "line", 358
+    $P742 = self."!PREFIX__!subrule"("ws", "{")
+    new $P743, "ResizablePMCArray"
+    push $P743, $P742
+    .return ($P743)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postcircumfix:sym<ang>"  :subid("204_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx745_tgt
+    .local int rx745_pos
+    .local int rx745_off
+    .local int rx745_eos
+    .local int rx745_rep
+    .local pmc rx745_cur
+    (rx745_cur, rx745_pos, rx745_tgt, $I10) = self."!cursor_start"()
+    rx745_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
+    .lex unicode:"$\x{a2}", rx745_cur
+    .local pmc match
+    .lex "$/", match
+    length rx745_eos, rx745_tgt
+    set rx745_off, 0
+    lt $I10, 2, rx745_start
+    sub rx745_off, $I10, 1
+    substr rx745_tgt, rx745_tgt, rx745_off
+  rx745_start:
+.annotate "line", 395
+  # rx enumcharlist negate=0 zerowidth
+    ge rx745_pos, rx745_eos, rx745_fail
+    sub $I10, rx745_pos, rx745_off
+    substr $S10, rx745_tgt, $I10, 1
+    index $I11, "<", $S10
+    lt $I11, 0, rx745_fail
+  # rx subrule "quote_EXPR" subtype=capture negate=
+    rx745_cur."!cursor_pos"(rx745_pos)
+    $P10 = rx745_cur."quote_EXPR"(":q")
+    unless $P10, rx745_fail
+    rx745_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote_EXPR")
+    rx745_pos = $P10."pos"()
+.annotate "line", 396
+  # rx subrule "O" subtype=capture negate=
+    rx745_cur."!cursor_pos"(rx745_pos)
+    $P10 = rx745_cur."O"("%methodop")
+    unless $P10, rx745_fail
+    rx745_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx745_pos = $P10."pos"()
+.annotate "line", 394
+  # rx pass
+    rx745_cur."!cursor_pass"(rx745_pos, "postcircumfix:sym<ang>")
+    rx745_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<ang>", " at pos=", rx745_pos)
+    .return (rx745_cur)
+  rx745_fail:
+.annotate "line", 358
+    (rx745_rep, rx745_pos, $I10, $P10) = rx745_cur."!mark_fail"(0)
+    lt rx745_pos, -1, rx745_done
+    eq rx745_pos, -1, rx745_fail
+    jump $I10
+  rx745_done:
+    rx745_cur."!cursor_fail"()
+    rx745_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<ang>")
+    .return (rx745_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("205_1258051419.23649") :method
+.annotate "line", 358
+    new $P747, "ResizablePMCArray"
+    push $P747, "<"
+    .return ($P747)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postcircumfix:sym<( )>"  :subid("206_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx749_tgt
+    .local int rx749_pos
+    .local int rx749_off
+    .local int rx749_eos
+    .local int rx749_rep
+    .local pmc rx749_cur
+    (rx749_cur, rx749_pos, rx749_tgt, $I10) = self."!cursor_start"()
+    rx749_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
+    .lex unicode:"$\x{a2}", rx749_cur
+    .local pmc match
+    .lex "$/", match
+    length rx749_eos, rx749_tgt
+    set rx749_off, 0
+    lt $I10, 2, rx749_start
+    sub rx749_off, $I10, 1
+    substr rx749_tgt, rx749_tgt, rx749_off
+  rx749_start:
+.annotate "line", 400
+  # rx literal  "("
+    add $I11, rx749_pos, 1
+    gt $I11, rx749_eos, rx749_fail
+    sub $I11, rx749_pos, rx749_off
+    substr $S10, rx749_tgt, $I11, 1
+    ne $S10, "(", rx749_fail
+    add rx749_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx749_cur."!cursor_pos"(rx749_pos)
+    $P10 = rx749_cur."ws"()
+    unless $P10, rx749_fail
+    rx749_pos = $P10."pos"()
+  # rx subrule "arglist" subtype=capture negate=
+    rx749_cur."!cursor_pos"(rx749_pos)
+    $P10 = rx749_cur."arglist"()
+    unless $P10, rx749_fail
+    rx749_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx749_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx749_pos, 1
+    gt $I11, rx749_eos, rx749_fail
+    sub $I11, rx749_pos, rx749_off
+    substr $S10, rx749_tgt, $I11, 1
+    ne $S10, ")", rx749_fail
+    add rx749_pos, 1
+.annotate "line", 401
+  # rx subrule "O" subtype=capture negate=
+    rx749_cur."!cursor_pos"(rx749_pos)
+    $P10 = rx749_cur."O"("%methodop")
+    unless $P10, rx749_fail
+    rx749_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx749_pos = $P10."pos"()
+.annotate "line", 399
+  # rx pass
+    rx749_cur."!cursor_pass"(rx749_pos, "postcircumfix:sym<( )>")
+    rx749_cur."!cursor_debug"("PASS  ", "postcircumfix:sym<( )>", " at pos=", rx749_pos)
+    .return (rx749_cur)
+  rx749_fail:
+.annotate "line", 358
+    (rx749_rep, rx749_pos, $I10, $P10) = rx749_cur."!mark_fail"(0)
+    lt rx749_pos, -1, rx749_done
+    eq rx749_pos, -1, rx749_fail
+    jump $I10
+  rx749_done:
+    rx749_cur."!cursor_fail"()
+    rx749_cur."!cursor_debug"("FAIL  ", "postcircumfix:sym<( )>")
+    .return (rx749_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("207_1258051419.23649") :method
+.annotate "line", 358
+    $P751 = self."!PREFIX__!subrule"("ws", "(")
+    new $P752, "ResizablePMCArray"
+    push $P752, $P751
+    .return ($P752)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postfix:sym<.>"  :subid("208_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx754_tgt
+    .local int rx754_pos
+    .local int rx754_off
+    .local int rx754_eos
+    .local int rx754_rep
+    .local pmc rx754_cur
+    (rx754_cur, rx754_pos, rx754_tgt, $I10) = self."!cursor_start"()
+    rx754_cur."!cursor_debug"("START ", "postfix:sym<.>")
+    .lex unicode:"$\x{a2}", rx754_cur
+    .local pmc match
+    .lex "$/", match
+    length rx754_eos, rx754_tgt
+    set rx754_off, 0
+    lt $I10, 2, rx754_start
+    sub rx754_off, $I10, 1
+    substr rx754_tgt, rx754_tgt, rx754_off
+  rx754_start:
+.annotate "line", 404
+  # rx subrule "dotty" subtype=capture negate=
+    rx754_cur."!cursor_pos"(rx754_pos)
+    $P10 = rx754_cur."dotty"()
+    unless $P10, rx754_fail
+    rx754_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("dotty")
+    rx754_pos = $P10."pos"()
+  # rx subrule "O" subtype=capture negate=
+    rx754_cur."!cursor_pos"(rx754_pos)
+    $P10 = rx754_cur."O"("%methodop")
+    unless $P10, rx754_fail
+    rx754_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx754_pos = $P10."pos"()
+  # rx pass
+    rx754_cur."!cursor_pass"(rx754_pos, "postfix:sym<.>")
+    rx754_cur."!cursor_debug"("PASS  ", "postfix:sym<.>", " at pos=", rx754_pos)
+    .return (rx754_cur)
+  rx754_fail:
+.annotate "line", 358
+    (rx754_rep, rx754_pos, $I10, $P10) = rx754_cur."!mark_fail"(0)
+    lt rx754_pos, -1, rx754_done
+    eq rx754_pos, -1, rx754_fail
+    jump $I10
+  rx754_done:
+    rx754_cur."!cursor_fail"()
+    rx754_cur."!cursor_debug"("FAIL  ", "postfix:sym<.>")
+    .return (rx754_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postfix:sym<.>"  :subid("209_1258051419.23649") :method
+.annotate "line", 358
+    $P756 = self."!PREFIX__!subrule"("dotty", "")
+    new $P757, "ResizablePMCArray"
+    push $P757, $P756
+    .return ($P757)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<++>"  :subid("210_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx759_tgt
+    .local int rx759_pos
+    .local int rx759_off
+    .local int rx759_eos
+    .local int rx759_rep
+    .local pmc rx759_cur
+    (rx759_cur, rx759_pos, rx759_tgt, $I10) = self."!cursor_start"()
+    rx759_cur."!cursor_debug"("START ", "prefix:sym<++>")
+    .lex unicode:"$\x{a2}", rx759_cur
+    .local pmc match
+    .lex "$/", match
+    length rx759_eos, rx759_tgt
+    set rx759_off, 0
+    lt $I10, 2, rx759_start
+    sub rx759_off, $I10, 1
+    substr rx759_tgt, rx759_tgt, rx759_off
+  rx759_start:
+.annotate "line", 406
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_763_fail
+    rx759_cur."!mark_push"(0, rx759_pos, $I10)
+  # rx literal  "++"
+    add $I11, rx759_pos, 2
+    gt $I11, rx759_eos, rx759_fail
+    sub $I11, rx759_pos, rx759_off
+    substr $S10, rx759_tgt, $I11, 2
+    ne $S10, "++", rx759_fail
+    add rx759_pos, 2
+    set_addr $I10, rxcap_763_fail
+    ($I12, $I11) = rx759_cur."!mark_peek"($I10)
+    rx759_cur."!cursor_pos"($I11)
+    ($P10) = rx759_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx759_pos, "")
+    rx759_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_763_done
+  rxcap_763_fail:
+    goto rx759_fail
+  rxcap_763_done:
+  # rx subrule "O" subtype=capture negate=
+    rx759_cur."!cursor_pos"(rx759_pos)
+    $P10 = rx759_cur."O"("%autoincrement, :pirop<inc>")
+    unless $P10, rx759_fail
+    rx759_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx759_pos = $P10."pos"()
+  # rx pass
+    rx759_cur."!cursor_pass"(rx759_pos, "prefix:sym<++>")
+    rx759_cur."!cursor_debug"("PASS  ", "prefix:sym<++>", " at pos=", rx759_pos)
+    .return (rx759_cur)
+  rx759_fail:
+.annotate "line", 358
+    (rx759_rep, rx759_pos, $I10, $P10) = rx759_cur."!mark_fail"(0)
+    lt rx759_pos, -1, rx759_done
+    eq rx759_pos, -1, rx759_fail
+    jump $I10
+  rx759_done:
+    rx759_cur."!cursor_fail"()
+    rx759_cur."!cursor_debug"("FAIL  ", "prefix:sym<++>")
+    .return (rx759_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<++>"  :subid("211_1258051419.23649") :method
+.annotate "line", 358
+    $P761 = self."!PREFIX__!subrule"("O", "++")
+    new $P762, "ResizablePMCArray"
+    push $P762, $P761
+    .return ($P762)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<-->"  :subid("212_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx765_tgt
+    .local int rx765_pos
+    .local int rx765_off
+    .local int rx765_eos
+    .local int rx765_rep
+    .local pmc rx765_cur
+    (rx765_cur, rx765_pos, rx765_tgt, $I10) = self."!cursor_start"()
+    rx765_cur."!cursor_debug"("START ", "prefix:sym<-->")
+    .lex unicode:"$\x{a2}", rx765_cur
+    .local pmc match
+    .lex "$/", match
+    length rx765_eos, rx765_tgt
+    set rx765_off, 0
+    lt $I10, 2, rx765_start
+    sub rx765_off, $I10, 1
+    substr rx765_tgt, rx765_tgt, rx765_off
+  rx765_start:
+.annotate "line", 407
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_769_fail
+    rx765_cur."!mark_push"(0, rx765_pos, $I10)
+  # rx literal  "--"
+    add $I11, rx765_pos, 2
+    gt $I11, rx765_eos, rx765_fail
+    sub $I11, rx765_pos, rx765_off
+    substr $S10, rx765_tgt, $I11, 2
+    ne $S10, "--", rx765_fail
+    add rx765_pos, 2
+    set_addr $I10, rxcap_769_fail
+    ($I12, $I11) = rx765_cur."!mark_peek"($I10)
+    rx765_cur."!cursor_pos"($I11)
+    ($P10) = rx765_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx765_pos, "")
+    rx765_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_769_done
+  rxcap_769_fail:
+    goto rx765_fail
+  rxcap_769_done:
+  # rx subrule "O" subtype=capture negate=
+    rx765_cur."!cursor_pos"(rx765_pos)
+    $P10 = rx765_cur."O"("%autoincrement, :pirop<dec>")
+    unless $P10, rx765_fail
+    rx765_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx765_pos = $P10."pos"()
+  # rx pass
+    rx765_cur."!cursor_pass"(rx765_pos, "prefix:sym<-->")
+    rx765_cur."!cursor_debug"("PASS  ", "prefix:sym<-->", " at pos=", rx765_pos)
+    .return (rx765_cur)
+  rx765_fail:
+.annotate "line", 358
+    (rx765_rep, rx765_pos, $I10, $P10) = rx765_cur."!mark_fail"(0)
+    lt rx765_pos, -1, rx765_done
+    eq rx765_pos, -1, rx765_fail
+    jump $I10
+  rx765_done:
+    rx765_cur."!cursor_fail"()
+    rx765_cur."!cursor_debug"("FAIL  ", "prefix:sym<-->")
+    .return (rx765_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<-->"  :subid("213_1258051419.23649") :method
+.annotate "line", 358
+    $P767 = self."!PREFIX__!subrule"("O", "--")
+    new $P768, "ResizablePMCArray"
+    push $P768, $P767
+    .return ($P768)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postfix:sym<++>"  :subid("214_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx771_tgt
+    .local int rx771_pos
+    .local int rx771_off
+    .local int rx771_eos
+    .local int rx771_rep
+    .local pmc rx771_cur
+    (rx771_cur, rx771_pos, rx771_tgt, $I10) = self."!cursor_start"()
+    rx771_cur."!cursor_debug"("START ", "postfix:sym<++>")
+    .lex unicode:"$\x{a2}", rx771_cur
+    .local pmc match
+    .lex "$/", match
+    length rx771_eos, rx771_tgt
+    set rx771_off, 0
+    lt $I10, 2, rx771_start
+    sub rx771_off, $I10, 1
+    substr rx771_tgt, rx771_tgt, rx771_off
+  rx771_start:
+.annotate "line", 410
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_775_fail
+    rx771_cur."!mark_push"(0, rx771_pos, $I10)
+  # rx literal  "++"
+    add $I11, rx771_pos, 2
+    gt $I11, rx771_eos, rx771_fail
+    sub $I11, rx771_pos, rx771_off
+    substr $S10, rx771_tgt, $I11, 2
+    ne $S10, "++", rx771_fail
+    add rx771_pos, 2
+    set_addr $I10, rxcap_775_fail
+    ($I12, $I11) = rx771_cur."!mark_peek"($I10)
+    rx771_cur."!cursor_pos"($I11)
+    ($P10) = rx771_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx771_pos, "")
+    rx771_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_775_done
+  rxcap_775_fail:
+    goto rx771_fail
+  rxcap_775_done:
+  # rx subrule "O" subtype=capture negate=
+    rx771_cur."!cursor_pos"(rx771_pos)
+    $P10 = rx771_cur."O"("%autoincrement")
+    unless $P10, rx771_fail
+    rx771_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx771_pos = $P10."pos"()
+  # rx pass
+    rx771_cur."!cursor_pass"(rx771_pos, "postfix:sym<++>")
+    rx771_cur."!cursor_debug"("PASS  ", "postfix:sym<++>", " at pos=", rx771_pos)
+    .return (rx771_cur)
+  rx771_fail:
+.annotate "line", 358
+    (rx771_rep, rx771_pos, $I10, $P10) = rx771_cur."!mark_fail"(0)
+    lt rx771_pos, -1, rx771_done
+    eq rx771_pos, -1, rx771_fail
+    jump $I10
+  rx771_done:
+    rx771_cur."!cursor_fail"()
+    rx771_cur."!cursor_debug"("FAIL  ", "postfix:sym<++>")
+    .return (rx771_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postfix:sym<++>"  :subid("215_1258051419.23649") :method
+.annotate "line", 358
+    $P773 = self."!PREFIX__!subrule"("O", "++")
+    new $P774, "ResizablePMCArray"
+    push $P774, $P773
+    .return ($P774)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "postfix:sym<-->"  :subid("216_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx777_tgt
+    .local int rx777_pos
+    .local int rx777_off
+    .local int rx777_eos
+    .local int rx777_rep
+    .local pmc rx777_cur
+    (rx777_cur, rx777_pos, rx777_tgt, $I10) = self."!cursor_start"()
+    rx777_cur."!cursor_debug"("START ", "postfix:sym<-->")
+    .lex unicode:"$\x{a2}", rx777_cur
+    .local pmc match
+    .lex "$/", match
+    length rx777_eos, rx777_tgt
+    set rx777_off, 0
+    lt $I10, 2, rx777_start
+    sub rx777_off, $I10, 1
+    substr rx777_tgt, rx777_tgt, rx777_off
+  rx777_start:
+.annotate "line", 411
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_781_fail
+    rx777_cur."!mark_push"(0, rx777_pos, $I10)
+  # rx literal  "--"
+    add $I11, rx777_pos, 2
+    gt $I11, rx777_eos, rx777_fail
+    sub $I11, rx777_pos, rx777_off
+    substr $S10, rx777_tgt, $I11, 2
+    ne $S10, "--", rx777_fail
+    add rx777_pos, 2
+    set_addr $I10, rxcap_781_fail
+    ($I12, $I11) = rx777_cur."!mark_peek"($I10)
+    rx777_cur."!cursor_pos"($I11)
+    ($P10) = rx777_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx777_pos, "")
+    rx777_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_781_done
+  rxcap_781_fail:
+    goto rx777_fail
+  rxcap_781_done:
+  # rx subrule "O" subtype=capture negate=
+    rx777_cur."!cursor_pos"(rx777_pos)
+    $P10 = rx777_cur."O"("%autoincrement")
+    unless $P10, rx777_fail
+    rx777_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx777_pos = $P10."pos"()
+  # rx pass
+    rx777_cur."!cursor_pass"(rx777_pos, "postfix:sym<-->")
+    rx777_cur."!cursor_debug"("PASS  ", "postfix:sym<-->", " at pos=", rx777_pos)
+    .return (rx777_cur)
+  rx777_fail:
+.annotate "line", 358
+    (rx777_rep, rx777_pos, $I10, $P10) = rx777_cur."!mark_fail"(0)
+    lt rx777_pos, -1, rx777_done
+    eq rx777_pos, -1, rx777_fail
+    jump $I10
+  rx777_done:
+    rx777_cur."!cursor_fail"()
+    rx777_cur."!cursor_debug"("FAIL  ", "postfix:sym<-->")
+    .return (rx777_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__postfix:sym<-->"  :subid("217_1258051419.23649") :method
+.annotate "line", 358
+    $P779 = self."!PREFIX__!subrule"("O", "--")
+    new $P780, "ResizablePMCArray"
+    push $P780, $P779
+    .return ($P780)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<**>"  :subid("218_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx783_tgt
+    .local int rx783_pos
+    .local int rx783_off
+    .local int rx783_eos
+    .local int rx783_rep
+    .local pmc rx783_cur
+    (rx783_cur, rx783_pos, rx783_tgt, $I10) = self."!cursor_start"()
+    rx783_cur."!cursor_debug"("START ", "infix:sym<**>")
+    .lex unicode:"$\x{a2}", rx783_cur
+    .local pmc match
+    .lex "$/", match
+    length rx783_eos, rx783_tgt
+    set rx783_off, 0
+    lt $I10, 2, rx783_start
+    sub rx783_off, $I10, 1
+    substr rx783_tgt, rx783_tgt, rx783_off
+  rx783_start:
+.annotate "line", 413
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_787_fail
+    rx783_cur."!mark_push"(0, rx783_pos, $I10)
+  # rx literal  "**"
+    add $I11, rx783_pos, 2
+    gt $I11, rx783_eos, rx783_fail
+    sub $I11, rx783_pos, rx783_off
+    substr $S10, rx783_tgt, $I11, 2
+    ne $S10, "**", rx783_fail
+    add rx783_pos, 2
+    set_addr $I10, rxcap_787_fail
+    ($I12, $I11) = rx783_cur."!mark_peek"($I10)
+    rx783_cur."!cursor_pos"($I11)
+    ($P10) = rx783_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx783_pos, "")
+    rx783_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_787_done
+  rxcap_787_fail:
+    goto rx783_fail
+  rxcap_787_done:
+  # rx subrule "O" subtype=capture negate=
+    rx783_cur."!cursor_pos"(rx783_pos)
+    $P10 = rx783_cur."O"("%exponentiation, :pirop<pow>")
+    unless $P10, rx783_fail
+    rx783_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx783_pos = $P10."pos"()
+  # rx pass
+    rx783_cur."!cursor_pass"(rx783_pos, "infix:sym<**>")
+    rx783_cur."!cursor_debug"("PASS  ", "infix:sym<**>", " at pos=", rx783_pos)
+    .return (rx783_cur)
+  rx783_fail:
+.annotate "line", 358
+    (rx783_rep, rx783_pos, $I10, $P10) = rx783_cur."!mark_fail"(0)
+    lt rx783_pos, -1, rx783_done
+    eq rx783_pos, -1, rx783_fail
+    jump $I10
+  rx783_done:
+    rx783_cur."!cursor_fail"()
+    rx783_cur."!cursor_debug"("FAIL  ", "infix:sym<**>")
+    .return (rx783_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<**>"  :subid("219_1258051419.23649") :method
+.annotate "line", 358
+    $P785 = self."!PREFIX__!subrule"("O", "**")
+    new $P786, "ResizablePMCArray"
+    push $P786, $P785
+    .return ($P786)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<+>"  :subid("220_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx789_tgt
+    .local int rx789_pos
+    .local int rx789_off
+    .local int rx789_eos
+    .local int rx789_rep
+    .local pmc rx789_cur
+    (rx789_cur, rx789_pos, rx789_tgt, $I10) = self."!cursor_start"()
+    rx789_cur."!cursor_debug"("START ", "prefix:sym<+>")
+    .lex unicode:"$\x{a2}", rx789_cur
+    .local pmc match
+    .lex "$/", match
+    length rx789_eos, rx789_tgt
+    set rx789_off, 0
+    lt $I10, 2, rx789_start
+    sub rx789_off, $I10, 1
+    substr rx789_tgt, rx789_tgt, rx789_off
+  rx789_start:
+.annotate "line", 415
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_793_fail
+    rx789_cur."!mark_push"(0, rx789_pos, $I10)
+  # rx literal  "+"
+    add $I11, rx789_pos, 1
+    gt $I11, rx789_eos, rx789_fail
+    sub $I11, rx789_pos, rx789_off
+    substr $S10, rx789_tgt, $I11, 1
+    ne $S10, "+", rx789_fail
+    add rx789_pos, 1
+    set_addr $I10, rxcap_793_fail
+    ($I12, $I11) = rx789_cur."!mark_peek"($I10)
+    rx789_cur."!cursor_pos"($I11)
+    ($P10) = rx789_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx789_pos, "")
+    rx789_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_793_done
+  rxcap_793_fail:
+    goto rx789_fail
+  rxcap_793_done:
+  # rx subrule "O" subtype=capture negate=
+    rx789_cur."!cursor_pos"(rx789_pos)
+    $P10 = rx789_cur."O"("%symbolic_unary, :pirop<set N*>")
+    unless $P10, rx789_fail
+    rx789_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx789_pos = $P10."pos"()
+  # rx pass
+    rx789_cur."!cursor_pass"(rx789_pos, "prefix:sym<+>")
+    rx789_cur."!cursor_debug"("PASS  ", "prefix:sym<+>", " at pos=", rx789_pos)
+    .return (rx789_cur)
+  rx789_fail:
+.annotate "line", 358
+    (rx789_rep, rx789_pos, $I10, $P10) = rx789_cur."!mark_fail"(0)
+    lt rx789_pos, -1, rx789_done
+    eq rx789_pos, -1, rx789_fail
+    jump $I10
+  rx789_done:
+    rx789_cur."!cursor_fail"()
+    rx789_cur."!cursor_debug"("FAIL  ", "prefix:sym<+>")
+    .return (rx789_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<+>"  :subid("221_1258051419.23649") :method
+.annotate "line", 358
+    $P791 = self."!PREFIX__!subrule"("O", "+")
+    new $P792, "ResizablePMCArray"
+    push $P792, $P791
+    .return ($P792)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<~>"  :subid("222_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx795_tgt
+    .local int rx795_pos
+    .local int rx795_off
+    .local int rx795_eos
+    .local int rx795_rep
+    .local pmc rx795_cur
+    (rx795_cur, rx795_pos, rx795_tgt, $I10) = self."!cursor_start"()
+    rx795_cur."!cursor_debug"("START ", "prefix:sym<~>")
+    .lex unicode:"$\x{a2}", rx795_cur
+    .local pmc match
+    .lex "$/", match
+    length rx795_eos, rx795_tgt
+    set rx795_off, 0
+    lt $I10, 2, rx795_start
+    sub rx795_off, $I10, 1
+    substr rx795_tgt, rx795_tgt, rx795_off
+  rx795_start:
+.annotate "line", 416
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_799_fail
+    rx795_cur."!mark_push"(0, rx795_pos, $I10)
+  # rx literal  "~"
+    add $I11, rx795_pos, 1
+    gt $I11, rx795_eos, rx795_fail
+    sub $I11, rx795_pos, rx795_off
+    substr $S10, rx795_tgt, $I11, 1
+    ne $S10, "~", rx795_fail
+    add rx795_pos, 1
+    set_addr $I10, rxcap_799_fail
+    ($I12, $I11) = rx795_cur."!mark_peek"($I10)
+    rx795_cur."!cursor_pos"($I11)
+    ($P10) = rx795_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx795_pos, "")
+    rx795_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_799_done
+  rxcap_799_fail:
+    goto rx795_fail
+  rxcap_799_done:
+  # rx subrule "O" subtype=capture negate=
+    rx795_cur."!cursor_pos"(rx795_pos)
+    $P10 = rx795_cur."O"("%symbolic_unary, :pirop<set S*>")
+    unless $P10, rx795_fail
+    rx795_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx795_pos = $P10."pos"()
+  # rx pass
+    rx795_cur."!cursor_pass"(rx795_pos, "prefix:sym<~>")
+    rx795_cur."!cursor_debug"("PASS  ", "prefix:sym<~>", " at pos=", rx795_pos)
+    .return (rx795_cur)
+  rx795_fail:
+.annotate "line", 358
+    (rx795_rep, rx795_pos, $I10, $P10) = rx795_cur."!mark_fail"(0)
+    lt rx795_pos, -1, rx795_done
+    eq rx795_pos, -1, rx795_fail
+    jump $I10
+  rx795_done:
+    rx795_cur."!cursor_fail"()
+    rx795_cur."!cursor_debug"("FAIL  ", "prefix:sym<~>")
+    .return (rx795_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<~>"  :subid("223_1258051419.23649") :method
+.annotate "line", 358
+    $P797 = self."!PREFIX__!subrule"("O", "~")
+    new $P798, "ResizablePMCArray"
+    push $P798, $P797
+    .return ($P798)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<->"  :subid("224_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx801_tgt
+    .local int rx801_pos
+    .local int rx801_off
+    .local int rx801_eos
+    .local int rx801_rep
+    .local pmc rx801_cur
+    (rx801_cur, rx801_pos, rx801_tgt, $I10) = self."!cursor_start"()
+    rx801_cur."!cursor_debug"("START ", "prefix:sym<->")
+    .lex unicode:"$\x{a2}", rx801_cur
+    .local pmc match
+    .lex "$/", match
+    length rx801_eos, rx801_tgt
+    set rx801_off, 0
+    lt $I10, 2, rx801_start
+    sub rx801_off, $I10, 1
+    substr rx801_tgt, rx801_tgt, rx801_off
+  rx801_start:
+.annotate "line", 417
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_805_fail
+    rx801_cur."!mark_push"(0, rx801_pos, $I10)
+  # rx literal  "-"
+    add $I11, rx801_pos, 1
+    gt $I11, rx801_eos, rx801_fail
+    sub $I11, rx801_pos, rx801_off
+    substr $S10, rx801_tgt, $I11, 1
+    ne $S10, "-", rx801_fail
+    add rx801_pos, 1
+    set_addr $I10, rxcap_805_fail
+    ($I12, $I11) = rx801_cur."!mark_peek"($I10)
+    rx801_cur."!cursor_pos"($I11)
+    ($P10) = rx801_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx801_pos, "")
+    rx801_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_805_done
+  rxcap_805_fail:
+    goto rx801_fail
+  rxcap_805_done:
+  # rx enumcharlist negate=1 zerowidth
+    ge rx801_pos, rx801_eos, rx801_fail
+    sub $I10, rx801_pos, rx801_off
+    substr $S10, rx801_tgt, $I10, 1
+    index $I11, ">", $S10
+    ge $I11, 0, rx801_fail
+  # rx subrule "O" subtype=capture negate=
+    rx801_cur."!cursor_pos"(rx801_pos)
+    $P10 = rx801_cur."O"("%symbolic_unary, :pirop<neg>")
+    unless $P10, rx801_fail
+    rx801_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx801_pos = $P10."pos"()
+  # rx pass
+    rx801_cur."!cursor_pass"(rx801_pos, "prefix:sym<->")
+    rx801_cur."!cursor_debug"("PASS  ", "prefix:sym<->", " at pos=", rx801_pos)
+    .return (rx801_cur)
+  rx801_fail:
+.annotate "line", 358
+    (rx801_rep, rx801_pos, $I10, $P10) = rx801_cur."!mark_fail"(0)
+    lt rx801_pos, -1, rx801_done
+    eq rx801_pos, -1, rx801_fail
+    jump $I10
+  rx801_done:
+    rx801_cur."!cursor_fail"()
+    rx801_cur."!cursor_debug"("FAIL  ", "prefix:sym<->")
+    .return (rx801_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<->"  :subid("225_1258051419.23649") :method
+.annotate "line", 358
+    $P803 = self."!PREFIX__!subrule"("O", "-")
+    new $P804, "ResizablePMCArray"
+    push $P804, $P803
+    .return ($P804)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<?>"  :subid("226_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx807_tgt
+    .local int rx807_pos
+    .local int rx807_off
+    .local int rx807_eos
+    .local int rx807_rep
+    .local pmc rx807_cur
+    (rx807_cur, rx807_pos, rx807_tgt, $I10) = self."!cursor_start"()
+    rx807_cur."!cursor_debug"("START ", "prefix:sym<?>")
+    .lex unicode:"$\x{a2}", rx807_cur
+    .local pmc match
+    .lex "$/", match
+    length rx807_eos, rx807_tgt
+    set rx807_off, 0
+    lt $I10, 2, rx807_start
+    sub rx807_off, $I10, 1
+    substr rx807_tgt, rx807_tgt, rx807_off
+  rx807_start:
+.annotate "line", 418
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_811_fail
+    rx807_cur."!mark_push"(0, rx807_pos, $I10)
+  # rx literal  "?"
+    add $I11, rx807_pos, 1
+    gt $I11, rx807_eos, rx807_fail
+    sub $I11, rx807_pos, rx807_off
+    substr $S10, rx807_tgt, $I11, 1
+    ne $S10, "?", rx807_fail
+    add rx807_pos, 1
+    set_addr $I10, rxcap_811_fail
+    ($I12, $I11) = rx807_cur."!mark_peek"($I10)
+    rx807_cur."!cursor_pos"($I11)
+    ($P10) = rx807_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx807_pos, "")
+    rx807_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_811_done
+  rxcap_811_fail:
+    goto rx807_fail
+  rxcap_811_done:
+  # rx subrule "O" subtype=capture negate=
+    rx807_cur."!cursor_pos"(rx807_pos)
+    $P10 = rx807_cur."O"("%symbolic_unary, :pirop<istrue>")
+    unless $P10, rx807_fail
+    rx807_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx807_pos = $P10."pos"()
+  # rx pass
+    rx807_cur."!cursor_pass"(rx807_pos, "prefix:sym<?>")
+    rx807_cur."!cursor_debug"("PASS  ", "prefix:sym<?>", " at pos=", rx807_pos)
+    .return (rx807_cur)
+  rx807_fail:
+.annotate "line", 358
+    (rx807_rep, rx807_pos, $I10, $P10) = rx807_cur."!mark_fail"(0)
+    lt rx807_pos, -1, rx807_done
+    eq rx807_pos, -1, rx807_fail
+    jump $I10
+  rx807_done:
+    rx807_cur."!cursor_fail"()
+    rx807_cur."!cursor_debug"("FAIL  ", "prefix:sym<?>")
+    .return (rx807_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<?>"  :subid("227_1258051419.23649") :method
+.annotate "line", 358
+    $P809 = self."!PREFIX__!subrule"("O", "?")
+    new $P810, "ResizablePMCArray"
+    push $P810, $P809
+    .return ($P810)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<!>"  :subid("228_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx813_tgt
+    .local int rx813_pos
+    .local int rx813_off
+    .local int rx813_eos
+    .local int rx813_rep
+    .local pmc rx813_cur
+    (rx813_cur, rx813_pos, rx813_tgt, $I10) = self."!cursor_start"()
+    rx813_cur."!cursor_debug"("START ", "prefix:sym<!>")
+    .lex unicode:"$\x{a2}", rx813_cur
+    .local pmc match
+    .lex "$/", match
+    length rx813_eos, rx813_tgt
+    set rx813_off, 0
+    lt $I10, 2, rx813_start
+    sub rx813_off, $I10, 1
+    substr rx813_tgt, rx813_tgt, rx813_off
+  rx813_start:
+.annotate "line", 419
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_817_fail
+    rx813_cur."!mark_push"(0, rx813_pos, $I10)
+  # rx literal  "!"
+    add $I11, rx813_pos, 1
+    gt $I11, rx813_eos, rx813_fail
+    sub $I11, rx813_pos, rx813_off
+    substr $S10, rx813_tgt, $I11, 1
+    ne $S10, "!", rx813_fail
+    add rx813_pos, 1
+    set_addr $I10, rxcap_817_fail
+    ($I12, $I11) = rx813_cur."!mark_peek"($I10)
+    rx813_cur."!cursor_pos"($I11)
+    ($P10) = rx813_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx813_pos, "")
+    rx813_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_817_done
+  rxcap_817_fail:
+    goto rx813_fail
+  rxcap_817_done:
+  # rx subrule "O" subtype=capture negate=
+    rx813_cur."!cursor_pos"(rx813_pos)
+    $P10 = rx813_cur."O"("%symbolic_unary, :pirop<isfalse>")
+    unless $P10, rx813_fail
+    rx813_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx813_pos = $P10."pos"()
+  # rx pass
+    rx813_cur."!cursor_pass"(rx813_pos, "prefix:sym<!>")
+    rx813_cur."!cursor_debug"("PASS  ", "prefix:sym<!>", " at pos=", rx813_pos)
+    .return (rx813_cur)
+  rx813_fail:
+.annotate "line", 358
+    (rx813_rep, rx813_pos, $I10, $P10) = rx813_cur."!mark_fail"(0)
+    lt rx813_pos, -1, rx813_done
+    eq rx813_pos, -1, rx813_fail
+    jump $I10
+  rx813_done:
+    rx813_cur."!cursor_fail"()
+    rx813_cur."!cursor_debug"("FAIL  ", "prefix:sym<!>")
+    .return (rx813_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<!>"  :subid("229_1258051419.23649") :method
+.annotate "line", 358
+    $P815 = self."!PREFIX__!subrule"("O", "!")
+    new $P816, "ResizablePMCArray"
+    push $P816, $P815
+    .return ($P816)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "prefix:sym<|>"  :subid("230_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx819_tgt
+    .local int rx819_pos
+    .local int rx819_off
+    .local int rx819_eos
+    .local int rx819_rep
+    .local pmc rx819_cur
+    (rx819_cur, rx819_pos, rx819_tgt, $I10) = self."!cursor_start"()
+    rx819_cur."!cursor_debug"("START ", "prefix:sym<|>")
+    .lex unicode:"$\x{a2}", rx819_cur
+    .local pmc match
+    .lex "$/", match
+    length rx819_eos, rx819_tgt
+    set rx819_off, 0
+    lt $I10, 2, rx819_start
+    sub rx819_off, $I10, 1
+    substr rx819_tgt, rx819_tgt, rx819_off
+  rx819_start:
+.annotate "line", 420
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_823_fail
+    rx819_cur."!mark_push"(0, rx819_pos, $I10)
+  # rx literal  "|"
+    add $I11, rx819_pos, 1
+    gt $I11, rx819_eos, rx819_fail
+    sub $I11, rx819_pos, rx819_off
+    substr $S10, rx819_tgt, $I11, 1
+    ne $S10, "|", rx819_fail
+    add rx819_pos, 1
+    set_addr $I10, rxcap_823_fail
+    ($I12, $I11) = rx819_cur."!mark_peek"($I10)
+    rx819_cur."!cursor_pos"($I11)
+    ($P10) = rx819_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx819_pos, "")
+    rx819_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_823_done
+  rxcap_823_fail:
+    goto rx819_fail
+  rxcap_823_done:
+  # rx subrule "O" subtype=capture negate=
+    rx819_cur."!cursor_pos"(rx819_pos)
+    $P10 = rx819_cur."O"("%symbolic_unary")
+    unless $P10, rx819_fail
+    rx819_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx819_pos = $P10."pos"()
+  # rx pass
+    rx819_cur."!cursor_pass"(rx819_pos, "prefix:sym<|>")
+    rx819_cur."!cursor_debug"("PASS  ", "prefix:sym<|>", " at pos=", rx819_pos)
+    .return (rx819_cur)
+  rx819_fail:
+.annotate "line", 358
+    (rx819_rep, rx819_pos, $I10, $P10) = rx819_cur."!mark_fail"(0)
+    lt rx819_pos, -1, rx819_done
+    eq rx819_pos, -1, rx819_fail
+    jump $I10
+  rx819_done:
+    rx819_cur."!cursor_fail"()
+    rx819_cur."!cursor_debug"("FAIL  ", "prefix:sym<|>")
+    .return (rx819_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__prefix:sym<|>"  :subid("231_1258051419.23649") :method
+.annotate "line", 358
+    $P821 = self."!PREFIX__!subrule"("O", "|")
+    new $P822, "ResizablePMCArray"
+    push $P822, $P821
+    .return ($P822)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<*>"  :subid("232_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx825_tgt
+    .local int rx825_pos
+    .local int rx825_off
+    .local int rx825_eos
+    .local int rx825_rep
+    .local pmc rx825_cur
+    (rx825_cur, rx825_pos, rx825_tgt, $I10) = self."!cursor_start"()
+    rx825_cur."!cursor_debug"("START ", "infix:sym<*>")
+    .lex unicode:"$\x{a2}", rx825_cur
+    .local pmc match
+    .lex "$/", match
+    length rx825_eos, rx825_tgt
+    set rx825_off, 0
+    lt $I10, 2, rx825_start
+    sub rx825_off, $I10, 1
+    substr rx825_tgt, rx825_tgt, rx825_off
+  rx825_start:
+.annotate "line", 422
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_829_fail
+    rx825_cur."!mark_push"(0, rx825_pos, $I10)
+  # rx literal  "*"
+    add $I11, rx825_pos, 1
+    gt $I11, rx825_eos, rx825_fail
+    sub $I11, rx825_pos, rx825_off
+    substr $S10, rx825_tgt, $I11, 1
+    ne $S10, "*", rx825_fail
+    add rx825_pos, 1
+    set_addr $I10, rxcap_829_fail
+    ($I12, $I11) = rx825_cur."!mark_peek"($I10)
+    rx825_cur."!cursor_pos"($I11)
+    ($P10) = rx825_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx825_pos, "")
+    rx825_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_829_done
+  rxcap_829_fail:
+    goto rx825_fail
+  rxcap_829_done:
+  # rx subrule "O" subtype=capture negate=
+    rx825_cur."!cursor_pos"(rx825_pos)
+    $P10 = rx825_cur."O"("%multiplicative, :pirop<mul>")
+    unless $P10, rx825_fail
+    rx825_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx825_pos = $P10."pos"()
+  # rx pass
+    rx825_cur."!cursor_pass"(rx825_pos, "infix:sym<*>")
+    rx825_cur."!cursor_debug"("PASS  ", "infix:sym<*>", " at pos=", rx825_pos)
+    .return (rx825_cur)
+  rx825_fail:
+.annotate "line", 358
+    (rx825_rep, rx825_pos, $I10, $P10) = rx825_cur."!mark_fail"(0)
+    lt rx825_pos, -1, rx825_done
+    eq rx825_pos, -1, rx825_fail
+    jump $I10
+  rx825_done:
+    rx825_cur."!cursor_fail"()
+    rx825_cur."!cursor_debug"("FAIL  ", "infix:sym<*>")
+    .return (rx825_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<*>"  :subid("233_1258051419.23649") :method
+.annotate "line", 358
+    $P827 = self."!PREFIX__!subrule"("O", "*")
+    new $P828, "ResizablePMCArray"
+    push $P828, $P827
+    .return ($P828)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym</>"  :subid("234_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx831_tgt
+    .local int rx831_pos
+    .local int rx831_off
+    .local int rx831_eos
+    .local int rx831_rep
+    .local pmc rx831_cur
+    (rx831_cur, rx831_pos, rx831_tgt, $I10) = self."!cursor_start"()
+    rx831_cur."!cursor_debug"("START ", "infix:sym</>")
+    .lex unicode:"$\x{a2}", rx831_cur
+    .local pmc match
+    .lex "$/", match
+    length rx831_eos, rx831_tgt
+    set rx831_off, 0
+    lt $I10, 2, rx831_start
+    sub rx831_off, $I10, 1
+    substr rx831_tgt, rx831_tgt, rx831_off
+  rx831_start:
+.annotate "line", 423
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_835_fail
+    rx831_cur."!mark_push"(0, rx831_pos, $I10)
+  # rx literal  "/"
+    add $I11, rx831_pos, 1
+    gt $I11, rx831_eos, rx831_fail
+    sub $I11, rx831_pos, rx831_off
+    substr $S10, rx831_tgt, $I11, 1
+    ne $S10, "/", rx831_fail
+    add rx831_pos, 1
+    set_addr $I10, rxcap_835_fail
+    ($I12, $I11) = rx831_cur."!mark_peek"($I10)
+    rx831_cur."!cursor_pos"($I11)
+    ($P10) = rx831_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx831_pos, "")
+    rx831_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_835_done
+  rxcap_835_fail:
+    goto rx831_fail
+  rxcap_835_done:
+  # rx subrule "O" subtype=capture negate=
+    rx831_cur."!cursor_pos"(rx831_pos)
+    $P10 = rx831_cur."O"("%multiplicative, :pirop<div>")
+    unless $P10, rx831_fail
+    rx831_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx831_pos = $P10."pos"()
+  # rx pass
+    rx831_cur."!cursor_pass"(rx831_pos, "infix:sym</>")
+    rx831_cur."!cursor_debug"("PASS  ", "infix:sym</>", " at pos=", rx831_pos)
+    .return (rx831_cur)
+  rx831_fail:
+.annotate "line", 358
+    (rx831_rep, rx831_pos, $I10, $P10) = rx831_cur."!mark_fail"(0)
+    lt rx831_pos, -1, rx831_done
+    eq rx831_pos, -1, rx831_fail
+    jump $I10
+  rx831_done:
+    rx831_cur."!cursor_fail"()
+    rx831_cur."!cursor_debug"("FAIL  ", "infix:sym</>")
+    .return (rx831_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym</>"  :subid("235_1258051419.23649") :method
+.annotate "line", 358
+    $P833 = self."!PREFIX__!subrule"("O", "/")
+    new $P834, "ResizablePMCArray"
+    push $P834, $P833
+    .return ($P834)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<%>"  :subid("236_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx837_tgt
+    .local int rx837_pos
+    .local int rx837_off
+    .local int rx837_eos
+    .local int rx837_rep
+    .local pmc rx837_cur
+    (rx837_cur, rx837_pos, rx837_tgt, $I10) = self."!cursor_start"()
+    rx837_cur."!cursor_debug"("START ", "infix:sym<%>")
+    .lex unicode:"$\x{a2}", rx837_cur
+    .local pmc match
+    .lex "$/", match
+    length rx837_eos, rx837_tgt
+    set rx837_off, 0
+    lt $I10, 2, rx837_start
+    sub rx837_off, $I10, 1
+    substr rx837_tgt, rx837_tgt, rx837_off
+  rx837_start:
+.annotate "line", 424
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_841_fail
+    rx837_cur."!mark_push"(0, rx837_pos, $I10)
+  # rx literal  "%"
+    add $I11, rx837_pos, 1
+    gt $I11, rx837_eos, rx837_fail
+    sub $I11, rx837_pos, rx837_off
+    substr $S10, rx837_tgt, $I11, 1
+    ne $S10, "%", rx837_fail
+    add rx837_pos, 1
+    set_addr $I10, rxcap_841_fail
+    ($I12, $I11) = rx837_cur."!mark_peek"($I10)
+    rx837_cur."!cursor_pos"($I11)
+    ($P10) = rx837_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx837_pos, "")
+    rx837_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_841_done
+  rxcap_841_fail:
+    goto rx837_fail
+  rxcap_841_done:
+  # rx subrule "O" subtype=capture negate=
+    rx837_cur."!cursor_pos"(rx837_pos)
+    $P10 = rx837_cur."O"("%multiplicative, :pirop<mod>")
+    unless $P10, rx837_fail
+    rx837_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx837_pos = $P10."pos"()
+  # rx pass
+    rx837_cur."!cursor_pass"(rx837_pos, "infix:sym<%>")
+    rx837_cur."!cursor_debug"("PASS  ", "infix:sym<%>", " at pos=", rx837_pos)
+    .return (rx837_cur)
+  rx837_fail:
+.annotate "line", 358
+    (rx837_rep, rx837_pos, $I10, $P10) = rx837_cur."!mark_fail"(0)
+    lt rx837_pos, -1, rx837_done
+    eq rx837_pos, -1, rx837_fail
+    jump $I10
+  rx837_done:
+    rx837_cur."!cursor_fail"()
+    rx837_cur."!cursor_debug"("FAIL  ", "infix:sym<%>")
+    .return (rx837_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<%>"  :subid("237_1258051419.23649") :method
+.annotate "line", 358
+    $P839 = self."!PREFIX__!subrule"("O", "%")
+    new $P840, "ResizablePMCArray"
+    push $P840, $P839
+    .return ($P840)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<+>"  :subid("238_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx843_tgt
+    .local int rx843_pos
+    .local int rx843_off
+    .local int rx843_eos
+    .local int rx843_rep
+    .local pmc rx843_cur
+    (rx843_cur, rx843_pos, rx843_tgt, $I10) = self."!cursor_start"()
+    rx843_cur."!cursor_debug"("START ", "infix:sym<+>")
+    .lex unicode:"$\x{a2}", rx843_cur
+    .local pmc match
+    .lex "$/", match
+    length rx843_eos, rx843_tgt
+    set rx843_off, 0
+    lt $I10, 2, rx843_start
+    sub rx843_off, $I10, 1
+    substr rx843_tgt, rx843_tgt, rx843_off
+  rx843_start:
+.annotate "line", 426
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_847_fail
+    rx843_cur."!mark_push"(0, rx843_pos, $I10)
+  # rx literal  "+"
+    add $I11, rx843_pos, 1
+    gt $I11, rx843_eos, rx843_fail
+    sub $I11, rx843_pos, rx843_off
+    substr $S10, rx843_tgt, $I11, 1
+    ne $S10, "+", rx843_fail
+    add rx843_pos, 1
+    set_addr $I10, rxcap_847_fail
+    ($I12, $I11) = rx843_cur."!mark_peek"($I10)
+    rx843_cur."!cursor_pos"($I11)
+    ($P10) = rx843_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx843_pos, "")
+    rx843_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_847_done
+  rxcap_847_fail:
+    goto rx843_fail
+  rxcap_847_done:
+  # rx subrule "O" subtype=capture negate=
+    rx843_cur."!cursor_pos"(rx843_pos)
+    $P10 = rx843_cur."O"("%additive, :pirop<add>")
+    unless $P10, rx843_fail
+    rx843_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx843_pos = $P10."pos"()
+  # rx pass
+    rx843_cur."!cursor_pass"(rx843_pos, "infix:sym<+>")
+    rx843_cur."!cursor_debug"("PASS  ", "infix:sym<+>", " at pos=", rx843_pos)
+    .return (rx843_cur)
+  rx843_fail:
+.annotate "line", 358
+    (rx843_rep, rx843_pos, $I10, $P10) = rx843_cur."!mark_fail"(0)
+    lt rx843_pos, -1, rx843_done
+    eq rx843_pos, -1, rx843_fail
+    jump $I10
+  rx843_done:
+    rx843_cur."!cursor_fail"()
+    rx843_cur."!cursor_debug"("FAIL  ", "infix:sym<+>")
+    .return (rx843_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<+>"  :subid("239_1258051419.23649") :method
+.annotate "line", 358
+    $P845 = self."!PREFIX__!subrule"("O", "+")
+    new $P846, "ResizablePMCArray"
+    push $P846, $P845
+    .return ($P846)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<->"  :subid("240_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx849_tgt
+    .local int rx849_pos
+    .local int rx849_off
+    .local int rx849_eos
+    .local int rx849_rep
+    .local pmc rx849_cur
+    (rx849_cur, rx849_pos, rx849_tgt, $I10) = self."!cursor_start"()
+    rx849_cur."!cursor_debug"("START ", "infix:sym<->")
+    .lex unicode:"$\x{a2}", rx849_cur
+    .local pmc match
+    .lex "$/", match
+    length rx849_eos, rx849_tgt
+    set rx849_off, 0
+    lt $I10, 2, rx849_start
+    sub rx849_off, $I10, 1
+    substr rx849_tgt, rx849_tgt, rx849_off
+  rx849_start:
+.annotate "line", 427
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_853_fail
+    rx849_cur."!mark_push"(0, rx849_pos, $I10)
+  # rx literal  "-"
+    add $I11, rx849_pos, 1
+    gt $I11, rx849_eos, rx849_fail
+    sub $I11, rx849_pos, rx849_off
+    substr $S10, rx849_tgt, $I11, 1
+    ne $S10, "-", rx849_fail
+    add rx849_pos, 1
+    set_addr $I10, rxcap_853_fail
+    ($I12, $I11) = rx849_cur."!mark_peek"($I10)
+    rx849_cur."!cursor_pos"($I11)
+    ($P10) = rx849_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx849_pos, "")
+    rx849_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_853_done
+  rxcap_853_fail:
+    goto rx849_fail
+  rxcap_853_done:
+  # rx subrule "O" subtype=capture negate=
+    rx849_cur."!cursor_pos"(rx849_pos)
+    $P10 = rx849_cur."O"("%additive, :pirop<sub>")
+    unless $P10, rx849_fail
+    rx849_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx849_pos = $P10."pos"()
+  # rx pass
+    rx849_cur."!cursor_pass"(rx849_pos, "infix:sym<->")
+    rx849_cur."!cursor_debug"("PASS  ", "infix:sym<->", " at pos=", rx849_pos)
+    .return (rx849_cur)
+  rx849_fail:
+.annotate "line", 358
+    (rx849_rep, rx849_pos, $I10, $P10) = rx849_cur."!mark_fail"(0)
+    lt rx849_pos, -1, rx849_done
+    eq rx849_pos, -1, rx849_fail
+    jump $I10
+  rx849_done:
+    rx849_cur."!cursor_fail"()
+    rx849_cur."!cursor_debug"("FAIL  ", "infix:sym<->")
+    .return (rx849_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<->"  :subid("241_1258051419.23649") :method
+.annotate "line", 358
+    $P851 = self."!PREFIX__!subrule"("O", "-")
+    new $P852, "ResizablePMCArray"
+    push $P852, $P851
+    .return ($P852)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<~>"  :subid("242_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx855_tgt
+    .local int rx855_pos
+    .local int rx855_off
+    .local int rx855_eos
+    .local int rx855_rep
+    .local pmc rx855_cur
+    (rx855_cur, rx855_pos, rx855_tgt, $I10) = self."!cursor_start"()
+    rx855_cur."!cursor_debug"("START ", "infix:sym<~>")
+    .lex unicode:"$\x{a2}", rx855_cur
+    .local pmc match
+    .lex "$/", match
+    length rx855_eos, rx855_tgt
+    set rx855_off, 0
+    lt $I10, 2, rx855_start
+    sub rx855_off, $I10, 1
+    substr rx855_tgt, rx855_tgt, rx855_off
+  rx855_start:
+.annotate "line", 429
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_859_fail
+    rx855_cur."!mark_push"(0, rx855_pos, $I10)
+  # rx literal  "~"
+    add $I11, rx855_pos, 1
+    gt $I11, rx855_eos, rx855_fail
+    sub $I11, rx855_pos, rx855_off
+    substr $S10, rx855_tgt, $I11, 1
+    ne $S10, "~", rx855_fail
+    add rx855_pos, 1
+    set_addr $I10, rxcap_859_fail
+    ($I12, $I11) = rx855_cur."!mark_peek"($I10)
+    rx855_cur."!cursor_pos"($I11)
+    ($P10) = rx855_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx855_pos, "")
+    rx855_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_859_done
+  rxcap_859_fail:
+    goto rx855_fail
+  rxcap_859_done:
+  # rx subrule "O" subtype=capture negate=
+    rx855_cur."!cursor_pos"(rx855_pos)
+    $P10 = rx855_cur."O"("%concatenation , :pirop<concat>")
+    unless $P10, rx855_fail
+    rx855_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx855_pos = $P10."pos"()
+  # rx pass
+    rx855_cur."!cursor_pass"(rx855_pos, "infix:sym<~>")
+    rx855_cur."!cursor_debug"("PASS  ", "infix:sym<~>", " at pos=", rx855_pos)
+    .return (rx855_cur)
+  rx855_fail:
+.annotate "line", 358
+    (rx855_rep, rx855_pos, $I10, $P10) = rx855_cur."!mark_fail"(0)
+    lt rx855_pos, -1, rx855_done
+    eq rx855_pos, -1, rx855_fail
+    jump $I10
+  rx855_done:
+    rx855_cur."!cursor_fail"()
+    rx855_cur."!cursor_debug"("FAIL  ", "infix:sym<~>")
+    .return (rx855_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<~>"  :subid("243_1258051419.23649") :method
+.annotate "line", 358
+    $P857 = self."!PREFIX__!subrule"("O", "~")
+    new $P858, "ResizablePMCArray"
+    push $P858, $P857
+    .return ($P858)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<==>"  :subid("244_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx861_tgt
+    .local int rx861_pos
+    .local int rx861_off
+    .local int rx861_eos
+    .local int rx861_rep
+    .local pmc rx861_cur
+    (rx861_cur, rx861_pos, rx861_tgt, $I10) = self."!cursor_start"()
+    rx861_cur."!cursor_debug"("START ", "infix:sym<==>")
+    .lex unicode:"$\x{a2}", rx861_cur
+    .local pmc match
+    .lex "$/", match
+    length rx861_eos, rx861_tgt
+    set rx861_off, 0
+    lt $I10, 2, rx861_start
+    sub rx861_off, $I10, 1
+    substr rx861_tgt, rx861_tgt, rx861_off
+  rx861_start:
+.annotate "line", 431
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_865_fail
+    rx861_cur."!mark_push"(0, rx861_pos, $I10)
+  # rx literal  "=="
+    add $I11, rx861_pos, 2
+    gt $I11, rx861_eos, rx861_fail
+    sub $I11, rx861_pos, rx861_off
+    substr $S10, rx861_tgt, $I11, 2
+    ne $S10, "==", rx861_fail
+    add rx861_pos, 2
+    set_addr $I10, rxcap_865_fail
+    ($I12, $I11) = rx861_cur."!mark_peek"($I10)
+    rx861_cur."!cursor_pos"($I11)
+    ($P10) = rx861_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx861_pos, "")
+    rx861_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_865_done
+  rxcap_865_fail:
+    goto rx861_fail
+  rxcap_865_done:
+  # rx subrule "O" subtype=capture negate=
+    rx861_cur."!cursor_pos"(rx861_pos)
+    $P10 = rx861_cur."O"("%relational, :pirop<iseq INn>")
+    unless $P10, rx861_fail
+    rx861_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx861_pos = $P10."pos"()
+  # rx pass
+    rx861_cur."!cursor_pass"(rx861_pos, "infix:sym<==>")
+    rx861_cur."!cursor_debug"("PASS  ", "infix:sym<==>", " at pos=", rx861_pos)
+    .return (rx861_cur)
+  rx861_fail:
+.annotate "line", 358
+    (rx861_rep, rx861_pos, $I10, $P10) = rx861_cur."!mark_fail"(0)
+    lt rx861_pos, -1, rx861_done
+    eq rx861_pos, -1, rx861_fail
+    jump $I10
+  rx861_done:
+    rx861_cur."!cursor_fail"()
+    rx861_cur."!cursor_debug"("FAIL  ", "infix:sym<==>")
+    .return (rx861_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<==>"  :subid("245_1258051419.23649") :method
+.annotate "line", 358
+    $P863 = self."!PREFIX__!subrule"("O", "==")
+    new $P864, "ResizablePMCArray"
+    push $P864, $P863
+    .return ($P864)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<!=>"  :subid("246_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx867_tgt
+    .local int rx867_pos
+    .local int rx867_off
+    .local int rx867_eos
+    .local int rx867_rep
+    .local pmc rx867_cur
+    (rx867_cur, rx867_pos, rx867_tgt, $I10) = self."!cursor_start"()
+    rx867_cur."!cursor_debug"("START ", "infix:sym<!=>")
+    .lex unicode:"$\x{a2}", rx867_cur
+    .local pmc match
+    .lex "$/", match
+    length rx867_eos, rx867_tgt
+    set rx867_off, 0
+    lt $I10, 2, rx867_start
+    sub rx867_off, $I10, 1
+    substr rx867_tgt, rx867_tgt, rx867_off
+  rx867_start:
+.annotate "line", 432
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_871_fail
+    rx867_cur."!mark_push"(0, rx867_pos, $I10)
+  # rx literal  "!="
+    add $I11, rx867_pos, 2
+    gt $I11, rx867_eos, rx867_fail
+    sub $I11, rx867_pos, rx867_off
+    substr $S10, rx867_tgt, $I11, 2
+    ne $S10, "!=", rx867_fail
+    add rx867_pos, 2
+    set_addr $I10, rxcap_871_fail
+    ($I12, $I11) = rx867_cur."!mark_peek"($I10)
+    rx867_cur."!cursor_pos"($I11)
+    ($P10) = rx867_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx867_pos, "")
+    rx867_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_871_done
+  rxcap_871_fail:
+    goto rx867_fail
+  rxcap_871_done:
+  # rx subrule "O" subtype=capture negate=
+    rx867_cur."!cursor_pos"(rx867_pos)
+    $P10 = rx867_cur."O"("%relational, :pirop<isne INn>")
+    unless $P10, rx867_fail
+    rx867_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx867_pos = $P10."pos"()
+  # rx pass
+    rx867_cur."!cursor_pass"(rx867_pos, "infix:sym<!=>")
+    rx867_cur."!cursor_debug"("PASS  ", "infix:sym<!=>", " at pos=", rx867_pos)
+    .return (rx867_cur)
+  rx867_fail:
+.annotate "line", 358
+    (rx867_rep, rx867_pos, $I10, $P10) = rx867_cur."!mark_fail"(0)
+    lt rx867_pos, -1, rx867_done
+    eq rx867_pos, -1, rx867_fail
+    jump $I10
+  rx867_done:
+    rx867_cur."!cursor_fail"()
+    rx867_cur."!cursor_debug"("FAIL  ", "infix:sym<!=>")
+    .return (rx867_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<!=>"  :subid("247_1258051419.23649") :method
+.annotate "line", 358
+    $P869 = self."!PREFIX__!subrule"("O", "!=")
+    new $P870, "ResizablePMCArray"
+    push $P870, $P869
+    .return ($P870)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<<=>"  :subid("248_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx873_tgt
+    .local int rx873_pos
+    .local int rx873_off
+    .local int rx873_eos
+    .local int rx873_rep
+    .local pmc rx873_cur
+    (rx873_cur, rx873_pos, rx873_tgt, $I10) = self."!cursor_start"()
+    rx873_cur."!cursor_debug"("START ", "infix:sym<<=>")
+    .lex unicode:"$\x{a2}", rx873_cur
+    .local pmc match
+    .lex "$/", match
+    length rx873_eos, rx873_tgt
+    set rx873_off, 0
+    lt $I10, 2, rx873_start
+    sub rx873_off, $I10, 1
+    substr rx873_tgt, rx873_tgt, rx873_off
+  rx873_start:
+.annotate "line", 433
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_877_fail
+    rx873_cur."!mark_push"(0, rx873_pos, $I10)
+  # rx literal  "<="
+    add $I11, rx873_pos, 2
+    gt $I11, rx873_eos, rx873_fail
+    sub $I11, rx873_pos, rx873_off
+    substr $S10, rx873_tgt, $I11, 2
+    ne $S10, "<=", rx873_fail
+    add rx873_pos, 2
+    set_addr $I10, rxcap_877_fail
+    ($I12, $I11) = rx873_cur."!mark_peek"($I10)
+    rx873_cur."!cursor_pos"($I11)
+    ($P10) = rx873_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx873_pos, "")
+    rx873_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_877_done
+  rxcap_877_fail:
+    goto rx873_fail
+  rxcap_877_done:
+  # rx subrule "O" subtype=capture negate=
+    rx873_cur."!cursor_pos"(rx873_pos)
+    $P10 = rx873_cur."O"("%relational, :pirop<isle INn>")
+    unless $P10, rx873_fail
+    rx873_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx873_pos = $P10."pos"()
+  # rx pass
+    rx873_cur."!cursor_pass"(rx873_pos, "infix:sym<<=>")
+    rx873_cur."!cursor_debug"("PASS  ", "infix:sym<<=>", " at pos=", rx873_pos)
+    .return (rx873_cur)
+  rx873_fail:
+.annotate "line", 358
+    (rx873_rep, rx873_pos, $I10, $P10) = rx873_cur."!mark_fail"(0)
+    lt rx873_pos, -1, rx873_done
+    eq rx873_pos, -1, rx873_fail
+    jump $I10
+  rx873_done:
+    rx873_cur."!cursor_fail"()
+    rx873_cur."!cursor_debug"("FAIL  ", "infix:sym<<=>")
+    .return (rx873_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<<=>"  :subid("249_1258051419.23649") :method
+.annotate "line", 358
+    $P875 = self."!PREFIX__!subrule"("O", "<=")
+    new $P876, "ResizablePMCArray"
+    push $P876, $P875
+    .return ($P876)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<>=>"  :subid("250_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx879_tgt
+    .local int rx879_pos
+    .local int rx879_off
+    .local int rx879_eos
+    .local int rx879_rep
+    .local pmc rx879_cur
+    (rx879_cur, rx879_pos, rx879_tgt, $I10) = self."!cursor_start"()
+    rx879_cur."!cursor_debug"("START ", "infix:sym<>=>")
+    .lex unicode:"$\x{a2}", rx879_cur
+    .local pmc match
+    .lex "$/", match
+    length rx879_eos, rx879_tgt
+    set rx879_off, 0
+    lt $I10, 2, rx879_start
+    sub rx879_off, $I10, 1
+    substr rx879_tgt, rx879_tgt, rx879_off
+  rx879_start:
+.annotate "line", 434
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_883_fail
+    rx879_cur."!mark_push"(0, rx879_pos, $I10)
+  # rx literal  ">="
+    add $I11, rx879_pos, 2
+    gt $I11, rx879_eos, rx879_fail
+    sub $I11, rx879_pos, rx879_off
+    substr $S10, rx879_tgt, $I11, 2
+    ne $S10, ">=", rx879_fail
+    add rx879_pos, 2
+    set_addr $I10, rxcap_883_fail
+    ($I12, $I11) = rx879_cur."!mark_peek"($I10)
+    rx879_cur."!cursor_pos"($I11)
+    ($P10) = rx879_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx879_pos, "")
+    rx879_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_883_done
+  rxcap_883_fail:
+    goto rx879_fail
+  rxcap_883_done:
+  # rx subrule "O" subtype=capture negate=
+    rx879_cur."!cursor_pos"(rx879_pos)
+    $P10 = rx879_cur."O"("%relational, :pirop<isge INn>")
+    unless $P10, rx879_fail
+    rx879_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx879_pos = $P10."pos"()
+  # rx pass
+    rx879_cur."!cursor_pass"(rx879_pos, "infix:sym<>=>")
+    rx879_cur."!cursor_debug"("PASS  ", "infix:sym<>=>", " at pos=", rx879_pos)
+    .return (rx879_cur)
+  rx879_fail:
+.annotate "line", 358
+    (rx879_rep, rx879_pos, $I10, $P10) = rx879_cur."!mark_fail"(0)
+    lt rx879_pos, -1, rx879_done
+    eq rx879_pos, -1, rx879_fail
+    jump $I10
+  rx879_done:
+    rx879_cur."!cursor_fail"()
+    rx879_cur."!cursor_debug"("FAIL  ", "infix:sym<>=>")
+    .return (rx879_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<>=>"  :subid("251_1258051419.23649") :method
+.annotate "line", 358
+    $P881 = self."!PREFIX__!subrule"("O", ">=")
+    new $P882, "ResizablePMCArray"
+    push $P882, $P881
+    .return ($P882)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<<>"  :subid("252_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx885_tgt
+    .local int rx885_pos
+    .local int rx885_off
+    .local int rx885_eos
+    .local int rx885_rep
+    .local pmc rx885_cur
+    (rx885_cur, rx885_pos, rx885_tgt, $I10) = self."!cursor_start"()
+    rx885_cur."!cursor_debug"("START ", "infix:sym<<>")
+    .lex unicode:"$\x{a2}", rx885_cur
+    .local pmc match
+    .lex "$/", match
+    length rx885_eos, rx885_tgt
+    set rx885_off, 0
+    lt $I10, 2, rx885_start
+    sub rx885_off, $I10, 1
+    substr rx885_tgt, rx885_tgt, rx885_off
+  rx885_start:
+.annotate "line", 435
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_889_fail
+    rx885_cur."!mark_push"(0, rx885_pos, $I10)
+  # rx literal  "<"
+    add $I11, rx885_pos, 1
+    gt $I11, rx885_eos, rx885_fail
+    sub $I11, rx885_pos, rx885_off
+    substr $S10, rx885_tgt, $I11, 1
+    ne $S10, "<", rx885_fail
+    add rx885_pos, 1
+    set_addr $I10, rxcap_889_fail
+    ($I12, $I11) = rx885_cur."!mark_peek"($I10)
+    rx885_cur."!cursor_pos"($I11)
+    ($P10) = rx885_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx885_pos, "")
+    rx885_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_889_done
+  rxcap_889_fail:
+    goto rx885_fail
+  rxcap_889_done:
+  # rx subrule "O" subtype=capture negate=
+    rx885_cur."!cursor_pos"(rx885_pos)
+    $P10 = rx885_cur."O"("%relational, :pirop<islt INn>")
+    unless $P10, rx885_fail
+    rx885_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx885_pos = $P10."pos"()
+  # rx pass
+    rx885_cur."!cursor_pass"(rx885_pos, "infix:sym<<>")
+    rx885_cur."!cursor_debug"("PASS  ", "infix:sym<<>", " at pos=", rx885_pos)
+    .return (rx885_cur)
+  rx885_fail:
+.annotate "line", 358
+    (rx885_rep, rx885_pos, $I10, $P10) = rx885_cur."!mark_fail"(0)
+    lt rx885_pos, -1, rx885_done
+    eq rx885_pos, -1, rx885_fail
+    jump $I10
+  rx885_done:
+    rx885_cur."!cursor_fail"()
+    rx885_cur."!cursor_debug"("FAIL  ", "infix:sym<<>")
+    .return (rx885_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<<>"  :subid("253_1258051419.23649") :method
+.annotate "line", 358
+    $P887 = self."!PREFIX__!subrule"("O", "<")
+    new $P888, "ResizablePMCArray"
+    push $P888, $P887
+    .return ($P888)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<>>"  :subid("254_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx891_tgt
+    .local int rx891_pos
+    .local int rx891_off
+    .local int rx891_eos
+    .local int rx891_rep
+    .local pmc rx891_cur
+    (rx891_cur, rx891_pos, rx891_tgt, $I10) = self."!cursor_start"()
+    rx891_cur."!cursor_debug"("START ", "infix:sym<>>")
+    .lex unicode:"$\x{a2}", rx891_cur
+    .local pmc match
+    .lex "$/", match
+    length rx891_eos, rx891_tgt
+    set rx891_off, 0
+    lt $I10, 2, rx891_start
+    sub rx891_off, $I10, 1
+    substr rx891_tgt, rx891_tgt, rx891_off
+  rx891_start:
+.annotate "line", 436
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_895_fail
+    rx891_cur."!mark_push"(0, rx891_pos, $I10)
+  # rx literal  ">"
+    add $I11, rx891_pos, 1
+    gt $I11, rx891_eos, rx891_fail
+    sub $I11, rx891_pos, rx891_off
+    substr $S10, rx891_tgt, $I11, 1
+    ne $S10, ">", rx891_fail
+    add rx891_pos, 1
+    set_addr $I10, rxcap_895_fail
+    ($I12, $I11) = rx891_cur."!mark_peek"($I10)
+    rx891_cur."!cursor_pos"($I11)
+    ($P10) = rx891_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx891_pos, "")
+    rx891_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_895_done
+  rxcap_895_fail:
+    goto rx891_fail
+  rxcap_895_done:
+  # rx subrule "O" subtype=capture negate=
+    rx891_cur."!cursor_pos"(rx891_pos)
+    $P10 = rx891_cur."O"("%relational, :pirop<isgt INn>")
+    unless $P10, rx891_fail
+    rx891_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx891_pos = $P10."pos"()
+  # rx pass
+    rx891_cur."!cursor_pass"(rx891_pos, "infix:sym<>>")
+    rx891_cur."!cursor_debug"("PASS  ", "infix:sym<>>", " at pos=", rx891_pos)
+    .return (rx891_cur)
+  rx891_fail:
+.annotate "line", 358
+    (rx891_rep, rx891_pos, $I10, $P10) = rx891_cur."!mark_fail"(0)
+    lt rx891_pos, -1, rx891_done
+    eq rx891_pos, -1, rx891_fail
+    jump $I10
+  rx891_done:
+    rx891_cur."!cursor_fail"()
+    rx891_cur."!cursor_debug"("FAIL  ", "infix:sym<>>")
+    .return (rx891_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<>>"  :subid("255_1258051419.23649") :method
+.annotate "line", 358
+    $P893 = self."!PREFIX__!subrule"("O", ">")
+    new $P894, "ResizablePMCArray"
+    push $P894, $P893
+    .return ($P894)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<eq>"  :subid("256_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx897_tgt
+    .local int rx897_pos
+    .local int rx897_off
+    .local int rx897_eos
+    .local int rx897_rep
+    .local pmc rx897_cur
+    (rx897_cur, rx897_pos, rx897_tgt, $I10) = self."!cursor_start"()
+    rx897_cur."!cursor_debug"("START ", "infix:sym<eq>")
+    .lex unicode:"$\x{a2}", rx897_cur
+    .local pmc match
+    .lex "$/", match
+    length rx897_eos, rx897_tgt
+    set rx897_off, 0
+    lt $I10, 2, rx897_start
+    sub rx897_off, $I10, 1
+    substr rx897_tgt, rx897_tgt, rx897_off
+  rx897_start:
+.annotate "line", 437
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_901_fail
+    rx897_cur."!mark_push"(0, rx897_pos, $I10)
+  # rx literal  "eq"
+    add $I11, rx897_pos, 2
+    gt $I11, rx897_eos, rx897_fail
+    sub $I11, rx897_pos, rx897_off
+    substr $S10, rx897_tgt, $I11, 2
+    ne $S10, "eq", rx897_fail
+    add rx897_pos, 2
+    set_addr $I10, rxcap_901_fail
+    ($I12, $I11) = rx897_cur."!mark_peek"($I10)
+    rx897_cur."!cursor_pos"($I11)
+    ($P10) = rx897_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx897_pos, "")
+    rx897_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_901_done
+  rxcap_901_fail:
+    goto rx897_fail
+  rxcap_901_done:
+  # rx subrule "O" subtype=capture negate=
+    rx897_cur."!cursor_pos"(rx897_pos)
+    $P10 = rx897_cur."O"("%relational, :pirop<iseq ISs>")
+    unless $P10, rx897_fail
+    rx897_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx897_pos = $P10."pos"()
+  # rx pass
+    rx897_cur."!cursor_pass"(rx897_pos, "infix:sym<eq>")
+    rx897_cur."!cursor_debug"("PASS  ", "infix:sym<eq>", " at pos=", rx897_pos)
+    .return (rx897_cur)
+  rx897_fail:
+.annotate "line", 358
+    (rx897_rep, rx897_pos, $I10, $P10) = rx897_cur."!mark_fail"(0)
+    lt rx897_pos, -1, rx897_done
+    eq rx897_pos, -1, rx897_fail
+    jump $I10
+  rx897_done:
+    rx897_cur."!cursor_fail"()
+    rx897_cur."!cursor_debug"("FAIL  ", "infix:sym<eq>")
+    .return (rx897_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<eq>"  :subid("257_1258051419.23649") :method
+.annotate "line", 358
+    $P899 = self."!PREFIX__!subrule"("O", "eq")
+    new $P900, "ResizablePMCArray"
+    push $P900, $P899
+    .return ($P900)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<ne>"  :subid("258_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx903_tgt
+    .local int rx903_pos
+    .local int rx903_off
+    .local int rx903_eos
+    .local int rx903_rep
+    .local pmc rx903_cur
+    (rx903_cur, rx903_pos, rx903_tgt, $I10) = self."!cursor_start"()
+    rx903_cur."!cursor_debug"("START ", "infix:sym<ne>")
+    .lex unicode:"$\x{a2}", rx903_cur
+    .local pmc match
+    .lex "$/", match
+    length rx903_eos, rx903_tgt
+    set rx903_off, 0
+    lt $I10, 2, rx903_start
+    sub rx903_off, $I10, 1
+    substr rx903_tgt, rx903_tgt, rx903_off
+  rx903_start:
+.annotate "line", 438
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_907_fail
+    rx903_cur."!mark_push"(0, rx903_pos, $I10)
+  # rx literal  "ne"
+    add $I11, rx903_pos, 2
+    gt $I11, rx903_eos, rx903_fail
+    sub $I11, rx903_pos, rx903_off
+    substr $S10, rx903_tgt, $I11, 2
+    ne $S10, "ne", rx903_fail
+    add rx903_pos, 2
+    set_addr $I10, rxcap_907_fail
+    ($I12, $I11) = rx903_cur."!mark_peek"($I10)
+    rx903_cur."!cursor_pos"($I11)
+    ($P10) = rx903_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx903_pos, "")
+    rx903_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_907_done
+  rxcap_907_fail:
+    goto rx903_fail
+  rxcap_907_done:
+  # rx subrule "O" subtype=capture negate=
+    rx903_cur."!cursor_pos"(rx903_pos)
+    $P10 = rx903_cur."O"("%relational, :pirop<isne ISs>")
+    unless $P10, rx903_fail
+    rx903_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx903_pos = $P10."pos"()
+  # rx pass
+    rx903_cur."!cursor_pass"(rx903_pos, "infix:sym<ne>")
+    rx903_cur."!cursor_debug"("PASS  ", "infix:sym<ne>", " at pos=", rx903_pos)
+    .return (rx903_cur)
+  rx903_fail:
+.annotate "line", 358
+    (rx903_rep, rx903_pos, $I10, $P10) = rx903_cur."!mark_fail"(0)
+    lt rx903_pos, -1, rx903_done
+    eq rx903_pos, -1, rx903_fail
+    jump $I10
+  rx903_done:
+    rx903_cur."!cursor_fail"()
+    rx903_cur."!cursor_debug"("FAIL  ", "infix:sym<ne>")
+    .return (rx903_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<ne>"  :subid("259_1258051419.23649") :method
+.annotate "line", 358
+    $P905 = self."!PREFIX__!subrule"("O", "ne")
+    new $P906, "ResizablePMCArray"
+    push $P906, $P905
+    .return ($P906)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<le>"  :subid("260_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx909_tgt
+    .local int rx909_pos
+    .local int rx909_off
+    .local int rx909_eos
+    .local int rx909_rep
+    .local pmc rx909_cur
+    (rx909_cur, rx909_pos, rx909_tgt, $I10) = self."!cursor_start"()
+    rx909_cur."!cursor_debug"("START ", "infix:sym<le>")
+    .lex unicode:"$\x{a2}", rx909_cur
+    .local pmc match
+    .lex "$/", match
+    length rx909_eos, rx909_tgt
+    set rx909_off, 0
+    lt $I10, 2, rx909_start
+    sub rx909_off, $I10, 1
+    substr rx909_tgt, rx909_tgt, rx909_off
+  rx909_start:
+.annotate "line", 439
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_913_fail
+    rx909_cur."!mark_push"(0, rx909_pos, $I10)
+  # rx literal  "le"
+    add $I11, rx909_pos, 2
+    gt $I11, rx909_eos, rx909_fail
+    sub $I11, rx909_pos, rx909_off
+    substr $S10, rx909_tgt, $I11, 2
+    ne $S10, "le", rx909_fail
+    add rx909_pos, 2
+    set_addr $I10, rxcap_913_fail
+    ($I12, $I11) = rx909_cur."!mark_peek"($I10)
+    rx909_cur."!cursor_pos"($I11)
+    ($P10) = rx909_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx909_pos, "")
+    rx909_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_913_done
+  rxcap_913_fail:
+    goto rx909_fail
+  rxcap_913_done:
+  # rx subrule "O" subtype=capture negate=
+    rx909_cur."!cursor_pos"(rx909_pos)
+    $P10 = rx909_cur."O"("%relational, :pirop<isle ISs>")
+    unless $P10, rx909_fail
+    rx909_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx909_pos = $P10."pos"()
+  # rx pass
+    rx909_cur."!cursor_pass"(rx909_pos, "infix:sym<le>")
+    rx909_cur."!cursor_debug"("PASS  ", "infix:sym<le>", " at pos=", rx909_pos)
+    .return (rx909_cur)
+  rx909_fail:
+.annotate "line", 358
+    (rx909_rep, rx909_pos, $I10, $P10) = rx909_cur."!mark_fail"(0)
+    lt rx909_pos, -1, rx909_done
+    eq rx909_pos, -1, rx909_fail
+    jump $I10
+  rx909_done:
+    rx909_cur."!cursor_fail"()
+    rx909_cur."!cursor_debug"("FAIL  ", "infix:sym<le>")
+    .return (rx909_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<le>"  :subid("261_1258051419.23649") :method
+.annotate "line", 358
+    $P911 = self."!PREFIX__!subrule"("O", "le")
+    new $P912, "ResizablePMCArray"
+    push $P912, $P911
+    .return ($P912)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<ge>"  :subid("262_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx915_tgt
+    .local int rx915_pos
+    .local int rx915_off
+    .local int rx915_eos
+    .local int rx915_rep
+    .local pmc rx915_cur
+    (rx915_cur, rx915_pos, rx915_tgt, $I10) = self."!cursor_start"()
+    rx915_cur."!cursor_debug"("START ", "infix:sym<ge>")
+    .lex unicode:"$\x{a2}", rx915_cur
+    .local pmc match
+    .lex "$/", match
+    length rx915_eos, rx915_tgt
+    set rx915_off, 0
+    lt $I10, 2, rx915_start
+    sub rx915_off, $I10, 1
+    substr rx915_tgt, rx915_tgt, rx915_off
+  rx915_start:
+.annotate "line", 440
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_919_fail
+    rx915_cur."!mark_push"(0, rx915_pos, $I10)
+  # rx literal  "ge"
+    add $I11, rx915_pos, 2
+    gt $I11, rx915_eos, rx915_fail
+    sub $I11, rx915_pos, rx915_off
+    substr $S10, rx915_tgt, $I11, 2
+    ne $S10, "ge", rx915_fail
+    add rx915_pos, 2
+    set_addr $I10, rxcap_919_fail
+    ($I12, $I11) = rx915_cur."!mark_peek"($I10)
+    rx915_cur."!cursor_pos"($I11)
+    ($P10) = rx915_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx915_pos, "")
+    rx915_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_919_done
+  rxcap_919_fail:
+    goto rx915_fail
+  rxcap_919_done:
+  # rx subrule "O" subtype=capture negate=
+    rx915_cur."!cursor_pos"(rx915_pos)
+    $P10 = rx915_cur."O"("%relational, :pirop<isge ISs>")
+    unless $P10, rx915_fail
+    rx915_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx915_pos = $P10."pos"()
+  # rx pass
+    rx915_cur."!cursor_pass"(rx915_pos, "infix:sym<ge>")
+    rx915_cur."!cursor_debug"("PASS  ", "infix:sym<ge>", " at pos=", rx915_pos)
+    .return (rx915_cur)
+  rx915_fail:
+.annotate "line", 358
+    (rx915_rep, rx915_pos, $I10, $P10) = rx915_cur."!mark_fail"(0)
+    lt rx915_pos, -1, rx915_done
+    eq rx915_pos, -1, rx915_fail
+    jump $I10
+  rx915_done:
+    rx915_cur."!cursor_fail"()
+    rx915_cur."!cursor_debug"("FAIL  ", "infix:sym<ge>")
+    .return (rx915_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<ge>"  :subid("263_1258051419.23649") :method
+.annotate "line", 358
+    $P917 = self."!PREFIX__!subrule"("O", "ge")
+    new $P918, "ResizablePMCArray"
+    push $P918, $P917
+    .return ($P918)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<lt>"  :subid("264_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx921_tgt
+    .local int rx921_pos
+    .local int rx921_off
+    .local int rx921_eos
+    .local int rx921_rep
+    .local pmc rx921_cur
+    (rx921_cur, rx921_pos, rx921_tgt, $I10) = self."!cursor_start"()
+    rx921_cur."!cursor_debug"("START ", "infix:sym<lt>")
+    .lex unicode:"$\x{a2}", rx921_cur
+    .local pmc match
+    .lex "$/", match
+    length rx921_eos, rx921_tgt
+    set rx921_off, 0
+    lt $I10, 2, rx921_start
+    sub rx921_off, $I10, 1
+    substr rx921_tgt, rx921_tgt, rx921_off
+  rx921_start:
+.annotate "line", 441
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_925_fail
+    rx921_cur."!mark_push"(0, rx921_pos, $I10)
+  # rx literal  "lt"
+    add $I11, rx921_pos, 2
+    gt $I11, rx921_eos, rx921_fail
+    sub $I11, rx921_pos, rx921_off
+    substr $S10, rx921_tgt, $I11, 2
+    ne $S10, "lt", rx921_fail
+    add rx921_pos, 2
+    set_addr $I10, rxcap_925_fail
+    ($I12, $I11) = rx921_cur."!mark_peek"($I10)
+    rx921_cur."!cursor_pos"($I11)
+    ($P10) = rx921_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx921_pos, "")
+    rx921_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_925_done
+  rxcap_925_fail:
+    goto rx921_fail
+  rxcap_925_done:
+  # rx subrule "O" subtype=capture negate=
+    rx921_cur."!cursor_pos"(rx921_pos)
+    $P10 = rx921_cur."O"("%relational, :pirop<islt ISs>")
+    unless $P10, rx921_fail
+    rx921_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx921_pos = $P10."pos"()
+  # rx pass
+    rx921_cur."!cursor_pass"(rx921_pos, "infix:sym<lt>")
+    rx921_cur."!cursor_debug"("PASS  ", "infix:sym<lt>", " at pos=", rx921_pos)
+    .return (rx921_cur)
+  rx921_fail:
+.annotate "line", 358
+    (rx921_rep, rx921_pos, $I10, $P10) = rx921_cur."!mark_fail"(0)
+    lt rx921_pos, -1, rx921_done
+    eq rx921_pos, -1, rx921_fail
+    jump $I10
+  rx921_done:
+    rx921_cur."!cursor_fail"()
+    rx921_cur."!cursor_debug"("FAIL  ", "infix:sym<lt>")
+    .return (rx921_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<lt>"  :subid("265_1258051419.23649") :method
+.annotate "line", 358
+    $P923 = self."!PREFIX__!subrule"("O", "lt")
+    new $P924, "ResizablePMCArray"
+    push $P924, $P923
+    .return ($P924)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<gt>"  :subid("266_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx927_tgt
+    .local int rx927_pos
+    .local int rx927_off
+    .local int rx927_eos
+    .local int rx927_rep
+    .local pmc rx927_cur
+    (rx927_cur, rx927_pos, rx927_tgt, $I10) = self."!cursor_start"()
+    rx927_cur."!cursor_debug"("START ", "infix:sym<gt>")
+    .lex unicode:"$\x{a2}", rx927_cur
+    .local pmc match
+    .lex "$/", match
+    length rx927_eos, rx927_tgt
+    set rx927_off, 0
+    lt $I10, 2, rx927_start
+    sub rx927_off, $I10, 1
+    substr rx927_tgt, rx927_tgt, rx927_off
+  rx927_start:
+.annotate "line", 442
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_931_fail
+    rx927_cur."!mark_push"(0, rx927_pos, $I10)
+  # rx literal  "gt"
+    add $I11, rx927_pos, 2
+    gt $I11, rx927_eos, rx927_fail
+    sub $I11, rx927_pos, rx927_off
+    substr $S10, rx927_tgt, $I11, 2
+    ne $S10, "gt", rx927_fail
+    add rx927_pos, 2
+    set_addr $I10, rxcap_931_fail
+    ($I12, $I11) = rx927_cur."!mark_peek"($I10)
+    rx927_cur."!cursor_pos"($I11)
+    ($P10) = rx927_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx927_pos, "")
+    rx927_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_931_done
+  rxcap_931_fail:
+    goto rx927_fail
+  rxcap_931_done:
+  # rx subrule "O" subtype=capture negate=
+    rx927_cur."!cursor_pos"(rx927_pos)
+    $P10 = rx927_cur."O"("%relational, :pirop<isgt ISs>")
+    unless $P10, rx927_fail
+    rx927_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx927_pos = $P10."pos"()
+  # rx pass
+    rx927_cur."!cursor_pass"(rx927_pos, "infix:sym<gt>")
+    rx927_cur."!cursor_debug"("PASS  ", "infix:sym<gt>", " at pos=", rx927_pos)
+    .return (rx927_cur)
+  rx927_fail:
+.annotate "line", 358
+    (rx927_rep, rx927_pos, $I10, $P10) = rx927_cur."!mark_fail"(0)
+    lt rx927_pos, -1, rx927_done
+    eq rx927_pos, -1, rx927_fail
+    jump $I10
+  rx927_done:
+    rx927_cur."!cursor_fail"()
+    rx927_cur."!cursor_debug"("FAIL  ", "infix:sym<gt>")
+    .return (rx927_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<gt>"  :subid("267_1258051419.23649") :method
+.annotate "line", 358
+    $P929 = self."!PREFIX__!subrule"("O", "gt")
+    new $P930, "ResizablePMCArray"
+    push $P930, $P929
+    .return ($P930)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<=:=>"  :subid("268_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx933_tgt
+    .local int rx933_pos
+    .local int rx933_off
+    .local int rx933_eos
+    .local int rx933_rep
+    .local pmc rx933_cur
+    (rx933_cur, rx933_pos, rx933_tgt, $I10) = self."!cursor_start"()
+    rx933_cur."!cursor_debug"("START ", "infix:sym<=:=>")
+    .lex unicode:"$\x{a2}", rx933_cur
+    .local pmc match
+    .lex "$/", match
+    length rx933_eos, rx933_tgt
+    set rx933_off, 0
+    lt $I10, 2, rx933_start
+    sub rx933_off, $I10, 1
+    substr rx933_tgt, rx933_tgt, rx933_off
+  rx933_start:
+.annotate "line", 443
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_937_fail
+    rx933_cur."!mark_push"(0, rx933_pos, $I10)
+  # rx literal  "=:="
+    add $I11, rx933_pos, 3
+    gt $I11, rx933_eos, rx933_fail
+    sub $I11, rx933_pos, rx933_off
+    substr $S10, rx933_tgt, $I11, 3
+    ne $S10, "=:=", rx933_fail
+    add rx933_pos, 3
+    set_addr $I10, rxcap_937_fail
+    ($I12, $I11) = rx933_cur."!mark_peek"($I10)
+    rx933_cur."!cursor_pos"($I11)
+    ($P10) = rx933_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx933_pos, "")
+    rx933_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_937_done
+  rxcap_937_fail:
+    goto rx933_fail
+  rxcap_937_done:
+  # rx subrule "O" subtype=capture negate=
+    rx933_cur."!cursor_pos"(rx933_pos)
+    $P10 = rx933_cur."O"("%relational, :pirop<issame>")
+    unless $P10, rx933_fail
+    rx933_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx933_pos = $P10."pos"()
+  # rx pass
+    rx933_cur."!cursor_pass"(rx933_pos, "infix:sym<=:=>")
+    rx933_cur."!cursor_debug"("PASS  ", "infix:sym<=:=>", " at pos=", rx933_pos)
+    .return (rx933_cur)
+  rx933_fail:
+.annotate "line", 358
+    (rx933_rep, rx933_pos, $I10, $P10) = rx933_cur."!mark_fail"(0)
+    lt rx933_pos, -1, rx933_done
+    eq rx933_pos, -1, rx933_fail
+    jump $I10
+  rx933_done:
+    rx933_cur."!cursor_fail"()
+    rx933_cur."!cursor_debug"("FAIL  ", "infix:sym<=:=>")
+    .return (rx933_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<=:=>"  :subid("269_1258051419.23649") :method
+.annotate "line", 358
+    $P935 = self."!PREFIX__!subrule"("O", "=:=")
+    new $P936, "ResizablePMCArray"
+    push $P936, $P935
+    .return ($P936)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<&&>"  :subid("270_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx939_tgt
+    .local int rx939_pos
+    .local int rx939_off
+    .local int rx939_eos
+    .local int rx939_rep
+    .local pmc rx939_cur
+    (rx939_cur, rx939_pos, rx939_tgt, $I10) = self."!cursor_start"()
+    rx939_cur."!cursor_debug"("START ", "infix:sym<&&>")
+    .lex unicode:"$\x{a2}", rx939_cur
+    .local pmc match
+    .lex "$/", match
+    length rx939_eos, rx939_tgt
+    set rx939_off, 0
+    lt $I10, 2, rx939_start
+    sub rx939_off, $I10, 1
+    substr rx939_tgt, rx939_tgt, rx939_off
+  rx939_start:
+.annotate "line", 445
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_943_fail
+    rx939_cur."!mark_push"(0, rx939_pos, $I10)
+  # rx literal  "&&"
+    add $I11, rx939_pos, 2
+    gt $I11, rx939_eos, rx939_fail
+    sub $I11, rx939_pos, rx939_off
+    substr $S10, rx939_tgt, $I11, 2
+    ne $S10, "&&", rx939_fail
+    add rx939_pos, 2
+    set_addr $I10, rxcap_943_fail
+    ($I12, $I11) = rx939_cur."!mark_peek"($I10)
+    rx939_cur."!cursor_pos"($I11)
+    ($P10) = rx939_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx939_pos, "")
+    rx939_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_943_done
+  rxcap_943_fail:
+    goto rx939_fail
+  rxcap_943_done:
+  # rx subrule "O" subtype=capture negate=
+    rx939_cur."!cursor_pos"(rx939_pos)
+    $P10 = rx939_cur."O"("%tight_and, :pasttype<if>")
+    unless $P10, rx939_fail
+    rx939_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx939_pos = $P10."pos"()
+  # rx pass
+    rx939_cur."!cursor_pass"(rx939_pos, "infix:sym<&&>")
+    rx939_cur."!cursor_debug"("PASS  ", "infix:sym<&&>", " at pos=", rx939_pos)
+    .return (rx939_cur)
+  rx939_fail:
+.annotate "line", 358
+    (rx939_rep, rx939_pos, $I10, $P10) = rx939_cur."!mark_fail"(0)
+    lt rx939_pos, -1, rx939_done
+    eq rx939_pos, -1, rx939_fail
+    jump $I10
+  rx939_done:
+    rx939_cur."!cursor_fail"()
+    rx939_cur."!cursor_debug"("FAIL  ", "infix:sym<&&>")
+    .return (rx939_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<&&>"  :subid("271_1258051419.23649") :method
+.annotate "line", 358
+    $P941 = self."!PREFIX__!subrule"("O", "&&")
+    new $P942, "ResizablePMCArray"
+    push $P942, $P941
+    .return ($P942)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<||>"  :subid("272_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx945_tgt
+    .local int rx945_pos
+    .local int rx945_off
+    .local int rx945_eos
+    .local int rx945_rep
+    .local pmc rx945_cur
+    (rx945_cur, rx945_pos, rx945_tgt, $I10) = self."!cursor_start"()
+    rx945_cur."!cursor_debug"("START ", "infix:sym<||>")
+    .lex unicode:"$\x{a2}", rx945_cur
+    .local pmc match
+    .lex "$/", match
+    length rx945_eos, rx945_tgt
+    set rx945_off, 0
+    lt $I10, 2, rx945_start
+    sub rx945_off, $I10, 1
+    substr rx945_tgt, rx945_tgt, rx945_off
+  rx945_start:
+.annotate "line", 447
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_949_fail
+    rx945_cur."!mark_push"(0, rx945_pos, $I10)
+  # rx literal  "||"
+    add $I11, rx945_pos, 2
+    gt $I11, rx945_eos, rx945_fail
+    sub $I11, rx945_pos, rx945_off
+    substr $S10, rx945_tgt, $I11, 2
+    ne $S10, "||", rx945_fail
+    add rx945_pos, 2
+    set_addr $I10, rxcap_949_fail
+    ($I12, $I11) = rx945_cur."!mark_peek"($I10)
+    rx945_cur."!cursor_pos"($I11)
+    ($P10) = rx945_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx945_pos, "")
+    rx945_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_949_done
+  rxcap_949_fail:
+    goto rx945_fail
+  rxcap_949_done:
+  # rx subrule "O" subtype=capture negate=
+    rx945_cur."!cursor_pos"(rx945_pos)
+    $P10 = rx945_cur."O"("%tight_or, :pasttype<unless>")
+    unless $P10, rx945_fail
+    rx945_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx945_pos = $P10."pos"()
+  # rx pass
+    rx945_cur."!cursor_pass"(rx945_pos, "infix:sym<||>")
+    rx945_cur."!cursor_debug"("PASS  ", "infix:sym<||>", " at pos=", rx945_pos)
+    .return (rx945_cur)
+  rx945_fail:
+.annotate "line", 358
+    (rx945_rep, rx945_pos, $I10, $P10) = rx945_cur."!mark_fail"(0)
+    lt rx945_pos, -1, rx945_done
+    eq rx945_pos, -1, rx945_fail
+    jump $I10
+  rx945_done:
+    rx945_cur."!cursor_fail"()
+    rx945_cur."!cursor_debug"("FAIL  ", "infix:sym<||>")
+    .return (rx945_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<||>"  :subid("273_1258051419.23649") :method
+.annotate "line", 358
+    $P947 = self."!PREFIX__!subrule"("O", "||")
+    new $P948, "ResizablePMCArray"
+    push $P948, $P947
+    .return ($P948)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<//>"  :subid("274_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx951_tgt
+    .local int rx951_pos
+    .local int rx951_off
+    .local int rx951_eos
+    .local int rx951_rep
+    .local pmc rx951_cur
+    (rx951_cur, rx951_pos, rx951_tgt, $I10) = self."!cursor_start"()
+    rx951_cur."!cursor_debug"("START ", "infix:sym<//>")
+    .lex unicode:"$\x{a2}", rx951_cur
+    .local pmc match
+    .lex "$/", match
+    length rx951_eos, rx951_tgt
+    set rx951_off, 0
+    lt $I10, 2, rx951_start
+    sub rx951_off, $I10, 1
+    substr rx951_tgt, rx951_tgt, rx951_off
+  rx951_start:
+.annotate "line", 448
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_955_fail
+    rx951_cur."!mark_push"(0, rx951_pos, $I10)
+  # rx literal  "//"
+    add $I11, rx951_pos, 2
+    gt $I11, rx951_eos, rx951_fail
+    sub $I11, rx951_pos, rx951_off
+    substr $S10, rx951_tgt, $I11, 2
+    ne $S10, "//", rx951_fail
+    add rx951_pos, 2
+    set_addr $I10, rxcap_955_fail
+    ($I12, $I11) = rx951_cur."!mark_peek"($I10)
+    rx951_cur."!cursor_pos"($I11)
+    ($P10) = rx951_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx951_pos, "")
+    rx951_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_955_done
+  rxcap_955_fail:
+    goto rx951_fail
+  rxcap_955_done:
+  # rx subrule "O" subtype=capture negate=
+    rx951_cur."!cursor_pos"(rx951_pos)
+    $P10 = rx951_cur."O"("%tight_or, :pasttype<def_or>")
+    unless $P10, rx951_fail
+    rx951_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx951_pos = $P10."pos"()
+  # rx pass
+    rx951_cur."!cursor_pass"(rx951_pos, "infix:sym<//>")
+    rx951_cur."!cursor_debug"("PASS  ", "infix:sym<//>", " at pos=", rx951_pos)
+    .return (rx951_cur)
+  rx951_fail:
+.annotate "line", 358
+    (rx951_rep, rx951_pos, $I10, $P10) = rx951_cur."!mark_fail"(0)
+    lt rx951_pos, -1, rx951_done
+    eq rx951_pos, -1, rx951_fail
+    jump $I10
+  rx951_done:
+    rx951_cur."!cursor_fail"()
+    rx951_cur."!cursor_debug"("FAIL  ", "infix:sym<//>")
+    .return (rx951_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<//>"  :subid("275_1258051419.23649") :method
+.annotate "line", 358
+    $P953 = self."!PREFIX__!subrule"("O", "//")
+    new $P954, "ResizablePMCArray"
+    push $P954, $P953
+    .return ($P954)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<?? !!>"  :subid("276_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx957_tgt
+    .local int rx957_pos
+    .local int rx957_off
+    .local int rx957_eos
+    .local int rx957_rep
+    .local pmc rx957_cur
+    (rx957_cur, rx957_pos, rx957_tgt, $I10) = self."!cursor_start"()
+    rx957_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
+    .lex unicode:"$\x{a2}", rx957_cur
+    .local pmc match
+    .lex "$/", match
+    length rx957_eos, rx957_tgt
+    set rx957_off, 0
+    lt $I10, 2, rx957_start
+    sub rx957_off, $I10, 1
+    substr rx957_tgt, rx957_tgt, rx957_off
+  rx957_start:
+.annotate "line", 451
+  # rx literal  "??"
+    add $I11, rx957_pos, 2
+    gt $I11, rx957_eos, rx957_fail
+    sub $I11, rx957_pos, rx957_off
+    substr $S10, rx957_tgt, $I11, 2
+    ne $S10, "??", rx957_fail
+    add rx957_pos, 2
+.annotate "line", 452
+  # rx subrule "ws" subtype=method negate=
+    rx957_cur."!cursor_pos"(rx957_pos)
+    $P10 = rx957_cur."ws"()
+    unless $P10, rx957_fail
+    rx957_pos = $P10."pos"()
+.annotate "line", 453
+  # rx subrule "EXPR" subtype=capture negate=
+    rx957_cur."!cursor_pos"(rx957_pos)
+    $P10 = rx957_cur."EXPR"("i=")
+    unless $P10, rx957_fail
+    rx957_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx957_pos = $P10."pos"()
+.annotate "line", 454
+  # rx literal  "!!"
+    add $I11, rx957_pos, 2
+    gt $I11, rx957_eos, rx957_fail
+    sub $I11, rx957_pos, rx957_off
+    substr $S10, rx957_tgt, $I11, 2
+    ne $S10, "!!", rx957_fail
+    add rx957_pos, 2
+.annotate "line", 455
+  # rx subrule "O" subtype=capture negate=
+    rx957_cur."!cursor_pos"(rx957_pos)
+    $P10 = rx957_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
+    unless $P10, rx957_fail
+    rx957_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx957_pos = $P10."pos"()
+.annotate "line", 450
+  # rx pass
+    rx957_cur."!cursor_pass"(rx957_pos, "infix:sym<?? !!>")
+    rx957_cur."!cursor_debug"("PASS  ", "infix:sym<?? !!>", " at pos=", rx957_pos)
+    .return (rx957_cur)
+  rx957_fail:
+.annotate "line", 358
+    (rx957_rep, rx957_pos, $I10, $P10) = rx957_cur."!mark_fail"(0)
+    lt rx957_pos, -1, rx957_done
+    eq rx957_pos, -1, rx957_fail
+    jump $I10
+  rx957_done:
+    rx957_cur."!cursor_fail"()
+    rx957_cur."!cursor_debug"("FAIL  ", "infix:sym<?? !!>")
+    .return (rx957_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("277_1258051419.23649") :method
+.annotate "line", 358
+    $P959 = self."!PREFIX__!subrule"("ws", "??")
+    new $P960, "ResizablePMCArray"
+    push $P960, $P959
+    .return ($P960)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<=>"  :subid("278_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx962_tgt
+    .local int rx962_pos
+    .local int rx962_off
+    .local int rx962_eos
+    .local int rx962_rep
+    .local pmc rx962_cur
+    (rx962_cur, rx962_pos, rx962_tgt, $I10) = self."!cursor_start"()
+    rx962_cur."!cursor_debug"("START ", "infix:sym<=>")
+    .lex unicode:"$\x{a2}", rx962_cur
+    .local pmc match
+    .lex "$/", match
+    length rx962_eos, rx962_tgt
+    set rx962_off, 0
+    lt $I10, 2, rx962_start
+    sub rx962_off, $I10, 1
+    substr rx962_tgt, rx962_tgt, rx962_off
+  rx962_start:
+.annotate "line", 459
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_966_fail
+    rx962_cur."!mark_push"(0, rx962_pos, $I10)
+  # rx literal  "="
+    add $I11, rx962_pos, 1
+    gt $I11, rx962_eos, rx962_fail
+    sub $I11, rx962_pos, rx962_off
+    substr $S10, rx962_tgt, $I11, 1
+    ne $S10, "=", rx962_fail
+    add rx962_pos, 1
+    set_addr $I10, rxcap_966_fail
+    ($I12, $I11) = rx962_cur."!mark_peek"($I10)
+    rx962_cur."!cursor_pos"($I11)
+    ($P10) = rx962_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx962_pos, "")
+    rx962_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_966_done
+  rxcap_966_fail:
+    goto rx962_fail
+  rxcap_966_done:
+  # rx subrule "panic" subtype=method negate=
+    rx962_cur."!cursor_pos"(rx962_pos)
+    $P10 = rx962_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
+    unless $P10, rx962_fail
+    rx962_pos = $P10."pos"()
+.annotate "line", 458
+  # rx pass
+    rx962_cur."!cursor_pass"(rx962_pos, "infix:sym<=>")
+    rx962_cur."!cursor_debug"("PASS  ", "infix:sym<=>", " at pos=", rx962_pos)
+    .return (rx962_cur)
+  rx962_fail:
+.annotate "line", 358
+    (rx962_rep, rx962_pos, $I10, $P10) = rx962_cur."!mark_fail"(0)
+    lt rx962_pos, -1, rx962_done
+    eq rx962_pos, -1, rx962_fail
+    jump $I10
+  rx962_done:
+    rx962_cur."!cursor_fail"()
+    rx962_cur."!cursor_debug"("FAIL  ", "infix:sym<=>")
+    .return (rx962_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<=>"  :subid("279_1258051419.23649") :method
+.annotate "line", 358
+    $P964 = self."!PREFIX__!subrule"("panic", "=")
+    new $P965, "ResizablePMCArray"
+    push $P965, $P964
+    .return ($P965)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<:=>"  :subid("280_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx968_tgt
+    .local int rx968_pos
+    .local int rx968_off
+    .local int rx968_eos
+    .local int rx968_rep
+    .local pmc rx968_cur
+    (rx968_cur, rx968_pos, rx968_tgt, $I10) = self."!cursor_start"()
+    rx968_cur."!cursor_debug"("START ", "infix:sym<:=>")
+    .lex unicode:"$\x{a2}", rx968_cur
+    .local pmc match
+    .lex "$/", match
+    length rx968_eos, rx968_tgt
+    set rx968_off, 0
+    lt $I10, 2, rx968_start
+    sub rx968_off, $I10, 1
+    substr rx968_tgt, rx968_tgt, rx968_off
+  rx968_start:
+.annotate "line", 461
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_972_fail
+    rx968_cur."!mark_push"(0, rx968_pos, $I10)
+  # rx literal  ":="
+    add $I11, rx968_pos, 2
+    gt $I11, rx968_eos, rx968_fail
+    sub $I11, rx968_pos, rx968_off
+    substr $S10, rx968_tgt, $I11, 2
+    ne $S10, ":=", rx968_fail
+    add rx968_pos, 2
+    set_addr $I10, rxcap_972_fail
+    ($I12, $I11) = rx968_cur."!mark_peek"($I10)
+    rx968_cur."!cursor_pos"($I11)
+    ($P10) = rx968_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx968_pos, "")
+    rx968_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_972_done
+  rxcap_972_fail:
+    goto rx968_fail
+  rxcap_972_done:
+  # rx subrule "O" subtype=capture negate=
+    rx968_cur."!cursor_pos"(rx968_pos)
+    $P10 = rx968_cur."O"("%assignment, :pasttype<bind>")
+    unless $P10, rx968_fail
+    rx968_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx968_pos = $P10."pos"()
+  # rx pass
+    rx968_cur."!cursor_pass"(rx968_pos, "infix:sym<:=>")
+    rx968_cur."!cursor_debug"("PASS  ", "infix:sym<:=>", " at pos=", rx968_pos)
+    .return (rx968_cur)
+  rx968_fail:
+.annotate "line", 358
+    (rx968_rep, rx968_pos, $I10, $P10) = rx968_cur."!mark_fail"(0)
+    lt rx968_pos, -1, rx968_done
+    eq rx968_pos, -1, rx968_fail
+    jump $I10
+  rx968_done:
+    rx968_cur."!cursor_fail"()
+    rx968_cur."!cursor_debug"("FAIL  ", "infix:sym<:=>")
+    .return (rx968_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<:=>"  :subid("281_1258051419.23649") :method
+.annotate "line", 358
+    $P970 = self."!PREFIX__!subrule"("O", ":=")
+    new $P971, "ResizablePMCArray"
+    push $P971, $P970
+    .return ($P971)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<::=>"  :subid("282_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx974_tgt
+    .local int rx974_pos
+    .local int rx974_off
+    .local int rx974_eos
+    .local int rx974_rep
+    .local pmc rx974_cur
+    (rx974_cur, rx974_pos, rx974_tgt, $I10) = self."!cursor_start"()
+    rx974_cur."!cursor_debug"("START ", "infix:sym<::=>")
+    .lex unicode:"$\x{a2}", rx974_cur
+    .local pmc match
+    .lex "$/", match
+    length rx974_eos, rx974_tgt
+    set rx974_off, 0
+    lt $I10, 2, rx974_start
+    sub rx974_off, $I10, 1
+    substr rx974_tgt, rx974_tgt, rx974_off
+  rx974_start:
+.annotate "line", 462
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_978_fail
+    rx974_cur."!mark_push"(0, rx974_pos, $I10)
+  # rx literal  "::="
+    add $I11, rx974_pos, 3
+    gt $I11, rx974_eos, rx974_fail
+    sub $I11, rx974_pos, rx974_off
+    substr $S10, rx974_tgt, $I11, 3
+    ne $S10, "::=", rx974_fail
+    add rx974_pos, 3
+    set_addr $I10, rxcap_978_fail
+    ($I12, $I11) = rx974_cur."!mark_peek"($I10)
+    rx974_cur."!cursor_pos"($I11)
+    ($P10) = rx974_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx974_pos, "")
+    rx974_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_978_done
+  rxcap_978_fail:
+    goto rx974_fail
+  rxcap_978_done:
+  # rx subrule "O" subtype=capture negate=
+    rx974_cur."!cursor_pos"(rx974_pos)
+    $P10 = rx974_cur."O"("%assignment, :pasttype<bind>")
+    unless $P10, rx974_fail
+    rx974_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx974_pos = $P10."pos"()
+  # rx pass
+    rx974_cur."!cursor_pass"(rx974_pos, "infix:sym<::=>")
+    rx974_cur."!cursor_debug"("PASS  ", "infix:sym<::=>", " at pos=", rx974_pos)
+    .return (rx974_cur)
+  rx974_fail:
+.annotate "line", 358
+    (rx974_rep, rx974_pos, $I10, $P10) = rx974_cur."!mark_fail"(0)
+    lt rx974_pos, -1, rx974_done
+    eq rx974_pos, -1, rx974_fail
+    jump $I10
+  rx974_done:
+    rx974_cur."!cursor_fail"()
+    rx974_cur."!cursor_debug"("FAIL  ", "infix:sym<::=>")
+    .return (rx974_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<::=>"  :subid("283_1258051419.23649") :method
+.annotate "line", 358
+    $P976 = self."!PREFIX__!subrule"("O", "::=")
+    new $P977, "ResizablePMCArray"
+    push $P977, $P976
+    .return ($P977)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infix:sym<,>"  :subid("284_1258051419.23649") :method :outer("11_1258051419.23649")
+.annotate "line", 358
+    .local string rx980_tgt
+    .local int rx980_pos
+    .local int rx980_off
+    .local int rx980_eos
+    .local int rx980_rep
+    .local pmc rx980_cur
+    (rx980_cur, rx980_pos, rx980_tgt, $I10) = self."!cursor_start"()
+    rx980_cur."!cursor_debug"("START ", "infix:sym<,>")
+    .lex unicode:"$\x{a2}", rx980_cur
+    .local pmc match
+    .lex "$/", match
+    length rx980_eos, rx980_tgt
+    set rx980_off, 0
+    lt $I10, 2, rx980_start
+    sub rx980_off, $I10, 1
+    substr rx980_tgt, rx980_tgt, rx980_off
+  rx980_start:
+.annotate "line", 464
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_984_fail
+    rx980_cur."!mark_push"(0, rx980_pos, $I10)
+  # rx literal  ","
+    add $I11, rx980_pos, 1
+    gt $I11, rx980_eos, rx980_fail
+    sub $I11, rx980_pos, rx980_off
+    substr $S10, rx980_tgt, $I11, 1
+    ne $S10, ",", rx980_fail
+    add rx980_pos, 1
+    set_addr $I10, rxcap_984_fail
+    ($I12, $I11) = rx980_cur."!mark_peek"($I10)
+    rx980_cur."!cursor_pos"($I11)
+    ($P10) = rx980_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx980_pos, "")
+    rx980_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_984_done
+  rxcap_984_fail:
+    goto rx980_fail
+  rxcap_984_done:
+  # rx subrule "O" subtype=capture negate=
+    rx980_cur."!cursor_pos"(rx980_pos)
+    $P10 = rx980_cur."O"("%comma, :pasttype<list>")
+    unless $P10, rx980_fail
+    rx980_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("O")
+    rx980_pos = $P10."pos"()
+  # rx pass
+    rx980_cur."!cursor_pass"(rx980_pos, "infix:sym<,>")
+    rx980_cur."!cursor_debug"("PASS  ", "infix:sym<,>", " at pos=", rx980_pos)
+    .return (rx980_cur)
+  rx980_fail:
+.annotate "line", 358
+    (rx980_rep, rx980_pos, $I10, $P10) = rx980_cur."!mark_fail"(0)
+    lt rx980_pos, -1, rx980_done
+    eq rx980_pos, -1, rx980_fail
+    jump $I10
+  rx980_done:
+    rx980_cur."!cursor_fail"()
+    rx980_cur."!cursor_debug"("FAIL  ", "infix:sym<,>")
+    .return (rx980_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infix:sym<,>"  :subid("285_1258051419.23649") :method
+.annotate "line", 358
+    $P982 = self."!PREFIX__!subrule"("O", ",")
+    new $P983, "ResizablePMCArray"
+    push $P983, $P982
+    .return ($P983)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "_block985"  :subid("286_1258051419.23649") :outer("11_1258051419.23649")
+.annotate "line", 467
+    .const 'Sub' $P1015 = "297_1258051419.23649" 
+    capture_lex $P1015
+    .const 'Sub' $P1003 = "294_1258051419.23649" 
+    capture_lex $P1003
+    .const 'Sub' $P999 = "292_1258051419.23649" 
+    capture_lex $P999
+    .const 'Sub' $P995 = "290_1258051419.23649" 
+    capture_lex $P995
+    .const 'Sub' $P987 = "287_1258051419.23649" 
+    capture_lex $P987
+    .const 'Sub' $P1015 = "297_1258051419.23649" 
+    capture_lex $P1015
+    .return ($P1015)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "metachar:sym<:my>"  :subid("287_1258051419.23649") :method :outer("286_1258051419.23649")
+.annotate "line", 467
+    .const 'Sub' $P992 = "289_1258051419.23649" 
+    capture_lex $P992
+    .local string rx988_tgt
+    .local int rx988_pos
+    .local int rx988_off
+    .local int rx988_eos
+    .local int rx988_rep
+    .local pmc rx988_cur
+    (rx988_cur, rx988_pos, rx988_tgt, $I10) = self."!cursor_start"()
+    rx988_cur."!cursor_debug"("START ", "metachar:sym<:my>")
+    .lex unicode:"$\x{a2}", rx988_cur
+    .local pmc match
+    .lex "$/", match
+    length rx988_eos, rx988_tgt
+    set rx988_off, 0
+    lt $I10, 2, rx988_start
+    sub rx988_off, $I10, 1
+    substr rx988_tgt, rx988_tgt, rx988_off
+  rx988_start:
+.annotate "line", 469
+  # rx literal  ":"
+    add $I11, rx988_pos, 1
+    gt $I11, rx988_eos, rx988_fail
+    sub $I11, rx988_pos, rx988_off
+    substr $S10, rx988_tgt, $I11, 1
+    ne $S10, ":", rx988_fail
+    add rx988_pos, 1
+  # rx subrule "before" subtype=zerowidth negate=
+    rx988_cur."!cursor_pos"(rx988_pos)
+    .const 'Sub' $P992 = "289_1258051419.23649" 
+    capture_lex $P992
+    $P10 = rx988_cur."before"($P992)
+    unless $P10, rx988_fail
+  # rx subrule "LANG" subtype=capture negate=
+    rx988_cur."!cursor_pos"(rx988_pos)
+    $P10 = rx988_cur."LANG"("MAIN", "statement")
+    unless $P10, rx988_fail
+    rx988_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("statement")
+    rx988_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx988_cur."!cursor_pos"(rx988_pos)
+    $P10 = rx988_cur."ws"()
+    unless $P10, rx988_fail
+    rx988_pos = $P10."pos"()
+  # rx literal  ";"
+    add $I11, rx988_pos, 1
+    gt $I11, rx988_eos, rx988_fail
+    sub $I11, rx988_pos, rx988_off
+    substr $S10, rx988_tgt, $I11, 1
+    ne $S10, ";", rx988_fail
+    add rx988_pos, 1
+.annotate "line", 468
+  # rx pass
+    rx988_cur."!cursor_pass"(rx988_pos, "metachar:sym<:my>")
+    rx988_cur."!cursor_debug"("PASS  ", "metachar:sym<:my>", " at pos=", rx988_pos)
+    .return (rx988_cur)
+  rx988_fail:
+.annotate "line", 467
+    (rx988_rep, rx988_pos, $I10, $P10) = rx988_cur."!mark_fail"(0)
+    lt rx988_pos, -1, rx988_done
+    eq rx988_pos, -1, rx988_fail
+    jump $I10
+  rx988_done:
+    rx988_cur."!cursor_fail"()
+    rx988_cur."!cursor_debug"("FAIL  ", "metachar:sym<:my>")
+    .return (rx988_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__metachar:sym<:my>"  :subid("288_1258051419.23649") :method
+.annotate "line", 467
+    new $P990, "ResizablePMCArray"
+    push $P990, ":"
+    .return ($P990)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "_block991"  :anon :subid("289_1258051419.23649") :method :outer("287_1258051419.23649")
+.annotate "line", 469
+    .local string rx993_tgt
+    .local int rx993_pos
+    .local int rx993_off
+    .local int rx993_eos
+    .local int rx993_rep
+    .local pmc rx993_cur
+    (rx993_cur, rx993_pos, rx993_tgt, $I10) = self."!cursor_start"()
+    rx993_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx993_cur
+    .local pmc match
+    .lex "$/", match
+    length rx993_eos, rx993_tgt
+    set rx993_off, 0
+    lt $I10, 2, rx993_start
+    sub rx993_off, $I10, 1
+    substr rx993_tgt, rx993_tgt, rx993_off
+  rx993_start:
+    ge rx993_pos, 0, rxscan994_done
+  rxscan994_loop:
+    ($P10) = rx993_cur."from"()
+    inc $P10
+    set rx993_pos, $P10
+    ge rx993_pos, rx993_eos, rxscan994_done
+    set_addr $I10, rxscan994_loop
+    rx993_cur."!mark_push"(0, rx993_pos, $I10)
+  rxscan994_done:
+  # rx literal  "my"
+    add $I11, rx993_pos, 2
+    gt $I11, rx993_eos, rx993_fail
+    sub $I11, rx993_pos, rx993_off
+    substr $S10, rx993_tgt, $I11, 2
+    ne $S10, "my", rx993_fail
+    add rx993_pos, 2
+  # rx pass
+    rx993_cur."!cursor_pass"(rx993_pos, "")
+    rx993_cur."!cursor_debug"("PASS  ", "", " at pos=", rx993_pos)
+    .return (rx993_cur)
+  rx993_fail:
+    (rx993_rep, rx993_pos, $I10, $P10) = rx993_cur."!mark_fail"(0)
+    lt rx993_pos, -1, rx993_done
+    eq rx993_pos, -1, rx993_fail
+    jump $I10
+  rx993_done:
+    rx993_cur."!cursor_fail"()
+    rx993_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx993_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "metachar:sym<{ }>"  :subid("290_1258051419.23649") :method :outer("286_1258051419.23649")
+.annotate "line", 467
+    .local string rx996_tgt
+    .local int rx996_pos
+    .local int rx996_off
+    .local int rx996_eos
+    .local int rx996_rep
+    .local pmc rx996_cur
+    (rx996_cur, rx996_pos, rx996_tgt, $I10) = self."!cursor_start"()
+    rx996_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
+    .lex unicode:"$\x{a2}", rx996_cur
+    .local pmc match
+    .lex "$/", match
+    length rx996_eos, rx996_tgt
+    set rx996_off, 0
+    lt $I10, 2, rx996_start
+    sub rx996_off, $I10, 1
+    substr rx996_tgt, rx996_tgt, rx996_off
+  rx996_start:
+.annotate "line", 473
+  # rx enumcharlist negate=0 zerowidth
+    ge rx996_pos, rx996_eos, rx996_fail
+    sub $I10, rx996_pos, rx996_off
+    substr $S10, rx996_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx996_fail
+  # rx subrule "codeblock" subtype=capture negate=
+    rx996_cur."!cursor_pos"(rx996_pos)
+    $P10 = rx996_cur."codeblock"()
+    unless $P10, rx996_fail
+    rx996_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("codeblock")
+    rx996_pos = $P10."pos"()
+.annotate "line", 472
+  # rx pass
+    rx996_cur."!cursor_pass"(rx996_pos, "metachar:sym<{ }>")
+    rx996_cur."!cursor_debug"("PASS  ", "metachar:sym<{ }>", " at pos=", rx996_pos)
+    .return (rx996_cur)
+  rx996_fail:
+.annotate "line", 467
+    (rx996_rep, rx996_pos, $I10, $P10) = rx996_cur."!mark_fail"(0)
+    lt rx996_pos, -1, rx996_done
+    eq rx996_pos, -1, rx996_fail
+    jump $I10
+  rx996_done:
+    rx996_cur."!cursor_fail"()
+    rx996_cur."!cursor_debug"("FAIL  ", "metachar:sym<{ }>")
+    .return (rx996_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("291_1258051419.23649") :method
+.annotate "line", 467
+    new $P998, "ResizablePMCArray"
+    push $P998, "{"
+    .return ($P998)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<{ }>"  :subid("292_1258051419.23649") :method :outer("286_1258051419.23649")
+.annotate "line", 467
+    .local string rx1000_tgt
+    .local int rx1000_pos
+    .local int rx1000_off
+    .local int rx1000_eos
+    .local int rx1000_rep
+    .local pmc rx1000_cur
+    (rx1000_cur, rx1000_pos, rx1000_tgt, $I10) = self."!cursor_start"()
+    rx1000_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
+    .lex unicode:"$\x{a2}", rx1000_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1000_eos, rx1000_tgt
+    set rx1000_off, 0
+    lt $I10, 2, rx1000_start
+    sub rx1000_off, $I10, 1
+    substr rx1000_tgt, rx1000_tgt, rx1000_off
+  rx1000_start:
+.annotate "line", 477
+  # rx enumcharlist negate=0 zerowidth
+    ge rx1000_pos, rx1000_eos, rx1000_fail
+    sub $I10, rx1000_pos, rx1000_off
+    substr $S10, rx1000_tgt, $I10, 1
+    index $I11, "{", $S10
+    lt $I11, 0, rx1000_fail
+  # rx subrule "codeblock" subtype=capture negate=
+    rx1000_cur."!cursor_pos"(rx1000_pos)
+    $P10 = rx1000_cur."codeblock"()
+    unless $P10, rx1000_fail
+    rx1000_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("codeblock")
+    rx1000_pos = $P10."pos"()
+.annotate "line", 476
+  # rx pass
+    rx1000_cur."!cursor_pass"(rx1000_pos, "assertion:sym<{ }>")
+    rx1000_cur."!cursor_debug"("PASS  ", "assertion:sym<{ }>", " at pos=", rx1000_pos)
+    .return (rx1000_cur)
+  rx1000_fail:
+.annotate "line", 467
+    (rx1000_rep, rx1000_pos, $I10, $P10) = rx1000_cur."!mark_fail"(0)
+    lt rx1000_pos, -1, rx1000_done
+    eq rx1000_pos, -1, rx1000_fail
+    jump $I10
+  rx1000_done:
+    rx1000_cur."!cursor_fail"()
+    rx1000_cur."!cursor_debug"("FAIL  ", "assertion:sym<{ }>")
+    .return (rx1000_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("293_1258051419.23649") :method
+.annotate "line", 467
+    new $P1002, "ResizablePMCArray"
+    push $P1002, "{"
+    .return ($P1002)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<name>"  :subid("294_1258051419.23649") :method :outer("286_1258051419.23649")
+.annotate "line", 467
+    .const 'Sub' $P1011 = "296_1258051419.23649" 
+    capture_lex $P1011
+    .local string rx1004_tgt
+    .local int rx1004_pos
+    .local int rx1004_off
+    .local int rx1004_eos
+    .local int rx1004_rep
+    .local pmc rx1004_cur
+    (rx1004_cur, rx1004_pos, rx1004_tgt, $I10) = self."!cursor_start"()
+    rx1004_cur."!cursor_debug"("START ", "assertion:sym<name>")
+    rx1004_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+    .lex unicode:"$\x{a2}", rx1004_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1004_eos, rx1004_tgt
+    set rx1004_off, 0
+    lt $I10, 2, rx1004_start
+    sub rx1004_off, $I10, 1
+    substr rx1004_tgt, rx1004_tgt, rx1004_off
+  rx1004_start:
+.annotate "line", 481
+  # rx subcapture "longname"
+    set_addr $I10, rxcap_1007_fail
+    rx1004_cur."!mark_push"(0, rx1004_pos, $I10)
+  # rx charclass_q w r 1..-1
+    sub $I10, rx1004_pos, rx1004_off
+    find_not_cclass $I11, 8192, rx1004_tgt, $I10, rx1004_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx1004_fail
+    add rx1004_pos, rx1004_off, $I11
+    set_addr $I10, rxcap_1007_fail
+    ($I12, $I11) = rx1004_cur."!mark_peek"($I10)
+    rx1004_cur."!cursor_pos"($I11)
+    ($P10) = rx1004_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx1004_pos, "")
+    rx1004_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("longname")
+    goto rxcap_1007_done
+  rxcap_1007_fail:
+    goto rx1004_fail
+  rxcap_1007_done:
+.annotate "line", 488
+  # rx rxquantr1008 ** 0..1
+    set_addr $I1014, rxquantr1008_done
+    rx1004_cur."!mark_push"(0, rx1004_pos, $I1014)
+  rxquantr1008_loop:
+  alt1009_0:
+.annotate "line", 482
+    set_addr $I10, alt1009_1
+    rx1004_cur."!mark_push"(0, rx1004_pos, $I10)
+.annotate "line", 483
+  # rx subrule "before" subtype=zerowidth negate=
+    rx1004_cur."!cursor_pos"(rx1004_pos)
+    .const 'Sub' $P1011 = "296_1258051419.23649" 
+    capture_lex $P1011
+    $P10 = rx1004_cur."before"($P1011)
+    unless $P10, rx1004_fail
+    goto alt1009_end
+  alt1009_1:
+    set_addr $I10, alt1009_2
+    rx1004_cur."!mark_push"(0, rx1004_pos, $I10)
+.annotate "line", 484
+  # rx literal  "="
+    add $I11, rx1004_pos, 1
+    gt $I11, rx1004_eos, rx1004_fail
+    sub $I11, rx1004_pos, rx1004_off
+    substr $S10, rx1004_tgt, $I11, 1
+    ne $S10, "=", rx1004_fail
+    add rx1004_pos, 1
+  # rx subrule "assertion" subtype=capture negate=
+    rx1004_cur."!cursor_pos"(rx1004_pos)
+    $P10 = rx1004_cur."assertion"()
+    unless $P10, rx1004_fail
+    rx1004_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("assertion")
+    rx1004_pos = $P10."pos"()
+    goto alt1009_end
+  alt1009_2:
+    set_addr $I10, alt1009_3
+    rx1004_cur."!mark_push"(0, rx1004_pos, $I10)
+.annotate "line", 485
+  # rx literal  ":"
+    add $I11, rx1004_pos, 1
+    gt $I11, rx1004_eos, rx1004_fail
+    sub $I11, rx1004_pos, rx1004_off
+    substr $S10, rx1004_tgt, $I11, 1
+    ne $S10, ":", rx1004_fail
+    add rx1004_pos, 1
+  # rx subrule "arglist" subtype=capture negate=
+    rx1004_cur."!cursor_pos"(rx1004_pos)
+    $P10 = rx1004_cur."arglist"()
+    unless $P10, rx1004_fail
+    rx1004_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx1004_pos = $P10."pos"()
+    goto alt1009_end
+  alt1009_3:
+    set_addr $I10, alt1009_4
+    rx1004_cur."!mark_push"(0, rx1004_pos, $I10)
+.annotate "line", 486
+  # rx literal  "("
+    add $I11, rx1004_pos, 1
+    gt $I11, rx1004_eos, rx1004_fail
+    sub $I11, rx1004_pos, rx1004_off
+    substr $S10, rx1004_tgt, $I11, 1
+    ne $S10, "(", rx1004_fail
+    add rx1004_pos, 1
+  # rx subrule "LANG" subtype=capture negate=
+    rx1004_cur."!cursor_pos"(rx1004_pos)
+    $P10 = rx1004_cur."LANG"("MAIN", "arglist")
+    unless $P10, rx1004_fail
+    rx1004_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx1004_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx1004_pos, 1
+    gt $I11, rx1004_eos, rx1004_fail
+    sub $I11, rx1004_pos, rx1004_off
+    substr $S10, rx1004_tgt, $I11, 1
+    ne $S10, ")", rx1004_fail
+    add rx1004_pos, 1
+    goto alt1009_end
+  alt1009_4:
+.annotate "line", 487
+  # rx subrule "normspace" subtype=method negate=
+    rx1004_cur."!cursor_pos"(rx1004_pos)
+    $P10 = rx1004_cur."normspace"()
+    unless $P10, rx1004_fail
+    rx1004_pos = $P10."pos"()
+  # rx subrule "nibbler" subtype=capture negate=
+    rx1004_cur."!cursor_pos"(rx1004_pos)
+    $P10 = rx1004_cur."nibbler"()
+    unless $P10, rx1004_fail
+    rx1004_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("nibbler")
+    rx1004_pos = $P10."pos"()
+  alt1009_end:
+.annotate "line", 488
+    (rx1004_rep) = rx1004_cur."!mark_commit"($I1014)
+  rxquantr1008_done:
+.annotate "line", 480
+  # rx pass
+    rx1004_cur."!cursor_pass"(rx1004_pos, "assertion:sym<name>")
+    rx1004_cur."!cursor_debug"("PASS  ", "assertion:sym<name>", " at pos=", rx1004_pos)
+    .return (rx1004_cur)
+  rx1004_fail:
+.annotate "line", 467
+    (rx1004_rep, rx1004_pos, $I10, $P10) = rx1004_cur."!mark_fail"(0)
+    lt rx1004_pos, -1, rx1004_done
+    eq rx1004_pos, -1, rx1004_fail
+    jump $I10
+  rx1004_done:
+    rx1004_cur."!cursor_fail"()
+    rx1004_cur."!cursor_debug"("FAIL  ", "assertion:sym<name>")
+    .return (rx1004_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__assertion:sym<name>"  :subid("295_1258051419.23649") :method
+.annotate "line", 467
+    new $P1006, "ResizablePMCArray"
+    push $P1006, ""
+    .return ($P1006)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "_block1010"  :anon :subid("296_1258051419.23649") :method :outer("294_1258051419.23649")
+.annotate "line", 483
+    .local string rx1012_tgt
+    .local int rx1012_pos
+    .local int rx1012_off
+    .local int rx1012_eos
+    .local int rx1012_rep
+    .local pmc rx1012_cur
+    (rx1012_cur, rx1012_pos, rx1012_tgt, $I10) = self."!cursor_start"()
+    rx1012_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx1012_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1012_eos, rx1012_tgt
+    set rx1012_off, 0
+    lt $I10, 2, rx1012_start
+    sub rx1012_off, $I10, 1
+    substr rx1012_tgt, rx1012_tgt, rx1012_off
+  rx1012_start:
+    ge rx1012_pos, 0, rxscan1013_done
+  rxscan1013_loop:
+    ($P10) = rx1012_cur."from"()
+    inc $P10
+    set rx1012_pos, $P10
+    ge rx1012_pos, rx1012_eos, rxscan1013_done
+    set_addr $I10, rxscan1013_loop
+    rx1012_cur."!mark_push"(0, rx1012_pos, $I10)
+  rxscan1013_done:
+  # rx literal  ">"
+    add $I11, rx1012_pos, 1
+    gt $I11, rx1012_eos, rx1012_fail
+    sub $I11, rx1012_pos, rx1012_off
+    substr $S10, rx1012_tgt, $I11, 1
+    ne $S10, ">", rx1012_fail
+    add rx1012_pos, 1
+  # rx pass
+    rx1012_cur."!cursor_pass"(rx1012_pos, "")
+    rx1012_cur."!cursor_debug"("PASS  ", "", " at pos=", rx1012_pos)
+    .return (rx1012_cur)
+  rx1012_fail:
+    (rx1012_rep, rx1012_pos, $I10, $P10) = rx1012_cur."!mark_fail"(0)
+    lt rx1012_pos, -1, rx1012_done
+    eq rx1012_pos, -1, rx1012_fail
+    jump $I10
+  rx1012_done:
+    rx1012_cur."!cursor_fail"()
+    rx1012_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx1012_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "codeblock"  :subid("297_1258051419.23649") :method :outer("286_1258051419.23649")
+.annotate "line", 467
+    .local string rx1016_tgt
+    .local int rx1016_pos
+    .local int rx1016_off
+    .local int rx1016_eos
+    .local int rx1016_rep
+    .local pmc rx1016_cur
+    (rx1016_cur, rx1016_pos, rx1016_tgt, $I10) = self."!cursor_start"()
+    rx1016_cur."!cursor_debug"("START ", "codeblock")
+    .lex unicode:"$\x{a2}", rx1016_cur
+    .local pmc match
+    .lex "$/", match
+    length rx1016_eos, rx1016_tgt
+    set rx1016_off, 0
+    lt $I10, 2, rx1016_start
+    sub rx1016_off, $I10, 1
+    substr rx1016_tgt, rx1016_tgt, rx1016_off
+  rx1016_start:
+.annotate "line", 493
+  # rx subrule "LANG" subtype=capture negate=
+    rx1016_cur."!cursor_pos"(rx1016_pos)
+    $P10 = rx1016_cur."LANG"("MAIN", "pblock")
+    unless $P10, rx1016_fail
+    rx1016_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("block")
+    rx1016_pos = $P10."pos"()
+.annotate "line", 492
+  # rx pass
+    rx1016_cur."!cursor_pass"(rx1016_pos, "codeblock")
+    rx1016_cur."!cursor_debug"("PASS  ", "codeblock", " at pos=", rx1016_pos)
+    .return (rx1016_cur)
+  rx1016_fail:
+.annotate "line", 467
+    (rx1016_rep, rx1016_pos, $I10, $P10) = rx1016_cur."!mark_fail"(0)
+    lt rx1016_pos, -1, rx1016_done
+    eq rx1016_pos, -1, rx1016_fail
+    jump $I10
+  rx1016_done:
+    rx1016_cur."!cursor_fail"()
+    rx1016_cur."!cursor_debug"("FAIL  ", "codeblock")
+    .return (rx1016_cur)
+    .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__codeblock"  :subid("298_1258051419.23649") :method
+.annotate "line", 467
+    $P1018 = self."!PREFIX__!subrule"("block", "")
+    new $P1019, "ResizablePMCArray"
+    push $P1019, $P1018
+    .return ($P1019)
+.end
+
+### .include 'gen/nqp-actions.pir'
+
+.namespace []
+.sub "_block11"  :anon :subid("10_1258051430.32314")
+.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
+    $P1793 = $P14()
+.annotate "line", 1
+    .return ($P1793)
+.end
+
+
+.namespace []
+.sub "" :load :init :subid("post110") :outer("10_1258051430.32314")
+.annotate "line", 0
+    .const 'Sub' $P12 = "10_1258051430.32314" 
+    .local pmc block
+    set block, $P12
+    $P1794 = get_root_global ["parrot"], "P6metaclass"
+    $P1794."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block13"  :subid("11_1258051430.32314") :outer("10_1258051430.32314")
+.annotate "line", 3
+    .const 'Sub' $P1789 = "109_1258051430.32314" 
+    capture_lex $P1789
+    get_hll_global $P1725, ["NQP";"RegexActions"], "_block1724" 
+    capture_lex $P1725
+    .const 'Sub' $P1714 = "103_1258051430.32314" 
+    capture_lex $P1714
+    .const 'Sub' $P1704 = "102_1258051430.32314" 
+    capture_lex $P1704
+    .const 'Sub' $P1694 = "101_1258051430.32314" 
+    capture_lex $P1694
+    .const 'Sub' $P1679 = "100_1258051430.32314" 
+    capture_lex $P1679
+    .const 'Sub' $P1665 = "99_1258051430.32314" 
+    capture_lex $P1665
+    .const 'Sub' $P1655 = "98_1258051430.32314" 
+    capture_lex $P1655
+    .const 'Sub' $P1641 = "97_1258051430.32314" 
+    capture_lex $P1641
+    .const 'Sub' $P1631 = "96_1258051430.32314" 
+    capture_lex $P1631
+    .const 'Sub' $P1621 = "95_1258051430.32314" 
+    capture_lex $P1621
+    .const 'Sub' $P1611 = "94_1258051430.32314" 
+    capture_lex $P1611
+    .const 'Sub' $P1601 = "93_1258051430.32314" 
+    capture_lex $P1601
+    .const 'Sub' $P1591 = "92_1258051430.32314" 
+    capture_lex $P1591
+    .const 'Sub' $P1563 = "91_1258051430.32314" 
+    capture_lex $P1563
+    .const 'Sub' $P1553 = "90_1258051430.32314" 
+    capture_lex $P1553
+    .const 'Sub' $P1541 = "89_1258051430.32314" 
+    capture_lex $P1541
+    .const 'Sub' $P1529 = "88_1258051430.32314" 
+    capture_lex $P1529
+    .const 'Sub' $P1517 = "87_1258051430.32314" 
+    capture_lex $P1517
+    .const 'Sub' $P1507 = "86_1258051430.32314" 
+    capture_lex $P1507
+    .const 'Sub' $P1478 = "85_1258051430.32314" 
+    capture_lex $P1478
+    .const 'Sub' $P1454 = "84_1258051430.32314" 
+    capture_lex $P1454
+    .const 'Sub' $P1444 = "83_1258051430.32314" 
+    capture_lex $P1444
+    .const 'Sub' $P1417 = "82_1258051430.32314" 
+    capture_lex $P1417
+    .const 'Sub' $P1399 = "81_1258051430.32314" 
+    capture_lex $P1399
+    .const 'Sub' $P1389 = "80_1258051430.32314" 
+    capture_lex $P1389
+    .const 'Sub' $P1305 = "77_1258051430.32314" 
+    capture_lex $P1305
+    .const 'Sub' $P1295 = "76_1258051430.32314" 
+    capture_lex $P1295
+    .const 'Sub' $P1266 = "75_1258051430.32314" 
+    capture_lex $P1266
+    .const 'Sub' $P1233 = "74_1258051430.32314" 
+    capture_lex $P1233
+    .const 'Sub' $P1217 = "73_1258051430.32314" 
+    capture_lex $P1217
+    .const 'Sub' $P1208 = "72_1258051430.32314" 
+    capture_lex $P1208
+    .const 'Sub' $P1183 = "71_1258051430.32314" 
+    capture_lex $P1183
+    .const 'Sub' $P1079 = "68_1258051430.32314" 
+    capture_lex $P1079
+    .const 'Sub' $P1062 = "67_1258051430.32314" 
+    capture_lex $P1062
+    .const 'Sub' $P1042 = "66_1258051430.32314" 
+    capture_lex $P1042
+    .const 'Sub' $P958 = "65_1258051430.32314" 
+    capture_lex $P958
+    .const 'Sub' $P934 = "63_1258051430.32314" 
+    capture_lex $P934
+    .const 'Sub' $P900 = "61_1258051430.32314" 
+    capture_lex $P900
+    .const 'Sub' $P854 = "59_1258051430.32314" 
+    capture_lex $P854
+    .const 'Sub' $P844 = "58_1258051430.32314" 
+    capture_lex $P844
+    .const 'Sub' $P834 = "57_1258051430.32314" 
+    capture_lex $P834
+    .const 'Sub' $P763 = "55_1258051430.32314" 
+    capture_lex $P763
+    .const 'Sub' $P746 = "54_1258051430.32314" 
+    capture_lex $P746
+    .const 'Sub' $P736 = "53_1258051430.32314" 
+    capture_lex $P736
+    .const 'Sub' $P726 = "52_1258051430.32314" 
+    capture_lex $P726
+    .const 'Sub' $P716 = "51_1258051430.32314" 
+    capture_lex $P716
+    .const 'Sub' $P692 = "50_1258051430.32314" 
+    capture_lex $P692
+    .const 'Sub' $P639 = "49_1258051430.32314" 
+    capture_lex $P639
+    .const 'Sub' $P629 = "48_1258051430.32314" 
+    capture_lex $P629
+    .const 'Sub' $P580 = "47_1258051430.32314" 
+    capture_lex $P580
+    .const 'Sub' $P554 = "46_1258051430.32314" 
+    capture_lex $P554
+    .const 'Sub' $P544 = "45_1258051430.32314" 
+    capture_lex $P544
+    .const 'Sub' $P534 = "44_1258051430.32314" 
+    capture_lex $P534
+    .const 'Sub' $P524 = "43_1258051430.32314" 
+    capture_lex $P524
+    .const 'Sub' $P514 = "42_1258051430.32314" 
+    capture_lex $P514
+    .const 'Sub' $P504 = "41_1258051430.32314" 
+    capture_lex $P504
+    .const 'Sub' $P494 = "40_1258051430.32314" 
+    capture_lex $P494
+    .const 'Sub' $P484 = "39_1258051430.32314" 
+    capture_lex $P484
+    .const 'Sub' $P474 = "38_1258051430.32314" 
+    capture_lex $P474
+    .const 'Sub' $P456 = "37_1258051430.32314" 
+    capture_lex $P456
+    .const 'Sub' $P440 = "36_1258051430.32314" 
+    capture_lex $P440
+    .const 'Sub' $P425 = "35_1258051430.32314" 
+    capture_lex $P425
+    .const 'Sub' $P412 = "34_1258051430.32314" 
+    capture_lex $P412
+    .const 'Sub' $P386 = "33_1258051430.32314" 
+    capture_lex $P386
+    .const 'Sub' $P350 = "32_1258051430.32314" 
+    capture_lex $P350
+    .const 'Sub' $P333 = "31_1258051430.32314" 
+    capture_lex $P333
+    .const 'Sub' $P319 = "30_1258051430.32314" 
+    capture_lex $P319
+    .const 'Sub' $P264 = "28_1258051430.32314" 
+    capture_lex $P264
+    .const 'Sub' $P251 = "27_1258051430.32314" 
+    capture_lex $P251
+    .const 'Sub' $P232 = "26_1258051430.32314" 
+    capture_lex $P232
+    .const 'Sub' $P222 = "25_1258051430.32314" 
+    capture_lex $P222
+    .const 'Sub' $P212 = "24_1258051430.32314" 
+    capture_lex $P212
+    .const 'Sub' $P196 = "23_1258051430.32314" 
+    capture_lex $P196
+    .const 'Sub' $P173 = "22_1258051430.32314" 
+    capture_lex $P173
+    .const 'Sub' $P130 = "20_1258051430.32314" 
+    capture_lex $P130
+    .const 'Sub' $P111 = "19_1258051430.32314" 
+    capture_lex $P111
+    .const 'Sub' $P89 = "18_1258051430.32314" 
+    capture_lex $P89
+    .const 'Sub' $P79 = "17_1258051430.32314" 
+    capture_lex $P79
+    .const 'Sub' $P57 = "16_1258051430.32314" 
+    capture_lex $P57
+    .const 'Sub' $P26 = "13_1258051430.32314" 
+    capture_lex $P26
+    .const 'Sub' $P16 = "12_1258051430.32314" 
+    capture_lex $P16
+    get_global $P15, "@BLOCK"
+    unless_null $P15, vivify_113
+    new $P15, "ResizablePMCArray"
+    set_global "@BLOCK", $P15
+  vivify_113:
+.annotate "line", 9
+    .const 'Sub' $P16 = "12_1258051430.32314" 
+    capture_lex $P16
+    .lex "xblock_immediate", $P16
+.annotate "line", 14
+    .const 'Sub' $P26 = "13_1258051430.32314" 
+    capture_lex $P26
+    .lex "block_immediate", $P26
+.annotate "line", 24
+    .const 'Sub' $P57 = "16_1258051430.32314" 
+    capture_lex $P57
+    .lex "sigiltype", $P57
+.annotate "line", 3
+    get_global $P75, "@BLOCK"
+.annotate "line", 5
+    find_lex $P76, "xblock_immediate"
+    find_lex $P77, "block_immediate"
+    find_lex $P78, "sigiltype"
+.annotate "line", 622
+    get_hll_global $P1725, ["NQP";"RegexActions"], "_block1724" 
+    capture_lex $P1725
+    $P1787 = $P1725()
+.annotate "line", 3
+    .return ($P1787)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "" :load :init :subid("post111") :outer("11_1258051430.32314")
+.annotate "line", 3
+    get_hll_global $P14, ["NQP";"Actions"], "_block13" 
+    .local pmc block
+    set block, $P14
+.annotate "line", 5
+    .const 'Sub' $P1789 = "109_1258051430.32314" 
+    capture_lex $P1789
+    $P1789()
+    $P1792 = get_root_global ["parrot"], "P6metaclass"
+    $P1792."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block1788"  :anon :subid("109_1258051430.32314") :outer("11_1258051430.32314")
+.annotate "line", 6
+    get_global $P1790, "@BLOCK"
+    unless_null $P1790, vivify_112
+    new $P1790, "ResizablePMCArray"
+    set_global "@BLOCK", $P1790
+  vivify_112:
+ $P1791 = new ['ResizablePMCArray'] 
+    set_global "@BLOCK", $P1791
+.annotate "line", 5
+    .return ($P1791)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "xblock_immediate"  :subid("12_1258051430.32314") :outer("11_1258051430.32314")
+    .param pmc param_19
+.annotate "line", 9
+    new $P18, 'ExceptionHandler'
+    set_addr $P18, control_17
+    $P18."handle_types"(58)
+    push_eh $P18
+    .lex "$xblock", param_19
+.annotate "line", 10
+    find_lex $P20, "$xblock"
+    unless_null $P20, vivify_114
+    new $P20, "ResizablePMCArray"
+  vivify_114:
+    set $P21, $P20[1]
+    unless_null $P21, vivify_115
+    new $P21, "Undef"
+  vivify_115:
+    $P22 = "block_immediate"($P21)
+    find_lex $P23, "$xblock"
+    unless_null $P23, vivify_116
+    new $P23, "ResizablePMCArray"
+    store_lex "$xblock", $P23
+  vivify_116:
+    set $P23[1], $P22
+    find_lex $P24, "$xblock"
+.annotate "line", 9
+    .return ($P24)
+  control_17:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P25, exception, "payload"
+    .return ($P25)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "block_immediate"  :subid("13_1258051430.32314") :outer("11_1258051430.32314")
+    .param pmc param_29
+.annotate "line", 14
+    .const 'Sub' $P35 = "14_1258051430.32314" 
+    capture_lex $P35
+    new $P28, 'ExceptionHandler'
+    set_addr $P28, control_27
+    $P28."handle_types"(58)
+    push_eh $P28
+    .lex "$block", param_29
+.annotate "line", 15
+    find_lex $P30, "$block"
+    $P30."blocktype"("immediate")
+.annotate "line", 16
+    find_lex $P32, "$block"
+    $P33 = $P32."symtable"()
+    if $P33, unless_31_end
+    .const 'Sub' $P35 = "14_1258051430.32314" 
+    capture_lex $P35
+    $P35()
+  unless_31_end:
+    find_lex $P55, "$block"
+.annotate "line", 14
+    .return ($P55)
+  control_27:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P56, exception, "payload"
+    .return ($P56)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block34"  :anon :subid("14_1258051430.32314") :outer("13_1258051430.32314")
+.annotate "line", 16
+    .const 'Sub' $P46 = "15_1258051430.32314" 
+    capture_lex $P46
+.annotate "line", 17
+    new $P36, "Undef"
+    .lex "$stmts", $P36
+    get_hll_global $P37, ["PAST"], "Stmts"
+    find_lex $P38, "$block"
+    $P39 = $P37."new"($P38 :named("node"))
+    store_lex "$stmts", $P39
+.annotate "line", 18
+    find_lex $P41, "$block"
+    $P42 = $P41."list"()
+    defined $I43, $P42
+    unless $I43, for_undef_117
+    iter $P40, $P42
+    new $P52, 'ExceptionHandler'
+    set_addr $P52, loop51_handler
+    $P52."handle_types"(65, 67, 66)
+    push_eh $P52
+  loop51_test:
+    unless $P40, loop51_done
+    shift $P44, $P40
+  loop51_redo:
+    .const 'Sub' $P46 = "15_1258051430.32314" 
+    capture_lex $P46
+    $P46($P44)
+  loop51_next:
+    goto loop51_test
+  loop51_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P53, exception, 'type'
+    eq $P53, 65, loop51_next
+    eq $P53, 67, loop51_redo
+  loop51_done:
+    pop_eh 
+  for_undef_117:
+.annotate "line", 19
+    find_lex $P54, "$stmts"
+    store_lex "$block", $P54
+.annotate "line", 16
+    .return ($P54)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block45"  :anon :subid("15_1258051430.32314") :outer("14_1258051430.32314")
+    .param pmc param_47
+.annotate "line", 18
+    .lex "$_", param_47
+    find_lex $P48, "$stmts"
+    find_lex $P49, "$_"
+    $P50 = $P48."push"($P49)
+    .return ($P50)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "sigiltype"  :subid("16_1258051430.32314") :outer("11_1258051430.32314")
+    .param pmc param_60
+.annotate "line", 24
+    new $P59, 'ExceptionHandler'
+    set_addr $P59, control_58
+    $P59."handle_types"(58)
+    push_eh $P59
+    .lex "$sigil", param_60
+.annotate "line", 25
+    find_lex $P63, "$sigil"
+    set $S64, $P63
+    iseq $I65, $S64, "%"
+    if $I65, if_62
+.annotate "line", 27
+    find_lex $P69, "$sigil"
+    set $S70, $P69
+    iseq $I71, $S70, "@"
+    if $I71, if_68
+    new $P73, "String"
+    assign $P73, "Undef"
+    set $P67, $P73
+    goto if_68_end
+  if_68:
+    new $P72, "String"
+    assign $P72, "ResizablePMCArray"
+    set $P67, $P72
+  if_68_end:
+    set $P61, $P67
+.annotate "line", 25
+    goto if_62_end
+  if_62:
+    new $P66, "String"
+    assign $P66, "Hash"
+    set $P61, $P66
+  if_62_end:
+.annotate "line", 24
+    .return ($P61)
+  control_58:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P74, exception, "payload"
+    .return ($P74)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "TOP"  :subid("17_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_82
+.annotate "line", 30
+    new $P81, 'ExceptionHandler'
+    set_addr $P81, control_80
+    $P81."handle_types"(58)
+    push_eh $P81
+    .lex "self", self
+    .lex "$/", param_82
+    find_lex $P83, "$/"
+    find_lex $P84, "$/"
+    unless_null $P84, vivify_118
+    new $P84, "Hash"
+  vivify_118:
+    set $P85, $P84["comp_unit"]
+    unless_null $P85, vivify_119
+    new $P85, "Undef"
+  vivify_119:
+    $P86 = $P85."ast"()
+    $P87 = $P83."!make"($P86)
+    .return ($P87)
+  control_80:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P88, exception, "payload"
+    .return ($P88)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "deflongname"  :subid("18_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_92
+.annotate "line", 32
+    new $P91, 'ExceptionHandler'
+    set_addr $P91, control_90
+    $P91."handle_types"(58)
+    push_eh $P91
+    .lex "self", self
+    .lex "$/", param_92
+.annotate "line", 33
+    find_lex $P95, "$/"
+    unless_null $P95, vivify_120
+    new $P95, "Hash"
+  vivify_120:
+    set $P96, $P95["sym"]
+    unless_null $P96, vivify_121
+    new $P96, "Undef"
+  vivify_121:
+    if $P96, if_94
+    set $P93, $P96
+    goto if_94_end
+  if_94:
+    find_lex $P97, "$/"
+    find_lex $P98, "$/"
+    unless_null $P98, vivify_122
+    new $P98, "Hash"
+  vivify_122:
+    set $P99, $P98["identifier"]
+    unless_null $P99, vivify_123
+    new $P99, "Undef"
+  vivify_123:
+    set $S100, $P99
+    new $P101, 'String'
+    set $P101, $S100
+    concat $P102, $P101, ":sym<"
+    find_lex $P103, "$/"
+    unless_null $P103, vivify_124
+    new $P103, "Hash"
+  vivify_124:
+    set $P104, $P103["sym"]
+    unless_null $P104, vivify_125
+    new $P104, "ResizablePMCArray"
+  vivify_125:
+    set $P105, $P104[0]
+    unless_null $P105, vivify_126
+    new $P105, "Undef"
+  vivify_126:
+    set $S106, $P105
+    concat $P107, $P102, $S106
+    concat $P108, $P107, ">"
+    $P109 = $P97."!make"($P108)
+    set $P93, $P109
+  if_94_end:
+.annotate "line", 32
+    .return ($P93)
+  control_90:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P110, exception, "payload"
+    .return ($P110)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "comp_unit"  :subid("19_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_114
+.annotate "line", 36
+    new $P113, 'ExceptionHandler'
+    set_addr $P113, control_112
+    $P113."handle_types"(58)
+    push_eh $P113
+    .lex "self", self
+    .lex "$/", param_114
+.annotate "line", 37
+    new $P115, "Undef"
+    .lex "$past", $P115
+.annotate "line", 38
+    new $P116, "Undef"
+    .lex "$BLOCK", $P116
+.annotate "line", 37
+    find_lex $P117, "$/"
+    unless_null $P117, vivify_127
+    new $P117, "Hash"
+  vivify_127:
+    set $P118, $P117["statementlist"]
+    unless_null $P118, vivify_128
+    new $P118, "Undef"
+  vivify_128:
+    $P119 = $P118."ast"()
+    store_lex "$past", $P119
+.annotate "line", 38
+    get_global $P120, "@BLOCK"
+    $P121 = $P120."shift"()
+    store_lex "$BLOCK", $P121
+.annotate "line", 39
+    find_lex $P122, "$BLOCK"
+    find_lex $P123, "$past"
+    $P122."push"($P123)
+.annotate "line", 40
+    find_lex $P124, "$BLOCK"
+    find_lex $P125, "$/"
+    $P124."node"($P125)
+.annotate "line", 41
+    find_lex $P126, "$/"
+    find_lex $P127, "$BLOCK"
+    $P128 = $P126."!make"($P127)
+.annotate "line", 36
+    .return ($P128)
+  control_112:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P129, exception, "payload"
+    .return ($P129)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statementlist"  :subid("20_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_133
+.annotate "line", 44
+    .const 'Sub' $P147 = "21_1258051430.32314" 
+    capture_lex $P147
+    new $P132, 'ExceptionHandler'
+    set_addr $P132, control_131
+    $P132."handle_types"(58)
+    push_eh $P132
+    .lex "self", self
+    .lex "$/", param_133
+.annotate "line", 45
+    new $P134, "Undef"
+    .lex "$past", $P134
+    get_hll_global $P135, ["PAST"], "Stmts"
+    find_lex $P136, "$/"
+    $P137 = $P135."new"($P136 :named("node"))
+    store_lex "$past", $P137
+.annotate "line", 46
+    find_lex $P139, "$/"
+    unless_null $P139, vivify_129
+    new $P139, "Hash"
+  vivify_129:
+    set $P140, $P139["statement"]
+    unless_null $P140, vivify_130
+    new $P140, "Undef"
+  vivify_130:
+    unless $P140, if_138_end
+.annotate "line", 47
+    find_lex $P142, "$/"
+    unless_null $P142, vivify_131
+    new $P142, "Hash"
+  vivify_131:
+    set $P143, $P142["statement"]
+    unless_null $P143, vivify_132
+    new $P143, "Undef"
+  vivify_132:
+    defined $I144, $P143
+    unless $I144, for_undef_133
+    iter $P141, $P143
+    new $P167, 'ExceptionHandler'
+    set_addr $P167, loop166_handler
+    $P167."handle_types"(65, 67, 66)
+    push_eh $P167
+  loop166_test:
+    unless $P141, loop166_done
+    shift $P145, $P141
+  loop166_redo:
+    .const 'Sub' $P147 = "21_1258051430.32314" 
+    capture_lex $P147
+    $P147($P145)
+  loop166_next:
+    goto loop166_test
+  loop166_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P168, exception, 'type'
+    eq $P168, 65, loop166_next
+    eq $P168, 67, loop166_redo
+  loop166_done:
+    pop_eh 
+  for_undef_133:
+  if_138_end:
+.annotate "line", 55
+    find_lex $P169, "$/"
+    find_lex $P170, "$past"
+    $P171 = $P169."!make"($P170)
+.annotate "line", 44
+    .return ($P171)
+  control_131:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P172, exception, "payload"
+    .return ($P172)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block146"  :anon :subid("21_1258051430.32314") :outer("20_1258051430.32314")
+    .param pmc param_149
+.annotate "line", 48
+    new $P148, "Undef"
+    .lex "$ast", $P148
+    .lex "$_", param_149
+    find_lex $P150, "$_"
+    $P151 = $P150."ast"()
+    store_lex "$ast", $P151
+.annotate "line", 49
+    find_lex $P155, "$ast"
+    get_hll_global $P156, ["PAST"], "Block"
+    $P157 = $P155."isa"($P156)
+    if $P157, if_154
+    set $P153, $P157
+    goto if_154_end
+  if_154:
+    find_lex $P158, "$ast"
+    $P159 = $P158."blocktype"()
+    isfalse $I160, $P159
+    new $P153, 'Integer'
+    set $P153, $I160
+  if_154_end:
+    unless $P153, if_152_end
+.annotate "line", 50
+    find_lex $P161, "$ast"
+    $P162 = "block_immediate"($P161)
+    store_lex "$ast", $P162
+  if_152_end:
+.annotate "line", 52
+    find_lex $P163, "$past"
+    find_lex $P164, "$ast"
+    $P165 = $P163."push"($P164)
+.annotate "line", 47
+    .return ($P165)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement"  :subid("22_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_176
+.annotate "line", 58
+    new $P175, 'ExceptionHandler'
+    set_addr $P175, control_174
+    $P175."handle_types"(58)
+    push_eh $P175
+    .lex "self", self
+    .lex "$/", param_176
+.annotate "line", 59
+    new $P177, "Undef"
+    .lex "$past", $P177
+.annotate "line", 58
+    find_lex $P178, "$past"
+.annotate "line", 60
+    find_lex $P180, "$/"
+    unless_null $P180, vivify_134
+    new $P180, "Hash"
+  vivify_134:
+    set $P181, $P180["EXPR"]
+    unless_null $P181, vivify_135
+    new $P181, "Undef"
+  vivify_135:
+    if $P181, if_179
+.annotate "line", 61
+    find_lex $P186, "$/"
+    unless_null $P186, vivify_136
+    new $P186, "Hash"
+  vivify_136:
+    set $P187, $P186["statement_control"]
+    unless_null $P187, vivify_137
+    new $P187, "Undef"
+  vivify_137:
+    if $P187, if_185
+.annotate "line", 62
+    new $P191, "Integer"
+    assign $P191, 0
+    store_lex "$past", $P191
+    goto if_185_end
+  if_185:
+.annotate "line", 61
+    find_lex $P188, "$/"
+    unless_null $P188, vivify_138
+    new $P188, "Hash"
+  vivify_138:
+    set $P189, $P188["statement_control"]
+    unless_null $P189, vivify_139
+    new $P189, "Undef"
+  vivify_139:
+    $P190 = $P189."ast"()
+    store_lex "$past", $P190
+  if_185_end:
+    goto if_179_end
+  if_179:
+.annotate "line", 60
+    find_lex $P182, "$/"
+    unless_null $P182, vivify_140
+    new $P182, "Hash"
+  vivify_140:
+    set $P183, $P182["EXPR"]
+    unless_null $P183, vivify_141
+    new $P183, "Undef"
+  vivify_141:
+    $P184 = $P183."ast"()
+    store_lex "$past", $P184
+  if_179_end:
+.annotate "line", 63
+    find_lex $P192, "$/"
+    find_lex $P193, "$past"
+    $P194 = $P192."!make"($P193)
+.annotate "line", 58
+    .return ($P194)
+  control_174:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P195, exception, "payload"
+    .return ($P195)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "xblock"  :subid("23_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_199
+.annotate "line", 66
+    new $P198, 'ExceptionHandler'
+    set_addr $P198, control_197
+    $P198."handle_types"(58)
+    push_eh $P198
+    .lex "self", self
+    .lex "$/", param_199
+.annotate "line", 67
+    find_lex $P200, "$/"
+    get_hll_global $P201, ["PAST"], "Op"
+    find_lex $P202, "$/"
+    unless_null $P202, vivify_142
+    new $P202, "Hash"
+  vivify_142:
+    set $P203, $P202["EXPR"]
+    unless_null $P203, vivify_143
+    new $P203, "Undef"
+  vivify_143:
+    $P204 = $P203."ast"()
+    find_lex $P205, "$/"
+    unless_null $P205, vivify_144
+    new $P205, "Hash"
+  vivify_144:
+    set $P206, $P205["pblock"]
+    unless_null $P206, vivify_145
+    new $P206, "Undef"
+  vivify_145:
+    $P207 = $P206."ast"()
+    find_lex $P208, "$/"
+    $P209 = $P201."new"($P204, $P207, "if" :named("pasttype"), $P208 :named("node"))
+    $P210 = $P200."!make"($P209)
+.annotate "line", 66
+    .return ($P210)
+  control_197:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P211, exception, "payload"
+    .return ($P211)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "pblock"  :subid("24_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_215
+.annotate "line", 70
+    new $P214, 'ExceptionHandler'
+    set_addr $P214, control_213
+    $P214."handle_types"(58)
+    push_eh $P214
+    .lex "self", self
+    .lex "$/", param_215
+.annotate "line", 71
+    find_lex $P216, "$/"
+    find_lex $P217, "$/"
+    unless_null $P217, vivify_146
+    new $P217, "Hash"
+  vivify_146:
+    set $P218, $P217["blockoid"]
+    unless_null $P218, vivify_147
+    new $P218, "Undef"
+  vivify_147:
+    $P219 = $P218."ast"()
+    $P220 = $P216."!make"($P219)
+.annotate "line", 70
+    .return ($P220)
+  control_213:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P221, exception, "payload"
+    .return ($P221)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "block"  :subid("25_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_225
+.annotate "line", 74
+    new $P224, 'ExceptionHandler'
+    set_addr $P224, control_223
+    $P224."handle_types"(58)
+    push_eh $P224
+    .lex "self", self
+    .lex "$/", param_225
+.annotate "line", 75
+    find_lex $P226, "$/"
+    find_lex $P227, "$/"
+    unless_null $P227, vivify_148
+    new $P227, "Hash"
+  vivify_148:
+    set $P228, $P227["blockoid"]
+    unless_null $P228, vivify_149
+    new $P228, "Undef"
+  vivify_149:
+    $P229 = $P228."ast"()
+    $P230 = $P226."!make"($P229)
+.annotate "line", 74
+    .return ($P230)
+  control_223:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P231, exception, "payload"
+    .return ($P231)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "blockoid"  :subid("26_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_235
+.annotate "line", 78
+    new $P234, 'ExceptionHandler'
+    set_addr $P234, control_233
+    $P234."handle_types"(58)
+    push_eh $P234
+    .lex "self", self
+    .lex "$/", param_235
+.annotate "line", 79
+    new $P236, "Undef"
+    .lex "$past", $P236
+.annotate "line", 80
+    new $P237, "Undef"
+    .lex "$BLOCK", $P237
+.annotate "line", 79
+    find_lex $P238, "$/"
+    unless_null $P238, vivify_150
+    new $P238, "Hash"
+  vivify_150:
+    set $P239, $P238["statementlist"]
+    unless_null $P239, vivify_151
+    new $P239, "Undef"
+  vivify_151:
+    $P240 = $P239."ast"()
+    store_lex "$past", $P240
+.annotate "line", 80
+    get_global $P241, "@BLOCK"
+    $P242 = $P241."shift"()
+    store_lex "$BLOCK", $P242
+.annotate "line", 81
+    find_lex $P243, "$BLOCK"
+    find_lex $P244, "$past"
+    $P243."push"($P244)
+.annotate "line", 82
+    find_lex $P245, "$BLOCK"
+    find_lex $P246, "$/"
+    $P245."node"($P246)
+.annotate "line", 83
+    find_lex $P247, "$/"
+    find_lex $P248, "$BLOCK"
+    $P249 = $P247."!make"($P248)
+.annotate "line", 78
+    .return ($P249)
+  control_233:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P250, exception, "payload"
+    .return ($P250)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "newpad"  :subid("27_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_254
+.annotate "line", 86
+    new $P253, 'ExceptionHandler'
+    set_addr $P253, control_252
+    $P253."handle_types"(58)
+    push_eh $P253
+    .lex "self", self
+    .lex "$/", param_254
+.annotate "line", 87
+    get_global $P255, "@BLOCK"
+    unless_null $P255, vivify_152
+    new $P255, "ResizablePMCArray"
+    set_global "@BLOCK", $P255
+  vivify_152:
+.annotate "line", 86
+    get_global $P256, "@BLOCK"
+.annotate "line", 88
+    get_global $P257, "@BLOCK"
+    get_hll_global $P258, ["PAST"], "Block"
+    get_hll_global $P259, ["PAST"], "Stmts"
+    $P260 = $P259."new"()
+    $P261 = $P258."new"($P260)
+    $P262 = $P257."unshift"($P261)
+.annotate "line", 86
+    .return ($P262)
+  control_252:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P263, exception, "payload"
+    .return ($P263)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_control:sym<if>"  :subid("28_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_267
+.annotate "line", 93
+    .const 'Sub' $P297 = "29_1258051430.32314" 
+    capture_lex $P297
+    new $P266, 'ExceptionHandler'
+    set_addr $P266, control_265
+    $P266."handle_types"(58)
+    push_eh $P266
+    .lex "self", self
+    .lex "$/", param_267
+.annotate "line", 94
+    new $P268, "Undef"
+    .lex "$count", $P268
+.annotate "line", 95
+    new $P269, "Undef"
+    .lex "$past", $P269
+.annotate "line", 94
+    find_lex $P270, "$/"
+    unless_null $P270, vivify_153
+    new $P270, "Hash"
+  vivify_153:
+    set $P271, $P270["xblock"]
+    unless_null $P271, vivify_154
+    new $P271, "Undef"
+  vivify_154:
+    set $N272, $P271
+    new $P273, 'Float'
+    set $P273, $N272
+    sub $P274, $P273, 1
+    store_lex "$count", $P274
+.annotate "line", 95
+    find_lex $P275, "$count"
+    set $I276, $P275
+    find_lex $P277, "$/"
+    unless_null $P277, vivify_155
+    new $P277, "Hash"
+  vivify_155:
+    set $P278, $P277["xblock"]
+    unless_null $P278, vivify_156
+    new $P278, "ResizablePMCArray"
+  vivify_156:
+    set $P279, $P278[$I276]
+    unless_null $P279, vivify_157
+    new $P279, "Undef"
+  vivify_157:
+    $P280 = $P279."ast"()
+    $P281 = "xblock_immediate"($P280)
+    store_lex "$past", $P281
+.annotate "line", 96
+    find_lex $P283, "$/"
+    unless_null $P283, vivify_158
+    new $P283, "Hash"
+  vivify_158:
+    set $P284, $P283["else"]
+    unless_null $P284, vivify_159
+    new $P284, "Undef"
+  vivify_159:
+    unless $P284, if_282_end
+.annotate "line", 97
+    find_lex $P285, "$past"
+    find_lex $P286, "$/"
+    unless_null $P286, vivify_160
+    new $P286, "Hash"
+  vivify_160:
+    set $P287, $P286["else"]
+    unless_null $P287, vivify_161
+    new $P287, "ResizablePMCArray"
+  vivify_161:
+    set $P288, $P287[0]
+    unless_null $P288, vivify_162
+    new $P288, "Undef"
+  vivify_162:
+    $P289 = $P288."ast"()
+    $P290 = "block_immediate"($P289)
+    $P285."push"($P290)
+  if_282_end:
+.annotate "line", 100
+    new $P313, 'ExceptionHandler'
+    set_addr $P313, loop312_handler
+    $P313."handle_types"(65, 67, 66)
+    push_eh $P313
+  loop312_test:
+    find_lex $P291, "$count"
+    set $N292, $P291
+    new $P293, "Integer"
+    assign $P293, 0
+    set $N294, $P293
+    isgt $I295, $N292, $N294
+    unless $I295, loop312_done
+  loop312_redo:
+    .const 'Sub' $P297 = "29_1258051430.32314" 
+    capture_lex $P297
+    $P297()
+  loop312_next:
+    goto loop312_test
+  loop312_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P314, exception, 'type'
+    eq $P314, 65, loop312_next
+    eq $P314, 67, loop312_redo
+  loop312_done:
+    pop_eh 
+.annotate "line", 106
+    find_lex $P315, "$/"
+    find_lex $P316, "$past"
+    $P317 = $P315."!make"($P316)
+.annotate "line", 93
+    .return ($P317)
+  control_265:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P318, exception, "payload"
+    .return ($P318)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block296"  :anon :subid("29_1258051430.32314") :outer("28_1258051430.32314")
+.annotate "line", 102
+    new $P298, "Undef"
+    .lex "$else", $P298
+.annotate "line", 100
+    find_lex $P299, "$count"
+    clone $P300, $P299
+    dec $P299
+.annotate "line", 102
+    find_lex $P301, "$past"
+    store_lex "$else", $P301
+.annotate "line", 103
+    find_lex $P302, "$count"
+    set $I303, $P302
+    find_lex $P304, "$/"
+    unless_null $P304, vivify_163
+    new $P304, "Hash"
+  vivify_163:
+    set $P305, $P304["xblock"]
+    unless_null $P305, vivify_164
+    new $P305, "ResizablePMCArray"
+  vivify_164:
+    set $P306, $P305[$I303]
+    unless_null $P306, vivify_165
+    new $P306, "Undef"
+  vivify_165:
+    $P307 = $P306."ast"()
+    $P308 = "xblock_immediate"($P307)
+    store_lex "$past", $P308
+.annotate "line", 104
+    find_lex $P309, "$past"
+    find_lex $P310, "$else"
+    $P311 = $P309."push"($P310)
+.annotate "line", 100
+    .return ($P311)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_control:sym<unless>"  :subid("30_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_322
+.annotate "line", 109
+    new $P321, 'ExceptionHandler'
+    set_addr $P321, control_320
+    $P321."handle_types"(58)
+    push_eh $P321
+    .lex "self", self
+    .lex "$/", param_322
+.annotate "line", 110
+    new $P323, "Undef"
+    .lex "$past", $P323
+    find_lex $P324, "$/"
+    unless_null $P324, vivify_166
+    new $P324, "Hash"
+  vivify_166:
+    set $P325, $P324["xblock"]
+    unless_null $P325, vivify_167
+    new $P325, "Undef"
+  vivify_167:
+    $P326 = $P325."ast"()
+    $P327 = "xblock_immediate"($P326)
+    store_lex "$past", $P327
+.annotate "line", 111
+    find_lex $P328, "$past"
+    $P328."pasttype"("unless")
+.annotate "line", 112
+    find_lex $P329, "$/"
+    find_lex $P330, "$past"
+    $P331 = $P329."!make"($P330)
+.annotate "line", 109
+    .return ($P331)
+  control_320:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P332, exception, "payload"
+    .return ($P332)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_control:sym<while>"  :subid("31_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_336
+.annotate "line", 115
+    new $P335, 'ExceptionHandler'
+    set_addr $P335, control_334
+    $P335."handle_types"(58)
+    push_eh $P335
+    .lex "self", self
+    .lex "$/", param_336
+.annotate "line", 116
+    new $P337, "Undef"
+    .lex "$past", $P337
+    find_lex $P338, "$/"
+    unless_null $P338, vivify_168
+    new $P338, "Hash"
+  vivify_168:
+    set $P339, $P338["xblock"]
+    unless_null $P339, vivify_169
+    new $P339, "Undef"
+  vivify_169:
+    $P340 = $P339."ast"()
+    $P341 = "xblock_immediate"($P340)
+    store_lex "$past", $P341
+.annotate "line", 117
+    find_lex $P342, "$past"
+    find_lex $P343, "$/"
+    unless_null $P343, vivify_170
+    new $P343, "Hash"
+  vivify_170:
+    set $P344, $P343["sym"]
+    unless_null $P344, vivify_171
+    new $P344, "Undef"
+  vivify_171:
+    set $S345, $P344
+    $P342."pasttype"($S345)
+.annotate "line", 118
+    find_lex $P346, "$/"
+    find_lex $P347, "$past"
+    $P348 = $P346."!make"($P347)
+.annotate "line", 115
+    .return ($P348)
+  control_334:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P349, exception, "payload"
+    .return ($P349)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_control:sym<repeat>"  :subid("32_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_353
+.annotate "line", 121
+    new $P352, 'ExceptionHandler'
+    set_addr $P352, control_351
+    $P352."handle_types"(58)
+    push_eh $P352
+    .lex "self", self
+    .lex "$/", param_353
+.annotate "line", 122
+    new $P354, "Undef"
+    .lex "$pasttype", $P354
+.annotate "line", 123
+    new $P355, "Undef"
+    .lex "$past", $P355
+.annotate "line", 122
+    new $P356, "String"
+    assign $P356, "repeat_"
+    find_lex $P357, "$/"
+    unless_null $P357, vivify_172
+    new $P357, "Hash"
+  vivify_172:
+    set $P358, $P357["wu"]
+    unless_null $P358, vivify_173
+    new $P358, "Undef"
+  vivify_173:
+    set $S359, $P358
+    concat $P360, $P356, $S359
+    store_lex "$pasttype", $P360
+    find_lex $P361, "$past"
+.annotate "line", 124
+    find_lex $P363, "$/"
+    unless_null $P363, vivify_174
+    new $P363, "Hash"
+  vivify_174:
+    set $P364, $P363["xblock"]
+    unless_null $P364, vivify_175
+    new $P364, "Undef"
+  vivify_175:
+    if $P364, if_362
+.annotate "line", 129
+    get_hll_global $P371, ["PAST"], "Op"
+    find_lex $P372, "$/"
+    unless_null $P372, vivify_176
+    new $P372, "Hash"
+  vivify_176:
+    set $P373, $P372["EXPR"]
+    unless_null $P373, vivify_177
+    new $P373, "Undef"
+  vivify_177:
+    $P374 = $P373."ast"()
+    find_lex $P375, "$/"
+    unless_null $P375, vivify_178
+    new $P375, "Hash"
+  vivify_178:
+    set $P376, $P375["pblock"]
+    unless_null $P376, vivify_179
+    new $P376, "Undef"
+  vivify_179:
+    $P377 = $P376."ast"()
+    $P378 = "block_immediate"($P377)
+    find_lex $P379, "$pasttype"
+    find_lex $P380, "$/"
+    $P381 = $P371."new"($P374, $P378, $P379 :named("pasttype"), $P380 :named("node"))
+    store_lex "$past", $P381
+.annotate "line", 128
+    goto if_362_end
+  if_362:
+.annotate "line", 125
+    find_lex $P365, "$/"
+    unless_null $P365, vivify_180
+    new $P365, "Hash"
+  vivify_180:
+    set $P366, $P365["xblock"]
+    unless_null $P366, vivify_181
+    new $P366, "Undef"
+  vivify_181:
+    $P367 = $P366."ast"()
+    $P368 = "xblock_immediate"($P367)
+    store_lex "$past", $P368
+.annotate "line", 126
+    find_lex $P369, "$past"
+    find_lex $P370, "$pasttype"
+    $P369."pasttype"($P370)
+  if_362_end:
+.annotate "line", 132
+    find_lex $P382, "$/"
+    find_lex $P383, "$past"
+    $P384 = $P382."!make"($P383)
+.annotate "line", 121
+    .return ($P384)
+  control_351:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P385, exception, "payload"
+    .return ($P385)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_control:sym<for>"  :subid("33_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_389
+.annotate "line", 135
+    new $P388, 'ExceptionHandler'
+    set_addr $P388, control_387
+    $P388."handle_types"(58)
+    push_eh $P388
+    .lex "self", self
+    .lex "$/", param_389
+.annotate "line", 136
+    new $P390, "Undef"
+    .lex "$past", $P390
+.annotate "line", 138
+    new $P391, "Undef"
+    .lex "$block", $P391
+.annotate "line", 136
+    find_lex $P392, "$/"
+    unless_null $P392, vivify_182
+    new $P392, "Hash"
+  vivify_182:
+    set $P393, $P392["xblock"]
+    unless_null $P393, vivify_183
+    new $P393, "Undef"
+  vivify_183:
+    $P394 = $P393."ast"()
+    store_lex "$past", $P394
+.annotate "line", 137
+    find_lex $P395, "$past"
+    $P395."pasttype"("for")
+.annotate "line", 138
+    find_lex $P396, "$past"
+    unless_null $P396, vivify_184
+    new $P396, "ResizablePMCArray"
+  vivify_184:
+    set $P397, $P396[1]
+    unless_null $P397, vivify_185
+    new $P397, "Undef"
+  vivify_185:
+    store_lex "$block", $P397
+.annotate "line", 139
+    find_lex $P399, "$block"
+    $P400 = $P399."arity"()
+    if $P400, unless_398_end
+.annotate "line", 140
+    find_lex $P401, "$block"
+    unless_null $P401, vivify_186
+    new $P401, "ResizablePMCArray"
+  vivify_186:
+    set $P402, $P401[0]
+    unless_null $P402, vivify_187
+    new $P402, "Undef"
+  vivify_187:
+    get_hll_global $P403, ["PAST"], "Var"
+    $P404 = $P403."new"("$_" :named("name"), "parameter" :named("scope"))
+    $P402."push"($P404)
+.annotate "line", 141
+    find_lex $P405, "$block"
+    $P405."symbol"("$_", "lexical" :named("scope"))
+.annotate "line", 142
+    find_lex $P406, "$block"
+    $P406."arity"(1)
+  unless_398_end:
+.annotate "line", 144
+    find_lex $P407, "$block"
+    $P407."blocktype"("immediate")
+.annotate "line", 145
+    find_lex $P408, "$/"
+    find_lex $P409, "$past"
+    $P410 = $P408."!make"($P409)
+.annotate "line", 135
+    .return ($P410)
+  control_387:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P411, exception, "payload"
+    .return ($P411)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_control:sym<return>"  :subid("34_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_415
+.annotate "line", 148
+    new $P414, 'ExceptionHandler'
+    set_addr $P414, control_413
+    $P414."handle_types"(58)
+    push_eh $P414
+    .lex "self", self
+    .lex "$/", param_415
+.annotate "line", 149
+    find_lex $P416, "$/"
+    get_hll_global $P417, ["PAST"], "Op"
+    find_lex $P418, "$/"
+    unless_null $P418, vivify_188
+    new $P418, "Hash"
+  vivify_188:
+    set $P419, $P418["EXPR"]
+    unless_null $P419, vivify_189
+    new $P419, "Undef"
+  vivify_189:
+    $P420 = $P419."ast"()
+    find_lex $P421, "$/"
+    $P422 = $P417."new"($P420, "return" :named("pasttype"), $P421 :named("node"))
+    $P423 = $P416."!make"($P422)
+.annotate "line", 148
+    .return ($P423)
+  control_413:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P424, exception, "payload"
+    .return ($P424)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_control:sym<make>"  :subid("35_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_428
+.annotate "line", 152
+    new $P427, 'ExceptionHandler'
+    set_addr $P427, control_426
+    $P427."handle_types"(58)
+    push_eh $P427
+    .lex "self", self
+    .lex "$/", param_428
+.annotate "line", 153
+    find_lex $P429, "$/"
+    get_hll_global $P430, ["PAST"], "Op"
+.annotate "line", 154
+    get_hll_global $P431, ["PAST"], "Var"
+    $P432 = $P431."new"("$/" :named("name"), "contextual" :named("scope"))
+.annotate "line", 155
+    find_lex $P433, "$/"
+    unless_null $P433, vivify_190
+    new $P433, "Hash"
+  vivify_190:
+    set $P434, $P433["EXPR"]
+    unless_null $P434, vivify_191
+    new $P434, "Undef"
+  vivify_191:
+    $P435 = $P434."ast"()
+    find_lex $P436, "$/"
+    $P437 = $P430."new"($P432, $P435, "callmethod" :named("pasttype"), "!make" :named("name"), $P436 :named("node"))
+.annotate "line", 153
+    $P438 = $P429."!make"($P437)
+.annotate "line", 152
+    .return ($P438)
+  control_426:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P439, exception, "payload"
+    .return ($P439)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "statement_prefix:sym<INIT>"  :subid("36_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_443
+.annotate "line", 162
+    new $P442, 'ExceptionHandler'
+    set_addr $P442, control_441
+    $P442."handle_types"(58)
+    push_eh $P442
+    .lex "self", self
+    .lex "$/", param_443
+.annotate "line", 163
+    get_global $P444, "@BLOCK"
+    unless_null $P444, vivify_192
+    new $P444, "ResizablePMCArray"
+  vivify_192:
+    set $P445, $P444[0]
+    unless_null $P445, vivify_193
+    new $P445, "Undef"
+  vivify_193:
+    $P446 = $P445."loadinit"()
+    find_lex $P447, "$/"
+    unless_null $P447, vivify_194
+    new $P447, "Hash"
+  vivify_194:
+    set $P448, $P447["blorst"]
+    unless_null $P448, vivify_195
+    new $P448, "Undef"
+  vivify_195:
+    $P449 = $P448."ast"()
+    $P446."push"($P449)
+.annotate "line", 164
+    find_lex $P450, "$/"
+    get_hll_global $P451, ["PAST"], "Stmts"
+    find_lex $P452, "$/"
+    $P453 = $P451."new"($P452 :named("node"))
+    $P454 = $P450."!make"($P453)
+.annotate "line", 162
+    .return ($P454)
+  control_441:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P455, exception, "payload"
+    .return ($P455)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "blorst"  :subid("37_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_459
+.annotate "line", 167
+    new $P458, 'ExceptionHandler'
+    set_addr $P458, control_457
+    $P458."handle_types"(58)
+    push_eh $P458
+    .lex "self", self
+    .lex "$/", param_459
+.annotate "line", 168
+    find_lex $P460, "$/"
+.annotate "line", 169
+    find_lex $P463, "$/"
+    unless_null $P463, vivify_196
+    new $P463, "Hash"
+  vivify_196:
+    set $P464, $P463["block"]
+    unless_null $P464, vivify_197
+    new $P464, "Undef"
+  vivify_197:
+    if $P464, if_462
+.annotate "line", 170
+    find_lex $P469, "$/"
+    unless_null $P469, vivify_198
+    new $P469, "Hash"
+  vivify_198:
+    set $P470, $P469["statement"]
+    unless_null $P470, vivify_199
+    new $P470, "Undef"
+  vivify_199:
+    $P471 = $P470."ast"()
+    set $P461, $P471
+.annotate "line", 169
+    goto if_462_end
+  if_462:
+    find_lex $P465, "$/"
+    unless_null $P465, vivify_200
+    new $P465, "Hash"
+  vivify_200:
+    set $P466, $P465["block"]
+    unless_null $P466, vivify_201
+    new $P466, "Undef"
+  vivify_201:
+    $P467 = $P466."ast"()
+    $P468 = "block_immediate"($P467)
+    set $P461, $P468
+  if_462_end:
+    $P472 = $P460."!make"($P461)
+.annotate "line", 167
+    .return ($P472)
+  control_457:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P473, exception, "payload"
+    .return ($P473)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<colonpair>"  :subid("38_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_477
+.annotate "line", 175
+    new $P476, 'ExceptionHandler'
+    set_addr $P476, control_475
+    $P476."handle_types"(58)
+    push_eh $P476
+    .lex "self", self
+    .lex "$/", param_477
+    find_lex $P478, "$/"
+    find_lex $P479, "$/"
+    unless_null $P479, vivify_202
+    new $P479, "Hash"
+  vivify_202:
+    set $P480, $P479["colonpair"]
+    unless_null $P480, vivify_203
+    new $P480, "Undef"
+  vivify_203:
+    $P481 = $P480."ast"()
+    $P482 = $P478."!make"($P481)
+    .return ($P482)
+  control_475:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P483, exception, "payload"
+    .return ($P483)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<variable>"  :subid("39_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_487
+.annotate "line", 176
+    new $P486, 'ExceptionHandler'
+    set_addr $P486, control_485
+    $P486."handle_types"(58)
+    push_eh $P486
+    .lex "self", self
+    .lex "$/", param_487
+    find_lex $P488, "$/"
+    find_lex $P489, "$/"
+    unless_null $P489, vivify_204
+    new $P489, "Hash"
+  vivify_204:
+    set $P490, $P489["variable"]
+    unless_null $P490, vivify_205
+    new $P490, "Undef"
+  vivify_205:
+    $P491 = $P490."ast"()
+    $P492 = $P488."!make"($P491)
+    .return ($P492)
+  control_485:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P493, exception, "payload"
+    .return ($P493)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<package_declarator>"  :subid("40_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_497
+.annotate "line", 177
+    new $P496, 'ExceptionHandler'
+    set_addr $P496, control_495
+    $P496."handle_types"(58)
+    push_eh $P496
+    .lex "self", self
+    .lex "$/", param_497
+    find_lex $P498, "$/"
+    find_lex $P499, "$/"
+    unless_null $P499, vivify_206
+    new $P499, "Hash"
+  vivify_206:
+    set $P500, $P499["package_declarator"]
+    unless_null $P500, vivify_207
+    new $P500, "Undef"
+  vivify_207:
+    $P501 = $P500."ast"()
+    $P502 = $P498."!make"($P501)
+    .return ($P502)
+  control_495:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P503, exception, "payload"
+    .return ($P503)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<scope_declarator>"  :subid("41_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_507
+.annotate "line", 178
+    new $P506, 'ExceptionHandler'
+    set_addr $P506, control_505
+    $P506."handle_types"(58)
+    push_eh $P506
+    .lex "self", self
+    .lex "$/", param_507
+    find_lex $P508, "$/"
+    find_lex $P509, "$/"
+    unless_null $P509, vivify_208
+    new $P509, "Hash"
+  vivify_208:
+    set $P510, $P509["scope_declarator"]
+    unless_null $P510, vivify_209
+    new $P510, "Undef"
+  vivify_209:
+    $P511 = $P510."ast"()
+    $P512 = $P508."!make"($P511)
+    .return ($P512)
+  control_505:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P513, exception, "payload"
+    .return ($P513)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<routine_declarator>"  :subid("42_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_517
+.annotate "line", 179
+    new $P516, 'ExceptionHandler'
+    set_addr $P516, control_515
+    $P516."handle_types"(58)
+    push_eh $P516
+    .lex "self", self
+    .lex "$/", param_517
+    find_lex $P518, "$/"
+    find_lex $P519, "$/"
+    unless_null $P519, vivify_210
+    new $P519, "Hash"
+  vivify_210:
+    set $P520, $P519["routine_declarator"]
+    unless_null $P520, vivify_211
+    new $P520, "Undef"
+  vivify_211:
+    $P521 = $P520."ast"()
+    $P522 = $P518."!make"($P521)
+    .return ($P522)
+  control_515:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P523, exception, "payload"
+    .return ($P523)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<regex_declarator>"  :subid("43_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_527
+.annotate "line", 180
+    new $P526, 'ExceptionHandler'
+    set_addr $P526, control_525
+    $P526."handle_types"(58)
+    push_eh $P526
+    .lex "self", self
+    .lex "$/", param_527
+    find_lex $P528, "$/"
+    find_lex $P529, "$/"
+    unless_null $P529, vivify_212
+    new $P529, "Hash"
+  vivify_212:
+    set $P530, $P529["regex_declarator"]
+    unless_null $P530, vivify_213
+    new $P530, "Undef"
+  vivify_213:
+    $P531 = $P530."ast"()
+    $P532 = $P528."!make"($P531)
+    .return ($P532)
+  control_525:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P533, exception, "payload"
+    .return ($P533)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<statement_prefix>"  :subid("44_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_537
+.annotate "line", 181
+    new $P536, 'ExceptionHandler'
+    set_addr $P536, control_535
+    $P536."handle_types"(58)
+    push_eh $P536
+    .lex "self", self
+    .lex "$/", param_537
+    find_lex $P538, "$/"
+    find_lex $P539, "$/"
+    unless_null $P539, vivify_214
+    new $P539, "Hash"
+  vivify_214:
+    set $P540, $P539["statement_prefix"]
+    unless_null $P540, vivify_215
+    new $P540, "Undef"
+  vivify_215:
+    $P541 = $P540."ast"()
+    $P542 = $P538."!make"($P541)
+    .return ($P542)
+  control_535:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P543, exception, "payload"
+    .return ($P543)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<lambda>"  :subid("45_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_547
+.annotate "line", 182
+    new $P546, 'ExceptionHandler'
+    set_addr $P546, control_545
+    $P546."handle_types"(58)
+    push_eh $P546
+    .lex "self", self
+    .lex "$/", param_547
+    find_lex $P548, "$/"
+    find_lex $P549, "$/"
+    unless_null $P549, vivify_216
+    new $P549, "Hash"
+  vivify_216:
+    set $P550, $P549["pblock"]
+    unless_null $P550, vivify_217
+    new $P550, "Undef"
+  vivify_217:
+    $P551 = $P550."ast"()
+    $P552 = $P548."!make"($P551)
+    .return ($P552)
+  control_545:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P553, exception, "payload"
+    .return ($P553)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "colonpair"  :subid("46_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_557
+.annotate "line", 184
+    new $P556, 'ExceptionHandler'
+    set_addr $P556, control_555
+    $P556."handle_types"(58)
+    push_eh $P556
+    .lex "self", self
+    .lex "$/", param_557
+.annotate "line", 185
+    new $P558, "Undef"
+    .lex "$past", $P558
+.annotate "line", 186
+    find_lex $P561, "$/"
+    unless_null $P561, vivify_218
+    new $P561, "Hash"
+  vivify_218:
+    set $P562, $P561["circumfix"]
+    unless_null $P562, vivify_219
+    new $P562, "Undef"
+  vivify_219:
+    if $P562, if_560
+.annotate "line", 187
+    get_hll_global $P567, ["PAST"], "Val"
+    find_lex $P568, "$/"
+    unless_null $P568, vivify_220
+    new $P568, "Hash"
+  vivify_220:
+    set $P569, $P568["not"]
+    unless_null $P569, vivify_221
+    new $P569, "Undef"
+  vivify_221:
+    isfalse $I570, $P569
+    $P571 = $P567."new"($I570 :named("value"))
+    set $P559, $P571
+.annotate "line", 186
+    goto if_560_end
+  if_560:
+    find_lex $P563, "$/"
+    unless_null $P563, vivify_222
+    new $P563, "Hash"
+  vivify_222:
+    set $P564, $P563["circumfix"]
+    unless_null $P564, vivify_223
+    new $P564, "ResizablePMCArray"
+  vivify_223:
+    set $P565, $P564[0]
+    unless_null $P565, vivify_224
+    new $P565, "Undef"
+  vivify_224:
+    $P566 = $P565."ast"()
+    set $P559, $P566
+  if_560_end:
+    store_lex "$past", $P559
+.annotate "line", 188
+    find_lex $P572, "$past"
+    find_lex $P573, "$/"
+    unless_null $P573, vivify_225
+    new $P573, "Hash"
+  vivify_225:
+    set $P574, $P573["identifier"]
+    unless_null $P574, vivify_226
+    new $P574, "Undef"
+  vivify_226:
+    set $S575, $P574
+    $P572."named"($S575)
+.annotate "line", 189
+    find_lex $P576, "$/"
+    find_lex $P577, "$past"
+    $P578 = $P576."!make"($P577)
+.annotate "line", 184
+    .return ($P578)
+  control_555:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P579, exception, "payload"
+    .return ($P579)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "variable"  :subid("47_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_583
+.annotate "line", 192
+    new $P582, 'ExceptionHandler'
+    set_addr $P582, control_581
+    $P582."handle_types"(58)
+    push_eh $P582
+    .lex "self", self
+    .lex "$/", param_583
+.annotate "line", 193
+    new $P584, "Undef"
+    .lex "$past", $P584
+.annotate "line", 192
+    find_lex $P585, "$past"
+.annotate "line", 194
+    find_lex $P587, "$/"
+    unless_null $P587, vivify_227
+    new $P587, "Hash"
+  vivify_227:
+    set $P588, $P587["postcircumfix"]
+    unless_null $P588, vivify_228
+    new $P588, "Undef"
+  vivify_228:
+    if $P588, if_586
+.annotate "line", 199
+    get_hll_global $P595, ["PAST"], "Var"
+    find_lex $P596, "$/"
+    set $S597, $P596
+    $P598 = $P595."new"($S597 :named("name"))
+    store_lex "$past", $P598
+.annotate "line", 200
+    find_lex $P600, "$/"
+    unless_null $P600, vivify_229
+    new $P600, "Hash"
+  vivify_229:
+    set $P601, $P600["twigil"]
+    unless_null $P601, vivify_230
+    new $P601, "ResizablePMCArray"
+  vivify_230:
+    set $P602, $P601[0]
+    unless_null $P602, vivify_231
+    new $P602, "Undef"
+  vivify_231:
+    set $S603, $P602
+    iseq $I604, $S603, "*"
+    if $I604, if_599
+.annotate "line", 206
+    find_lex $P615, "$/"
+    unless_null $P615, vivify_232
+    new $P615, "Hash"
+  vivify_232:
+    set $P616, $P615["twigil"]
+    unless_null $P616, vivify_233
+    new $P616, "ResizablePMCArray"
+  vivify_233:
+    set $P617, $P616[0]
+    unless_null $P617, vivify_234
+    new $P617, "Undef"
+  vivify_234:
+    set $S618, $P617
+    iseq $I619, $S618, "!"
+    unless $I619, if_614_end
+.annotate "line", 207
+    find_lex $P620, "$past"
+    $P620."scope"("attribute")
+.annotate "line", 208
+    find_lex $P621, "$past"
+    find_lex $P622, "$/"
+    unless_null $P622, vivify_235
+    new $P622, "Hash"
+  vivify_235:
+    set $P623, $P622["sigil"]
+    unless_null $P623, vivify_236
+    new $P623, "Undef"
+  vivify_236:
+    $P624 = "sigiltype"($P623)
+    $P621."viviself"($P624)
+  if_614_end:
+.annotate "line", 206
+    goto if_599_end
+  if_599:
+.annotate "line", 201
+    find_lex $P605, "$past"
+    $P605."scope"("contextual")
+.annotate "line", 202
+    find_lex $P606, "$past"
+    get_hll_global $P607, ["PAST"], "Op"
+    new $P608, "String"
+    assign $P608, "Contextual "
+    find_lex $P609, "$/"
+    set $S610, $P609
+    concat $P611, $P608, $S610
+    concat $P612, $P611, " not found"
+    $P613 = $P607."new"($P612, "die" :named("pirop"))
+    $P606."viviself"($P613)
+  if_599_end:
+.annotate "line", 198
+    goto if_586_end
+  if_586:
+.annotate "line", 195
+    find_lex $P589, "$/"
+    unless_null $P589, vivify_237
+    new $P589, "Hash"
+  vivify_237:
+    set $P590, $P589["postcircumfix"]
+    unless_null $P590, vivify_238
+    new $P590, "Undef"
+  vivify_238:
+    $P591 = $P590."ast"()
+    store_lex "$past", $P591
+.annotate "line", 196
+    find_lex $P592, "$past"
+    get_hll_global $P593, ["PAST"], "Var"
+    $P594 = $P593."new"("$/" :named("name"))
+    $P592."unshift"($P594)
+  if_586_end:
+.annotate "line", 211
+    find_lex $P625, "$/"
+    find_lex $P626, "$past"
+    $P627 = $P625."!make"($P626)
+.annotate "line", 192
+    .return ($P627)
+  control_581:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P628, exception, "payload"
+    .return ($P628)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "package_declarator:sym<module>"  :subid("48_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_632
+.annotate "line", 214
+    new $P631, 'ExceptionHandler'
+    set_addr $P631, control_630
+    $P631."handle_types"(58)
+    push_eh $P631
+    .lex "self", self
+    .lex "$/", param_632
+    find_lex $P633, "$/"
+    find_lex $P634, "$/"
+    unless_null $P634, vivify_239
+    new $P634, "Hash"
+  vivify_239:
+    set $P635, $P634["package_def"]
+    unless_null $P635, vivify_240
+    new $P635, "Undef"
+  vivify_240:
+    $P636 = $P635."ast"()
+    $P637 = $P633."!make"($P636)
+    .return ($P637)
+  control_630:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P638, exception, "payload"
+    .return ($P638)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "package_declarator:sym<class>"  :subid("49_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_642
+.annotate "line", 215
+    new $P641, 'ExceptionHandler'
+    set_addr $P641, control_640
+    $P641."handle_types"(58)
+    push_eh $P641
+    .lex "self", self
+    .lex "$/", param_642
+.annotate "line", 216
+    new $P643, "Undef"
+    .lex "$past", $P643
+.annotate "line", 217
+    new $P644, "Undef"
+    .lex "$classinit", $P644
+.annotate "line", 226
+    new $P645, "Undef"
+    .lex "$parent", $P645
+.annotate "line", 216
+    find_lex $P646, "$/"
+    unless_null $P646, vivify_241
+    new $P646, "Hash"
+  vivify_241:
+    set $P647, $P646["package_def"]
+    unless_null $P647, vivify_242
+    new $P647, "Undef"
+  vivify_242:
+    $P648 = $P647."ast"()
+    store_lex "$past", $P648
+.annotate "line", 218
+    get_hll_global $P649, ["PAST"], "Op"
+.annotate "line", 219
+    get_hll_global $P650, ["PAST"], "Op"
+    $P651 = $P650."new"("    %r = get_root_global [\"parrot\"], \"P6metaclass\"" :named("inline"))
+.annotate "line", 222
+    find_lex $P652, "$/"
+    unless_null $P652, vivify_243
+    new $P652, "Hash"
+  vivify_243:
+    set $P653, $P652["package_def"]
+    unless_null $P653, vivify_244
+    new $P653, "Hash"
+  vivify_244:
+    set $P654, $P653["name"]
+    unless_null $P654, vivify_245
+    new $P654, "Undef"
+  vivify_245:
+    set $S655, $P654
+    $P656 = $P649."new"($P651, $S655, "new_class" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 218
+    store_lex "$classinit", $P656
+.annotate "line", 226
+    find_lex $P659, "$/"
+    unless_null $P659, vivify_246
+    new $P659, "Hash"
+  vivify_246:
+    set $P660, $P659["package_def"]
+    unless_null $P660, vivify_247
+    new $P660, "Hash"
+  vivify_247:
+    set $P661, $P660["parent"]
+    unless_null $P661, vivify_248
+    new $P661, "ResizablePMCArray"
+  vivify_248:
+    set $P662, $P661[0]
+    unless_null $P662, vivify_249
+    new $P662, "Undef"
+  vivify_249:
+    set $S663, $P662
+    unless $S663, unless_658
+    new $P657, 'String'
+    set $P657, $S663
+    goto unless_658_end
+  unless_658:
+.annotate "line", 227
+    find_lex $P666, "$/"
+    unless_null $P666, vivify_250
+    new $P666, "Hash"
+  vivify_250:
+    set $P667, $P666["sym"]
+    unless_null $P667, vivify_251
+    new $P667, "Undef"
+  vivify_251:
+    set $S668, $P667
+    iseq $I669, $S668, "grammar"
+    if $I669, if_665
+    new $P671, "String"
+    assign $P671, ""
+    set $P664, $P671
+    goto if_665_end
+  if_665:
+    new $P670, "String"
+    assign $P670, "Regex::Cursor"
+    set $P664, $P670
+  if_665_end:
+    set $P657, $P664
+  unless_658_end:
+    store_lex "$parent", $P657
+.annotate "line", 228
+    find_lex $P673, "$parent"
+    unless $P673, if_672_end
+.annotate "line", 229
+    find_lex $P674, "$classinit"
+    get_hll_global $P675, ["PAST"], "Val"
+    find_lex $P676, "$parent"
+    $P677 = $P675."new"($P676 :named("value"), "parent" :named("named"))
+    $P674."push"($P677)
+  if_672_end:
+.annotate "line", 231
+    find_lex $P679, "$past"
+    unless_null $P679, vivify_252
+    new $P679, "Hash"
+  vivify_252:
+    set $P680, $P679["attributes"]
+    unless_null $P680, vivify_253
+    new $P680, "Undef"
+  vivify_253:
+    unless $P680, if_678_end
+.annotate "line", 232
+    find_lex $P681, "$classinit"
+    find_lex $P682, "$past"
+    unless_null $P682, vivify_254
+    new $P682, "Hash"
+  vivify_254:
+    set $P683, $P682["attributes"]
+    unless_null $P683, vivify_255
+    new $P683, "Undef"
+  vivify_255:
+    $P681."push"($P683)
+  if_678_end:
+.annotate "line", 234
+    get_global $P684, "@BLOCK"
+    unless_null $P684, vivify_256
+    new $P684, "ResizablePMCArray"
+  vivify_256:
+    set $P685, $P684[0]
+    unless_null $P685, vivify_257
+    new $P685, "Undef"
+  vivify_257:
+    $P686 = $P685."loadinit"()
+    find_lex $P687, "$classinit"
+    $P686."push"($P687)
+.annotate "line", 235
+    find_lex $P688, "$/"
+    find_lex $P689, "$past"
+    $P690 = $P688."!make"($P689)
+.annotate "line", 215
+    .return ($P690)
+  control_640:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P691, exception, "payload"
+    .return ($P691)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "package_def"  :subid("50_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_695
+.annotate "line", 238
+    new $P694, 'ExceptionHandler'
+    set_addr $P694, control_693
+    $P694."handle_types"(58)
+    push_eh $P694
+    .lex "self", self
+    .lex "$/", param_695
+.annotate "line", 239
+    new $P696, "Undef"
+    .lex "$past", $P696
+    find_lex $P699, "$/"
+    unless_null $P699, vivify_258
+    new $P699, "Hash"
+  vivify_258:
+    set $P700, $P699["block"]
+    unless_null $P700, vivify_259
+    new $P700, "Undef"
+  vivify_259:
+    if $P700, if_698
+    find_lex $P704, "$/"
+    unless_null $P704, vivify_260
+    new $P704, "Hash"
+  vivify_260:
+    set $P705, $P704["comp_unit"]
+    unless_null $P705, vivify_261
+    new $P705, "Undef"
+  vivify_261:
+    $P706 = $P705."ast"()
+    set $P697, $P706
+    goto if_698_end
+  if_698:
+    find_lex $P701, "$/"
+    unless_null $P701, vivify_262
+    new $P701, "Hash"
+  vivify_262:
+    set $P702, $P701["block"]
+    unless_null $P702, vivify_263
+    new $P702, "Undef"
+  vivify_263:
+    $P703 = $P702."ast"()
+    set $P697, $P703
+  if_698_end:
+    store_lex "$past", $P697
+.annotate "line", 240
+    find_lex $P707, "$past"
+    find_lex $P708, "$/"
+    unless_null $P708, vivify_264
+    new $P708, "Hash"
+  vivify_264:
+    set $P709, $P708["name"]
+    unless_null $P709, vivify_265
+    new $P709, "Hash"
+  vivify_265:
+    set $P710, $P709["identifier"]
+    unless_null $P710, vivify_266
+    new $P710, "Undef"
+  vivify_266:
+    $P707."namespace"($P710)
+.annotate "line", 241
+    find_lex $P711, "$past"
+    $P711."blocktype"("immediate")
+.annotate "line", 242
+    find_lex $P712, "$/"
+    find_lex $P713, "$past"
+    $P714 = $P712."!make"($P713)
+.annotate "line", 238
+    .return ($P714)
+  control_693:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P715, exception, "payload"
+    .return ($P715)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "scope_declarator:sym<my>"  :subid("51_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_719
+.annotate "line", 245
+    new $P718, 'ExceptionHandler'
+    set_addr $P718, control_717
+    $P718."handle_types"(58)
+    push_eh $P718
+    .lex "self", self
+    .lex "$/", param_719
+    find_lex $P720, "$/"
+    find_lex $P721, "$/"
+    unless_null $P721, vivify_267
+    new $P721, "Hash"
+  vivify_267:
+    set $P722, $P721["scoped"]
+    unless_null $P722, vivify_268
+    new $P722, "Undef"
+  vivify_268:
+    $P723 = $P722."ast"()
+    $P724 = $P720."!make"($P723)
+    .return ($P724)
+  control_717:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P725, exception, "payload"
+    .return ($P725)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "scope_declarator:sym<our>"  :subid("52_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_729
+.annotate "line", 246
+    new $P728, 'ExceptionHandler'
+    set_addr $P728, control_727
+    $P728."handle_types"(58)
+    push_eh $P728
+    .lex "self", self
+    .lex "$/", param_729
+    find_lex $P730, "$/"
+    find_lex $P731, "$/"
+    unless_null $P731, vivify_269
+    new $P731, "Hash"
+  vivify_269:
+    set $P732, $P731["scoped"]
+    unless_null $P732, vivify_270
+    new $P732, "Undef"
+  vivify_270:
+    $P733 = $P732."ast"()
+    $P734 = $P730."!make"($P733)
+    .return ($P734)
+  control_727:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P735, exception, "payload"
+    .return ($P735)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "scope_declarator:sym<has>"  :subid("53_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_739
+.annotate "line", 247
+    new $P738, 'ExceptionHandler'
+    set_addr $P738, control_737
+    $P738."handle_types"(58)
+    push_eh $P738
+    .lex "self", self
+    .lex "$/", param_739
+    find_lex $P740, "$/"
+    find_lex $P741, "$/"
+    unless_null $P741, vivify_271
+    new $P741, "Hash"
+  vivify_271:
+    set $P742, $P741["scoped"]
+    unless_null $P742, vivify_272
+    new $P742, "Undef"
+  vivify_272:
+    $P743 = $P742."ast"()
+    $P744 = $P740."!make"($P743)
+    .return ($P744)
+  control_737:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P745, exception, "payload"
+    .return ($P745)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "scoped"  :subid("54_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_749
+.annotate "line", 249
+    new $P748, 'ExceptionHandler'
+    set_addr $P748, control_747
+    $P748."handle_types"(58)
+    push_eh $P748
+    .lex "self", self
+    .lex "$/", param_749
+.annotate "line", 250
+    find_lex $P750, "$/"
+.annotate "line", 251
+    find_lex $P753, "$/"
+    unless_null $P753, vivify_273
+    new $P753, "Hash"
+  vivify_273:
+    set $P754, $P753["routine_declarator"]
+    unless_null $P754, vivify_274
+    new $P754, "Undef"
+  vivify_274:
+    if $P754, if_752
+.annotate "line", 252
+    find_lex $P758, "$/"
+    unless_null $P758, vivify_275
+    new $P758, "Hash"
+  vivify_275:
+    set $P759, $P758["variable_declarator"]
+    unless_null $P759, vivify_276
+    new $P759, "Undef"
+  vivify_276:
+    $P760 = $P759."ast"()
+    set $P751, $P760
+.annotate "line", 251
+    goto if_752_end
+  if_752:
+    find_lex $P755, "$/"
+    unless_null $P755, vivify_277
+    new $P755, "Hash"
+  vivify_277:
+    set $P756, $P755["routine_declarator"]
+    unless_null $P756, vivify_278
+    new $P756, "Undef"
+  vivify_278:
+    $P757 = $P756."ast"()
+    set $P751, $P757
+  if_752_end:
+    $P761 = $P750."!make"($P751)
+.annotate "line", 249
+    .return ($P761)
+  control_747:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P762, exception, "payload"
+    .return ($P762)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "variable_declarator"  :subid("55_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_766
+.annotate "line", 255
+    .const 'Sub' $P806 = "56_1258051430.32314" 
+    capture_lex $P806
+    new $P765, 'ExceptionHandler'
+    set_addr $P765, control_764
+    $P765."handle_types"(58)
+    push_eh $P765
+    .lex "self", self
+    .lex "$/", param_766
+.annotate "line", 256
+    new $P767, "Undef"
+    .lex "$past", $P767
+.annotate "line", 257
+    new $P768, "Undef"
+    .lex "$sigil", $P768
+.annotate "line", 258
+    new $P769, "Undef"
+    .lex "$name", $P769
+.annotate "line", 259
+    new $P770, "Undef"
+    .lex "$BLOCK", $P770
+.annotate "line", 256
+    find_lex $P771, "$/"
+    unless_null $P771, vivify_279
+    new $P771, "Hash"
+  vivify_279:
+    set $P772, $P771["variable"]
+    unless_null $P772, vivify_280
+    new $P772, "Undef"
+  vivify_280:
+    $P773 = $P772."ast"()
+    store_lex "$past", $P773
+.annotate "line", 257
+    find_lex $P774, "$/"
+    unless_null $P774, vivify_281
+    new $P774, "Hash"
+  vivify_281:
+    set $P775, $P774["variable"]
+    unless_null $P775, vivify_282
+    new $P775, "Hash"
+  vivify_282:
+    set $P776, $P775["sigil"]
+    unless_null $P776, vivify_283
+    new $P776, "Undef"
+  vivify_283:
+    store_lex "$sigil", $P776
+.annotate "line", 258
+    find_lex $P777, "$past"
+    $P778 = $P777."name"()
+    store_lex "$name", $P778
+.annotate "line", 259
+    get_global $P779, "@BLOCK"
+    unless_null $P779, vivify_284
+    new $P779, "ResizablePMCArray"
+  vivify_284:
+    set $P780, $P779[0]
+    unless_null $P780, vivify_285
+    new $P780, "Undef"
+  vivify_285:
+    store_lex "$BLOCK", $P780
+.annotate "line", 260
+    find_lex $P782, "$BLOCK"
+    find_lex $P783, "$name"
+    $P784 = $P782."symbol"($P783)
+    unless $P784, if_781_end
+.annotate "line", 261
+    find_lex $P785, "$/"
+    $P786 = $P785."CURSOR"()
+    find_lex $P787, "$name"
+    $P786."panic"("Redeclaration of symbol ", $P787)
+  if_781_end:
+.annotate "line", 263
+    find_dynamic_lex $P789, "$*SCOPE"
+    unless_null $P789, vivify_286
+    die "Contextual $*SCOPE not found"
+  vivify_286:
+    set $S790, $P789
+    iseq $I791, $S790, "has"
+    if $I791, if_788
+.annotate "line", 272
+    .const 'Sub' $P806 = "56_1258051430.32314" 
+    capture_lex $P806
+    $P806()
+    goto if_788_end
+  if_788:
+.annotate "line", 264
+    find_lex $P792, "$BLOCK"
+    find_lex $P793, "$name"
+    $P792."symbol"($P793, "attribute" :named("scope"))
+.annotate "line", 265
+    find_lex $P795, "$BLOCK"
+    unless_null $P795, vivify_290
+    new $P795, "Hash"
+  vivify_290:
+    set $P796, $P795["attributes"]
+    unless_null $P796, vivify_291
+    new $P796, "Undef"
+  vivify_291:
+    if $P796, unless_794_end
+.annotate "line", 267
+    get_hll_global $P797, ["PAST"], "Op"
+    $P798 = $P797."new"("list" :named("pasttype"), "attr" :named("named"))
+    find_lex $P799, "$BLOCK"
+    unless_null $P799, vivify_292
+    new $P799, "Hash"
+    store_lex "$BLOCK", $P799
+  vivify_292:
+    set $P799["attributes"], $P798
+  unless_794_end:
+.annotate "line", 269
+    find_lex $P800, "$BLOCK"
+    unless_null $P800, vivify_293
+    new $P800, "Hash"
+  vivify_293:
+    set $P801, $P800["attributes"]
+    unless_null $P801, vivify_294
+    new $P801, "Undef"
+  vivify_294:
+    find_lex $P802, "$name"
+    $P801."push"($P802)
+.annotate "line", 270
+    get_hll_global $P803, ["PAST"], "Stmts"
+    $P804 = $P803."new"()
+    store_lex "$past", $P804
+  if_788_end:
+.annotate "line", 280
+    find_lex $P830, "$/"
+    find_lex $P831, "$past"
+    $P832 = $P830."!make"($P831)
+.annotate "line", 255
+    .return ($P832)
+  control_764:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P833, exception, "payload"
+    .return ($P833)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block805"  :anon :subid("56_1258051430.32314") :outer("55_1258051430.32314")
+.annotate "line", 273
+    new $P807, "Undef"
+    .lex "$scope", $P807
+.annotate "line", 274
+    new $P808, "Undef"
+    .lex "$decl", $P808
+.annotate "line", 273
+    find_dynamic_lex $P811, "$*SCOPE"
+    unless_null $P811, vivify_287
+    die "Contextual $*SCOPE not found"
+  vivify_287:
+    set $S812, $P811
+    iseq $I813, $S812, "our"
+    if $I813, if_810
+    new $P815, "String"
+    assign $P815, "lexical"
+    set $P809, $P815
+    goto if_810_end
+  if_810:
+    new $P814, "String"
+    assign $P814, "package"
+    set $P809, $P814
+  if_810_end:
+    store_lex "$scope", $P809
+.annotate "line", 274
+    get_hll_global $P816, ["PAST"], "Var"
+    find_lex $P817, "$name"
+    find_lex $P818, "$scope"
+.annotate "line", 275
+    find_lex $P819, "$sigil"
+    $P820 = "sigiltype"($P819)
+    find_lex $P821, "$/"
+    $P822 = $P816."new"($P817 :named("name"), $P818 :named("scope"), 1 :named("isdecl"), 1 :named("lvalue"), $P820 :named("viviself"), $P821 :named("node"))
+.annotate "line", 274
+    store_lex "$decl", $P822
+.annotate "line", 277
+    find_lex $P823, "$BLOCK"
+    find_lex $P824, "$name"
+    find_lex $P825, "$scope"
+    $P823."symbol"($P824, $P825 :named("scope"))
+.annotate "line", 278
+    find_lex $P826, "$BLOCK"
+    unless_null $P826, vivify_288
+    new $P826, "ResizablePMCArray"
+  vivify_288:
+    set $P827, $P826[0]
+    unless_null $P827, vivify_289
+    new $P827, "Undef"
+  vivify_289:
+    find_lex $P828, "$decl"
+    $P829 = $P827."push"($P828)
+.annotate "line", 272
+    .return ($P829)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "routine_declarator:sym<sub>"  :subid("57_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_837
+.annotate "line", 283
+    new $P836, 'ExceptionHandler'
+    set_addr $P836, control_835
+    $P836."handle_types"(58)
+    push_eh $P836
+    .lex "self", self
+    .lex "$/", param_837
+    find_lex $P838, "$/"
+    find_lex $P839, "$/"
+    unless_null $P839, vivify_295
+    new $P839, "Hash"
+  vivify_295:
+    set $P840, $P839["routine_def"]
+    unless_null $P840, vivify_296
+    new $P840, "Undef"
+  vivify_296:
+    $P841 = $P840."ast"()
+    $P842 = $P838."!make"($P841)
+    .return ($P842)
+  control_835:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P843, exception, "payload"
+    .return ($P843)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "routine_declarator:sym<method>"  :subid("58_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_847
+.annotate "line", 284
+    new $P846, 'ExceptionHandler'
+    set_addr $P846, control_845
+    $P846."handle_types"(58)
+    push_eh $P846
+    .lex "self", self
+    .lex "$/", param_847
+    find_lex $P848, "$/"
+    find_lex $P849, "$/"
+    unless_null $P849, vivify_297
+    new $P849, "Hash"
+  vivify_297:
+    set $P850, $P849["method_def"]
+    unless_null $P850, vivify_298
+    new $P850, "Undef"
+  vivify_298:
+    $P851 = $P850."ast"()
+    $P852 = $P848."!make"($P851)
+    .return ($P852)
+  control_845:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P853, exception, "payload"
+    .return ($P853)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "routine_def"  :subid("59_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_857
+.annotate "line", 286
+    .const 'Sub' $P868 = "60_1258051430.32314" 
+    capture_lex $P868
+    new $P856, 'ExceptionHandler'
+    set_addr $P856, control_855
+    $P856."handle_types"(58)
+    push_eh $P856
+    .lex "self", self
+    .lex "$/", param_857
+.annotate "line", 287
+    new $P858, "Undef"
+    .lex "$past", $P858
+    find_lex $P859, "$/"
+    unless_null $P859, vivify_299
+    new $P859, "Hash"
+  vivify_299:
+    set $P860, $P859["blockoid"]
+    unless_null $P860, vivify_300
+    new $P860, "Undef"
+  vivify_300:
+    $P861 = $P860."ast"()
+    store_lex "$past", $P861
+.annotate "line", 288
+    find_lex $P862, "$past"
+    $P862."blocktype"("declaration")
+.annotate "line", 289
+    find_lex $P863, "$past"
+    $P863."control"("return_pir")
+.annotate "line", 290
+    find_lex $P865, "$/"
+    unless_null $P865, vivify_301
+    new $P865, "Hash"
+  vivify_301:
+    set $P866, $P865["deflongname"]
+    unless_null $P866, vivify_302
+    new $P866, "Undef"
+  vivify_302:
+    unless $P866, if_864_end
+    .const 'Sub' $P868 = "60_1258051430.32314" 
+    capture_lex $P868
+    $P868()
+  if_864_end:
+.annotate "line", 300
+    find_lex $P896, "$/"
+    find_lex $P897, "$past"
+    $P898 = $P896."!make"($P897)
+.annotate "line", 286
+    .return ($P898)
+  control_855:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P899, exception, "payload"
+    .return ($P899)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block867"  :anon :subid("60_1258051430.32314") :outer("59_1258051430.32314")
+.annotate "line", 291
+    new $P869, "Undef"
+    .lex "$name", $P869
+    find_lex $P870, "$/"
+    unless_null $P870, vivify_303
+    new $P870, "Hash"
+  vivify_303:
+    set $P871, $P870["deflongname"]
+    unless_null $P871, vivify_304
+    new $P871, "ResizablePMCArray"
+  vivify_304:
+    set $P872, $P871[0]
+    unless_null $P872, vivify_305
+    new $P872, "Undef"
+  vivify_305:
+    $P873 = $P872."ast"()
+    set $S874, $P873
+    new $P875, 'String'
+    set $P875, $S874
+    store_lex "$name", $P875
+.annotate "line", 292
+    find_lex $P876, "$past"
+    find_lex $P877, "$name"
+    $P876."name"($P877)
+.annotate "line", 293
+    find_dynamic_lex $P880, "$*SCOPE"
+    unless_null $P880, vivify_306
+    die "Contextual $*SCOPE not found"
+  vivify_306:
+    set $S881, $P880
+    isne $I882, $S881, "our"
+    if $I882, if_879
+    new $P878, 'Integer'
+    set $P878, $I882
+    goto if_879_end
+  if_879:
+.annotate "line", 294
+    get_global $P883, "@BLOCK"
+    unless_null $P883, vivify_307
+    new $P883, "ResizablePMCArray"
+  vivify_307:
+    set $P884, $P883[0]
+    unless_null $P884, vivify_308
+    new $P884, "ResizablePMCArray"
+  vivify_308:
+    set $P885, $P884[0]
+    unless_null $P885, vivify_309
+    new $P885, "Undef"
+  vivify_309:
+    get_hll_global $P886, ["PAST"], "Var"
+    find_lex $P887, "$name"
+    find_lex $P888, "$past"
+    $P889 = $P886."new"($P887 :named("name"), 1 :named("isdecl"), $P888 :named("viviself"), "lexical" :named("scope"))
+    $P885."push"($P889)
+.annotate "line", 296
+    get_global $P890, "@BLOCK"
+    unless_null $P890, vivify_310
+    new $P890, "ResizablePMCArray"
+  vivify_310:
+    set $P891, $P890[0]
+    unless_null $P891, vivify_311
+    new $P891, "Undef"
+  vivify_311:
+    find_lex $P892, "$name"
+    $P891."symbol"($P892, "lexical" :named("scope"))
+.annotate "line", 297
+    get_hll_global $P893, ["PAST"], "Var"
+    find_lex $P894, "$name"
+    $P895 = $P893."new"($P894 :named("name"))
+    store_lex "$past", $P895
+.annotate "line", 293
+    set $P878, $P895
+  if_879_end:
+.annotate "line", 290
+    .return ($P878)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "method_def"  :subid("61_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_903
+.annotate "line", 304
+    .const 'Sub' $P919 = "62_1258051430.32314" 
+    capture_lex $P919
+    new $P902, 'ExceptionHandler'
+    set_addr $P902, control_901
+    $P902."handle_types"(58)
+    push_eh $P902
+    .lex "self", self
+    .lex "$/", param_903
+.annotate "line", 305
+    new $P904, "Undef"
+    .lex "$past", $P904
+    find_lex $P905, "$/"
+    unless_null $P905, vivify_312
+    new $P905, "Hash"
+  vivify_312:
+    set $P906, $P905["blockoid"]
+    unless_null $P906, vivify_313
+    new $P906, "Undef"
+  vivify_313:
+    $P907 = $P906."ast"()
+    store_lex "$past", $P907
+.annotate "line", 306
+    find_lex $P908, "$past"
+    $P908."blocktype"("method")
+.annotate "line", 307
+    find_lex $P909, "$past"
+    $P909."control"("return_pir")
+.annotate "line", 308
+    find_lex $P910, "$past"
+    unless_null $P910, vivify_314
+    new $P910, "ResizablePMCArray"
+  vivify_314:
+    set $P911, $P910[0]
+    unless_null $P911, vivify_315
+    new $P911, "Undef"
+  vivify_315:
+    get_hll_global $P912, ["PAST"], "Op"
+    $P913 = $P912."new"("    .lex \"self\", self" :named("inline"))
+    $P911."unshift"($P913)
+.annotate "line", 309
+    find_lex $P914, "$past"
+    $P914."symbol"("self", "lexical" :named("scope"))
+.annotate "line", 310
+    find_lex $P916, "$/"
+    unless_null $P916, vivify_316
+    new $P916, "Hash"
+  vivify_316:
+    set $P917, $P916["deflongname"]
+    unless_null $P917, vivify_317
+    new $P917, "Undef"
+  vivify_317:
+    unless $P917, if_915_end
+    .const 'Sub' $P919 = "62_1258051430.32314" 
+    capture_lex $P919
+    $P919()
+  if_915_end:
+.annotate "line", 314
+    find_lex $P930, "$/"
+    find_lex $P931, "$past"
+    $P932 = $P930."!make"($P931)
+.annotate "line", 304
+    .return ($P932)
+  control_901:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P933, exception, "payload"
+    .return ($P933)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block918"  :anon :subid("62_1258051430.32314") :outer("61_1258051430.32314")
+.annotate "line", 311
+    new $P920, "Undef"
+    .lex "$name", $P920
+    find_lex $P921, "$/"
+    unless_null $P921, vivify_318
+    new $P921, "Hash"
+  vivify_318:
+    set $P922, $P921["deflongname"]
+    unless_null $P922, vivify_319
+    new $P922, "ResizablePMCArray"
+  vivify_319:
+    set $P923, $P922[0]
+    unless_null $P923, vivify_320
+    new $P923, "Undef"
+  vivify_320:
+    $P924 = $P923."ast"()
+    set $S925, $P924
+    new $P926, 'String'
+    set $P926, $S925
+    store_lex "$name", $P926
+.annotate "line", 312
+    find_lex $P927, "$past"
+    find_lex $P928, "$name"
+    $P929 = $P927."name"($P928)
+.annotate "line", 310
+    .return ($P929)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "signature"  :subid("63_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_937
+.annotate "line", 318
+    .const 'Sub' $P948 = "64_1258051430.32314" 
+    capture_lex $P948
+    new $P936, 'ExceptionHandler'
+    set_addr $P936, control_935
+    $P936."handle_types"(58)
+    push_eh $P936
+    .lex "self", self
+    .lex "$/", param_937
+.annotate "line", 319
+    new $P938, "Undef"
+    .lex "$BLOCKINIT", $P938
+    get_global $P939, "@BLOCK"
+    unless_null $P939, vivify_321
+    new $P939, "ResizablePMCArray"
+  vivify_321:
+    set $P940, $P939[0]
+    unless_null $P940, vivify_322
+    new $P940, "ResizablePMCArray"
+  vivify_322:
+    set $P941, $P940[0]
+    unless_null $P941, vivify_323
+    new $P941, "Undef"
+  vivify_323:
+    store_lex "$BLOCKINIT", $P941
+.annotate "line", 320
+    find_lex $P943, "$/"
+    unless_null $P943, vivify_324
+    new $P943, "Hash"
+  vivify_324:
+    set $P944, $P943["parameter"]
+    unless_null $P944, vivify_325
+    new $P944, "Undef"
+  vivify_325:
+    defined $I945, $P944
+    unless $I945, for_undef_326
+    iter $P942, $P944
+    new $P955, 'ExceptionHandler'
+    set_addr $P955, loop954_handler
+    $P955."handle_types"(65, 67, 66)
+    push_eh $P955
+  loop954_test:
+    unless $P942, loop954_done
+    shift $P946, $P942
+  loop954_redo:
+    .const 'Sub' $P948 = "64_1258051430.32314" 
+    capture_lex $P948
+    $P948($P946)
+  loop954_next:
+    goto loop954_test
+  loop954_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P956, exception, 'type'
+    eq $P956, 65, loop954_next
+    eq $P956, 67, loop954_redo
+  loop954_done:
+    pop_eh 
+  for_undef_326:
+.annotate "line", 318
+    .return ($P942)
+  control_935:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P957, exception, "payload"
+    .return ($P957)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block947"  :anon :subid("64_1258051430.32314") :outer("63_1258051430.32314")
+    .param pmc param_949
+.annotate "line", 320
+    .lex "$_", param_949
+    find_lex $P950, "$BLOCKINIT"
+    find_lex $P951, "$_"
+    $P952 = $P951."ast"()
+    $P953 = $P950."push"($P952)
+    .return ($P953)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "parameter"  :subid("65_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_961
+.annotate "line", 323
+    new $P960, 'ExceptionHandler'
+    set_addr $P960, control_959
+    $P960."handle_types"(58)
+    push_eh $P960
+    .lex "self", self
+    .lex "$/", param_961
+.annotate "line", 324
+    new $P962, "Undef"
+    .lex "$quant", $P962
+.annotate "line", 325
+    new $P963, "Undef"
+    .lex "$past", $P963
+.annotate "line", 324
+    find_lex $P964, "$/"
+    unless_null $P964, vivify_327
+    new $P964, "Hash"
+  vivify_327:
+    set $P965, $P964["quant"]
+    unless_null $P965, vivify_328
+    new $P965, "Undef"
+  vivify_328:
+    store_lex "$quant", $P965
+    find_lex $P966, "$past"
+.annotate "line", 326
+    find_lex $P968, "$/"
+    unless_null $P968, vivify_329
+    new $P968, "Hash"
+  vivify_329:
+    set $P969, $P968["named_param"]
+    unless_null $P969, vivify_330
+    new $P969, "Undef"
+  vivify_330:
+    if $P969, if_967
+.annotate "line", 333
+    find_lex $P983, "$/"
+    unless_null $P983, vivify_331
+    new $P983, "Hash"
+  vivify_331:
+    set $P984, $P983["param_var"]
+    unless_null $P984, vivify_332
+    new $P984, "Undef"
+  vivify_332:
+    $P985 = $P984."ast"()
+    store_lex "$past", $P985
+.annotate "line", 334
+    find_lex $P987, "$quant"
+    set $S988, $P987
+    iseq $I989, $S988, "*"
+    if $I989, if_986
+.annotate "line", 338
+    find_lex $P998, "$quant"
+    set $S999, $P998
+    iseq $I1000, $S999, "?"
+    unless $I1000, if_997_end
+.annotate "line", 339
+    find_lex $P1001, "$past"
+    find_lex $P1002, "$/"
+    unless_null $P1002, vivify_333
+    new $P1002, "Hash"
+  vivify_333:
+    set $P1003, $P1002["param_var"]
+    unless_null $P1003, vivify_334
+    new $P1003, "Hash"
+  vivify_334:
+    set $P1004, $P1003["sigil"]
+    unless_null $P1004, vivify_335
+    new $P1004, "Undef"
+  vivify_335:
+    $P1005 = "sigiltype"($P1004)
+    $P1001."viviself"($P1005)
+  if_997_end:
+.annotate "line", 338
+    goto if_986_end
+  if_986:
+.annotate "line", 335
+    find_lex $P990, "$past"
+    $P990."slurpy"(1)
+.annotate "line", 336
+    find_lex $P991, "$past"
+    find_lex $P992, "$/"
+    unless_null $P992, vivify_336
+    new $P992, "Hash"
+  vivify_336:
+    set $P993, $P992["param_var"]
+    unless_null $P993, vivify_337
+    new $P993, "Hash"
+  vivify_337:
+    set $P994, $P993["sigil"]
+    unless_null $P994, vivify_338
+    new $P994, "Undef"
+  vivify_338:
+    set $S995, $P994
+    iseq $I996, $S995, "%"
+    $P991."named"($I996)
+  if_986_end:
+.annotate "line", 332
+    goto if_967_end
+  if_967:
+.annotate "line", 327
+    find_lex $P970, "$/"
+    unless_null $P970, vivify_339
+    new $P970, "Hash"
+  vivify_339:
+    set $P971, $P970["named_param"]
+    unless_null $P971, vivify_340
+    new $P971, "Undef"
+  vivify_340:
+    $P972 = $P971."ast"()
+    store_lex "$past", $P972
+.annotate "line", 328
+    find_lex $P974, "$quant"
+    set $S975, $P974
+    isne $I976, $S975, "!"
+    unless $I976, if_973_end
+.annotate "line", 329
+    find_lex $P977, "$past"
+    find_lex $P978, "$/"
+    unless_null $P978, vivify_341
+    new $P978, "Hash"
+  vivify_341:
+    set $P979, $P978["named_param"]
+    unless_null $P979, vivify_342
+    new $P979, "Hash"
+  vivify_342:
+    set $P980, $P979["param_var"]
+    unless_null $P980, vivify_343
+    new $P980, "Hash"
+  vivify_343:
+    set $P981, $P980["sigil"]
+    unless_null $P981, vivify_344
+    new $P981, "Undef"
+  vivify_344:
+    $P982 = "sigiltype"($P981)
+    $P977."viviself"($P982)
+  if_973_end:
+  if_967_end:
+.annotate "line", 342
+    find_lex $P1007, "$/"
+    unless_null $P1007, vivify_345
+    new $P1007, "Hash"
+  vivify_345:
+    set $P1008, $P1007["default_value"]
+    unless_null $P1008, vivify_346
+    new $P1008, "Undef"
+  vivify_346:
+    unless $P1008, if_1006_end
+.annotate "line", 343
+    find_lex $P1010, "$quant"
+    set $S1011, $P1010
+    iseq $I1012, $S1011, "*"
+    unless $I1012, if_1009_end
+.annotate "line", 344
+    find_lex $P1013, "$/"
+    $P1014 = $P1013."CURSOR"()
+    $P1014."panic"("Can't put default on slurpy parameter")
+  if_1009_end:
+.annotate "line", 346
+    find_lex $P1016, "$quant"
+    set $S1017, $P1016
+    iseq $I1018, $S1017, "!"
+    unless $I1018, if_1015_end
+.annotate "line", 347
+    find_lex $P1019, "$/"
+    $P1020 = $P1019."CURSOR"()
+    $P1020."panic"("Can't put default on required parameter")
+  if_1015_end:
+.annotate "line", 349
+    find_lex $P1021, "$past"
+    find_lex $P1022, "$/"
+    unless_null $P1022, vivify_347
+    new $P1022, "Hash"
+  vivify_347:
+    set $P1023, $P1022["default_value"]
+    unless_null $P1023, vivify_348
+    new $P1023, "ResizablePMCArray"
+  vivify_348:
+    set $P1024, $P1023[0]
+    unless_null $P1024, vivify_349
+    new $P1024, "Hash"
+  vivify_349:
+    set $P1025, $P1024["EXPR"]
+    unless_null $P1025, vivify_350
+    new $P1025, "Undef"
+  vivify_350:
+    $P1026 = $P1025."ast"()
+    $P1021."viviself"($P1026)
+  if_1006_end:
+.annotate "line", 351
+    find_lex $P1028, "$past"
+    $P1029 = $P1028."viviself"()
+    if $P1029, unless_1027_end
+    get_global $P1030, "@BLOCK"
+    unless_null $P1030, vivify_351
+    new $P1030, "ResizablePMCArray"
+  vivify_351:
+    set $P1031, $P1030[0]
+    unless_null $P1031, vivify_352
+    new $P1031, "Undef"
+  vivify_352:
+    get_global $P1032, "@BLOCK"
+    unless_null $P1032, vivify_353
+    new $P1032, "ResizablePMCArray"
+  vivify_353:
+    set $P1033, $P1032[0]
+    unless_null $P1033, vivify_354
+    new $P1033, "Undef"
+  vivify_354:
+    $P1034 = $P1033."arity"()
+    set $N1035, $P1034
+    new $P1036, 'Float'
+    set $P1036, $N1035
+    add $P1037, $P1036, 1
+    $P1031."arity"($P1037)
+  unless_1027_end:
+.annotate "line", 352
+    find_lex $P1038, "$/"
+    find_lex $P1039, "$past"
+    $P1040 = $P1038."!make"($P1039)
+.annotate "line", 323
+    .return ($P1040)
+  control_959:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1041, exception, "payload"
+    .return ($P1041)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "param_var"  :subid("66_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1045
+.annotate "line", 355
+    new $P1044, 'ExceptionHandler'
+    set_addr $P1044, control_1043
+    $P1044."handle_types"(58)
+    push_eh $P1044
+    .lex "self", self
+    .lex "$/", param_1045
+.annotate "line", 356
+    new $P1046, "Undef"
+    .lex "$name", $P1046
+.annotate "line", 357
+    new $P1047, "Undef"
+    .lex "$past", $P1047
+.annotate "line", 356
+    find_lex $P1048, "$/"
+    set $S1049, $P1048
+    new $P1050, 'String'
+    set $P1050, $S1049
+    store_lex "$name", $P1050
+.annotate "line", 357
+    get_hll_global $P1051, ["PAST"], "Var"
+    find_lex $P1052, "$name"
+    find_lex $P1053, "$/"
+    $P1054 = $P1051."new"($P1052 :named("name"), "parameter" :named("scope"), 1 :named("isdecl"), $P1053 :named("node"))
+    store_lex "$past", $P1054
+.annotate "line", 359
+    get_global $P1055, "@BLOCK"
+    unless_null $P1055, vivify_355
+    new $P1055, "ResizablePMCArray"
+  vivify_355:
+    set $P1056, $P1055[0]
+    unless_null $P1056, vivify_356
+    new $P1056, "Undef"
+  vivify_356:
+    find_lex $P1057, "$name"
+    $P1056."symbol"($P1057, "lexical" :named("scope"))
+.annotate "line", 360
+    find_lex $P1058, "$/"
+    find_lex $P1059, "$past"
+    $P1060 = $P1058."!make"($P1059)
+.annotate "line", 355
+    .return ($P1060)
+  control_1043:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1061, exception, "payload"
+    .return ($P1061)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "named_param"  :subid("67_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1065
+.annotate "line", 363
+    new $P1064, 'ExceptionHandler'
+    set_addr $P1064, control_1063
+    $P1064."handle_types"(58)
+    push_eh $P1064
+    .lex "self", self
+    .lex "$/", param_1065
+.annotate "line", 364
+    new $P1066, "Undef"
+    .lex "$past", $P1066
+    find_lex $P1067, "$/"
+    unless_null $P1067, vivify_357
+    new $P1067, "Hash"
+  vivify_357:
+    set $P1068, $P1067["param_var"]
+    unless_null $P1068, vivify_358
+    new $P1068, "Undef"
+  vivify_358:
+    $P1069 = $P1068."ast"()
+    store_lex "$past", $P1069
+.annotate "line", 365
+    find_lex $P1070, "$past"
+    find_lex $P1071, "$/"
+    unless_null $P1071, vivify_359
+    new $P1071, "Hash"
+  vivify_359:
+    set $P1072, $P1071["param_var"]
+    unless_null $P1072, vivify_360
+    new $P1072, "Hash"
+  vivify_360:
+    set $P1073, $P1072["name"]
+    unless_null $P1073, vivify_361
+    new $P1073, "Undef"
+  vivify_361:
+    set $S1074, $P1073
+    $P1070."named"($S1074)
+.annotate "line", 366
+    find_lex $P1075, "$/"
+    find_lex $P1076, "$past"
+    $P1077 = $P1075."!make"($P1076)
+.annotate "line", 363
+    .return ($P1077)
+  control_1063:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1078, exception, "payload"
+    .return ($P1078)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "regex_declarator"  :subid("68_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1082
+    .param pmc param_1083 :optional
+    .param int has_param_1083 :opt_flag
+.annotate "line", 369
+    .const 'Sub' $P1153 = "70_1258051430.32314" 
+    capture_lex $P1153
+    .const 'Sub' $P1100 = "69_1258051430.32314" 
+    capture_lex $P1100
+    new $P1081, 'ExceptionHandler'
+    set_addr $P1081, control_1080
+    $P1081."handle_types"(58)
+    push_eh $P1081
+    .lex "self", self
+    .lex "$/", param_1082
+    if has_param_1083, optparam_362
+    new $P1084, "Undef"
+    set param_1083, $P1084
+  optparam_362:
+    .lex "$key", param_1083
+.annotate "line", 370
+    new $P1085, "ResizablePMCArray"
+    .lex "@MODIFIERS", $P1085
+.annotate "line", 373
+    new $P1086, "Undef"
+    .lex "$name", $P1086
+.annotate "line", 374
+    new $P1087, "Undef"
+    .lex "$past", $P1087
+.annotate "line", 370
+
+        $P1088 = get_hll_global ['Regex';'P6Regex';'Actions'], '@MODIFIERS'
+    
+    store_lex "@MODIFIERS", $P1088
+.annotate "line", 373
+    find_lex $P1089, "$/"
+    unless_null $P1089, vivify_363
+    new $P1089, "Hash"
+  vivify_363:
+    set $P1090, $P1089["deflongname"]
+    unless_null $P1090, vivify_364
+    new $P1090, "Undef"
+  vivify_364:
+    $P1091 = $P1090."ast"()
+    set $S1092, $P1091
+    new $P1093, 'String'
+    set $P1093, $S1092
+    store_lex "$name", $P1093
+    find_lex $P1094, "$past"
+.annotate "line", 375
+    find_lex $P1096, "$key"
+    set $S1097, $P1096
+    iseq $I1098, $S1097, "open"
+    if $I1098, if_1095
+.annotate "line", 388
+    find_lex $P1128, "$/"
+    unless_null $P1128, vivify_365
+    new $P1128, "Hash"
+  vivify_365:
+    set $P1129, $P1128["proto"]
+    unless_null $P1129, vivify_366
+    new $P1129, "Undef"
+  vivify_366:
+    if $P1129, if_1127
+.annotate "line", 415
+    .const 'Sub' $P1153 = "70_1258051430.32314" 
+    capture_lex $P1153
+    $P1153()
+    goto if_1127_end
+  if_1127:
+.annotate "line", 390
+    get_hll_global $P1130, ["PAST"], "Stmts"
+.annotate "line", 391
+    get_hll_global $P1131, ["PAST"], "Block"
+    find_lex $P1132, "$name"
+.annotate "line", 392
+    get_hll_global $P1133, ["PAST"], "Op"
+.annotate "line", 393
+    get_hll_global $P1134, ["PAST"], "Var"
+    $P1135 = $P1134."new"("self" :named("name"), "register" :named("scope"))
+    find_lex $P1136, "$name"
+    $P1137 = $P1133."new"($P1135, $P1136, "!protoregex" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 392
+    find_lex $P1138, "$/"
+    $P1139 = $P1131."new"($P1137, $P1132 :named("name"), "method" :named("blocktype"), 0 :named("lexical"), $P1138 :named("node"))
+.annotate "line", 402
+    get_hll_global $P1140, ["PAST"], "Block"
+    new $P1141, "String"
+    assign $P1141, "!PREFIX__"
+    find_lex $P1142, "$name"
+    concat $P1143, $P1141, $P1142
+.annotate "line", 403
+    get_hll_global $P1144, ["PAST"], "Op"
+.annotate "line", 404
+    get_hll_global $P1145, ["PAST"], "Var"
+    $P1146 = $P1145."new"("self" :named("name"), "register" :named("scope"))
+    find_lex $P1147, "$name"
+    $P1148 = $P1144."new"($P1146, $P1147, "!PREFIX__!protoregex" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 403
+    find_lex $P1149, "$/"
+    $P1150 = $P1140."new"($P1148, $P1143 :named("name"), "method" :named("blocktype"), 0 :named("lexical"), $P1149 :named("node"))
+.annotate "line", 402
+    $P1151 = $P1130."new"($P1139, $P1150)
+.annotate "line", 390
+    store_lex "$past", $P1151
+  if_1127_end:
+.annotate "line", 388
+    goto if_1095_end
+  if_1095:
+.annotate "line", 375
+    .const 'Sub' $P1100 = "69_1258051430.32314" 
+    capture_lex $P1100
+    $P1100()
+  if_1095_end:
+.annotate "line", 431
+    find_lex $P1179, "$/"
+    find_lex $P1180, "$past"
+    $P1181 = $P1179."!make"($P1180)
+.annotate "line", 369
+    .return ($P1181)
+  control_1080:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1182, exception, "payload"
+    .return ($P1182)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block1152"  :anon :subid("70_1258051430.32314") :outer("68_1258051430.32314")
+.annotate "line", 416
+    new $P1154, "Undef"
+    .lex "$rpast", $P1154
+.annotate "line", 417
+    new $P1155, "Hash"
+    .lex "%capnames", $P1155
+.annotate "line", 416
+    find_lex $P1156, "$/"
+    unless_null $P1156, vivify_367
+    new $P1156, "Hash"
+  vivify_367:
+    set $P1157, $P1156["p6regex"]
+    unless_null $P1157, vivify_368
+    new $P1157, "Undef"
+  vivify_368:
+    $P1158 = $P1157."ast"()
+    store_lex "$rpast", $P1158
+.annotate "line", 417
+    get_hll_global $P1159, ["Regex";"P6Regex";"Actions"], "capnames"
+    find_lex $P1160, "$rpast"
+    $P1161 = $P1159($P1160, 0)
+    store_lex "%capnames", $P1161
+.annotate "line", 418
+    new $P1162, "Integer"
+    assign $P1162, 0
+    find_lex $P1163, "%capnames"
+    unless_null $P1163, vivify_369
+    new $P1163, "Hash"
+    store_lex "%capnames", $P1163
+  vivify_369:
+    set $P1163[""], $P1162
+.annotate "line", 419
+    get_hll_global $P1164, ["PAST"], "Regex"
+    find_lex $P1165, "$rpast"
+.annotate "line", 421
+    get_hll_global $P1166, ["PAST"], "Regex"
+    $P1167 = $P1166."new"("pass" :named("pasttype"))
+    find_lex $P1168, "%capnames"
+    $P1169 = $P1164."new"($P1165, $P1167, "concat" :named("pasttype"), $P1168 :named("capnames"))
+.annotate "line", 419
+    store_lex "$rpast", $P1169
+.annotate "line", 425
+    get_global $P1170, "@BLOCK"
+    $P1171 = $P1170."shift"()
+    store_lex "$past", $P1171
+.annotate "line", 426
+    find_lex $P1172, "$past"
+    $P1172."blocktype"("method")
+.annotate "line", 427
+    find_lex $P1173, "$past"
+    find_lex $P1174, "$name"
+    $P1173."name"($P1174)
+.annotate "line", 428
+    find_lex $P1175, "$past"
+    find_lex $P1176, "$rpast"
+    $P1175."push"($P1176)
+.annotate "line", 429
+    find_lex $P1177, "@MODIFIERS"
+    $P1178 = $P1177."shift"()
+.annotate "line", 415
+    .return ($P1178)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block1099"  :anon :subid("69_1258051430.32314") :outer("68_1258051430.32314")
+.annotate "line", 376
+    new $P1101, "Hash"
+    .lex "%h", $P1101
+.annotate "line", 375
+    find_lex $P1102, "%h"
+.annotate "line", 377
+    find_lex $P1104, "$/"
+    unless_null $P1104, vivify_370
+    new $P1104, "Hash"
+  vivify_370:
+    set $P1105, $P1104["sym"]
+    unless_null $P1105, vivify_371
+    new $P1105, "Undef"
+  vivify_371:
+    set $S1106, $P1105
+    iseq $I1107, $S1106, "token"
+    unless $I1107, if_1103_end
+    new $P1108, "Integer"
+    assign $P1108, 1
+    find_lex $P1109, "%h"
+    unless_null $P1109, vivify_372
+    new $P1109, "Hash"
+    store_lex "%h", $P1109
+  vivify_372:
+    set $P1109["r"], $P1108
+  if_1103_end:
+.annotate "line", 378
+    find_lex $P1111, "$/"
+    unless_null $P1111, vivify_373
+    new $P1111, "Hash"
+  vivify_373:
+    set $P1112, $P1111["sym"]
+    unless_null $P1112, vivify_374
+    new $P1112, "Undef"
+  vivify_374:
+    set $S1113, $P1112
+    iseq $I1114, $S1113, "rule"
+    unless $I1114, if_1110_end
+    new $P1115, "Integer"
+    assign $P1115, 1
+    find_lex $P1116, "%h"
+    unless_null $P1116, vivify_375
+    new $P1116, "Hash"
+    store_lex "%h", $P1116
+  vivify_375:
+    set $P1116["r"], $P1115
+    new $P1117, "Integer"
+    assign $P1117, 1
+    find_lex $P1118, "%h"
+    unless_null $P1118, vivify_376
+    new $P1118, "Hash"
+    store_lex "%h", $P1118
+  vivify_376:
+    set $P1118["s"], $P1117
+  if_1110_end:
+.annotate "line", 379
+    find_lex $P1119, "@MODIFIERS"
+    find_lex $P1120, "%h"
+    $P1119."unshift"($P1120)
+.annotate "line", 380
+
+            $P0 = find_lex '$name'
+            set_hll_global ['Regex';'P6Regex';'Actions'], '$REGEXNAME', $P0
+        
+.annotate "line", 384
+    get_global $P1121, "@BLOCK"
+    unless_null $P1121, vivify_377
+    new $P1121, "ResizablePMCArray"
+  vivify_377:
+    set $P1122, $P1121[0]
+    unless_null $P1122, vivify_378
+    new $P1122, "Undef"
+  vivify_378:
+    $P1122."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
+.annotate "line", 385
+    get_global $P1123, "@BLOCK"
+    unless_null $P1123, vivify_379
+    new $P1123, "ResizablePMCArray"
+  vivify_379:
+    set $P1124, $P1123[0]
+    unless_null $P1124, vivify_380
+    new $P1124, "Undef"
+  vivify_380:
+    $P1124."symbol"("$/", "lexical" :named("scope"))
+.annotate "line", 386
+    new $P1125, "Exception"
+    set $P1125['type'], 58
+    new $P1126, "Integer"
+    assign $P1126, 0
+    setattribute $P1125, 'payload', $P1126
+    throw $P1125
+.annotate "line", 375
+    .return ()
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "dotty"  :subid("71_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1186
+.annotate "line", 435
+    new $P1185, 'ExceptionHandler'
+    set_addr $P1185, control_1184
+    $P1185."handle_types"(58)
+    push_eh $P1185
+    .lex "self", self
+    .lex "$/", param_1186
+.annotate "line", 436
+    new $P1187, "Undef"
+    .lex "$past", $P1187
+    find_lex $P1190, "$/"
+    unless_null $P1190, vivify_381
+    new $P1190, "Hash"
+  vivify_381:
+    set $P1191, $P1190["args"]
+    unless_null $P1191, vivify_382
+    new $P1191, "Undef"
+  vivify_382:
+    if $P1191, if_1189
+    get_hll_global $P1196, ["PAST"], "Op"
+    find_lex $P1197, "$/"
+    $P1198 = $P1196."new"($P1197 :named("node"))
+    set $P1188, $P1198
+    goto if_1189_end
+  if_1189:
+    find_lex $P1192, "$/"
+    unless_null $P1192, vivify_383
+    new $P1192, "Hash"
+  vivify_383:
+    set $P1193, $P1192["args"]
+    unless_null $P1193, vivify_384
+    new $P1193, "ResizablePMCArray"
+  vivify_384:
+    set $P1194, $P1193[0]
+    unless_null $P1194, vivify_385
+    new $P1194, "Undef"
+  vivify_385:
+    $P1195 = $P1194."ast"()
+    set $P1188, $P1195
+  if_1189_end:
+    store_lex "$past", $P1188
+.annotate "line", 437
+    find_lex $P1199, "$past"
+    find_lex $P1200, "$/"
+    unless_null $P1200, vivify_386
+    new $P1200, "Hash"
+  vivify_386:
+    set $P1201, $P1200["identifier"]
+    unless_null $P1201, vivify_387
+    new $P1201, "Undef"
+  vivify_387:
+    set $S1202, $P1201
+    $P1199."name"($S1202)
+.annotate "line", 438
+    find_lex $P1203, "$past"
+    $P1203."pasttype"("callmethod")
+.annotate "line", 439
+    find_lex $P1204, "$/"
+    find_lex $P1205, "$past"
+    $P1206 = $P1204."!make"($P1205)
+.annotate "line", 435
+    .return ($P1206)
+  control_1184:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1207, exception, "payload"
+    .return ($P1207)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<self>"  :subid("72_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1211
+.annotate "line", 444
+    new $P1210, 'ExceptionHandler'
+    set_addr $P1210, control_1209
+    $P1210."handle_types"(58)
+    push_eh $P1210
+    .lex "self", self
+    .lex "$/", param_1211
+.annotate "line", 445
+    find_lex $P1212, "$/"
+    get_hll_global $P1213, ["PAST"], "Var"
+    $P1214 = $P1213."new"("self" :named("name"))
+    $P1215 = $P1212."!make"($P1214)
+.annotate "line", 444
+    .return ($P1215)
+  control_1209:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1216, exception, "payload"
+    .return ($P1216)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<identifier>"  :subid("73_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1220
+.annotate "line", 448
+    new $P1219, 'ExceptionHandler'
+    set_addr $P1219, control_1218
+    $P1219."handle_types"(58)
+    push_eh $P1219
+    .lex "self", self
+    .lex "$/", param_1220
+.annotate "line", 449
+    new $P1221, "Undef"
+    .lex "$past", $P1221
+    find_lex $P1222, "$/"
+    unless_null $P1222, vivify_388
+    new $P1222, "Hash"
+  vivify_388:
+    set $P1223, $P1222["args"]
+    unless_null $P1223, vivify_389
+    new $P1223, "Undef"
+  vivify_389:
+    $P1224 = $P1223."ast"()
+    store_lex "$past", $P1224
+.annotate "line", 450
+    find_lex $P1225, "$past"
+    find_lex $P1226, "$/"
+    unless_null $P1226, vivify_390
+    new $P1226, "Hash"
+  vivify_390:
+    set $P1227, $P1226["identifier"]
+    unless_null $P1227, vivify_391
+    new $P1227, "Undef"
+  vivify_391:
+    set $S1228, $P1227
+    $P1225."name"($S1228)
+.annotate "line", 451
+    find_lex $P1229, "$/"
+    find_lex $P1230, "$past"
+    $P1231 = $P1229."!make"($P1230)
+.annotate "line", 448
+    .return ($P1231)
+  control_1218:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1232, exception, "payload"
+    .return ($P1232)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<name>"  :subid("74_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1236
+.annotate "line", 454
+    new $P1235, 'ExceptionHandler'
+    set_addr $P1235, control_1234
+    $P1235."handle_types"(58)
+    push_eh $P1235
+    .lex "self", self
+    .lex "$/", param_1236
+.annotate "line", 455
+    new $P1237, "Undef"
+    .lex "$ns", $P1237
+.annotate "line", 460
+    new $P1238, "Undef"
+    .lex "$name", $P1238
+.annotate "line", 461
+    new $P1239, "Undef"
+    .lex "$var", $P1239
+.annotate "line", 463
+    new $P1240, "Undef"
+    .lex "$past", $P1240
+.annotate "line", 455
+    find_lex $P1241, "$/"
+    unless_null $P1241, vivify_392
+    new $P1241, "Hash"
+  vivify_392:
+    set $P1242, $P1241["name"]
+    unless_null $P1242, vivify_393
+    new $P1242, "Hash"
+  vivify_393:
+    set $P1243, $P1242["identifier"]
+    unless_null $P1243, vivify_394
+    new $P1243, "Undef"
+  vivify_394:
+    store_lex "$ns", $P1243
+.annotate "line", 456
+
+               $P0 = find_lex '$ns'
+               $P1244 = clone $P0
+           
+    store_lex "$ns", $P1244
+.annotate "line", 460
+    find_lex $P1245, "$ns"
+    $P1246 = $P1245."pop"()
+    store_lex "$name", $P1246
+.annotate "line", 462
+    get_hll_global $P1247, ["PAST"], "Var"
+    find_lex $P1248, "$name"
+    set $S1249, $P1248
+    find_lex $P1250, "$ns"
+    $P1251 = $P1247."new"($S1249 :named("name"), $P1250 :named("namespace"), "package" :named("scope"))
+    store_lex "$var", $P1251
+.annotate "line", 463
+    find_lex $P1252, "$var"
+    store_lex "$past", $P1252
+.annotate "line", 464
+    find_lex $P1254, "$/"
+    unless_null $P1254, vivify_395
+    new $P1254, "Hash"
+  vivify_395:
+    set $P1255, $P1254["args"]
+    unless_null $P1255, vivify_396
+    new $P1255, "Undef"
+  vivify_396:
+    unless $P1255, if_1253_end
+.annotate "line", 465
+    find_lex $P1256, "$/"
+    unless_null $P1256, vivify_397
+    new $P1256, "Hash"
+  vivify_397:
+    set $P1257, $P1256["args"]
+    unless_null $P1257, vivify_398
+    new $P1257, "ResizablePMCArray"
+  vivify_398:
+    set $P1258, $P1257[0]
+    unless_null $P1258, vivify_399
+    new $P1258, "Undef"
+  vivify_399:
+    $P1259 = $P1258."ast"()
+    store_lex "$past", $P1259
+.annotate "line", 466
+    find_lex $P1260, "$past"
+    find_lex $P1261, "$var"
+    $P1260."unshift"($P1261)
+  if_1253_end:
+.annotate "line", 468
+    find_lex $P1262, "$/"
+    find_lex $P1263, "$past"
+    $P1264 = $P1262."!make"($P1263)
+.annotate "line", 454
+    .return ($P1264)
+  control_1234:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1265, exception, "payload"
+    .return ($P1265)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<pir::op>"  :subid("75_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1269
+.annotate "line", 471
+    new $P1268, 'ExceptionHandler'
+    set_addr $P1268, control_1267
+    $P1268."handle_types"(58)
+    push_eh $P1268
+    .lex "self", self
+    .lex "$/", param_1269
+.annotate "line", 472
+    new $P1270, "Undef"
+    .lex "$past", $P1270
+.annotate "line", 473
+    new $P1271, "Undef"
+    .lex "$pirop", $P1271
+.annotate "line", 472
+    find_lex $P1274, "$/"
+    unless_null $P1274, vivify_400
+    new $P1274, "Hash"
+  vivify_400:
+    set $P1275, $P1274["args"]
+    unless_null $P1275, vivify_401
+    new $P1275, "Undef"
+  vivify_401:
+    if $P1275, if_1273
+    get_hll_global $P1280, ["PAST"], "Op"
+    find_lex $P1281, "$/"
+    $P1282 = $P1280."new"($P1281 :named("node"))
+    set $P1272, $P1282
+    goto if_1273_end
+  if_1273:
+    find_lex $P1276, "$/"
+    unless_null $P1276, vivify_402
+    new $P1276, "Hash"
+  vivify_402:
+    set $P1277, $P1276["args"]
+    unless_null $P1277, vivify_403
+    new $P1277, "ResizablePMCArray"
+  vivify_403:
+    set $P1278, $P1277[0]
+    unless_null $P1278, vivify_404
+    new $P1278, "Undef"
+  vivify_404:
+    $P1279 = $P1278."ast"()
+    set $P1272, $P1279
+  if_1273_end:
+    store_lex "$past", $P1272
+.annotate "line", 473
+    find_lex $P1283, "$/"
+    unless_null $P1283, vivify_405
+    new $P1283, "Hash"
+  vivify_405:
+    set $P1284, $P1283["op"]
+    unless_null $P1284, vivify_406
+    new $P1284, "Undef"
+  vivify_406:
+    set $S1285, $P1284
+    new $P1286, 'String'
+    set $P1286, $S1285
+    store_lex "$pirop", $P1286
+.annotate "line", 474
+
+        $P0 = find_lex '$pirop'
+        $S0 = $P0
+        $P0 = split '__', $S0
+        $S0 = join ' ', $P0
+        $P1287 = box $S0
+    
+    store_lex "$pirop", $P1287
+.annotate "line", 481
+    find_lex $P1288, "$past"
+    find_lex $P1289, "$pirop"
+    $P1288."pirop"($P1289)
+.annotate "line", 482
+    find_lex $P1290, "$past"
+    $P1290."pasttype"("pirop")
+.annotate "line", 483
+    find_lex $P1291, "$/"
+    find_lex $P1292, "$past"
+    $P1293 = $P1291."!make"($P1292)
+.annotate "line", 471
+    .return ($P1293)
+  control_1267:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1294, exception, "payload"
+    .return ($P1294)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "args"  :subid("76_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1298
+.annotate "line", 486
+    new $P1297, 'ExceptionHandler'
+    set_addr $P1297, control_1296
+    $P1297."handle_types"(58)
+    push_eh $P1297
+    .lex "self", self
+    .lex "$/", param_1298
+    find_lex $P1299, "$/"
+    find_lex $P1300, "$/"
+    unless_null $P1300, vivify_407
+    new $P1300, "Hash"
+  vivify_407:
+    set $P1301, $P1300["arglist"]
+    unless_null $P1301, vivify_408
+    new $P1301, "Undef"
+  vivify_408:
+    $P1302 = $P1301."ast"()
+    $P1303 = $P1299."!make"($P1302)
+    .return ($P1303)
+  control_1296:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1304, exception, "payload"
+    .return ($P1304)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "arglist"  :subid("77_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1308
+.annotate "line", 488
+    .const 'Sub' $P1319 = "78_1258051430.32314" 
+    capture_lex $P1319
+    new $P1307, 'ExceptionHandler'
+    set_addr $P1307, control_1306
+    $P1307."handle_types"(58)
+    push_eh $P1307
+    .lex "self", self
+    .lex "$/", param_1308
+.annotate "line", 489
+    new $P1309, "Undef"
+    .lex "$past", $P1309
+.annotate "line", 497
+    new $P1310, "Undef"
+    .lex "$i", $P1310
+.annotate "line", 498
+    new $P1311, "Undef"
+    .lex "$n", $P1311
+.annotate "line", 489
+    get_hll_global $P1312, ["PAST"], "Op"
+    find_lex $P1313, "$/"
+    $P1314 = $P1312."new"("call" :named("pasttype"), $P1313 :named("node"))
+    store_lex "$past", $P1314
+.annotate "line", 490
+    find_lex $P1316, "$/"
+    unless_null $P1316, vivify_409
+    new $P1316, "Hash"
+  vivify_409:
+    set $P1317, $P1316["EXPR"]
+    unless_null $P1317, vivify_410
+    new $P1317, "Undef"
+  vivify_410:
+    unless $P1317, if_1315_end
+    .const 'Sub' $P1319 = "78_1258051430.32314" 
+    capture_lex $P1319
+    $P1319()
+  if_1315_end:
+.annotate "line", 497
+    new $P1351, "Integer"
+    assign $P1351, 0
+    store_lex "$i", $P1351
+.annotate "line", 498
+    find_lex $P1352, "$past"
+    $P1353 = $P1352."list"()
+    set $N1354, $P1353
+    new $P1355, 'Float'
+    set $P1355, $N1354
+    store_lex "$n", $P1355
+.annotate "line", 499
+    new $P1383, 'ExceptionHandler'
+    set_addr $P1383, loop1382_handler
+    $P1383."handle_types"(65, 67, 66)
+    push_eh $P1383
+  loop1382_test:
+    find_lex $P1356, "$i"
+    set $N1357, $P1356
+    find_lex $P1358, "$n"
+    set $N1359, $P1358
+    islt $I1360, $N1357, $N1359
+    unless $I1360, loop1382_done
+  loop1382_redo:
+.annotate "line", 500
+    find_lex $P1362, "$i"
+    set $I1363, $P1362
+    find_lex $P1364, "$past"
+    unless_null $P1364, vivify_414
+    new $P1364, "ResizablePMCArray"
+  vivify_414:
+    set $P1365, $P1364[$I1363]
+    unless_null $P1365, vivify_415
+    new $P1365, "Undef"
+  vivify_415:
+    $S1366 = $P1365."name"()
+    iseq $I1367, $S1366, "&prefix:<|>"
+    unless $I1367, if_1361_end
+.annotate "line", 501
+    find_lex $P1368, "$i"
+    set $I1369, $P1368
+    find_lex $P1370, "$past"
+    unless_null $P1370, vivify_416
+    new $P1370, "ResizablePMCArray"
+  vivify_416:
+    set $P1371, $P1370[$I1369]
+    unless_null $P1371, vivify_417
+    new $P1371, "ResizablePMCArray"
+  vivify_417:
+    set $P1372, $P1371[0]
+    unless_null $P1372, vivify_418
+    new $P1372, "Undef"
+  vivify_418:
+    find_lex $P1373, "$i"
+    set $I1374, $P1373
+    find_lex $P1375, "$past"
+    unless_null $P1375, vivify_419
+    new $P1375, "ResizablePMCArray"
+    store_lex "$past", $P1375
+  vivify_419:
+    set $P1375[$I1374], $P1372
+.annotate "line", 502
+    find_lex $P1376, "$i"
+    set $I1377, $P1376
+    find_lex $P1378, "$past"
+    unless_null $P1378, vivify_420
+    new $P1378, "ResizablePMCArray"
+  vivify_420:
+    set $P1379, $P1378[$I1377]
+    unless_null $P1379, vivify_421
+    new $P1379, "Undef"
+  vivify_421:
+    $P1379."flat"(1)
+  if_1361_end:
+.annotate "line", 500
+    find_lex $P1380, "$i"
+    clone $P1381, $P1380
+    inc $P1380
+  loop1382_next:
+.annotate "line", 499
+    goto loop1382_test
+  loop1382_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1384, exception, 'type'
+    eq $P1384, 65, loop1382_next
+    eq $P1384, 67, loop1382_redo
+  loop1382_done:
+    pop_eh 
+.annotate "line", 506
+    find_lex $P1385, "$/"
+    find_lex $P1386, "$past"
+    $P1387 = $P1385."!make"($P1386)
+.annotate "line", 488
+    .return ($P1387)
+  control_1306:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1388, exception, "payload"
+    .return ($P1388)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block1318"  :anon :subid("78_1258051430.32314") :outer("77_1258051430.32314")
+.annotate "line", 490
+    .const 'Sub' $P1340 = "79_1258051430.32314" 
+    capture_lex $P1340
+.annotate "line", 491
+    new $P1320, "Undef"
+    .lex "$expr", $P1320
+    find_lex $P1321, "$/"
+    unless_null $P1321, vivify_411
+    new $P1321, "Hash"
+  vivify_411:
+    set $P1322, $P1321["EXPR"]
+    unless_null $P1322, vivify_412
+    new $P1322, "Undef"
+  vivify_412:
+    $P1323 = $P1322."ast"()
+    store_lex "$expr", $P1323
+.annotate "line", 492
+    find_lex $P1328, "$expr"
+    $S1329 = $P1328."name"()
+    iseq $I1330, $S1329, "&infix:<,>"
+    if $I1330, if_1327
+    new $P1326, 'Integer'
+    set $P1326, $I1330
+    goto if_1327_end
+  if_1327:
+    find_lex $P1331, "$expr"
+    $P1332 = $P1331."named"()
+    isfalse $I1333, $P1332
+    new $P1326, 'Integer'
+    set $P1326, $I1333
+  if_1327_end:
+    if $P1326, if_1325
+.annotate "line", 495
+    find_lex $P1348, "$past"
+    find_lex $P1349, "$expr"
+    $P1350 = $P1348."push"($P1349)
+    set $P1324, $P1350
+.annotate "line", 492
+    goto if_1325_end
+  if_1325:
+.annotate "line", 493
+    find_lex $P1335, "$expr"
+    $P1336 = $P1335."list"()
+    defined $I1337, $P1336
+    unless $I1337, for_undef_413
+    iter $P1334, $P1336
+    new $P1346, 'ExceptionHandler'
+    set_addr $P1346, loop1345_handler
+    $P1346."handle_types"(65, 67, 66)
+    push_eh $P1346
+  loop1345_test:
+    unless $P1334, loop1345_done
+    shift $P1338, $P1334
+  loop1345_redo:
+    .const 'Sub' $P1340 = "79_1258051430.32314" 
+    capture_lex $P1340
+    $P1340($P1338)
+  loop1345_next:
+    goto loop1345_test
+  loop1345_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1347, exception, 'type'
+    eq $P1347, 65, loop1345_next
+    eq $P1347, 67, loop1345_redo
+  loop1345_done:
+    pop_eh 
+  for_undef_413:
+.annotate "line", 492
+    set $P1324, $P1334
+  if_1325_end:
+.annotate "line", 490
+    .return ($P1324)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "_block1339"  :anon :subid("79_1258051430.32314") :outer("78_1258051430.32314")
+    .param pmc param_1341
+.annotate "line", 493
+    .lex "$_", param_1341
+    find_lex $P1342, "$past"
+    find_lex $P1343, "$_"
+    $P1344 = $P1342."push"($P1343)
+    .return ($P1344)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "term:sym<value>"  :subid("80_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1392
+.annotate "line", 510
+    new $P1391, 'ExceptionHandler'
+    set_addr $P1391, control_1390
+    $P1391."handle_types"(58)
+    push_eh $P1391
+    .lex "self", self
+    .lex "$/", param_1392
+    find_lex $P1393, "$/"
+    find_lex $P1394, "$/"
+    unless_null $P1394, vivify_422
+    new $P1394, "Hash"
+  vivify_422:
+    set $P1395, $P1394["value"]
+    unless_null $P1395, vivify_423
+    new $P1395, "Undef"
+  vivify_423:
+    $P1396 = $P1395."ast"()
+    $P1397 = $P1393."!make"($P1396)
+    .return ($P1397)
+  control_1390:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1398, exception, "payload"
+    .return ($P1398)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "circumfix:sym<( )>"  :subid("81_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1402
+.annotate "line", 512
+    new $P1401, 'ExceptionHandler'
+    set_addr $P1401, control_1400
+    $P1401."handle_types"(58)
+    push_eh $P1401
+    .lex "self", self
+    .lex "$/", param_1402
+.annotate "line", 513
+    find_lex $P1403, "$/"
+.annotate "line", 514
+    find_lex $P1406, "$/"
+    unless_null $P1406, vivify_424
+    new $P1406, "Hash"
+  vivify_424:
+    set $P1407, $P1406["EXPR"]
+    unless_null $P1407, vivify_425
+    new $P1407, "Undef"
+  vivify_425:
+    if $P1407, if_1405
+.annotate "line", 515
+    get_hll_global $P1412, ["PAST"], "Op"
+    find_lex $P1413, "$/"
+    $P1414 = $P1412."new"("list" :named("pasttype"), $P1413 :named("node"))
+    set $P1404, $P1414
+.annotate "line", 514
+    goto if_1405_end
+  if_1405:
+    find_lex $P1408, "$/"
+    unless_null $P1408, vivify_426
+    new $P1408, "Hash"
+  vivify_426:
+    set $P1409, $P1408["EXPR"]
+    unless_null $P1409, vivify_427
+    new $P1409, "ResizablePMCArray"
+  vivify_427:
+    set $P1410, $P1409[0]
+    unless_null $P1410, vivify_428
+    new $P1410, "Undef"
+  vivify_428:
+    $P1411 = $P1410."ast"()
+    set $P1404, $P1411
+  if_1405_end:
+    $P1415 = $P1403."!make"($P1404)
+.annotate "line", 512
+    .return ($P1415)
+  control_1400:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1416, exception, "payload"
+    .return ($P1416)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "circumfix:sym<[ ]>"  :subid("82_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1420
+.annotate "line", 518
+    new $P1419, 'ExceptionHandler'
+    set_addr $P1419, control_1418
+    $P1419."handle_types"(58)
+    push_eh $P1419
+    .lex "self", self
+    .lex "$/", param_1420
+.annotate "line", 519
+    new $P1421, "Undef"
+    .lex "$past", $P1421
+.annotate "line", 518
+    find_lex $P1422, "$past"
+.annotate "line", 520
+    find_lex $P1424, "$/"
+    unless_null $P1424, vivify_429
+    new $P1424, "Hash"
+  vivify_429:
+    set $P1425, $P1424["EXPR"]
+    unless_null $P1425, vivify_430
+    new $P1425, "Undef"
+  vivify_430:
+    if $P1425, if_1423
+.annotate "line", 527
+    get_hll_global $P1437, ["PAST"], "Op"
+    $P1438 = $P1437."new"("list" :named("pasttype"))
+    store_lex "$past", $P1438
+.annotate "line", 526
+    goto if_1423_end
+  if_1423:
+.annotate "line", 521
+    find_lex $P1426, "$/"
+    unless_null $P1426, vivify_431
+    new $P1426, "Hash"
+  vivify_431:
+    set $P1427, $P1426["EXPR"]
+    unless_null $P1427, vivify_432
+    new $P1427, "ResizablePMCArray"
+  vivify_432:
+    set $P1428, $P1427[0]
+    unless_null $P1428, vivify_433
+    new $P1428, "Undef"
+  vivify_433:
+    $P1429 = $P1428."ast"()
+    store_lex "$past", $P1429
+.annotate "line", 522
+    find_lex $P1431, "$past"
+    $S1432 = $P1431."name"()
+    isne $I1433, $S1432, "&infix:<,>"
+    unless $I1433, if_1430_end
+.annotate "line", 523
+    get_hll_global $P1434, ["PAST"], "Op"
+    find_lex $P1435, "$past"
+    $P1436 = $P1434."new"($P1435, "list" :named("pasttype"))
+    store_lex "$past", $P1436
+  if_1430_end:
+  if_1423_end:
+.annotate "line", 529
+    find_lex $P1439, "$past"
+    $P1439."name"("&circumfix:<[ ]>")
+.annotate "line", 530
+    find_lex $P1440, "$/"
+    find_lex $P1441, "$past"
+    $P1442 = $P1440."!make"($P1441)
+.annotate "line", 518
+    .return ($P1442)
+  control_1418:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1443, exception, "payload"
+    .return ($P1443)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "circumfix:sym<ang>"  :subid("83_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1447
+.annotate "line", 533
+    new $P1446, 'ExceptionHandler'
+    set_addr $P1446, control_1445
+    $P1446."handle_types"(58)
+    push_eh $P1446
+    .lex "self", self
+    .lex "$/", param_1447
+    find_lex $P1448, "$/"
+    find_lex $P1449, "$/"
+    unless_null $P1449, vivify_434
+    new $P1449, "Hash"
+  vivify_434:
+    set $P1450, $P1449["quote_EXPR"]
+    unless_null $P1450, vivify_435
+    new $P1450, "Undef"
+  vivify_435:
+    $P1451 = $P1450."ast"()
+    $P1452 = $P1448."!make"($P1451)
+    .return ($P1452)
+  control_1445:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1453, exception, "payload"
+    .return ($P1453)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "circumfix:sym<{ }>"  :subid("84_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1457
+.annotate "line", 535
+    new $P1456, 'ExceptionHandler'
+    set_addr $P1456, control_1455
+    $P1456."handle_types"(58)
+    push_eh $P1456
+    .lex "self", self
+    .lex "$/", param_1457
+.annotate "line", 536
+    find_lex $P1458, "$/"
+    find_lex $P1461, "$/"
+    unless_null $P1461, vivify_436
+    new $P1461, "Hash"
+  vivify_436:
+    set $P1462, $P1461["pblock"]
+    unless_null $P1462, vivify_437
+    new $P1462, "Hash"
+  vivify_437:
+    set $P1463, $P1462["blockoid"]
+    unless_null $P1463, vivify_438
+    new $P1463, "Hash"
+  vivify_438:
+    set $P1464, $P1463["statementlist"]
+    unless_null $P1464, vivify_439
+    new $P1464, "Hash"
+  vivify_439:
+    set $P1465, $P1464["statement"]
+    unless_null $P1465, vivify_440
+    new $P1465, "Undef"
+  vivify_440:
+    set $N1466, $P1465
+    new $P1467, "Integer"
+    assign $P1467, 0
+    set $N1468, $P1467
+    isgt $I1469, $N1466, $N1468
+    if $I1469, if_1460
+.annotate "line", 538
+    get_hll_global $P1473, ["PAST"], "Op"
+    find_lex $P1474, "$/"
+    $P1475 = $P1473."new"("    %r = new [\"Hash\"]" :named("inline"), $P1474 :named("node"))
+    set $P1459, $P1475
+.annotate "line", 536
+    goto if_1460_end
+  if_1460:
+.annotate "line", 537
+    find_lex $P1470, "$/"
+    unless_null $P1470, vivify_441
+    new $P1470, "Hash"
+  vivify_441:
+    set $P1471, $P1470["pblock"]
+    unless_null $P1471, vivify_442
+    new $P1471, "Undef"
+  vivify_442:
+    $P1472 = $P1471."ast"()
+    set $P1459, $P1472
+  if_1460_end:
+    $P1476 = $P1458."!make"($P1459)
+.annotate "line", 535
+    .return ($P1476)
+  control_1455:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1477, exception, "payload"
+    .return ($P1477)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "circumfix:sym<sigil>"  :subid("85_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1481
+.annotate "line", 541
+    new $P1480, 'ExceptionHandler'
+    set_addr $P1480, control_1479
+    $P1480."handle_types"(58)
+    push_eh $P1480
+    .lex "self", self
+    .lex "$/", param_1481
+.annotate "line", 542
+    new $P1482, "Undef"
+    .lex "$name", $P1482
+    find_lex $P1485, "$/"
+    unless_null $P1485, vivify_443
+    new $P1485, "Hash"
+  vivify_443:
+    set $P1486, $P1485["sigil"]
+    unless_null $P1486, vivify_444
+    new $P1486, "Undef"
+  vivify_444:
+    set $S1487, $P1486
+    iseq $I1488, $S1487, "@"
+    if $I1488, if_1484
+.annotate "line", 543
+    find_lex $P1492, "$/"
+    unless_null $P1492, vivify_445
+    new $P1492, "Hash"
+  vivify_445:
+    set $P1493, $P1492["sigil"]
+    unless_null $P1493, vivify_446
+    new $P1493, "Undef"
+  vivify_446:
+    set $S1494, $P1493
+    iseq $I1495, $S1494, "%"
+    if $I1495, if_1491
+    new $P1497, "String"
+    assign $P1497, "item"
+    set $P1490, $P1497
+    goto if_1491_end
+  if_1491:
+    new $P1496, "String"
+    assign $P1496, "hash"
+    set $P1490, $P1496
+  if_1491_end:
+    set $P1483, $P1490
+.annotate "line", 542
+    goto if_1484_end
+  if_1484:
+    new $P1489, "String"
+    assign $P1489, "list"
+    set $P1483, $P1489
+  if_1484_end:
+    store_lex "$name", $P1483
+.annotate "line", 545
+    find_lex $P1498, "$/"
+    get_hll_global $P1499, ["PAST"], "Op"
+    find_lex $P1500, "$name"
+    find_lex $P1501, "$/"
+    unless_null $P1501, vivify_447
+    new $P1501, "Hash"
+  vivify_447:
+    set $P1502, $P1501["semilist"]
+    unless_null $P1502, vivify_448
+    new $P1502, "Undef"
+  vivify_448:
+    $P1503 = $P1502."ast"()
+    $P1504 = $P1499."new"($P1503, "callmethod" :named("pasttype"), $P1500 :named("name"))
+    $P1505 = $P1498."!make"($P1504)
+.annotate "line", 541
+    .return ($P1505)
+  control_1479:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1506, exception, "payload"
+    .return ($P1506)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "semilist"  :subid("86_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1510
+.annotate "line", 548
+    new $P1509, 'ExceptionHandler'
+    set_addr $P1509, control_1508
+    $P1509."handle_types"(58)
+    push_eh $P1509
+    .lex "self", self
+    .lex "$/", param_1510
+    find_lex $P1511, "$/"
+    find_lex $P1512, "$/"
+    unless_null $P1512, vivify_449
+    new $P1512, "Hash"
+  vivify_449:
+    set $P1513, $P1512["statement"]
+    unless_null $P1513, vivify_450
+    new $P1513, "Undef"
+  vivify_450:
+    $P1514 = $P1513."ast"()
+    $P1515 = $P1511."!make"($P1514)
+    .return ($P1515)
+  control_1508:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1516, exception, "payload"
+    .return ($P1516)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postcircumfix:sym<[ ]>"  :subid("87_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1520
+.annotate "line", 550
+    new $P1519, 'ExceptionHandler'
+    set_addr $P1519, control_1518
+    $P1519."handle_types"(58)
+    push_eh $P1519
+    .lex "self", self
+    .lex "$/", param_1520
+.annotate "line", 551
+    find_lex $P1521, "$/"
+    get_hll_global $P1522, ["PAST"], "Var"
+    find_lex $P1523, "$/"
+    unless_null $P1523, vivify_451
+    new $P1523, "Hash"
+  vivify_451:
+    set $P1524, $P1523["EXPR"]
+    unless_null $P1524, vivify_452
+    new $P1524, "Undef"
+  vivify_452:
+    $P1525 = $P1524."ast"()
+    $P1526 = $P1522."new"($P1525, "keyed_int" :named("scope"), "Undef" :named("viviself"), "ResizablePMCArray" :named("vivibase"))
+    $P1527 = $P1521."!make"($P1526)
+.annotate "line", 550
+    .return ($P1527)
+  control_1518:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1528, exception, "payload"
+    .return ($P1528)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postcircumfix:sym<{ }>"  :subid("88_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1532
+.annotate "line", 556
+    new $P1531, 'ExceptionHandler'
+    set_addr $P1531, control_1530
+    $P1531."handle_types"(58)
+    push_eh $P1531
+    .lex "self", self
+    .lex "$/", param_1532
+.annotate "line", 557
+    find_lex $P1533, "$/"
+    get_hll_global $P1534, ["PAST"], "Var"
+    find_lex $P1535, "$/"
+    unless_null $P1535, vivify_453
+    new $P1535, "Hash"
+  vivify_453:
+    set $P1536, $P1535["EXPR"]
+    unless_null $P1536, vivify_454
+    new $P1536, "Undef"
+  vivify_454:
+    $P1537 = $P1536."ast"()
+    $P1538 = $P1534."new"($P1537, "keyed" :named("scope"), "Undef" :named("viviself"), "Hash" :named("vivibase"))
+    $P1539 = $P1533."!make"($P1538)
+.annotate "line", 556
+    .return ($P1539)
+  control_1530:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1540, exception, "payload"
+    .return ($P1540)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postcircumfix:sym<ang>"  :subid("89_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1544
+.annotate "line", 562
+    new $P1543, 'ExceptionHandler'
+    set_addr $P1543, control_1542
+    $P1543."handle_types"(58)
+    push_eh $P1543
+    .lex "self", self
+    .lex "$/", param_1544
+.annotate "line", 563
+    find_lex $P1545, "$/"
+    get_hll_global $P1546, ["PAST"], "Var"
+    find_lex $P1547, "$/"
+    unless_null $P1547, vivify_455
+    new $P1547, "Hash"
+  vivify_455:
+    set $P1548, $P1547["quote_EXPR"]
+    unless_null $P1548, vivify_456
+    new $P1548, "Undef"
+  vivify_456:
+    $P1549 = $P1548."ast"()
+    $P1550 = $P1546."new"($P1549, "keyed" :named("scope"), "Undef" :named("viviself"), "Hash" :named("vivibase"))
+    $P1551 = $P1545."!make"($P1550)
+.annotate "line", 562
+    .return ($P1551)
+  control_1542:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1552, exception, "payload"
+    .return ($P1552)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postcircumfix:sym<( )>"  :subid("90_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1556
+.annotate "line", 568
+    new $P1555, 'ExceptionHandler'
+    set_addr $P1555, control_1554
+    $P1555."handle_types"(58)
+    push_eh $P1555
+    .lex "self", self
+    .lex "$/", param_1556
+.annotate "line", 569
+    find_lex $P1557, "$/"
+    find_lex $P1558, "$/"
+    unless_null $P1558, vivify_457
+    new $P1558, "Hash"
+  vivify_457:
+    set $P1559, $P1558["arglist"]
+    unless_null $P1559, vivify_458
+    new $P1559, "Undef"
+  vivify_458:
+    $P1560 = $P1559."ast"()
+    $P1561 = $P1557."!make"($P1560)
+.annotate "line", 568
+    .return ($P1561)
+  control_1554:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1562, exception, "payload"
+    .return ($P1562)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "value"  :subid("91_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1566
+.annotate "line", 572
+    new $P1565, 'ExceptionHandler'
+    set_addr $P1565, control_1564
+    $P1565."handle_types"(58)
+    push_eh $P1565
+    .lex "self", self
+    .lex "$/", param_1566
+.annotate "line", 573
+    new $P1567, "Undef"
+    .lex "$past", $P1567
+.annotate "line", 574
+    find_lex $P1570, "$/"
+    unless_null $P1570, vivify_459
+    new $P1570, "Hash"
+  vivify_459:
+    set $P1571, $P1570["quote"]
+    unless_null $P1571, vivify_460
+    new $P1571, "Undef"
+  vivify_460:
+    if $P1571, if_1569
+.annotate "line", 575
+    get_hll_global $P1575, ["PAST"], "Val"
+.annotate "line", 577
+    find_lex $P1578, "$/"
+    unless_null $P1578, vivify_461
+    new $P1578, "Hash"
+  vivify_461:
+    set $P1579, $P1578["dec_number"]
+    unless_null $P1579, vivify_462
+    new $P1579, "Undef"
+  vivify_462:
+    if $P1579, if_1577
+.annotate "line", 578
+    find_lex $P1583, "$/"
+    unless_null $P1583, vivify_463
+    new $P1583, "Hash"
+  vivify_463:
+    set $P1584, $P1583["integer"]
+    unless_null $P1584, vivify_464
+    new $P1584, "Undef"
+  vivify_464:
+    $P1585 = $P1584."ast"()
+    set $P1576, $P1585
+.annotate "line", 577
+    goto if_1577_end
+  if_1577:
+    find_lex $P1580, "$/"
+    unless_null $P1580, vivify_465
+    new $P1580, "Hash"
+  vivify_465:
+    set $P1581, $P1580["dec_number"]
+    unless_null $P1581, vivify_466
+    new $P1581, "Undef"
+  vivify_466:
+    $P1582 = $P1581."ast"()
+    set $P1576, $P1582
+  if_1577_end:
+    $P1586 = $P1575."new"($P1576 :named("value"))
+.annotate "line", 575
+    set $P1568, $P1586
+.annotate "line", 574
+    goto if_1569_end
+  if_1569:
+    find_lex $P1572, "$/"
+    unless_null $P1572, vivify_467
+    new $P1572, "Hash"
+  vivify_467:
+    set $P1573, $P1572["quote"]
+    unless_null $P1573, vivify_468
+    new $P1573, "Undef"
+  vivify_468:
+    $P1574 = $P1573."ast"()
+    set $P1568, $P1574
+  if_1569_end:
+    store_lex "$past", $P1568
+.annotate "line", 580
+    find_lex $P1587, "$/"
+    find_lex $P1588, "$past"
+    $P1589 = $P1587."!make"($P1588)
+.annotate "line", 572
+    .return ($P1589)
+  control_1564:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1590, exception, "payload"
+    .return ($P1590)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote:sym<apos>"  :subid("92_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1594
+.annotate "line", 583
+    new $P1593, 'ExceptionHandler'
+    set_addr $P1593, control_1592
+    $P1593."handle_types"(58)
+    push_eh $P1593
+    .lex "self", self
+    .lex "$/", param_1594
+    find_lex $P1595, "$/"
+    find_lex $P1596, "$/"
+    unless_null $P1596, vivify_469
+    new $P1596, "Hash"
+  vivify_469:
+    set $P1597, $P1596["quote_EXPR"]
+    unless_null $P1597, vivify_470
+    new $P1597, "Undef"
+  vivify_470:
+    $P1598 = $P1597."ast"()
+    $P1599 = $P1595."!make"($P1598)
+    .return ($P1599)
+  control_1592:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1600, exception, "payload"
+    .return ($P1600)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote:sym<dblq>"  :subid("93_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1604
+.annotate "line", 584
+    new $P1603, 'ExceptionHandler'
+    set_addr $P1603, control_1602
+    $P1603."handle_types"(58)
+    push_eh $P1603
+    .lex "self", self
+    .lex "$/", param_1604
+    find_lex $P1605, "$/"
+    find_lex $P1606, "$/"
+    unless_null $P1606, vivify_471
+    new $P1606, "Hash"
+  vivify_471:
+    set $P1607, $P1606["quote_EXPR"]
+    unless_null $P1607, vivify_472
+    new $P1607, "Undef"
+  vivify_472:
+    $P1608 = $P1607."ast"()
+    $P1609 = $P1605."!make"($P1608)
+    .return ($P1609)
+  control_1602:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1610, exception, "payload"
+    .return ($P1610)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote:sym<qq>"  :subid("94_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1614
+.annotate "line", 585
+    new $P1613, 'ExceptionHandler'
+    set_addr $P1613, control_1612
+    $P1613."handle_types"(58)
+    push_eh $P1613
+    .lex "self", self
+    .lex "$/", param_1614
+    find_lex $P1615, "$/"
+    find_lex $P1616, "$/"
+    unless_null $P1616, vivify_473
+    new $P1616, "Hash"
+  vivify_473:
+    set $P1617, $P1616["quote_EXPR"]
+    unless_null $P1617, vivify_474
+    new $P1617, "Undef"
+  vivify_474:
+    $P1618 = $P1617."ast"()
+    $P1619 = $P1615."!make"($P1618)
+    .return ($P1619)
+  control_1612:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1620, exception, "payload"
+    .return ($P1620)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote:sym<q>"  :subid("95_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1624
+.annotate "line", 586
+    new $P1623, 'ExceptionHandler'
+    set_addr $P1623, control_1622
+    $P1623."handle_types"(58)
+    push_eh $P1623
+    .lex "self", self
+    .lex "$/", param_1624
+    find_lex $P1625, "$/"
+    find_lex $P1626, "$/"
+    unless_null $P1626, vivify_475
+    new $P1626, "Hash"
+  vivify_475:
+    set $P1627, $P1626["quote_EXPR"]
+    unless_null $P1627, vivify_476
+    new $P1627, "Undef"
+  vivify_476:
+    $P1628 = $P1627."ast"()
+    $P1629 = $P1625."!make"($P1628)
+    .return ($P1629)
+  control_1622:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1630, exception, "payload"
+    .return ($P1630)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote:sym<Q>"  :subid("96_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1634
+.annotate "line", 587
+    new $P1633, 'ExceptionHandler'
+    set_addr $P1633, control_1632
+    $P1633."handle_types"(58)
+    push_eh $P1633
+    .lex "self", self
+    .lex "$/", param_1634
+    find_lex $P1635, "$/"
+    find_lex $P1636, "$/"
+    unless_null $P1636, vivify_477
+    new $P1636, "Hash"
+  vivify_477:
+    set $P1637, $P1636["quote_EXPR"]
+    unless_null $P1637, vivify_478
+    new $P1637, "Undef"
+  vivify_478:
+    $P1638 = $P1637."ast"()
+    $P1639 = $P1635."!make"($P1638)
+    .return ($P1639)
+  control_1632:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1640, exception, "payload"
+    .return ($P1640)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote:sym<Q:PIR>"  :subid("97_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1644
+.annotate "line", 588
+    new $P1643, 'ExceptionHandler'
+    set_addr $P1643, control_1642
+    $P1643."handle_types"(58)
+    push_eh $P1643
+    .lex "self", self
+    .lex "$/", param_1644
+.annotate "line", 589
+    find_lex $P1645, "$/"
+    get_hll_global $P1646, ["PAST"], "Op"
+    find_lex $P1647, "$/"
+    unless_null $P1647, vivify_479
+    new $P1647, "Hash"
+  vivify_479:
+    set $P1648, $P1647["quote_EXPR"]
+    unless_null $P1648, vivify_480
+    new $P1648, "Undef"
+  vivify_480:
+    $P1649 = $P1648."ast"()
+    $P1650 = $P1649."value"()
+    find_lex $P1651, "$/"
+    $P1652 = $P1646."new"($P1650 :named("inline"), "inline" :named("pasttype"), $P1651 :named("node"))
+    $P1653 = $P1645."!make"($P1652)
+.annotate "line", 588
+    .return ($P1653)
+  control_1642:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1654, exception, "payload"
+    .return ($P1654)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote_escape:sym<$>"  :subid("98_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1658
+.annotate "line", 594
+    new $P1657, 'ExceptionHandler'
+    set_addr $P1657, control_1656
+    $P1657."handle_types"(58)
+    push_eh $P1657
+    .lex "self", self
+    .lex "$/", param_1658
+    find_lex $P1659, "$/"
+    find_lex $P1660, "$/"
+    unless_null $P1660, vivify_481
+    new $P1660, "Hash"
+  vivify_481:
+    set $P1661, $P1660["variable"]
+    unless_null $P1661, vivify_482
+    new $P1661, "Undef"
+  vivify_482:
+    $P1662 = $P1661."ast"()
+    $P1663 = $P1659."!make"($P1662)
+    .return ($P1663)
+  control_1656:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1664, exception, "payload"
+    .return ($P1664)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "quote_escape:sym<{ }>"  :subid("99_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1668
+.annotate "line", 595
+    new $P1667, 'ExceptionHandler'
+    set_addr $P1667, control_1666
+    $P1667."handle_types"(58)
+    push_eh $P1667
+    .lex "self", self
+    .lex "$/", param_1668
+.annotate "line", 596
+    find_lex $P1669, "$/"
+    get_hll_global $P1670, ["PAST"], "Op"
+.annotate "line", 597
+    find_lex $P1671, "$/"
+    unless_null $P1671, vivify_483
+    new $P1671, "Hash"
+  vivify_483:
+    set $P1672, $P1671["block"]
+    unless_null $P1672, vivify_484
+    new $P1672, "Undef"
+  vivify_484:
+    $P1673 = $P1672."ast"()
+    $P1674 = "block_immediate"($P1673)
+    find_lex $P1675, "$/"
+    $P1676 = $P1670."new"($P1674, "set S*" :named("pirop"), $P1675 :named("node"))
+.annotate "line", 596
+    $P1677 = $P1669."!make"($P1676)
+.annotate "line", 595
+    .return ($P1677)
+  control_1666:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1678, exception, "payload"
+    .return ($P1678)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "nulltermish"  :subid("100_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1682
+.annotate "line", 603
+    new $P1681, 'ExceptionHandler'
+    set_addr $P1681, control_1680
+    $P1681."handle_types"(58)
+    push_eh $P1681
+    .lex "self", self
+    .lex "$/", param_1682
+.annotate "line", 604
+    find_lex $P1683, "$/"
+    find_lex $P1686, "$/"
+    unless_null $P1686, vivify_485
+    new $P1686, "Hash"
+  vivify_485:
+    set $P1687, $P1686["term"]
+    unless_null $P1687, vivify_486
+    new $P1687, "Undef"
+  vivify_486:
+    if $P1687, if_1685
+    new $P1691, "Integer"
+    assign $P1691, 0
+    set $P1684, $P1691
+    goto if_1685_end
+  if_1685:
+    find_lex $P1688, "$/"
+    unless_null $P1688, vivify_487
+    new $P1688, "Hash"
+  vivify_487:
+    set $P1689, $P1688["term"]
+    unless_null $P1689, vivify_488
+    new $P1689, "Undef"
+  vivify_488:
+    $P1690 = $P1689."ast"()
+    set $P1684, $P1690
+  if_1685_end:
+    $P1692 = $P1683."!make"($P1684)
+.annotate "line", 603
+    .return ($P1692)
+  control_1680:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1693, exception, "payload"
+    .return ($P1693)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postfix:sym<.>"  :subid("101_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1697
+.annotate "line", 607
+    new $P1696, 'ExceptionHandler'
+    set_addr $P1696, control_1695
+    $P1696."handle_types"(58)
+    push_eh $P1696
+    .lex "self", self
+    .lex "$/", param_1697
+    find_lex $P1698, "$/"
+    find_lex $P1699, "$/"
+    unless_null $P1699, vivify_489
+    new $P1699, "Hash"
+  vivify_489:
+    set $P1700, $P1699["dotty"]
+    unless_null $P1700, vivify_490
+    new $P1700, "Undef"
+  vivify_490:
+    $P1701 = $P1700."ast"()
+    $P1702 = $P1698."!make"($P1701)
+    .return ($P1702)
+  control_1695:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1703, exception, "payload"
+    .return ($P1703)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postfix:sym<++>"  :subid("102_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1707
+.annotate "line", 609
+    new $P1706, 'ExceptionHandler'
+    set_addr $P1706, control_1705
+    $P1706."handle_types"(58)
+    push_eh $P1706
+    .lex "self", self
+    .lex "$/", param_1707
+.annotate "line", 610
+    find_lex $P1708, "$/"
+    get_hll_global $P1709, ["PAST"], "Op"
+.annotate "line", 611
+    new $P1710, "ResizablePMCArray"
+    push $P1710, "    clone %r, %0"
+    push $P1710, "    inc %0"
+    $P1711 = $P1709."new"("postfix:<++>" :named("name"), $P1710 :named("inline"), "inline" :named("pasttype"))
+.annotate "line", 610
+    $P1712 = $P1708."!make"($P1711)
+.annotate "line", 609
+    .return ($P1712)
+  control_1705:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1713, exception, "payload"
+    .return ($P1713)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postfix:sym<-->"  :subid("103_1258051430.32314") :method :outer("11_1258051430.32314")
+    .param pmc param_1717
+.annotate "line", 615
+    new $P1716, 'ExceptionHandler'
+    set_addr $P1716, control_1715
+    $P1716."handle_types"(58)
+    push_eh $P1716
+    .lex "self", self
+    .lex "$/", param_1717
+.annotate "line", 616
+    find_lex $P1718, "$/"
+    get_hll_global $P1719, ["PAST"], "Op"
+.annotate "line", 617
+    new $P1720, "ResizablePMCArray"
+    push $P1720, "    clone %r, %0"
+    push $P1720, "    dec %0"
+    $P1721 = $P1719."new"("postfix:<-->" :named("name"), $P1720 :named("inline"), "inline" :named("pasttype"))
+.annotate "line", 616
+    $P1722 = $P1718."!make"($P1721)
+.annotate "line", 615
+    .return ($P1722)
+  control_1715:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1723, exception, "payload"
+    .return ($P1723)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "_block1724"  :subid("104_1258051430.32314") :outer("11_1258051430.32314")
+.annotate "line", 622
+    .const 'Sub' $P1760 = "108_1258051430.32314" 
+    capture_lex $P1760
+    .const 'Sub' $P1750 = "107_1258051430.32314" 
+    capture_lex $P1750
+    .const 'Sub' $P1740 = "106_1258051430.32314" 
+    capture_lex $P1740
+    .const 'Sub' $P1726 = "105_1258051430.32314" 
+    capture_lex $P1726
+.annotate "line", 633
+    .const 'Sub' $P1760 = "108_1258051430.32314" 
+    capture_lex $P1760
+.annotate "line", 622
+    .return ($P1760)
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "metachar:sym<:my>"  :subid("105_1258051430.32314") :method :outer("104_1258051430.32314")
+    .param pmc param_1729
+.annotate "line", 624
+    new $P1728, 'ExceptionHandler'
+    set_addr $P1728, control_1727
+    $P1728."handle_types"(58)
+    push_eh $P1728
+    .lex "self", self
+    .lex "$/", param_1729
+.annotate "line", 625
+    new $P1730, "Undef"
+    .lex "$past", $P1730
+    find_lex $P1731, "$/"
+    unless_null $P1731, vivify_491
+    new $P1731, "Hash"
+  vivify_491:
+    set $P1732, $P1731["statement"]
+    unless_null $P1732, vivify_492
+    new $P1732, "Undef"
+  vivify_492:
+    $P1733 = $P1732."ast"()
+    store_lex "$past", $P1733
+.annotate "line", 626
+    find_lex $P1734, "$/"
+    get_hll_global $P1735, ["PAST"], "Regex"
+    find_lex $P1736, "$past"
+    $P1737 = $P1735."new"($P1736, "pastnode" :named("pasttype"))
+    $P1738 = $P1734."!make"($P1737)
+.annotate "line", 624
+    .return ($P1738)
+  control_1727:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1739, exception, "payload"
+    .return ($P1739)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "metachar:sym<{ }>"  :subid("106_1258051430.32314") :method :outer("104_1258051430.32314")
+    .param pmc param_1743
+.annotate "line", 629
+    new $P1742, 'ExceptionHandler'
+    set_addr $P1742, control_1741
+    $P1742."handle_types"(58)
+    push_eh $P1742
+    .lex "self", self
+    .lex "$/", param_1743
+    find_lex $P1744, "$/"
+    find_lex $P1745, "$/"
+    unless_null $P1745, vivify_493
+    new $P1745, "Hash"
+  vivify_493:
+    set $P1746, $P1745["codeblock"]
+    unless_null $P1746, vivify_494
+    new $P1746, "Undef"
+  vivify_494:
+    $P1747 = $P1746."ast"()
+    $P1748 = $P1744."!make"($P1747)
+    .return ($P1748)
+  control_1741:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1749, exception, "payload"
+    .return ($P1749)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "assertion:sym<{ }>"  :subid("107_1258051430.32314") :method :outer("104_1258051430.32314")
+    .param pmc param_1753
+.annotate "line", 631
+    new $P1752, 'ExceptionHandler'
+    set_addr $P1752, control_1751
+    $P1752."handle_types"(58)
+    push_eh $P1752
+    .lex "self", self
+    .lex "$/", param_1753
+    find_lex $P1754, "$/"
+    find_lex $P1755, "$/"
+    unless_null $P1755, vivify_495
+    new $P1755, "Hash"
+  vivify_495:
+    set $P1756, $P1755["codeblock"]
+    unless_null $P1756, vivify_496
+    new $P1756, "Undef"
+  vivify_496:
+    $P1757 = $P1756."ast"()
+    $P1758 = $P1754."!make"($P1757)
+    .return ($P1758)
+  control_1751:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1759, exception, "payload"
+    .return ($P1759)
+    rethrow exception
+.end
+
+
+.namespace ["NQP";"RegexActions"]
+.sub "codeblock"  :subid("108_1258051430.32314") :method :outer("104_1258051430.32314")
+    .param pmc param_1763
+.annotate "line", 633
+    new $P1762, 'ExceptionHandler'
+    set_addr $P1762, control_1761
+    $P1762."handle_types"(58)
+    push_eh $P1762
+    .lex "self", self
+    .lex "$/", param_1763
+.annotate "line", 634
+    new $P1764, "Undef"
+    .lex "$block", $P1764
+.annotate "line", 636
+    new $P1765, "Undef"
+    .lex "$past", $P1765
+.annotate "line", 634
+    find_lex $P1766, "$/"
+    unless_null $P1766, vivify_497
+    new $P1766, "Hash"
+  vivify_497:
+    set $P1767, $P1766["block"]
+    unless_null $P1767, vivify_498
+    new $P1767, "Undef"
+  vivify_498:
+    $P1768 = $P1767."ast"()
+    store_lex "$block", $P1768
+.annotate "line", 635
+    find_lex $P1769, "$block"
+    $P1769."blocktype"("immediate")
+.annotate "line", 637
+    get_hll_global $P1770, ["PAST"], "Regex"
+.annotate "line", 638
+    get_hll_global $P1771, ["PAST"], "Stmts"
+.annotate "line", 639
+    get_hll_global $P1772, ["PAST"], "Op"
+.annotate "line", 640
+    get_hll_global $P1773, ["PAST"], "Var"
+    $P1774 = $P1773."new"("$/" :named("name"))
+.annotate "line", 641
+    get_hll_global $P1775, ["PAST"], "Op"
+.annotate "line", 642
+    get_hll_global $P1776, ["PAST"], "Var"
+    $P1777 = $P1776."new"(unicode:"$\x{a2}" :named("name"))
+    $P1778 = $P1775."new"($P1777, "MATCH" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 641
+    $P1779 = $P1772."new"($P1774, $P1778, "bind" :named("pasttype"))
+.annotate "line", 639
+    find_lex $P1780, "$block"
+    $P1781 = $P1771."new"($P1779, $P1780)
+.annotate "line", 638
+    $P1782 = $P1770."new"($P1781, "pastnode" :named("pasttype"))
+.annotate "line", 637
+    store_lex "$past", $P1782
+.annotate "line", 652
+    find_lex $P1783, "$/"
+    find_lex $P1784, "$past"
+    $P1785 = $P1783."!make"($P1784)
+.annotate "line", 633
+    .return ($P1785)
+  control_1761:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1786, exception, "payload"
+    .return ($P1786)
+    rethrow exception
+.end
+
+### .include 'src/cheats/nqp-builtins.pir'
+.namespace []
+
+.sub 'print'
+    .param pmc list            :slurpy
+    .local pmc list_it
+    list_it = iter list
+  list_loop:
+    unless list_it goto list_done
+    $P0 = shift list_it
+    print $P0
+    goto list_loop
+  list_done:
+    .return (1)
+.end
+
+.sub 'say'
+    .param pmc list            :slurpy
+    .tailcall 'print'(list :flat, "\n")
+.end
+
+.sub 'ok'
+    .param pmc    condition
+    .param string description :optional
+    .param int    has_desc    :opt_flag
+    if condition goto it_was_ok
+        print "not "
+  it_was_ok:
+    print "ok "
+    $P0 = get_global "$test_counter"
+    $P0 += 1
+    print $P0
+    unless has_desc goto no_description
+        print " # "
+        print description
+  no_description:
+    print "\n"
+    .return (1)
+.end
+
+.sub 'plan'
+    .param int quantity
+    print "1.."
+    print quantity
+    print "\n"
+.end
+
+.sub '' :anon :init :load
+    $P0 = box 0
+    set_global '$test_counter', $P0
+.end
+
+
+.namespace ['NQP';'Grammar']
+
+.sub 'ternary' :method
+    .param pmc match
+    $P0 = match[1]
+    $P1 = match['infix']
+    $P1 = $P1['EXPR']
+    match[1] = $P1
+    match[2] = $P0
+.end
+
+
+
+.namespace ['NQP';'Compiler']
+
+.sub '' :anon :load :init
+    .local pmc p6meta, nqpproto
+    p6meta = get_hll_global 'P6metaclass'
+    nqpproto = p6meta.'new_class'('Regex::P6Grammar::Compiler', 'parent'=>'HLL::Compiler')
+    nqpproto.'language'('NQP-rx')
+    $P0 = get_hll_global ['NQP'], 'Grammar'
+    nqpproto.'parsegrammar'($P0)
+    $P0 = get_hll_global ['NQP'], 'Actions'
+    nqpproto.'parseactions'($P0)
+    $P0 = split ' ', 'e=s help|h target=s dumper=s trace|t=s encoding=s output|o=s combine version|v parsetrace'
+    setattribute nqpproto, '@cmdoptions', $P0
+.end
+
+.sub 'main' :main
+    .param pmc args_str
+
+    $P0 = compreg 'NQP-rx'
+    $P1 = $P0.'command_line'(args_str, 'encoding'=>'utf8', 'transcode'=>'ascii iso-8859-1')
+    exit 0
+.end
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: trunk/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,10974 @@
+# Copyright (C) 2009, Patrick R. Michaud
+# $Id$
+
+=head1 NAME
+
+Regex::P6Regex - Parser/compiler for Perl 6 regexes
+
+=head1 DESCRIPTION
+
+=cut
+
+.sub '' :anon :load :init
+    load_bytecode 'HLL.pbc'
+.end
+
+### .include 'gen/p6regex-grammar.pir'
+
+.namespace []
+.sub "_block11"  :anon :subid("10_1258051404.29629")
+.annotate "line", 0
+    get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13" 
+    capture_lex $P14
+.annotate "line", 3
+    get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13" 
+    capture_lex $P14
+    $P523 = $P14()
+.annotate "line", 1
+    .return ($P523)
+.end
+
+
+.namespace []
+.sub "" :load :init :subid("post158") :outer("10_1258051404.29629")
+.annotate "line", 0
+    .const 'Sub' $P12 = "10_1258051404.29629" 
+    .local pmc block
+    set block, $P12
+    $P524 = get_root_global ["parrot"], "P6metaclass"
+    $P524."new_class"("Regex::P6Regex::Grammar", "HLL::Grammar" :named("parent"))
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block13"  :subid("11_1258051404.29629") :outer("10_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P516 = "156_1258051404.29629" 
+    capture_lex $P516
+    .const 'Sub' $P509 = "154_1258051404.29629" 
+    capture_lex $P509
+    .const 'Sub' $P502 = "152_1258051404.29629" 
+    capture_lex $P502
+    .const 'Sub' $P482 = "147_1258051404.29629" 
+    capture_lex $P482
+    .const 'Sub' $P448 = "141_1258051404.29629" 
+    capture_lex $P448
+    .const 'Sub' $P437 = "138_1258051404.29629" 
+    capture_lex $P437
+    .const 'Sub' $P425 = "135_1258051404.29629" 
+    capture_lex $P425
+    .const 'Sub' $P420 = "133_1258051404.29629" 
+    capture_lex $P420
+    .const 'Sub' $P410 = "130_1258051404.29629" 
+    capture_lex $P410
+    .const 'Sub' $P400 = "127_1258051404.29629" 
+    capture_lex $P400
+    .const 'Sub' $P392 = "123_1258051404.29629" 
+    capture_lex $P392
+    .const 'Sub' $P387 = "121_1258051404.29629" 
+    capture_lex $P387
+    .const 'Sub' $P382 = "119_1258051404.29629" 
+    capture_lex $P382
+    .const 'Sub' $P377 = "117_1258051404.29629" 
+    capture_lex $P377
+    .const 'Sub' $P372 = "115_1258051404.29629" 
+    capture_lex $P372
+    .const 'Sub' $P362 = "113_1258051404.29629" 
+    capture_lex $P362
+    .const 'Sub' $P352 = "111_1258051404.29629" 
+    capture_lex $P352
+    .const 'Sub' $P345 = "109_1258051404.29629" 
+    capture_lex $P345
+    .const 'Sub' $P340 = "107_1258051404.29629" 
+    capture_lex $P340
+    .const 'Sub' $P335 = "105_1258051404.29629" 
+    capture_lex $P335
+    .const 'Sub' $P330 = "103_1258051404.29629" 
+    capture_lex $P330
+    .const 'Sub' $P325 = "101_1258051404.29629" 
+    capture_lex $P325
+    .const 'Sub' $P320 = "99_1258051404.29629" 
+    capture_lex $P320
+    .const 'Sub' $P315 = "97_1258051404.29629" 
+    capture_lex $P315
+    .const 'Sub' $P310 = "95_1258051404.29629" 
+    capture_lex $P310
+    .const 'Sub' $P305 = "93_1258051404.29629" 
+    capture_lex $P305
+    .const 'Sub' $P294 = "89_1258051404.29629" 
+    capture_lex $P294
+    .const 'Sub' $P283 = "87_1258051404.29629" 
+    capture_lex $P283
+    .const 'Sub' $P277 = "85_1258051404.29629" 
+    capture_lex $P277
+    .const 'Sub' $P261 = "83_1258051404.29629" 
+    capture_lex $P261
+    .const 'Sub' $P255 = "81_1258051404.29629" 
+    capture_lex $P255
+    .const 'Sub' $P250 = "79_1258051404.29629" 
+    capture_lex $P250
+    .const 'Sub' $P245 = "77_1258051404.29629" 
+    capture_lex $P245
+    .const 'Sub' $P239 = "75_1258051404.29629" 
+    capture_lex $P239
+    .const 'Sub' $P233 = "73_1258051404.29629" 
+    capture_lex $P233
+    .const 'Sub' $P227 = "71_1258051404.29629" 
+    capture_lex $P227
+    .const 'Sub' $P221 = "69_1258051404.29629" 
+    capture_lex $P221
+    .const 'Sub' $P216 = "67_1258051404.29629" 
+    capture_lex $P216
+    .const 'Sub' $P211 = "65_1258051404.29629" 
+    capture_lex $P211
+    .const 'Sub' $P206 = "63_1258051404.29629" 
+    capture_lex $P206
+    .const 'Sub' $P201 = "61_1258051404.29629" 
+    capture_lex $P201
+    .const 'Sub' $P196 = "59_1258051404.29629" 
+    capture_lex $P196
+    .const 'Sub' $P191 = "57_1258051404.29629" 
+    capture_lex $P191
+    .const 'Sub' $P186 = "55_1258051404.29629" 
+    capture_lex $P186
+    .const 'Sub' $P181 = "53_1258051404.29629" 
+    capture_lex $P181
+    .const 'Sub' $P176 = "51_1258051404.29629" 
+    capture_lex $P176
+    .const 'Sub' $P161 = "46_1258051404.29629" 
+    capture_lex $P161
+    .const 'Sub' $P150 = "44_1258051404.29629" 
+    capture_lex $P150
+    .const 'Sub' $P144 = "42_1258051404.29629" 
+    capture_lex $P144
+    .const 'Sub' $P138 = "40_1258051404.29629" 
+    capture_lex $P138
+    .const 'Sub' $P132 = "38_1258051404.29629" 
+    capture_lex $P132
+    .const 'Sub' $P114 = "33_1258051404.29629" 
+    capture_lex $P114
+    .const 'Sub' $P102 = "30_1258051404.29629" 
+    capture_lex $P102
+    .const 'Sub' $P96 = "28_1258051404.29629" 
+    capture_lex $P96
+    .const 'Sub' $P85 = "26_1258051404.29629" 
+    capture_lex $P85
+    .const 'Sub' $P79 = "24_1258051404.29629" 
+    capture_lex $P79
+    .const 'Sub' $P68 = "22_1258051404.29629" 
+    capture_lex $P68
+    .const 'Sub' $P61 = "20_1258051404.29629" 
+    capture_lex $P61
+    .const 'Sub' $P54 = "18_1258051404.29629" 
+    capture_lex $P54
+    .const 'Sub' $P45 = "15_1258051404.29629" 
+    capture_lex $P45
+    .const 'Sub' $P38 = "13_1258051404.29629" 
+    capture_lex $P38
+    .const 'Sub' $P15 = "12_1258051404.29629" 
+    capture_lex $P15
+    .const 'Sub' $P516 = "156_1258051404.29629" 
+    capture_lex $P516
+    .return ($P516)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "obs"  :subid("12_1258051404.29629") :method :outer("11_1258051404.29629")
+    .param pmc param_18
+    .param pmc param_19
+    .param pmc param_20 :optional
+    .param int has_param_20 :opt_flag
+.annotate "line", 3
+    new $P17, 'ExceptionHandler'
+    set_addr $P17, control_16
+    $P17."handle_types"(58)
+    push_eh $P17
+    .lex "self", self
+    .lex "$old", param_18
+    .lex "$new", param_19
+    if has_param_20, optparam_159
+    new $P21, "String"
+    assign $P21, "in Perl 6"
+    set param_20, $P21
+  optparam_159:
+    .lex "$when", param_20
+.annotate "line", 4
+    find_lex $P22, "self"
+    new $P23, "String"
+    assign $P23, "Obsolete use of "
+    find_lex $P24, "$old"
+    set $S25, $P24
+    concat $P26, $P23, $S25
+    concat $P27, $P26, ";"
+.annotate "line", 5
+    find_lex $P28, "$when"
+    set $S29, $P28
+    concat $P30, $P27, $S29
+    concat $P31, $P30, " please use "
+    find_lex $P32, "$new"
+    set $S33, $P32
+    concat $P34, $P31, $S33
+    concat $P35, $P34, "instead"
+    $P36 = $P22."panic"($P35)
+.annotate "line", 3
+    .return ($P36)
+  control_16:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P37, exception, "payload"
+    .return ($P37)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "ws"  :subid("13_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx39_tgt
+    .local int rx39_pos
+    .local int rx39_off
+    .local int rx39_eos
+    .local int rx39_rep
+    .local pmc rx39_cur
+    (rx39_cur, rx39_pos, rx39_tgt, $I10) = self."!cursor_start"()
+    rx39_cur."!cursor_debug"("START ", "ws")
+    .lex unicode:"$\x{a2}", rx39_cur
+    .local pmc match
+    .lex "$/", match
+    length rx39_eos, rx39_tgt
+    set rx39_off, 0
+    lt $I10, 2, rx39_start
+    sub rx39_off, $I10, 1
+    substr rx39_tgt, rx39_tgt, rx39_off
+  rx39_start:
+.annotate "line", 8
+  # rx rxquantr42 ** 0..*
+    set_addr $I44, rxquantr42_done
+    rx39_cur."!mark_push"(0, rx39_pos, $I44)
+  rxquantr42_loop:
+  alt43_0:
+    set_addr $I10, alt43_1
+    rx39_cur."!mark_push"(0, rx39_pos, $I10)
+  # rx charclass_q s r 1..-1
+    sub $I10, rx39_pos, rx39_off
+    find_not_cclass $I11, 32, rx39_tgt, $I10, rx39_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx39_fail
+    add rx39_pos, rx39_off, $I11
+    goto alt43_end
+  alt43_1:
+  # rx literal  "#"
+    add $I11, rx39_pos, 1
+    gt $I11, rx39_eos, rx39_fail
+    sub $I11, rx39_pos, rx39_off
+    substr $S10, rx39_tgt, $I11, 1
+    ne $S10, "#", rx39_fail
+    add rx39_pos, 1
+  # rx charclass_q N r 0..-1
+    sub $I10, rx39_pos, rx39_off
+    find_cclass $I11, 4096, rx39_tgt, $I10, rx39_eos
+    add rx39_pos, rx39_off, $I11
+  alt43_end:
+    (rx39_rep) = rx39_cur."!mark_commit"($I44)
+    rx39_cur."!mark_push"(rx39_rep, rx39_pos, $I44)
+    goto rxquantr42_loop
+  rxquantr42_done:
+  # rx pass
+    rx39_cur."!cursor_pass"(rx39_pos, "ws")
+    rx39_cur."!cursor_debug"("PASS  ", "ws", " at pos=", rx39_pos)
+    .return (rx39_cur)
+  rx39_fail:
+.annotate "line", 3
+    (rx39_rep, rx39_pos, $I10, $P10) = rx39_cur."!mark_fail"(0)
+    lt rx39_pos, -1, rx39_done
+    eq rx39_pos, -1, rx39_fail
+    jump $I10
+  rx39_done:
+    rx39_cur."!cursor_fail"()
+    rx39_cur."!cursor_debug"("FAIL  ", "ws")
+    .return (rx39_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__ws"  :subid("14_1258051404.29629") :method
+.annotate "line", 3
+    new $P41, "ResizablePMCArray"
+    push $P41, ""
+    .return ($P41)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "normspace"  :subid("15_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P50 = "17_1258051404.29629" 
+    capture_lex $P50
+    .local string rx46_tgt
+    .local int rx46_pos
+    .local int rx46_off
+    .local int rx46_eos
+    .local int rx46_rep
+    .local pmc rx46_cur
+    (rx46_cur, rx46_pos, rx46_tgt, $I10) = self."!cursor_start"()
+    rx46_cur."!cursor_debug"("START ", "normspace")
+    .lex unicode:"$\x{a2}", rx46_cur
+    .local pmc match
+    .lex "$/", match
+    length rx46_eos, rx46_tgt
+    set rx46_off, 0
+    lt $I10, 2, rx46_start
+    sub rx46_off, $I10, 1
+    substr rx46_tgt, rx46_tgt, rx46_off
+  rx46_start:
+.annotate "line", 10
+  # rx subrule "before" subtype=zerowidth negate=
+    rx46_cur."!cursor_pos"(rx46_pos)
+    .const 'Sub' $P50 = "17_1258051404.29629" 
+    capture_lex $P50
+    $P10 = rx46_cur."before"($P50)
+    unless $P10, rx46_fail
+  # rx subrule "ws" subtype=method negate=
+    rx46_cur."!cursor_pos"(rx46_pos)
+    $P10 = rx46_cur."ws"()
+    unless $P10, rx46_fail
+    rx46_pos = $P10."pos"()
+  # rx pass
+    rx46_cur."!cursor_pass"(rx46_pos, "normspace")
+    rx46_cur."!cursor_debug"("PASS  ", "normspace", " at pos=", rx46_pos)
+    .return (rx46_cur)
+  rx46_fail:
+.annotate "line", 3
+    (rx46_rep, rx46_pos, $I10, $P10) = rx46_cur."!mark_fail"(0)
+    lt rx46_pos, -1, rx46_done
+    eq rx46_pos, -1, rx46_fail
+    jump $I10
+  rx46_done:
+    rx46_cur."!cursor_fail"()
+    rx46_cur."!cursor_debug"("FAIL  ", "normspace")
+    .return (rx46_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__normspace"  :subid("16_1258051404.29629") :method
+.annotate "line", 3
+    new $P48, "ResizablePMCArray"
+    push $P48, ""
+    .return ($P48)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block49"  :anon :subid("17_1258051404.29629") :method :outer("15_1258051404.29629")
+.annotate "line", 10
+    .local string rx51_tgt
+    .local int rx51_pos
+    .local int rx51_off
+    .local int rx51_eos
+    .local int rx51_rep
+    .local pmc rx51_cur
+    (rx51_cur, rx51_pos, rx51_tgt, $I10) = self."!cursor_start"()
+    rx51_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx51_cur
+    .local pmc match
+    .lex "$/", match
+    length rx51_eos, rx51_tgt
+    set rx51_off, 0
+    lt $I10, 2, rx51_start
+    sub rx51_off, $I10, 1
+    substr rx51_tgt, rx51_tgt, rx51_off
+  rx51_start:
+    ge rx51_pos, 0, rxscan52_done
+  rxscan52_loop:
+    ($P10) = rx51_cur."from"()
+    inc $P10
+    set rx51_pos, $P10
+    ge rx51_pos, rx51_eos, rxscan52_done
+    set_addr $I10, rxscan52_loop
+    rx51_cur."!mark_push"(0, rx51_pos, $I10)
+  rxscan52_done:
+  alt53_0:
+    set_addr $I10, alt53_1
+    rx51_cur."!mark_push"(0, rx51_pos, $I10)
+  # rx charclass s
+    ge rx51_pos, rx51_eos, rx51_fail
+    sub $I10, rx51_pos, rx51_off
+    is_cclass $I11, 32, rx51_tgt, $I10
+    unless $I11, rx51_fail
+    inc rx51_pos
+    goto alt53_end
+  alt53_1:
+  # rx literal  "#"
+    add $I11, rx51_pos, 1
+    gt $I11, rx51_eos, rx51_fail
+    sub $I11, rx51_pos, rx51_off
+    substr $S10, rx51_tgt, $I11, 1
+    ne $S10, "#", rx51_fail
+    add rx51_pos, 1
+  alt53_end:
+  # rx pass
+    rx51_cur."!cursor_pass"(rx51_pos, "")
+    rx51_cur."!cursor_debug"("PASS  ", "", " at pos=", rx51_pos)
+    .return (rx51_cur)
+  rx51_fail:
+    (rx51_rep, rx51_pos, $I10, $P10) = rx51_cur."!mark_fail"(0)
+    lt rx51_pos, -1, rx51_done
+    eq rx51_pos, -1, rx51_fail
+    jump $I10
+  rx51_done:
+    rx51_cur."!cursor_fail"()
+    rx51_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx51_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "quote"  :subid("18_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx55_tgt
+    .local int rx55_pos
+    .local int rx55_off
+    .local int rx55_eos
+    .local int rx55_rep
+    .local pmc rx55_cur
+    (rx55_cur, rx55_pos, rx55_tgt, $I10) = self."!cursor_start"()
+    rx55_cur."!cursor_debug"("START ", "quote")
+    .lex unicode:"$\x{a2}", rx55_cur
+    .local pmc match
+    .lex "$/", match
+    length rx55_eos, rx55_tgt
+    set rx55_off, 0
+    lt $I10, 2, rx55_start
+    sub rx55_off, $I10, 1
+    substr rx55_tgt, rx55_tgt, rx55_off
+  rx55_start:
+.annotate "line", 12
+  # rx literal  "'"
+    add $I11, rx55_pos, 1
+    gt $I11, rx55_eos, rx55_fail
+    sub $I11, rx55_pos, rx55_off
+    substr $S10, rx55_tgt, $I11, 1
+    ne $S10, "'", rx55_fail
+    add rx55_pos, 1
+  # rx subcapture "val"
+    set_addr $I10, rxcap_60_fail
+    rx55_cur."!mark_push"(0, rx55_pos, $I10)
+  # rx rxquantr58 ** 0..*
+    set_addr $I59, rxquantr58_done
+    rx55_cur."!mark_push"(0, rx55_pos, $I59)
+  rxquantr58_loop:
+  # rx enumcharlist negate=1 
+    ge rx55_pos, rx55_eos, rx55_fail
+    sub $I10, rx55_pos, rx55_off
+    substr $S10, rx55_tgt, $I10, 1
+    index $I11, "'", $S10
+    ge $I11, 0, rx55_fail
+    inc rx55_pos
+    (rx55_rep) = rx55_cur."!mark_commit"($I59)
+    rx55_cur."!mark_push"(rx55_rep, rx55_pos, $I59)
+    goto rxquantr58_loop
+  rxquantr58_done:
+    set_addr $I10, rxcap_60_fail
+    ($I12, $I11) = rx55_cur."!mark_peek"($I10)
+    rx55_cur."!cursor_pos"($I11)
+    ($P10) = rx55_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx55_pos, "")
+    rx55_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("val")
+    goto rxcap_60_done
+  rxcap_60_fail:
+    goto rx55_fail
+  rxcap_60_done:
+  # rx literal  "'"
+    add $I11, rx55_pos, 1
+    gt $I11, rx55_eos, rx55_fail
+    sub $I11, rx55_pos, rx55_off
+    substr $S10, rx55_tgt, $I11, 1
+    ne $S10, "'", rx55_fail
+    add rx55_pos, 1
+  # rx pass
+    rx55_cur."!cursor_pass"(rx55_pos, "quote")
+    rx55_cur."!cursor_debug"("PASS  ", "quote", " at pos=", rx55_pos)
+    .return (rx55_cur)
+  rx55_fail:
+.annotate "line", 3
+    (rx55_rep, rx55_pos, $I10, $P10) = rx55_cur."!mark_fail"(0)
+    lt rx55_pos, -1, rx55_done
+    eq rx55_pos, -1, rx55_fail
+    jump $I10
+  rx55_done:
+    rx55_cur."!cursor_fail"()
+    rx55_cur."!cursor_debug"("FAIL  ", "quote")
+    .return (rx55_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__quote"  :subid("19_1258051404.29629") :method
+.annotate "line", 3
+    new $P57, "ResizablePMCArray"
+    push $P57, "'"
+    .return ($P57)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "arg"  :subid("20_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx62_tgt
+    .local int rx62_pos
+    .local int rx62_off
+    .local int rx62_eos
+    .local int rx62_rep
+    .local pmc rx62_cur
+    (rx62_cur, rx62_pos, rx62_tgt, $I10) = self."!cursor_start"()
+    rx62_cur."!cursor_debug"("START ", "arg")
+    .lex unicode:"$\x{a2}", rx62_cur
+    .local pmc match
+    .lex "$/", match
+    length rx62_eos, rx62_tgt
+    set rx62_off, 0
+    lt $I10, 2, rx62_start
+    sub rx62_off, $I10, 1
+    substr rx62_tgt, rx62_tgt, rx62_off
+  rx62_start:
+  alt66_0:
+.annotate "line", 15
+    set_addr $I10, alt66_1
+    rx62_cur."!mark_push"(0, rx62_pos, $I10)
+.annotate "line", 16
+  # rx subrule "quote" subtype=capture negate=
+    rx62_cur."!cursor_pos"(rx62_pos)
+    $P10 = rx62_cur."quote"()
+    unless $P10, rx62_fail
+    rx62_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote")
+    rx62_pos = $P10."pos"()
+    goto alt66_end
+  alt66_1:
+.annotate "line", 17
+  # rx subcapture "val"
+    set_addr $I10, rxcap_67_fail
+    rx62_cur."!mark_push"(0, rx62_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx62_pos, rx62_off
+    find_not_cclass $I11, 8, rx62_tgt, $I10, rx62_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx62_fail
+    add rx62_pos, rx62_off, $I11
+    set_addr $I10, rxcap_67_fail
+    ($I12, $I11) = rx62_cur."!mark_peek"($I10)
+    rx62_cur."!cursor_pos"($I11)
+    ($P10) = rx62_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx62_pos, "")
+    rx62_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("val")
+    goto rxcap_67_done
+  rxcap_67_fail:
+    goto rx62_fail
+  rxcap_67_done:
+  alt66_end:
+.annotate "line", 14
+  # rx pass
+    rx62_cur."!cursor_pass"(rx62_pos, "arg")
+    rx62_cur."!cursor_debug"("PASS  ", "arg", " at pos=", rx62_pos)
+    .return (rx62_cur)
+  rx62_fail:
+.annotate "line", 3
+    (rx62_rep, rx62_pos, $I10, $P10) = rx62_cur."!mark_fail"(0)
+    lt rx62_pos, -1, rx62_done
+    eq rx62_pos, -1, rx62_fail
+    jump $I10
+  rx62_done:
+    rx62_cur."!cursor_fail"()
+    rx62_cur."!cursor_debug"("FAIL  ", "arg")
+    .return (rx62_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__arg"  :subid("21_1258051404.29629") :method
+.annotate "line", 3
+    $P64 = self."!PREFIX__!subrule"("quote", "")
+    new $P65, "ResizablePMCArray"
+    push $P65, ""
+    push $P65, $P64
+    .return ($P65)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "arglist"  :subid("22_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx69_tgt
+    .local int rx69_pos
+    .local int rx69_off
+    .local int rx69_eos
+    .local int rx69_rep
+    .local pmc rx69_cur
+    (rx69_cur, rx69_pos, rx69_tgt, $I10) = self."!cursor_start"()
+    rx69_cur."!cursor_debug"("START ", "arglist")
+    rx69_cur."!cursor_caparray"("arg")
+    .lex unicode:"$\x{a2}", rx69_cur
+    .local pmc match
+    .lex "$/", match
+    length rx69_eos, rx69_tgt
+    set rx69_off, 0
+    lt $I10, 2, rx69_start
+    sub rx69_off, $I10, 1
+    substr rx69_tgt, rx69_tgt, rx69_off
+  rx69_start:
+.annotate "line", 21
+  # rx subrule "ws" subtype=method negate=
+    rx69_cur."!cursor_pos"(rx69_pos)
+    $P10 = rx69_cur."ws"()
+    unless $P10, rx69_fail
+    rx69_pos = $P10."pos"()
+  # rx subrule "arg" subtype=capture negate=
+    rx69_cur."!cursor_pos"(rx69_pos)
+    $P10 = rx69_cur."arg"()
+    unless $P10, rx69_fail
+    rx69_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arg")
+    rx69_pos = $P10."pos"()
+  # rx subrule "ws" subtype=method negate=
+    rx69_cur."!cursor_pos"(rx69_pos)
+    $P10 = rx69_cur."ws"()
+    unless $P10, rx69_fail
+    rx69_pos = $P10."pos"()
+  # rx rxquantr74 ** 0..*
+    set_addr $I77, rxquantr74_done
+    rx69_cur."!mark_push"(0, rx69_pos, $I77)
+  rxquantr74_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx69_cur."!cursor_pos"(rx69_pos)
+    $P10 = rx69_cur."ws"()
+    unless $P10, rx69_fail
+    rx69_pos = $P10."pos"()
+  # rx literal  ","
+    add $I11, rx69_pos, 1
+    gt $I11, rx69_eos, rx69_fail
+    sub $I11, rx69_pos, rx69_off
+    substr $S10, rx69_tgt, $I11, 1
+    ne $S10, ",", rx69_fail
+    add rx69_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx69_cur."!cursor_pos"(rx69_pos)
+    $P10 = rx69_cur."ws"()
+    unless $P10, rx69_fail
+    rx69_pos = $P10."pos"()
+  # rx subrule "arg" subtype=capture negate=
+    rx69_cur."!cursor_pos"(rx69_pos)
+    $P10 = rx69_cur."arg"()
+    unless $P10, rx69_fail
+    rx69_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arg")
+    rx69_pos = $P10."pos"()
+    (rx69_rep) = rx69_cur."!mark_commit"($I77)
+    rx69_cur."!mark_push"(rx69_rep, rx69_pos, $I77)
+    goto rxquantr74_loop
+  rxquantr74_done:
+  # rx subrule "ws" subtype=method negate=
+    rx69_cur."!cursor_pos"(rx69_pos)
+    $P10 = rx69_cur."ws"()
+    unless $P10, rx69_fail
+    rx69_pos = $P10."pos"()
+  # rx pass
+    rx69_cur."!cursor_pass"(rx69_pos, "arglist")
+    rx69_cur."!cursor_debug"("PASS  ", "arglist", " at pos=", rx69_pos)
+    .return (rx69_cur)
+  rx69_fail:
+.annotate "line", 3
+    (rx69_rep, rx69_pos, $I10, $P10) = rx69_cur."!mark_fail"(0)
+    lt rx69_pos, -1, rx69_done
+    eq rx69_pos, -1, rx69_fail
+    jump $I10
+  rx69_done:
+    rx69_cur."!cursor_fail"()
+    rx69_cur."!cursor_debug"("FAIL  ", "arglist")
+    .return (rx69_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__arglist"  :subid("23_1258051404.29629") :method
+.annotate "line", 3
+    new $P71, "ResizablePMCArray"
+    push $P71, ""
+    .return ($P71)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "TOP"  :subid("24_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx80_tgt
+    .local int rx80_pos
+    .local int rx80_off
+    .local int rx80_eos
+    .local int rx80_rep
+    .local pmc rx80_cur
+    (rx80_cur, rx80_pos, rx80_tgt, $I10) = self."!cursor_start"()
+    rx80_cur."!cursor_debug"("START ", "TOP")
+    .lex unicode:"$\x{a2}", rx80_cur
+    .local pmc match
+    .lex "$/", match
+    length rx80_eos, rx80_tgt
+    set rx80_off, 0
+    lt $I10, 2, rx80_start
+    sub rx80_off, $I10, 1
+    substr rx80_tgt, rx80_tgt, rx80_off
+  rx80_start:
+.annotate "line", 24
+  # rx subrule "nibbler" subtype=capture negate=
+    rx80_cur."!cursor_pos"(rx80_pos)
+    $P10 = rx80_cur."nibbler"()
+    unless $P10, rx80_fail
+    rx80_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("nibbler")
+    rx80_pos = $P10."pos"()
+  alt84_0:
+.annotate "line", 25
+    set_addr $I10, alt84_1
+    rx80_cur."!mark_push"(0, rx80_pos, $I10)
+  # rxanchor eos
+    ne rx80_pos, rx80_eos, rx80_fail
+    goto alt84_end
+  alt84_1:
+  # rx subrule "panic" subtype=method negate=
+    rx80_cur."!cursor_pos"(rx80_pos)
+    $P10 = rx80_cur."panic"("Confused")
+    unless $P10, rx80_fail
+    rx80_pos = $P10."pos"()
+  alt84_end:
+.annotate "line", 23
+  # rx pass
+    rx80_cur."!cursor_pass"(rx80_pos, "TOP")
+    rx80_cur."!cursor_debug"("PASS  ", "TOP", " at pos=", rx80_pos)
+    .return (rx80_cur)
+  rx80_fail:
+.annotate "line", 3
+    (rx80_rep, rx80_pos, $I10, $P10) = rx80_cur."!mark_fail"(0)
+    lt rx80_pos, -1, rx80_done
+    eq rx80_pos, -1, rx80_fail
+    jump $I10
+  rx80_done:
+    rx80_cur."!cursor_fail"()
+    rx80_cur."!cursor_debug"("FAIL  ", "TOP")
+    .return (rx80_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__TOP"  :subid("25_1258051404.29629") :method
+.annotate "line", 3
+    $P82 = self."!PREFIX__!subrule"("nibbler", "")
+    new $P83, "ResizablePMCArray"
+    push $P83, $P82
+    .return ($P83)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "nibbler"  :subid("26_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx86_tgt
+    .local int rx86_pos
+    .local int rx86_off
+    .local int rx86_eos
+    .local int rx86_rep
+    .local pmc rx86_cur
+    (rx86_cur, rx86_pos, rx86_tgt, $I10) = self."!cursor_start"()
+    rx86_cur."!cursor_debug"("START ", "nibbler")
+    rx86_cur."!cursor_caparray"("termish")
+    .lex unicode:"$\x{a2}", rx86_cur
+    .local pmc match
+    .lex "$/", match
+    length rx86_eos, rx86_tgt
+    set rx86_off, 0
+    lt $I10, 2, rx86_start
+    sub rx86_off, $I10, 1
+    substr rx86_tgt, rx86_tgt, rx86_off
+  rx86_start:
+.annotate "line", 29
+  # rx reduce name="nibbler" key="open"
+    rx86_cur."!cursor_pos"(rx86_pos)
+    rx86_cur."!reduce"("nibbler", "open")
+.annotate "line", 30
+  # rx rxquantr89 ** 0..1
+    set_addr $I91, rxquantr89_done
+    rx86_cur."!mark_push"(0, rx86_pos, $I91)
+  rxquantr89_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx86_cur."!cursor_pos"(rx86_pos)
+    $P10 = rx86_cur."ws"()
+    unless $P10, rx86_fail
+    rx86_pos = $P10."pos"()
+  alt90_0:
+    set_addr $I10, alt90_1
+    rx86_cur."!mark_push"(0, rx86_pos, $I10)
+  # rx literal  "||"
+    add $I11, rx86_pos, 2
+    gt $I11, rx86_eos, rx86_fail
+    sub $I11, rx86_pos, rx86_off
+    substr $S10, rx86_tgt, $I11, 2
+    ne $S10, "||", rx86_fail
+    add rx86_pos, 2
+    goto alt90_end
+  alt90_1:
+    set_addr $I10, alt90_2
+    rx86_cur."!mark_push"(0, rx86_pos, $I10)
+  # rx literal  "|"
+    add $I11, rx86_pos, 1
+    gt $I11, rx86_eos, rx86_fail
+    sub $I11, rx86_pos, rx86_off
+    substr $S10, rx86_tgt, $I11, 1
+    ne $S10, "|", rx86_fail
+    add rx86_pos, 1
+    goto alt90_end
+  alt90_2:
+    set_addr $I10, alt90_3
+    rx86_cur."!mark_push"(0, rx86_pos, $I10)
+  # rx literal  "&&"
+    add $I11, rx86_pos, 2
+    gt $I11, rx86_eos, rx86_fail
+    sub $I11, rx86_pos, rx86_off
+    substr $S10, rx86_tgt, $I11, 2
+    ne $S10, "&&", rx86_fail
+    add rx86_pos, 2
+    goto alt90_end
+  alt90_3:
+  # rx literal  "&"
+    add $I11, rx86_pos, 1
+    gt $I11, rx86_eos, rx86_fail
+    sub $I11, rx86_pos, rx86_off
+    substr $S10, rx86_tgt, $I11, 1
+    ne $S10, "&", rx86_fail
+    add rx86_pos, 1
+  alt90_end:
+    (rx86_rep) = rx86_cur."!mark_commit"($I91)
+  rxquantr89_done:
+.annotate "line", 31
+  # rx subrule "termish" subtype=capture negate=
+    rx86_cur."!cursor_pos"(rx86_pos)
+    $P10 = rx86_cur."termish"()
+    unless $P10, rx86_fail
+    rx86_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("termish")
+    rx86_pos = $P10."pos"()
+.annotate "line", 34
+  # rx rxquantr92 ** 0..*
+    set_addr $I95, rxquantr92_done
+    rx86_cur."!mark_push"(0, rx86_pos, $I95)
+  rxquantr92_loop:
+  alt93_0:
+.annotate "line", 32
+    set_addr $I10, alt93_1
+    rx86_cur."!mark_push"(0, rx86_pos, $I10)
+  # rx literal  "||"
+    add $I11, rx86_pos, 2
+    gt $I11, rx86_eos, rx86_fail
+    sub $I11, rx86_pos, rx86_off
+    substr $S10, rx86_tgt, $I11, 2
+    ne $S10, "||", rx86_fail
+    add rx86_pos, 2
+    goto alt93_end
+  alt93_1:
+  # rx literal  "|"
+    add $I11, rx86_pos, 1
+    gt $I11, rx86_eos, rx86_fail
+    sub $I11, rx86_pos, rx86_off
+    substr $S10, rx86_tgt, $I11, 1
+    ne $S10, "|", rx86_fail
+    add rx86_pos, 1
+  alt93_end:
+  alt94_0:
+.annotate "line", 33
+    set_addr $I10, alt94_1
+    rx86_cur."!mark_push"(0, rx86_pos, $I10)
+  # rx subrule "termish" subtype=capture negate=
+    rx86_cur."!cursor_pos"(rx86_pos)
+    $P10 = rx86_cur."termish"()
+    unless $P10, rx86_fail
+    rx86_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("termish")
+    rx86_pos = $P10."pos"()
+    goto alt94_end
+  alt94_1:
+  # rx subrule "panic" subtype=method negate=
+    rx86_cur."!cursor_pos"(rx86_pos)
+    $P10 = rx86_cur."panic"("Null pattern not allowed")
+    unless $P10, rx86_fail
+    rx86_pos = $P10."pos"()
+  alt94_end:
+.annotate "line", 34
+    (rx86_rep) = rx86_cur."!mark_commit"($I95)
+    rx86_cur."!mark_push"(rx86_rep, rx86_pos, $I95)
+    goto rxquantr92_loop
+  rxquantr92_done:
+.annotate "line", 28
+  # rx pass
+    rx86_cur."!cursor_pass"(rx86_pos, "nibbler")
+    rx86_cur."!cursor_debug"("PASS  ", "nibbler", " at pos=", rx86_pos)
+    .return (rx86_cur)
+  rx86_fail:
+.annotate "line", 3
+    (rx86_rep, rx86_pos, $I10, $P10) = rx86_cur."!mark_fail"(0)
+    lt rx86_pos, -1, rx86_done
+    eq rx86_pos, -1, rx86_fail
+    jump $I10
+  rx86_done:
+    rx86_cur."!cursor_fail"()
+    rx86_cur."!cursor_debug"("FAIL  ", "nibbler")
+    .return (rx86_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__nibbler"  :subid("27_1258051404.29629") :method
+.annotate "line", 3
+    new $P88, "ResizablePMCArray"
+    push $P88, ""
+    .return ($P88)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "termish"  :subid("28_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx97_tgt
+    .local int rx97_pos
+    .local int rx97_off
+    .local int rx97_eos
+    .local int rx97_rep
+    .local pmc rx97_cur
+    (rx97_cur, rx97_pos, rx97_tgt, $I10) = self."!cursor_start"()
+    rx97_cur."!cursor_debug"("START ", "termish")
+    rx97_cur."!cursor_caparray"("noun")
+    .lex unicode:"$\x{a2}", rx97_cur
+    .local pmc match
+    .lex "$/", match
+    length rx97_eos, rx97_tgt
+    set rx97_off, 0
+    lt $I10, 2, rx97_start
+    sub rx97_off, $I10, 1
+    substr rx97_tgt, rx97_tgt, rx97_off
+  rx97_start:
+.annotate "line", 38
+  # rx rxquantr100 ** 1..*
+    set_addr $I101, rxquantr100_done
+    rx97_cur."!mark_push"(0, -1, $I101)
+  rxquantr100_loop:
+  # rx subrule "quantified_atom" subtype=capture negate=
+    rx97_cur."!cursor_pos"(rx97_pos)
+    $P10 = rx97_cur."quantified_atom"()
+    unless $P10, rx97_fail
+    rx97_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("noun")
+    rx97_pos = $P10."pos"()
+    (rx97_rep) = rx97_cur."!mark_commit"($I101)
+    rx97_cur."!mark_push"(rx97_rep, rx97_pos, $I101)
+    goto rxquantr100_loop
+  rxquantr100_done:
+.annotate "line", 37
+  # rx pass
+    rx97_cur."!cursor_pass"(rx97_pos, "termish")
+    rx97_cur."!cursor_debug"("PASS  ", "termish", " at pos=", rx97_pos)
+    .return (rx97_cur)
+  rx97_fail:
+.annotate "line", 3
+    (rx97_rep, rx97_pos, $I10, $P10) = rx97_cur."!mark_fail"(0)
+    lt rx97_pos, -1, rx97_done
+    eq rx97_pos, -1, rx97_fail
+    jump $I10
+  rx97_done:
+    rx97_cur."!cursor_fail"()
+    rx97_cur."!cursor_debug"("FAIL  ", "termish")
+    .return (rx97_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__termish"  :subid("29_1258051404.29629") :method
+.annotate "line", 3
+    new $P99, "ResizablePMCArray"
+    push $P99, ""
+    .return ($P99)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "quantified_atom"  :subid("30_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P110 = "32_1258051404.29629" 
+    capture_lex $P110
+    .local string rx103_tgt
+    .local int rx103_pos
+    .local int rx103_off
+    .local int rx103_eos
+    .local int rx103_rep
+    .local pmc rx103_cur
+    (rx103_cur, rx103_pos, rx103_tgt, $I10) = self."!cursor_start"()
+    rx103_cur."!cursor_debug"("START ", "quantified_atom")
+    rx103_cur."!cursor_caparray"("quantifier", "backmod")
+    .lex unicode:"$\x{a2}", rx103_cur
+    .local pmc match
+    .lex "$/", match
+    length rx103_eos, rx103_tgt
+    set rx103_off, 0
+    lt $I10, 2, rx103_start
+    sub rx103_off, $I10, 1
+    substr rx103_tgt, rx103_tgt, rx103_off
+  rx103_start:
+.annotate "line", 42
+  # rx subrule "atom" subtype=capture negate=
+    rx103_cur."!cursor_pos"(rx103_pos)
+    $P10 = rx103_cur."atom"()
+    unless $P10, rx103_fail
+    rx103_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("atom")
+    rx103_pos = $P10."pos"()
+  # rx rxquantr107 ** 0..1
+    set_addr $I113, rxquantr107_done
+    rx103_cur."!mark_push"(0, rx103_pos, $I113)
+  rxquantr107_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx103_cur."!cursor_pos"(rx103_pos)
+    $P10 = rx103_cur."ws"()
+    unless $P10, rx103_fail
+    rx103_pos = $P10."pos"()
+  alt108_0:
+    set_addr $I10, alt108_1
+    rx103_cur."!mark_push"(0, rx103_pos, $I10)
+  # rx subrule "quantifier" subtype=capture negate=
+    rx103_cur."!cursor_pos"(rx103_pos)
+    $P10 = rx103_cur."quantifier"()
+    unless $P10, rx103_fail
+    rx103_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quantifier")
+    rx103_pos = $P10."pos"()
+    goto alt108_end
+  alt108_1:
+  # rx subrule "before" subtype=zerowidth negate=
+    rx103_cur."!cursor_pos"(rx103_pos)
+    .const 'Sub' $P110 = "32_1258051404.29629" 
+    capture_lex $P110
+    $P10 = rx103_cur."before"($P110)
+    unless $P10, rx103_fail
+  # rx subrule "backmod" subtype=capture negate=
+    rx103_cur."!cursor_pos"(rx103_pos)
+    $P10 = rx103_cur."backmod"()
+    unless $P10, rx103_fail
+    rx103_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("backmod")
+    rx103_pos = $P10."pos"()
+  # rx subrule "alpha" subtype=zerowidth negate=1
+    rx103_cur."!cursor_pos"(rx103_pos)
+    $P10 = rx103_cur."alpha"()
+    if $P10, rx103_fail
+  alt108_end:
+    (rx103_rep) = rx103_cur."!mark_commit"($I113)
+  rxquantr107_done:
+.annotate "line", 41
+  # rx pass
+    rx103_cur."!cursor_pass"(rx103_pos, "quantified_atom")
+    rx103_cur."!cursor_debug"("PASS  ", "quantified_atom", " at pos=", rx103_pos)
+    .return (rx103_cur)
+  rx103_fail:
+.annotate "line", 3
+    (rx103_rep, rx103_pos, $I10, $P10) = rx103_cur."!mark_fail"(0)
+    lt rx103_pos, -1, rx103_done
+    eq rx103_pos, -1, rx103_fail
+    jump $I10
+  rx103_done:
+    rx103_cur."!cursor_fail"()
+    rx103_cur."!cursor_debug"("FAIL  ", "quantified_atom")
+    .return (rx103_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__quantified_atom"  :subid("31_1258051404.29629") :method
+.annotate "line", 3
+    $P105 = self."!PREFIX__!subrule"("atom", "")
+    new $P106, "ResizablePMCArray"
+    push $P106, $P105
+    .return ($P106)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block109"  :anon :subid("32_1258051404.29629") :method :outer("30_1258051404.29629")
+.annotate "line", 42
+    .local string rx111_tgt
+    .local int rx111_pos
+    .local int rx111_off
+    .local int rx111_eos
+    .local int rx111_rep
+    .local pmc rx111_cur
+    (rx111_cur, rx111_pos, rx111_tgt, $I10) = self."!cursor_start"()
+    rx111_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx111_cur
+    .local pmc match
+    .lex "$/", match
+    length rx111_eos, rx111_tgt
+    set rx111_off, 0
+    lt $I10, 2, rx111_start
+    sub rx111_off, $I10, 1
+    substr rx111_tgt, rx111_tgt, rx111_off
+  rx111_start:
+    ge rx111_pos, 0, rxscan112_done
+  rxscan112_loop:
+    ($P10) = rx111_cur."from"()
+    inc $P10
+    set rx111_pos, $P10
+    ge rx111_pos, rx111_eos, rxscan112_done
+    set_addr $I10, rxscan112_loop
+    rx111_cur."!mark_push"(0, rx111_pos, $I10)
+  rxscan112_done:
+  # rx literal  ":"
+    add $I11, rx111_pos, 1
+    gt $I11, rx111_eos, rx111_fail
+    sub $I11, rx111_pos, rx111_off
+    substr $S10, rx111_tgt, $I11, 1
+    ne $S10, ":", rx111_fail
+    add rx111_pos, 1
+  # rx pass
+    rx111_cur."!cursor_pass"(rx111_pos, "")
+    rx111_cur."!cursor_debug"("PASS  ", "", " at pos=", rx111_pos)
+    .return (rx111_cur)
+  rx111_fail:
+    (rx111_rep, rx111_pos, $I10, $P10) = rx111_cur."!mark_fail"(0)
+    lt rx111_pos, -1, rx111_done
+    eq rx111_pos, -1, rx111_fail
+    jump $I10
+  rx111_done:
+    rx111_cur."!cursor_fail"()
+    rx111_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx111_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "atom"  :subid("33_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P124 = "35_1258051404.29629" 
+    capture_lex $P124
+    .local string rx115_tgt
+    .local int rx115_pos
+    .local int rx115_off
+    .local int rx115_eos
+    .local int rx115_rep
+    .local pmc rx115_cur
+    (rx115_cur, rx115_pos, rx115_tgt, $I10) = self."!cursor_start"()
+    rx115_cur."!cursor_debug"("START ", "atom")
+    .lex unicode:"$\x{a2}", rx115_cur
+    .local pmc match
+    .lex "$/", match
+    length rx115_eos, rx115_tgt
+    set rx115_off, 0
+    lt $I10, 2, rx115_start
+    sub rx115_off, $I10, 1
+    substr rx115_tgt, rx115_tgt, rx115_off
+  rx115_start:
+  alt119_0:
+.annotate "line", 47
+    set_addr $I10, alt119_1
+    rx115_cur."!mark_push"(0, rx115_pos, $I10)
+.annotate "line", 48
+  # rx charclass w
+    ge rx115_pos, rx115_eos, rx115_fail
+    sub $I10, rx115_pos, rx115_off
+    is_cclass $I11, 8192, rx115_tgt, $I10
+    unless $I11, rx115_fail
+    inc rx115_pos
+  # rx rxquantr120 ** 0..1
+    set_addr $I127, rxquantr120_done
+    rx115_cur."!mark_push"(0, rx115_pos, $I127)
+  rxquantr120_loop:
+  # rx rxquantg121 ** 1..*
+    set_addr $I122, rxquantg121_done
+  rxquantg121_loop:
+  # rx charclass w
+    ge rx115_pos, rx115_eos, rx115_fail
+    sub $I10, rx115_pos, rx115_off
+    is_cclass $I11, 8192, rx115_tgt, $I10
+    unless $I11, rx115_fail
+    inc rx115_pos
+    rx115_cur."!mark_push"(rx115_rep, rx115_pos, $I122)
+    goto rxquantg121_loop
+  rxquantg121_done:
+  # rx subrule "before" subtype=zerowidth negate=
+    rx115_cur."!cursor_pos"(rx115_pos)
+    .const 'Sub' $P124 = "35_1258051404.29629" 
+    capture_lex $P124
+    $P10 = rx115_cur."before"($P124)
+    unless $P10, rx115_fail
+    (rx115_rep) = rx115_cur."!mark_commit"($I127)
+  rxquantr120_done:
+    goto alt119_end
+  alt119_1:
+.annotate "line", 49
+  # rx subrule "metachar" subtype=capture negate=
+    rx115_cur."!cursor_pos"(rx115_pos)
+    $P10 = rx115_cur."metachar"()
+    unless $P10, rx115_fail
+    rx115_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("metachar")
+    rx115_pos = $P10."pos"()
+  alt119_end:
+.annotate "line", 45
+  # rx pass
+    rx115_cur."!cursor_pass"(rx115_pos, "atom")
+    rx115_cur."!cursor_debug"("PASS  ", "atom", " at pos=", rx115_pos)
+    .return (rx115_cur)
+  rx115_fail:
+.annotate "line", 3
+    (rx115_rep, rx115_pos, $I10, $P10) = rx115_cur."!mark_fail"(0)
+    lt rx115_pos, -1, rx115_done
+    eq rx115_pos, -1, rx115_fail
+    jump $I10
+  rx115_done:
+    rx115_cur."!cursor_fail"()
+    rx115_cur."!cursor_debug"("FAIL  ", "atom")
+    .return (rx115_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__atom"  :subid("34_1258051404.29629") :method
+.annotate "line", 3
+    $P117 = self."!PREFIX__!subrule"("metachar", "")
+    new $P118, "ResizablePMCArray"
+    push $P118, $P117
+    push $P118, ""
+    .return ($P118)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block123"  :anon :subid("35_1258051404.29629") :method :outer("33_1258051404.29629")
+.annotate "line", 48
+    .local string rx125_tgt
+    .local int rx125_pos
+    .local int rx125_off
+    .local int rx125_eos
+    .local int rx125_rep
+    .local pmc rx125_cur
+    (rx125_cur, rx125_pos, rx125_tgt, $I10) = self."!cursor_start"()
+    rx125_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx125_cur
+    .local pmc match
+    .lex "$/", match
+    length rx125_eos, rx125_tgt
+    set rx125_off, 0
+    lt $I10, 2, rx125_start
+    sub rx125_off, $I10, 1
+    substr rx125_tgt, rx125_tgt, rx125_off
+  rx125_start:
+    ge rx125_pos, 0, rxscan126_done
+  rxscan126_loop:
+    ($P10) = rx125_cur."from"()
+    inc $P10
+    set rx125_pos, $P10
+    ge rx125_pos, rx125_eos, rxscan126_done
+    set_addr $I10, rxscan126_loop
+    rx125_cur."!mark_push"(0, rx125_pos, $I10)
+  rxscan126_done:
+  # rx charclass w
+    ge rx125_pos, rx125_eos, rx125_fail
+    sub $I10, rx125_pos, rx125_off
+    is_cclass $I11, 8192, rx125_tgt, $I10
+    unless $I11, rx125_fail
+    inc rx125_pos
+  # rx pass
+    rx125_cur."!cursor_pass"(rx125_pos, "")
+    rx125_cur."!cursor_debug"("PASS  ", "", " at pos=", rx125_pos)
+    .return (rx125_cur)
+  rx125_fail:
+    (rx125_rep, rx125_pos, $I10, $P10) = rx125_cur."!mark_fail"(0)
+    lt rx125_pos, -1, rx125_done
+    eq rx125_pos, -1, rx125_fail
+    jump $I10
+  rx125_done:
+    rx125_cur."!cursor_fail"()
+    rx125_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx125_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "quantifier"  :subid("36_1258051404.29629") :method
+.annotate "line", 53
+    $P129 = self."!protoregex"("quantifier")
+    .return ($P129)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__quantifier"  :subid("37_1258051404.29629") :method
+.annotate "line", 53
+    $P131 = self."!PREFIX__!protoregex"("quantifier")
+    .return ($P131)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "quantifier:sym<*>"  :subid("38_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx133_tgt
+    .local int rx133_pos
+    .local int rx133_off
+    .local int rx133_eos
+    .local int rx133_rep
+    .local pmc rx133_cur
+    (rx133_cur, rx133_pos, rx133_tgt, $I10) = self."!cursor_start"()
+    rx133_cur."!cursor_debug"("START ", "quantifier:sym<*>")
+    .lex unicode:"$\x{a2}", rx133_cur
+    .local pmc match
+    .lex "$/", match
+    length rx133_eos, rx133_tgt
+    set rx133_off, 0
+    lt $I10, 2, rx133_start
+    sub rx133_off, $I10, 1
+    substr rx133_tgt, rx133_tgt, rx133_off
+  rx133_start:
+.annotate "line", 54
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_137_fail
+    rx133_cur."!mark_push"(0, rx133_pos, $I10)
+  # rx literal  "*"
+    add $I11, rx133_pos, 1
+    gt $I11, rx133_eos, rx133_fail
+    sub $I11, rx133_pos, rx133_off
+    substr $S10, rx133_tgt, $I11, 1
+    ne $S10, "*", rx133_fail
+    add rx133_pos, 1
+    set_addr $I10, rxcap_137_fail
+    ($I12, $I11) = rx133_cur."!mark_peek"($I10)
+    rx133_cur."!cursor_pos"($I11)
+    ($P10) = rx133_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx133_pos, "")
+    rx133_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_137_done
+  rxcap_137_fail:
+    goto rx133_fail
+  rxcap_137_done:
+  # rx subrule "backmod" subtype=capture negate=
+    rx133_cur."!cursor_pos"(rx133_pos)
+    $P10 = rx133_cur."backmod"()
+    unless $P10, rx133_fail
+    rx133_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("backmod")
+    rx133_pos = $P10."pos"()
+  # rx pass
+    rx133_cur."!cursor_pass"(rx133_pos, "quantifier:sym<*>")
+    rx133_cur."!cursor_debug"("PASS  ", "quantifier:sym<*>", " at pos=", rx133_pos)
+    .return (rx133_cur)
+  rx133_fail:
+.annotate "line", 3
+    (rx133_rep, rx133_pos, $I10, $P10) = rx133_cur."!mark_fail"(0)
+    lt rx133_pos, -1, rx133_done
+    eq rx133_pos, -1, rx133_fail
+    jump $I10
+  rx133_done:
+    rx133_cur."!cursor_fail"()
+    rx133_cur."!cursor_debug"("FAIL  ", "quantifier:sym<*>")
+    .return (rx133_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__quantifier:sym<*>"  :subid("39_1258051404.29629") :method
+.annotate "line", 3
+    $P135 = self."!PREFIX__!subrule"("backmod", "*")
+    new $P136, "ResizablePMCArray"
+    push $P136, $P135
+    .return ($P136)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "quantifier:sym<+>"  :subid("40_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx139_tgt
+    .local int rx139_pos
+    .local int rx139_off
+    .local int rx139_eos
+    .local int rx139_rep
+    .local pmc rx139_cur
+    (rx139_cur, rx139_pos, rx139_tgt, $I10) = self."!cursor_start"()
+    rx139_cur."!cursor_debug"("START ", "quantifier:sym<+>")
+    .lex unicode:"$\x{a2}", rx139_cur
+    .local pmc match
+    .lex "$/", match
+    length rx139_eos, rx139_tgt
+    set rx139_off, 0
+    lt $I10, 2, rx139_start
+    sub rx139_off, $I10, 1
+    substr rx139_tgt, rx139_tgt, rx139_off
+  rx139_start:
+.annotate "line", 55
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_143_fail
+    rx139_cur."!mark_push"(0, rx139_pos, $I10)
+  # rx literal  "+"
+    add $I11, rx139_pos, 1
+    gt $I11, rx139_eos, rx139_fail
+    sub $I11, rx139_pos, rx139_off
+    substr $S10, rx139_tgt, $I11, 1
+    ne $S10, "+", rx139_fail
+    add rx139_pos, 1
+    set_addr $I10, rxcap_143_fail
+    ($I12, $I11) = rx139_cur."!mark_peek"($I10)
+    rx139_cur."!cursor_pos"($I11)
+    ($P10) = rx139_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx139_pos, "")
+    rx139_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_143_done
+  rxcap_143_fail:
+    goto rx139_fail
+  rxcap_143_done:
+  # rx subrule "backmod" subtype=capture negate=
+    rx139_cur."!cursor_pos"(rx139_pos)
+    $P10 = rx139_cur."backmod"()
+    unless $P10, rx139_fail
+    rx139_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("backmod")
+    rx139_pos = $P10."pos"()
+  # rx pass
+    rx139_cur."!cursor_pass"(rx139_pos, "quantifier:sym<+>")
+    rx139_cur."!cursor_debug"("PASS  ", "quantifier:sym<+>", " at pos=", rx139_pos)
+    .return (rx139_cur)
+  rx139_fail:
+.annotate "line", 3
+    (rx139_rep, rx139_pos, $I10, $P10) = rx139_cur."!mark_fail"(0)
+    lt rx139_pos, -1, rx139_done
+    eq rx139_pos, -1, rx139_fail
+    jump $I10
+  rx139_done:
+    rx139_cur."!cursor_fail"()
+    rx139_cur."!cursor_debug"("FAIL  ", "quantifier:sym<+>")
+    .return (rx139_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__quantifier:sym<+>"  :subid("41_1258051404.29629") :method
+.annotate "line", 3
+    $P141 = self."!PREFIX__!subrule"("backmod", "+")
+    new $P142, "ResizablePMCArray"
+    push $P142, $P141
+    .return ($P142)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "quantifier:sym<?>"  :subid("42_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx145_tgt
+    .local int rx145_pos
+    .local int rx145_off
+    .local int rx145_eos
+    .local int rx145_rep
+    .local pmc rx145_cur
+    (rx145_cur, rx145_pos, rx145_tgt, $I10) = self."!cursor_start"()
+    rx145_cur."!cursor_debug"("START ", "quantifier:sym<?>")
+    .lex unicode:"$\x{a2}", rx145_cur
+    .local pmc match
+    .lex "$/", match
+    length rx145_eos, rx145_tgt
+    set rx145_off, 0
+    lt $I10, 2, rx145_start
+    sub rx145_off, $I10, 1
+    substr rx145_tgt, rx145_tgt, rx145_off
+  rx145_start:
+.annotate "line", 56
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_149_fail
+    rx145_cur."!mark_push"(0, rx145_pos, $I10)
+  # rx literal  "?"
+    add $I11, rx145_pos, 1
+    gt $I11, rx145_eos, rx145_fail
+    sub $I11, rx145_pos, rx145_off
+    substr $S10, rx145_tgt, $I11, 1
+    ne $S10, "?", rx145_fail
+    add rx145_pos, 1
+    set_addr $I10, rxcap_149_fail
+    ($I12, $I11) = rx145_cur."!mark_peek"($I10)
+    rx145_cur."!cursor_pos"($I11)
+    ($P10) = rx145_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx145_pos, "")
+    rx145_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_149_done
+  rxcap_149_fail:
+    goto rx145_fail
+  rxcap_149_done:
+  # rx subrule "backmod" subtype=capture negate=
+    rx145_cur."!cursor_pos"(rx145_pos)
+    $P10 = rx145_cur."backmod"()
+    unless $P10, rx145_fail
+    rx145_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("backmod")
+    rx145_pos = $P10."pos"()
+  # rx pass
+    rx145_cur."!cursor_pass"(rx145_pos, "quantifier:sym<?>")
+    rx145_cur."!cursor_debug"("PASS  ", "quantifier:sym<?>", " at pos=", rx145_pos)
+    .return (rx145_cur)
+  rx145_fail:
+.annotate "line", 3
+    (rx145_rep, rx145_pos, $I10, $P10) = rx145_cur."!mark_fail"(0)
+    lt rx145_pos, -1, rx145_done
+    eq rx145_pos, -1, rx145_fail
+    jump $I10
+  rx145_done:
+    rx145_cur."!cursor_fail"()
+    rx145_cur."!cursor_debug"("FAIL  ", "quantifier:sym<?>")
+    .return (rx145_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__quantifier:sym<?>"  :subid("43_1258051404.29629") :method
+.annotate "line", 3
+    $P147 = self."!PREFIX__!subrule"("backmod", "?")
+    new $P148, "ResizablePMCArray"
+    push $P148, $P147
+    .return ($P148)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "quantifier:sym<**>"  :subid("44_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx151_tgt
+    .local int rx151_pos
+    .local int rx151_off
+    .local int rx151_eos
+    .local int rx151_rep
+    .local pmc rx151_cur
+    (rx151_cur, rx151_pos, rx151_tgt, $I10) = self."!cursor_start"()
+    rx151_cur."!cursor_debug"("START ", "quantifier:sym<**>")
+    rx151_cur."!cursor_caparray"("max")
+    .lex unicode:"$\x{a2}", rx151_cur
+    .local pmc match
+    .lex "$/", match
+    length rx151_eos, rx151_tgt
+    set rx151_off, 0
+    lt $I10, 2, rx151_start
+    sub rx151_off, $I10, 1
+    substr rx151_tgt, rx151_tgt, rx151_off
+  rx151_start:
+.annotate "line", 58
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_154_fail
+    rx151_cur."!mark_push"(0, rx151_pos, $I10)
+  # rx literal  "**"
+    add $I11, rx151_pos, 2
+    gt $I11, rx151_eos, rx151_fail
+    sub $I11, rx151_pos, rx151_off
+    substr $S10, rx151_tgt, $I11, 2
+    ne $S10, "**", rx151_fail
+    add rx151_pos, 2
+    set_addr $I10, rxcap_154_fail
+    ($I12, $I11) = rx151_cur."!mark_peek"($I10)
+    rx151_cur."!cursor_pos"($I11)
+    ($P10) = rx151_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx151_pos, "")
+    rx151_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_154_done
+  rxcap_154_fail:
+    goto rx151_fail
+  rxcap_154_done:
+  # rx charclass_q s r 0..-1
+    sub $I10, rx151_pos, rx151_off
+    find_not_cclass $I11, 32, rx151_tgt, $I10, rx151_eos
+    add rx151_pos, rx151_off, $I11
+  # rx subrule "backmod" subtype=capture negate=
+    rx151_cur."!cursor_pos"(rx151_pos)
+    $P10 = rx151_cur."backmod"()
+    unless $P10, rx151_fail
+    rx151_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("backmod")
+    rx151_pos = $P10."pos"()
+  # rx charclass_q s r 0..-1
+    sub $I10, rx151_pos, rx151_off
+    find_not_cclass $I11, 32, rx151_tgt, $I10, rx151_eos
+    add rx151_pos, rx151_off, $I11
+  alt155_0:
+.annotate "line", 59
+    set_addr $I10, alt155_1
+    rx151_cur."!mark_push"(0, rx151_pos, $I10)
+.annotate "line", 60
+  # rx subcapture "min"
+    set_addr $I10, rxcap_156_fail
+    rx151_cur."!mark_push"(0, rx151_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx151_pos, rx151_off
+    find_not_cclass $I11, 8, rx151_tgt, $I10, rx151_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx151_fail
+    add rx151_pos, rx151_off, $I11
+    set_addr $I10, rxcap_156_fail
+    ($I12, $I11) = rx151_cur."!mark_peek"($I10)
+    rx151_cur."!cursor_pos"($I11)
+    ($P10) = rx151_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx151_pos, "")
+    rx151_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("min")
+    goto rxcap_156_done
+  rxcap_156_fail:
+    goto rx151_fail
+  rxcap_156_done:
+  # rx rxquantr157 ** 0..1
+    set_addr $I160, rxquantr157_done
+    rx151_cur."!mark_push"(0, rx151_pos, $I160)
+  rxquantr157_loop:
+  # rx literal  ".."
+    add $I11, rx151_pos, 2
+    gt $I11, rx151_eos, rx151_fail
+    sub $I11, rx151_pos, rx151_off
+    substr $S10, rx151_tgt, $I11, 2
+    ne $S10, "..", rx151_fail
+    add rx151_pos, 2
+  # rx subcapture "max"
+    set_addr $I10, rxcap_159_fail
+    rx151_cur."!mark_push"(0, rx151_pos, $I10)
+  alt158_0:
+    set_addr $I10, alt158_1
+    rx151_cur."!mark_push"(0, rx151_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx151_pos, rx151_off
+    find_not_cclass $I11, 8, rx151_tgt, $I10, rx151_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx151_fail
+    add rx151_pos, rx151_off, $I11
+    goto alt158_end
+  alt158_1:
+  # rx literal  "*"
+    add $I11, rx151_pos, 1
+    gt $I11, rx151_eos, rx151_fail
+    sub $I11, rx151_pos, rx151_off
+    substr $S10, rx151_tgt, $I11, 1
+    ne $S10, "*", rx151_fail
+    add rx151_pos, 1
+  alt158_end:
+    set_addr $I10, rxcap_159_fail
+    ($I12, $I11) = rx151_cur."!mark_peek"($I10)
+    rx151_cur."!cursor_pos"($I11)
+    ($P10) = rx151_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx151_pos, "")
+    rx151_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("max")
+    goto rxcap_159_done
+  rxcap_159_fail:
+    goto rx151_fail
+  rxcap_159_done:
+    (rx151_rep) = rx151_cur."!mark_commit"($I160)
+  rxquantr157_done:
+    goto alt155_end
+  alt155_1:
+.annotate "line", 61
+  # rx subrule "quantified_atom" subtype=capture negate=
+    rx151_cur."!cursor_pos"(rx151_pos)
+    $P10 = rx151_cur."quantified_atom"()
+    unless $P10, rx151_fail
+    rx151_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quantified_atom")
+    rx151_pos = $P10."pos"()
+  alt155_end:
+.annotate "line", 57
+  # rx pass
+    rx151_cur."!cursor_pass"(rx151_pos, "quantifier:sym<**>")
+    rx151_cur."!cursor_debug"("PASS  ", "quantifier:sym<**>", " at pos=", rx151_pos)
+    .return (rx151_cur)
+  rx151_fail:
+.annotate "line", 3
+    (rx151_rep, rx151_pos, $I10, $P10) = rx151_cur."!mark_fail"(0)
+    lt rx151_pos, -1, rx151_done
+    eq rx151_pos, -1, rx151_fail
+    jump $I10
+  rx151_done:
+    rx151_cur."!cursor_fail"()
+    rx151_cur."!cursor_debug"("FAIL  ", "quantifier:sym<**>")
+    .return (rx151_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__quantifier:sym<**>"  :subid("45_1258051404.29629") :method
+.annotate "line", 3
+    new $P153, "ResizablePMCArray"
+    push $P153, "**"
+    .return ($P153)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backmod"  :subid("46_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P169 = "48_1258051404.29629" 
+    capture_lex $P169
+    .local string rx162_tgt
+    .local int rx162_pos
+    .local int rx162_off
+    .local int rx162_eos
+    .local int rx162_rep
+    .local pmc rx162_cur
+    (rx162_cur, rx162_pos, rx162_tgt, $I10) = self."!cursor_start"()
+    rx162_cur."!cursor_debug"("START ", "backmod")
+    .lex unicode:"$\x{a2}", rx162_cur
+    .local pmc match
+    .lex "$/", match
+    length rx162_eos, rx162_tgt
+    set rx162_off, 0
+    lt $I10, 2, rx162_start
+    sub rx162_off, $I10, 1
+    substr rx162_tgt, rx162_tgt, rx162_off
+  rx162_start:
+.annotate "line", 65
+  # rx rxquantr165 ** 0..1
+    set_addr $I166, rxquantr165_done
+    rx162_cur."!mark_push"(0, rx162_pos, $I166)
+  rxquantr165_loop:
+  # rx literal  ":"
+    add $I11, rx162_pos, 1
+    gt $I11, rx162_eos, rx162_fail
+    sub $I11, rx162_pos, rx162_off
+    substr $S10, rx162_tgt, $I11, 1
+    ne $S10, ":", rx162_fail
+    add rx162_pos, 1
+    (rx162_rep) = rx162_cur."!mark_commit"($I166)
+  rxquantr165_done:
+  alt167_0:
+    set_addr $I10, alt167_1
+    rx162_cur."!mark_push"(0, rx162_pos, $I10)
+  # rx literal  "?"
+    add $I11, rx162_pos, 1
+    gt $I11, rx162_eos, rx162_fail
+    sub $I11, rx162_pos, rx162_off
+    substr $S10, rx162_tgt, $I11, 1
+    ne $S10, "?", rx162_fail
+    add rx162_pos, 1
+    goto alt167_end
+  alt167_1:
+    set_addr $I10, alt167_2
+    rx162_cur."!mark_push"(0, rx162_pos, $I10)
+  # rx literal  "!"
+    add $I11, rx162_pos, 1
+    gt $I11, rx162_eos, rx162_fail
+    sub $I11, rx162_pos, rx162_off
+    substr $S10, rx162_tgt, $I11, 1
+    ne $S10, "!", rx162_fail
+    add rx162_pos, 1
+    goto alt167_end
+  alt167_2:
+  # rx subrule "before" subtype=zerowidth negate=1
+    rx162_cur."!cursor_pos"(rx162_pos)
+    .const 'Sub' $P169 = "48_1258051404.29629" 
+    capture_lex $P169
+    $P10 = rx162_cur."before"($P169)
+    if $P10, rx162_fail
+  alt167_end:
+  # rx pass
+    rx162_cur."!cursor_pass"(rx162_pos, "backmod")
+    rx162_cur."!cursor_debug"("PASS  ", "backmod", " at pos=", rx162_pos)
+    .return (rx162_cur)
+  rx162_fail:
+.annotate "line", 3
+    (rx162_rep, rx162_pos, $I10, $P10) = rx162_cur."!mark_fail"(0)
+    lt rx162_pos, -1, rx162_done
+    eq rx162_pos, -1, rx162_fail
+    jump $I10
+  rx162_done:
+    rx162_cur."!cursor_fail"()
+    rx162_cur."!cursor_debug"("FAIL  ", "backmod")
+    .return (rx162_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backmod"  :subid("47_1258051404.29629") :method
+.annotate "line", 3
+    new $P164, "ResizablePMCArray"
+    push $P164, ""
+    .return ($P164)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block168"  :anon :subid("48_1258051404.29629") :method :outer("46_1258051404.29629")
+.annotate "line", 65
+    .local string rx170_tgt
+    .local int rx170_pos
+    .local int rx170_off
+    .local int rx170_eos
+    .local int rx170_rep
+    .local pmc rx170_cur
+    (rx170_cur, rx170_pos, rx170_tgt, $I10) = self."!cursor_start"()
+    rx170_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx170_cur
+    .local pmc match
+    .lex "$/", match
+    length rx170_eos, rx170_tgt
+    set rx170_off, 0
+    lt $I10, 2, rx170_start
+    sub rx170_off, $I10, 1
+    substr rx170_tgt, rx170_tgt, rx170_off
+  rx170_start:
+    ge rx170_pos, 0, rxscan171_done
+  rxscan171_loop:
+    ($P10) = rx170_cur."from"()
+    inc $P10
+    set rx170_pos, $P10
+    ge rx170_pos, rx170_eos, rxscan171_done
+    set_addr $I10, rxscan171_loop
+    rx170_cur."!mark_push"(0, rx170_pos, $I10)
+  rxscan171_done:
+  # rx literal  ":"
+    add $I11, rx170_pos, 1
+    gt $I11, rx170_eos, rx170_fail
+    sub $I11, rx170_pos, rx170_off
+    substr $S10, rx170_tgt, $I11, 1
+    ne $S10, ":", rx170_fail
+    add rx170_pos, 1
+  # rx pass
+    rx170_cur."!cursor_pass"(rx170_pos, "")
+    rx170_cur."!cursor_debug"("PASS  ", "", " at pos=", rx170_pos)
+    .return (rx170_cur)
+  rx170_fail:
+    (rx170_rep, rx170_pos, $I10, $P10) = rx170_cur."!mark_fail"(0)
+    lt rx170_pos, -1, rx170_done
+    eq rx170_pos, -1, rx170_fail
+    jump $I10
+  rx170_done:
+    rx170_cur."!cursor_fail"()
+    rx170_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx170_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar"  :subid("49_1258051404.29629") :method
+.annotate "line", 67
+    $P173 = self."!protoregex"("metachar")
+    .return ($P173)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar"  :subid("50_1258051404.29629") :method
+.annotate "line", 67
+    $P175 = self."!PREFIX__!protoregex"("metachar")
+    .return ($P175)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<ws>"  :subid("51_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx177_tgt
+    .local int rx177_pos
+    .local int rx177_off
+    .local int rx177_eos
+    .local int rx177_rep
+    .local pmc rx177_cur
+    (rx177_cur, rx177_pos, rx177_tgt, $I10) = self."!cursor_start"()
+    rx177_cur."!cursor_debug"("START ", "metachar:sym<ws>")
+    .lex unicode:"$\x{a2}", rx177_cur
+    .local pmc match
+    .lex "$/", match
+    length rx177_eos, rx177_tgt
+    set rx177_off, 0
+    lt $I10, 2, rx177_start
+    sub rx177_off, $I10, 1
+    substr rx177_tgt, rx177_tgt, rx177_off
+  rx177_start:
+.annotate "line", 68
+  # rx subrule "normspace" subtype=method negate=
+    rx177_cur."!cursor_pos"(rx177_pos)
+    $P10 = rx177_cur."normspace"()
+    unless $P10, rx177_fail
+    rx177_pos = $P10."pos"()
+  # rx pass
+    rx177_cur."!cursor_pass"(rx177_pos, "metachar:sym<ws>")
+    rx177_cur."!cursor_debug"("PASS  ", "metachar:sym<ws>", " at pos=", rx177_pos)
+    .return (rx177_cur)
+  rx177_fail:
+.annotate "line", 3
+    (rx177_rep, rx177_pos, $I10, $P10) = rx177_cur."!mark_fail"(0)
+    lt rx177_pos, -1, rx177_done
+    eq rx177_pos, -1, rx177_fail
+    jump $I10
+  rx177_done:
+    rx177_cur."!cursor_fail"()
+    rx177_cur."!cursor_debug"("FAIL  ", "metachar:sym<ws>")
+    .return (rx177_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<ws>"  :subid("52_1258051404.29629") :method
+.annotate "line", 3
+    $P179 = self."!PREFIX__!subrule"("normspace", "")
+    new $P180, "ResizablePMCArray"
+    push $P180, $P179
+    .return ($P180)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<[ ]>"  :subid("53_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx182_tgt
+    .local int rx182_pos
+    .local int rx182_off
+    .local int rx182_eos
+    .local int rx182_rep
+    .local pmc rx182_cur
+    (rx182_cur, rx182_pos, rx182_tgt, $I10) = self."!cursor_start"()
+    rx182_cur."!cursor_debug"("START ", "metachar:sym<[ ]>")
+    .lex unicode:"$\x{a2}", rx182_cur
+    .local pmc match
+    .lex "$/", match
+    length rx182_eos, rx182_tgt
+    set rx182_off, 0
+    lt $I10, 2, rx182_start
+    sub rx182_off, $I10, 1
+    substr rx182_tgt, rx182_tgt, rx182_off
+  rx182_start:
+.annotate "line", 69
+  # rx literal  "["
+    add $I11, rx182_pos, 1
+    gt $I11, rx182_eos, rx182_fail
+    sub $I11, rx182_pos, rx182_off
+    substr $S10, rx182_tgt, $I11, 1
+    ne $S10, "[", rx182_fail
+    add rx182_pos, 1
+  # rx subrule "nibbler" subtype=capture negate=
+    rx182_cur."!cursor_pos"(rx182_pos)
+    $P10 = rx182_cur."nibbler"()
+    unless $P10, rx182_fail
+    rx182_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("nibbler")
+    rx182_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx182_pos, 1
+    gt $I11, rx182_eos, rx182_fail
+    sub $I11, rx182_pos, rx182_off
+    substr $S10, rx182_tgt, $I11, 1
+    ne $S10, "]", rx182_fail
+    add rx182_pos, 1
+  # rx pass
+    rx182_cur."!cursor_pass"(rx182_pos, "metachar:sym<[ ]>")
+    rx182_cur."!cursor_debug"("PASS  ", "metachar:sym<[ ]>", " at pos=", rx182_pos)
+    .return (rx182_cur)
+  rx182_fail:
+.annotate "line", 3
+    (rx182_rep, rx182_pos, $I10, $P10) = rx182_cur."!mark_fail"(0)
+    lt rx182_pos, -1, rx182_done
+    eq rx182_pos, -1, rx182_fail
+    jump $I10
+  rx182_done:
+    rx182_cur."!cursor_fail"()
+    rx182_cur."!cursor_debug"("FAIL  ", "metachar:sym<[ ]>")
+    .return (rx182_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<[ ]>"  :subid("54_1258051404.29629") :method
+.annotate "line", 3
+    $P184 = self."!PREFIX__!subrule"("nibbler", "[")
+    new $P185, "ResizablePMCArray"
+    push $P185, $P184
+    .return ($P185)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<( )>"  :subid("55_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx187_tgt
+    .local int rx187_pos
+    .local int rx187_off
+    .local int rx187_eos
+    .local int rx187_rep
+    .local pmc rx187_cur
+    (rx187_cur, rx187_pos, rx187_tgt, $I10) = self."!cursor_start"()
+    rx187_cur."!cursor_debug"("START ", "metachar:sym<( )>")
+    .lex unicode:"$\x{a2}", rx187_cur
+    .local pmc match
+    .lex "$/", match
+    length rx187_eos, rx187_tgt
+    set rx187_off, 0
+    lt $I10, 2, rx187_start
+    sub rx187_off, $I10, 1
+    substr rx187_tgt, rx187_tgt, rx187_off
+  rx187_start:
+.annotate "line", 70
+  # rx literal  "("
+    add $I11, rx187_pos, 1
+    gt $I11, rx187_eos, rx187_fail
+    sub $I11, rx187_pos, rx187_off
+    substr $S10, rx187_tgt, $I11, 1
+    ne $S10, "(", rx187_fail
+    add rx187_pos, 1
+  # rx subrule "nibbler" subtype=capture negate=
+    rx187_cur."!cursor_pos"(rx187_pos)
+    $P10 = rx187_cur."nibbler"()
+    unless $P10, rx187_fail
+    rx187_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("nibbler")
+    rx187_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx187_pos, 1
+    gt $I11, rx187_eos, rx187_fail
+    sub $I11, rx187_pos, rx187_off
+    substr $S10, rx187_tgt, $I11, 1
+    ne $S10, ")", rx187_fail
+    add rx187_pos, 1
+  # rx pass
+    rx187_cur."!cursor_pass"(rx187_pos, "metachar:sym<( )>")
+    rx187_cur."!cursor_debug"("PASS  ", "metachar:sym<( )>", " at pos=", rx187_pos)
+    .return (rx187_cur)
+  rx187_fail:
+.annotate "line", 3
+    (rx187_rep, rx187_pos, $I10, $P10) = rx187_cur."!mark_fail"(0)
+    lt rx187_pos, -1, rx187_done
+    eq rx187_pos, -1, rx187_fail
+    jump $I10
+  rx187_done:
+    rx187_cur."!cursor_fail"()
+    rx187_cur."!cursor_debug"("FAIL  ", "metachar:sym<( )>")
+    .return (rx187_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<( )>"  :subid("56_1258051404.29629") :method
+.annotate "line", 3
+    $P189 = self."!PREFIX__!subrule"("nibbler", "(")
+    new $P190, "ResizablePMCArray"
+    push $P190, $P189
+    .return ($P190)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<'>"  :subid("57_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx192_tgt
+    .local int rx192_pos
+    .local int rx192_off
+    .local int rx192_eos
+    .local int rx192_rep
+    .local pmc rx192_cur
+    (rx192_cur, rx192_pos, rx192_tgt, $I10) = self."!cursor_start"()
+    rx192_cur."!cursor_debug"("START ", "metachar:sym<'>")
+    .lex unicode:"$\x{a2}", rx192_cur
+    .local pmc match
+    .lex "$/", match
+    length rx192_eos, rx192_tgt
+    set rx192_off, 0
+    lt $I10, 2, rx192_start
+    sub rx192_off, $I10, 1
+    substr rx192_tgt, rx192_tgt, rx192_off
+  rx192_start:
+.annotate "line", 71
+  # rx subrule "quote" subtype=capture negate=
+    rx192_cur."!cursor_pos"(rx192_pos)
+    $P10 = rx192_cur."quote"()
+    unless $P10, rx192_fail
+    rx192_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quote")
+    rx192_pos = $P10."pos"()
+  # rx pass
+    rx192_cur."!cursor_pass"(rx192_pos, "metachar:sym<'>")
+    rx192_cur."!cursor_debug"("PASS  ", "metachar:sym<'>", " at pos=", rx192_pos)
+    .return (rx192_cur)
+  rx192_fail:
+.annotate "line", 3
+    (rx192_rep, rx192_pos, $I10, $P10) = rx192_cur."!mark_fail"(0)
+    lt rx192_pos, -1, rx192_done
+    eq rx192_pos, -1, rx192_fail
+    jump $I10
+  rx192_done:
+    rx192_cur."!cursor_fail"()
+    rx192_cur."!cursor_debug"("FAIL  ", "metachar:sym<'>")
+    .return (rx192_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<'>"  :subid("58_1258051404.29629") :method
+.annotate "line", 3
+    $P194 = self."!PREFIX__!subrule"("quote", "")
+    new $P195, "ResizablePMCArray"
+    push $P195, $P194
+    .return ($P195)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<.>"  :subid("59_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx197_tgt
+    .local int rx197_pos
+    .local int rx197_off
+    .local int rx197_eos
+    .local int rx197_rep
+    .local pmc rx197_cur
+    (rx197_cur, rx197_pos, rx197_tgt, $I10) = self."!cursor_start"()
+    rx197_cur."!cursor_debug"("START ", "metachar:sym<.>")
+    .lex unicode:"$\x{a2}", rx197_cur
+    .local pmc match
+    .lex "$/", match
+    length rx197_eos, rx197_tgt
+    set rx197_off, 0
+    lt $I10, 2, rx197_start
+    sub rx197_off, $I10, 1
+    substr rx197_tgt, rx197_tgt, rx197_off
+  rx197_start:
+.annotate "line", 72
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_200_fail
+    rx197_cur."!mark_push"(0, rx197_pos, $I10)
+  # rx literal  "."
+    add $I11, rx197_pos, 1
+    gt $I11, rx197_eos, rx197_fail
+    sub $I11, rx197_pos, rx197_off
+    substr $S10, rx197_tgt, $I11, 1
+    ne $S10, ".", rx197_fail
+    add rx197_pos, 1
+    set_addr $I10, rxcap_200_fail
+    ($I12, $I11) = rx197_cur."!mark_peek"($I10)
+    rx197_cur."!cursor_pos"($I11)
+    ($P10) = rx197_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx197_pos, "")
+    rx197_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_200_done
+  rxcap_200_fail:
+    goto rx197_fail
+  rxcap_200_done:
+  # rx pass
+    rx197_cur."!cursor_pass"(rx197_pos, "metachar:sym<.>")
+    rx197_cur."!cursor_debug"("PASS  ", "metachar:sym<.>", " at pos=", rx197_pos)
+    .return (rx197_cur)
+  rx197_fail:
+.annotate "line", 3
+    (rx197_rep, rx197_pos, $I10, $P10) = rx197_cur."!mark_fail"(0)
+    lt rx197_pos, -1, rx197_done
+    eq rx197_pos, -1, rx197_fail
+    jump $I10
+  rx197_done:
+    rx197_cur."!cursor_fail"()
+    rx197_cur."!cursor_debug"("FAIL  ", "metachar:sym<.>")
+    .return (rx197_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<.>"  :subid("60_1258051404.29629") :method
+.annotate "line", 3
+    new $P199, "ResizablePMCArray"
+    push $P199, "."
+    .return ($P199)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<^>"  :subid("61_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx202_tgt
+    .local int rx202_pos
+    .local int rx202_off
+    .local int rx202_eos
+    .local int rx202_rep
+    .local pmc rx202_cur
+    (rx202_cur, rx202_pos, rx202_tgt, $I10) = self."!cursor_start"()
+    rx202_cur."!cursor_debug"("START ", "metachar:sym<^>")
+    .lex unicode:"$\x{a2}", rx202_cur
+    .local pmc match
+    .lex "$/", match
+    length rx202_eos, rx202_tgt
+    set rx202_off, 0
+    lt $I10, 2, rx202_start
+    sub rx202_off, $I10, 1
+    substr rx202_tgt, rx202_tgt, rx202_off
+  rx202_start:
+.annotate "line", 73
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_205_fail
+    rx202_cur."!mark_push"(0, rx202_pos, $I10)
+  # rx literal  "^"
+    add $I11, rx202_pos, 1
+    gt $I11, rx202_eos, rx202_fail
+    sub $I11, rx202_pos, rx202_off
+    substr $S10, rx202_tgt, $I11, 1
+    ne $S10, "^", rx202_fail
+    add rx202_pos, 1
+    set_addr $I10, rxcap_205_fail
+    ($I12, $I11) = rx202_cur."!mark_peek"($I10)
+    rx202_cur."!cursor_pos"($I11)
+    ($P10) = rx202_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx202_pos, "")
+    rx202_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_205_done
+  rxcap_205_fail:
+    goto rx202_fail
+  rxcap_205_done:
+  # rx pass
+    rx202_cur."!cursor_pass"(rx202_pos, "metachar:sym<^>")
+    rx202_cur."!cursor_debug"("PASS  ", "metachar:sym<^>", " at pos=", rx202_pos)
+    .return (rx202_cur)
+  rx202_fail:
+.annotate "line", 3
+    (rx202_rep, rx202_pos, $I10, $P10) = rx202_cur."!mark_fail"(0)
+    lt rx202_pos, -1, rx202_done
+    eq rx202_pos, -1, rx202_fail
+    jump $I10
+  rx202_done:
+    rx202_cur."!cursor_fail"()
+    rx202_cur."!cursor_debug"("FAIL  ", "metachar:sym<^>")
+    .return (rx202_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<^>"  :subid("62_1258051404.29629") :method
+.annotate "line", 3
+    new $P204, "ResizablePMCArray"
+    push $P204, "^"
+    .return ($P204)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<^^>"  :subid("63_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx207_tgt
+    .local int rx207_pos
+    .local int rx207_off
+    .local int rx207_eos
+    .local int rx207_rep
+    .local pmc rx207_cur
+    (rx207_cur, rx207_pos, rx207_tgt, $I10) = self."!cursor_start"()
+    rx207_cur."!cursor_debug"("START ", "metachar:sym<^^>")
+    .lex unicode:"$\x{a2}", rx207_cur
+    .local pmc match
+    .lex "$/", match
+    length rx207_eos, rx207_tgt
+    set rx207_off, 0
+    lt $I10, 2, rx207_start
+    sub rx207_off, $I10, 1
+    substr rx207_tgt, rx207_tgt, rx207_off
+  rx207_start:
+.annotate "line", 74
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_210_fail
+    rx207_cur."!mark_push"(0, rx207_pos, $I10)
+  # rx literal  "^^"
+    add $I11, rx207_pos, 2
+    gt $I11, rx207_eos, rx207_fail
+    sub $I11, rx207_pos, rx207_off
+    substr $S10, rx207_tgt, $I11, 2
+    ne $S10, "^^", rx207_fail
+    add rx207_pos, 2
+    set_addr $I10, rxcap_210_fail
+    ($I12, $I11) = rx207_cur."!mark_peek"($I10)
+    rx207_cur."!cursor_pos"($I11)
+    ($P10) = rx207_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx207_pos, "")
+    rx207_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_210_done
+  rxcap_210_fail:
+    goto rx207_fail
+  rxcap_210_done:
+  # rx pass
+    rx207_cur."!cursor_pass"(rx207_pos, "metachar:sym<^^>")
+    rx207_cur."!cursor_debug"("PASS  ", "metachar:sym<^^>", " at pos=", rx207_pos)
+    .return (rx207_cur)
+  rx207_fail:
+.annotate "line", 3
+    (rx207_rep, rx207_pos, $I10, $P10) = rx207_cur."!mark_fail"(0)
+    lt rx207_pos, -1, rx207_done
+    eq rx207_pos, -1, rx207_fail
+    jump $I10
+  rx207_done:
+    rx207_cur."!cursor_fail"()
+    rx207_cur."!cursor_debug"("FAIL  ", "metachar:sym<^^>")
+    .return (rx207_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1258051404.29629") :method
+.annotate "line", 3
+    new $P209, "ResizablePMCArray"
+    push $P209, "^^"
+    .return ($P209)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<$>"  :subid("65_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx212_tgt
+    .local int rx212_pos
+    .local int rx212_off
+    .local int rx212_eos
+    .local int rx212_rep
+    .local pmc rx212_cur
+    (rx212_cur, rx212_pos, rx212_tgt, $I10) = self."!cursor_start"()
+    rx212_cur."!cursor_debug"("START ", "metachar:sym<$>")
+    .lex unicode:"$\x{a2}", rx212_cur
+    .local pmc match
+    .lex "$/", match
+    length rx212_eos, rx212_tgt
+    set rx212_off, 0
+    lt $I10, 2, rx212_start
+    sub rx212_off, $I10, 1
+    substr rx212_tgt, rx212_tgt, rx212_off
+  rx212_start:
+.annotate "line", 75
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_215_fail
+    rx212_cur."!mark_push"(0, rx212_pos, $I10)
+  # rx literal  "$"
+    add $I11, rx212_pos, 1
+    gt $I11, rx212_eos, rx212_fail
+    sub $I11, rx212_pos, rx212_off
+    substr $S10, rx212_tgt, $I11, 1
+    ne $S10, "$", rx212_fail
+    add rx212_pos, 1
+    set_addr $I10, rxcap_215_fail
+    ($I12, $I11) = rx212_cur."!mark_peek"($I10)
+    rx212_cur."!cursor_pos"($I11)
+    ($P10) = rx212_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx212_pos, "")
+    rx212_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_215_done
+  rxcap_215_fail:
+    goto rx212_fail
+  rxcap_215_done:
+  # rx pass
+    rx212_cur."!cursor_pass"(rx212_pos, "metachar:sym<$>")
+    rx212_cur."!cursor_debug"("PASS  ", "metachar:sym<$>", " at pos=", rx212_pos)
+    .return (rx212_cur)
+  rx212_fail:
+.annotate "line", 3
+    (rx212_rep, rx212_pos, $I10, $P10) = rx212_cur."!mark_fail"(0)
+    lt rx212_pos, -1, rx212_done
+    eq rx212_pos, -1, rx212_fail
+    jump $I10
+  rx212_done:
+    rx212_cur."!cursor_fail"()
+    rx212_cur."!cursor_debug"("FAIL  ", "metachar:sym<$>")
+    .return (rx212_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<$>"  :subid("66_1258051404.29629") :method
+.annotate "line", 3
+    new $P214, "ResizablePMCArray"
+    push $P214, "$"
+    .return ($P214)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<$$>"  :subid("67_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx217_tgt
+    .local int rx217_pos
+    .local int rx217_off
+    .local int rx217_eos
+    .local int rx217_rep
+    .local pmc rx217_cur
+    (rx217_cur, rx217_pos, rx217_tgt, $I10) = self."!cursor_start"()
+    rx217_cur."!cursor_debug"("START ", "metachar:sym<$$>")
+    .lex unicode:"$\x{a2}", rx217_cur
+    .local pmc match
+    .lex "$/", match
+    length rx217_eos, rx217_tgt
+    set rx217_off, 0
+    lt $I10, 2, rx217_start
+    sub rx217_off, $I10, 1
+    substr rx217_tgt, rx217_tgt, rx217_off
+  rx217_start:
+.annotate "line", 76
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_220_fail
+    rx217_cur."!mark_push"(0, rx217_pos, $I10)
+  # rx literal  "$$"
+    add $I11, rx217_pos, 2
+    gt $I11, rx217_eos, rx217_fail
+    sub $I11, rx217_pos, rx217_off
+    substr $S10, rx217_tgt, $I11, 2
+    ne $S10, "$$", rx217_fail
+    add rx217_pos, 2
+    set_addr $I10, rxcap_220_fail
+    ($I12, $I11) = rx217_cur."!mark_peek"($I10)
+    rx217_cur."!cursor_pos"($I11)
+    ($P10) = rx217_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx217_pos, "")
+    rx217_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_220_done
+  rxcap_220_fail:
+    goto rx217_fail
+  rxcap_220_done:
+  # rx pass
+    rx217_cur."!cursor_pass"(rx217_pos, "metachar:sym<$$>")
+    rx217_cur."!cursor_debug"("PASS  ", "metachar:sym<$$>", " at pos=", rx217_pos)
+    .return (rx217_cur)
+  rx217_fail:
+.annotate "line", 3
+    (rx217_rep, rx217_pos, $I10, $P10) = rx217_cur."!mark_fail"(0)
+    lt rx217_pos, -1, rx217_done
+    eq rx217_pos, -1, rx217_fail
+    jump $I10
+  rx217_done:
+    rx217_cur."!cursor_fail"()
+    rx217_cur."!cursor_debug"("FAIL  ", "metachar:sym<$$>")
+    .return (rx217_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1258051404.29629") :method
+.annotate "line", 3
+    new $P219, "ResizablePMCArray"
+    push $P219, "$$"
+    .return ($P219)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<:::>"  :subid("69_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx222_tgt
+    .local int rx222_pos
+    .local int rx222_off
+    .local int rx222_eos
+    .local int rx222_rep
+    .local pmc rx222_cur
+    (rx222_cur, rx222_pos, rx222_tgt, $I10) = self."!cursor_start"()
+    rx222_cur."!cursor_debug"("START ", "metachar:sym<:::>")
+    .lex unicode:"$\x{a2}", rx222_cur
+    .local pmc match
+    .lex "$/", match
+    length rx222_eos, rx222_tgt
+    set rx222_off, 0
+    lt $I10, 2, rx222_start
+    sub rx222_off, $I10, 1
+    substr rx222_tgt, rx222_tgt, rx222_off
+  rx222_start:
+.annotate "line", 77
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_226_fail
+    rx222_cur."!mark_push"(0, rx222_pos, $I10)
+  # rx literal  ":::"
+    add $I11, rx222_pos, 3
+    gt $I11, rx222_eos, rx222_fail
+    sub $I11, rx222_pos, rx222_off
+    substr $S10, rx222_tgt, $I11, 3
+    ne $S10, ":::", rx222_fail
+    add rx222_pos, 3
+    set_addr $I10, rxcap_226_fail
+    ($I12, $I11) = rx222_cur."!mark_peek"($I10)
+    rx222_cur."!cursor_pos"($I11)
+    ($P10) = rx222_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx222_pos, "")
+    rx222_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_226_done
+  rxcap_226_fail:
+    goto rx222_fail
+  rxcap_226_done:
+  # rx subrule "panic" subtype=method negate=
+    rx222_cur."!cursor_pos"(rx222_pos)
+    $P10 = rx222_cur."panic"("::: not yet implemented")
+    unless $P10, rx222_fail
+    rx222_pos = $P10."pos"()
+  # rx pass
+    rx222_cur."!cursor_pass"(rx222_pos, "metachar:sym<:::>")
+    rx222_cur."!cursor_debug"("PASS  ", "metachar:sym<:::>", " at pos=", rx222_pos)
+    .return (rx222_cur)
+  rx222_fail:
+.annotate "line", 3
+    (rx222_rep, rx222_pos, $I10, $P10) = rx222_cur."!mark_fail"(0)
+    lt rx222_pos, -1, rx222_done
+    eq rx222_pos, -1, rx222_fail
+    jump $I10
+  rx222_done:
+    rx222_cur."!cursor_fail"()
+    rx222_cur."!cursor_debug"("FAIL  ", "metachar:sym<:::>")
+    .return (rx222_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1258051404.29629") :method
+.annotate "line", 3
+    $P224 = self."!PREFIX__!subrule"("panic", ":::")
+    new $P225, "ResizablePMCArray"
+    push $P225, $P224
+    .return ($P225)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<::>"  :subid("71_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx228_tgt
+    .local int rx228_pos
+    .local int rx228_off
+    .local int rx228_eos
+    .local int rx228_rep
+    .local pmc rx228_cur
+    (rx228_cur, rx228_pos, rx228_tgt, $I10) = self."!cursor_start"()
+    rx228_cur."!cursor_debug"("START ", "metachar:sym<::>")
+    .lex unicode:"$\x{a2}", rx228_cur
+    .local pmc match
+    .lex "$/", match
+    length rx228_eos, rx228_tgt
+    set rx228_off, 0
+    lt $I10, 2, rx228_start
+    sub rx228_off, $I10, 1
+    substr rx228_tgt, rx228_tgt, rx228_off
+  rx228_start:
+.annotate "line", 78
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_232_fail
+    rx228_cur."!mark_push"(0, rx228_pos, $I10)
+  # rx literal  "::"
+    add $I11, rx228_pos, 2
+    gt $I11, rx228_eos, rx228_fail
+    sub $I11, rx228_pos, rx228_off
+    substr $S10, rx228_tgt, $I11, 2
+    ne $S10, "::", rx228_fail
+    add rx228_pos, 2
+    set_addr $I10, rxcap_232_fail
+    ($I12, $I11) = rx228_cur."!mark_peek"($I10)
+    rx228_cur."!cursor_pos"($I11)
+    ($P10) = rx228_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx228_pos, "")
+    rx228_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_232_done
+  rxcap_232_fail:
+    goto rx228_fail
+  rxcap_232_done:
+  # rx subrule "panic" subtype=method negate=
+    rx228_cur."!cursor_pos"(rx228_pos)
+    $P10 = rx228_cur."panic"(":: not yet implemented")
+    unless $P10, rx228_fail
+    rx228_pos = $P10."pos"()
+  # rx pass
+    rx228_cur."!cursor_pass"(rx228_pos, "metachar:sym<::>")
+    rx228_cur."!cursor_debug"("PASS  ", "metachar:sym<::>", " at pos=", rx228_pos)
+    .return (rx228_cur)
+  rx228_fail:
+.annotate "line", 3
+    (rx228_rep, rx228_pos, $I10, $P10) = rx228_cur."!mark_fail"(0)
+    lt rx228_pos, -1, rx228_done
+    eq rx228_pos, -1, rx228_fail
+    jump $I10
+  rx228_done:
+    rx228_cur."!cursor_fail"()
+    rx228_cur."!cursor_debug"("FAIL  ", "metachar:sym<::>")
+    .return (rx228_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<::>"  :subid("72_1258051404.29629") :method
+.annotate "line", 3
+    $P230 = self."!PREFIX__!subrule"("panic", "::")
+    new $P231, "ResizablePMCArray"
+    push $P231, $P230
+    .return ($P231)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<lwb>"  :subid("73_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx234_tgt
+    .local int rx234_pos
+    .local int rx234_off
+    .local int rx234_eos
+    .local int rx234_rep
+    .local pmc rx234_cur
+    (rx234_cur, rx234_pos, rx234_tgt, $I10) = self."!cursor_start"()
+    rx234_cur."!cursor_debug"("START ", "metachar:sym<lwb>")
+    .lex unicode:"$\x{a2}", rx234_cur
+    .local pmc match
+    .lex "$/", match
+    length rx234_eos, rx234_tgt
+    set rx234_off, 0
+    lt $I10, 2, rx234_start
+    sub rx234_off, $I10, 1
+    substr rx234_tgt, rx234_tgt, rx234_off
+  rx234_start:
+.annotate "line", 79
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_238_fail
+    rx234_cur."!mark_push"(0, rx234_pos, $I10)
+  alt237_0:
+    set_addr $I10, alt237_1
+    rx234_cur."!mark_push"(0, rx234_pos, $I10)
+  # rx literal  "<<"
+    add $I11, rx234_pos, 2
+    gt $I11, rx234_eos, rx234_fail
+    sub $I11, rx234_pos, rx234_off
+    substr $S10, rx234_tgt, $I11, 2
+    ne $S10, "<<", rx234_fail
+    add rx234_pos, 2
+    goto alt237_end
+  alt237_1:
+  # rx literal  unicode:"\x{ab}"
+    add $I11, rx234_pos, 1
+    gt $I11, rx234_eos, rx234_fail
+    sub $I11, rx234_pos, rx234_off
+    substr $S10, rx234_tgt, $I11, 1
+    ne $S10, unicode:"\x{ab}", rx234_fail
+    add rx234_pos, 1
+  alt237_end:
+    set_addr $I10, rxcap_238_fail
+    ($I12, $I11) = rx234_cur."!mark_peek"($I10)
+    rx234_cur."!cursor_pos"($I11)
+    ($P10) = rx234_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx234_pos, "")
+    rx234_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_238_done
+  rxcap_238_fail:
+    goto rx234_fail
+  rxcap_238_done:
+  # rx pass
+    rx234_cur."!cursor_pass"(rx234_pos, "metachar:sym<lwb>")
+    rx234_cur."!cursor_debug"("PASS  ", "metachar:sym<lwb>", " at pos=", rx234_pos)
+    .return (rx234_cur)
+  rx234_fail:
+.annotate "line", 3
+    (rx234_rep, rx234_pos, $I10, $P10) = rx234_cur."!mark_fail"(0)
+    lt rx234_pos, -1, rx234_done
+    eq rx234_pos, -1, rx234_fail
+    jump $I10
+  rx234_done:
+    rx234_cur."!cursor_fail"()
+    rx234_cur."!cursor_debug"("FAIL  ", "metachar:sym<lwb>")
+    .return (rx234_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1258051404.29629") :method
+.annotate "line", 3
+    new $P236, "ResizablePMCArray"
+    push $P236, unicode:"\x{ab}"
+    push $P236, "<<"
+    .return ($P236)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<rwb>"  :subid("75_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx240_tgt
+    .local int rx240_pos
+    .local int rx240_off
+    .local int rx240_eos
+    .local int rx240_rep
+    .local pmc rx240_cur
+    (rx240_cur, rx240_pos, rx240_tgt, $I10) = self."!cursor_start"()
+    rx240_cur."!cursor_debug"("START ", "metachar:sym<rwb>")
+    .lex unicode:"$\x{a2}", rx240_cur
+    .local pmc match
+    .lex "$/", match
+    length rx240_eos, rx240_tgt
+    set rx240_off, 0
+    lt $I10, 2, rx240_start
+    sub rx240_off, $I10, 1
+    substr rx240_tgt, rx240_tgt, rx240_off
+  rx240_start:
+.annotate "line", 80
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_244_fail
+    rx240_cur."!mark_push"(0, rx240_pos, $I10)
+  alt243_0:
+    set_addr $I10, alt243_1
+    rx240_cur."!mark_push"(0, rx240_pos, $I10)
+  # rx literal  ">>"
+    add $I11, rx240_pos, 2
+    gt $I11, rx240_eos, rx240_fail
+    sub $I11, rx240_pos, rx240_off
+    substr $S10, rx240_tgt, $I11, 2
+    ne $S10, ">>", rx240_fail
+    add rx240_pos, 2
+    goto alt243_end
+  alt243_1:
+  # rx literal  unicode:"\x{bb}"
+    add $I11, rx240_pos, 1
+    gt $I11, rx240_eos, rx240_fail
+    sub $I11, rx240_pos, rx240_off
+    substr $S10, rx240_tgt, $I11, 1
+    ne $S10, unicode:"\x{bb}", rx240_fail
+    add rx240_pos, 1
+  alt243_end:
+    set_addr $I10, rxcap_244_fail
+    ($I12, $I11) = rx240_cur."!mark_peek"($I10)
+    rx240_cur."!cursor_pos"($I11)
+    ($P10) = rx240_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx240_pos, "")
+    rx240_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_244_done
+  rxcap_244_fail:
+    goto rx240_fail
+  rxcap_244_done:
+  # rx pass
+    rx240_cur."!cursor_pass"(rx240_pos, "metachar:sym<rwb>")
+    rx240_cur."!cursor_debug"("PASS  ", "metachar:sym<rwb>", " at pos=", rx240_pos)
+    .return (rx240_cur)
+  rx240_fail:
+.annotate "line", 3
+    (rx240_rep, rx240_pos, $I10, $P10) = rx240_cur."!mark_fail"(0)
+    lt rx240_pos, -1, rx240_done
+    eq rx240_pos, -1, rx240_fail
+    jump $I10
+  rx240_done:
+    rx240_cur."!cursor_fail"()
+    rx240_cur."!cursor_debug"("FAIL  ", "metachar:sym<rwb>")
+    .return (rx240_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1258051404.29629") :method
+.annotate "line", 3
+    new $P242, "ResizablePMCArray"
+    push $P242, unicode:"\x{bb}"
+    push $P242, ">>"
+    .return ($P242)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<bs>"  :subid("77_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx246_tgt
+    .local int rx246_pos
+    .local int rx246_off
+    .local int rx246_eos
+    .local int rx246_rep
+    .local pmc rx246_cur
+    (rx246_cur, rx246_pos, rx246_tgt, $I10) = self."!cursor_start"()
+    rx246_cur."!cursor_debug"("START ", "metachar:sym<bs>")
+    .lex unicode:"$\x{a2}", rx246_cur
+    .local pmc match
+    .lex "$/", match
+    length rx246_eos, rx246_tgt
+    set rx246_off, 0
+    lt $I10, 2, rx246_start
+    sub rx246_off, $I10, 1
+    substr rx246_tgt, rx246_tgt, rx246_off
+  rx246_start:
+.annotate "line", 81
+  # rx literal  "\\"
+    add $I11, rx246_pos, 1
+    gt $I11, rx246_eos, rx246_fail
+    sub $I11, rx246_pos, rx246_off
+    substr $S10, rx246_tgt, $I11, 1
+    ne $S10, "\\", rx246_fail
+    add rx246_pos, 1
+  # rx subrule "backslash" subtype=capture negate=
+    rx246_cur."!cursor_pos"(rx246_pos)
+    $P10 = rx246_cur."backslash"()
+    unless $P10, rx246_fail
+    rx246_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("backslash")
+    rx246_pos = $P10."pos"()
+  # rx pass
+    rx246_cur."!cursor_pass"(rx246_pos, "metachar:sym<bs>")
+    rx246_cur."!cursor_debug"("PASS  ", "metachar:sym<bs>", " at pos=", rx246_pos)
+    .return (rx246_cur)
+  rx246_fail:
+.annotate "line", 3
+    (rx246_rep, rx246_pos, $I10, $P10) = rx246_cur."!mark_fail"(0)
+    lt rx246_pos, -1, rx246_done
+    eq rx246_pos, -1, rx246_fail
+    jump $I10
+  rx246_done:
+    rx246_cur."!cursor_fail"()
+    rx246_cur."!cursor_debug"("FAIL  ", "metachar:sym<bs>")
+    .return (rx246_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1258051404.29629") :method
+.annotate "line", 3
+    $P248 = self."!PREFIX__!subrule"("backslash", "\\")
+    new $P249, "ResizablePMCArray"
+    push $P249, $P248
+    .return ($P249)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<mod>"  :subid("79_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx251_tgt
+    .local int rx251_pos
+    .local int rx251_off
+    .local int rx251_eos
+    .local int rx251_rep
+    .local pmc rx251_cur
+    (rx251_cur, rx251_pos, rx251_tgt, $I10) = self."!cursor_start"()
+    rx251_cur."!cursor_debug"("START ", "metachar:sym<mod>")
+    .lex unicode:"$\x{a2}", rx251_cur
+    .local pmc match
+    .lex "$/", match
+    length rx251_eos, rx251_tgt
+    set rx251_off, 0
+    lt $I10, 2, rx251_start
+    sub rx251_off, $I10, 1
+    substr rx251_tgt, rx251_tgt, rx251_off
+  rx251_start:
+.annotate "line", 82
+  # rx subrule "mod_internal" subtype=capture negate=
+    rx251_cur."!cursor_pos"(rx251_pos)
+    $P10 = rx251_cur."mod_internal"()
+    unless $P10, rx251_fail
+    rx251_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("mod_internal")
+    rx251_pos = $P10."pos"()
+  # rx pass
+    rx251_cur."!cursor_pass"(rx251_pos, "metachar:sym<mod>")
+    rx251_cur."!cursor_debug"("PASS  ", "metachar:sym<mod>", " at pos=", rx251_pos)
+    .return (rx251_cur)
+  rx251_fail:
+.annotate "line", 3
+    (rx251_rep, rx251_pos, $I10, $P10) = rx251_cur."!mark_fail"(0)
+    lt rx251_pos, -1, rx251_done
+    eq rx251_pos, -1, rx251_fail
+    jump $I10
+  rx251_done:
+    rx251_cur."!cursor_fail"()
+    rx251_cur."!cursor_debug"("FAIL  ", "metachar:sym<mod>")
+    .return (rx251_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1258051404.29629") :method
+.annotate "line", 3
+    $P253 = self."!PREFIX__!subrule"("mod_internal", "")
+    new $P254, "ResizablePMCArray"
+    push $P254, $P253
+    .return ($P254)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<~>"  :subid("81_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx256_tgt
+    .local int rx256_pos
+    .local int rx256_off
+    .local int rx256_eos
+    .local int rx256_rep
+    .local pmc rx256_cur
+    (rx256_cur, rx256_pos, rx256_tgt, $I10) = self."!cursor_start"()
+    rx256_cur."!cursor_debug"("START ", "metachar:sym<~>")
+    .lex unicode:"$\x{a2}", rx256_cur
+    .local pmc match
+    .lex "$/", match
+    length rx256_eos, rx256_tgt
+    set rx256_off, 0
+    lt $I10, 2, rx256_start
+    sub rx256_off, $I10, 1
+    substr rx256_tgt, rx256_tgt, rx256_off
+  rx256_start:
+.annotate "line", 86
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_260_fail
+    rx256_cur."!mark_push"(0, rx256_pos, $I10)
+  # rx literal  "~"
+    add $I11, rx256_pos, 1
+    gt $I11, rx256_eos, rx256_fail
+    sub $I11, rx256_pos, rx256_off
+    substr $S10, rx256_tgt, $I11, 1
+    ne $S10, "~", rx256_fail
+    add rx256_pos, 1
+    set_addr $I10, rxcap_260_fail
+    ($I12, $I11) = rx256_cur."!mark_peek"($I10)
+    rx256_cur."!cursor_pos"($I11)
+    ($P10) = rx256_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx256_pos, "")
+    rx256_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_260_done
+  rxcap_260_fail:
+    goto rx256_fail
+  rxcap_260_done:
+.annotate "line", 87
+  # rx subrule "ws" subtype=method negate=
+    rx256_cur."!cursor_pos"(rx256_pos)
+    $P10 = rx256_cur."ws"()
+    unless $P10, rx256_fail
+    rx256_pos = $P10."pos"()
+  # rx subrule "quantified_atom" subtype=capture negate=
+    rx256_cur."!cursor_pos"(rx256_pos)
+    $P10 = rx256_cur."quantified_atom"()
+    unless $P10, rx256_fail
+    rx256_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("GOAL")
+    rx256_pos = $P10."pos"()
+.annotate "line", 88
+  # rx subrule "ws" subtype=method negate=
+    rx256_cur."!cursor_pos"(rx256_pos)
+    $P10 = rx256_cur."ws"()
+    unless $P10, rx256_fail
+    rx256_pos = $P10."pos"()
+  # rx subrule "quantified_atom" subtype=capture negate=
+    rx256_cur."!cursor_pos"(rx256_pos)
+    $P10 = rx256_cur."quantified_atom"()
+    unless $P10, rx256_fail
+    rx256_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("EXPR")
+    rx256_pos = $P10."pos"()
+.annotate "line", 85
+  # rx pass
+    rx256_cur."!cursor_pass"(rx256_pos, "metachar:sym<~>")
+    rx256_cur."!cursor_debug"("PASS  ", "metachar:sym<~>", " at pos=", rx256_pos)
+    .return (rx256_cur)
+  rx256_fail:
+.annotate "line", 3
+    (rx256_rep, rx256_pos, $I10, $P10) = rx256_cur."!mark_fail"(0)
+    lt rx256_pos, -1, rx256_done
+    eq rx256_pos, -1, rx256_fail
+    jump $I10
+  rx256_done:
+    rx256_cur."!cursor_fail"()
+    rx256_cur."!cursor_debug"("FAIL  ", "metachar:sym<~>")
+    .return (rx256_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<~>"  :subid("82_1258051404.29629") :method
+.annotate "line", 3
+    $P258 = self."!PREFIX__!subrule"("ws", "~")
+    new $P259, "ResizablePMCArray"
+    push $P259, $P258
+    .return ($P259)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<{*}>"  :subid("83_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx262_tgt
+    .local int rx262_pos
+    .local int rx262_off
+    .local int rx262_eos
+    .local int rx262_rep
+    .local pmc rx262_cur
+    (rx262_cur, rx262_pos, rx262_tgt, $I10) = self."!cursor_start"()
+    rx262_cur."!cursor_debug"("START ", "metachar:sym<{*}>")
+    rx262_cur."!cursor_caparray"("key")
+    .lex unicode:"$\x{a2}", rx262_cur
+    .local pmc match
+    .lex "$/", match
+    length rx262_eos, rx262_tgt
+    set rx262_off, 0
+    lt $I10, 2, rx262_start
+    sub rx262_off, $I10, 1
+    substr rx262_tgt, rx262_tgt, rx262_off
+  rx262_start:
+.annotate "line", 92
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_265_fail
+    rx262_cur."!mark_push"(0, rx262_pos, $I10)
+  # rx literal  "{*}"
+    add $I11, rx262_pos, 3
+    gt $I11, rx262_eos, rx262_fail
+    sub $I11, rx262_pos, rx262_off
+    substr $S10, rx262_tgt, $I11, 3
+    ne $S10, "{*}", rx262_fail
+    add rx262_pos, 3
+    set_addr $I10, rxcap_265_fail
+    ($I12, $I11) = rx262_cur."!mark_peek"($I10)
+    rx262_cur."!cursor_pos"($I11)
+    ($P10) = rx262_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx262_pos, "")
+    rx262_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_265_done
+  rxcap_265_fail:
+    goto rx262_fail
+  rxcap_265_done:
+.annotate "line", 93
+  # rx rxquantr266 ** 0..1
+    set_addr $I276, rxquantr266_done
+    rx262_cur."!mark_push"(0, rx262_pos, $I276)
+  rxquantr266_loop:
+  # rx rxquantr267 ** 0..*
+    set_addr $I268, rxquantr267_done
+    rx262_cur."!mark_push"(0, rx262_pos, $I268)
+  rxquantr267_loop:
+  # rx enumcharlist negate=0 
+    ge rx262_pos, rx262_eos, rx262_fail
+    sub $I10, rx262_pos, rx262_off
+    substr $S10, rx262_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx262_fail
+    inc rx262_pos
+    (rx262_rep) = rx262_cur."!mark_commit"($I268)
+    rx262_cur."!mark_push"(rx262_rep, rx262_pos, $I268)
+    goto rxquantr267_loop
+  rxquantr267_done:
+  # rx literal  "#= "
+    add $I11, rx262_pos, 3
+    gt $I11, rx262_eos, rx262_fail
+    sub $I11, rx262_pos, rx262_off
+    substr $S10, rx262_tgt, $I11, 3
+    ne $S10, "#= ", rx262_fail
+    add rx262_pos, 3
+  # rx rxquantr269 ** 0..*
+    set_addr $I270, rxquantr269_done
+    rx262_cur."!mark_push"(0, rx262_pos, $I270)
+  rxquantr269_loop:
+  # rx enumcharlist negate=0 
+    ge rx262_pos, rx262_eos, rx262_fail
+    sub $I10, rx262_pos, rx262_off
+    substr $S10, rx262_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx262_fail
+    inc rx262_pos
+    (rx262_rep) = rx262_cur."!mark_commit"($I270)
+    rx262_cur."!mark_push"(rx262_rep, rx262_pos, $I270)
+    goto rxquantr269_loop
+  rxquantr269_done:
+  # rx subcapture "key"
+    set_addr $I10, rxcap_275_fail
+    rx262_cur."!mark_push"(0, rx262_pos, $I10)
+  # rx charclass_q S r 1..-1
+    sub $I10, rx262_pos, rx262_off
+    find_cclass $I11, 32, rx262_tgt, $I10, rx262_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx262_fail
+    add rx262_pos, rx262_off, $I11
+  # rx rxquantr271 ** 0..*
+    set_addr $I274, rxquantr271_done
+    rx262_cur."!mark_push"(0, rx262_pos, $I274)
+  rxquantr271_loop:
+  # rx rxquantr272 ** 1..*
+    set_addr $I273, rxquantr272_done
+    rx262_cur."!mark_push"(0, -1, $I273)
+  rxquantr272_loop:
+  # rx enumcharlist negate=0 
+    ge rx262_pos, rx262_eos, rx262_fail
+    sub $I10, rx262_pos, rx262_off
+    substr $S10, rx262_tgt, $I10, 1
+    index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+    lt $I11, 0, rx262_fail
+    inc rx262_pos
+    (rx262_rep) = rx262_cur."!mark_commit"($I273)
+    rx262_cur."!mark_push"(rx262_rep, rx262_pos, $I273)
+    goto rxquantr272_loop
+  rxquantr272_done:
+  # rx charclass_q S r 1..-1
+    sub $I10, rx262_pos, rx262_off
+    find_cclass $I11, 32, rx262_tgt, $I10, rx262_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx262_fail
+    add rx262_pos, rx262_off, $I11
+    (rx262_rep) = rx262_cur."!mark_commit"($I274)
+    rx262_cur."!mark_push"(rx262_rep, rx262_pos, $I274)
+    goto rxquantr271_loop
+  rxquantr271_done:
+    set_addr $I10, rxcap_275_fail
+    ($I12, $I11) = rx262_cur."!mark_peek"($I10)
+    rx262_cur."!cursor_pos"($I11)
+    ($P10) = rx262_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx262_pos, "")
+    rx262_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("key")
+    goto rxcap_275_done
+  rxcap_275_fail:
+    goto rx262_fail
+  rxcap_275_done:
+    (rx262_rep) = rx262_cur."!mark_commit"($I276)
+  rxquantr266_done:
+.annotate "line", 91
+  # rx pass
+    rx262_cur."!cursor_pass"(rx262_pos, "metachar:sym<{*}>")
+    rx262_cur."!cursor_debug"("PASS  ", "metachar:sym<{*}>", " at pos=", rx262_pos)
+    .return (rx262_cur)
+  rx262_fail:
+.annotate "line", 3
+    (rx262_rep, rx262_pos, $I10, $P10) = rx262_cur."!mark_fail"(0)
+    lt rx262_pos, -1, rx262_done
+    eq rx262_pos, -1, rx262_fail
+    jump $I10
+  rx262_done:
+    rx262_cur."!cursor_fail"()
+    rx262_cur."!cursor_debug"("FAIL  ", "metachar:sym<{*}>")
+    .return (rx262_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1258051404.29629") :method
+.annotate "line", 3
+    new $P264, "ResizablePMCArray"
+    push $P264, "{*}"
+    .return ($P264)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<assert>"  :subid("85_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx278_tgt
+    .local int rx278_pos
+    .local int rx278_off
+    .local int rx278_eos
+    .local int rx278_rep
+    .local pmc rx278_cur
+    (rx278_cur, rx278_pos, rx278_tgt, $I10) = self."!cursor_start"()
+    rx278_cur."!cursor_debug"("START ", "metachar:sym<assert>")
+    .lex unicode:"$\x{a2}", rx278_cur
+    .local pmc match
+    .lex "$/", match
+    length rx278_eos, rx278_tgt
+    set rx278_off, 0
+    lt $I10, 2, rx278_start
+    sub rx278_off, $I10, 1
+    substr rx278_tgt, rx278_tgt, rx278_off
+  rx278_start:
+.annotate "line", 96
+  # rx literal  "<"
+    add $I11, rx278_pos, 1
+    gt $I11, rx278_eos, rx278_fail
+    sub $I11, rx278_pos, rx278_off
+    substr $S10, rx278_tgt, $I11, 1
+    ne $S10, "<", rx278_fail
+    add rx278_pos, 1
+  # rx subrule "assertion" subtype=capture negate=
+    rx278_cur."!cursor_pos"(rx278_pos)
+    $P10 = rx278_cur."assertion"()
+    unless $P10, rx278_fail
+    rx278_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("assertion")
+    rx278_pos = $P10."pos"()
+  alt282_0:
+.annotate "line", 97
+    set_addr $I10, alt282_1
+    rx278_cur."!mark_push"(0, rx278_pos, $I10)
+  # rx literal  ">"
+    add $I11, rx278_pos, 1
+    gt $I11, rx278_eos, rx278_fail
+    sub $I11, rx278_pos, rx278_off
+    substr $S10, rx278_tgt, $I11, 1
+    ne $S10, ">", rx278_fail
+    add rx278_pos, 1
+    goto alt282_end
+  alt282_1:
+  # rx subrule "panic" subtype=method negate=
+    rx278_cur."!cursor_pos"(rx278_pos)
+    $P10 = rx278_cur."panic"("regex assertion not terminated by angle bracket")
+    unless $P10, rx278_fail
+    rx278_pos = $P10."pos"()
+  alt282_end:
+.annotate "line", 95
+  # rx pass
+    rx278_cur."!cursor_pass"(rx278_pos, "metachar:sym<assert>")
+    rx278_cur."!cursor_debug"("PASS  ", "metachar:sym<assert>", " at pos=", rx278_pos)
+    .return (rx278_cur)
+  rx278_fail:
+.annotate "line", 3
+    (rx278_rep, rx278_pos, $I10, $P10) = rx278_cur."!mark_fail"(0)
+    lt rx278_pos, -1, rx278_done
+    eq rx278_pos, -1, rx278_fail
+    jump $I10
+  rx278_done:
+    rx278_cur."!cursor_fail"()
+    rx278_cur."!cursor_debug"("FAIL  ", "metachar:sym<assert>")
+    .return (rx278_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1258051404.29629") :method
+.annotate "line", 3
+    $P280 = self."!PREFIX__!subrule"("assertion", "<")
+    new $P281, "ResizablePMCArray"
+    push $P281, $P280
+    .return ($P281)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<var>"  :subid("87_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx284_tgt
+    .local int rx284_pos
+    .local int rx284_off
+    .local int rx284_eos
+    .local int rx284_rep
+    .local pmc rx284_cur
+    (rx284_cur, rx284_pos, rx284_tgt, $I10) = self."!cursor_start"()
+    rx284_cur."!cursor_debug"("START ", "metachar:sym<var>")
+    rx284_cur."!cursor_caparray"("quantified_atom")
+    .lex unicode:"$\x{a2}", rx284_cur
+    .local pmc match
+    .lex "$/", match
+    length rx284_eos, rx284_tgt
+    set rx284_off, 0
+    lt $I10, 2, rx284_start
+    sub rx284_off, $I10, 1
+    substr rx284_tgt, rx284_tgt, rx284_off
+  rx284_start:
+  alt287_0:
+.annotate "line", 101
+    set_addr $I10, alt287_1
+    rx284_cur."!mark_push"(0, rx284_pos, $I10)
+.annotate "line", 102
+  # rx literal  "$<"
+    add $I11, rx284_pos, 2
+    gt $I11, rx284_eos, rx284_fail
+    sub $I11, rx284_pos, rx284_off
+    substr $S10, rx284_tgt, $I11, 2
+    ne $S10, "$<", rx284_fail
+    add rx284_pos, 2
+  # rx subcapture "name"
+    set_addr $I10, rxcap_290_fail
+    rx284_cur."!mark_push"(0, rx284_pos, $I10)
+  # rx rxquantr288 ** 1..*
+    set_addr $I289, rxquantr288_done
+    rx284_cur."!mark_push"(0, -1, $I289)
+  rxquantr288_loop:
+  # rx enumcharlist negate=1 
+    ge rx284_pos, rx284_eos, rx284_fail
+    sub $I10, rx284_pos, rx284_off
+    substr $S10, rx284_tgt, $I10, 1
+    index $I11, ">", $S10
+    ge $I11, 0, rx284_fail
+    inc rx284_pos
+    (rx284_rep) = rx284_cur."!mark_commit"($I289)
+    rx284_cur."!mark_push"(rx284_rep, rx284_pos, $I289)
+    goto rxquantr288_loop
+  rxquantr288_done:
+    set_addr $I10, rxcap_290_fail
+    ($I12, $I11) = rx284_cur."!mark_peek"($I10)
+    rx284_cur."!cursor_pos"($I11)
+    ($P10) = rx284_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx284_pos, "")
+    rx284_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("name")
+    goto rxcap_290_done
+  rxcap_290_fail:
+    goto rx284_fail
+  rxcap_290_done:
+  # rx literal  ">"
+    add $I11, rx284_pos, 1
+    gt $I11, rx284_eos, rx284_fail
+    sub $I11, rx284_pos, rx284_off
+    substr $S10, rx284_tgt, $I11, 1
+    ne $S10, ">", rx284_fail
+    add rx284_pos, 1
+    goto alt287_end
+  alt287_1:
+.annotate "line", 103
+  # rx literal  "$"
+    add $I11, rx284_pos, 1
+    gt $I11, rx284_eos, rx284_fail
+    sub $I11, rx284_pos, rx284_off
+    substr $S10, rx284_tgt, $I11, 1
+    ne $S10, "$", rx284_fail
+    add rx284_pos, 1
+  # rx subcapture "pos"
+    set_addr $I10, rxcap_291_fail
+    rx284_cur."!mark_push"(0, rx284_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx284_pos, rx284_off
+    find_not_cclass $I11, 8, rx284_tgt, $I10, rx284_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx284_fail
+    add rx284_pos, rx284_off, $I11
+    set_addr $I10, rxcap_291_fail
+    ($I12, $I11) = rx284_cur."!mark_peek"($I10)
+    rx284_cur."!cursor_pos"($I11)
+    ($P10) = rx284_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx284_pos, "")
+    rx284_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("pos")
+    goto rxcap_291_done
+  rxcap_291_fail:
+    goto rx284_fail
+  rxcap_291_done:
+  alt287_end:
+.annotate "line", 106
+  # rx rxquantr292 ** 0..1
+    set_addr $I293, rxquantr292_done
+    rx284_cur."!mark_push"(0, rx284_pos, $I293)
+  rxquantr292_loop:
+  # rx subrule "ws" subtype=method negate=
+    rx284_cur."!cursor_pos"(rx284_pos)
+    $P10 = rx284_cur."ws"()
+    unless $P10, rx284_fail
+    rx284_pos = $P10."pos"()
+  # rx literal  "="
+    add $I11, rx284_pos, 1
+    gt $I11, rx284_eos, rx284_fail
+    sub $I11, rx284_pos, rx284_off
+    substr $S10, rx284_tgt, $I11, 1
+    ne $S10, "=", rx284_fail
+    add rx284_pos, 1
+  # rx subrule "ws" subtype=method negate=
+    rx284_cur."!cursor_pos"(rx284_pos)
+    $P10 = rx284_cur."ws"()
+    unless $P10, rx284_fail
+    rx284_pos = $P10."pos"()
+  # rx subrule "quantified_atom" subtype=capture negate=
+    rx284_cur."!cursor_pos"(rx284_pos)
+    $P10 = rx284_cur."quantified_atom"()
+    unless $P10, rx284_fail
+    rx284_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("quantified_atom")
+    rx284_pos = $P10."pos"()
+    (rx284_rep) = rx284_cur."!mark_commit"($I293)
+  rxquantr292_done:
+.annotate "line", 100
+  # rx pass
+    rx284_cur."!cursor_pass"(rx284_pos, "metachar:sym<var>")
+    rx284_cur."!cursor_debug"("PASS  ", "metachar:sym<var>", " at pos=", rx284_pos)
+    .return (rx284_cur)
+  rx284_fail:
+.annotate "line", 3
+    (rx284_rep, rx284_pos, $I10, $P10) = rx284_cur."!mark_fail"(0)
+    lt rx284_pos, -1, rx284_done
+    eq rx284_pos, -1, rx284_fail
+    jump $I10
+  rx284_done:
+    rx284_cur."!cursor_fail"()
+    rx284_cur."!cursor_debug"("FAIL  ", "metachar:sym<var>")
+    .return (rx284_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<var>"  :subid("88_1258051404.29629") :method
+.annotate "line", 3
+    new $P286, "ResizablePMCArray"
+    push $P286, "$"
+    push $P286, "$<"
+    .return ($P286)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "metachar:sym<PIR>"  :subid("89_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx295_tgt
+    .local int rx295_pos
+    .local int rx295_off
+    .local int rx295_eos
+    .local int rx295_rep
+    .local pmc rx295_cur
+    (rx295_cur, rx295_pos, rx295_tgt, $I10) = self."!cursor_start"()
+    rx295_cur."!cursor_debug"("START ", "metachar:sym<PIR>")
+    .lex unicode:"$\x{a2}", rx295_cur
+    .local pmc match
+    .lex "$/", match
+    length rx295_eos, rx295_tgt
+    set rx295_off, 0
+    lt $I10, 2, rx295_start
+    sub rx295_off, $I10, 1
+    substr rx295_tgt, rx295_tgt, rx295_off
+  rx295_start:
+.annotate "line", 110
+  # rx literal  ":PIR{{"
+    add $I11, rx295_pos, 6
+    gt $I11, rx295_eos, rx295_fail
+    sub $I11, rx295_pos, rx295_off
+    substr $S10, rx295_tgt, $I11, 6
+    ne $S10, ":PIR{{", rx295_fail
+    add rx295_pos, 6
+  # rx subcapture "pir"
+    set_addr $I10, rxcap_300_fail
+    rx295_cur."!mark_push"(0, rx295_pos, $I10)
+  # rx rxquantf298 ** 0..*
+    set_addr $I10, rxquantf298_loop
+    rx295_cur."!mark_push"(0, rx295_pos, $I10)
+    goto rxquantf298_done
+  rxquantf298_loop:
+  # rx charclass .
+    ge rx295_pos, rx295_eos, rx295_fail
+    inc rx295_pos
+    set_addr $I10, rxquantf298_loop
+    rx295_cur."!mark_push"($I299, rx295_pos, $I10)
+  rxquantf298_done:
+    set_addr $I10, rxcap_300_fail
+    ($I12, $I11) = rx295_cur."!mark_peek"($I10)
+    rx295_cur."!cursor_pos"($I11)
+    ($P10) = rx295_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx295_pos, "")
+    rx295_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("pir")
+    goto rxcap_300_done
+  rxcap_300_fail:
+    goto rx295_fail
+  rxcap_300_done:
+  # rx literal  "}}"
+    add $I11, rx295_pos, 2
+    gt $I11, rx295_eos, rx295_fail
+    sub $I11, rx295_pos, rx295_off
+    substr $S10, rx295_tgt, $I11, 2
+    ne $S10, "}}", rx295_fail
+    add rx295_pos, 2
+.annotate "line", 109
+  # rx pass
+    rx295_cur."!cursor_pass"(rx295_pos, "metachar:sym<PIR>")
+    rx295_cur."!cursor_debug"("PASS  ", "metachar:sym<PIR>", " at pos=", rx295_pos)
+    .return (rx295_cur)
+  rx295_fail:
+.annotate "line", 3
+    (rx295_rep, rx295_pos, $I10, $P10) = rx295_cur."!mark_fail"(0)
+    lt rx295_pos, -1, rx295_done
+    eq rx295_pos, -1, rx295_fail
+    jump $I10
+  rx295_done:
+    rx295_cur."!cursor_fail"()
+    rx295_cur."!cursor_debug"("FAIL  ", "metachar:sym<PIR>")
+    .return (rx295_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1258051404.29629") :method
+.annotate "line", 3
+    new $P297, "ResizablePMCArray"
+    push $P297, ":PIR{{"
+    .return ($P297)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash"  :subid("91_1258051404.29629") :method
+.annotate "line", 113
+    $P302 = self."!protoregex"("backslash")
+    .return ($P302)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash"  :subid("92_1258051404.29629") :method
+.annotate "line", 113
+    $P304 = self."!PREFIX__!protoregex"("backslash")
+    .return ($P304)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<w>"  :subid("93_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx306_tgt
+    .local int rx306_pos
+    .local int rx306_off
+    .local int rx306_eos
+    .local int rx306_rep
+    .local pmc rx306_cur
+    (rx306_cur, rx306_pos, rx306_tgt, $I10) = self."!cursor_start"()
+    rx306_cur."!cursor_debug"("START ", "backslash:sym<w>")
+    .lex unicode:"$\x{a2}", rx306_cur
+    .local pmc match
+    .lex "$/", match
+    length rx306_eos, rx306_tgt
+    set rx306_off, 0
+    lt $I10, 2, rx306_start
+    sub rx306_off, $I10, 1
+    substr rx306_tgt, rx306_tgt, rx306_off
+  rx306_start:
+.annotate "line", 114
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_309_fail
+    rx306_cur."!mark_push"(0, rx306_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx306_pos, rx306_eos, rx306_fail
+    sub $I10, rx306_pos, rx306_off
+    substr $S10, rx306_tgt, $I10, 1
+    index $I11, "dswnDSWN", $S10
+    lt $I11, 0, rx306_fail
+    inc rx306_pos
+    set_addr $I10, rxcap_309_fail
+    ($I12, $I11) = rx306_cur."!mark_peek"($I10)
+    rx306_cur."!cursor_pos"($I11)
+    ($P10) = rx306_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx306_pos, "")
+    rx306_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_309_done
+  rxcap_309_fail:
+    goto rx306_fail
+  rxcap_309_done:
+  # rx pass
+    rx306_cur."!cursor_pass"(rx306_pos, "backslash:sym<w>")
+    rx306_cur."!cursor_debug"("PASS  ", "backslash:sym<w>", " at pos=", rx306_pos)
+    .return (rx306_cur)
+  rx306_fail:
+.annotate "line", 3
+    (rx306_rep, rx306_pos, $I10, $P10) = rx306_cur."!mark_fail"(0)
+    lt rx306_pos, -1, rx306_done
+    eq rx306_pos, -1, rx306_fail
+    jump $I10
+  rx306_done:
+    rx306_cur."!cursor_fail"()
+    rx306_cur."!cursor_debug"("FAIL  ", "backslash:sym<w>")
+    .return (rx306_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<w>"  :subid("94_1258051404.29629") :method
+.annotate "line", 3
+    new $P308, "ResizablePMCArray"
+    push $P308, "N"
+    push $P308, "W"
+    push $P308, "S"
+    push $P308, "D"
+    push $P308, "n"
+    push $P308, "w"
+    push $P308, "s"
+    push $P308, "d"
+    .return ($P308)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<b>"  :subid("95_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx311_tgt
+    .local int rx311_pos
+    .local int rx311_off
+    .local int rx311_eos
+    .local int rx311_rep
+    .local pmc rx311_cur
+    (rx311_cur, rx311_pos, rx311_tgt, $I10) = self."!cursor_start"()
+    rx311_cur."!cursor_debug"("START ", "backslash:sym<b>")
+    .lex unicode:"$\x{a2}", rx311_cur
+    .local pmc match
+    .lex "$/", match
+    length rx311_eos, rx311_tgt
+    set rx311_off, 0
+    lt $I10, 2, rx311_start
+    sub rx311_off, $I10, 1
+    substr rx311_tgt, rx311_tgt, rx311_off
+  rx311_start:
+.annotate "line", 115
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_314_fail
+    rx311_cur."!mark_push"(0, rx311_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx311_pos, rx311_eos, rx311_fail
+    sub $I10, rx311_pos, rx311_off
+    substr $S10, rx311_tgt, $I10, 1
+    index $I11, "bB", $S10
+    lt $I11, 0, rx311_fail
+    inc rx311_pos
+    set_addr $I10, rxcap_314_fail
+    ($I12, $I11) = rx311_cur."!mark_peek"($I10)
+    rx311_cur."!cursor_pos"($I11)
+    ($P10) = rx311_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx311_pos, "")
+    rx311_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_314_done
+  rxcap_314_fail:
+    goto rx311_fail
+  rxcap_314_done:
+  # rx pass
+    rx311_cur."!cursor_pass"(rx311_pos, "backslash:sym<b>")
+    rx311_cur."!cursor_debug"("PASS  ", "backslash:sym<b>", " at pos=", rx311_pos)
+    .return (rx311_cur)
+  rx311_fail:
+.annotate "line", 3
+    (rx311_rep, rx311_pos, $I10, $P10) = rx311_cur."!mark_fail"(0)
+    lt rx311_pos, -1, rx311_done
+    eq rx311_pos, -1, rx311_fail
+    jump $I10
+  rx311_done:
+    rx311_cur."!cursor_fail"()
+    rx311_cur."!cursor_debug"("FAIL  ", "backslash:sym<b>")
+    .return (rx311_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<b>"  :subid("96_1258051404.29629") :method
+.annotate "line", 3
+    new $P313, "ResizablePMCArray"
+    push $P313, "B"
+    push $P313, "b"
+    .return ($P313)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<e>"  :subid("97_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx316_tgt
+    .local int rx316_pos
+    .local int rx316_off
+    .local int rx316_eos
+    .local int rx316_rep
+    .local pmc rx316_cur
+    (rx316_cur, rx316_pos, rx316_tgt, $I10) = self."!cursor_start"()
+    rx316_cur."!cursor_debug"("START ", "backslash:sym<e>")
+    .lex unicode:"$\x{a2}", rx316_cur
+    .local pmc match
+    .lex "$/", match
+    length rx316_eos, rx316_tgt
+    set rx316_off, 0
+    lt $I10, 2, rx316_start
+    sub rx316_off, $I10, 1
+    substr rx316_tgt, rx316_tgt, rx316_off
+  rx316_start:
+.annotate "line", 116
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_319_fail
+    rx316_cur."!mark_push"(0, rx316_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx316_pos, rx316_eos, rx316_fail
+    sub $I10, rx316_pos, rx316_off
+    substr $S10, rx316_tgt, $I10, 1
+    index $I11, "eE", $S10
+    lt $I11, 0, rx316_fail
+    inc rx316_pos
+    set_addr $I10, rxcap_319_fail
+    ($I12, $I11) = rx316_cur."!mark_peek"($I10)
+    rx316_cur."!cursor_pos"($I11)
+    ($P10) = rx316_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx316_pos, "")
+    rx316_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_319_done
+  rxcap_319_fail:
+    goto rx316_fail
+  rxcap_319_done:
+  # rx pass
+    rx316_cur."!cursor_pass"(rx316_pos, "backslash:sym<e>")
+    rx316_cur."!cursor_debug"("PASS  ", "backslash:sym<e>", " at pos=", rx316_pos)
+    .return (rx316_cur)
+  rx316_fail:
+.annotate "line", 3
+    (rx316_rep, rx316_pos, $I10, $P10) = rx316_cur."!mark_fail"(0)
+    lt rx316_pos, -1, rx316_done
+    eq rx316_pos, -1, rx316_fail
+    jump $I10
+  rx316_done:
+    rx316_cur."!cursor_fail"()
+    rx316_cur."!cursor_debug"("FAIL  ", "backslash:sym<e>")
+    .return (rx316_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<e>"  :subid("98_1258051404.29629") :method
+.annotate "line", 3
+    new $P318, "ResizablePMCArray"
+    push $P318, "E"
+    push $P318, "e"
+    .return ($P318)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<f>"  :subid("99_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx321_tgt
+    .local int rx321_pos
+    .local int rx321_off
+    .local int rx321_eos
+    .local int rx321_rep
+    .local pmc rx321_cur
+    (rx321_cur, rx321_pos, rx321_tgt, $I10) = self."!cursor_start"()
+    rx321_cur."!cursor_debug"("START ", "backslash:sym<f>")
+    .lex unicode:"$\x{a2}", rx321_cur
+    .local pmc match
+    .lex "$/", match
+    length rx321_eos, rx321_tgt
+    set rx321_off, 0
+    lt $I10, 2, rx321_start
+    sub rx321_off, $I10, 1
+    substr rx321_tgt, rx321_tgt, rx321_off
+  rx321_start:
+.annotate "line", 117
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_324_fail
+    rx321_cur."!mark_push"(0, rx321_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx321_pos, rx321_eos, rx321_fail
+    sub $I10, rx321_pos, rx321_off
+    substr $S10, rx321_tgt, $I10, 1
+    index $I11, "fF", $S10
+    lt $I11, 0, rx321_fail
+    inc rx321_pos
+    set_addr $I10, rxcap_324_fail
+    ($I12, $I11) = rx321_cur."!mark_peek"($I10)
+    rx321_cur."!cursor_pos"($I11)
+    ($P10) = rx321_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx321_pos, "")
+    rx321_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_324_done
+  rxcap_324_fail:
+    goto rx321_fail
+  rxcap_324_done:
+  # rx pass
+    rx321_cur."!cursor_pass"(rx321_pos, "backslash:sym<f>")
+    rx321_cur."!cursor_debug"("PASS  ", "backslash:sym<f>", " at pos=", rx321_pos)
+    .return (rx321_cur)
+  rx321_fail:
+.annotate "line", 3
+    (rx321_rep, rx321_pos, $I10, $P10) = rx321_cur."!mark_fail"(0)
+    lt rx321_pos, -1, rx321_done
+    eq rx321_pos, -1, rx321_fail
+    jump $I10
+  rx321_done:
+    rx321_cur."!cursor_fail"()
+    rx321_cur."!cursor_debug"("FAIL  ", "backslash:sym<f>")
+    .return (rx321_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<f>"  :subid("100_1258051404.29629") :method
+.annotate "line", 3
+    new $P323, "ResizablePMCArray"
+    push $P323, "F"
+    push $P323, "f"
+    .return ($P323)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<h>"  :subid("101_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx326_tgt
+    .local int rx326_pos
+    .local int rx326_off
+    .local int rx326_eos
+    .local int rx326_rep
+    .local pmc rx326_cur
+    (rx326_cur, rx326_pos, rx326_tgt, $I10) = self."!cursor_start"()
+    rx326_cur."!cursor_debug"("START ", "backslash:sym<h>")
+    .lex unicode:"$\x{a2}", rx326_cur
+    .local pmc match
+    .lex "$/", match
+    length rx326_eos, rx326_tgt
+    set rx326_off, 0
+    lt $I10, 2, rx326_start
+    sub rx326_off, $I10, 1
+    substr rx326_tgt, rx326_tgt, rx326_off
+  rx326_start:
+.annotate "line", 118
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_329_fail
+    rx326_cur."!mark_push"(0, rx326_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx326_pos, rx326_eos, rx326_fail
+    sub $I10, rx326_pos, rx326_off
+    substr $S10, rx326_tgt, $I10, 1
+    index $I11, "hH", $S10
+    lt $I11, 0, rx326_fail
+    inc rx326_pos
+    set_addr $I10, rxcap_329_fail
+    ($I12, $I11) = rx326_cur."!mark_peek"($I10)
+    rx326_cur."!cursor_pos"($I11)
+    ($P10) = rx326_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx326_pos, "")
+    rx326_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_329_done
+  rxcap_329_fail:
+    goto rx326_fail
+  rxcap_329_done:
+  # rx pass
+    rx326_cur."!cursor_pass"(rx326_pos, "backslash:sym<h>")
+    rx326_cur."!cursor_debug"("PASS  ", "backslash:sym<h>", " at pos=", rx326_pos)
+    .return (rx326_cur)
+  rx326_fail:
+.annotate "line", 3
+    (rx326_rep, rx326_pos, $I10, $P10) = rx326_cur."!mark_fail"(0)
+    lt rx326_pos, -1, rx326_done
+    eq rx326_pos, -1, rx326_fail
+    jump $I10
+  rx326_done:
+    rx326_cur."!cursor_fail"()
+    rx326_cur."!cursor_debug"("FAIL  ", "backslash:sym<h>")
+    .return (rx326_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<h>"  :subid("102_1258051404.29629") :method
+.annotate "line", 3
+    new $P328, "ResizablePMCArray"
+    push $P328, "H"
+    push $P328, "h"
+    .return ($P328)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<r>"  :subid("103_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx331_tgt
+    .local int rx331_pos
+    .local int rx331_off
+    .local int rx331_eos
+    .local int rx331_rep
+    .local pmc rx331_cur
+    (rx331_cur, rx331_pos, rx331_tgt, $I10) = self."!cursor_start"()
+    rx331_cur."!cursor_debug"("START ", "backslash:sym<r>")
+    .lex unicode:"$\x{a2}", rx331_cur
+    .local pmc match
+    .lex "$/", match
+    length rx331_eos, rx331_tgt
+    set rx331_off, 0
+    lt $I10, 2, rx331_start
+    sub rx331_off, $I10, 1
+    substr rx331_tgt, rx331_tgt, rx331_off
+  rx331_start:
+.annotate "line", 119
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_334_fail
+    rx331_cur."!mark_push"(0, rx331_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx331_pos, rx331_eos, rx331_fail
+    sub $I10, rx331_pos, rx331_off
+    substr $S10, rx331_tgt, $I10, 1
+    index $I11, "rR", $S10
+    lt $I11, 0, rx331_fail
+    inc rx331_pos
+    set_addr $I10, rxcap_334_fail
+    ($I12, $I11) = rx331_cur."!mark_peek"($I10)
+    rx331_cur."!cursor_pos"($I11)
+    ($P10) = rx331_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx331_pos, "")
+    rx331_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_334_done
+  rxcap_334_fail:
+    goto rx331_fail
+  rxcap_334_done:
+  # rx pass
+    rx331_cur."!cursor_pass"(rx331_pos, "backslash:sym<r>")
+    rx331_cur."!cursor_debug"("PASS  ", "backslash:sym<r>", " at pos=", rx331_pos)
+    .return (rx331_cur)
+  rx331_fail:
+.annotate "line", 3
+    (rx331_rep, rx331_pos, $I10, $P10) = rx331_cur."!mark_fail"(0)
+    lt rx331_pos, -1, rx331_done
+    eq rx331_pos, -1, rx331_fail
+    jump $I10
+  rx331_done:
+    rx331_cur."!cursor_fail"()
+    rx331_cur."!cursor_debug"("FAIL  ", "backslash:sym<r>")
+    .return (rx331_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<r>"  :subid("104_1258051404.29629") :method
+.annotate "line", 3
+    new $P333, "ResizablePMCArray"
+    push $P333, "R"
+    push $P333, "r"
+    .return ($P333)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<t>"  :subid("105_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx336_tgt
+    .local int rx336_pos
+    .local int rx336_off
+    .local int rx336_eos
+    .local int rx336_rep
+    .local pmc rx336_cur
+    (rx336_cur, rx336_pos, rx336_tgt, $I10) = self."!cursor_start"()
+    rx336_cur."!cursor_debug"("START ", "backslash:sym<t>")
+    .lex unicode:"$\x{a2}", rx336_cur
+    .local pmc match
+    .lex "$/", match
+    length rx336_eos, rx336_tgt
+    set rx336_off, 0
+    lt $I10, 2, rx336_start
+    sub rx336_off, $I10, 1
+    substr rx336_tgt, rx336_tgt, rx336_off
+  rx336_start:
+.annotate "line", 120
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_339_fail
+    rx336_cur."!mark_push"(0, rx336_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx336_pos, rx336_eos, rx336_fail
+    sub $I10, rx336_pos, rx336_off
+    substr $S10, rx336_tgt, $I10, 1
+    index $I11, "tT", $S10
+    lt $I11, 0, rx336_fail
+    inc rx336_pos
+    set_addr $I10, rxcap_339_fail
+    ($I12, $I11) = rx336_cur."!mark_peek"($I10)
+    rx336_cur."!cursor_pos"($I11)
+    ($P10) = rx336_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx336_pos, "")
+    rx336_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_339_done
+  rxcap_339_fail:
+    goto rx336_fail
+  rxcap_339_done:
+  # rx pass
+    rx336_cur."!cursor_pass"(rx336_pos, "backslash:sym<t>")
+    rx336_cur."!cursor_debug"("PASS  ", "backslash:sym<t>", " at pos=", rx336_pos)
+    .return (rx336_cur)
+  rx336_fail:
+.annotate "line", 3
+    (rx336_rep, rx336_pos, $I10, $P10) = rx336_cur."!mark_fail"(0)
+    lt rx336_pos, -1, rx336_done
+    eq rx336_pos, -1, rx336_fail
+    jump $I10
+  rx336_done:
+    rx336_cur."!cursor_fail"()
+    rx336_cur."!cursor_debug"("FAIL  ", "backslash:sym<t>")
+    .return (rx336_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<t>"  :subid("106_1258051404.29629") :method
+.annotate "line", 3
+    new $P338, "ResizablePMCArray"
+    push $P338, "T"
+    push $P338, "t"
+    .return ($P338)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<v>"  :subid("107_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx341_tgt
+    .local int rx341_pos
+    .local int rx341_off
+    .local int rx341_eos
+    .local int rx341_rep
+    .local pmc rx341_cur
+    (rx341_cur, rx341_pos, rx341_tgt, $I10) = self."!cursor_start"()
+    rx341_cur."!cursor_debug"("START ", "backslash:sym<v>")
+    .lex unicode:"$\x{a2}", rx341_cur
+    .local pmc match
+    .lex "$/", match
+    length rx341_eos, rx341_tgt
+    set rx341_off, 0
+    lt $I10, 2, rx341_start
+    sub rx341_off, $I10, 1
+    substr rx341_tgt, rx341_tgt, rx341_off
+  rx341_start:
+.annotate "line", 121
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_344_fail
+    rx341_cur."!mark_push"(0, rx341_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx341_pos, rx341_eos, rx341_fail
+    sub $I10, rx341_pos, rx341_off
+    substr $S10, rx341_tgt, $I10, 1
+    index $I11, "vV", $S10
+    lt $I11, 0, rx341_fail
+    inc rx341_pos
+    set_addr $I10, rxcap_344_fail
+    ($I12, $I11) = rx341_cur."!mark_peek"($I10)
+    rx341_cur."!cursor_pos"($I11)
+    ($P10) = rx341_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx341_pos, "")
+    rx341_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_344_done
+  rxcap_344_fail:
+    goto rx341_fail
+  rxcap_344_done:
+  # rx pass
+    rx341_cur."!cursor_pass"(rx341_pos, "backslash:sym<v>")
+    rx341_cur."!cursor_debug"("PASS  ", "backslash:sym<v>", " at pos=", rx341_pos)
+    .return (rx341_cur)
+  rx341_fail:
+.annotate "line", 3
+    (rx341_rep, rx341_pos, $I10, $P10) = rx341_cur."!mark_fail"(0)
+    lt rx341_pos, -1, rx341_done
+    eq rx341_pos, -1, rx341_fail
+    jump $I10
+  rx341_done:
+    rx341_cur."!cursor_fail"()
+    rx341_cur."!cursor_debug"("FAIL  ", "backslash:sym<v>")
+    .return (rx341_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<v>"  :subid("108_1258051404.29629") :method
+.annotate "line", 3
+    new $P343, "ResizablePMCArray"
+    push $P343, "V"
+    push $P343, "v"
+    .return ($P343)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<c>"  :subid("109_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx346_tgt
+    .local int rx346_pos
+    .local int rx346_off
+    .local int rx346_eos
+    .local int rx346_rep
+    .local pmc rx346_cur
+    (rx346_cur, rx346_pos, rx346_tgt, $I10) = self."!cursor_start"()
+    rx346_cur."!cursor_debug"("START ", "backslash:sym<c>")
+    .lex unicode:"$\x{a2}", rx346_cur
+    .local pmc match
+    .lex "$/", match
+    length rx346_eos, rx346_tgt
+    set rx346_off, 0
+    lt $I10, 2, rx346_start
+    sub rx346_off, $I10, 1
+    substr rx346_tgt, rx346_tgt, rx346_off
+  rx346_start:
+.annotate "line", 122
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_351_fail
+    rx346_cur."!mark_push"(0, rx346_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx346_pos, rx346_eos, rx346_fail
+    sub $I10, rx346_pos, rx346_off
+    substr $S10, rx346_tgt, $I10, 1
+    index $I11, "cC", $S10
+    lt $I11, 0, rx346_fail
+    inc rx346_pos
+    set_addr $I10, rxcap_351_fail
+    ($I12, $I11) = rx346_cur."!mark_peek"($I10)
+    rx346_cur."!cursor_pos"($I11)
+    ($P10) = rx346_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx346_pos, "")
+    rx346_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_351_done
+  rxcap_351_fail:
+    goto rx346_fail
+  rxcap_351_done:
+  # rx subrule "charspec" subtype=capture negate=
+    rx346_cur."!cursor_pos"(rx346_pos)
+    $P10 = rx346_cur."charspec"()
+    unless $P10, rx346_fail
+    rx346_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charspec")
+    rx346_pos = $P10."pos"()
+  # rx pass
+    rx346_cur."!cursor_pass"(rx346_pos, "backslash:sym<c>")
+    rx346_cur."!cursor_debug"("PASS  ", "backslash:sym<c>", " at pos=", rx346_pos)
+    .return (rx346_cur)
+  rx346_fail:
+.annotate "line", 3
+    (rx346_rep, rx346_pos, $I10, $P10) = rx346_cur."!mark_fail"(0)
+    lt rx346_pos, -1, rx346_done
+    eq rx346_pos, -1, rx346_fail
+    jump $I10
+  rx346_done:
+    rx346_cur."!cursor_fail"()
+    rx346_cur."!cursor_debug"("FAIL  ", "backslash:sym<c>")
+    .return (rx346_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<c>"  :subid("110_1258051404.29629") :method
+.annotate "line", 3
+    $P348 = self."!PREFIX__!subrule"("charspec", "C")
+    $P349 = self."!PREFIX__!subrule"("charspec", "c")
+    new $P350, "ResizablePMCArray"
+    push $P350, $P348
+    push $P350, $P349
+    .return ($P350)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<o>"  :subid("111_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx353_tgt
+    .local int rx353_pos
+    .local int rx353_off
+    .local int rx353_eos
+    .local int rx353_rep
+    .local pmc rx353_cur
+    (rx353_cur, rx353_pos, rx353_tgt, $I10) = self."!cursor_start"()
+    rx353_cur."!cursor_debug"("START ", "backslash:sym<o>")
+    .lex unicode:"$\x{a2}", rx353_cur
+    .local pmc match
+    .lex "$/", match
+    length rx353_eos, rx353_tgt
+    set rx353_off, 0
+    lt $I10, 2, rx353_start
+    sub rx353_off, $I10, 1
+    substr rx353_tgt, rx353_tgt, rx353_off
+  rx353_start:
+.annotate "line", 123
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_360_fail
+    rx353_cur."!mark_push"(0, rx353_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx353_pos, rx353_eos, rx353_fail
+    sub $I10, rx353_pos, rx353_off
+    substr $S10, rx353_tgt, $I10, 1
+    index $I11, "oO", $S10
+    lt $I11, 0, rx353_fail
+    inc rx353_pos
+    set_addr $I10, rxcap_360_fail
+    ($I12, $I11) = rx353_cur."!mark_peek"($I10)
+    rx353_cur."!cursor_pos"($I11)
+    ($P10) = rx353_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx353_pos, "")
+    rx353_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_360_done
+  rxcap_360_fail:
+    goto rx353_fail
+  rxcap_360_done:
+  alt361_0:
+    set_addr $I10, alt361_1
+    rx353_cur."!mark_push"(0, rx353_pos, $I10)
+  # rx subrule "octint" subtype=capture negate=
+    rx353_cur."!cursor_pos"(rx353_pos)
+    $P10 = rx353_cur."octint"()
+    unless $P10, rx353_fail
+    rx353_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octint")
+    rx353_pos = $P10."pos"()
+    goto alt361_end
+  alt361_1:
+  # rx literal  "["
+    add $I11, rx353_pos, 1
+    gt $I11, rx353_eos, rx353_fail
+    sub $I11, rx353_pos, rx353_off
+    substr $S10, rx353_tgt, $I11, 1
+    ne $S10, "[", rx353_fail
+    add rx353_pos, 1
+  # rx subrule "octints" subtype=capture negate=
+    rx353_cur."!cursor_pos"(rx353_pos)
+    $P10 = rx353_cur."octints"()
+    unless $P10, rx353_fail
+    rx353_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octints")
+    rx353_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx353_pos, 1
+    gt $I11, rx353_eos, rx353_fail
+    sub $I11, rx353_pos, rx353_off
+    substr $S10, rx353_tgt, $I11, 1
+    ne $S10, "]", rx353_fail
+    add rx353_pos, 1
+  alt361_end:
+  # rx pass
+    rx353_cur."!cursor_pass"(rx353_pos, "backslash:sym<o>")
+    rx353_cur."!cursor_debug"("PASS  ", "backslash:sym<o>", " at pos=", rx353_pos)
+    .return (rx353_cur)
+  rx353_fail:
+.annotate "line", 3
+    (rx353_rep, rx353_pos, $I10, $P10) = rx353_cur."!mark_fail"(0)
+    lt rx353_pos, -1, rx353_done
+    eq rx353_pos, -1, rx353_fail
+    jump $I10
+  rx353_done:
+    rx353_cur."!cursor_fail"()
+    rx353_cur."!cursor_debug"("FAIL  ", "backslash:sym<o>")
+    .return (rx353_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<o>"  :subid("112_1258051404.29629") :method
+.annotate "line", 3
+    $P355 = self."!PREFIX__!subrule"("octints", "O[")
+    $P356 = self."!PREFIX__!subrule"("octint", "O")
+    $P357 = self."!PREFIX__!subrule"("octints", "o[")
+    $P358 = self."!PREFIX__!subrule"("octint", "o")
+    new $P359, "ResizablePMCArray"
+    push $P359, $P355
+    push $P359, $P356
+    push $P359, $P357
+    push $P359, $P358
+    .return ($P359)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<x>"  :subid("113_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx363_tgt
+    .local int rx363_pos
+    .local int rx363_off
+    .local int rx363_eos
+    .local int rx363_rep
+    .local pmc rx363_cur
+    (rx363_cur, rx363_pos, rx363_tgt, $I10) = self."!cursor_start"()
+    rx363_cur."!cursor_debug"("START ", "backslash:sym<x>")
+    .lex unicode:"$\x{a2}", rx363_cur
+    .local pmc match
+    .lex "$/", match
+    length rx363_eos, rx363_tgt
+    set rx363_off, 0
+    lt $I10, 2, rx363_start
+    sub rx363_off, $I10, 1
+    substr rx363_tgt, rx363_tgt, rx363_off
+  rx363_start:
+.annotate "line", 124
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_370_fail
+    rx363_cur."!mark_push"(0, rx363_pos, $I10)
+  # rx enumcharlist negate=0 
+    ge rx363_pos, rx363_eos, rx363_fail
+    sub $I10, rx363_pos, rx363_off
+    substr $S10, rx363_tgt, $I10, 1
+    index $I11, "xX", $S10
+    lt $I11, 0, rx363_fail
+    inc rx363_pos
+    set_addr $I10, rxcap_370_fail
+    ($I12, $I11) = rx363_cur."!mark_peek"($I10)
+    rx363_cur."!cursor_pos"($I11)
+    ($P10) = rx363_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx363_pos, "")
+    rx363_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_370_done
+  rxcap_370_fail:
+    goto rx363_fail
+  rxcap_370_done:
+  alt371_0:
+    set_addr $I10, alt371_1
+    rx363_cur."!mark_push"(0, rx363_pos, $I10)
+  # rx subrule "hexint" subtype=capture negate=
+    rx363_cur."!cursor_pos"(rx363_pos)
+    $P10 = rx363_cur."hexint"()
+    unless $P10, rx363_fail
+    rx363_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexint")
+    rx363_pos = $P10."pos"()
+    goto alt371_end
+  alt371_1:
+  # rx literal  "["
+    add $I11, rx363_pos, 1
+    gt $I11, rx363_eos, rx363_fail
+    sub $I11, rx363_pos, rx363_off
+    substr $S10, rx363_tgt, $I11, 1
+    ne $S10, "[", rx363_fail
+    add rx363_pos, 1
+  # rx subrule "hexints" subtype=capture negate=
+    rx363_cur."!cursor_pos"(rx363_pos)
+    $P10 = rx363_cur."hexints"()
+    unless $P10, rx363_fail
+    rx363_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexints")
+    rx363_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx363_pos, 1
+    gt $I11, rx363_eos, rx363_fail
+    sub $I11, rx363_pos, rx363_off
+    substr $S10, rx363_tgt, $I11, 1
+    ne $S10, "]", rx363_fail
+    add rx363_pos, 1
+  alt371_end:
+  # rx pass
+    rx363_cur."!cursor_pass"(rx363_pos, "backslash:sym<x>")
+    rx363_cur."!cursor_debug"("PASS  ", "backslash:sym<x>", " at pos=", rx363_pos)
+    .return (rx363_cur)
+  rx363_fail:
+.annotate "line", 3
+    (rx363_rep, rx363_pos, $I10, $P10) = rx363_cur."!mark_fail"(0)
+    lt rx363_pos, -1, rx363_done
+    eq rx363_pos, -1, rx363_fail
+    jump $I10
+  rx363_done:
+    rx363_cur."!cursor_fail"()
+    rx363_cur."!cursor_debug"("FAIL  ", "backslash:sym<x>")
+    .return (rx363_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<x>"  :subid("114_1258051404.29629") :method
+.annotate "line", 3
+    $P365 = self."!PREFIX__!subrule"("hexints", "X[")
+    $P366 = self."!PREFIX__!subrule"("hexint", "X")
+    $P367 = self."!PREFIX__!subrule"("hexints", "x[")
+    $P368 = self."!PREFIX__!subrule"("hexint", "x")
+    new $P369, "ResizablePMCArray"
+    push $P369, $P365
+    push $P369, $P366
+    push $P369, $P367
+    push $P369, $P368
+    .return ($P369)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<A>"  :subid("115_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx373_tgt
+    .local int rx373_pos
+    .local int rx373_off
+    .local int rx373_eos
+    .local int rx373_rep
+    .local pmc rx373_cur
+    (rx373_cur, rx373_pos, rx373_tgt, $I10) = self."!cursor_start"()
+    rx373_cur."!cursor_debug"("START ", "backslash:sym<A>")
+    .lex unicode:"$\x{a2}", rx373_cur
+    .local pmc match
+    .lex "$/", match
+    length rx373_eos, rx373_tgt
+    set rx373_off, 0
+    lt $I10, 2, rx373_start
+    sub rx373_off, $I10, 1
+    substr rx373_tgt, rx373_tgt, rx373_off
+  rx373_start:
+.annotate "line", 125
+  # rx literal  "A"
+    add $I11, rx373_pos, 1
+    gt $I11, rx373_eos, rx373_fail
+    sub $I11, rx373_pos, rx373_off
+    substr $S10, rx373_tgt, $I11, 1
+    ne $S10, "A", rx373_fail
+    add rx373_pos, 1
+  # rx subrule "obs" subtype=method negate=
+    rx373_cur."!cursor_pos"(rx373_pos)
+    $P10 = rx373_cur."obs"("\\\\A as beginning-of-string matcher", "^")
+    unless $P10, rx373_fail
+    rx373_pos = $P10."pos"()
+  # rx pass
+    rx373_cur."!cursor_pass"(rx373_pos, "backslash:sym<A>")
+    rx373_cur."!cursor_debug"("PASS  ", "backslash:sym<A>", " at pos=", rx373_pos)
+    .return (rx373_cur)
+  rx373_fail:
+.annotate "line", 3
+    (rx373_rep, rx373_pos, $I10, $P10) = rx373_cur."!mark_fail"(0)
+    lt rx373_pos, -1, rx373_done
+    eq rx373_pos, -1, rx373_fail
+    jump $I10
+  rx373_done:
+    rx373_cur."!cursor_fail"()
+    rx373_cur."!cursor_debug"("FAIL  ", "backslash:sym<A>")
+    .return (rx373_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<A>"  :subid("116_1258051404.29629") :method
+.annotate "line", 3
+    $P375 = self."!PREFIX__!subrule"("obs", "A")
+    new $P376, "ResizablePMCArray"
+    push $P376, $P375
+    .return ($P376)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<z>"  :subid("117_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx378_tgt
+    .local int rx378_pos
+    .local int rx378_off
+    .local int rx378_eos
+    .local int rx378_rep
+    .local pmc rx378_cur
+    (rx378_cur, rx378_pos, rx378_tgt, $I10) = self."!cursor_start"()
+    rx378_cur."!cursor_debug"("START ", "backslash:sym<z>")
+    .lex unicode:"$\x{a2}", rx378_cur
+    .local pmc match
+    .lex "$/", match
+    length rx378_eos, rx378_tgt
+    set rx378_off, 0
+    lt $I10, 2, rx378_start
+    sub rx378_off, $I10, 1
+    substr rx378_tgt, rx378_tgt, rx378_off
+  rx378_start:
+.annotate "line", 126
+  # rx literal  "z"
+    add $I11, rx378_pos, 1
+    gt $I11, rx378_eos, rx378_fail
+    sub $I11, rx378_pos, rx378_off
+    substr $S10, rx378_tgt, $I11, 1
+    ne $S10, "z", rx378_fail
+    add rx378_pos, 1
+  # rx subrule "obs" subtype=method negate=
+    rx378_cur."!cursor_pos"(rx378_pos)
+    $P10 = rx378_cur."obs"("\\\\z as end-of-string matcher", "$")
+    unless $P10, rx378_fail
+    rx378_pos = $P10."pos"()
+  # rx pass
+    rx378_cur."!cursor_pass"(rx378_pos, "backslash:sym<z>")
+    rx378_cur."!cursor_debug"("PASS  ", "backslash:sym<z>", " at pos=", rx378_pos)
+    .return (rx378_cur)
+  rx378_fail:
+.annotate "line", 3
+    (rx378_rep, rx378_pos, $I10, $P10) = rx378_cur."!mark_fail"(0)
+    lt rx378_pos, -1, rx378_done
+    eq rx378_pos, -1, rx378_fail
+    jump $I10
+  rx378_done:
+    rx378_cur."!cursor_fail"()
+    rx378_cur."!cursor_debug"("FAIL  ", "backslash:sym<z>")
+    .return (rx378_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<z>"  :subid("118_1258051404.29629") :method
+.annotate "line", 3
+    $P380 = self."!PREFIX__!subrule"("obs", "z")
+    new $P381, "ResizablePMCArray"
+    push $P381, $P380
+    .return ($P381)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<Z>"  :subid("119_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx383_tgt
+    .local int rx383_pos
+    .local int rx383_off
+    .local int rx383_eos
+    .local int rx383_rep
+    .local pmc rx383_cur
+    (rx383_cur, rx383_pos, rx383_tgt, $I10) = self."!cursor_start"()
+    rx383_cur."!cursor_debug"("START ", "backslash:sym<Z>")
+    .lex unicode:"$\x{a2}", rx383_cur
+    .local pmc match
+    .lex "$/", match
+    length rx383_eos, rx383_tgt
+    set rx383_off, 0
+    lt $I10, 2, rx383_start
+    sub rx383_off, $I10, 1
+    substr rx383_tgt, rx383_tgt, rx383_off
+  rx383_start:
+.annotate "line", 127
+  # rx literal  "Z"
+    add $I11, rx383_pos, 1
+    gt $I11, rx383_eos, rx383_fail
+    sub $I11, rx383_pos, rx383_off
+    substr $S10, rx383_tgt, $I11, 1
+    ne $S10, "Z", rx383_fail
+    add rx383_pos, 1
+  # rx subrule "obs" subtype=method negate=
+    rx383_cur."!cursor_pos"(rx383_pos)
+    $P10 = rx383_cur."obs"("\\\\Z as end-of-string matcher", "\\\\n?$")
+    unless $P10, rx383_fail
+    rx383_pos = $P10."pos"()
+  # rx pass
+    rx383_cur."!cursor_pass"(rx383_pos, "backslash:sym<Z>")
+    rx383_cur."!cursor_debug"("PASS  ", "backslash:sym<Z>", " at pos=", rx383_pos)
+    .return (rx383_cur)
+  rx383_fail:
+.annotate "line", 3
+    (rx383_rep, rx383_pos, $I10, $P10) = rx383_cur."!mark_fail"(0)
+    lt rx383_pos, -1, rx383_done
+    eq rx383_pos, -1, rx383_fail
+    jump $I10
+  rx383_done:
+    rx383_cur."!cursor_fail"()
+    rx383_cur."!cursor_debug"("FAIL  ", "backslash:sym<Z>")
+    .return (rx383_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1258051404.29629") :method
+.annotate "line", 3
+    $P385 = self."!PREFIX__!subrule"("obs", "Z")
+    new $P386, "ResizablePMCArray"
+    push $P386, $P385
+    .return ($P386)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<Q>"  :subid("121_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx388_tgt
+    .local int rx388_pos
+    .local int rx388_off
+    .local int rx388_eos
+    .local int rx388_rep
+    .local pmc rx388_cur
+    (rx388_cur, rx388_pos, rx388_tgt, $I10) = self."!cursor_start"()
+    rx388_cur."!cursor_debug"("START ", "backslash:sym<Q>")
+    .lex unicode:"$\x{a2}", rx388_cur
+    .local pmc match
+    .lex "$/", match
+    length rx388_eos, rx388_tgt
+    set rx388_off, 0
+    lt $I10, 2, rx388_start
+    sub rx388_off, $I10, 1
+    substr rx388_tgt, rx388_tgt, rx388_off
+  rx388_start:
+.annotate "line", 128
+  # rx literal  "Q"
+    add $I11, rx388_pos, 1
+    gt $I11, rx388_eos, rx388_fail
+    sub $I11, rx388_pos, rx388_off
+    substr $S10, rx388_tgt, $I11, 1
+    ne $S10, "Q", rx388_fail
+    add rx388_pos, 1
+  # rx subrule "obs" subtype=method negate=
+    rx388_cur."!cursor_pos"(rx388_pos)
+    $P10 = rx388_cur."obs"("\\\\Q as quotemeta", "quotes or literal variable match")
+    unless $P10, rx388_fail
+    rx388_pos = $P10."pos"()
+  # rx pass
+    rx388_cur."!cursor_pass"(rx388_pos, "backslash:sym<Q>")
+    rx388_cur."!cursor_debug"("PASS  ", "backslash:sym<Q>", " at pos=", rx388_pos)
+    .return (rx388_cur)
+  rx388_fail:
+.annotate "line", 3
+    (rx388_rep, rx388_pos, $I10, $P10) = rx388_cur."!mark_fail"(0)
+    lt rx388_pos, -1, rx388_done
+    eq rx388_pos, -1, rx388_fail
+    jump $I10
+  rx388_done:
+    rx388_cur."!cursor_fail"()
+    rx388_cur."!cursor_debug"("FAIL  ", "backslash:sym<Q>")
+    .return (rx388_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1258051404.29629") :method
+.annotate "line", 3
+    $P390 = self."!PREFIX__!subrule"("obs", "Q")
+    new $P391, "ResizablePMCArray"
+    push $P391, $P390
+    .return ($P391)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<misc>"  :subid("123_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx393_tgt
+    .local int rx393_pos
+    .local int rx393_off
+    .local int rx393_eos
+    .local int rx393_rep
+    .local pmc rx393_cur
+    (rx393_cur, rx393_pos, rx393_tgt, $I10) = self."!cursor_start"()
+    rx393_cur."!cursor_debug"("START ", "backslash:sym<misc>")
+    .lex unicode:"$\x{a2}", rx393_cur
+    .local pmc match
+    .lex "$/", match
+    length rx393_eos, rx393_tgt
+    set rx393_off, 0
+    lt $I10, 2, rx393_start
+    sub rx393_off, $I10, 1
+    substr rx393_tgt, rx393_tgt, rx393_off
+  rx393_start:
+.annotate "line", 129
+  # rx charclass W
+    ge rx393_pos, rx393_eos, rx393_fail
+    sub $I10, rx393_pos, rx393_off
+    is_cclass $I11, 8192, rx393_tgt, $I10
+    if $I11, rx393_fail
+    inc rx393_pos
+  # rx pass
+    rx393_cur."!cursor_pass"(rx393_pos, "backslash:sym<misc>")
+    rx393_cur."!cursor_debug"("PASS  ", "backslash:sym<misc>", " at pos=", rx393_pos)
+    .return (rx393_cur)
+  rx393_fail:
+.annotate "line", 3
+    (rx393_rep, rx393_pos, $I10, $P10) = rx393_cur."!mark_fail"(0)
+    lt rx393_pos, -1, rx393_done
+    eq rx393_pos, -1, rx393_fail
+    jump $I10
+  rx393_done:
+    rx393_cur."!cursor_fail"()
+    rx393_cur."!cursor_debug"("FAIL  ", "backslash:sym<misc>")
+    .return (rx393_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1258051404.29629") :method
+.annotate "line", 3
+    new $P395, "ResizablePMCArray"
+    push $P395, ""
+    .return ($P395)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "assertion"  :subid("125_1258051404.29629") :method
+.annotate "line", 131
+    $P397 = self."!protoregex"("assertion")
+    .return ($P397)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__assertion"  :subid("126_1258051404.29629") :method
+.annotate "line", 131
+    $P399 = self."!PREFIX__!protoregex"("assertion")
+    .return ($P399)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "assertion:sym<?>"  :subid("127_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P407 = "129_1258051404.29629" 
+    capture_lex $P407
+    .local string rx401_tgt
+    .local int rx401_pos
+    .local int rx401_off
+    .local int rx401_eos
+    .local int rx401_rep
+    .local pmc rx401_cur
+    (rx401_cur, rx401_pos, rx401_tgt, $I10) = self."!cursor_start"()
+    rx401_cur."!cursor_debug"("START ", "assertion:sym<?>")
+    .lex unicode:"$\x{a2}", rx401_cur
+    .local pmc match
+    .lex "$/", match
+    length rx401_eos, rx401_tgt
+    set rx401_off, 0
+    lt $I10, 2, rx401_start
+    sub rx401_off, $I10, 1
+    substr rx401_tgt, rx401_tgt, rx401_off
+  rx401_start:
+.annotate "line", 133
+  # rx literal  "?"
+    add $I11, rx401_pos, 1
+    gt $I11, rx401_eos, rx401_fail
+    sub $I11, rx401_pos, rx401_off
+    substr $S10, rx401_tgt, $I11, 1
+    ne $S10, "?", rx401_fail
+    add rx401_pos, 1
+  alt405_0:
+    set_addr $I10, alt405_1
+    rx401_cur."!mark_push"(0, rx401_pos, $I10)
+  # rx subrule "before" subtype=zerowidth negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    .const 'Sub' $P407 = "129_1258051404.29629" 
+    capture_lex $P407
+    $P10 = rx401_cur."before"($P407)
+    unless $P10, rx401_fail
+    goto alt405_end
+  alt405_1:
+  # rx subrule "assertion" subtype=capture negate=
+    rx401_cur."!cursor_pos"(rx401_pos)
+    $P10 = rx401_cur."assertion"()
+    unless $P10, rx401_fail
+    rx401_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("assertion")
+    rx401_pos = $P10."pos"()
+  alt405_end:
+  # rx pass
+    rx401_cur."!cursor_pass"(rx401_pos, "assertion:sym<?>")
+    rx401_cur."!cursor_debug"("PASS  ", "assertion:sym<?>", " at pos=", rx401_pos)
+    .return (rx401_cur)
+  rx401_fail:
+.annotate "line", 3
+    (rx401_rep, rx401_pos, $I10, $P10) = rx401_cur."!mark_fail"(0)
+    lt rx401_pos, -1, rx401_done
+    eq rx401_pos, -1, rx401_fail
+    jump $I10
+  rx401_done:
+    rx401_cur."!cursor_fail"()
+    rx401_cur."!cursor_debug"("FAIL  ", "assertion:sym<?>")
+    .return (rx401_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__assertion:sym<?>"  :subid("128_1258051404.29629") :method
+.annotate "line", 3
+    $P403 = self."!PREFIX__!subrule"("assertion", "?")
+    new $P404, "ResizablePMCArray"
+    push $P404, $P403
+    push $P404, "?"
+    .return ($P404)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block406"  :anon :subid("129_1258051404.29629") :method :outer("127_1258051404.29629")
+.annotate "line", 133
+    .local string rx408_tgt
+    .local int rx408_pos
+    .local int rx408_off
+    .local int rx408_eos
+    .local int rx408_rep
+    .local pmc rx408_cur
+    (rx408_cur, rx408_pos, rx408_tgt, $I10) = self."!cursor_start"()
+    rx408_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx408_cur
+    .local pmc match
+    .lex "$/", match
+    length rx408_eos, rx408_tgt
+    set rx408_off, 0
+    lt $I10, 2, rx408_start
+    sub rx408_off, $I10, 1
+    substr rx408_tgt, rx408_tgt, rx408_off
+  rx408_start:
+    ge rx408_pos, 0, rxscan409_done
+  rxscan409_loop:
+    ($P10) = rx408_cur."from"()
+    inc $P10
+    set rx408_pos, $P10
+    ge rx408_pos, rx408_eos, rxscan409_done
+    set_addr $I10, rxscan409_loop
+    rx408_cur."!mark_push"(0, rx408_pos, $I10)
+  rxscan409_done:
+  # rx literal  ">"
+    add $I11, rx408_pos, 1
+    gt $I11, rx408_eos, rx408_fail
+    sub $I11, rx408_pos, rx408_off
+    substr $S10, rx408_tgt, $I11, 1
+    ne $S10, ">", rx408_fail
+    add rx408_pos, 1
+  # rx pass
+    rx408_cur."!cursor_pass"(rx408_pos, "")
+    rx408_cur."!cursor_debug"("PASS  ", "", " at pos=", rx408_pos)
+    .return (rx408_cur)
+  rx408_fail:
+    (rx408_rep, rx408_pos, $I10, $P10) = rx408_cur."!mark_fail"(0)
+    lt rx408_pos, -1, rx408_done
+    eq rx408_pos, -1, rx408_fail
+    jump $I10
+  rx408_done:
+    rx408_cur."!cursor_fail"()
+    rx408_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx408_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "assertion:sym<!>"  :subid("130_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P417 = "132_1258051404.29629" 
+    capture_lex $P417
+    .local string rx411_tgt
+    .local int rx411_pos
+    .local int rx411_off
+    .local int rx411_eos
+    .local int rx411_rep
+    .local pmc rx411_cur
+    (rx411_cur, rx411_pos, rx411_tgt, $I10) = self."!cursor_start"()
+    rx411_cur."!cursor_debug"("START ", "assertion:sym<!>")
+    .lex unicode:"$\x{a2}", rx411_cur
+    .local pmc match
+    .lex "$/", match
+    length rx411_eos, rx411_tgt
+    set rx411_off, 0
+    lt $I10, 2, rx411_start
+    sub rx411_off, $I10, 1
+    substr rx411_tgt, rx411_tgt, rx411_off
+  rx411_start:
+.annotate "line", 134
+  # rx literal  "!"
+    add $I11, rx411_pos, 1
+    gt $I11, rx411_eos, rx411_fail
+    sub $I11, rx411_pos, rx411_off
+    substr $S10, rx411_tgt, $I11, 1
+    ne $S10, "!", rx411_fail
+    add rx411_pos, 1
+  alt415_0:
+    set_addr $I10, alt415_1
+    rx411_cur."!mark_push"(0, rx411_pos, $I10)
+  # rx subrule "before" subtype=zerowidth negate=
+    rx411_cur."!cursor_pos"(rx411_pos)
+    .const 'Sub' $P417 = "132_1258051404.29629" 
+    capture_lex $P417
+    $P10 = rx411_cur."before"($P417)
+    unless $P10, rx411_fail
+    goto alt415_end
+  alt415_1:
+  # rx subrule "assertion" subtype=capture negate=
+    rx411_cur."!cursor_pos"(rx411_pos)
+    $P10 = rx411_cur."assertion"()
+    unless $P10, rx411_fail
+    rx411_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("assertion")
+    rx411_pos = $P10."pos"()
+  alt415_end:
+  # rx pass
+    rx411_cur."!cursor_pass"(rx411_pos, "assertion:sym<!>")
+    rx411_cur."!cursor_debug"("PASS  ", "assertion:sym<!>", " at pos=", rx411_pos)
+    .return (rx411_cur)
+  rx411_fail:
+.annotate "line", 3
+    (rx411_rep, rx411_pos, $I10, $P10) = rx411_cur."!mark_fail"(0)
+    lt rx411_pos, -1, rx411_done
+    eq rx411_pos, -1, rx411_fail
+    jump $I10
+  rx411_done:
+    rx411_cur."!cursor_fail"()
+    rx411_cur."!cursor_debug"("FAIL  ", "assertion:sym<!>")
+    .return (rx411_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__assertion:sym<!>"  :subid("131_1258051404.29629") :method
+.annotate "line", 3
+    $P413 = self."!PREFIX__!subrule"("assertion", "!")
+    new $P414, "ResizablePMCArray"
+    push $P414, $P413
+    push $P414, "!"
+    .return ($P414)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block416"  :anon :subid("132_1258051404.29629") :method :outer("130_1258051404.29629")
+.annotate "line", 134
+    .local string rx418_tgt
+    .local int rx418_pos
+    .local int rx418_off
+    .local int rx418_eos
+    .local int rx418_rep
+    .local pmc rx418_cur
+    (rx418_cur, rx418_pos, rx418_tgt, $I10) = self."!cursor_start"()
+    rx418_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx418_cur
+    .local pmc match
+    .lex "$/", match
+    length rx418_eos, rx418_tgt
+    set rx418_off, 0
+    lt $I10, 2, rx418_start
+    sub rx418_off, $I10, 1
+    substr rx418_tgt, rx418_tgt, rx418_off
+  rx418_start:
+    ge rx418_pos, 0, rxscan419_done
+  rxscan419_loop:
+    ($P10) = rx418_cur."from"()
+    inc $P10
+    set rx418_pos, $P10
+    ge rx418_pos, rx418_eos, rxscan419_done
+    set_addr $I10, rxscan419_loop
+    rx418_cur."!mark_push"(0, rx418_pos, $I10)
+  rxscan419_done:
+  # rx literal  ">"
+    add $I11, rx418_pos, 1
+    gt $I11, rx418_eos, rx418_fail
+    sub $I11, rx418_pos, rx418_off
+    substr $S10, rx418_tgt, $I11, 1
+    ne $S10, ">", rx418_fail
+    add rx418_pos, 1
+  # rx pass
+    rx418_cur."!cursor_pass"(rx418_pos, "")
+    rx418_cur."!cursor_debug"("PASS  ", "", " at pos=", rx418_pos)
+    .return (rx418_cur)
+  rx418_fail:
+    (rx418_rep, rx418_pos, $I10, $P10) = rx418_cur."!mark_fail"(0)
+    lt rx418_pos, -1, rx418_done
+    eq rx418_pos, -1, rx418_fail
+    jump $I10
+  rx418_done:
+    rx418_cur."!cursor_fail"()
+    rx418_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx418_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "assertion:sym<method>"  :subid("133_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx421_tgt
+    .local int rx421_pos
+    .local int rx421_off
+    .local int rx421_eos
+    .local int rx421_rep
+    .local pmc rx421_cur
+    (rx421_cur, rx421_pos, rx421_tgt, $I10) = self."!cursor_start"()
+    rx421_cur."!cursor_debug"("START ", "assertion:sym<method>")
+    .lex unicode:"$\x{a2}", rx421_cur
+    .local pmc match
+    .lex "$/", match
+    length rx421_eos, rx421_tgt
+    set rx421_off, 0
+    lt $I10, 2, rx421_start
+    sub rx421_off, $I10, 1
+    substr rx421_tgt, rx421_tgt, rx421_off
+  rx421_start:
+.annotate "line", 137
+  # rx literal  "."
+    add $I11, rx421_pos, 1
+    gt $I11, rx421_eos, rx421_fail
+    sub $I11, rx421_pos, rx421_off
+    substr $S10, rx421_tgt, $I11, 1
+    ne $S10, ".", rx421_fail
+    add rx421_pos, 1
+  # rx subrule "assertion" subtype=capture negate=
+    rx421_cur."!cursor_pos"(rx421_pos)
+    $P10 = rx421_cur."assertion"()
+    unless $P10, rx421_fail
+    rx421_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("assertion")
+    rx421_pos = $P10."pos"()
+.annotate "line", 136
+  # rx pass
+    rx421_cur."!cursor_pass"(rx421_pos, "assertion:sym<method>")
+    rx421_cur."!cursor_debug"("PASS  ", "assertion:sym<method>", " at pos=", rx421_pos)
+    .return (rx421_cur)
+  rx421_fail:
+.annotate "line", 3
+    (rx421_rep, rx421_pos, $I10, $P10) = rx421_cur."!mark_fail"(0)
+    lt rx421_pos, -1, rx421_done
+    eq rx421_pos, -1, rx421_fail
+    jump $I10
+  rx421_done:
+    rx421_cur."!cursor_fail"()
+    rx421_cur."!cursor_debug"("FAIL  ", "assertion:sym<method>")
+    .return (rx421_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__assertion:sym<method>"  :subid("134_1258051404.29629") :method
+.annotate "line", 3
+    $P423 = self."!PREFIX__!subrule"("assertion", ".")
+    new $P424, "ResizablePMCArray"
+    push $P424, $P423
+    .return ($P424)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "assertion:sym<name>"  :subid("135_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P433 = "137_1258051404.29629" 
+    capture_lex $P433
+    .local string rx426_tgt
+    .local int rx426_pos
+    .local int rx426_off
+    .local int rx426_eos
+    .local int rx426_rep
+    .local pmc rx426_cur
+    (rx426_cur, rx426_pos, rx426_tgt, $I10) = self."!cursor_start"()
+    rx426_cur."!cursor_debug"("START ", "assertion:sym<name>")
+    rx426_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
+    .lex unicode:"$\x{a2}", rx426_cur
+    .local pmc match
+    .lex "$/", match
+    length rx426_eos, rx426_tgt
+    set rx426_off, 0
+    lt $I10, 2, rx426_start
+    sub rx426_off, $I10, 1
+    substr rx426_tgt, rx426_tgt, rx426_off
+  rx426_start:
+.annotate "line", 141
+  # rx subcapture "longname"
+    set_addr $I10, rxcap_429_fail
+    rx426_cur."!mark_push"(0, rx426_pos, $I10)
+  # rx charclass_q w r 1..-1
+    sub $I10, rx426_pos, rx426_off
+    find_not_cclass $I11, 8192, rx426_tgt, $I10, rx426_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx426_fail
+    add rx426_pos, rx426_off, $I11
+    set_addr $I10, rxcap_429_fail
+    ($I12, $I11) = rx426_cur."!mark_peek"($I10)
+    rx426_cur."!cursor_pos"($I11)
+    ($P10) = rx426_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx426_pos, "")
+    rx426_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("longname")
+    goto rxcap_429_done
+  rxcap_429_fail:
+    goto rx426_fail
+  rxcap_429_done:
+.annotate "line", 148
+  # rx rxquantr430 ** 0..1
+    set_addr $I436, rxquantr430_done
+    rx426_cur."!mark_push"(0, rx426_pos, $I436)
+  rxquantr430_loop:
+  alt431_0:
+.annotate "line", 142
+    set_addr $I10, alt431_1
+    rx426_cur."!mark_push"(0, rx426_pos, $I10)
+.annotate "line", 143
+  # rx subrule "before" subtype=zerowidth negate=
+    rx426_cur."!cursor_pos"(rx426_pos)
+    .const 'Sub' $P433 = "137_1258051404.29629" 
+    capture_lex $P433
+    $P10 = rx426_cur."before"($P433)
+    unless $P10, rx426_fail
+    goto alt431_end
+  alt431_1:
+    set_addr $I10, alt431_2
+    rx426_cur."!mark_push"(0, rx426_pos, $I10)
+.annotate "line", 144
+  # rx literal  "="
+    add $I11, rx426_pos, 1
+    gt $I11, rx426_eos, rx426_fail
+    sub $I11, rx426_pos, rx426_off
+    substr $S10, rx426_tgt, $I11, 1
+    ne $S10, "=", rx426_fail
+    add rx426_pos, 1
+  # rx subrule "assertion" subtype=capture negate=
+    rx426_cur."!cursor_pos"(rx426_pos)
+    $P10 = rx426_cur."assertion"()
+    unless $P10, rx426_fail
+    rx426_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("assertion")
+    rx426_pos = $P10."pos"()
+    goto alt431_end
+  alt431_2:
+    set_addr $I10, alt431_3
+    rx426_cur."!mark_push"(0, rx426_pos, $I10)
+.annotate "line", 145
+  # rx literal  ":"
+    add $I11, rx426_pos, 1
+    gt $I11, rx426_eos, rx426_fail
+    sub $I11, rx426_pos, rx426_off
+    substr $S10, rx426_tgt, $I11, 1
+    ne $S10, ":", rx426_fail
+    add rx426_pos, 1
+  # rx subrule "arglist" subtype=capture negate=
+    rx426_cur."!cursor_pos"(rx426_pos)
+    $P10 = rx426_cur."arglist"()
+    unless $P10, rx426_fail
+    rx426_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx426_pos = $P10."pos"()
+    goto alt431_end
+  alt431_3:
+    set_addr $I10, alt431_4
+    rx426_cur."!mark_push"(0, rx426_pos, $I10)
+.annotate "line", 146
+  # rx literal  "("
+    add $I11, rx426_pos, 1
+    gt $I11, rx426_eos, rx426_fail
+    sub $I11, rx426_pos, rx426_off
+    substr $S10, rx426_tgt, $I11, 1
+    ne $S10, "(", rx426_fail
+    add rx426_pos, 1
+  # rx subrule "arglist" subtype=capture negate=
+    rx426_cur."!cursor_pos"(rx426_pos)
+    $P10 = rx426_cur."arglist"()
+    unless $P10, rx426_fail
+    rx426_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("arglist")
+    rx426_pos = $P10."pos"()
+  # rx literal  ")"
+    add $I11, rx426_pos, 1
+    gt $I11, rx426_eos, rx426_fail
+    sub $I11, rx426_pos, rx426_off
+    substr $S10, rx426_tgt, $I11, 1
+    ne $S10, ")", rx426_fail
+    add rx426_pos, 1
+    goto alt431_end
+  alt431_4:
+.annotate "line", 147
+  # rx subrule "normspace" subtype=method negate=
+    rx426_cur."!cursor_pos"(rx426_pos)
+    $P10 = rx426_cur."normspace"()
+    unless $P10, rx426_fail
+    rx426_pos = $P10."pos"()
+  # rx subrule "nibbler" subtype=capture negate=
+    rx426_cur."!cursor_pos"(rx426_pos)
+    $P10 = rx426_cur."nibbler"()
+    unless $P10, rx426_fail
+    rx426_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("nibbler")
+    rx426_pos = $P10."pos"()
+  alt431_end:
+.annotate "line", 148
+    (rx426_rep) = rx426_cur."!mark_commit"($I436)
+  rxquantr430_done:
+.annotate "line", 140
+  # rx pass
+    rx426_cur."!cursor_pass"(rx426_pos, "assertion:sym<name>")
+    rx426_cur."!cursor_debug"("PASS  ", "assertion:sym<name>", " at pos=", rx426_pos)
+    .return (rx426_cur)
+  rx426_fail:
+.annotate "line", 3
+    (rx426_rep, rx426_pos, $I10, $P10) = rx426_cur."!mark_fail"(0)
+    lt rx426_pos, -1, rx426_done
+    eq rx426_pos, -1, rx426_fail
+    jump $I10
+  rx426_done:
+    rx426_cur."!cursor_fail"()
+    rx426_cur."!cursor_debug"("FAIL  ", "assertion:sym<name>")
+    .return (rx426_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__assertion:sym<name>"  :subid("136_1258051404.29629") :method
+.annotate "line", 3
+    new $P428, "ResizablePMCArray"
+    push $P428, ""
+    .return ($P428)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block432"  :anon :subid("137_1258051404.29629") :method :outer("135_1258051404.29629")
+.annotate "line", 143
+    .local string rx434_tgt
+    .local int rx434_pos
+    .local int rx434_off
+    .local int rx434_eos
+    .local int rx434_rep
+    .local pmc rx434_cur
+    (rx434_cur, rx434_pos, rx434_tgt, $I10) = self."!cursor_start"()
+    rx434_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx434_cur
+    .local pmc match
+    .lex "$/", match
+    length rx434_eos, rx434_tgt
+    set rx434_off, 0
+    lt $I10, 2, rx434_start
+    sub rx434_off, $I10, 1
+    substr rx434_tgt, rx434_tgt, rx434_off
+  rx434_start:
+    ge rx434_pos, 0, rxscan435_done
+  rxscan435_loop:
+    ($P10) = rx434_cur."from"()
+    inc $P10
+    set rx434_pos, $P10
+    ge rx434_pos, rx434_eos, rxscan435_done
+    set_addr $I10, rxscan435_loop
+    rx434_cur."!mark_push"(0, rx434_pos, $I10)
+  rxscan435_done:
+  # rx literal  ">"
+    add $I11, rx434_pos, 1
+    gt $I11, rx434_eos, rx434_fail
+    sub $I11, rx434_pos, rx434_off
+    substr $S10, rx434_tgt, $I11, 1
+    ne $S10, ">", rx434_fail
+    add rx434_pos, 1
+  # rx pass
+    rx434_cur."!cursor_pass"(rx434_pos, "")
+    rx434_cur."!cursor_debug"("PASS  ", "", " at pos=", rx434_pos)
+    .return (rx434_cur)
+  rx434_fail:
+    (rx434_rep, rx434_pos, $I10, $P10) = rx434_cur."!mark_fail"(0)
+    lt rx434_pos, -1, rx434_done
+    eq rx434_pos, -1, rx434_fail
+    jump $I10
+  rx434_done:
+    rx434_cur."!cursor_fail"()
+    rx434_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx434_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "assertion:sym<[>"  :subid("138_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P442 = "140_1258051404.29629" 
+    capture_lex $P442
+    .local string rx438_tgt
+    .local int rx438_pos
+    .local int rx438_off
+    .local int rx438_eos
+    .local int rx438_rep
+    .local pmc rx438_cur
+    (rx438_cur, rx438_pos, rx438_tgt, $I10) = self."!cursor_start"()
+    rx438_cur."!cursor_debug"("START ", "assertion:sym<[>")
+    rx438_cur."!cursor_caparray"("cclass_elem")
+    .lex unicode:"$\x{a2}", rx438_cur
+    .local pmc match
+    .lex "$/", match
+    length rx438_eos, rx438_tgt
+    set rx438_off, 0
+    lt $I10, 2, rx438_start
+    sub rx438_off, $I10, 1
+    substr rx438_tgt, rx438_tgt, rx438_off
+  rx438_start:
+.annotate "line", 151
+  # rx subrule "before" subtype=zerowidth negate=
+    rx438_cur."!cursor_pos"(rx438_pos)
+    .const 'Sub' $P442 = "140_1258051404.29629" 
+    capture_lex $P442
+    $P10 = rx438_cur."before"($P442)
+    unless $P10, rx438_fail
+  # rx rxquantr446 ** 1..*
+    set_addr $I447, rxquantr446_done
+    rx438_cur."!mark_push"(0, -1, $I447)
+  rxquantr446_loop:
+  # rx subrule "cclass_elem" subtype=capture negate=
+    rx438_cur."!cursor_pos"(rx438_pos)
+    $P10 = rx438_cur."cclass_elem"()
+    unless $P10, rx438_fail
+    rx438_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("cclass_elem")
+    rx438_pos = $P10."pos"()
+    (rx438_rep) = rx438_cur."!mark_commit"($I447)
+    rx438_cur."!mark_push"(rx438_rep, rx438_pos, $I447)
+    goto rxquantr446_loop
+  rxquantr446_done:
+  # rx pass
+    rx438_cur."!cursor_pass"(rx438_pos, "assertion:sym<[>")
+    rx438_cur."!cursor_debug"("PASS  ", "assertion:sym<[>", " at pos=", rx438_pos)
+    .return (rx438_cur)
+  rx438_fail:
+.annotate "line", 3
+    (rx438_rep, rx438_pos, $I10, $P10) = rx438_cur."!mark_fail"(0)
+    lt rx438_pos, -1, rx438_done
+    eq rx438_pos, -1, rx438_fail
+    jump $I10
+  rx438_done:
+    rx438_cur."!cursor_fail"()
+    rx438_cur."!cursor_debug"("FAIL  ", "assertion:sym<[>")
+    .return (rx438_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__assertion:sym<[>"  :subid("139_1258051404.29629") :method
+.annotate "line", 3
+    new $P440, "ResizablePMCArray"
+    push $P440, ""
+    .return ($P440)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block441"  :anon :subid("140_1258051404.29629") :method :outer("138_1258051404.29629")
+.annotate "line", 151
+    .local string rx443_tgt
+    .local int rx443_pos
+    .local int rx443_off
+    .local int rx443_eos
+    .local int rx443_rep
+    .local pmc rx443_cur
+    (rx443_cur, rx443_pos, rx443_tgt, $I10) = self."!cursor_start"()
+    rx443_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx443_cur
+    .local pmc match
+    .lex "$/", match
+    length rx443_eos, rx443_tgt
+    set rx443_off, 0
+    lt $I10, 2, rx443_start
+    sub rx443_off, $I10, 1
+    substr rx443_tgt, rx443_tgt, rx443_off
+  rx443_start:
+    ge rx443_pos, 0, rxscan444_done
+  rxscan444_loop:
+    ($P10) = rx443_cur."from"()
+    inc $P10
+    set rx443_pos, $P10
+    ge rx443_pos, rx443_eos, rxscan444_done
+    set_addr $I10, rxscan444_loop
+    rx443_cur."!mark_push"(0, rx443_pos, $I10)
+  rxscan444_done:
+  alt445_0:
+    set_addr $I10, alt445_1
+    rx443_cur."!mark_push"(0, rx443_pos, $I10)
+  # rx literal  "["
+    add $I11, rx443_pos, 1
+    gt $I11, rx443_eos, rx443_fail
+    sub $I11, rx443_pos, rx443_off
+    substr $S10, rx443_tgt, $I11, 1
+    ne $S10, "[", rx443_fail
+    add rx443_pos, 1
+    goto alt445_end
+  alt445_1:
+    set_addr $I10, alt445_2
+    rx443_cur."!mark_push"(0, rx443_pos, $I10)
+  # rx literal  "+"
+    add $I11, rx443_pos, 1
+    gt $I11, rx443_eos, rx443_fail
+    sub $I11, rx443_pos, rx443_off
+    substr $S10, rx443_tgt, $I11, 1
+    ne $S10, "+", rx443_fail
+    add rx443_pos, 1
+    goto alt445_end
+  alt445_2:
+  # rx literal  "-"
+    add $I11, rx443_pos, 1
+    gt $I11, rx443_eos, rx443_fail
+    sub $I11, rx443_pos, rx443_off
+    substr $S10, rx443_tgt, $I11, 1
+    ne $S10, "-", rx443_fail
+    add rx443_pos, 1
+  alt445_end:
+  # rx pass
+    rx443_cur."!cursor_pass"(rx443_pos, "")
+    rx443_cur."!cursor_debug"("PASS  ", "", " at pos=", rx443_pos)
+    .return (rx443_cur)
+  rx443_fail:
+    (rx443_rep, rx443_pos, $I10, $P10) = rx443_cur."!mark_fail"(0)
+    lt rx443_pos, -1, rx443_done
+    eq rx443_pos, -1, rx443_fail
+    jump $I10
+  rx443_done:
+    rx443_cur."!cursor_fail"()
+    rx443_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx443_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "cclass_elem"  :subid("141_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P459 = "143_1258051404.29629" 
+    capture_lex $P459
+    .local string rx449_tgt
+    .local int rx449_pos
+    .local int rx449_off
+    .local int rx449_eos
+    .local int rx449_rep
+    .local pmc rx449_cur
+    (rx449_cur, rx449_pos, rx449_tgt, $I10) = self."!cursor_start"()
+    rx449_cur."!cursor_debug"("START ", "cclass_elem")
+    rx449_cur."!cursor_caparray"("charspec")
+    .lex unicode:"$\x{a2}", rx449_cur
+    .local pmc match
+    .lex "$/", match
+    length rx449_eos, rx449_tgt
+    set rx449_off, 0
+    lt $I10, 2, rx449_start
+    sub rx449_off, $I10, 1
+    substr rx449_tgt, rx449_tgt, rx449_off
+  rx449_start:
+.annotate "line", 154
+  # rx subcapture "sign"
+    set_addr $I10, rxcap_453_fail
+    rx449_cur."!mark_push"(0, rx449_pos, $I10)
+  alt452_0:
+    set_addr $I10, alt452_1
+    rx449_cur."!mark_push"(0, rx449_pos, $I10)
+  # rx literal  "+"
+    add $I11, rx449_pos, 1
+    gt $I11, rx449_eos, rx449_fail
+    sub $I11, rx449_pos, rx449_off
+    substr $S10, rx449_tgt, $I11, 1
+    ne $S10, "+", rx449_fail
+    add rx449_pos, 1
+    goto alt452_end
+  alt452_1:
+    set_addr $I10, alt452_2
+    rx449_cur."!mark_push"(0, rx449_pos, $I10)
+  # rx literal  "-"
+    add $I11, rx449_pos, 1
+    gt $I11, rx449_eos, rx449_fail
+    sub $I11, rx449_pos, rx449_off
+    substr $S10, rx449_tgt, $I11, 1
+    ne $S10, "-", rx449_fail
+    add rx449_pos, 1
+    goto alt452_end
+  alt452_2:
+  alt452_end:
+    set_addr $I10, rxcap_453_fail
+    ($I12, $I11) = rx449_cur."!mark_peek"($I10)
+    rx449_cur."!cursor_pos"($I11)
+    ($P10) = rx449_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx449_pos, "")
+    rx449_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sign")
+    goto rxcap_453_done
+  rxcap_453_fail:
+    goto rx449_fail
+  rxcap_453_done:
+.annotate "line", 155
+  # rx rxquantr454 ** 0..1
+    set_addr $I455, rxquantr454_done
+    rx449_cur."!mark_push"(0, rx449_pos, $I455)
+  rxquantr454_loop:
+  # rx subrule "normspace" subtype=method negate=
+    rx449_cur."!cursor_pos"(rx449_pos)
+    $P10 = rx449_cur."normspace"()
+    unless $P10, rx449_fail
+    rx449_pos = $P10."pos"()
+    (rx449_rep) = rx449_cur."!mark_commit"($I455)
+  rxquantr454_done:
+  alt456_0:
+.annotate "line", 156
+    set_addr $I10, alt456_1
+    rx449_cur."!mark_push"(0, rx449_pos, $I10)
+.annotate "line", 157
+  # rx literal  "["
+    add $I11, rx449_pos, 1
+    gt $I11, rx449_eos, rx449_fail
+    sub $I11, rx449_pos, rx449_off
+    substr $S10, rx449_tgt, $I11, 1
+    ne $S10, "[", rx449_fail
+    add rx449_pos, 1
+.annotate "line", 160
+  # rx rxquantr457 ** 0..*
+    set_addr $I478, rxquantr457_done
+    rx449_cur."!mark_push"(0, rx449_pos, $I478)
+  rxquantr457_loop:
+.annotate "line", 157
+  # rx subrule $P459 subtype=capture negate=
+    rx449_cur."!cursor_pos"(rx449_pos)
+    .const 'Sub' $P459 = "143_1258051404.29629" 
+    capture_lex $P459
+    $P10 = rx449_cur.$P459()
+    unless $P10, rx449_fail
+    rx449_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charspec")
+    rx449_pos = $P10."pos"()
+.annotate "line", 160
+    (rx449_rep) = rx449_cur."!mark_commit"($I478)
+    rx449_cur."!mark_push"(rx449_rep, rx449_pos, $I478)
+    goto rxquantr457_loop
+  rxquantr457_done:
+.annotate "line", 161
+  # rx charclass_q s r 0..-1
+    sub $I10, rx449_pos, rx449_off
+    find_not_cclass $I11, 32, rx449_tgt, $I10, rx449_eos
+    add rx449_pos, rx449_off, $I11
+  # rx literal  "]"
+    add $I11, rx449_pos, 1
+    gt $I11, rx449_eos, rx449_fail
+    sub $I11, rx449_pos, rx449_off
+    substr $S10, rx449_tgt, $I11, 1
+    ne $S10, "]", rx449_fail
+    add rx449_pos, 1
+.annotate "line", 157
+    goto alt456_end
+  alt456_1:
+.annotate "line", 162
+  # rx subcapture "name"
+    set_addr $I10, rxcap_479_fail
+    rx449_cur."!mark_push"(0, rx449_pos, $I10)
+  # rx charclass_q w r 1..-1
+    sub $I10, rx449_pos, rx449_off
+    find_not_cclass $I11, 8192, rx449_tgt, $I10, rx449_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx449_fail
+    add rx449_pos, rx449_off, $I11
+    set_addr $I10, rxcap_479_fail
+    ($I12, $I11) = rx449_cur."!mark_peek"($I10)
+    rx449_cur."!cursor_pos"($I11)
+    ($P10) = rx449_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx449_pos, "")
+    rx449_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("name")
+    goto rxcap_479_done
+  rxcap_479_fail:
+    goto rx449_fail
+  rxcap_479_done:
+  alt456_end:
+.annotate "line", 164
+  # rx rxquantr480 ** 0..1
+    set_addr $I481, rxquantr480_done
+    rx449_cur."!mark_push"(0, rx449_pos, $I481)
+  rxquantr480_loop:
+  # rx subrule "normspace" subtype=method negate=
+    rx449_cur."!cursor_pos"(rx449_pos)
+    $P10 = rx449_cur."normspace"()
+    unless $P10, rx449_fail
+    rx449_pos = $P10."pos"()
+    (rx449_rep) = rx449_cur."!mark_commit"($I481)
+  rxquantr480_done:
+.annotate "line", 153
+  # rx pass
+    rx449_cur."!cursor_pass"(rx449_pos, "cclass_elem")
+    rx449_cur."!cursor_debug"("PASS  ", "cclass_elem", " at pos=", rx449_pos)
+    .return (rx449_cur)
+  rx449_fail:
+.annotate "line", 3
+    (rx449_rep, rx449_pos, $I10, $P10) = rx449_cur."!mark_fail"(0)
+    lt rx449_pos, -1, rx449_done
+    eq rx449_pos, -1, rx449_fail
+    jump $I10
+  rx449_done:
+    rx449_cur."!cursor_fail"()
+    rx449_cur."!cursor_debug"("FAIL  ", "cclass_elem")
+    .return (rx449_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__cclass_elem"  :subid("142_1258051404.29629") :method
+.annotate "line", 3
+    new $P451, "ResizablePMCArray"
+    push $P451, ""
+    push $P451, "-"
+    push $P451, "+"
+    .return ($P451)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block458"  :anon :subid("143_1258051404.29629") :method :outer("141_1258051404.29629")
+.annotate "line", 157
+    .const 'Sub' $P474 = "146_1258051404.29629" 
+    capture_lex $P474
+    .const 'Sub' $P469 = "145_1258051404.29629" 
+    capture_lex $P469
+    .const 'Sub' $P465 = "144_1258051404.29629" 
+    capture_lex $P465
+    .local string rx460_tgt
+    .local int rx460_pos
+    .local int rx460_off
+    .local int rx460_eos
+    .local int rx460_rep
+    .local pmc rx460_cur
+    (rx460_cur, rx460_pos, rx460_tgt, $I10) = self."!cursor_start"()
+    rx460_cur."!cursor_debug"("START ", "")
+    rx460_cur."!cursor_caparray"("1")
+    .lex unicode:"$\x{a2}", rx460_cur
+    .local pmc match
+    .lex "$/", match
+    length rx460_eos, rx460_tgt
+    set rx460_off, 0
+    lt $I10, 2, rx460_start
+    sub rx460_off, $I10, 1
+    substr rx460_tgt, rx460_tgt, rx460_off
+  rx460_start:
+    ge rx460_pos, 0, rxscan461_done
+  rxscan461_loop:
+    ($P10) = rx460_cur."from"()
+    inc $P10
+    set rx460_pos, $P10
+    ge rx460_pos, rx460_eos, rxscan461_done
+    set_addr $I10, rxscan461_loop
+    rx460_cur."!mark_push"(0, rx460_pos, $I10)
+  rxscan461_done:
+  alt462_0:
+    set_addr $I10, alt462_1
+    rx460_cur."!mark_push"(0, rx460_pos, $I10)
+.annotate "line", 158
+  # rx charclass_q s r 0..-1
+    sub $I10, rx460_pos, rx460_off
+    find_not_cclass $I11, 32, rx460_tgt, $I10, rx460_eos
+    add rx460_pos, rx460_off, $I11
+  # rx literal  "-"
+    add $I11, rx460_pos, 1
+    gt $I11, rx460_eos, rx460_fail
+    sub $I11, rx460_pos, rx460_off
+    substr $S10, rx460_tgt, $I11, 1
+    ne $S10, "-", rx460_fail
+    add rx460_pos, 1
+  # rx subrule "obs" subtype=method negate=
+    rx460_cur."!cursor_pos"(rx460_pos)
+    $P10 = rx460_cur."obs"("hyphen in enumerated character class", "..")
+    unless $P10, rx460_fail
+    rx460_pos = $P10."pos"()
+    goto alt462_end
+  alt462_1:
+.annotate "line", 159
+  # rx charclass_q s r 0..-1
+    sub $I10, rx460_pos, rx460_off
+    find_not_cclass $I11, 32, rx460_tgt, $I10, rx460_eos
+    add rx460_pos, rx460_off, $I11
+  alt463_0:
+    set_addr $I10, alt463_1
+    rx460_cur."!mark_push"(0, rx460_pos, $I10)
+  # rx literal  "\\"
+    add $I11, rx460_pos, 1
+    gt $I11, rx460_eos, rx460_fail
+    sub $I11, rx460_pos, rx460_off
+    substr $S10, rx460_tgt, $I11, 1
+    ne $S10, "\\", rx460_fail
+    add rx460_pos, 1
+  # rx subrule $P465 subtype=capture negate=
+    rx460_cur."!cursor_pos"(rx460_pos)
+    .const 'Sub' $P465 = "144_1258051404.29629" 
+    capture_lex $P465
+    $P10 = rx460_cur.$P465()
+    unless $P10, rx460_fail
+    rx460_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"(0)
+    rx460_pos = $P10."pos"()
+    goto alt463_end
+  alt463_1:
+  # rx subrule $P469 subtype=capture negate=
+    rx460_cur."!cursor_pos"(rx460_pos)
+    .const 'Sub' $P469 = "145_1258051404.29629" 
+    capture_lex $P469
+    $P10 = rx460_cur.$P469()
+    unless $P10, rx460_fail
+    rx460_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"(0)
+    rx460_pos = $P10."pos"()
+  alt463_end:
+  # rx rxquantr472 ** 0..1
+    set_addr $I477, rxquantr472_done
+    rx460_cur."!mark_push"(0, rx460_pos, $I477)
+  rxquantr472_loop:
+  # rx charclass_q s r 0..-1
+    sub $I10, rx460_pos, rx460_off
+    find_not_cclass $I11, 32, rx460_tgt, $I10, rx460_eos
+    add rx460_pos, rx460_off, $I11
+  # rx literal  ".."
+    add $I11, rx460_pos, 2
+    gt $I11, rx460_eos, rx460_fail
+    sub $I11, rx460_pos, rx460_off
+    substr $S10, rx460_tgt, $I11, 2
+    ne $S10, "..", rx460_fail
+    add rx460_pos, 2
+  # rx charclass_q s r 0..-1
+    sub $I10, rx460_pos, rx460_off
+    find_not_cclass $I11, 32, rx460_tgt, $I10, rx460_eos
+    add rx460_pos, rx460_off, $I11
+  # rx subrule $P474 subtype=capture negate=
+    rx460_cur."!cursor_pos"(rx460_pos)
+    .const 'Sub' $P474 = "146_1258051404.29629" 
+    capture_lex $P474
+    $P10 = rx460_cur.$P474()
+    unless $P10, rx460_fail
+    rx460_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("1")
+    rx460_pos = $P10."pos"()
+    (rx460_rep) = rx460_cur."!mark_commit"($I477)
+  rxquantr472_done:
+  alt462_end:
+.annotate "line", 157
+  # rx pass
+    rx460_cur."!cursor_pass"(rx460_pos, "")
+    rx460_cur."!cursor_debug"("PASS  ", "", " at pos=", rx460_pos)
+    .return (rx460_cur)
+  rx460_fail:
+    (rx460_rep, rx460_pos, $I10, $P10) = rx460_cur."!mark_fail"(0)
+    lt rx460_pos, -1, rx460_done
+    eq rx460_pos, -1, rx460_fail
+    jump $I10
+  rx460_done:
+    rx460_cur."!cursor_fail"()
+    rx460_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx460_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block464"  :anon :subid("144_1258051404.29629") :method :outer("143_1258051404.29629")
+.annotate "line", 159
+    .local string rx466_tgt
+    .local int rx466_pos
+    .local int rx466_off
+    .local int rx466_eos
+    .local int rx466_rep
+    .local pmc rx466_cur
+    (rx466_cur, rx466_pos, rx466_tgt, $I10) = self."!cursor_start"()
+    rx466_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx466_cur
+    .local pmc match
+    .lex "$/", match
+    length rx466_eos, rx466_tgt
+    set rx466_off, 0
+    lt $I10, 2, rx466_start
+    sub rx466_off, $I10, 1
+    substr rx466_tgt, rx466_tgt, rx466_off
+  rx466_start:
+    ge rx466_pos, 0, rxscan467_done
+  rxscan467_loop:
+    ($P10) = rx466_cur."from"()
+    inc $P10
+    set rx466_pos, $P10
+    ge rx466_pos, rx466_eos, rxscan467_done
+    set_addr $I10, rxscan467_loop
+    rx466_cur."!mark_push"(0, rx466_pos, $I10)
+  rxscan467_done:
+  # rx charclass .
+    ge rx466_pos, rx466_eos, rx466_fail
+    inc rx466_pos
+  # rx pass
+    rx466_cur."!cursor_pass"(rx466_pos, "")
+    rx466_cur."!cursor_debug"("PASS  ", "", " at pos=", rx466_pos)
+    .return (rx466_cur)
+  rx466_fail:
+    (rx466_rep, rx466_pos, $I10, $P10) = rx466_cur."!mark_fail"(0)
+    lt rx466_pos, -1, rx466_done
+    eq rx466_pos, -1, rx466_fail
+    jump $I10
+  rx466_done:
+    rx466_cur."!cursor_fail"()
+    rx466_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx466_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block468"  :anon :subid("145_1258051404.29629") :method :outer("143_1258051404.29629")
+.annotate "line", 159
+    .local string rx470_tgt
+    .local int rx470_pos
+    .local int rx470_off
+    .local int rx470_eos
+    .local int rx470_rep
+    .local pmc rx470_cur
+    (rx470_cur, rx470_pos, rx470_tgt, $I10) = self."!cursor_start"()
+    rx470_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx470_cur
+    .local pmc match
+    .lex "$/", match
+    length rx470_eos, rx470_tgt
+    set rx470_off, 0
+    lt $I10, 2, rx470_start
+    sub rx470_off, $I10, 1
+    substr rx470_tgt, rx470_tgt, rx470_off
+  rx470_start:
+    ge rx470_pos, 0, rxscan471_done
+  rxscan471_loop:
+    ($P10) = rx470_cur."from"()
+    inc $P10
+    set rx470_pos, $P10
+    ge rx470_pos, rx470_eos, rxscan471_done
+    set_addr $I10, rxscan471_loop
+    rx470_cur."!mark_push"(0, rx470_pos, $I10)
+  rxscan471_done:
+  # rx enumcharlist negate=1 
+    ge rx470_pos, rx470_eos, rx470_fail
+    sub $I10, rx470_pos, rx470_off
+    substr $S10, rx470_tgt, $I10, 1
+    index $I11, "]\\", $S10
+    ge $I11, 0, rx470_fail
+    inc rx470_pos
+  # rx pass
+    rx470_cur."!cursor_pass"(rx470_pos, "")
+    rx470_cur."!cursor_debug"("PASS  ", "", " at pos=", rx470_pos)
+    .return (rx470_cur)
+  rx470_fail:
+    (rx470_rep, rx470_pos, $I10, $P10) = rx470_cur."!mark_fail"(0)
+    lt rx470_pos, -1, rx470_done
+    eq rx470_pos, -1, rx470_fail
+    jump $I10
+  rx470_done:
+    rx470_cur."!cursor_fail"()
+    rx470_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx470_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block473"  :anon :subid("146_1258051404.29629") :method :outer("143_1258051404.29629")
+.annotate "line", 159
+    .local string rx475_tgt
+    .local int rx475_pos
+    .local int rx475_off
+    .local int rx475_eos
+    .local int rx475_rep
+    .local pmc rx475_cur
+    (rx475_cur, rx475_pos, rx475_tgt, $I10) = self."!cursor_start"()
+    rx475_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx475_cur
+    .local pmc match
+    .lex "$/", match
+    length rx475_eos, rx475_tgt
+    set rx475_off, 0
+    lt $I10, 2, rx475_start
+    sub rx475_off, $I10, 1
+    substr rx475_tgt, rx475_tgt, rx475_off
+  rx475_start:
+    ge rx475_pos, 0, rxscan476_done
+  rxscan476_loop:
+    ($P10) = rx475_cur."from"()
+    inc $P10
+    set rx475_pos, $P10
+    ge rx475_pos, rx475_eos, rxscan476_done
+    set_addr $I10, rxscan476_loop
+    rx475_cur."!mark_push"(0, rx475_pos, $I10)
+  rxscan476_done:
+  # rx charclass .
+    ge rx475_pos, rx475_eos, rx475_fail
+    inc rx475_pos
+  # rx pass
+    rx475_cur."!cursor_pass"(rx475_pos, "")
+    rx475_cur."!cursor_debug"("PASS  ", "", " at pos=", rx475_pos)
+    .return (rx475_cur)
+  rx475_fail:
+    (rx475_rep, rx475_pos, $I10, $P10) = rx475_cur."!mark_fail"(0)
+    lt rx475_pos, -1, rx475_done
+    eq rx475_pos, -1, rx475_fail
+    jump $I10
+  rx475_done:
+    rx475_cur."!cursor_fail"()
+    rx475_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx475_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "mod_internal"  :subid("147_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .const 'Sub' $P490 = "149_1258051404.29629" 
+    capture_lex $P490
+    .local string rx483_tgt
+    .local int rx483_pos
+    .local int rx483_off
+    .local int rx483_eos
+    .local int rx483_rep
+    .local pmc rx483_cur
+    (rx483_cur, rx483_pos, rx483_tgt, $I10) = self."!cursor_start"()
+    rx483_cur."!cursor_debug"("START ", "mod_internal")
+    rx483_cur."!cursor_caparray"("n")
+    .lex unicode:"$\x{a2}", rx483_cur
+    .local pmc match
+    .lex "$/", match
+    length rx483_eos, rx483_tgt
+    set rx483_off, 0
+    lt $I10, 2, rx483_start
+    sub rx483_off, $I10, 1
+    substr rx483_tgt, rx483_tgt, rx483_off
+  rx483_start:
+  alt487_0:
+.annotate "line", 168
+    set_addr $I10, alt487_1
+    rx483_cur."!mark_push"(0, rx483_pos, $I10)
+.annotate "line", 169
+  # rx literal  ":"
+    add $I11, rx483_pos, 1
+    gt $I11, rx483_eos, rx483_fail
+    sub $I11, rx483_pos, rx483_off
+    substr $S10, rx483_tgt, $I11, 1
+    ne $S10, ":", rx483_fail
+    add rx483_pos, 1
+  # rx rxquantr488 ** 1..1
+    set_addr $I494, rxquantr488_done
+    rx483_cur."!mark_push"(0, -1, $I494)
+  rxquantr488_loop:
+  # rx subrule $P490 subtype=capture negate=
+    rx483_cur."!cursor_pos"(rx483_pos)
+    .const 'Sub' $P490 = "149_1258051404.29629" 
+    capture_lex $P490
+    $P10 = rx483_cur.$P490()
+    unless $P10, rx483_fail
+    rx483_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("n")
+    rx483_pos = $P10."pos"()
+    (rx483_rep) = rx483_cur."!mark_commit"($I494)
+  rxquantr488_done:
+  # rx subrule "mod_ident" subtype=capture negate=
+    rx483_cur."!cursor_pos"(rx483_pos)
+    $P10 = rx483_cur."mod_ident"()
+    unless $P10, rx483_fail
+    rx483_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("mod_ident")
+    rx483_pos = $P10."pos"()
+  # rxanchor rwb
+    le rx483_pos, 0, rx483_fail
+    sub $I10, rx483_pos, rx483_off
+    is_cclass $I11, 8192, rx483_tgt, $I10
+    if $I11, rx483_fail
+    dec $I10
+    is_cclass $I11, 8192, rx483_tgt, $I10
+    unless $I11, rx483_fail
+    goto alt487_end
+  alt487_1:
+.annotate "line", 170
+  # rx literal  ":"
+    add $I11, rx483_pos, 1
+    gt $I11, rx483_eos, rx483_fail
+    sub $I11, rx483_pos, rx483_off
+    substr $S10, rx483_tgt, $I11, 1
+    ne $S10, ":", rx483_fail
+    add rx483_pos, 1
+  # rx subrule "mod_ident" subtype=capture negate=
+    rx483_cur."!cursor_pos"(rx483_pos)
+    $P10 = rx483_cur."mod_ident"()
+    unless $P10, rx483_fail
+    rx483_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("mod_ident")
+    rx483_pos = $P10."pos"()
+  # rx rxquantr495 ** 0..1
+    set_addr $I497, rxquantr495_done
+    rx483_cur."!mark_push"(0, rx483_pos, $I497)
+  rxquantr495_loop:
+  # rx literal  "("
+    add $I11, rx483_pos, 1
+    gt $I11, rx483_eos, rx483_fail
+    sub $I11, rx483_pos, rx483_off
+    substr $S10, rx483_tgt, $I11, 1
+    ne $S10, "(", rx483_fail
+    add rx483_pos, 1
+  # rx subcapture "n"
+    set_addr $I10, rxcap_496_fail
+    rx483_cur."!mark_push"(0, rx483_pos, $I10)
+  # rx charclass_q d r 1..-1
+    sub $I10, rx483_pos, rx483_off
+    find_not_cclass $I11, 8, rx483_tgt, $I10, rx483_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx483_fail
+    add rx483_pos, rx483_off, $I11
+    set_addr $I10, rxcap_496_fail
+    ($I12, $I11) = rx483_cur."!mark_peek"($I10)
+    rx483_cur."!cursor_pos"($I11)
+    ($P10) = rx483_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx483_pos, "")
+    rx483_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("n")
+    goto rxcap_496_done
+  rxcap_496_fail:
+    goto rx483_fail
+  rxcap_496_done:
+  # rx literal  ")"
+    add $I11, rx483_pos, 1
+    gt $I11, rx483_eos, rx483_fail
+    sub $I11, rx483_pos, rx483_off
+    substr $S10, rx483_tgt, $I11, 1
+    ne $S10, ")", rx483_fail
+    add rx483_pos, 1
+    (rx483_rep) = rx483_cur."!mark_commit"($I497)
+  rxquantr495_done:
+  alt487_end:
+.annotate "line", 167
+  # rx pass
+    rx483_cur."!cursor_pass"(rx483_pos, "mod_internal")
+    rx483_cur."!cursor_debug"("PASS  ", "mod_internal", " at pos=", rx483_pos)
+    .return (rx483_cur)
+  rx483_fail:
+.annotate "line", 3
+    (rx483_rep, rx483_pos, $I10, $P10) = rx483_cur."!mark_fail"(0)
+    lt rx483_pos, -1, rx483_done
+    eq rx483_pos, -1, rx483_fail
+    jump $I10
+  rx483_done:
+    rx483_cur."!cursor_fail"()
+    rx483_cur."!cursor_debug"("FAIL  ", "mod_internal")
+    .return (rx483_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__mod_internal"  :subid("148_1258051404.29629") :method
+.annotate "line", 3
+    $P485 = self."!PREFIX__!subrule"("mod_ident", ":")
+    new $P486, "ResizablePMCArray"
+    push $P486, $P485
+    push $P486, ":"
+    .return ($P486)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "_block489"  :anon :subid("149_1258051404.29629") :method :outer("147_1258051404.29629")
+.annotate "line", 169
+    .local string rx491_tgt
+    .local int rx491_pos
+    .local int rx491_off
+    .local int rx491_eos
+    .local int rx491_rep
+    .local pmc rx491_cur
+    (rx491_cur, rx491_pos, rx491_tgt, $I10) = self."!cursor_start"()
+    rx491_cur."!cursor_debug"("START ", "")
+    .lex unicode:"$\x{a2}", rx491_cur
+    .local pmc match
+    .lex "$/", match
+    length rx491_eos, rx491_tgt
+    set rx491_off, 0
+    lt $I10, 2, rx491_start
+    sub rx491_off, $I10, 1
+    substr rx491_tgt, rx491_tgt, rx491_off
+  rx491_start:
+    ge rx491_pos, 0, rxscan492_done
+  rxscan492_loop:
+    ($P10) = rx491_cur."from"()
+    inc $P10
+    set rx491_pos, $P10
+    ge rx491_pos, rx491_eos, rxscan492_done
+    set_addr $I10, rxscan492_loop
+    rx491_cur."!mark_push"(0, rx491_pos, $I10)
+  rxscan492_done:
+  alt493_0:
+    set_addr $I10, alt493_1
+    rx491_cur."!mark_push"(0, rx491_pos, $I10)
+  # rx literal  "!"
+    add $I11, rx491_pos, 1
+    gt $I11, rx491_eos, rx491_fail
+    sub $I11, rx491_pos, rx491_off
+    substr $S10, rx491_tgt, $I11, 1
+    ne $S10, "!", rx491_fail
+    add rx491_pos, 1
+    goto alt493_end
+  alt493_1:
+  # rx charclass_q d r 1..-1
+    sub $I10, rx491_pos, rx491_off
+    find_not_cclass $I11, 8, rx491_tgt, $I10, rx491_eos
+    add $I12, $I10, 1
+    lt $I11, $I12, rx491_fail
+    add rx491_pos, rx491_off, $I11
+  alt493_end:
+  # rx pass
+    rx491_cur."!cursor_pass"(rx491_pos, "")
+    rx491_cur."!cursor_debug"("PASS  ", "", " at pos=", rx491_pos)
+    .return (rx491_cur)
+  rx491_fail:
+    (rx491_rep, rx491_pos, $I10, $P10) = rx491_cur."!mark_fail"(0)
+    lt rx491_pos, -1, rx491_done
+    eq rx491_pos, -1, rx491_fail
+    jump $I10
+  rx491_done:
+    rx491_cur."!cursor_fail"()
+    rx491_cur."!cursor_debug"("FAIL  ", "")
+    .return (rx491_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "mod_ident"  :subid("150_1258051404.29629") :method
+.annotate "line", 174
+    $P499 = self."!protoregex"("mod_ident")
+    .return ($P499)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__mod_ident"  :subid("151_1258051404.29629") :method
+.annotate "line", 174
+    $P501 = self."!PREFIX__!protoregex"("mod_ident")
+    .return ($P501)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "mod_ident:sym<ignorecase>"  :subid("152_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx503_tgt
+    .local int rx503_pos
+    .local int rx503_off
+    .local int rx503_eos
+    .local int rx503_rep
+    .local pmc rx503_cur
+    (rx503_cur, rx503_pos, rx503_tgt, $I10) = self."!cursor_start"()
+    rx503_cur."!cursor_debug"("START ", "mod_ident:sym<ignorecase>")
+    .lex unicode:"$\x{a2}", rx503_cur
+    .local pmc match
+    .lex "$/", match
+    length rx503_eos, rx503_tgt
+    set rx503_off, 0
+    lt $I10, 2, rx503_start
+    sub rx503_off, $I10, 1
+    substr rx503_tgt, rx503_tgt, rx503_off
+  rx503_start:
+.annotate "line", 175
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_506_fail
+    rx503_cur."!mark_push"(0, rx503_pos, $I10)
+  # rx literal  "i"
+    add $I11, rx503_pos, 1
+    gt $I11, rx503_eos, rx503_fail
+    sub $I11, rx503_pos, rx503_off
+    substr $S10, rx503_tgt, $I11, 1
+    ne $S10, "i", rx503_fail
+    add rx503_pos, 1
+    set_addr $I10, rxcap_506_fail
+    ($I12, $I11) = rx503_cur."!mark_peek"($I10)
+    rx503_cur."!cursor_pos"($I11)
+    ($P10) = rx503_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx503_pos, "")
+    rx503_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_506_done
+  rxcap_506_fail:
+    goto rx503_fail
+  rxcap_506_done:
+  # rx rxquantr507 ** 0..1
+    set_addr $I508, rxquantr507_done
+    rx503_cur."!mark_push"(0, rx503_pos, $I508)
+  rxquantr507_loop:
+  # rx literal  "gnorecase"
+    add $I11, rx503_pos, 9
+    gt $I11, rx503_eos, rx503_fail
+    sub $I11, rx503_pos, rx503_off
+    substr $S10, rx503_tgt, $I11, 9
+    ne $S10, "gnorecase", rx503_fail
+    add rx503_pos, 9
+    (rx503_rep) = rx503_cur."!mark_commit"($I508)
+  rxquantr507_done:
+  # rx pass
+    rx503_cur."!cursor_pass"(rx503_pos, "mod_ident:sym<ignorecase>")
+    rx503_cur."!cursor_debug"("PASS  ", "mod_ident:sym<ignorecase>", " at pos=", rx503_pos)
+    .return (rx503_cur)
+  rx503_fail:
+.annotate "line", 3
+    (rx503_rep, rx503_pos, $I10, $P10) = rx503_cur."!mark_fail"(0)
+    lt rx503_pos, -1, rx503_done
+    eq rx503_pos, -1, rx503_fail
+    jump $I10
+  rx503_done:
+    rx503_cur."!cursor_fail"()
+    rx503_cur."!cursor_debug"("FAIL  ", "mod_ident:sym<ignorecase>")
+    .return (rx503_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1258051404.29629") :method
+.annotate "line", 3
+    new $P505, "ResizablePMCArray"
+    push $P505, "i"
+    .return ($P505)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "mod_ident:sym<ratchet>"  :subid("154_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx510_tgt
+    .local int rx510_pos
+    .local int rx510_off
+    .local int rx510_eos
+    .local int rx510_rep
+    .local pmc rx510_cur
+    (rx510_cur, rx510_pos, rx510_tgt, $I10) = self."!cursor_start"()
+    rx510_cur."!cursor_debug"("START ", "mod_ident:sym<ratchet>")
+    .lex unicode:"$\x{a2}", rx510_cur
+    .local pmc match
+    .lex "$/", match
+    length rx510_eos, rx510_tgt
+    set rx510_off, 0
+    lt $I10, 2, rx510_start
+    sub rx510_off, $I10, 1
+    substr rx510_tgt, rx510_tgt, rx510_off
+  rx510_start:
+.annotate "line", 176
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_513_fail
+    rx510_cur."!mark_push"(0, rx510_pos, $I10)
+  # rx literal  "r"
+    add $I11, rx510_pos, 1
+    gt $I11, rx510_eos, rx510_fail
+    sub $I11, rx510_pos, rx510_off
+    substr $S10, rx510_tgt, $I11, 1
+    ne $S10, "r", rx510_fail
+    add rx510_pos, 1
+    set_addr $I10, rxcap_513_fail
+    ($I12, $I11) = rx510_cur."!mark_peek"($I10)
+    rx510_cur."!cursor_pos"($I11)
+    ($P10) = rx510_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx510_pos, "")
+    rx510_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_513_done
+  rxcap_513_fail:
+    goto rx510_fail
+  rxcap_513_done:
+  # rx rxquantr514 ** 0..1
+    set_addr $I515, rxquantr514_done
+    rx510_cur."!mark_push"(0, rx510_pos, $I515)
+  rxquantr514_loop:
+  # rx literal  "atchet"
+    add $I11, rx510_pos, 6
+    gt $I11, rx510_eos, rx510_fail
+    sub $I11, rx510_pos, rx510_off
+    substr $S10, rx510_tgt, $I11, 6
+    ne $S10, "atchet", rx510_fail
+    add rx510_pos, 6
+    (rx510_rep) = rx510_cur."!mark_commit"($I515)
+  rxquantr514_done:
+  # rx pass
+    rx510_cur."!cursor_pass"(rx510_pos, "mod_ident:sym<ratchet>")
+    rx510_cur."!cursor_debug"("PASS  ", "mod_ident:sym<ratchet>", " at pos=", rx510_pos)
+    .return (rx510_cur)
+  rx510_fail:
+.annotate "line", 3
+    (rx510_rep, rx510_pos, $I10, $P10) = rx510_cur."!mark_fail"(0)
+    lt rx510_pos, -1, rx510_done
+    eq rx510_pos, -1, rx510_fail
+    jump $I10
+  rx510_done:
+    rx510_cur."!cursor_fail"()
+    rx510_cur."!cursor_debug"("FAIL  ", "mod_ident:sym<ratchet>")
+    .return (rx510_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1258051404.29629") :method
+.annotate "line", 3
+    new $P512, "ResizablePMCArray"
+    push $P512, "r"
+    .return ($P512)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "mod_ident:sym<sigspace>"  :subid("156_1258051404.29629") :method :outer("11_1258051404.29629")
+.annotate "line", 3
+    .local string rx517_tgt
+    .local int rx517_pos
+    .local int rx517_off
+    .local int rx517_eos
+    .local int rx517_rep
+    .local pmc rx517_cur
+    (rx517_cur, rx517_pos, rx517_tgt, $I10) = self."!cursor_start"()
+    rx517_cur."!cursor_debug"("START ", "mod_ident:sym<sigspace>")
+    .lex unicode:"$\x{a2}", rx517_cur
+    .local pmc match
+    .lex "$/", match
+    length rx517_eos, rx517_tgt
+    set rx517_off, 0
+    lt $I10, 2, rx517_start
+    sub rx517_off, $I10, 1
+    substr rx517_tgt, rx517_tgt, rx517_off
+  rx517_start:
+.annotate "line", 177
+  # rx subcapture "sym"
+    set_addr $I10, rxcap_520_fail
+    rx517_cur."!mark_push"(0, rx517_pos, $I10)
+  # rx literal  "s"
+    add $I11, rx517_pos, 1
+    gt $I11, rx517_eos, rx517_fail
+    sub $I11, rx517_pos, rx517_off
+    substr $S10, rx517_tgt, $I11, 1
+    ne $S10, "s", rx517_fail
+    add rx517_pos, 1
+    set_addr $I10, rxcap_520_fail
+    ($I12, $I11) = rx517_cur."!mark_peek"($I10)
+    rx517_cur."!cursor_pos"($I11)
+    ($P10) = rx517_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx517_pos, "")
+    rx517_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("sym")
+    goto rxcap_520_done
+  rxcap_520_fail:
+    goto rx517_fail
+  rxcap_520_done:
+  # rx rxquantr521 ** 0..1
+    set_addr $I522, rxquantr521_done
+    rx517_cur."!mark_push"(0, rx517_pos, $I522)
+  rxquantr521_loop:
+  # rx literal  "igspace"
+    add $I11, rx517_pos, 7
+    gt $I11, rx517_eos, rx517_fail
+    sub $I11, rx517_pos, rx517_off
+    substr $S10, rx517_tgt, $I11, 7
+    ne $S10, "igspace", rx517_fail
+    add rx517_pos, 7
+    (rx517_rep) = rx517_cur."!mark_commit"($I522)
+  rxquantr521_done:
+  # rx pass
+    rx517_cur."!cursor_pass"(rx517_pos, "mod_ident:sym<sigspace>")
+    rx517_cur."!cursor_debug"("PASS  ", "mod_ident:sym<sigspace>", " at pos=", rx517_pos)
+    .return (rx517_cur)
+  rx517_fail:
+.annotate "line", 3
+    (rx517_rep, rx517_pos, $I10, $P10) = rx517_cur."!mark_fail"(0)
+    lt rx517_pos, -1, rx517_done
+    eq rx517_pos, -1, rx517_fail
+    jump $I10
+  rx517_done:
+    rx517_cur."!cursor_fail"()
+    rx517_cur."!cursor_debug"("FAIL  ", "mod_ident:sym<sigspace>")
+    .return (rx517_cur)
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1258051404.29629") :method
+.annotate "line", 3
+    new $P519, "ResizablePMCArray"
+    push $P519, "s"
+    .return ($P519)
+.end
+
+### .include 'gen/p6regex-actions.pir'
+
+.namespace []
+.sub "_block11"  :anon :subid("10_1258051412.17115")
+.annotate "line", 0
+    get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
+    capture_lex $P14
+.annotate "line", 4
+    get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
+    capture_lex $P14
+    $P1509 = $P14()
+.annotate "line", 1
+    .return ($P1509)
+.end
+
+
+.namespace []
+.sub "" :load :init :subid("post88") :outer("10_1258051412.17115")
+.annotate "line", 0
+    .const 'Sub' $P12 = "10_1258051412.17115" 
+    .local pmc block
+    set block, $P12
+    $P1510 = get_root_global ["parrot"], "P6metaclass"
+    $P1510."new_class"("Regex::P6Regex::Actions", "HLL::Actions" :named("parent"))
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block13"  :subid("11_1258051412.17115") :outer("10_1258051412.17115")
+.annotate "line", 4
+    .const 'Sub' $P1476 = "87_1258051412.17115" 
+    capture_lex $P1476
+    .const 'Sub' $P1407 = "83_1258051412.17115" 
+    capture_lex $P1407
+    .const 'Sub' $P1339 = "81_1258051412.17115" 
+    capture_lex $P1339
+    .const 'Sub' $P1266 = "78_1258051412.17115" 
+    capture_lex $P1266
+    .const 'Sub' $P1253 = "77_1258051412.17115" 
+    capture_lex $P1253
+    .const 'Sub' $P1229 = "76_1258051412.17115" 
+    capture_lex $P1229
+    .const 'Sub' $P1211 = "75_1258051412.17115" 
+    capture_lex $P1211
+    .const 'Sub' $P1197 = "74_1258051412.17115" 
+    capture_lex $P1197
+    .const 'Sub' $P1166 = "73_1258051412.17115" 
+    capture_lex $P1166
+    .const 'Sub' $P1135 = "72_1258051412.17115" 
+    capture_lex $P1135
+    .const 'Sub' $P1119 = "71_1258051412.17115" 
+    capture_lex $P1119
+    .const 'Sub' $P1103 = "70_1258051412.17115" 
+    capture_lex $P1103
+    .const 'Sub' $P1087 = "69_1258051412.17115" 
+    capture_lex $P1087
+    .const 'Sub' $P1071 = "68_1258051412.17115" 
+    capture_lex $P1071
+    .const 'Sub' $P1055 = "67_1258051412.17115" 
+    capture_lex $P1055
+    .const 'Sub' $P1039 = "66_1258051412.17115" 
+    capture_lex $P1039
+    .const 'Sub' $P1023 = "65_1258051412.17115" 
+    capture_lex $P1023
+    .const 'Sub' $P999 = "64_1258051412.17115" 
+    capture_lex $P999
+    .const 'Sub' $P984 = "63_1258051412.17115" 
+    capture_lex $P984
+    .const 'Sub' $P928 = "62_1258051412.17115" 
+    capture_lex $P928
+    .const 'Sub' $P907 = "61_1258051412.17115" 
+    capture_lex $P907
+    .const 'Sub' $P885 = "60_1258051412.17115" 
+    capture_lex $P885
+    .const 'Sub' $P875 = "59_1258051412.17115" 
+    capture_lex $P875
+    .const 'Sub' $P865 = "58_1258051412.17115" 
+    capture_lex $P865
+    .const 'Sub' $P855 = "57_1258051412.17115" 
+    capture_lex $P855
+    .const 'Sub' $P843 = "56_1258051412.17115" 
+    capture_lex $P843
+    .const 'Sub' $P831 = "55_1258051412.17115" 
+    capture_lex $P831
+    .const 'Sub' $P819 = "54_1258051412.17115" 
+    capture_lex $P819
+    .const 'Sub' $P807 = "53_1258051412.17115" 
+    capture_lex $P807
+    .const 'Sub' $P795 = "52_1258051412.17115" 
+    capture_lex $P795
+    .const 'Sub' $P783 = "51_1258051412.17115" 
+    capture_lex $P783
+    .const 'Sub' $P771 = "50_1258051412.17115" 
+    capture_lex $P771
+    .const 'Sub' $P759 = "49_1258051412.17115" 
+    capture_lex $P759
+    .const 'Sub' $P743 = "48_1258051412.17115" 
+    capture_lex $P743
+    .const 'Sub' $P725 = "47_1258051412.17115" 
+    capture_lex $P725
+    .const 'Sub' $P715 = "46_1258051412.17115" 
+    capture_lex $P715
+    .const 'Sub' $P697 = "45_1258051412.17115" 
+    capture_lex $P697
+    .const 'Sub' $P650 = "44_1258051412.17115" 
+    capture_lex $P650
+    .const 'Sub' $P633 = "43_1258051412.17115" 
+    capture_lex $P633
+    .const 'Sub' $P618 = "42_1258051412.17115" 
+    capture_lex $P618
+    .const 'Sub' $P603 = "41_1258051412.17115" 
+    capture_lex $P603
+    .const 'Sub' $P577 = "40_1258051412.17115" 
+    capture_lex $P577
+    .const 'Sub' $P527 = "38_1258051412.17115" 
+    capture_lex $P527
+    .const 'Sub' $P472 = "36_1258051412.17115" 
+    capture_lex $P472
+    .const 'Sub' $P415 = "33_1258051412.17115" 
+    capture_lex $P415
+    .const 'Sub' $P400 = "32_1258051412.17115" 
+    capture_lex $P400
+    .const 'Sub' $P374 = "30_1258051412.17115" 
+    capture_lex $P374
+    .const 'Sub' $P356 = "29_1258051412.17115" 
+    capture_lex $P356
+    .const 'Sub' $P336 = "28_1258051412.17115" 
+    capture_lex $P336
+    .const 'Sub' $P304 = "27_1258051412.17115" 
+    capture_lex $P304
+    .const 'Sub' $P42 = "14_1258051412.17115" 
+    capture_lex $P42
+    .const 'Sub' $P21 = "13_1258051412.17115" 
+    capture_lex $P21
+    .const 'Sub' $P16 = "12_1258051412.17115" 
+    capture_lex $P16
+    get_global $P15, "@MODIFIERS"
+    unless_null $P15, vivify_89
+    new $P15, "ResizablePMCArray"
+    set_global "@MODIFIERS", $P15
+  vivify_89:
+.annotate "line", 6
+    .const 'Sub' $P16 = "12_1258051412.17115" 
+    capture_lex $P16
+    .lex "INIT", $P16
+.annotate "line", 461
+    .const 'Sub' $P21 = "13_1258051412.17115" 
+    capture_lex $P21
+    .lex "buildsub", $P21
+.annotate "line", 474
+    .const 'Sub' $P42 = "14_1258051412.17115" 
+    capture_lex $P42
+    .lex "capnames", $P42
+.annotate "line", 540
+    .const 'Sub' $P304 = "27_1258051412.17115" 
+    capture_lex $P304
+    .lex "backmod", $P304
+.annotate "line", 547
+    .const 'Sub' $P336 = "28_1258051412.17115" 
+    capture_lex $P336
+    .lex "subrule_alias", $P336
+.annotate "line", 4
+    get_global $P354, "@MODIFIERS"
+    find_lex $P355, "INIT"
+.annotate "line", 454
+    find_lex $P1505, "buildsub"
+    find_lex $P1506, "capnames"
+    find_lex $P1507, "backmod"
+    find_lex $P1508, "subrule_alias"
+.annotate "line", 4
+    .return ($P1508)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "INIT"  :subid("12_1258051412.17115") :outer("11_1258051412.17115")
+.annotate "line", 6
+    new $P18, 'ExceptionHandler'
+    set_addr $P18, control_17
+    $P18."handle_types"(58)
+    push_eh $P18
+.annotate "line", 7
+
+        $P19 = new ['ResizablePMCArray']
+        $P0 = new ['Hash']
+        push $P19, $P0
+    
+    set_global "@MODIFIERS", $P19
+.annotate "line", 6
+    .return ($P19)
+  control_17:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P20, exception, "payload"
+    .return ($P20)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "buildsub"  :subid("13_1258051412.17115") :outer("11_1258051412.17115")
+    .param pmc param_24
+.annotate "line", 461
+    new $P23, 'ExceptionHandler'
+    set_addr $P23, control_22
+    $P23."handle_types"(58)
+    push_eh $P23
+    .lex "$rpast", param_24
+.annotate "line", 462
+    new $P25, "Hash"
+    .lex "%capnames", $P25
+    find_lex $P26, "$rpast"
+    $P27 = "capnames"($P26, 0)
+    store_lex "%capnames", $P27
+.annotate "line", 463
+    new $P28, "Integer"
+    assign $P28, 0
+    find_lex $P29, "%capnames"
+    unless_null $P29, vivify_90
+    new $P29, "Hash"
+    store_lex "%capnames", $P29
+  vivify_90:
+    set $P29[""], $P28
+.annotate "line", 464
+    get_hll_global $P30, ["PAST"], "Regex"
+.annotate "line", 465
+    get_hll_global $P31, ["PAST"], "Regex"
+    $P32 = $P31."new"("scan" :named("pasttype"))
+    find_lex $P33, "$rpast"
+.annotate "line", 467
+    get_hll_global $P34, ["PAST"], "Regex"
+    $P35 = $P34."new"("pass" :named("pasttype"))
+    find_lex $P36, "%capnames"
+    $P37 = $P30."new"($P32, $P33, $P35, "concat" :named("pasttype"), $P36 :named("capnames"))
+.annotate "line", 464
+    store_lex "$rpast", $P37
+.annotate "line", 471
+    get_hll_global $P38, ["PAST"], "Block"
+    find_lex $P39, "$rpast"
+    $P40 = $P38."new"($P39, "method" :named("blocktype"))
+.annotate "line", 461
+    .return ($P40)
+  control_22:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P41, exception, "payload"
+    .return ($P41)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "capnames"  :subid("14_1258051412.17115") :outer("11_1258051412.17115")
+    .param pmc param_45
+    .param pmc param_46
+.annotate "line", 474
+    .const 'Sub' $P279 = "25_1258051412.17115" 
+    capture_lex $P279
+    .const 'Sub' $P214 = "22_1258051412.17115" 
+    capture_lex $P214
+    .const 'Sub' $P170 = "20_1258051412.17115" 
+    capture_lex $P170
+    .const 'Sub' $P128 = "18_1258051412.17115" 
+    capture_lex $P128
+    .const 'Sub' $P57 = "15_1258051412.17115" 
+    capture_lex $P57
+    new $P44, 'ExceptionHandler'
+    set_addr $P44, control_43
+    $P44."handle_types"(58)
+    push_eh $P44
+    .lex "$ast", param_45
+    .lex "$count", param_46
+.annotate "line", 475
+    new $P47, "Hash"
+    .lex "%capnames", $P47
+.annotate "line", 476
+    new $P48, "Undef"
+    .lex "$pasttype", $P48
+.annotate "line", 474
+    find_lex $P49, "%capnames"
+.annotate "line", 476
+    find_lex $P50, "$ast"
+    $P51 = $P50."pasttype"()
+    store_lex "$pasttype", $P51
+.annotate "line", 477
+    find_lex $P53, "$pasttype"
+    set $S54, $P53
+    iseq $I55, $S54, "alt"
+    if $I55, if_52
+.annotate "line", 490
+    find_lex $P119, "$pasttype"
+    set $S120, $P119
+    iseq $I121, $S120, "concat"
+    if $I121, if_118
+.annotate "line", 499
+    find_lex $P163, "$pasttype"
+    set $S164, $P163
+    iseq $I165, $S164, "subrule"
+    if $I165, if_162
+    new $P161, 'Integer'
+    set $P161, $I165
+    goto if_162_end
+  if_162:
+    find_lex $P166, "$ast"
+    $S167 = $P166."subtype"()
+    iseq $I168, $S167, "capture"
+    new $P161, 'Integer'
+    set $P161, $I168
+  if_162_end:
+    if $P161, if_160
+.annotate "line", 512
+    find_lex $P210, "$pasttype"
+    set $S211, $P210
+    iseq $I212, $S211, "subcapture"
+    if $I212, if_209
+.annotate "line", 529
+    find_lex $P275, "$pasttype"
+    set $S276, $P275
+    iseq $I277, $S276, "quant"
+    unless $I277, if_274_end
+    .const 'Sub' $P279 = "25_1258051412.17115" 
+    capture_lex $P279
+    $P279()
+  if_274_end:
+    goto if_209_end
+  if_209:
+.annotate "line", 512
+    .const 'Sub' $P214 = "22_1258051412.17115" 
+    capture_lex $P214
+    $P214()
+  if_209_end:
+    goto if_160_end
+  if_160:
+.annotate "line", 499
+    .const 'Sub' $P170 = "20_1258051412.17115" 
+    capture_lex $P170
+    $P170()
+  if_160_end:
+    goto if_118_end
+  if_118:
+.annotate "line", 491
+    find_lex $P123, "$ast"
+    $P124 = $P123."list"()
+    defined $I125, $P124
+    unless $I125, for_undef_111
+    iter $P122, $P124
+    new $P158, 'ExceptionHandler'
+    set_addr $P158, loop157_handler
+    $P158."handle_types"(65, 67, 66)
+    push_eh $P158
+  loop157_test:
+    unless $P122, loop157_done
+    shift $P126, $P122
+  loop157_redo:
+    .const 'Sub' $P128 = "18_1258051412.17115" 
+    capture_lex $P128
+    $P128($P126)
+  loop157_next:
+    goto loop157_test
+  loop157_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P159, exception, 'type'
+    eq $P159, 65, loop157_next
+    eq $P159, 67, loop157_redo
+  loop157_done:
+    pop_eh 
+  for_undef_111:
+  if_118_end:
+.annotate "line", 490
+    goto if_52_end
+  if_52:
+.annotate "line", 477
+    .const 'Sub' $P57 = "15_1258051412.17115" 
+    capture_lex $P57
+    $P57()
+  if_52_end:
+.annotate "line", 536
+    find_lex $P300, "$count"
+    find_lex $P301, "%capnames"
+    unless_null $P301, vivify_131
+    new $P301, "Hash"
+    store_lex "%capnames", $P301
+  vivify_131:
+    set $P301[""], $P300
+    find_lex $P302, "%capnames"
+.annotate "line", 474
+    .return ($P302)
+  control_43:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P303, exception, "payload"
+    .return ($P303)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block278"  :anon :subid("25_1258051412.17115") :outer("14_1258051412.17115")
+.annotate "line", 529
+    .const 'Sub' $P290 = "26_1258051412.17115" 
+    capture_lex $P290
+.annotate "line", 530
+    new $P280, "Hash"
+    .lex "%astcap", $P280
+    find_lex $P281, "$ast"
+    unless_null $P281, vivify_91
+    new $P281, "ResizablePMCArray"
+  vivify_91:
+    set $P282, $P281[0]
+    unless_null $P282, vivify_92
+    new $P282, "Undef"
+  vivify_92:
+    find_lex $P283, "$count"
+    $P284 = "capnames"($P282, $P283)
+    store_lex "%astcap", $P284
+.annotate "line", 531
+    find_lex $P286, "%astcap"
+    defined $I287, $P286
+    unless $I287, for_undef_93
+    iter $P285, $P286
+    new $P296, 'ExceptionHandler'
+    set_addr $P296, loop295_handler
+    $P296."handle_types"(65, 67, 66)
+    push_eh $P296
+  loop295_test:
+    unless $P285, loop295_done
+    shift $P288, $P285
+  loop295_redo:
+    .const 'Sub' $P290 = "26_1258051412.17115" 
+    capture_lex $P290
+    $P290($P288)
+  loop295_next:
+    goto loop295_test
+  loop295_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P297, exception, 'type'
+    eq $P297, 65, loop295_next
+    eq $P297, 67, loop295_redo
+  loop295_done:
+    pop_eh 
+  for_undef_93:
+.annotate "line", 534
+    find_lex $P298, "%astcap"
+    unless_null $P298, vivify_95
+    new $P298, "Hash"
+  vivify_95:
+    set $P299, $P298[""]
+    unless_null $P299, vivify_96
+    new $P299, "Undef"
+  vivify_96:
+    store_lex "$count", $P299
+.annotate "line", 529
+    .return ($P299)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block289"  :anon :subid("26_1258051412.17115") :outer("25_1258051412.17115")
+    .param pmc param_291
+.annotate "line", 531
+    .lex "$_", param_291
+.annotate "line", 532
+    new $P292, "Integer"
+    assign $P292, 2
+    find_lex $P293, "$_"
+    find_lex $P294, "%capnames"
+    unless_null $P294, vivify_94
+    new $P294, "Hash"
+    store_lex "%capnames", $P294
+  vivify_94:
+    set $P294[$P293], $P292
+.annotate "line", 531
+    .return ($P292)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block213"  :anon :subid("22_1258051412.17115") :outer("14_1258051412.17115")
+.annotate "line", 512
+    .const 'Sub' $P256 = "24_1258051412.17115" 
+    capture_lex $P256
+    .const 'Sub' $P226 = "23_1258051412.17115" 
+    capture_lex $P226
+.annotate "line", 513
+    new $P215, "Undef"
+    .lex "$name", $P215
+.annotate "line", 514
+    new $P216, "ResizablePMCArray"
+    .lex "@names", $P216
+.annotate "line", 523
+    new $P217, "Hash"
+    .lex "%x", $P217
+.annotate "line", 513
+    find_lex $P218, "$ast"
+    $P219 = $P218."name"()
+    store_lex "$name", $P219
+.annotate "line", 514
+
+            $P0 = find_lex '$name'
+            $S0 = $P0
+            $P220 = split '=', $S0
+        
+    store_lex "@names", $P220
+.annotate "line", 519
+    find_lex $P222, "@names"
+    defined $I223, $P222
+    unless $I223, for_undef_97
+    iter $P221, $P222
+    new $P245, 'ExceptionHandler'
+    set_addr $P245, loop244_handler
+    $P245."handle_types"(65, 67, 66)
+    push_eh $P245
+  loop244_test:
+    unless $P221, loop244_done
+    shift $P224, $P221
+  loop244_redo:
+    .const 'Sub' $P226 = "23_1258051412.17115" 
+    capture_lex $P226
+    $P226($P224)
+  loop244_next:
+    goto loop244_test
+  loop244_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P246, exception, 'type'
+    eq $P246, 65, loop244_next
+    eq $P246, 67, loop244_redo
+  loop244_done:
+    pop_eh 
+  for_undef_97:
+.annotate "line", 523
+    find_lex $P247, "$ast"
+    unless_null $P247, vivify_99
+    new $P247, "ResizablePMCArray"
+  vivify_99:
+    set $P248, $P247[0]
+    unless_null $P248, vivify_100
+    new $P248, "Undef"
+  vivify_100:
+    find_lex $P249, "$count"
+    $P250 = "capnames"($P248, $P249)
+    store_lex "%x", $P250
+.annotate "line", 524
+    find_lex $P252, "%x"
+    defined $I253, $P252
+    unless $I253, for_undef_101
+    iter $P251, $P252
+    new $P270, 'ExceptionHandler'
+    set_addr $P270, loop269_handler
+    $P270."handle_types"(65, 67, 66)
+    push_eh $P270
+  loop269_test:
+    unless $P251, loop269_done
+    shift $P254, $P251
+  loop269_redo:
+    .const 'Sub' $P256 = "24_1258051412.17115" 
+    capture_lex $P256
+    $P256($P254)
+  loop269_next:
+    goto loop269_test
+  loop269_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P271, exception, 'type'
+    eq $P271, 65, loop269_next
+    eq $P271, 67, loop269_redo
+  loop269_done:
+    pop_eh 
+  for_undef_101:
+.annotate "line", 527
+    find_lex $P272, "%x"
+    unless_null $P272, vivify_107
+    new $P272, "Hash"
+  vivify_107:
+    set $P273, $P272[""]
+    unless_null $P273, vivify_108
+    new $P273, "Undef"
+  vivify_108:
+    store_lex "$count", $P273
+.annotate "line", 512
+    .return ($P273)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block225"  :anon :subid("23_1258051412.17115") :outer("22_1258051412.17115")
+    .param pmc param_227
+.annotate "line", 519
+    .lex "$_", param_227
+.annotate "line", 520
+    find_lex $P231, "$_"
+    set $S232, $P231
+    iseq $I233, $S232, "0"
+    unless $I233, unless_230
+    new $P229, 'Integer'
+    set $P229, $I233
+    goto unless_230_end
+  unless_230:
+    find_lex $P234, "$_"
+    set $N235, $P234
+    new $P236, "Integer"
+    assign $P236, 0
+    set $N237, $P236
+    isgt $I238, $N235, $N237
+    new $P229, 'Integer'
+    set $P229, $I238
+  unless_230_end:
+    unless $P229, if_228_end
+    find_lex $P239, "$_"
+    add $P240, $P239, 1
+    store_lex "$count", $P240
+  if_228_end:
+.annotate "line", 521
+    new $P241, "Integer"
+    assign $P241, 1
+    find_lex $P242, "$_"
+    find_lex $P243, "%capnames"
+    unless_null $P243, vivify_98
+    new $P243, "Hash"
+    store_lex "%capnames", $P243
+  vivify_98:
+    set $P243[$P242], $P241
+.annotate "line", 519
+    .return ($P241)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block255"  :anon :subid("24_1258051412.17115") :outer("22_1258051412.17115")
+    .param pmc param_257
+.annotate "line", 524
+    .lex "$_", param_257
+.annotate "line", 525
+    find_lex $P258, "$_"
+    find_lex $P259, "%capnames"
+    unless_null $P259, vivify_102
+    new $P259, "Hash"
+  vivify_102:
+    set $P260, $P259[$P258]
+    unless_null $P260, vivify_103
+    new $P260, "Undef"
+  vivify_103:
+    set $N261, $P260
+    new $P262, 'Float'
+    set $P262, $N261
+    find_lex $P263, "$_"
+    find_lex $P264, "%x"
+    unless_null $P264, vivify_104
+    new $P264, "Hash"
+  vivify_104:
+    set $P265, $P264[$P263]
+    unless_null $P265, vivify_105
+    new $P265, "Undef"
+  vivify_105:
+    add $P266, $P262, $P265
+    find_lex $P267, "$_"
+    find_lex $P268, "%capnames"
+    unless_null $P268, vivify_106
+    new $P268, "Hash"
+    store_lex "%capnames", $P268
+  vivify_106:
+    set $P268[$P267], $P266
+.annotate "line", 524
+    .return ($P266)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block169"  :anon :subid("20_1258051412.17115") :outer("14_1258051412.17115")
+.annotate "line", 499
+    .const 'Sub' $P188 = "21_1258051412.17115" 
+    capture_lex $P188
+.annotate "line", 500
+    new $P171, "Undef"
+    .lex "$name", $P171
+.annotate "line", 502
+    new $P172, "ResizablePMCArray"
+    .lex "@names", $P172
+.annotate "line", 500
+    find_lex $P173, "$ast"
+    $P174 = $P173."name"()
+    store_lex "$name", $P174
+.annotate "line", 501
+    find_lex $P176, "$name"
+    set $S177, $P176
+    iseq $I178, $S177, ""
+    unless $I178, if_175_end
+    find_lex $P179, "$count"
+    store_lex "$name", $P179
+    find_lex $P180, "$ast"
+    find_lex $P181, "$name"
+    $P180."name"($P181)
+  if_175_end:
+.annotate "line", 502
+
+            $P0 = find_lex '$name'
+            $S0 = $P0
+            $P182 = split '=', $S0
+        
+    store_lex "@names", $P182
+.annotate "line", 507
+    find_lex $P184, "@names"
+    defined $I185, $P184
+    unless $I185, for_undef_109
+    iter $P183, $P184
+    new $P207, 'ExceptionHandler'
+    set_addr $P207, loop206_handler
+    $P207."handle_types"(65, 67, 66)
+    push_eh $P207
+  loop206_test:
+    unless $P183, loop206_done
+    shift $P186, $P183
+  loop206_redo:
+    .const 'Sub' $P188 = "21_1258051412.17115" 
+    capture_lex $P188
+    $P188($P186)
+  loop206_next:
+    goto loop206_test
+  loop206_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P208, exception, 'type'
+    eq $P208, 65, loop206_next
+    eq $P208, 67, loop206_redo
+  loop206_done:
+    pop_eh 
+  for_undef_109:
+.annotate "line", 499
+    .return ($P183)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block187"  :anon :subid("21_1258051412.17115") :outer("20_1258051412.17115")
+    .param pmc param_189
+.annotate "line", 507
+    .lex "$_", param_189
+.annotate "line", 508
+    find_lex $P193, "$_"
+    set $S194, $P193
+    iseq $I195, $S194, "0"
+    unless $I195, unless_192
+    new $P191, 'Integer'
+    set $P191, $I195
+    goto unless_192_end
+  unless_192:
+    find_lex $P196, "$_"
+    set $N197, $P196
+    new $P198, "Integer"
+    assign $P198, 0
+    set $N199, $P198
+    isgt $I200, $N197, $N199
+    new $P191, 'Integer'
+    set $P191, $I200
+  unless_192_end:
+    unless $P191, if_190_end
+    find_lex $P201, "$_"
+    add $P202, $P201, 1
+    store_lex "$count", $P202
+  if_190_end:
+.annotate "line", 509
+    new $P203, "Integer"
+    assign $P203, 1
+    find_lex $P204, "$_"
+    find_lex $P205, "%capnames"
+    unless_null $P205, vivify_110
+    new $P205, "Hash"
+    store_lex "%capnames", $P205
+  vivify_110:
+    set $P205[$P204], $P203
+.annotate "line", 507
+    .return ($P203)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block127"  :anon :subid("18_1258051412.17115") :outer("14_1258051412.17115")
+    .param pmc param_130
+.annotate "line", 491
+    .const 'Sub' $P139 = "19_1258051412.17115" 
+    capture_lex $P139
+.annotate "line", 492
+    new $P129, "Hash"
+    .lex "%x", $P129
+    .lex "$_", param_130
+    find_lex $P131, "$_"
+    find_lex $P132, "$count"
+    $P133 = "capnames"($P131, $P132)
+    store_lex "%x", $P133
+.annotate "line", 493
+    find_lex $P135, "%x"
+    defined $I136, $P135
+    unless $I136, for_undef_112
+    iter $P134, $P135
+    new $P153, 'ExceptionHandler'
+    set_addr $P153, loop152_handler
+    $P153."handle_types"(65, 67, 66)
+    push_eh $P153
+  loop152_test:
+    unless $P134, loop152_done
+    shift $P137, $P134
+  loop152_redo:
+    .const 'Sub' $P139 = "19_1258051412.17115" 
+    capture_lex $P139
+    $P139($P137)
+  loop152_next:
+    goto loop152_test
+  loop152_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P154, exception, 'type'
+    eq $P154, 65, loop152_next
+    eq $P154, 67, loop152_redo
+  loop152_done:
+    pop_eh 
+  for_undef_112:
+.annotate "line", 496
+    find_lex $P155, "%x"
+    unless_null $P155, vivify_118
+    new $P155, "Hash"
+  vivify_118:
+    set $P156, $P155[""]
+    unless_null $P156, vivify_119
+    new $P156, "Undef"
+  vivify_119:
+    store_lex "$count", $P156
+.annotate "line", 491
+    .return ($P156)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block138"  :anon :subid("19_1258051412.17115") :outer("18_1258051412.17115")
+    .param pmc param_140
+.annotate "line", 493
+    .lex "$_", param_140
+.annotate "line", 494
+    find_lex $P141, "$_"
+    find_lex $P142, "%capnames"
+    unless_null $P142, vivify_113
+    new $P142, "Hash"
+  vivify_113:
+    set $P143, $P142[$P141]
+    unless_null $P143, vivify_114
+    new $P143, "Undef"
+  vivify_114:
+    set $N144, $P143
+    new $P145, 'Float'
+    set $P145, $N144
+    find_lex $P146, "$_"
+    find_lex $P147, "%x"
+    unless_null $P147, vivify_115
+    new $P147, "Hash"
+  vivify_115:
+    set $P148, $P147[$P146]
+    unless_null $P148, vivify_116
+    new $P148, "Undef"
+  vivify_116:
+    add $P149, $P145, $P148
+    find_lex $P150, "$_"
+    find_lex $P151, "%capnames"
+    unless_null $P151, vivify_117
+    new $P151, "Hash"
+    store_lex "%capnames", $P151
+  vivify_117:
+    set $P151[$P150], $P149
+.annotate "line", 493
+    .return ($P149)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block56"  :anon :subid("15_1258051412.17115") :outer("14_1258051412.17115")
+.annotate "line", 477
+    .const 'Sub' $P66 = "16_1258051412.17115" 
+    capture_lex $P66
+.annotate "line", 478
+    new $P58, "Undef"
+    .lex "$max", $P58
+    find_lex $P59, "$count"
+    store_lex "$max", $P59
+.annotate "line", 479
+    find_lex $P61, "$ast"
+    $P62 = $P61."list"()
+    defined $I63, $P62
+    unless $I63, for_undef_120
+    iter $P60, $P62
+    new $P115, 'ExceptionHandler'
+    set_addr $P115, loop114_handler
+    $P115."handle_types"(65, 67, 66)
+    push_eh $P115
+  loop114_test:
+    unless $P60, loop114_done
+    shift $P64, $P60
+  loop114_redo:
+    .const 'Sub' $P66 = "16_1258051412.17115" 
+    capture_lex $P66
+    $P66($P64)
+  loop114_next:
+    goto loop114_test
+  loop114_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P116, exception, 'type'
+    eq $P116, 65, loop114_next
+    eq $P116, 67, loop114_redo
+  loop114_done:
+    pop_eh 
+  for_undef_120:
+.annotate "line", 488
+    find_lex $P117, "$max"
+    store_lex "$count", $P117
+.annotate "line", 477
+    .return ($P117)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block65"  :anon :subid("16_1258051412.17115") :outer("15_1258051412.17115")
+    .param pmc param_68
+.annotate "line", 479
+    .const 'Sub' $P77 = "17_1258051412.17115" 
+    capture_lex $P77
+.annotate "line", 480
+    new $P67, "Hash"
+    .lex "%x", $P67
+    .lex "$_", param_68
+    find_lex $P69, "$_"
+    find_lex $P70, "$count"
+    $P71 = "capnames"($P69, $P70)
+    store_lex "%x", $P71
+.annotate "line", 481
+    find_lex $P73, "%x"
+    defined $I74, $P73
+    unless $I74, for_undef_121
+    iter $P72, $P73
+    new $P102, 'ExceptionHandler'
+    set_addr $P102, loop101_handler
+    $P102."handle_types"(65, 67, 66)
+    push_eh $P102
+  loop101_test:
+    unless $P72, loop101_done
+    shift $P75, $P72
+  loop101_redo:
+    .const 'Sub' $P77 = "17_1258051412.17115" 
+    capture_lex $P77
+    $P77($P75)
+  loop101_next:
+    goto loop101_test
+  loop101_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P103, exception, 'type'
+    eq $P103, 65, loop101_next
+    eq $P103, 67, loop101_redo
+  loop101_done:
+    pop_eh 
+  for_undef_121:
+.annotate "line", 486
+    find_lex $P106, "%x"
+    unless_null $P106, vivify_127
+    new $P106, "Hash"
+  vivify_127:
+    set $P107, $P106[""]
+    unless_null $P107, vivify_128
+    new $P107, "Undef"
+  vivify_128:
+    set $N108, $P107
+    find_lex $P109, "$max"
+    set $N110, $P109
+    isgt $I111, $N108, $N110
+    if $I111, if_105
+    new $P104, 'Integer'
+    set $P104, $I111
+    goto if_105_end
+  if_105:
+    find_lex $P112, "%x"
+    unless_null $P112, vivify_129
+    new $P112, "Hash"
+  vivify_129:
+    set $P113, $P112[""]
+    unless_null $P113, vivify_130
+    new $P113, "Undef"
+  vivify_130:
+    store_lex "$max", $P113
+    set $P104, $P113
+  if_105_end:
+.annotate "line", 479
+    .return ($P104)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block76"  :anon :subid("17_1258051412.17115") :outer("16_1258051412.17115")
+    .param pmc param_78
+.annotate "line", 481
+    .lex "$_", param_78
+.annotate "line", 482
+    find_lex $P83, "$_"
+    find_lex $P84, "%capnames"
+    unless_null $P84, vivify_122
+    new $P84, "Hash"
+  vivify_122:
+    set $P85, $P84[$P83]
+    unless_null $P85, vivify_123
+    new $P85, "Undef"
+  vivify_123:
+    set $N86, $P85
+    new $P87, "Integer"
+    assign $P87, 2
+    set $N88, $P87
+    islt $I89, $N86, $N88
+    if $I89, if_82
+    new $P81, 'Integer'
+    set $P81, $I89
+    goto if_82_end
+  if_82:
+    find_lex $P90, "$_"
+    find_lex $P91, "%x"
+    unless_null $P91, vivify_124
+    new $P91, "Hash"
+  vivify_124:
+    set $P92, $P91[$P90]
+    unless_null $P92, vivify_125
+    new $P92, "Undef"
+  vivify_125:
+    set $N93, $P92
+    new $P94, "Integer"
+    assign $P94, 1
+    set $N95, $P94
+    iseq $I96, $N93, $N95
+    new $P81, 'Integer'
+    set $P81, $I96
+  if_82_end:
+    if $P81, if_80
+    new $P98, "Integer"
+    assign $P98, 2
+    set $P79, $P98
+    goto if_80_end
+  if_80:
+    new $P97, "Integer"
+    assign $P97, 1
+    set $P79, $P97
+  if_80_end:
+.annotate "line", 483
+    find_lex $P99, "$_"
+    find_lex $P100, "%capnames"
+    unless_null $P100, vivify_126
+    new $P100, "Hash"
+    store_lex "%capnames", $P100
+  vivify_126:
+    set $P100[$P99], $P79
+.annotate "line", 481
+    .return ($P79)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backmod"  :subid("27_1258051412.17115") :outer("11_1258051412.17115")
+    .param pmc param_307
+    .param pmc param_308
+.annotate "line", 540
+    new $P306, 'ExceptionHandler'
+    set_addr $P306, control_305
+    $P306."handle_types"(58)
+    push_eh $P306
+    .lex "$ast", param_307
+    .lex "$backmod", param_308
+.annotate "line", 541
+    find_lex $P310, "$backmod"
+    set $S311, $P310
+    iseq $I312, $S311, ":"
+    if $I312, if_309
+.annotate "line", 542
+    find_lex $P317, "$backmod"
+    set $S318, $P317
+    iseq $I319, $S318, ":?"
+    unless $I319, unless_316
+    new $P315, 'Integer'
+    set $P315, $I319
+    goto unless_316_end
+  unless_316:
+    find_lex $P320, "$backmod"
+    set $S321, $P320
+    iseq $I322, $S321, "?"
+    new $P315, 'Integer'
+    set $P315, $I322
+  unless_316_end:
+    if $P315, if_314
+.annotate "line", 543
+    find_lex $P327, "$backmod"
+    set $S328, $P327
+    iseq $I329, $S328, ":!"
+    unless $I329, unless_326
+    new $P325, 'Integer'
+    set $P325, $I329
+    goto unless_326_end
+  unless_326:
+    find_lex $P330, "$backmod"
+    set $S331, $P330
+    iseq $I332, $S331, "!"
+    new $P325, 'Integer'
+    set $P325, $I332
+  unless_326_end:
+    unless $P325, if_324_end
+    find_lex $P333, "$ast"
+    $P333."backtrack"("g")
+  if_324_end:
+    goto if_314_end
+  if_314:
+.annotate "line", 542
+    find_lex $P323, "$ast"
+    $P323."backtrack"("f")
+  if_314_end:
+    goto if_309_end
+  if_309:
+.annotate "line", 541
+    find_lex $P313, "$ast"
+    $P313."backtrack"("r")
+  if_309_end:
+    find_lex $P334, "$ast"
+.annotate "line", 540
+    .return ($P334)
+  control_305:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P335, exception, "payload"
+    .return ($P335)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "subrule_alias"  :subid("28_1258051412.17115") :outer("11_1258051412.17115")
+    .param pmc param_339
+    .param pmc param_340
+.annotate "line", 547
+    new $P338, 'ExceptionHandler'
+    set_addr $P338, control_337
+    $P338."handle_types"(58)
+    push_eh $P338
+    .lex "$past", param_339
+    .lex "$name", param_340
+.annotate "line", 548
+    find_lex $P342, "$past"
+    unless_null $P342, vivify_132
+    new $P342, "Hash"
+  vivify_132:
+    set $P343, $P342["aliased"]
+    unless_null $P343, vivify_133
+    new $P343, "Undef"
+  vivify_133:
+    unless $P343, if_341_end
+    find_lex $P344, "$name"
+    concat $P345, $P344, "="
+    find_lex $P346, "$past"
+    $S347 = $P346."name"()
+    concat $P348, $P345, $S347
+    store_lex "$name", $P348
+  if_341_end:
+.annotate "line", 549
+    find_lex $P349, "$past"
+    find_lex $P350, "$name"
+    $P349."name"($P350)
+.annotate "line", 550
+    new $P351, "Integer"
+    assign $P351, 1
+    find_lex $P352, "$past"
+    unless_null $P352, vivify_134
+    new $P352, "Hash"
+    store_lex "$past", $P352
+  vivify_134:
+    set $P352["aliased"], $P351
+.annotate "line", 547
+    .return ($P351)
+  control_337:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P353, exception, "payload"
+    .return ($P353)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "arg"  :subid("29_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_359
+.annotate "line", 14
+    new $P358, 'ExceptionHandler'
+    set_addr $P358, control_357
+    $P358."handle_types"(58)
+    push_eh $P358
+    .lex "self", self
+    .lex "$/", param_359
+.annotate "line", 15
+    find_lex $P360, "$/"
+    find_lex $P363, "$/"
+    unless_null $P363, vivify_135
+    new $P363, "Hash"
+  vivify_135:
+    set $P364, $P363["quote"]
+    unless_null $P364, vivify_136
+    new $P364, "Undef"
+  vivify_136:
+    if $P364, if_362
+    find_lex $P369, "$/"
+    unless_null $P369, vivify_137
+    new $P369, "Hash"
+  vivify_137:
+    set $P370, $P369["val"]
+    unless_null $P370, vivify_138
+    new $P370, "Undef"
+  vivify_138:
+    set $N371, $P370
+    new $P361, 'Float'
+    set $P361, $N371
+    goto if_362_end
+  if_362:
+    find_lex $P365, "$/"
+    unless_null $P365, vivify_139
+    new $P365, "Hash"
+  vivify_139:
+    set $P366, $P365["quote"]
+    unless_null $P366, vivify_140
+    new $P366, "Hash"
+  vivify_140:
+    set $P367, $P366["val"]
+    unless_null $P367, vivify_141
+    new $P367, "Undef"
+  vivify_141:
+    set $S368, $P367
+    new $P361, 'String'
+    set $P361, $S368
+  if_362_end:
+    $P372 = $P360."!make"($P361)
+.annotate "line", 14
+    .return ($P372)
+  control_357:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P373, exception, "payload"
+    .return ($P373)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "arglist"  :subid("30_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_377
+.annotate "line", 18
+    .const 'Sub' $P387 = "31_1258051412.17115" 
+    capture_lex $P387
+    new $P376, 'ExceptionHandler'
+    set_addr $P376, control_375
+    $P376."handle_types"(58)
+    push_eh $P376
+    .lex "self", self
+    .lex "$/", param_377
+.annotate "line", 19
+    new $P378, "Undef"
+    .lex "$past", $P378
+    get_hll_global $P379, ["PAST"], "Op"
+    $P380 = $P379."new"("list" :named("pasttype"))
+    store_lex "$past", $P380
+.annotate "line", 20
+    find_lex $P382, "$/"
+    unless_null $P382, vivify_142
+    new $P382, "Hash"
+  vivify_142:
+    set $P383, $P382["arg"]
+    unless_null $P383, vivify_143
+    new $P383, "Undef"
+  vivify_143:
+    defined $I384, $P383
+    unless $I384, for_undef_144
+    iter $P381, $P383
+    new $P394, 'ExceptionHandler'
+    set_addr $P394, loop393_handler
+    $P394."handle_types"(65, 67, 66)
+    push_eh $P394
+  loop393_test:
+    unless $P381, loop393_done
+    shift $P385, $P381
+  loop393_redo:
+    .const 'Sub' $P387 = "31_1258051412.17115" 
+    capture_lex $P387
+    $P387($P385)
+  loop393_next:
+    goto loop393_test
+  loop393_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P395, exception, 'type'
+    eq $P395, 65, loop393_next
+    eq $P395, 67, loop393_redo
+  loop393_done:
+    pop_eh 
+  for_undef_144:
+.annotate "line", 21
+    find_lex $P396, "$/"
+    find_lex $P397, "$past"
+    $P398 = $P396."!make"($P397)
+.annotate "line", 18
+    .return ($P398)
+  control_375:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P399, exception, "payload"
+    .return ($P399)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block386"  :anon :subid("31_1258051412.17115") :outer("30_1258051412.17115")
+    .param pmc param_388
+.annotate "line", 20
+    .lex "$_", param_388
+    find_lex $P389, "$past"
+    find_lex $P390, "$_"
+    $P391 = $P390."ast"()
+    $P392 = $P389."push"($P391)
+    .return ($P392)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "TOP"  :subid("32_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_403
+.annotate "line", 24
+    new $P402, 'ExceptionHandler'
+    set_addr $P402, control_401
+    $P402."handle_types"(58)
+    push_eh $P402
+    .lex "self", self
+    .lex "$/", param_403
+.annotate "line", 25
+    new $P404, "Undef"
+    .lex "$past", $P404
+    find_lex $P405, "$/"
+    unless_null $P405, vivify_145
+    new $P405, "Hash"
+  vivify_145:
+    set $P406, $P405["nibbler"]
+    unless_null $P406, vivify_146
+    new $P406, "Undef"
+  vivify_146:
+    $P407 = $P406."ast"()
+    $P408 = "buildsub"($P407)
+    store_lex "$past", $P408
+.annotate "line", 26
+    find_lex $P409, "$past"
+    find_lex $P410, "$/"
+    $P409."node"($P410)
+.annotate "line", 27
+    find_lex $P411, "$/"
+    find_lex $P412, "$past"
+    $P413 = $P411."!make"($P412)
+.annotate "line", 24
+    .return ($P413)
+  control_401:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P414, exception, "payload"
+    .return ($P414)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "nibbler"  :subid("33_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_418
+    .param pmc param_419 :optional
+    .param int has_param_419 :opt_flag
+.annotate "line", 30
+    .const 'Sub' $P455 = "35_1258051412.17115" 
+    capture_lex $P455
+    .const 'Sub' $P427 = "34_1258051412.17115" 
+    capture_lex $P427
+    new $P417, 'ExceptionHandler'
+    set_addr $P417, control_416
+    $P417."handle_types"(58)
+    push_eh $P417
+    .lex "self", self
+    .lex "$/", param_418
+    if has_param_419, optparam_147
+    new $P420, "Undef"
+    set param_419, $P420
+  optparam_147:
+    .lex "$key", param_419
+.annotate "line", 42
+    new $P421, "Undef"
+    .lex "$past", $P421
+.annotate "line", 31
+    find_lex $P423, "$key"
+    set $S424, $P423
+    iseq $I425, $S424, "open"
+    unless $I425, if_422_end
+    .const 'Sub' $P427 = "34_1258051412.17115" 
+    capture_lex $P427
+    $P427()
+  if_422_end:
+.annotate "line", 41
+    get_global $P437, "@MODIFIERS"
+    $P437."shift"()
+    find_lex $P438, "$past"
+.annotate "line", 43
+    find_lex $P440, "$/"
+    unless_null $P440, vivify_150
+    new $P440, "Hash"
+  vivify_150:
+    set $P441, $P440["termish"]
+    unless_null $P441, vivify_151
+    new $P441, "Undef"
+  vivify_151:
+    set $N442, $P441
+    new $P443, "Integer"
+    assign $P443, 1
+    set $N444, $P443
+    isgt $I445, $N442, $N444
+    if $I445, if_439
+.annotate "line", 50
+    find_lex $P464, "$/"
+    unless_null $P464, vivify_152
+    new $P464, "Hash"
+  vivify_152:
+    set $P465, $P464["termish"]
+    unless_null $P465, vivify_153
+    new $P465, "ResizablePMCArray"
+  vivify_153:
+    set $P466, $P465[0]
+    unless_null $P466, vivify_154
+    new $P466, "Undef"
+  vivify_154:
+    $P467 = $P466."ast"()
+    store_lex "$past", $P467
+.annotate "line", 49
+    goto if_439_end
+  if_439:
+.annotate "line", 44
+    get_hll_global $P446, ["PAST"], "Regex"
+    find_lex $P447, "$/"
+    $P448 = $P446."new"("alt" :named("pasttype"), $P447 :named("node"))
+    store_lex "$past", $P448
+.annotate "line", 45
+    find_lex $P450, "$/"
+    unless_null $P450, vivify_155
+    new $P450, "Hash"
+  vivify_155:
+    set $P451, $P450["termish"]
+    unless_null $P451, vivify_156
+    new $P451, "Undef"
+  vivify_156:
+    defined $I452, $P451
+    unless $I452, for_undef_157
+    iter $P449, $P451
+    new $P462, 'ExceptionHandler'
+    set_addr $P462, loop461_handler
+    $P462."handle_types"(65, 67, 66)
+    push_eh $P462
+  loop461_test:
+    unless $P449, loop461_done
+    shift $P453, $P449
+  loop461_redo:
+    .const 'Sub' $P455 = "35_1258051412.17115" 
+    capture_lex $P455
+    $P455($P453)
+  loop461_next:
+    goto loop461_test
+  loop461_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P463, exception, 'type'
+    eq $P463, 65, loop461_next
+    eq $P463, 67, loop461_redo
+  loop461_done:
+    pop_eh 
+  for_undef_157:
+  if_439_end:
+.annotate "line", 52
+    find_lex $P468, "$/"
+    find_lex $P469, "$past"
+    $P470 = $P468."!make"($P469)
+.annotate "line", 30
+    .return ($P470)
+  control_416:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P471, exception, "payload"
+    .return ($P471)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block426"  :anon :subid("34_1258051412.17115") :outer("33_1258051412.17115")
+.annotate "line", 32
+    new $P428, "Hash"
+    .lex "%old", $P428
+.annotate "line", 33
+    new $P429, "Hash"
+    .lex "%new", $P429
+.annotate "line", 32
+    get_global $P430, "@MODIFIERS"
+    unless_null $P430, vivify_148
+    new $P430, "ResizablePMCArray"
+  vivify_148:
+    set $P431, $P430[0]
+    unless_null $P431, vivify_149
+    new $P431, "Undef"
+  vivify_149:
+    store_lex "%old", $P431
+.annotate "line", 33
+
+                       $P0 = find_lex '%old'
+                       $P432 = clone $P0
+                   
+    store_lex "%new", $P432
+.annotate "line", 37
+    get_global $P433, "@MODIFIERS"
+    find_lex $P434, "%new"
+    $P433."unshift"($P434)
+.annotate "line", 38
+    new $P435, "Exception"
+    set $P435['type'], 58
+    new $P436, "Integer"
+    assign $P436, 1
+    setattribute $P435, 'payload', $P436
+    throw $P435
+.annotate "line", 31
+    .return ()
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block454"  :anon :subid("35_1258051412.17115") :outer("33_1258051412.17115")
+    .param pmc param_456
+.annotate "line", 45
+    .lex "$_", param_456
+.annotate "line", 46
+    find_lex $P457, "$past"
+    find_lex $P458, "$_"
+    $P459 = $P458."ast"()
+    $P460 = $P457."push"($P459)
+.annotate "line", 45
+    .return ($P460)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "termish"  :subid("36_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_475
+.annotate "line", 55
+    .const 'Sub' $P488 = "37_1258051412.17115" 
+    capture_lex $P488
+    new $P474, 'ExceptionHandler'
+    set_addr $P474, control_473
+    $P474."handle_types"(58)
+    push_eh $P474
+    .lex "self", self
+    .lex "$/", param_475
+.annotate "line", 56
+    new $P476, "Undef"
+    .lex "$past", $P476
+.annotate "line", 57
+    new $P477, "Undef"
+    .lex "$lastlit", $P477
+.annotate "line", 56
+    get_hll_global $P478, ["PAST"], "Regex"
+    find_lex $P479, "$/"
+    $P480 = $P478."new"("concat" :named("pasttype"), $P479 :named("node"))
+    store_lex "$past", $P480
+.annotate "line", 57
+    new $P481, "Integer"
+    assign $P481, 0
+    store_lex "$lastlit", $P481
+.annotate "line", 58
+    find_lex $P483, "$/"
+    unless_null $P483, vivify_158
+    new $P483, "Hash"
+  vivify_158:
+    set $P484, $P483["noun"]
+    unless_null $P484, vivify_159
+    new $P484, "Undef"
+  vivify_159:
+    defined $I485, $P484
+    unless $I485, for_undef_160
+    iter $P482, $P484
+    new $P521, 'ExceptionHandler'
+    set_addr $P521, loop520_handler
+    $P521."handle_types"(65, 67, 66)
+    push_eh $P521
+  loop520_test:
+    unless $P482, loop520_done
+    shift $P486, $P482
+  loop520_redo:
+    .const 'Sub' $P488 = "37_1258051412.17115" 
+    capture_lex $P488
+    $P488($P486)
+  loop520_next:
+    goto loop520_test
+  loop520_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P522, exception, 'type'
+    eq $P522, 65, loop520_next
+    eq $P522, 67, loop520_redo
+  loop520_done:
+    pop_eh 
+  for_undef_160:
+.annotate "line", 69
+    find_lex $P523, "$/"
+    find_lex $P524, "$past"
+    $P525 = $P523."!make"($P524)
+.annotate "line", 55
+    .return ($P525)
+  control_473:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P526, exception, "payload"
+    .return ($P526)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block487"  :anon :subid("37_1258051412.17115") :outer("36_1258051412.17115")
+    .param pmc param_490
+.annotate "line", 59
+    new $P489, "Undef"
+    .lex "$ast", $P489
+    .lex "$_", param_490
+    find_lex $P491, "$_"
+    $P492 = $P491."ast"()
+    store_lex "$ast", $P492
+.annotate "line", 60
+    find_lex $P495, "$ast"
+    isfalse $I496, $P495
+    if $I496, if_494
+.annotate "line", 61
+    find_lex $P501, "$lastlit"
+    if $P501, if_500
+    set $P499, $P501
+    goto if_500_end
+  if_500:
+    find_lex $P502, "$ast"
+    $S503 = $P502."pasttype"()
+    iseq $I504, $S503, "literal"
+    new $P499, 'Integer'
+    set $P499, $I504
+  if_500_end:
+    if $P499, if_498
+.annotate "line", 65
+    find_lex $P511, "$past"
+    find_lex $P512, "$ast"
+    $P511."push"($P512)
+.annotate "line", 66
+    find_lex $P515, "$ast"
+    $S516 = $P515."pasttype"()
+    iseq $I517, $S516, "literal"
+    if $I517, if_514
+    new $P519, "Integer"
+    assign $P519, 0
+    set $P513, $P519
+    goto if_514_end
+  if_514:
+    find_lex $P518, "$ast"
+    set $P513, $P518
+  if_514_end:
+    store_lex "$lastlit", $P513
+.annotate "line", 64
+    set $P497, $P513
+.annotate "line", 61
+    goto if_498_end
+  if_498:
+.annotate "line", 62
+    find_lex $P505, "$lastlit"
+    unless_null $P505, vivify_161
+    new $P505, "ResizablePMCArray"
+  vivify_161:
+    set $P506, $P505[0]
+    unless_null $P506, vivify_162
+    new $P506, "Undef"
+  vivify_162:
+    find_lex $P507, "$ast"
+    unless_null $P507, vivify_163
+    new $P507, "ResizablePMCArray"
+  vivify_163:
+    set $P508, $P507[0]
+    unless_null $P508, vivify_164
+    new $P508, "Undef"
+  vivify_164:
+    concat $P509, $P506, $P508
+    find_lex $P510, "$lastlit"
+    unless_null $P510, vivify_165
+    new $P510, "ResizablePMCArray"
+    store_lex "$lastlit", $P510
+  vivify_165:
+    set $P510[0], $P509
+.annotate "line", 61
+    set $P497, $P509
+  if_498_end:
+    set $P493, $P497
+.annotate "line", 60
+    goto if_494_end
+  if_494:
+  if_494_end:
+.annotate "line", 58
+    .return ($P493)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "quantified_atom"  :subid("38_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_530
+.annotate "line", 72
+    .const 'Sub' $P539 = "39_1258051412.17115" 
+    capture_lex $P539
+    new $P529, 'ExceptionHandler'
+    set_addr $P529, control_528
+    $P529."handle_types"(58)
+    push_eh $P529
+    .lex "self", self
+    .lex "$/", param_530
+.annotate "line", 73
+    new $P531, "Undef"
+    .lex "$past", $P531
+    find_lex $P532, "$/"
+    unless_null $P532, vivify_166
+    new $P532, "Hash"
+  vivify_166:
+    set $P533, $P532["atom"]
+    unless_null $P533, vivify_167
+    new $P533, "Undef"
+  vivify_167:
+    $P534 = $P533."ast"()
+    store_lex "$past", $P534
+.annotate "line", 74
+    find_lex $P536, "$/"
+    unless_null $P536, vivify_168
+    new $P536, "Hash"
+  vivify_168:
+    set $P537, $P536["quantifier"]
+    unless_null $P537, vivify_169
+    new $P537, "Undef"
+  vivify_169:
+    if $P537, if_535
+.annotate "line", 80
+    find_lex $P553, "$/"
+    unless_null $P553, vivify_170
+    new $P553, "Hash"
+  vivify_170:
+    set $P554, $P553["backmod"]
+    unless_null $P554, vivify_171
+    new $P554, "ResizablePMCArray"
+  vivify_171:
+    set $P555, $P554[0]
+    unless_null $P555, vivify_172
+    new $P555, "Undef"
+  vivify_172:
+    unless $P555, if_552_end
+    find_lex $P556, "$past"
+    find_lex $P557, "$/"
+    unless_null $P557, vivify_173
+    new $P557, "Hash"
+  vivify_173:
+    set $P558, $P557["backmod"]
+    unless_null $P558, vivify_174
+    new $P558, "ResizablePMCArray"
+  vivify_174:
+    set $P559, $P558[0]
+    unless_null $P559, vivify_175
+    new $P559, "Undef"
+  vivify_175:
+    "backmod"($P556, $P559)
+  if_552_end:
+    goto if_535_end
+  if_535:
+.annotate "line", 74
+    .const 'Sub' $P539 = "39_1258051412.17115" 
+    capture_lex $P539
+    $P539()
+  if_535_end:
+.annotate "line", 81
+    find_lex $P565, "$past"
+    if $P565, if_564
+    set $P563, $P565
+    goto if_564_end
+  if_564:
+    find_lex $P566, "$past"
+    $P567 = $P566."backtrack"()
+    isfalse $I568, $P567
+    new $P563, 'Integer'
+    set $P563, $I568
+  if_564_end:
+    if $P563, if_562
+    set $P561, $P563
+    goto if_562_end
+  if_562:
+    get_global $P569, "@MODIFIERS"
+    unless_null $P569, vivify_179
+    new $P569, "ResizablePMCArray"
+  vivify_179:
+    set $P570, $P569[0]
+    unless_null $P570, vivify_180
+    new $P570, "Hash"
+  vivify_180:
+    set $P571, $P570["r"]
+    unless_null $P571, vivify_181
+    new $P571, "Undef"
+  vivify_181:
+    set $P561, $P571
+  if_562_end:
+    unless $P561, if_560_end
+.annotate "line", 82
+    find_lex $P572, "$past"
+    $P572."backtrack"("r")
+  if_560_end:
+.annotate "line", 84
+    find_lex $P573, "$/"
+    find_lex $P574, "$past"
+    $P575 = $P573."!make"($P574)
+.annotate "line", 72
+    .return ($P575)
+  control_528:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P576, exception, "payload"
+    .return ($P576)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block538"  :anon :subid("39_1258051412.17115") :outer("38_1258051412.17115")
+.annotate "line", 76
+    new $P540, "Undef"
+    .lex "$qast", $P540
+.annotate "line", 75
+    find_lex $P542, "$past"
+    isfalse $I543, $P542
+    unless $I543, if_541_end
+    find_lex $P544, "$/"
+    $P544."panic"("Can't quantify zero-width atom")
+  if_541_end:
+.annotate "line", 76
+    find_lex $P545, "$/"
+    unless_null $P545, vivify_176
+    new $P545, "Hash"
+  vivify_176:
+    set $P546, $P545["quantifier"]
+    unless_null $P546, vivify_177
+    new $P546, "ResizablePMCArray"
+  vivify_177:
+    set $P547, $P546[0]
+    unless_null $P547, vivify_178
+    new $P547, "Undef"
+  vivify_178:
+    $P548 = $P547."ast"()
+    store_lex "$qast", $P548
+.annotate "line", 77
+    find_lex $P549, "$qast"
+    find_lex $P550, "$past"
+    $P549."unshift"($P550)
+.annotate "line", 78
+    find_lex $P551, "$qast"
+    store_lex "$past", $P551
+.annotate "line", 74
+    .return ($P551)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "atom"  :subid("40_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_580
+.annotate "line", 87
+    new $P579, 'ExceptionHandler'
+    set_addr $P579, control_578
+    $P579."handle_types"(58)
+    push_eh $P579
+    .lex "self", self
+    .lex "$/", param_580
+.annotate "line", 88
+    new $P581, "Undef"
+    .lex "$past", $P581
+.annotate "line", 87
+    find_lex $P582, "$past"
+.annotate "line", 89
+    find_lex $P584, "$/"
+    unless_null $P584, vivify_182
+    new $P584, "Hash"
+  vivify_182:
+    set $P585, $P584["metachar"]
+    unless_null $P585, vivify_183
+    new $P585, "Undef"
+  vivify_183:
+    if $P585, if_583
+.annotate "line", 91
+    get_hll_global $P589, ["PAST"], "Regex"
+    find_lex $P590, "$/"
+    set $S591, $P590
+    find_lex $P592, "$/"
+    $P593 = $P589."new"($S591, "literal" :named("pasttype"), $P592 :named("node"))
+    store_lex "$past", $P593
+.annotate "line", 92
+    get_global $P595, "@MODIFIERS"
+    unless_null $P595, vivify_184
+    new $P595, "ResizablePMCArray"
+  vivify_184:
+    set $P596, $P595[0]
+    unless_null $P596, vivify_185
+    new $P596, "Hash"
+  vivify_185:
+    set $P597, $P596["i"]
+    unless_null $P597, vivify_186
+    new $P597, "Undef"
+  vivify_186:
+    unless $P597, if_594_end
+    find_lex $P598, "$past"
+    $P598."subtype"("ignorecase")
+  if_594_end:
+.annotate "line", 90
+    goto if_583_end
+  if_583:
+.annotate "line", 89
+    find_lex $P586, "$/"
+    unless_null $P586, vivify_187
+    new $P586, "Hash"
+  vivify_187:
+    set $P587, $P586["metachar"]
+    unless_null $P587, vivify_188
+    new $P587, "Undef"
+  vivify_188:
+    $P588 = $P587."ast"()
+    store_lex "$past", $P588
+  if_583_end:
+.annotate "line", 94
+    find_lex $P599, "$/"
+    find_lex $P600, "$past"
+    $P601 = $P599."!make"($P600)
+.annotate "line", 87
+    .return ($P601)
+  control_578:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P602, exception, "payload"
+    .return ($P602)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "quantifier:sym<*>"  :subid("41_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_606
+.annotate "line", 97
+    new $P605, 'ExceptionHandler'
+    set_addr $P605, control_604
+    $P605."handle_types"(58)
+    push_eh $P605
+    .lex "self", self
+    .lex "$/", param_606
+.annotate "line", 98
+    new $P607, "Undef"
+    .lex "$past", $P607
+    get_hll_global $P608, ["PAST"], "Regex"
+    find_lex $P609, "$/"
+    $P610 = $P608."new"("quant" :named("pasttype"), $P609 :named("node"))
+    store_lex "$past", $P610
+.annotate "line", 99
+    find_lex $P611, "$/"
+    find_lex $P612, "$past"
+    find_lex $P613, "$/"
+    unless_null $P613, vivify_189
+    new $P613, "Hash"
+  vivify_189:
+    set $P614, $P613["backmod"]
+    unless_null $P614, vivify_190
+    new $P614, "Undef"
+  vivify_190:
+    $P615 = "backmod"($P612, $P614)
+    $P616 = $P611."!make"($P615)
+.annotate "line", 97
+    .return ($P616)
+  control_604:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P617, exception, "payload"
+    .return ($P617)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "quantifier:sym<+>"  :subid("42_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_621
+.annotate "line", 102
+    new $P620, 'ExceptionHandler'
+    set_addr $P620, control_619
+    $P620."handle_types"(58)
+    push_eh $P620
+    .lex "self", self
+    .lex "$/", param_621
+.annotate "line", 103
+    new $P622, "Undef"
+    .lex "$past", $P622
+    get_hll_global $P623, ["PAST"], "Regex"
+    find_lex $P624, "$/"
+    $P625 = $P623."new"("quant" :named("pasttype"), 1 :named("min"), $P624 :named("node"))
+    store_lex "$past", $P625
+.annotate "line", 104
+    find_lex $P626, "$/"
+    find_lex $P627, "$past"
+    find_lex $P628, "$/"
+    unless_null $P628, vivify_191
+    new $P628, "Hash"
+  vivify_191:
+    set $P629, $P628["backmod"]
+    unless_null $P629, vivify_192
+    new $P629, "Undef"
+  vivify_192:
+    $P630 = "backmod"($P627, $P629)
+    $P631 = $P626."!make"($P630)
+.annotate "line", 102
+    .return ($P631)
+  control_619:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P632, exception, "payload"
+    .return ($P632)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "quantifier:sym<?>"  :subid("43_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_636
+.annotate "line", 107
+    new $P635, 'ExceptionHandler'
+    set_addr $P635, control_634
+    $P635."handle_types"(58)
+    push_eh $P635
+    .lex "self", self
+    .lex "$/", param_636
+.annotate "line", 108
+    new $P637, "Undef"
+    .lex "$past", $P637
+    get_hll_global $P638, ["PAST"], "Regex"
+    find_lex $P639, "$/"
+    $P640 = $P638."new"("quant" :named("pasttype"), 0 :named("min"), 1 :named("max"), $P639 :named("node"))
+    store_lex "$past", $P640
+.annotate "line", 109
+    find_lex $P641, "$/"
+    find_lex $P642, "$past"
+    find_lex $P643, "$/"
+    unless_null $P643, vivify_193
+    new $P643, "Hash"
+  vivify_193:
+    set $P644, $P643["backmod"]
+    unless_null $P644, vivify_194
+    new $P644, "Undef"
+  vivify_194:
+    $P645 = "backmod"($P642, $P644)
+    $P641."!make"($P645)
+.annotate "line", 110
+    find_lex $P646, "$/"
+    find_lex $P647, "$past"
+    $P648 = $P646."!make"($P647)
+.annotate "line", 107
+    .return ($P648)
+  control_634:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P649, exception, "payload"
+    .return ($P649)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "quantifier:sym<**>"  :subid("44_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_653
+.annotate "line", 113
+    new $P652, 'ExceptionHandler'
+    set_addr $P652, control_651
+    $P652."handle_types"(58)
+    push_eh $P652
+    .lex "self", self
+    .lex "$/", param_653
+.annotate "line", 114
+    new $P654, "Undef"
+    .lex "$past", $P654
+.annotate "line", 113
+    find_lex $P655, "$past"
+.annotate "line", 115
+    find_lex $P657, "$/"
+    unless_null $P657, vivify_195
+    new $P657, "Hash"
+  vivify_195:
+    set $P658, $P657["quantified_atom"]
+    unless_null $P658, vivify_196
+    new $P658, "Undef"
+  vivify_196:
+    if $P658, if_656
+.annotate "line", 120
+    get_hll_global $P665, ["PAST"], "Regex"
+    find_lex $P666, "$/"
+    unless_null $P666, vivify_197
+    new $P666, "Hash"
+  vivify_197:
+    set $P667, $P666["min"]
+    unless_null $P667, vivify_198
+    new $P667, "Undef"
+  vivify_198:
+    set $N668, $P667
+    find_lex $P669, "$/"
+    $P670 = $P665."new"("quant" :named("pasttype"), $N668 :named("min"), $P669 :named("node"))
+    store_lex "$past", $P670
+.annotate "line", 121
+    find_lex $P672, "$/"
+    unless_null $P672, vivify_199
+    new $P672, "Hash"
+  vivify_199:
+    set $P673, $P672["max"]
+    unless_null $P673, vivify_200
+    new $P673, "Undef"
+  vivify_200:
+    isfalse $I674, $P673
+    if $I674, if_671
+.annotate "line", 122
+    find_lex $P680, "$/"
+    unless_null $P680, vivify_201
+    new $P680, "Hash"
+  vivify_201:
+    set $P681, $P680["max"]
+    unless_null $P681, vivify_202
+    new $P681, "ResizablePMCArray"
+  vivify_202:
+    set $P682, $P681[0]
+    unless_null $P682, vivify_203
+    new $P682, "Undef"
+  vivify_203:
+    set $S683, $P682
+    isne $I684, $S683, "*"
+    unless $I684, if_679_end
+    find_lex $P685, "$past"
+    find_lex $P686, "$/"
+    unless_null $P686, vivify_204
+    new $P686, "Hash"
+  vivify_204:
+    set $P687, $P686["max"]
+    unless_null $P687, vivify_205
+    new $P687, "ResizablePMCArray"
+  vivify_205:
+    set $P688, $P687[0]
+    unless_null $P688, vivify_206
+    new $P688, "Undef"
+  vivify_206:
+    set $N689, $P688
+    $P685."max"($N689)
+  if_679_end:
+    goto if_671_end
+  if_671:
+.annotate "line", 121
+    find_lex $P675, "$past"
+    find_lex $P676, "$/"
+    unless_null $P676, vivify_207
+    new $P676, "Hash"
+  vivify_207:
+    set $P677, $P676["min"]
+    unless_null $P677, vivify_208
+    new $P677, "Undef"
+  vivify_208:
+    set $N678, $P677
+    $P675."max"($N678)
+  if_671_end:
+.annotate "line", 119
+    goto if_656_end
+  if_656:
+.annotate "line", 116
+    get_hll_global $P659, ["PAST"], "Regex"
+.annotate "line", 117
+    find_lex $P660, "$/"
+    unless_null $P660, vivify_209
+    new $P660, "Hash"
+  vivify_209:
+    set $P661, $P660["quantified_atom"]
+    unless_null $P661, vivify_210
+    new $P661, "Undef"
+  vivify_210:
+    $P662 = $P661."ast"()
+    find_lex $P663, "$/"
+    $P664 = $P659."new"("quant" :named("pasttype"), 1 :named("min"), $P662 :named("sep"), $P663 :named("node"))
+.annotate "line", 116
+    store_lex "$past", $P664
+  if_656_end:
+.annotate "line", 124
+    find_lex $P690, "$/"
+    find_lex $P691, "$past"
+    find_lex $P692, "$/"
+    unless_null $P692, vivify_211
+    new $P692, "Hash"
+  vivify_211:
+    set $P693, $P692["backmod"]
+    unless_null $P693, vivify_212
+    new $P693, "Undef"
+  vivify_212:
+    $P694 = "backmod"($P691, $P693)
+    $P695 = $P690."!make"($P694)
+.annotate "line", 113
+    .return ($P695)
+  control_651:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P696, exception, "payload"
+    .return ($P696)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<ws>"  :subid("45_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_700
+.annotate "line", 127
+    new $P699, 'ExceptionHandler'
+    set_addr $P699, control_698
+    $P699."handle_types"(58)
+    push_eh $P699
+    .lex "self", self
+    .lex "$/", param_700
+.annotate "line", 128
+    new $P701, "Undef"
+    .lex "$past", $P701
+.annotate "line", 129
+    get_global $P704, "@MODIFIERS"
+    unless_null $P704, vivify_213
+    new $P704, "ResizablePMCArray"
+  vivify_213:
+    set $P705, $P704[0]
+    unless_null $P705, vivify_214
+    new $P705, "Hash"
+  vivify_214:
+    set $P706, $P705["s"]
+    unless_null $P706, vivify_215
+    new $P706, "Undef"
+  vivify_215:
+    if $P706, if_703
+    new $P710, "Integer"
+    assign $P710, 0
+    set $P702, $P710
+    goto if_703_end
+  if_703:
+    get_hll_global $P707, ["PAST"], "Regex"
+    find_lex $P708, "$/"
+    $P709 = $P707."new"("ws", "subrule" :named("pasttype"), "method" :named("subtype"), $P708 :named("node"))
+    set $P702, $P709
+  if_703_end:
+    store_lex "$past", $P702
+.annotate "line", 132
+    find_lex $P711, "$/"
+    find_lex $P712, "$past"
+    $P713 = $P711."!make"($P712)
+.annotate "line", 127
+    .return ($P713)
+  control_698:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P714, exception, "payload"
+    .return ($P714)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<[ ]>"  :subid("46_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_718
+.annotate "line", 136
+    new $P717, 'ExceptionHandler'
+    set_addr $P717, control_716
+    $P717."handle_types"(58)
+    push_eh $P717
+    .lex "self", self
+    .lex "$/", param_718
+.annotate "line", 137
+    find_lex $P719, "$/"
+    find_lex $P720, "$/"
+    unless_null $P720, vivify_216
+    new $P720, "Hash"
+  vivify_216:
+    set $P721, $P720["nibbler"]
+    unless_null $P721, vivify_217
+    new $P721, "Undef"
+  vivify_217:
+    $P722 = $P721."ast"()
+    $P723 = $P719."!make"($P722)
+.annotate "line", 136
+    .return ($P723)
+  control_716:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P724, exception, "payload"
+    .return ($P724)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<( )>"  :subid("47_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_728
+.annotate "line", 140
+    new $P727, 'ExceptionHandler'
+    set_addr $P727, control_726
+    $P727."handle_types"(58)
+    push_eh $P727
+    .lex "self", self
+    .lex "$/", param_728
+.annotate "line", 141
+    new $P729, "Undef"
+    .lex "$subpast", $P729
+.annotate "line", 142
+    new $P730, "Undef"
+    .lex "$past", $P730
+.annotate "line", 141
+    find_lex $P731, "$/"
+    unless_null $P731, vivify_218
+    new $P731, "Hash"
+  vivify_218:
+    set $P732, $P731["nibbler"]
+    unless_null $P732, vivify_219
+    new $P732, "Undef"
+  vivify_219:
+    $P733 = $P732."ast"()
+    $P734 = "buildsub"($P733)
+    store_lex "$subpast", $P734
+.annotate "line", 142
+    get_hll_global $P735, ["PAST"], "Regex"
+    find_lex $P736, "$subpast"
+    find_lex $P737, "$/"
+    $P738 = $P735."new"($P736, "subrule" :named("pasttype"), "capture" :named("subtype"), $P737 :named("node"))
+    store_lex "$past", $P738
+.annotate "line", 144
+    find_lex $P739, "$/"
+    find_lex $P740, "$past"
+    $P741 = $P739."!make"($P740)
+.annotate "line", 140
+    .return ($P741)
+  control_726:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P742, exception, "payload"
+    .return ($P742)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<'>"  :subid("48_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_746
+.annotate "line", 147
+    new $P745, 'ExceptionHandler'
+    set_addr $P745, control_744
+    $P745."handle_types"(58)
+    push_eh $P745
+    .lex "self", self
+    .lex "$/", param_746
+.annotate "line", 148
+    new $P747, "Undef"
+    .lex "$past", $P747
+    get_hll_global $P748, ["PAST"], "Regex"
+    find_lex $P749, "$/"
+    unless_null $P749, vivify_220
+    new $P749, "Hash"
+  vivify_220:
+    set $P750, $P749["quote"]
+    unless_null $P750, vivify_221
+    new $P750, "Hash"
+  vivify_221:
+    set $P751, $P750["val"]
+    unless_null $P751, vivify_222
+    new $P751, "Undef"
+  vivify_222:
+    set $S752, $P751
+    find_lex $P753, "$/"
+    $P754 = $P748."new"($S752, "literal" :named("pasttype"), $P753 :named("node"))
+    store_lex "$past", $P754
+.annotate "line", 149
+    find_lex $P755, "$/"
+    find_lex $P756, "$past"
+    $P757 = $P755."!make"($P756)
+.annotate "line", 147
+    .return ($P757)
+  control_744:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P758, exception, "payload"
+    .return ($P758)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<.>"  :subid("49_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_762
+.annotate "line", 152
+    new $P761, 'ExceptionHandler'
+    set_addr $P761, control_760
+    $P761."handle_types"(58)
+    push_eh $P761
+    .lex "self", self
+    .lex "$/", param_762
+.annotate "line", 153
+    new $P763, "Undef"
+    .lex "$past", $P763
+    get_hll_global $P764, ["PAST"], "Regex"
+    find_lex $P765, "$/"
+    $P766 = $P764."new"("charclass" :named("pasttype"), "." :named("subtype"), $P765 :named("node"))
+    store_lex "$past", $P766
+.annotate "line", 154
+    find_lex $P767, "$/"
+    find_lex $P768, "$past"
+    $P769 = $P767."!make"($P768)
+.annotate "line", 152
+    .return ($P769)
+  control_760:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P770, exception, "payload"
+    .return ($P770)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<^>"  :subid("50_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_774
+.annotate "line", 157
+    new $P773, 'ExceptionHandler'
+    set_addr $P773, control_772
+    $P773."handle_types"(58)
+    push_eh $P773
+    .lex "self", self
+    .lex "$/", param_774
+.annotate "line", 158
+    new $P775, "Undef"
+    .lex "$past", $P775
+    get_hll_global $P776, ["PAST"], "Regex"
+    find_lex $P777, "$/"
+    $P778 = $P776."new"("anchor" :named("pasttype"), "bos" :named("subtype"), $P777 :named("node"))
+    store_lex "$past", $P778
+.annotate "line", 159
+    find_lex $P779, "$/"
+    find_lex $P780, "$past"
+    $P781 = $P779."!make"($P780)
+.annotate "line", 157
+    .return ($P781)
+  control_772:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P782, exception, "payload"
+    .return ($P782)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<^^>"  :subid("51_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_786
+.annotate "line", 162
+    new $P785, 'ExceptionHandler'
+    set_addr $P785, control_784
+    $P785."handle_types"(58)
+    push_eh $P785
+    .lex "self", self
+    .lex "$/", param_786
+.annotate "line", 163
+    new $P787, "Undef"
+    .lex "$past", $P787
+    get_hll_global $P788, ["PAST"], "Regex"
+    find_lex $P789, "$/"
+    $P790 = $P788."new"("anchor" :named("pasttype"), "bol" :named("subtype"), $P789 :named("node"))
+    store_lex "$past", $P790
+.annotate "line", 164
+    find_lex $P791, "$/"
+    find_lex $P792, "$past"
+    $P793 = $P791."!make"($P792)
+.annotate "line", 162
+    .return ($P793)
+  control_784:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P794, exception, "payload"
+    .return ($P794)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<$>"  :subid("52_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_798
+.annotate "line", 167
+    new $P797, 'ExceptionHandler'
+    set_addr $P797, control_796
+    $P797."handle_types"(58)
+    push_eh $P797
+    .lex "self", self
+    .lex "$/", param_798
+.annotate "line", 168
+    new $P799, "Undef"
+    .lex "$past", $P799
+    get_hll_global $P800, ["PAST"], "Regex"
+    find_lex $P801, "$/"
+    $P802 = $P800."new"("anchor" :named("pasttype"), "eos" :named("subtype"), $P801 :named("node"))
+    store_lex "$past", $P802
+.annotate "line", 169
+    find_lex $P803, "$/"
+    find_lex $P804, "$past"
+    $P805 = $P803."!make"($P804)
+.annotate "line", 167
+    .return ($P805)
+  control_796:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P806, exception, "payload"
+    .return ($P806)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<$$>"  :subid("53_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_810
+.annotate "line", 172
+    new $P809, 'ExceptionHandler'
+    set_addr $P809, control_808
+    $P809."handle_types"(58)
+    push_eh $P809
+    .lex "self", self
+    .lex "$/", param_810
+.annotate "line", 173
+    new $P811, "Undef"
+    .lex "$past", $P811
+    get_hll_global $P812, ["PAST"], "Regex"
+    find_lex $P813, "$/"
+    $P814 = $P812."new"("anchor" :named("pasttype"), "eol" :named("subtype"), $P813 :named("node"))
+    store_lex "$past", $P814
+.annotate "line", 174
+    find_lex $P815, "$/"
+    find_lex $P816, "$past"
+    $P817 = $P815."!make"($P816)
+.annotate "line", 172
+    .return ($P817)
+  control_808:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P818, exception, "payload"
+    .return ($P818)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<:::>"  :subid("54_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_822
+.annotate "line", 177
+    new $P821, 'ExceptionHandler'
+    set_addr $P821, control_820
+    $P821."handle_types"(58)
+    push_eh $P821
+    .lex "self", self
+    .lex "$/", param_822
+.annotate "line", 178
+    new $P823, "Undef"
+    .lex "$past", $P823
+    get_hll_global $P824, ["PAST"], "Regex"
+    find_lex $P825, "$/"
+    $P826 = $P824."new"("cut" :named("pasttype"), $P825 :named("node"))
+    store_lex "$past", $P826
+.annotate "line", 179
+    find_lex $P827, "$/"
+    find_lex $P828, "$past"
+    $P829 = $P827."!make"($P828)
+.annotate "line", 177
+    .return ($P829)
+  control_820:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P830, exception, "payload"
+    .return ($P830)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<lwb>"  :subid("55_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_834
+.annotate "line", 182
+    new $P833, 'ExceptionHandler'
+    set_addr $P833, control_832
+    $P833."handle_types"(58)
+    push_eh $P833
+    .lex "self", self
+    .lex "$/", param_834
+.annotate "line", 183
+    new $P835, "Undef"
+    .lex "$past", $P835
+    get_hll_global $P836, ["PAST"], "Regex"
+    find_lex $P837, "$/"
+    $P838 = $P836."new"("anchor" :named("pasttype"), "lwb" :named("subtype"), $P837 :named("node"))
+    store_lex "$past", $P838
+.annotate "line", 184
+    find_lex $P839, "$/"
+    find_lex $P840, "$past"
+    $P841 = $P839."!make"($P840)
+.annotate "line", 182
+    .return ($P841)
+  control_832:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P842, exception, "payload"
+    .return ($P842)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<rwb>"  :subid("56_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_846
+.annotate "line", 187
+    new $P845, 'ExceptionHandler'
+    set_addr $P845, control_844
+    $P845."handle_types"(58)
+    push_eh $P845
+    .lex "self", self
+    .lex "$/", param_846
+.annotate "line", 188
+    new $P847, "Undef"
+    .lex "$past", $P847
+    get_hll_global $P848, ["PAST"], "Regex"
+    find_lex $P849, "$/"
+    $P850 = $P848."new"("anchor" :named("pasttype"), "rwb" :named("subtype"), $P849 :named("node"))
+    store_lex "$past", $P850
+.annotate "line", 189
+    find_lex $P851, "$/"
+    find_lex $P852, "$past"
+    $P853 = $P851."!make"($P852)
+.annotate "line", 187
+    .return ($P853)
+  control_844:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P854, exception, "payload"
+    .return ($P854)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<bs>"  :subid("57_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_858
+.annotate "line", 192
+    new $P857, 'ExceptionHandler'
+    set_addr $P857, control_856
+    $P857."handle_types"(58)
+    push_eh $P857
+    .lex "self", self
+    .lex "$/", param_858
+.annotate "line", 193
+    find_lex $P859, "$/"
+    find_lex $P860, "$/"
+    unless_null $P860, vivify_223
+    new $P860, "Hash"
+  vivify_223:
+    set $P861, $P860["backslash"]
+    unless_null $P861, vivify_224
+    new $P861, "Undef"
+  vivify_224:
+    $P862 = $P861."ast"()
+    $P863 = $P859."!make"($P862)
+.annotate "line", 192
+    .return ($P863)
+  control_856:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P864, exception, "payload"
+    .return ($P864)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<mod>"  :subid("58_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_868
+.annotate "line", 196
+    new $P867, 'ExceptionHandler'
+    set_addr $P867, control_866
+    $P867."handle_types"(58)
+    push_eh $P867
+    .lex "self", self
+    .lex "$/", param_868
+.annotate "line", 197
+    find_lex $P869, "$/"
+    find_lex $P870, "$/"
+    unless_null $P870, vivify_225
+    new $P870, "Hash"
+  vivify_225:
+    set $P871, $P870["mod_internal"]
+    unless_null $P871, vivify_226
+    new $P871, "Undef"
+  vivify_226:
+    $P872 = $P871."ast"()
+    $P873 = $P869."!make"($P872)
+.annotate "line", 196
+    .return ($P873)
+  control_866:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P874, exception, "payload"
+    .return ($P874)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<assert>"  :subid("59_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_878
+.annotate "line", 200
+    new $P877, 'ExceptionHandler'
+    set_addr $P877, control_876
+    $P877."handle_types"(58)
+    push_eh $P877
+    .lex "self", self
+    .lex "$/", param_878
+.annotate "line", 201
+    find_lex $P879, "$/"
+    find_lex $P880, "$/"
+    unless_null $P880, vivify_227
+    new $P880, "Hash"
+  vivify_227:
+    set $P881, $P880["assertion"]
+    unless_null $P881, vivify_228
+    new $P881, "Undef"
+  vivify_228:
+    $P882 = $P881."ast"()
+    $P883 = $P879."!make"($P882)
+.annotate "line", 200
+    .return ($P883)
+  control_876:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P884, exception, "payload"
+    .return ($P884)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<~>"  :subid("60_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_888
+.annotate "line", 204
+    new $P887, 'ExceptionHandler'
+    set_addr $P887, control_886
+    $P887."handle_types"(58)
+    push_eh $P887
+    .lex "self", self
+    .lex "$/", param_888
+.annotate "line", 205
+    find_lex $P889, "$/"
+    get_hll_global $P890, ["PAST"], "Regex"
+.annotate "line", 206
+    find_lex $P891, "$/"
+    unless_null $P891, vivify_229
+    new $P891, "Hash"
+  vivify_229:
+    set $P892, $P891["EXPR"]
+    unless_null $P892, vivify_230
+    new $P892, "Undef"
+  vivify_230:
+    $P893 = $P892."ast"()
+.annotate "line", 207
+    get_hll_global $P894, ["PAST"], "Regex"
+.annotate "line", 208
+    find_lex $P895, "$/"
+    unless_null $P895, vivify_231
+    new $P895, "Hash"
+  vivify_231:
+    set $P896, $P895["GOAL"]
+    unless_null $P896, vivify_232
+    new $P896, "Undef"
+  vivify_232:
+    $P897 = $P896."ast"()
+.annotate "line", 209
+    get_hll_global $P898, ["PAST"], "Regex"
+    find_lex $P899, "$/"
+    unless_null $P899, vivify_233
+    new $P899, "Hash"
+  vivify_233:
+    set $P900, $P899["GOAL"]
+    unless_null $P900, vivify_234
+    new $P900, "Undef"
+  vivify_234:
+    set $S901, $P900
+    $P902 = $P898."new"("FAILGOAL", $S901, "subrule" :named("pasttype"), "method" :named("subtype"))
+    $P903 = $P894."new"($P897, $P902, "alt" :named("pasttype"))
+.annotate "line", 207
+    $P904 = $P890."new"($P893, $P903, "concat" :named("pasttype"))
+.annotate "line", 205
+    $P905 = $P889."!make"($P904)
+.annotate "line", 204
+    .return ($P905)
+  control_886:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P906, exception, "payload"
+    .return ($P906)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<{*}>"  :subid("61_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_910
+.annotate "line", 217
+    new $P909, 'ExceptionHandler'
+    set_addr $P909, control_908
+    $P909."handle_types"(58)
+    push_eh $P909
+    .lex "self", self
+    .lex "$/", param_910
+.annotate "line", 218
+    new $P911, "Undef"
+    .lex "$past", $P911
+.annotate "line", 219
+    find_lex $P914, "$/"
+    unless_null $P914, vivify_235
+    new $P914, "Hash"
+  vivify_235:
+    set $P915, $P914["key"]
+    unless_null $P915, vivify_236
+    new $P915, "Undef"
+  vivify_236:
+    if $P915, if_913
+    new $P923, "Integer"
+    assign $P923, 0
+    set $P912, $P923
+    goto if_913_end
+  if_913:
+    get_hll_global $P916, ["PAST"], "Regex"
+    find_lex $P917, "$/"
+    unless_null $P917, vivify_237
+    new $P917, "Hash"
+  vivify_237:
+    set $P918, $P917["key"]
+    unless_null $P918, vivify_238
+    new $P918, "ResizablePMCArray"
+  vivify_238:
+    set $P919, $P918[0]
+    unless_null $P919, vivify_239
+    new $P919, "Undef"
+  vivify_239:
+    set $S920, $P919
+    find_lex $P921, "$/"
+    $P922 = $P916."new"($S920, "reduce" :named("pasttype"), $P921 :named("node"))
+    set $P912, $P922
+  if_913_end:
+    store_lex "$past", $P912
+.annotate "line", 221
+    find_lex $P924, "$/"
+    find_lex $P925, "$past"
+    $P926 = $P924."!make"($P925)
+.annotate "line", 217
+    .return ($P926)
+  control_908:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P927, exception, "payload"
+    .return ($P927)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<var>"  :subid("62_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_931
+.annotate "line", 224
+    new $P930, 'ExceptionHandler'
+    set_addr $P930, control_929
+    $P930."handle_types"(58)
+    push_eh $P930
+    .lex "self", self
+    .lex "$/", param_931
+.annotate "line", 225
+    new $P932, "Undef"
+    .lex "$past", $P932
+.annotate "line", 226
+    new $P933, "Undef"
+    .lex "$name", $P933
+.annotate "line", 224
+    find_lex $P934, "$past"
+.annotate "line", 226
+    find_lex $P937, "$/"
+    unless_null $P937, vivify_240
+    new $P937, "Hash"
+  vivify_240:
+    set $P938, $P937["pos"]
+    unless_null $P938, vivify_241
+    new $P938, "Undef"
+  vivify_241:
+    if $P938, if_936
+    find_lex $P942, "$/"
+    unless_null $P942, vivify_242
+    new $P942, "Hash"
+  vivify_242:
+    set $P943, $P942["name"]
+    unless_null $P943, vivify_243
+    new $P943, "Undef"
+  vivify_243:
+    set $S944, $P943
+    new $P935, 'String'
+    set $P935, $S944
+    goto if_936_end
+  if_936:
+    find_lex $P939, "$/"
+    unless_null $P939, vivify_244
+    new $P939, "Hash"
+  vivify_244:
+    set $P940, $P939["pos"]
+    unless_null $P940, vivify_245
+    new $P940, "Undef"
+  vivify_245:
+    set $N941, $P940
+    new $P935, 'Float'
+    set $P935, $N941
+  if_936_end:
+    store_lex "$name", $P935
+.annotate "line", 227
+    find_lex $P946, "$/"
+    unless_null $P946, vivify_246
+    new $P946, "Hash"
+  vivify_246:
+    set $P947, $P946["quantified_atom"]
+    unless_null $P947, vivify_247
+    new $P947, "Undef"
+  vivify_247:
+    if $P947, if_945
+.annotate "line", 238
+    get_hll_global $P976, ["PAST"], "Regex"
+    find_lex $P977, "$name"
+    find_lex $P978, "$/"
+    $P979 = $P976."new"("!BACKREF", $P977, "subrule" :named("pasttype"), "method" :named("subtype"), $P978 :named("node"))
+    store_lex "$past", $P979
+.annotate "line", 237
+    goto if_945_end
+  if_945:
+.annotate "line", 228
+    find_lex $P948, "$/"
+    unless_null $P948, vivify_248
+    new $P948, "Hash"
+  vivify_248:
+    set $P949, $P948["quantified_atom"]
+    unless_null $P949, vivify_249
+    new $P949, "ResizablePMCArray"
+  vivify_249:
+    set $P950, $P949[0]
+    unless_null $P950, vivify_250
+    new $P950, "Undef"
+  vivify_250:
+    $P951 = $P950."ast"()
+    store_lex "$past", $P951
+.annotate "line", 229
+    find_lex $P955, "$past"
+    $S956 = $P955."pasttype"()
+    iseq $I957, $S956, "quant"
+    if $I957, if_954
+    new $P953, 'Integer'
+    set $P953, $I957
+    goto if_954_end
+  if_954:
+    find_lex $P958, "$past"
+    unless_null $P958, vivify_251
+    new $P958, "ResizablePMCArray"
+  vivify_251:
+    set $P959, $P958[0]
+    unless_null $P959, vivify_252
+    new $P959, "Undef"
+  vivify_252:
+    $S960 = $P959."pasttype"()
+    iseq $I961, $S960, "subrule"
+    new $P953, 'Integer'
+    set $P953, $I961
+  if_954_end:
+    if $P953, if_952
+.annotate "line", 232
+    find_lex $P966, "$past"
+    $S967 = $P966."pasttype"()
+    iseq $I968, $S967, "subrule"
+    if $I968, if_965
+.annotate "line", 234
+    get_hll_global $P971, ["PAST"], "Regex"
+    find_lex $P972, "$past"
+    find_lex $P973, "$name"
+    find_lex $P974, "$/"
+    $P975 = $P971."new"($P972, $P973 :named("name"), "subcapture" :named("pasttype"), $P974 :named("node"))
+    store_lex "$past", $P975
+.annotate "line", 233
+    goto if_965_end
+  if_965:
+.annotate "line", 232
+    find_lex $P969, "$past"
+    find_lex $P970, "$name"
+    "subrule_alias"($P969, $P970)
+  if_965_end:
+    goto if_952_end
+  if_952:
+.annotate "line", 230
+    find_lex $P962, "$past"
+    unless_null $P962, vivify_253
+    new $P962, "ResizablePMCArray"
+  vivify_253:
+    set $P963, $P962[0]
+    unless_null $P963, vivify_254
+    new $P963, "Undef"
+  vivify_254:
+    find_lex $P964, "$name"
+    "subrule_alias"($P963, $P964)
+  if_952_end:
+  if_945_end:
+.annotate "line", 241
+    find_lex $P980, "$/"
+    find_lex $P981, "$past"
+    $P982 = $P980."!make"($P981)
+.annotate "line", 224
+    .return ($P982)
+  control_929:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P983, exception, "payload"
+    .return ($P983)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "metachar:sym<PIR>"  :subid("63_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_987
+.annotate "line", 244
+    new $P986, 'ExceptionHandler'
+    set_addr $P986, control_985
+    $P986."handle_types"(58)
+    push_eh $P986
+    .lex "self", self
+    .lex "$/", param_987
+.annotate "line", 245
+    find_lex $P988, "$/"
+    get_hll_global $P989, ["PAST"], "Regex"
+.annotate "line", 246
+    get_hll_global $P990, ["PAST"], "Op"
+    find_lex $P991, "$/"
+    unless_null $P991, vivify_255
+    new $P991, "Hash"
+  vivify_255:
+    set $P992, $P991["pir"]
+    unless_null $P992, vivify_256
+    new $P992, "Undef"
+  vivify_256:
+    set $S993, $P992
+    $P994 = $P990."new"($S993 :named("inline"), "inline" :named("pasttype"))
+    find_lex $P995, "$/"
+    $P996 = $P989."new"($P994, "pastnode" :named("pasttype"), $P995 :named("node"))
+.annotate "line", 245
+    $P997 = $P988."!make"($P996)
+.annotate "line", 244
+    .return ($P997)
+  control_985:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P998, exception, "payload"
+    .return ($P998)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<w>"  :subid("64_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1002
+.annotate "line", 252
+    new $P1001, 'ExceptionHandler'
+    set_addr $P1001, control_1000
+    $P1001."handle_types"(58)
+    push_eh $P1001
+    .lex "self", self
+    .lex "$/", param_1002
+.annotate "line", 253
+    new $P1003, "Undef"
+    .lex "$subtype", $P1003
+.annotate "line", 254
+    new $P1004, "Undef"
+    .lex "$past", $P1004
+.annotate "line", 253
+    find_lex $P1007, "$/"
+    unless_null $P1007, vivify_257
+    new $P1007, "Hash"
+  vivify_257:
+    set $P1008, $P1007["sym"]
+    unless_null $P1008, vivify_258
+    new $P1008, "Undef"
+  vivify_258:
+    set $S1009, $P1008
+    iseq $I1010, $S1009, "n"
+    if $I1010, if_1006
+    find_lex $P1012, "$/"
+    unless_null $P1012, vivify_259
+    new $P1012, "Hash"
+  vivify_259:
+    set $P1013, $P1012["sym"]
+    unless_null $P1013, vivify_260
+    new $P1013, "Undef"
+  vivify_260:
+    set $S1014, $P1013
+    new $P1005, 'String'
+    set $P1005, $S1014
+    goto if_1006_end
+  if_1006:
+    new $P1011, "String"
+    assign $P1011, "nl"
+    set $P1005, $P1011
+  if_1006_end:
+    store_lex "$subtype", $P1005
+.annotate "line", 254
+    get_hll_global $P1015, ["PAST"], "Regex"
+    find_lex $P1016, "$subtype"
+    find_lex $P1017, "$/"
+    $P1018 = $P1015."new"("charclass" :named("pasttype"), $P1016 :named("subtype"), $P1017 :named("node"))
+    store_lex "$past", $P1018
+.annotate "line", 255
+    find_lex $P1019, "$/"
+    find_lex $P1020, "$past"
+    $P1021 = $P1019."!make"($P1020)
+.annotate "line", 252
+    .return ($P1021)
+  control_1000:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1022, exception, "payload"
+    .return ($P1022)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<b>"  :subid("65_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1026
+.annotate "line", 258
+    new $P1025, 'ExceptionHandler'
+    set_addr $P1025, control_1024
+    $P1025."handle_types"(58)
+    push_eh $P1025
+    .lex "self", self
+    .lex "$/", param_1026
+.annotate "line", 259
+    new $P1027, "Undef"
+    .lex "$past", $P1027
+    get_hll_global $P1028, ["PAST"], "Regex"
+.annotate "line", 260
+    find_lex $P1029, "$/"
+    unless_null $P1029, vivify_261
+    new $P1029, "Hash"
+  vivify_261:
+    set $P1030, $P1029["sym"]
+    unless_null $P1030, vivify_262
+    new $P1030, "Undef"
+  vivify_262:
+    set $S1031, $P1030
+    iseq $I1032, $S1031, "B"
+    find_lex $P1033, "$/"
+    $P1034 = $P1028."new"("\b", "enumcharlist" :named("pasttype"), $I1032 :named("negate"), $P1033 :named("node"))
+.annotate "line", 259
+    store_lex "$past", $P1034
+.annotate "line", 261
+    find_lex $P1035, "$/"
+    find_lex $P1036, "$past"
+    $P1037 = $P1035."!make"($P1036)
+.annotate "line", 258
+    .return ($P1037)
+  control_1024:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1038, exception, "payload"
+    .return ($P1038)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<e>"  :subid("66_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1042
+.annotate "line", 264
+    new $P1041, 'ExceptionHandler'
+    set_addr $P1041, control_1040
+    $P1041."handle_types"(58)
+    push_eh $P1041
+    .lex "self", self
+    .lex "$/", param_1042
+.annotate "line", 265
+    new $P1043, "Undef"
+    .lex "$past", $P1043
+    get_hll_global $P1044, ["PAST"], "Regex"
+.annotate "line", 266
+    find_lex $P1045, "$/"
+    unless_null $P1045, vivify_263
+    new $P1045, "Hash"
+  vivify_263:
+    set $P1046, $P1045["sym"]
+    unless_null $P1046, vivify_264
+    new $P1046, "Undef"
+  vivify_264:
+    set $S1047, $P1046
+    iseq $I1048, $S1047, "E"
+    find_lex $P1049, "$/"
+    $P1050 = $P1044."new"("\\e", "enumcharlist" :named("pasttype"), $I1048 :named("negate"), $P1049 :named("node"))
+.annotate "line", 265
+    store_lex "$past", $P1050
+.annotate "line", 267
+    find_lex $P1051, "$/"
+    find_lex $P1052, "$past"
+    $P1053 = $P1051."!make"($P1052)
+.annotate "line", 264
+    .return ($P1053)
+  control_1040:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1054, exception, "payload"
+    .return ($P1054)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<f>"  :subid("67_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1058
+.annotate "line", 270
+    new $P1057, 'ExceptionHandler'
+    set_addr $P1057, control_1056
+    $P1057."handle_types"(58)
+    push_eh $P1057
+    .lex "self", self
+    .lex "$/", param_1058
+.annotate "line", 271
+    new $P1059, "Undef"
+    .lex "$past", $P1059
+    get_hll_global $P1060, ["PAST"], "Regex"
+.annotate "line", 272
+    find_lex $P1061, "$/"
+    unless_null $P1061, vivify_265
+    new $P1061, "Hash"
+  vivify_265:
+    set $P1062, $P1061["sym"]
+    unless_null $P1062, vivify_266
+    new $P1062, "Undef"
+  vivify_266:
+    set $S1063, $P1062
+    iseq $I1064, $S1063, "F"
+    find_lex $P1065, "$/"
+    $P1066 = $P1060."new"("\\f", "enumcharlist" :named("pasttype"), $I1064 :named("negate"), $P1065 :named("node"))
+.annotate "line", 271
+    store_lex "$past", $P1066
+.annotate "line", 273
+    find_lex $P1067, "$/"
+    find_lex $P1068, "$past"
+    $P1069 = $P1067."!make"($P1068)
+.annotate "line", 270
+    .return ($P1069)
+  control_1056:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1070, exception, "payload"
+    .return ($P1070)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<h>"  :subid("68_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1074
+.annotate "line", 276
+    new $P1073, 'ExceptionHandler'
+    set_addr $P1073, control_1072
+    $P1073."handle_types"(58)
+    push_eh $P1073
+    .lex "self", self
+    .lex "$/", param_1074
+.annotate "line", 277
+    new $P1075, "Undef"
+    .lex "$past", $P1075
+    get_hll_global $P1076, ["PAST"], "Regex"
+.annotate "line", 278
+    find_lex $P1077, "$/"
+    unless_null $P1077, vivify_267
+    new $P1077, "Hash"
+  vivify_267:
+    set $P1078, $P1077["sym"]
+    unless_null $P1078, vivify_268
+    new $P1078, "Undef"
+  vivify_268:
+    set $S1079, $P1078
+    iseq $I1080, $S1079, "H"
+    find_lex $P1081, "$/"
+    $P1082 = $P1076."new"(unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", "enumcharlist" :named("pasttype"), $I1080 :named("negate"), $P1081 :named("node"))
+.annotate "line", 277
+    store_lex "$past", $P1082
+.annotate "line", 279
+    find_lex $P1083, "$/"
+    find_lex $P1084, "$past"
+    $P1085 = $P1083."!make"($P1084)
+.annotate "line", 276
+    .return ($P1085)
+  control_1072:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1086, exception, "payload"
+    .return ($P1086)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<r>"  :subid("69_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1090
+.annotate "line", 282
+    new $P1089, 'ExceptionHandler'
+    set_addr $P1089, control_1088
+    $P1089."handle_types"(58)
+    push_eh $P1089
+    .lex "self", self
+    .lex "$/", param_1090
+.annotate "line", 283
+    new $P1091, "Undef"
+    .lex "$past", $P1091
+    get_hll_global $P1092, ["PAST"], "Regex"
+.annotate "line", 284
+    find_lex $P1093, "$/"
+    unless_null $P1093, vivify_269
+    new $P1093, "Hash"
+  vivify_269:
+    set $P1094, $P1093["sym"]
+    unless_null $P1094, vivify_270
+    new $P1094, "Undef"
+  vivify_270:
+    set $S1095, $P1094
+    iseq $I1096, $S1095, "R"
+    find_lex $P1097, "$/"
+    $P1098 = $P1092."new"("\r", "enumcharlist" :named("pasttype"), $I1096 :named("negate"), $P1097 :named("node"))
+.annotate "line", 283
+    store_lex "$past", $P1098
+.annotate "line", 285
+    find_lex $P1099, "$/"
+    find_lex $P1100, "$past"
+    $P1101 = $P1099."!make"($P1100)
+.annotate "line", 282
+    .return ($P1101)
+  control_1088:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1102, exception, "payload"
+    .return ($P1102)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<t>"  :subid("70_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1106
+.annotate "line", 288
+    new $P1105, 'ExceptionHandler'
+    set_addr $P1105, control_1104
+    $P1105."handle_types"(58)
+    push_eh $P1105
+    .lex "self", self
+    .lex "$/", param_1106
+.annotate "line", 289
+    new $P1107, "Undef"
+    .lex "$past", $P1107
+    get_hll_global $P1108, ["PAST"], "Regex"
+.annotate "line", 290
+    find_lex $P1109, "$/"
+    unless_null $P1109, vivify_271
+    new $P1109, "Hash"
+  vivify_271:
+    set $P1110, $P1109["sym"]
+    unless_null $P1110, vivify_272
+    new $P1110, "Undef"
+  vivify_272:
+    set $S1111, $P1110
+    iseq $I1112, $S1111, "T"
+    find_lex $P1113, "$/"
+    $P1114 = $P1108."new"("\t", "enumcharlist" :named("pasttype"), $I1112 :named("negate"), $P1113 :named("node"))
+.annotate "line", 289
+    store_lex "$past", $P1114
+.annotate "line", 291
+    find_lex $P1115, "$/"
+    find_lex $P1116, "$past"
+    $P1117 = $P1115."!make"($P1116)
+.annotate "line", 288
+    .return ($P1117)
+  control_1104:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1118, exception, "payload"
+    .return ($P1118)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<v>"  :subid("71_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1122
+.annotate "line", 294
+    new $P1121, 'ExceptionHandler'
+    set_addr $P1121, control_1120
+    $P1121."handle_types"(58)
+    push_eh $P1121
+    .lex "self", self
+    .lex "$/", param_1122
+.annotate "line", 295
+    new $P1123, "Undef"
+    .lex "$past", $P1123
+    get_hll_global $P1124, ["PAST"], "Regex"
+.annotate "line", 297
+    find_lex $P1125, "$/"
+    unless_null $P1125, vivify_273
+    new $P1125, "Hash"
+  vivify_273:
+    set $P1126, $P1125["sym"]
+    unless_null $P1126, vivify_274
+    new $P1126, "Undef"
+  vivify_274:
+    set $S1127, $P1126
+    iseq $I1128, $S1127, "V"
+    find_lex $P1129, "$/"
+    $P1130 = $P1124."new"(unicode:"\n\x{b}\f\r\x{85}\u2028\u2029", "enumcharlist" :named("pasttype"), $I1128 :named("negate"), $P1129 :named("node"))
+.annotate "line", 295
+    store_lex "$past", $P1130
+.annotate "line", 298
+    find_lex $P1131, "$/"
+    find_lex $P1132, "$past"
+    $P1133 = $P1131."!make"($P1132)
+.annotate "line", 294
+    .return ($P1133)
+  control_1120:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1134, exception, "payload"
+    .return ($P1134)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<o>"  :subid("72_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1138
+.annotate "line", 301
+    new $P1137, 'ExceptionHandler'
+    set_addr $P1137, control_1136
+    $P1137."handle_types"(58)
+    push_eh $P1137
+    .lex "self", self
+    .lex "$/", param_1138
+.annotate "line", 302
+    new $P1139, "Undef"
+    .lex "$octlit", $P1139
+.annotate "line", 303
+    get_hll_global $P1140, ["HLL";"Actions"], "ints_to_string"
+    find_lex $P1143, "$/"
+    unless_null $P1143, vivify_275
+    new $P1143, "Hash"
+  vivify_275:
+    set $P1144, $P1143["octint"]
+    unless_null $P1144, vivify_276
+    new $P1144, "Undef"
+  vivify_276:
+    unless $P1144, unless_1142
+    set $P1141, $P1144
+    goto unless_1142_end
+  unless_1142:
+    find_lex $P1145, "$/"
+    unless_null $P1145, vivify_277
+    new $P1145, "Hash"
+  vivify_277:
+    set $P1146, $P1145["octints"]
+    unless_null $P1146, vivify_278
+    new $P1146, "Hash"
+  vivify_278:
+    set $P1147, $P1146["octint"]
+    unless_null $P1147, vivify_279
+    new $P1147, "Undef"
+  vivify_279:
+    set $P1141, $P1147
+  unless_1142_end:
+    $P1148 = $P1140($P1141)
+    store_lex "$octlit", $P1148
+.annotate "line", 304
+    find_lex $P1149, "$/"
+    find_lex $P1152, "$/"
+    unless_null $P1152, vivify_280
+    new $P1152, "Hash"
+  vivify_280:
+    set $P1153, $P1152["sym"]
+    unless_null $P1153, vivify_281
+    new $P1153, "Undef"
+  vivify_281:
+    set $S1154, $P1153
+    iseq $I1155, $S1154, "O"
+    if $I1155, if_1151
+.annotate "line", 307
+    get_hll_global $P1160, ["PAST"], "Regex"
+    find_lex $P1161, "$octlit"
+    find_lex $P1162, "$/"
+    $P1163 = $P1160."new"($P1161, "literal" :named("pasttype"), $P1162 :named("node"))
+    set $P1150, $P1163
+.annotate "line", 304
+    goto if_1151_end
+  if_1151:
+.annotate "line", 305
+    get_hll_global $P1156, ["PAST"], "Regex"
+    find_lex $P1157, "$octlit"
+    find_lex $P1158, "$/"
+    $P1159 = $P1156."new"($P1157, "enumcharlist" :named("pasttype"), 1 :named("negate"), $P1158 :named("node"))
+    set $P1150, $P1159
+  if_1151_end:
+    $P1164 = $P1149."!make"($P1150)
+.annotate "line", 301
+    .return ($P1164)
+  control_1136:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1165, exception, "payload"
+    .return ($P1165)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<x>"  :subid("73_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1169
+.annotate "line", 310
+    new $P1168, 'ExceptionHandler'
+    set_addr $P1168, control_1167
+    $P1168."handle_types"(58)
+    push_eh $P1168
+    .lex "self", self
+    .lex "$/", param_1169
+.annotate "line", 311
+    new $P1170, "Undef"
+    .lex "$hexlit", $P1170
+.annotate "line", 312
+    get_hll_global $P1171, ["HLL";"Actions"], "ints_to_string"
+    find_lex $P1174, "$/"
+    unless_null $P1174, vivify_282
+    new $P1174, "Hash"
+  vivify_282:
+    set $P1175, $P1174["hexint"]
+    unless_null $P1175, vivify_283
+    new $P1175, "Undef"
+  vivify_283:
+    unless $P1175, unless_1173
+    set $P1172, $P1175
+    goto unless_1173_end
+  unless_1173:
+    find_lex $P1176, "$/"
+    unless_null $P1176, vivify_284
+    new $P1176, "Hash"
+  vivify_284:
+    set $P1177, $P1176["hexints"]
+    unless_null $P1177, vivify_285
+    new $P1177, "Hash"
+  vivify_285:
+    set $P1178, $P1177["hexint"]
+    unless_null $P1178, vivify_286
+    new $P1178, "Undef"
+  vivify_286:
+    set $P1172, $P1178
+  unless_1173_end:
+    $P1179 = $P1171($P1172)
+    store_lex "$hexlit", $P1179
+.annotate "line", 313
+    find_lex $P1180, "$/"
+    find_lex $P1183, "$/"
+    unless_null $P1183, vivify_287
+    new $P1183, "Hash"
+  vivify_287:
+    set $P1184, $P1183["sym"]
+    unless_null $P1184, vivify_288
+    new $P1184, "Undef"
+  vivify_288:
+    set $S1185, $P1184
+    iseq $I1186, $S1185, "X"
+    if $I1186, if_1182
+.annotate "line", 316
+    get_hll_global $P1191, ["PAST"], "Regex"
+    find_lex $P1192, "$hexlit"
+    find_lex $P1193, "$/"
+    $P1194 = $P1191."new"($P1192, "literal" :named("pasttype"), $P1193 :named("node"))
+    set $P1181, $P1194
+.annotate "line", 313
+    goto if_1182_end
+  if_1182:
+.annotate "line", 314
+    get_hll_global $P1187, ["PAST"], "Regex"
+    find_lex $P1188, "$hexlit"
+    find_lex $P1189, "$/"
+    $P1190 = $P1187."new"($P1188, "enumcharlist" :named("pasttype"), 1 :named("negate"), $P1189 :named("node"))
+    set $P1181, $P1190
+  if_1182_end:
+    $P1195 = $P1180."!make"($P1181)
+.annotate "line", 310
+    .return ($P1195)
+  control_1167:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1196, exception, "payload"
+    .return ($P1196)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "backslash:sym<misc>"  :subid("74_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1200
+.annotate "line", 319
+    new $P1199, 'ExceptionHandler'
+    set_addr $P1199, control_1198
+    $P1199."handle_types"(58)
+    push_eh $P1199
+    .lex "self", self
+    .lex "$/", param_1200
+.annotate "line", 320
+    new $P1201, "Undef"
+    .lex "$past", $P1201
+    get_hll_global $P1202, ["PAST"], "Regex"
+    find_lex $P1203, "$/"
+    set $S1204, $P1203
+    find_lex $P1205, "$/"
+    $P1206 = $P1202."new"($S1204, "literal" :named("pasttype"), $P1205 :named("node"))
+    store_lex "$past", $P1206
+.annotate "line", 321
+    find_lex $P1207, "$/"
+    find_lex $P1208, "$past"
+    $P1209 = $P1207."!make"($P1208)
+.annotate "line", 319
+    .return ($P1209)
+  control_1198:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1210, exception, "payload"
+    .return ($P1210)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "assertion:sym<?>"  :subid("75_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1214
+.annotate "line", 325
+    new $P1213, 'ExceptionHandler'
+    set_addr $P1213, control_1212
+    $P1213."handle_types"(58)
+    push_eh $P1213
+    .lex "self", self
+    .lex "$/", param_1214
+.annotate "line", 326
+    new $P1215, "Undef"
+    .lex "$past", $P1215
+.annotate "line", 325
+    find_lex $P1216, "$past"
+.annotate "line", 327
+    find_lex $P1218, "$/"
+    unless_null $P1218, vivify_289
+    new $P1218, "Hash"
+  vivify_289:
+    set $P1219, $P1218["assertion"]
+    unless_null $P1219, vivify_290
+    new $P1219, "Undef"
+  vivify_290:
+    if $P1219, if_1217
+.annotate "line", 331
+    new $P1224, "Integer"
+    assign $P1224, 0
+    store_lex "$past", $P1224
+    goto if_1217_end
+  if_1217:
+.annotate "line", 328
+    find_lex $P1220, "$/"
+    unless_null $P1220, vivify_291
+    new $P1220, "Hash"
+  vivify_291:
+    set $P1221, $P1220["assertion"]
+    unless_null $P1221, vivify_292
+    new $P1221, "Undef"
+  vivify_292:
+    $P1222 = $P1221."ast"()
+    store_lex "$past", $P1222
+.annotate "line", 329
+    find_lex $P1223, "$past"
+    $P1223."subtype"("zerowidth")
+  if_1217_end:
+.annotate "line", 332
+    find_lex $P1225, "$/"
+    find_lex $P1226, "$past"
+    $P1227 = $P1225."!make"($P1226)
+.annotate "line", 325
+    .return ($P1227)
+  control_1212:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1228, exception, "payload"
+    .return ($P1228)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "assertion:sym<!>"  :subid("76_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1232
+.annotate "line", 335
+    new $P1231, 'ExceptionHandler'
+    set_addr $P1231, control_1230
+    $P1231."handle_types"(58)
+    push_eh $P1231
+    .lex "self", self
+    .lex "$/", param_1232
+.annotate "line", 336
+    new $P1233, "Undef"
+    .lex "$past", $P1233
+.annotate "line", 335
+    find_lex $P1234, "$past"
+.annotate "line", 337
+    find_lex $P1236, "$/"
+    unless_null $P1236, vivify_293
+    new $P1236, "Hash"
+  vivify_293:
+    set $P1237, $P1236["assertion"]
+    unless_null $P1237, vivify_294
+    new $P1237, "Undef"
+  vivify_294:
+    if $P1237, if_1235
+.annotate "line", 343
+    get_hll_global $P1246, ["PAST"], "Regex"
+    find_lex $P1247, "$/"
+    $P1248 = $P1246."new"("anchor" :named("pasttype"), "fail" :named("subtype"), $P1247 :named("node"))
+    store_lex "$past", $P1248
+.annotate "line", 342
+    goto if_1235_end
+  if_1235:
+.annotate "line", 338
+    find_lex $P1238, "$/"
+    unless_null $P1238, vivify_295
+    new $P1238, "Hash"
+  vivify_295:
+    set $P1239, $P1238["assertion"]
+    unless_null $P1239, vivify_296
+    new $P1239, "Undef"
+  vivify_296:
+    $P1240 = $P1239."ast"()
+    store_lex "$past", $P1240
+.annotate "line", 339
+    find_lex $P1241, "$past"
+    find_lex $P1242, "$past"
+    $P1243 = $P1242."negate"()
+    isfalse $I1244, $P1243
+    $P1241."negate"($I1244)
+.annotate "line", 340
+    find_lex $P1245, "$past"
+    $P1245."subtype"("zerowidth")
+  if_1235_end:
+.annotate "line", 345
+    find_lex $P1249, "$/"
+    find_lex $P1250, "$past"
+    $P1251 = $P1249."!make"($P1250)
+.annotate "line", 335
+    .return ($P1251)
+  control_1230:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1252, exception, "payload"
+    .return ($P1252)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "assertion:sym<method>"  :subid("77_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1256
+.annotate "line", 348
+    new $P1255, 'ExceptionHandler'
+    set_addr $P1255, control_1254
+    $P1255."handle_types"(58)
+    push_eh $P1255
+    .lex "self", self
+    .lex "$/", param_1256
+.annotate "line", 349
+    new $P1257, "Undef"
+    .lex "$past", $P1257
+    find_lex $P1258, "$/"
+    unless_null $P1258, vivify_297
+    new $P1258, "Hash"
+  vivify_297:
+    set $P1259, $P1258["assertion"]
+    unless_null $P1259, vivify_298
+    new $P1259, "Undef"
+  vivify_298:
+    $P1260 = $P1259."ast"()
+    store_lex "$past", $P1260
+.annotate "line", 350
+    find_lex $P1261, "$past"
+    $P1261."subtype"("method")
+.annotate "line", 351
+    find_lex $P1262, "$/"
+    find_lex $P1263, "$past"
+    $P1264 = $P1262."!make"($P1263)
+.annotate "line", 348
+    .return ($P1264)
+  control_1254:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1265, exception, "payload"
+    .return ($P1265)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "assertion:sym<name>"  :subid("78_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1269
+.annotate "line", 354
+    .const 'Sub' $P1327 = "80_1258051412.17115" 
+    capture_lex $P1327
+    .const 'Sub' $P1291 = "79_1258051412.17115" 
+    capture_lex $P1291
+    new $P1268, 'ExceptionHandler'
+    set_addr $P1268, control_1267
+    $P1268."handle_types"(58)
+    push_eh $P1268
+    .lex "self", self
+    .lex "$/", param_1269
+.annotate "line", 355
+    new $P1270, "Undef"
+    .lex "$name", $P1270
+.annotate "line", 356
+    new $P1271, "Undef"
+    .lex "$past", $P1271
+.annotate "line", 355
+    find_lex $P1272, "$/"
+    unless_null $P1272, vivify_299
+    new $P1272, "Hash"
+  vivify_299:
+    set $P1273, $P1272["longname"]
+    unless_null $P1273, vivify_300
+    new $P1273, "Undef"
+  vivify_300:
+    set $S1274, $P1273
+    new $P1275, 'String'
+    set $P1275, $S1274
+    store_lex "$name", $P1275
+    find_lex $P1276, "$past"
+.annotate "line", 357
+    find_lex $P1278, "$/"
+    unless_null $P1278, vivify_301
+    new $P1278, "Hash"
+  vivify_301:
+    set $P1279, $P1278["assertion"]
+    unless_null $P1279, vivify_302
+    new $P1279, "Undef"
+  vivify_302:
+    if $P1279, if_1277
+.annotate "line", 361
+    find_lex $P1287, "$name"
+    set $S1288, $P1287
+    iseq $I1289, $S1288, "sym"
+    if $I1289, if_1286
+.annotate "line", 377
+    get_hll_global $P1301, ["PAST"], "Regex"
+    find_lex $P1302, "$name"
+    find_lex $P1303, "$name"
+    find_lex $P1304, "$/"
+    $P1305 = $P1301."new"($P1302, $P1303 :named("name"), "subrule" :named("pasttype"), "capture" :named("subtype"), $P1304 :named("node"))
+    store_lex "$past", $P1305
+.annotate "line", 379
+    find_lex $P1307, "$/"
+    unless_null $P1307, vivify_303
+    new $P1307, "Hash"
+  vivify_303:
+    set $P1308, $P1307["nibbler"]
+    unless_null $P1308, vivify_304
+    new $P1308, "Undef"
+  vivify_304:
+    if $P1308, if_1306
+.annotate "line", 382
+    find_lex $P1316, "$/"
+    unless_null $P1316, vivify_305
+    new $P1316, "Hash"
+  vivify_305:
+    set $P1317, $P1316["arglist"]
+    unless_null $P1317, vivify_306
+    new $P1317, "Undef"
+  vivify_306:
+    unless $P1317, if_1315_end
+.annotate "line", 383
+    find_lex $P1319, "$/"
+    unless_null $P1319, vivify_307
+    new $P1319, "Hash"
+  vivify_307:
+    set $P1320, $P1319["arglist"]
+    unless_null $P1320, vivify_308
+    new $P1320, "ResizablePMCArray"
+  vivify_308:
+    set $P1321, $P1320[0]
+    unless_null $P1321, vivify_309
+    new $P1321, "Undef"
+  vivify_309:
+    $P1322 = $P1321."ast"()
+    $P1323 = $P1322."list"()
+    defined $I1324, $P1323
+    unless $I1324, for_undef_310
+    iter $P1318, $P1323
+    new $P1333, 'ExceptionHandler'
+    set_addr $P1333, loop1332_handler
+    $P1333."handle_types"(65, 67, 66)
+    push_eh $P1333
+  loop1332_test:
+    unless $P1318, loop1332_done
+    shift $P1325, $P1318
+  loop1332_redo:
+    .const 'Sub' $P1327 = "80_1258051412.17115" 
+    capture_lex $P1327
+    $P1327($P1325)
+  loop1332_next:
+    goto loop1332_test
+  loop1332_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1334, exception, 'type'
+    eq $P1334, 65, loop1332_next
+    eq $P1334, 67, loop1332_redo
+  loop1332_done:
+    pop_eh 
+  for_undef_310:
+  if_1315_end:
+.annotate "line", 382
+    goto if_1306_end
+  if_1306:
+.annotate "line", 380
+    find_lex $P1309, "$past"
+    find_lex $P1310, "$/"
+    unless_null $P1310, vivify_311
+    new $P1310, "Hash"
+  vivify_311:
+    set $P1311, $P1310["nibbler"]
+    unless_null $P1311, vivify_312
+    new $P1311, "ResizablePMCArray"
+  vivify_312:
+    set $P1312, $P1311[0]
+    unless_null $P1312, vivify_313
+    new $P1312, "Undef"
+  vivify_313:
+    $P1313 = $P1312."ast"()
+    $P1314 = "buildsub"($P1313)
+    $P1309."push"($P1314)
+  if_1306_end:
+.annotate "line", 376
+    goto if_1286_end
+  if_1286:
+.annotate "line", 361
+    .const 'Sub' $P1291 = "79_1258051412.17115" 
+    capture_lex $P1291
+    $P1291()
+  if_1286_end:
+    goto if_1277_end
+  if_1277:
+.annotate "line", 358
+    find_lex $P1280, "$/"
+    unless_null $P1280, vivify_314
+    new $P1280, "Hash"
+  vivify_314:
+    set $P1281, $P1280["assertion"]
+    unless_null $P1281, vivify_315
+    new $P1281, "ResizablePMCArray"
+  vivify_315:
+    set $P1282, $P1281[0]
+    unless_null $P1282, vivify_316
+    new $P1282, "Undef"
+  vivify_316:
+    $P1283 = $P1282."ast"()
+    store_lex "$past", $P1283
+.annotate "line", 359
+    find_lex $P1284, "$past"
+    find_lex $P1285, "$name"
+    "subrule_alias"($P1284, $P1285)
+  if_1277_end:
+.annotate "line", 386
+    find_lex $P1335, "$/"
+    find_lex $P1336, "$past"
+    $P1337 = $P1335."!make"($P1336)
+.annotate "line", 354
+    .return ($P1337)
+  control_1267:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1338, exception, "payload"
+    .return ($P1338)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block1326"  :anon :subid("80_1258051412.17115") :outer("78_1258051412.17115")
+    .param pmc param_1328
+.annotate "line", 383
+    .lex "$_", param_1328
+    find_lex $P1329, "$past"
+    find_lex $P1330, "$_"
+    $P1331 = $P1329."push"($P1330)
+    .return ($P1331)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block1290"  :anon :subid("79_1258051412.17115") :outer("78_1258051412.17115")
+.annotate "line", 362
+    new $P1292, "Undef"
+    .lex "$regexsym", $P1292
+
+            $P0 = get_global '$REGEXNAME'
+            $S0 = $P0
+            $I0 = index $S0, ':sym<'
+            add $I0, 5
+            $S0 = substr $S0, $I0
+            chopn $S0, 1
+            $P1293 = box $S0
+        
+    store_lex "$regexsym", $P1293
+.annotate "line", 371
+    get_hll_global $P1294, ["PAST"], "Regex"
+.annotate "line", 372
+    get_hll_global $P1295, ["PAST"], "Regex"
+    find_lex $P1296, "$regexsym"
+    $P1297 = $P1295."new"($P1296, "literal" :named("pasttype"))
+    find_lex $P1298, "$name"
+    find_lex $P1299, "$/"
+    $P1300 = $P1294."new"($P1297, $P1298 :named("name"), "subcapture" :named("pasttype"), $P1299 :named("node"))
+.annotate "line", 371
+    store_lex "$past", $P1300
+.annotate "line", 361
+    .return ($P1300)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "assertion:sym<[>"  :subid("81_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1342
+.annotate "line", 389
+    .const 'Sub' $P1377 = "82_1258051412.17115" 
+    capture_lex $P1377
+    new $P1341, 'ExceptionHandler'
+    set_addr $P1341, control_1340
+    $P1341."handle_types"(58)
+    push_eh $P1341
+    .lex "self", self
+    .lex "$/", param_1342
+.annotate "line", 390
+    new $P1343, "Undef"
+    .lex "$clist", $P1343
+.annotate "line", 391
+    new $P1344, "Undef"
+    .lex "$past", $P1344
+.annotate "line", 400
+    new $P1345, "Undef"
+    .lex "$i", $P1345
+.annotate "line", 401
+    new $P1346, "Undef"
+    .lex "$n", $P1346
+.annotate "line", 390
+    find_lex $P1347, "$/"
+    unless_null $P1347, vivify_317
+    new $P1347, "Hash"
+  vivify_317:
+    set $P1348, $P1347["cclass_elem"]
+    unless_null $P1348, vivify_318
+    new $P1348, "Undef"
+  vivify_318:
+    store_lex "$clist", $P1348
+.annotate "line", 391
+    find_lex $P1349, "$clist"
+    unless_null $P1349, vivify_319
+    new $P1349, "ResizablePMCArray"
+  vivify_319:
+    set $P1350, $P1349[0]
+    unless_null $P1350, vivify_320
+    new $P1350, "Undef"
+  vivify_320:
+    $P1351 = $P1350."ast"()
+    store_lex "$past", $P1351
+.annotate "line", 392
+    find_lex $P1355, "$past"
+    $P1356 = $P1355."negate"()
+    if $P1356, if_1354
+    set $P1353, $P1356
+    goto if_1354_end
+  if_1354:
+    find_lex $P1357, "$past"
+    $S1358 = $P1357."pasttype"()
+    iseq $I1359, $S1358, "subrule"
+    new $P1353, 'Integer'
+    set $P1353, $I1359
+  if_1354_end:
+    unless $P1353, if_1352_end
+.annotate "line", 393
+    find_lex $P1360, "$past"
+    $P1360."subtype"("zerowidth")
+.annotate "line", 394
+    get_hll_global $P1361, ["PAST"], "Regex"
+    find_lex $P1362, "$past"
+.annotate "line", 396
+    get_hll_global $P1363, ["PAST"], "Regex"
+    $P1364 = $P1363."new"("charclass" :named("pasttype"), "." :named("subtype"))
+    find_lex $P1365, "$/"
+    $P1366 = $P1361."new"($P1362, $P1364, $P1365 :named("node"))
+.annotate "line", 394
+    store_lex "$past", $P1366
+  if_1352_end:
+.annotate "line", 400
+    new $P1367, "Integer"
+    assign $P1367, 1
+    store_lex "$i", $P1367
+.annotate "line", 401
+    find_lex $P1368, "$clist"
+    set $N1369, $P1368
+    new $P1370, 'Float'
+    set $P1370, $N1369
+    store_lex "$n", $P1370
+.annotate "line", 402
+    new $P1401, 'ExceptionHandler'
+    set_addr $P1401, loop1400_handler
+    $P1401."handle_types"(65, 67, 66)
+    push_eh $P1401
+  loop1400_test:
+    find_lex $P1371, "$i"
+    set $N1372, $P1371
+    find_lex $P1373, "$n"
+    set $N1374, $P1373
+    islt $I1375, $N1372, $N1374
+    unless $I1375, loop1400_done
+  loop1400_redo:
+    .const 'Sub' $P1377 = "82_1258051412.17115" 
+    capture_lex $P1377
+    $P1377()
+  loop1400_next:
+    goto loop1400_test
+  loop1400_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1402, exception, 'type'
+    eq $P1402, 65, loop1400_next
+    eq $P1402, 67, loop1400_redo
+  loop1400_done:
+    pop_eh 
+.annotate "line", 413
+    find_lex $P1403, "$/"
+    find_lex $P1404, "$past"
+    $P1405 = $P1403."!make"($P1404)
+.annotate "line", 389
+    .return ($P1405)
+  control_1340:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1406, exception, "payload"
+    .return ($P1406)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block1376"  :anon :subid("82_1258051412.17115") :outer("81_1258051412.17115")
+.annotate "line", 403
+    new $P1378, "Undef"
+    .lex "$ast", $P1378
+    find_lex $P1379, "$i"
+    set $I1380, $P1379
+    find_lex $P1381, "$clist"
+    unless_null $P1381, vivify_321
+    new $P1381, "ResizablePMCArray"
+  vivify_321:
+    set $P1382, $P1381[$I1380]
+    unless_null $P1382, vivify_322
+    new $P1382, "Undef"
+  vivify_322:
+    $P1383 = $P1382."ast"()
+    store_lex "$ast", $P1383
+.annotate "line", 404
+    find_lex $P1385, "$ast"
+    $P1386 = $P1385."negate"()
+    if $P1386, if_1384
+.annotate "line", 409
+    get_hll_global $P1393, ["PAST"], "Regex"
+    find_lex $P1394, "$past"
+    find_lex $P1395, "$ast"
+    find_lex $P1396, "$/"
+    $P1397 = $P1393."new"($P1394, $P1395, "alt" :named("pasttype"), $P1396 :named("node"))
+    store_lex "$past", $P1397
+.annotate "line", 408
+    goto if_1384_end
+  if_1384:
+.annotate "line", 405
+    find_lex $P1387, "$ast"
+    $P1387."subtype"("zerowidth")
+.annotate "line", 406
+    get_hll_global $P1388, ["PAST"], "Regex"
+    find_lex $P1389, "$ast"
+    find_lex $P1390, "$past"
+    find_lex $P1391, "$/"
+    $P1392 = $P1388."new"($P1389, $P1390, "concat" :named("pasttype"), $P1391 :named("node"))
+    store_lex "$past", $P1392
+  if_1384_end:
+.annotate "line", 411
+    find_lex $P1398, "$i"
+    add $P1399, $P1398, 1
+    store_lex "$i", $P1399
+.annotate "line", 402
+    .return ($P1399)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "cclass_elem"  :subid("83_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1410
+.annotate "line", 416
+    .const 'Sub' $P1435 = "85_1258051412.17115" 
+    capture_lex $P1435
+    .const 'Sub' $P1419 = "84_1258051412.17115" 
+    capture_lex $P1419
+    new $P1409, 'ExceptionHandler'
+    set_addr $P1409, control_1408
+    $P1409."handle_types"(58)
+    push_eh $P1409
+    .lex "self", self
+    .lex "$/", param_1410
+.annotate "line", 417
+    new $P1411, "Undef"
+    .lex "$str", $P1411
+.annotate "line", 418
+    new $P1412, "Undef"
+    .lex "$past", $P1412
+.annotate "line", 417
+    new $P1413, "String"
+    assign $P1413, ""
+    store_lex "$str", $P1413
+    find_lex $P1414, "$past"
+.annotate "line", 419
+    find_lex $P1416, "$/"
+    unless_null $P1416, vivify_323
+    new $P1416, "Hash"
+  vivify_323:
+    set $P1417, $P1416["name"]
+    unless_null $P1417, vivify_324
+    new $P1417, "Undef"
+  vivify_324:
+    if $P1417, if_1415
+.annotate "line", 423
+    find_lex $P1430, "$/"
+    unless_null $P1430, vivify_325
+    new $P1430, "Hash"
+  vivify_325:
+    set $P1431, $P1430["charspec"]
+    unless_null $P1431, vivify_326
+    new $P1431, "Undef"
+  vivify_326:
+    defined $I1432, $P1431
+    unless $I1432, for_undef_327
+    iter $P1429, $P1431
+    new $P1461, 'ExceptionHandler'
+    set_addr $P1461, loop1460_handler
+    $P1461."handle_types"(65, 67, 66)
+    push_eh $P1461
+  loop1460_test:
+    unless $P1429, loop1460_done
+    shift $P1433, $P1429
+  loop1460_redo:
+    .const 'Sub' $P1435 = "85_1258051412.17115" 
+    capture_lex $P1435
+    $P1435($P1433)
+  loop1460_next:
+    goto loop1460_test
+  loop1460_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1462, exception, 'type'
+    eq $P1462, 65, loop1460_next
+    eq $P1462, 67, loop1460_redo
+  loop1460_done:
+    pop_eh 
+  for_undef_327:
+.annotate "line", 448
+    get_hll_global $P1463, ["PAST"], "Regex"
+    find_lex $P1464, "$str"
+    find_lex $P1465, "$/"
+    $P1466 = $P1463."new"($P1464, "enumcharlist" :named("pasttype"), $P1465 :named("node"))
+    store_lex "$past", $P1466
+.annotate "line", 422
+    goto if_1415_end
+  if_1415:
+.annotate "line", 419
+    .const 'Sub' $P1419 = "84_1258051412.17115" 
+    capture_lex $P1419
+    $P1419()
+  if_1415_end:
+.annotate "line", 450
+    find_lex $P1467, "$past"
+    find_lex $P1468, "$/"
+    unless_null $P1468, vivify_339
+    new $P1468, "Hash"
+  vivify_339:
+    set $P1469, $P1468["sign"]
+    unless_null $P1469, vivify_340
+    new $P1469, "Undef"
+  vivify_340:
+    set $S1470, $P1469
+    iseq $I1471, $S1470, "-"
+    $P1467."negate"($I1471)
+.annotate "line", 451
+    find_lex $P1472, "$/"
+    find_lex $P1473, "$past"
+    $P1474 = $P1472."!make"($P1473)
+.annotate "line", 416
+    .return ($P1474)
+  control_1408:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1475, exception, "payload"
+    .return ($P1475)
+    rethrow exception
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block1434"  :anon :subid("85_1258051412.17115") :outer("83_1258051412.17115")
+    .param pmc param_1436
+.annotate "line", 423
+    .const 'Sub' $P1442 = "86_1258051412.17115" 
+    capture_lex $P1442
+    .lex "$_", param_1436
+.annotate "line", 424
+    find_lex $P1439, "$_"
+    unless_null $P1439, vivify_328
+    new $P1439, "ResizablePMCArray"
+  vivify_328:
+    set $P1440, $P1439[1]
+    unless_null $P1440, vivify_329
+    new $P1440, "Undef"
+  vivify_329:
+    if $P1440, if_1438
+.annotate "line", 446
+    find_lex $P1456, "$str"
+    find_lex $P1457, "$_"
+    unless_null $P1457, vivify_330
+    new $P1457, "ResizablePMCArray"
+  vivify_330:
+    set $P1458, $P1457[0]
+    unless_null $P1458, vivify_331
+    new $P1458, "Undef"
+  vivify_331:
+    concat $P1459, $P1456, $P1458
+    store_lex "$str", $P1459
+    set $P1437, $P1459
+.annotate "line", 424
+    goto if_1438_end
+  if_1438:
+    .const 'Sub' $P1442 = "86_1258051412.17115" 
+    capture_lex $P1442
+    $P1455 = $P1442()
+    set $P1437, $P1455
+  if_1438_end:
+.annotate "line", 423
+    .return ($P1437)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block1441"  :anon :subid("86_1258051412.17115") :outer("85_1258051412.17115")
+.annotate "line", 425
+    new $P1443, "Undef"
+    .lex "$a", $P1443
+.annotate "line", 426
+    new $P1444, "Undef"
+    .lex "$b", $P1444
+.annotate "line", 427
+    new $P1445, "Undef"
+    .lex "$c", $P1445
+.annotate "line", 425
+    find_lex $P1446, "$_"
+    unless_null $P1446, vivify_332
+    new $P1446, "ResizablePMCArray"
+  vivify_332:
+    set $P1447, $P1446[0]
+    unless_null $P1447, vivify_333
+    new $P1447, "Undef"
+  vivify_333:
+    store_lex "$a", $P1447
+.annotate "line", 426
+    find_lex $P1448, "$_"
+    unless_null $P1448, vivify_334
+    new $P1448, "ResizablePMCArray"
+  vivify_334:
+    set $P1449, $P1448[1]
+    unless_null $P1449, vivify_335
+    new $P1449, "ResizablePMCArray"
+  vivify_335:
+    set $P1450, $P1449[0]
+    unless_null $P1450, vivify_336
+    new $P1450, "Undef"
+  vivify_336:
+    store_lex "$b", $P1450
+.annotate "line", 427
+
+                             $P0 = find_lex '$a'
+                             $S0 = $P0
+                             $I0 = ord $S0
+                             $P1 = find_lex '$b'
+                             $S1 = $P1
+                             $I1 = ord $S1
+                             $S2 = ''
+                           cclass_loop:
+                             if $I0 > $I1 goto cclass_done
+                             $S0 = chr $I0
+                             $S2 .= $S0
+                             inc $I0
+                             goto cclass_loop
+                           cclass_done:
+                             $P1451 = box $S2
+                         
+    store_lex "$c", $P1451
+.annotate "line", 444
+    find_lex $P1452, "$str"
+    find_lex $P1453, "$c"
+    concat $P1454, $P1452, $P1453
+    store_lex "$str", $P1454
+.annotate "line", 424
+    .return ($P1454)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "_block1418"  :anon :subid("84_1258051412.17115") :outer("83_1258051412.17115")
+.annotate "line", 420
+    new $P1420, "Undef"
+    .lex "$name", $P1420
+    find_lex $P1421, "$/"
+    unless_null $P1421, vivify_337
+    new $P1421, "Hash"
+  vivify_337:
+    set $P1422, $P1421["name"]
+    unless_null $P1422, vivify_338
+    new $P1422, "Undef"
+  vivify_338:
+    set $S1423, $P1422
+    new $P1424, 'String'
+    set $P1424, $S1423
+    store_lex "$name", $P1424
+.annotate "line", 421
+    get_hll_global $P1425, ["PAST"], "Regex"
+    find_lex $P1426, "$name"
+    find_lex $P1427, "$/"
+    $P1428 = $P1425."new"($P1426, "subrule" :named("pasttype"), "method" :named("subtype"), $P1427 :named("node"))
+    store_lex "$past", $P1428
+.annotate "line", 419
+    .return ($P1428)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "mod_internal"  :subid("87_1258051412.17115") :method :outer("11_1258051412.17115")
+    .param pmc param_1479
+.annotate "line", 454
+    new $P1478, 'ExceptionHandler'
+    set_addr $P1478, control_1477
+    $P1478."handle_types"(58)
+    push_eh $P1478
+    .lex "self", self
+    .lex "$/", param_1479
+.annotate "line", 455
+    new $P1480, "Hash"
+    .lex "%mods", $P1480
+.annotate "line", 456
+    new $P1481, "Undef"
+    .lex "$n", $P1481
+.annotate "line", 455
+    get_global $P1482, "@MODIFIERS"
+    unless_null $P1482, vivify_341
+    new $P1482, "ResizablePMCArray"
+  vivify_341:
+    set $P1483, $P1482[0]
+    unless_null $P1483, vivify_342
+    new $P1483, "Undef"
+  vivify_342:
+    store_lex "%mods", $P1483
+.annotate "line", 456
+    find_lex $P1486, "$/"
+    unless_null $P1486, vivify_343
+    new $P1486, "Hash"
+  vivify_343:
+    set $P1487, $P1486["n"]
+    unless_null $P1487, vivify_344
+    new $P1487, "ResizablePMCArray"
+  vivify_344:
+    set $P1488, $P1487[0]
+    unless_null $P1488, vivify_345
+    new $P1488, "Undef"
+  vivify_345:
+    set $S1489, $P1488
+    isgt $I1490, $S1489, ""
+    if $I1490, if_1485
+    new $P1495, "Integer"
+    assign $P1495, 1
+    set $P1484, $P1495
+    goto if_1485_end
+  if_1485:
+    find_lex $P1491, "$/"
+    unless_null $P1491, vivify_346
+    new $P1491, "Hash"
+  vivify_346:
+    set $P1492, $P1491["n"]
+    unless_null $P1492, vivify_347
+    new $P1492, "ResizablePMCArray"
+  vivify_347:
+    set $P1493, $P1492[0]
+    unless_null $P1493, vivify_348
+    new $P1493, "Undef"
+  vivify_348:
+    set $N1494, $P1493
+    new $P1484, 'Float'
+    set $P1484, $N1494
+  if_1485_end:
+    store_lex "$n", $P1484
+.annotate "line", 457
+    find_lex $P1496, "$n"
+    find_lex $P1497, "$/"
+    unless_null $P1497, vivify_349
+    new $P1497, "Hash"
+  vivify_349:
+    set $P1498, $P1497["mod_ident"]
+    unless_null $P1498, vivify_350
+    new $P1498, "Hash"
+  vivify_350:
+    set $P1499, $P1498["sym"]
+    unless_null $P1499, vivify_351
+    new $P1499, "Undef"
+  vivify_351:
+    set $S1500, $P1499
+    find_lex $P1501, "%mods"
+    unless_null $P1501, vivify_352
+    new $P1501, "Hash"
+    store_lex "%mods", $P1501
+  vivify_352:
+    set $P1501[$S1500], $P1496
+.annotate "line", 458
+    find_lex $P1502, "$/"
+    $P1503 = $P1502."!make"(0)
+.annotate "line", 454
+    .return ($P1503)
+  control_1477:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1504, exception, "payload"
+    .return ($P1504)
+    rethrow exception
+.end
+
+# .include 'src/cheats/p6regex-grammar.pir'
+
+.namespace ['Regex';'P6Regex';'Compiler']
+
+.sub '' :anon :load :init
+    .local pmc p6meta, p6regex
+    p6meta = get_hll_global 'P6metaclass'
+    p6regex = p6meta.'new_class'('Regex::P6Regex::Compiler', 'parent'=>'HLL::Compiler')
+    p6regex.'language'('Regex::P6Regex')
+    $P0 = get_hll_global ['Regex';'P6Regex'], 'Grammar'
+    p6regex.'parsegrammar'($P0)
+    $P0 = get_hll_global ['Regex';'P6Regex'], 'Actions'
+    p6regex.'parseactions'($P0)
+    $P0 = get_hll_global ['Regex';'P6Regex';'Actions'], 'INIT'
+    $P0()
+.end
+
+
+.sub 'main' :main
+    .param pmc args_str
+
+    $P0 = compreg 'Regex::P6Regex'
+    $P1 = $P0.'command_line'(args_str, 'encoding'=>'utf8', 'transcode'=>'ascii iso-8859-1')
+    exit 0
+.end
+
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: trunk/ext/nqp-rx/src/stage0/Regex-s0.pir
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/src/stage0/Regex-s0.pir	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,3240 @@
+# $Id$
+
+=head1 NAME
+
+Regex - Regex library
+
+=head1 DESCRIPTION
+
+This file brings together the various Regex modules needed for Regex.pbc .
+
+=cut
+
+### .include 'src/Regex/Cursor.pir'
+# Copyright (C) 2009, Patrick R. Michaud
+# $Id$
+
+=head1 NAME
+
+Regex::Cursor - Regex Cursor nodes
+
+=head1 DESCRIPTION
+
+This file implements the Regex::Cursor class, used for managing regular
+expression control flow.  Regex::Cursor is also a base class for
+grammars.
+
+=cut
+
+.include 'cclass.pasm'
+### .include 'src/Regex/constants.pir'
+.const int CURSOR_FAIL = -1
+.const int CURSOR_FAIL_GROUP = -2
+.const int CURSOR_FAIL_RULE = -3
+.const int CURSOR_FAIL_MATCH = -4
+
+.const int CURSOR_TYPE_SCAN = 1
+.const int CURSOR_TYPE_PEEK = 2
+
+.namespace ['Regex';'Cursor']
+
+.sub '' :anon :load :init
+    load_bytecode 'P6object.pbc'
+    .local pmc p6meta
+    p6meta = new 'P6metaclass'
+    $P0 = p6meta.'new_class'('Regex::Cursor', 'attr'=>'$!target $!from $!pos $!match $!names $!debug @!bstack @!cstack @!caparray')
+    $P0 = box 0
+    set_global '$!generation', $P0
+    $P0 = new ['Boolean']
+    assign $P0, 0
+    set_global '$!FALSE', $P0
+    $P0 = new ['Boolean']
+    assign $P0, 1
+    set_global '$!TRUE', $P0
+    .return ()
+.end
+
+=head2 Methods
+
+=over 4
+
+=item MATCH()
+
+Return this cursor's current Match object, generating a new one
+for the Cursor if one hasn't been created yet.
+
+=cut
+
+.sub 'MATCH' :method
+    .local pmc match
+    match = getattribute self, '$!match'
+    if null match goto match_make
+    $P0 = get_global '$!TRUE'
+    $I0 = issame match, $P0
+    unless $I0 goto match_done
+
+    # First, create a Match object and bind it
+  match_make:
+    match = new ['Regex';'Match']
+    setattribute self, '$!match', match
+    setattribute match, '$!cursor', self
+    .local pmc target, from, to
+    target = getattribute self, '$!target'
+    setattribute match, '$!target', target
+    from = getattribute self, '$!from'
+    setattribute match, '$!from', from
+    to = getattribute self, '$!pos'
+    setattribute match, '$!to', to
+
+    # Create any arrayed subcaptures.
+    .local pmc caparray, caparray_it, caphash
+    caparray = getattribute self, '@!caparray'
+    if null caparray goto caparray_done
+    caparray_it = iter caparray
+    caphash = new ['Hash']
+  caparray_loop:
+    unless caparray_it goto caparray_done
+    .local string subname
+    .local pmc arr
+    .local int keyint
+    subname = shift caparray_it
+    arr = new ['ResizablePMCArray']
+    caphash[subname] = arr
+    keyint = is_cclass .CCLASS_NUMERIC, subname, 0
+    if keyint goto caparray_int
+    match[subname] = arr
+    goto caparray_loop
+  caparray_int:
+    $I0 = subname
+    match[$I0] = arr
+  caparray_done:
+
+    # If it's not a successful match, or if there are
+    # no saved subcursors, we're done.
+    if to < from goto match_done
+    .local pmc cstack, cstack_it
+    cstack = getattribute self, '@!cstack'
+    if null cstack goto cstack_done
+    unless cstack goto cstack_done
+    cstack_it = iter cstack
+  cstack_loop:
+    unless cstack_it goto cstack_done
+    .local pmc subcur, submatch, names
+    subcur = shift cstack_it
+    # If the subcursor isn't bound with a name, skip it
+    names = getattribute subcur, '$!names'
+    if null names goto cstack_loop
+    $I0 = isa subcur, ['Regex';'Cursor']
+    unless $I0 goto cstack_1
+    submatch = subcur.'MATCH'()
+    goto cstack_2
+  cstack_1:
+    submatch = subcur
+  cstack_2:
+    # See if we have multiple binds
+    .local pmc names_it
+    subname = names
+    names_it = get_global '$!FALSE'
+    $I0 = index subname, '='
+    if $I0 < 0 goto cstack_subname
+    names_it = split '=', subname
+  cstack_subname_loop:
+    subname = shift names_it
+  cstack_subname:
+    keyint = is_cclass .CCLASS_NUMERIC, subname, 0
+    if null caparray goto cstack_bind
+    $I0 = exists caphash[subname]
+    unless $I0 goto cstack_bind
+    if keyint goto cstack_array_int
+    $P0 = match[subname]
+    push $P0, submatch
+    goto cstack_bind_done
+  cstack_array_int:
+    $I0 = subname
+    $P0 = match[$I0]
+    push $P0, submatch
+    goto cstack_bind_done
+  cstack_bind:
+    if keyint goto cstack_bind_int
+    match[subname] = submatch
+    goto cstack_bind_done
+  cstack_bind_int:
+    $I0 = subname
+    match[$I0] = submatch
+  cstack_bind_done:
+    if names_it goto cstack_subname_loop
+    goto cstack_loop
+  cstack_done:
+
+  match_done:
+    .return (match)
+.end
+
+
+=item parse(target [, regex])
+
+Parse C<target> in the current grammar starting with C<regex>.
+If C<regex> is omitted, then use the C<TOP> rule for the grammar.
+
+=cut
+
+.sub 'parse' :method
+    .param pmc target
+    .param pmc regex           :optional
+    .param int has_regex       :opt_flag
+    .param pmc actions         :named('actions') :optional
+    .param int rxtrace         :named('rxtrace') :optional
+    .param pmc options         :slurpy :named
+
+    if has_regex goto regex_done
+    regex = find_method self, 'TOP'
+  regex_done:
+
+    .lex '$*ACTIONS', actions
+
+    .local pmc cur, match
+    cur = self.'!cursor_init'(target, options :flat :named)
+    unless rxtrace goto rxtrace_done
+    cur.'DEBUG'()
+  rxtrace_done:
+    cur = cur.regex()
+    match = cur.'MATCH'()
+    .return (match)
+.end
+
+
+=item pos()
+
+Return the cursor's current position.
+
+=cut
+
+.sub 'pos' :method
+    $P0 = getattribute self, '$!pos'
+    .return ($P0)
+.end
+
+
+=item from()
+
+Return the cursor's from position.
+
+=cut
+
+.sub 'from' :method
+    $P0 = getattribute self, '$!from'
+    .return ($P0)
+.end
+
+
+=head2 Private methods
+
+=over 4
+
+=item !cursor_init(target)
+
+Create a new cursor for matching C<target>.
+
+=cut
+
+.sub '!cursor_init' :method
+    .param string target
+    .param int from            :named('from') :optional
+
+    .local pmc parrotclass, cur
+    $P0 = self.'HOW'()
+    parrotclass = getattribute $P0, 'parrotclass'
+    cur = new parrotclass
+
+    $P0 = new ['CodeString']
+    $P0 = target
+    setattribute cur, '$!target', $P0
+
+    $P0 = box from
+    setattribute cur, '$!from', $P0
+    $P0 = box from
+    setattribute cur, '$!pos', $P0
+
+    .return (cur)
+.end
+
+=item !cursor_start([lang])
+
+Create and initialize a new cursor from C<self>.  If C<lang> is
+provided, then the new cursor has the same type as lang.
+
+=cut
+
+.sub '!cursor_start' :method
+    .param pmc lang            :optional
+    .param int has_lang        :opt_flag
+
+    if has_lang goto have_lang
+    lang = self
+  have_lang:
+
+    .local pmc parrotclass, cur
+    $P0 = lang.'HOW'()
+    parrotclass = getattribute $P0, 'parrotclass'
+    cur = new parrotclass
+
+    .local pmc from, pos, target, debug
+
+    from = getattribute self, '$!pos'
+    setattribute cur, '$!from', from
+    setattribute cur, '$!pos', from
+
+    target = getattribute self, '$!target'
+    setattribute cur, '$!target', target
+    debug = getattribute self, '$!debug'
+    setattribute cur, '$!debug', debug
+
+    .return (cur, from, target, from)
+.end
+
+
+=item !cursor_fail(pos)
+
+Permanently fail this cursor.
+
+=cut
+
+.sub '!cursor_fail' :method
+    .local pmc pos
+    pos = box CURSOR_FAIL_RULE
+    setattribute self, '$!pos', pos
+    null $P0
+    setattribute self, '$!match', $P0
+    setattribute self, '@!bstack', $P0
+    setattribute self, '@!cstack', $P0
+.end
+
+
+=item !cursor_pass(pos, name)
+
+Set the Cursor as passing at C<pos>; calling any reduction action
+C<name> associated with the cursor.  This method simply sets
+C<$!match> to a boolean true value to indicate the regex was
+successful; the C<MATCH> method above replaces this boolean true
+with a "real" Match object when requested.
+
+=cut
+
+.sub '!cursor_pass' :method
+    .param pmc pos
+    .param string name
+
+    setattribute self, '$!pos', pos
+    .local pmc match
+    match = get_global '$!TRUE'
+    setattribute self, '$!match', match
+    unless name goto done
+    self.'!reduce'(name)
+  done:
+    .return (self)
+.end
+
+
+=item !cursor_caparray(caparray :slurpy)
+
+Set the list of subcaptures that produce arrays to C<caparray>.
+
+=cut
+
+.sub '!cursor_caparray' :method
+    .param pmc caparray        :slurpy
+    setattribute self, '@!caparray', caparray
+.end
+
+
+=item !cursor_names(names)
+
+Set the Cursor's name (for binding) to C<names>.
+
+=cut
+
+.sub '!cursor_names' :method
+    .param pmc names
+    setattribute self, '$!names', names
+.end
+
+
+=item !cursor_pos(pos)
+
+Set the cursor's position to C<pos>.
+
+=cut
+
+.sub '!cursor_pos' :method
+    .param pmc pos
+    setattribute self, '$!pos', pos
+.end
+
+
+=item !cursor_debug(args :slurpy)
+
+Log a debug message.
+
+=cut
+
+.sub '!cursor_debug' :method
+    .param pmc args            :slurpy
+    $P0 = getattribute self, '$!debug'
+    if null $P0 goto done
+    unless $P0 goto done
+    .local pmc from, pos, orig
+    .local int line
+    from = getattribute self, '$!from'
+    orig = getattribute self, '$!target'
+    line = orig.'lineof'(from)
+    inc line
+    printerr from
+    printerr '/'
+    printerr line
+    printerr ': '
+    $S0 = join '', args
+    printerr $S0
+    printerr "\n"
+  done:
+    .return (self)
+.end
+
+
+=item !mark_push(rep, pos, mark)
+
+Push a new backtracking point onto the cursor with the given
+C<rep>, C<pos>, and backtracking C<mark>.  (The C<mark> is typically
+the address of a label to branch to when backtracking occurs.)
+
+=cut
+
+.sub '!mark_push' :method
+    .param int rep
+    .param int pos
+    .param int mark
+    .param pmc subcur          :optional
+    .param int has_subcur      :opt_flag
+
+    # cptr contains the desired number of elements in the cstack
+    .local int cptr
+    cptr = 0
+
+    # Initialize bstack if needed, and set cptr to be the cstack
+    # size requested by the top frame.
+    .local pmc bstack
+    bstack = getattribute self, '@!bstack'
+    if null bstack goto bstack_new
+    unless bstack goto bstack_done
+    $I0 = elements bstack
+    dec $I0
+    cptr = bstack[$I0]
+    goto bstack_done
+  bstack_new:
+    bstack = new ['ResizableIntegerArray']
+    setattribute self, '@!bstack', bstack
+  bstack_done:
+
+    # If a new subcursor is being pushed, then save it in cstack
+    # and change cptr to include the new subcursor.
+    unless has_subcur goto subcur_done
+    .local pmc cstack
+    cstack = getattribute self, '@!cstack'
+    unless null cstack goto have_cstack
+    cstack = new ['ResizablePMCArray']
+    setattribute self, '@!cstack', cstack
+  have_cstack:
+    cstack[cptr] = subcur
+    inc cptr
+  subcur_done:
+
+    # Save our mark frame information.
+    push bstack, mark
+    push bstack, pos
+    push bstack, rep
+    push bstack, cptr
+.end
+
+
+=item !mark_peek(mark)
+
+Return information about the latest frame for C<mark>.
+If C<mark> is zero, return information about the latest frame.
+
+=cut
+
+.sub '!mark_peek' :method
+    .param int tomark
+
+    .local pmc bstack
+    bstack = getattribute self, '@!bstack'
+    if null bstack goto no_mark
+    unless bstack goto no_mark
+
+    .local int bptr
+    bptr = elements bstack
+
+  bptr_loop:
+    bptr = bptr - 4
+    if bptr < 0 goto no_mark
+    .local int rep, pos, mark, cptr
+    mark = bstack[bptr]
+    unless tomark goto bptr_done
+    unless mark == tomark goto bptr_loop
+  bptr_done:
+    $I0  = bptr + 1
+    pos  = bstack[$I0]
+    inc $I0
+    rep  = bstack[$I0]
+    inc $I0
+    cptr = bstack[$I0]
+    .return (rep, pos, mark, bptr, bstack, cptr)
+
+  no_mark:
+    .return (0, CURSOR_FAIL_GROUP, 0, 0, bstack, 0)
+.end
+
+
+=item !mark_fail(tomark)
+
+Remove the most recent C<mark> and backtrack the cursor to the
+point given by that mark.  If C<mark> is zero, then
+backtracks the most recent mark.  Returns the backtracked
+values of repetition count, cursor position, and mark (address).
+
+=cut
+
+.sub '!mark_fail' :method
+    .param int mark
+
+    # Get the frame information for C<mark>.
+    .local int rep, pos, mark, bptr, cptr
+    .local pmc bstack
+    (rep, pos, mark, bptr, bstack, cptr) = self.'!mark_peek'(mark)
+
+    .local pmc subcur
+    null subcur
+
+    # If there's no bstack, there's nothing else to do.
+    if null bstack goto done
+
+    # If there's a subcursor associated with this mark, return it.
+    unless cptr > 0 goto cstack_done
+    .local pmc cstack
+    cstack = getattribute self, '@!cstack'
+    dec cptr
+    subcur = cstack[cptr]
+    # Set the cstack to the size requested by the soon-to-be-top mark frame.
+    unless bptr > 0 goto cstack_zero
+    $I0 = bptr - 1
+    $I0 = bstack[$I0]
+    assign cstack, $I0
+    goto cstack_done
+  cstack_zero:
+    assign cstack, 0
+  cstack_done:
+
+    # Pop the current mark frame and all above it.
+    assign bstack, bptr
+
+  done:
+    .return (rep, pos, mark, subcur)
+.end
+
+
+=item !mark_commit(mark)
+
+Like C<!mark_fail> above this backtracks the cursor to C<mark>
+(releasing any intermediate marks), but preserves the current
+capture states.
+
+=cut
+
+.sub '!mark_commit' :method
+    .param int mark
+
+    # find mark
+    .local int rep, pos, mark, bptr, cptr
+    .local pmc bstack
+    (rep, pos, mark, bptr, bstack) = self.'!mark_peek'(mark)
+
+    # get current cstack size into cptr
+    if null bstack goto done
+    unless bstack goto done
+    $I0 = elements bstack
+    dec $I0
+    cptr = bstack[$I0]
+
+    # Pop the mark frame and everything above it.
+    assign bstack, bptr
+
+    # If we don't need to hold any cstack information, we're done.
+    unless cptr > 0 goto done
+
+    # If the top frame is an auto-fail frame, (re)use it to hold
+    # our needed cptr, otherwise create a new auto-fail frame to do it.
+    unless bptr > 0 goto cstack_push
+    $I0 = bptr - 3             # pos is at top-3
+    $I1 = bstack[$I0]
+    unless $I1 < 0 goto cstack_push
+    $I0 = bptr - 1             # cptr is at top-1
+    bstack[$I0] = cptr
+    goto done
+  cstack_push:
+    push bstack, 0             # mark
+    push bstack, CURSOR_FAIL   # pos
+    push bstack, 0             # rep
+    push bstack, cptr          # cptr
+
+  done:
+    .return (rep, pos, mark)
+.end
+
+
+=item !reduce(name [, key] [, match])
+
+Perform any action associated with the current regex match.
+
+=cut
+
+.sub '!reduce' :method
+    .param string name
+    .param string key          :optional
+    .param int has_key         :opt_flag
+    .param pmc match           :optional
+    .param int has_match       :opt_flag
+    .local pmc actions
+    actions = find_dynamic_lex '$*ACTIONS'
+    if null actions goto actions_done
+    $I0 = can actions, name
+    unless $I0 goto actions_done
+    if has_match goto match_done
+    match = self.'MATCH'()
+  match_done:
+    if has_key goto actions_key
+    actions.name(match)
+    goto actions_done
+  actions_key:
+    .tailcall actions.name(match, key)
+  actions_done:
+    .return ()
+.end
+
+
+=item !BACKREF(name)
+
+Match the backreference given by C<name>.
+
+=cut
+
+.sub '!BACKREF' :method
+    .param string name
+    .local pmc cur
+    .local int pos, eos
+    .local string tgt
+    (cur, pos, tgt) = self.'!cursor_start'()
+
+    # search the cursor cstack for the latest occurrence of C<name>
+    .local pmc cstack
+    cstack = getattribute self, '@!cstack'
+    if null cstack goto pass
+    .local int cstack_it
+    cstack_it = elements cstack
+  cstack_loop:
+    dec cstack_it
+    unless cstack_it >= 0 goto pass
+    .local pmc subcur
+    subcur = cstack[cstack_it]
+    $P0 = getattribute subcur, '$!names'
+    if null $P0 goto cstack_loop
+    $S0 = $P0
+    if name != $S0 goto cstack_loop
+    # we found a matching subcursor, get the literal it matched
+  cstack_done:
+    .local int litlen
+    .local string litstr
+    $I1 = subcur.'pos'()
+    $I0 = subcur.'from'()
+    litlen = $I1 - $I0
+    litstr = substr tgt, $I0, litlen
+    # now test the literal against our target
+    $S0 = substr tgt, pos, litlen
+    unless $S0 == litstr goto fail
+    pos += litlen
+  pass:
+    cur.'!cursor_pass'(pos, '')
+  fail:
+    .return (cur)
+.end
+
+
+=back
+
+=head2 Vtable functions
+
+=over 4
+
+=item get_bool
+
+=cut
+
+.sub '' :vtable('get_bool') :method
+    .local pmc match
+    match = getattribute self, '$!match'
+    if null match goto false
+    $I0 = istrue match
+    .return ($I0)
+  false:
+    .return (0)
+.end
+
+
+=head1 AUTHORS
+
+Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+### .include 'src/Regex/Cursor-builtins.pir'
+# Copyright (C) 2009, Patrick R. Michaud
+# $Id$
+
+=head1 NAME
+
+Regex::Cursor-builtins - builtin regexes for Cursor objects
+
+=cut
+
+.include 'cclass.pasm'
+
+.namespace ['Regex';'Cursor']
+
+.sub 'before' :method
+    .param pmc regex           :optional
+    .local pmc cur
+    .local int pos
+    (cur, pos) = self.'!cursor_start'()
+    if null regex goto fail
+    $P0 = cur.regex()
+    unless $P0 goto fail
+    cur.'!cursor_pass'(pos, 'before')
+  fail:
+    .return (cur)
+.end
+
+
+.sub 'ident' :method
+    .local pmc cur
+    .local int pos, eos
+    .local string tgt
+    (cur, pos, tgt) = self.'!cursor_start'()
+    eos = length tgt
+    $S0 = substr tgt, pos, 1
+    if $S0 == '_' goto ident_1
+    $I0 = is_cclass .CCLASS_ALPHABETIC, tgt, pos
+    unless $I0 goto fail
+  ident_1:
+    pos = find_not_cclass .CCLASS_WORD, tgt, pos, eos
+    cur.'!cursor_pass'(pos, 'ident')
+  fail:
+    .return (cur)
+.end
+
+.sub 'wb' :method
+    .local pmc cur
+    .local int pos, eos
+    .local string tgt
+    (cur, pos, tgt) = self.'!cursor_start'()
+    if pos == 0 goto pass
+    eos = length tgt
+    if pos == eos goto pass
+    $I0 = pos - 1
+    $I1 = is_cclass .CCLASS_WORD, tgt, $I0
+    $I2 = is_cclass .CCLASS_WORD, tgt, pos
+    if $I1 == $I2 goto fail
+  pass:
+    cur.'!cursor_pass'(pos, 'wb')
+  fail:
+    .return (cur)
+.end
+
+.sub 'ww' :method
+    .local pmc cur
+    .local int pos, eos
+    .local string tgt
+    (cur, pos, tgt) = self.'!cursor_start'()
+    if pos == 0 goto fail
+    eos = length tgt
+    if pos == eos goto fail
+    $I0 = is_cclass .CCLASS_WORD, tgt, pos
+    unless $I0 goto fail
+    $I1 = pos - 1
+    $I0 = is_cclass .CCLASS_WORD, tgt, $I1
+    unless $I0 goto fail
+  pass:
+    cur.'!cursor_pass'(pos, 'ww')
+  fail:
+    .return (cur)
+.end
+
+.sub 'ws' :method
+    .local pmc cur
+    .local int pos, eos
+    .local string tgt
+    (cur, pos, tgt) = self.'!cursor_start'()
+    eos = length tgt
+    if pos >= eos goto pass
+    if pos == 0 goto ws_scan
+    $I0 = is_cclass .CCLASS_WORD, tgt, pos
+    unless $I0 goto ws_scan
+    $I1 = pos - 1
+    $I0 = is_cclass .CCLASS_WORD, tgt, $I1
+    if $I0 goto fail
+  ws_scan:
+    pos = find_not_cclass .CCLASS_WHITESPACE, tgt, pos, eos
+  pass:
+    cur.'!cursor_pass'(pos, 'ws')
+  fail:
+    .return (cur)
+.end
+
+.sub '!cclass' :anon
+    .param pmc self
+    .param string name
+    .param int cclass
+    .local pmc cur
+    .local int pos
+    .local string tgt
+    (cur, pos, tgt) = self.'!cursor_start'()
+    $I0 = is_cclass cclass, tgt, pos
+    unless $I0 goto fail
+    inc pos
+    cur.'!cursor_pass'(pos, name)
+  fail:
+    .return (cur)
+.end
+
+.sub 'alpha' :method
+    .local pmc cur
+    .local int pos
+    .local string tgt
+    (cur, pos, tgt) = self.'!cursor_start'()
+    $I0 = is_cclass .CCLASS_ALPHABETIC, tgt, pos
+    if $I0 goto pass
+    $S0 = substr tgt, pos, 1
+    if $S0 != '_' goto fail
+  pass:
+    inc pos
+    cur.'!cursor_pass'(pos, 'alpha')
+  fail:
+    .return (cur)
+.end
+
+.sub 'upper' :method
+    .tailcall '!cclass'(self, 'upper', .CCLASS_UPPERCASE)
+.end
+
+.sub 'lower' :method
+    .tailcall '!cclass'(self, 'lower', .CCLASS_LOWERCASE)
+.end
+
+.sub 'digit' :method
+    .tailcall '!cclass'(self, 'digit', .CCLASS_NUMERIC)
+.end
+
+.sub 'xdigit' :method
+    .tailcall '!cclass'(self, 'xdigit', .CCLASS_HEXADECIMAL)
+.end
+
+.sub 'print' :method
+    .tailcall '!cclass'(self, 'print', .CCLASS_PRINTING)
+.end
+
+.sub 'graph' :method
+    .tailcall '!cclass'(self, 'graph', .CCLASS_GRAPHICAL)
+.end
+
+.sub 'cntrl' :method
+    .tailcall '!cclass'(self, 'cntrl', .CCLASS_CONTROL)
+.end
+
+.sub 'punct' :method
+    .tailcall '!cclass'(self, 'punct', .CCLASS_PUNCTUATION)
+.end
+
+.sub 'alnum' :method
+    .tailcall '!cclass'(self, 'alnum', .CCLASS_ALPHANUMERIC)
+.end
+
+.sub 'space' :method
+    .tailcall '!cclass'(self, 'space', .CCLASS_WHITESPACE)
+.end
+
+.sub 'blank' :method
+    .tailcall '!cclass'(self, 'blank', .CCLASS_BLANK)
+.end
+
+.sub 'FAILGOAL' :method
+    .param string goal
+    .local string dba
+    $P0 = getinterp
+    $P0 = $P0['sub';1]
+    dba = $P0
+  have_dba:
+    .local string message
+    message = concat "Unable to parse ", dba
+    message .= ", couldn't find final "
+    message .= goal
+    $P0 = getattribute self, '$!target'
+    $I0 = can $P0, 'lineof'
+    unless $I0 goto have_line
+    message .= ' at line '
+    $I0 = self.'pos'()
+    $I0 = $P0.'lineof'($I0)
+    inc $I0
+    $S0 = $I0
+    message .= $S0
+  have_line:
+    die message
+.end
+
+.sub 'DEBUG' :method
+    .param pmc arg             :optional
+    .param int has_arg         :opt_flag
+
+    if has_arg goto have_arg
+    arg = get_global '$!TRUE'
+  have_arg:
+
+    setattribute self, '$!debug', arg
+    .return (1)
+.end
+
+=head1 AUTHORS
+
+Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+### .include 'src/Regex/Cursor-protoregex-peek.pir'
+# Copyright (C) 2009, Patrick R. Michaud
+
+=head1 NAME
+
+    Regex::Cursor-protoregex-peek - simple protoregex implementation
+
+=head1 DESCRIPTION
+
+=over 4
+
+=item !protoregex(name)
+
+Perform a match for protoregex C<name>.
+
+=cut
+
+.sub '!protoregex' :method
+    .param string name
+
+    .local pmc tokrx, toklen
+    (tokrx, toklen) = self.'!protoregex_tokrx'(name)
+  have_tokrx:
+
+    self.'!cursor_debug'('PROTO ', name)
+
+    # If there are no entries at all for this protoregex, we fail outright.
+    unless tokrx goto fail
+
+    # Figure out where we are in the current match.
+    .local pmc target
+    .local int pos
+    target = getattribute self, '$!target'
+    $P1 = getattribute self, '$!pos'
+    pos = $P1
+
+    # Use the character at the current match position to determine
+    # the longest possible token we could encounter at this point.
+    .local string token1, token
+    token1 = substr target, pos, 1
+    $I0 = toklen[token1]
+    token = substr target, pos, $I0
+    $S0 = escape token
+    $S1 = escape token1
+    self.'!cursor_debug'('        token1="', $S1, '", token="', $S0, '"')
+
+    # Create a hash to keep track of the methods we've already called,
+    # so that we don't end up calling it twice.
+    .local pmc mcalled
+    mcalled = new ['Hash']
+
+    # Look in the tokrx hash for any rules that are keyed with the
+    # current token.  If there aren't any, or the rules we have don't
+    # match, then shorten the token by one character and try again
+    # until we either have a match or we've run out of candidates.
+  token_loop:
+    .local pmc rx, result
+    rx = tokrx[token]
+    if null rx goto token_next
+    $I0 = isa rx, ['ResizablePMCArray']
+    if $I0 goto rx_array
+    .local int rxaddr
+    rxaddr = get_addr rx
+    result = mcalled[rxaddr]
+    unless null result goto token_next
+    result = self.rx()
+    mcalled[rxaddr] = mcalled
+    if result goto done
+    goto token_next
+  rx_array:
+    .local pmc rx_it
+    rx_it = iter rx
+  cand_loop:
+    unless rx_it goto cand_done
+    rx = shift rx_it
+    rxaddr = get_addr rx
+    result = mcalled[rxaddr]
+    unless null result goto token_next
+    result = self.rx()
+    mcalled[rxaddr] = mcalled
+    if result goto done
+    goto cand_loop
+  cand_done:
+  token_next:
+    unless token > '' goto fail
+    chopn token, 1
+    goto token_loop
+
+  done:
+    pos = result.'pos'()
+    self.'!cursor_debug'('PASS  ', name, ' at pos=', pos)
+    .return (result)
+
+  fail:
+    self.'!cursor_debug'('FAIL  ', name)
+    .return (0)
+.end
+
+
+=item !protoregex_generation()
+
+Reset the C<$!generation> flag to indicate that protoregexes
+need to be recalculated (because new protoregexes have been
+added).
+
+=cut
+
+.sub '!protoregex_generation' :method
+    $P0 = get_global '$!generation'
+    # don't change this to 'inc' -- we want to ensure new PMC
+    $P1 = add $P0, 1
+    set_global '$!generation', $P1
+    .return ($P1)
+.end
+
+=item !protoregex_tokrx(name)
+
+Return the token list for protoregex C<name>.  If the list
+doesn't already exist, or if the existing list is stale,
+create a new one and return it.
+
+=cut
+
+.sub '!protoregex_tokrx' :method
+    .param string name
+
+    .local pmc generation
+    generation = get_global '$!generation'
+
+    # Get the protoregex table for the current grammar.  If
+    # a table doesn't exist or it's out of date, generate a
+    # new one.
+    .local pmc parrotclass, prototable
+    parrotclass = typeof self
+    prototable = getprop '%!prototable', parrotclass
+    if null prototable goto make_prototable
+    $P0 = getprop '$!generation', prototable
+    $I0 = issame $P0, generation
+    if $I0 goto have_prototable
+  make_prototable:
+    prototable = self.'!protoregex_gen_table'(parrotclass)
+  have_prototable:
+
+    # Obtain the toxrk and toklen hashes for the current grammar
+    # from the protoregex table.  If they already exist, we're
+    # done, otherwise we create new ones below.
+    # yet for this table, then do that now.
+    .local pmc tokrx, toklen
+    $S0 = concat name, '.tokrx'
+    tokrx = prototable[$S0]
+    $S0 = concat name, '.toklen'
+    toklen = prototable[$S0]
+    unless null tokrx goto tokrx_done
+
+    self.'!cursor_debug'('Generating protoregex table for ', name)
+
+    .local pmc toklen, tokrx
+    toklen = new ['Hash']
+    tokrx  = new ['Hash']
+
+    # The prototable has already collected all of the names of
+    # protoregex methods as keys in C<prototable>.  First
+    # get a list of all of the methods that begin with "name:sym<".
+    .local string mprefix
+    .local int mlen
+    mprefix = concat name, ':sym<'
+    mlen   = length mprefix
+    .local pmc methodlist, proto_it
+    methodlist = new ['ResizableStringArray']
+    proto_it = iter prototable
+  proto_loop:
+    unless proto_it goto proto_done
+    .local string methodname
+    methodname = shift proto_it
+    $S0 = substr methodname, 0, mlen
+    if $S0 != mprefix goto proto_loop
+    push methodlist, methodname
+    goto proto_loop
+  proto_done:
+
+    # Now, walk through all of the methods, building the
+    # tokrx and toklen tables as we go.
+    .local pmc sorttok
+    sorttok = new ['ResizablePMCArray']
+  method_loop:
+    unless methodlist goto method_done
+    methodname = shift methodlist
+
+    # Look up the method itself.
+    .local pmc rx
+    rx = find_method self, methodname
+
+    # Now find the prefix tokens for the method; calling the
+    # method name with a !PREFIX__ prefix should return us a list
+    # of valid token prefixes.  If no such method exists, then
+    # our token prefix is a null string.
+    .local pmc tokens, tokens_it
+    $S0 = concat '!PREFIX__', methodname
+    $I0 = can self, $S0
+    unless $I0 goto method_peek_none
+    tokens = self.$S0()
+    goto method_peek_done
+  method_peek_none:
+    tokens = new ['ResizablePMCArray']
+    push tokens, ''
+  method_peek_done:
+
+    # Now loop through all of the tokens for the method, updating
+    # the longest length per initial token character and adding
+    # the token to the tokrx hash.  Entries in the tokrx hash
+    # are automatically promoted to arrays when there's more
+    # than one candidate, and any arrays created are placed into
+    # sorttok so they can have a secondary sort below.
+    .local pmc seentok
+    seentok = new ['Hash']
+  tokens_loop:
+    unless tokens goto tokens_done
+    .local string tkey, tfirst
+    $P0 = shift tokens
+    $I0 = isa $P0, ['ResizablePMCArray']
+    unless $I0 goto token_item
+    splice tokens, $P0, 0, 0
+    goto tokens_loop
+  token_item:
+    tkey = $P0
+
+    # If we've already processed this token for this rule,
+    # don't enter it twice into tokrx.
+    $I0 = exists seentok[tkey]
+    if $I0 goto tokens_loop
+    seentok[tkey] = seentok
+
+    # Keep track of longest token lengths by initial character
+    tfirst = substr tkey, 0, 1
+    $I0 = length tkey
+    $I1 = toklen[tfirst]
+    if $I0 <= $I1 goto toklen_done
+    toklen[tfirst] = $I0
+  toklen_done:
+
+    # Add the regex to the list under the token key, promoting
+    # entries to lists as appropriate.
+    .local pmc rxlist
+    rxlist = tokrx[tkey]
+    if null rxlist goto rxlist_0
+    $I0 = isa rxlist, ['ResizablePMCArray']
+    if $I0 goto rxlist_n
+  rxlist_1:
+    $I0 = issame rx, rxlist
+    if $I0 goto tokens_loop
+    $P0 = rxlist
+    rxlist = new ['ResizablePMCArray']
+    push sorttok, rxlist
+    push rxlist, $P0
+    push rxlist, rx
+    tokrx[tkey] = rxlist
+    goto tokens_loop
+  rxlist_n:
+    push rxlist, rx
+    goto tokens_loop
+  rxlist_0:
+    tokrx[tkey] = rx
+    goto tokens_loop
+  tokens_done:
+    goto method_loop
+  method_done:
+
+    # in-place sort the keys that ended up with multiple entries
+    .const 'Sub' $P99 = '!protoregex_cmp'
+  sorttok_loop:
+    unless sorttok goto sorttok_done
+    rxlist = shift sorttok
+    rxlist.'sort'($P99)
+    goto sorttok_loop
+  sorttok_done:
+
+    # It's built!  Now store the tokrx and toklen hashes in the
+    # prototable and return them to the caller.
+    $S0 = concat name, '.tokrx'
+    prototable[$S0] = tokrx
+    $S0 = concat name, '.toklen'
+    prototable[$S0] = toklen
+
+  tokrx_done:
+    .return (tokrx, toklen)
+.end
+
+.sub '!protoregex_cmp' :anon
+    .param pmc a
+    .param pmc b
+    $S0 = a
+    $I0 = length $S0
+    $S1 = b
+    $I1 = length $S1
+    $I2 = cmp $I1, $I0
+    .return ($I2)
+.end
+
+=item !protoregex_gen_table(parrotclass)
+
+Generate a new protoregex table for C<parrotclass>.  This involves
+creating a hash keyed with method names containing ':sym<' from
+C<parrotclass> and all of its superclasses.  This new hash is
+then given the current C<$!generate> property so we can avoid
+recreating it on future calls.
+
+=cut
+
+.sub '!protoregex_gen_table' :method
+    .param pmc parrotclass
+
+    .local pmc prototable
+    prototable = new ['Hash']
+    .local pmc class_it, method_it
+    $P0 = parrotclass.'inspect'('all_parents')
+    class_it = iter $P0
+  class_loop:
+    unless class_it goto class_done
+    $P0 = shift class_it
+    $P0 = $P0.'methods'()
+    method_it = iter $P0
+  method_loop:
+    unless method_it goto class_loop
+    $S0 = shift method_it
+    $I0 = index $S0, ':sym<'
+    if $I0 < 0 goto method_loop
+    prototable[$S0] = prototable
+    goto method_loop
+  class_done:
+    $P0 = get_global '$!generation'
+    setprop prototable, '$!generation', $P0
+    setprop parrotclass, '%!prototable', prototable
+    .return (prototable)
+.end
+
+
+=item !PREFIX__!protoregex(name)
+
+Return the set of initial tokens for protoregex C<name>.
+These are conveniently available as the keys of the
+tokrx hash.
+
+=cut
+
+.sub '!PREFIX__!protoregex' :method
+    .param string name
+
+    .local pmc tokrx
+    tokrx = self.'!protoregex_tokrx'(name)
+    unless tokrx goto peek_none
+
+    .local pmc results, tokrx_it
+    results = new ['ResizablePMCArray']
+    tokrx_it = iter tokrx
+  tokrx_loop:
+    unless tokrx_it goto tokrx_done
+    $S0 = shift tokrx_it
+    push results, $S0
+    goto tokrx_loop
+  tokrx_done:
+    .return (results)
+
+  peek_none:
+    .return ('')
+.end
+
+
+.sub '!PREFIX__!subrule' :method
+    .param string name
+    .param string prefix
+
+    .local string peekname
+    peekname = concat '!PREFIX__', name
+    $I0 = can self, peekname
+    unless $I0 goto subrule_none
+
+    # make sure we aren't recursing
+    .local pmc context
+    $P0 = getinterp
+    context = $P0['context';1]
+  caller_loop:
+    if null context goto caller_done
+    $P0 = context['current_sub']
+    $S0 = $P0
+    # stop if we find a name that doesn't begin with ! (33)
+    $I0 = ord $S0
+    if $I0 != 33 goto caller_done
+    if $S0 == peekname goto subrule_none
+    context = context['caller_ctx']
+    goto caller_loop
+  caller_done:
+
+    .local pmc tokens, tokens_it
+    tokens = self.peekname()
+    unless tokens goto subrule_none
+    unless prefix goto tokens_done
+    tokens_it = iter tokens
+    tokens = new ['ResizablePMCArray']
+  tokens_loop:
+    unless tokens_it goto tokens_done
+    $S0 = shift tokens_it
+    $S0 = concat prefix, $S0
+    push tokens, $S0
+    goto tokens_loop
+  tokens_done:
+    .return (tokens)
+
+  subrule_none:
+    .return (prefix)
+.end
+
+
+.sub 'DUMP_TOKRX' :method
+    .param string name
+
+    .local pmc tokrx
+    tokrx = self.'!protoregex_tokrx'(name)
+    _dumper(tokrx, name)
+    .return (1)
+.end
+
+=back
+
+=cut
+### .include 'src/Regex/Match.pir'
+# Copyright (C) 2009, Patrick R. Michaud
+# $Id$
+
+=head1 NAME
+
+Regex::Match - Regex Match objects
+
+=head1 DESCRIPTION
+
+This file implements Match objects for the regex engine.
+
+=cut
+
+.namespace ['Regex';'Match']
+
+.sub '' :anon :load :init
+    load_bytecode 'P6object.pbc'
+    .local pmc p6meta
+    p6meta = new 'P6metaclass'
+    $P0 = p6meta.'new_class'('Regex::Match', 'parent'=>'Capture', 'attr'=>'$!cursor $!target $!from $!to $!ast')
+    .return ()
+.end
+
+=head2 Methods
+
+=over 4
+
+=item CURSOR()
+
+Returns the Cursor associated with this match object.
+
+=cut
+
+.sub 'CURSOR' :method
+    $P0 = getattribute self, '$!cursor'
+    .return ($P0)
+.end
+
+=item from()
+
+Returns the offset in the target string of the beginning of the match.
+
+=cut
+
+.sub 'from' :method
+    $P0 = getattribute self, '$!from'
+    .return ($P0)
+.end
+
+
+=item to()
+
+Returns the offset in the target string of the end of the match.
+
+=cut
+
+.sub 'to' :method
+    $P0 = getattribute self, '$!to'
+    .return ($P0)
+.end
+
+
+=item chars()
+
+Returns C<.to() - .from()>
+
+=cut
+
+.sub 'chars' :method
+    $I0 = self.'to'()
+    $I1 = self.'from'()
+    $I2 = $I0 - $I1
+    .return ($I2)
+.end
+
+
+=item orig()
+
+Return the original item that was matched against.
+
+=cut
+
+.sub 'orig' :method
+    $P0 = getattribute self, '$!target'
+    .return ($P0)
+.end
+
+
+=item Str()
+
+Returns the portion of the target corresponding to this match.
+
+=cut
+
+.sub 'Str' :method
+    $S0 = self.'orig'()
+    $I0 = self.'from'()
+    $I1 = self.'to'()
+    $I1 -= $I0
+    $S1 = substr $S0, $I0, $I1
+    .return ($S1)
+.end
+
+
+=item ast()
+
+Returns the "abstract object" for the Match; if no abstract object
+has been set then returns C<Str> above.
+
+=cut
+
+.sub 'ast' :method
+    .local pmc ast
+    ast = getattribute self, '$!ast'
+    if null ast goto ret_null
+    .return (ast)
+  ret_null:
+    .tailcall self.'Str'()
+.end
+
+.sub 'peek_ast' :method
+    .local pmc ast
+    ast = getattribute self, '$!ast'
+    unless null ast goto have_ast
+    ast = new ['Undef']
+  have_ast:
+    .return (ast)
+.end
+
+=back
+
+=head2 Vtable functions
+
+=over 4
+
+=item get_bool()
+
+Returns 1 (true) if this is the result of a successful match,
+otherwise returns 0 (false).
+
+=cut
+
+.sub '' :vtable('get_bool') :method
+    $P0 = getattribute self, '$!from'
+    $P1 = getattribute self, '$!to'
+    $I0 = isge $P1, $P0
+    .return ($I0)
+.end
+
+
+=item get_integer()
+
+Returns the integer value of the matched text.
+
+=cut
+
+.sub '' :vtable('get_integer') :method
+    $I0 = self.'Str'()
+    .return ($I0)
+.end
+
+
+=item get_number()
+
+Returns the numeric value of this match
+
+=cut
+
+.sub '' :vtable('get_number') :method
+    $N0 = self.'Str'()
+    .return ($N0)
+.end
+
+
+=item get_string()
+
+Returns the string value of the match
+
+=cut
+
+.sub '' :vtable('get_string') :method
+    $S0 = self.'Str'()
+    .return ($S0)
+.end
+
+
+=item !make(obj)
+
+Set the "ast object" for the invocant.
+
+=cut
+
+.sub '!make' :method
+    .param pmc obj
+    setattribute self, '$!ast', obj
+    .return (obj)
+.end
+
+
+=back
+
+=head1 AUTHORS
+
+Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+### .include 'src/Regex/Dumper.pir'
+# Copyright (C) 2005-2009, Parrot Foundation.
+# $Id$
+
+=head1 TITLE
+
+Regex::Dumper - various methods for displaying Match structures
+
+=head2 C<Regex::Match> Methods
+
+=over 4
+
+=item C<__dump(PMC dumper, STR label)>
+
+This method enables Data::Dumper to work on Regex::Match objects.
+
+=cut
+
+.namespace ['Regex';'Match']
+
+.sub "__dump" :method
+    .param pmc dumper
+    .param string label
+    .local string indent, subindent
+    .local pmc it, val
+    .local string key
+    .local pmc hash, array
+    .local int hascapts
+
+    (subindent, indent) = dumper."newIndent"()
+    print "=> "
+    $S0 = self
+    dumper."genericString"("", $S0)
+    print " @ "
+    $I0 = self.'from'()
+    print $I0
+    hascapts = 0
+    hash = self.'hash'()
+    if_null hash, dump_array
+    it = iter hash
+  dump_hash_1:
+    unless it goto dump_array
+    if hascapts goto dump_hash_2
+    print " {"
+    hascapts = 1
+  dump_hash_2:
+    print "\n"
+    print subindent
+    key = shift it
+    val = hash[key]
+    print "<"
+    print key
+    print "> => "
+    dumper."dump"(label, val)
+    goto dump_hash_1
+  dump_array:
+    array = self.'list'()
+    if_null array, dump_end
+    $I1 = elements array
+    $I0 = 0
+  dump_array_1:
+    if $I0 >= $I1 goto dump_end
+    if hascapts goto dump_array_2
+    print " {"
+    hascapts = 1
+  dump_array_2:
+    print "\n"
+    print subindent
+    val = array[$I0]
+    print "["
+    print $I0
+    print "] => "
+    dumper."dump"(label, val)
+    inc $I0
+    goto dump_array_1
+  dump_end:
+    unless hascapts goto end
+    print "\n"
+    print indent
+    print "}"
+  end:
+    dumper."deleteIndent"()
+.end
+
+
+=item C<dump_str()>
+
+An alternate dump output for a Match object and all of its subcaptures.
+
+=cut
+
+.sub "dump_str" :method
+    .param string prefix       :optional           # name of match variable
+    .param int has_prefix      :opt_flag
+    .param string b1           :optional           # bracket open
+    .param int has_b1          :opt_flag
+    .param string b2           :optional           # bracket close
+    .param int has_b2          :opt_flag
+
+    .local pmc capt
+    .local int spi, spc
+    .local pmc it
+    .local string prefix1, prefix2
+    .local pmc jmpstack
+    jmpstack = new 'ResizableIntegerArray'
+
+    if has_b2 goto start
+    b2 = "]"
+    if has_b1 goto start
+    b1 = "["
+  start:
+    .local string out
+    out = concat prefix, ':'
+    unless self goto subpats
+    out .= ' <'
+    $S0 = self
+    out .= $S0
+    out .= ' @ '
+    $S0 = self.'from'()
+    out .= $S0
+    out .= '> '
+
+  subpats:
+    $I0 = self
+    $S0 = $I0
+    out .= $S0
+    out .= "\n"
+    capt = self.'list'()
+    if_null capt, subrules
+    spi = 0
+    spc = elements capt
+  subpats_1:
+    unless spi < spc goto subrules
+    prefix1 = concat prefix, b1
+    $S0 = spi
+    concat prefix1, $S0
+    concat prefix1, b2
+    $I0 = defined capt[spi]
+    unless $I0 goto subpats_2
+    $P0 = capt[spi]
+    local_branch jmpstack, dumper
+  subpats_2:
+    inc spi
+    goto subpats_1
+
+  subrules:
+    capt = self.'hash'()
+    if_null capt, end
+    it = iter capt
+  subrules_1:
+    unless it goto end
+    $S0 = shift it
+    prefix1 = concat prefix, '<'
+    concat prefix1, $S0
+    concat prefix1, ">"
+    $I0 = defined capt[$S0]
+    unless $I0 goto subrules_1
+    $P0 = capt[$S0]
+    local_branch jmpstack, dumper
+    goto subrules_1
+
+  dumper:
+    $I0 = isa $P0, ['Regex';'Match']
+    unless $I0 goto dumper_0
+    $S0 = $P0.'dump_str'(prefix1, b1, b2)
+    out .= $S0
+    local_return jmpstack
+  dumper_0:
+    $I0 = does $P0, 'array'
+    unless $I0 goto dumper_3
+    $I0 = 0
+    $I1 = elements $P0
+  dumper_1:
+    if $I0 >= $I1 goto dumper_2
+    $P1 = $P0[$I0]
+    prefix2 = concat prefix1, b1
+    $S0 = $I0
+    concat prefix2, $S0
+    concat prefix2, b2
+    $S0 = $P1.'dump_str'(prefix2, b1, b2)
+    out .= $S0
+    inc $I0
+    goto dumper_1
+  dumper_2:
+    local_return jmpstack
+  dumper_3:
+    out .= prefix1
+    out .= ': '
+    $S0 = $P0
+    out .= $S0
+    out .= "\n"
+    local_return jmpstack
+
+  end:
+    .return (out)
+.end
+
+
+=back
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+
+### .include 'src/PAST/Regex.pir'
+# $Id: Regex.pir 41578 2009-09-30 14:45:23Z pmichaud $
+
+=head1 NAME
+
+PAST::Regex - Regex nodes for PAST
+
+=head1 DESCRIPTION
+
+This file implements the various abstract syntax tree nodes
+for regular expressions.
+
+=cut
+
+.namespace ['PAST';'Regex']
+
+.sub '' :init :load
+    load_bytecode 'PCT/PAST.pbc'
+    .local pmc p6meta
+    p6meta = get_hll_global 'P6metaclass'
+    p6meta.'new_class'('PAST::Regex', 'parent'=>'PAST::Node')
+.end
+
+
+.sub 'backtrack' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('backtrack', value, has_value)
+.end
+
+
+.sub 'capnames' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('capnames', value, has_value)
+.end
+
+
+.sub 'negate' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('negate', value, has_value)
+.end
+
+
+.sub 'min' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('min', value, has_value)
+.end
+
+
+.sub 'max' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('max', value, has_value)
+.end
+
+
+.sub 'pasttype' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('pasttype', value, has_value)
+.end
+
+
+.sub 'sep' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('sep', value, has_value)
+.end
+
+
+.sub 'subtype' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('subtype', value, has_value)
+.end
+
+
+.sub 'zerowidth' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .tailcall self.'attr'('zerowidth', value, has_value)
+.end
+
+
+=item prefix()
+
+Returns the prefixes associated with the regex tree rooted
+at this node.
+
+=cut
+
+.sub 'prefix' :method
+    .param string prefix
+    .param pmc tail            :slurpy
+
+    .local string pasttype
+    pasttype = self.'pasttype'()
+    if pasttype goto have_pasttype
+    pasttype = 'concat'
+  have_pasttype:
+
+    if pasttype == 'scan' goto prefix_skip
+
+    $S0 = concat 'prefix_', pasttype
+    $I0 = can self, $S0
+    unless $I0 goto prefix_done
+    .tailcall self.$S0(prefix, tail)
+
+  prefix_skip:
+    unless tail goto prefix_done
+    .local pmc head
+    head = shift tail
+    .tailcall head.'prefix'(prefix, tail :flat)
+
+  prefix_done:
+    .return (prefix)
+.end
+
+
+.sub 'prefix_alt' :method
+    .param string prefix
+    .param pmc tail
+
+    .local pmc child_it, results
+    child_it = self.'iterator'()
+    results = new ['ResizablePMCArray']
+  child_loop:
+    unless child_it goto child_done
+    $P0 = shift child_it
+    ($P1 :slurpy) = $P0.'prefix'(prefix, tail :flat)
+    splice results, $P1, 0, 0
+    goto child_loop
+  child_done:
+    .return (results :flat)
+.end
+
+
+.sub 'prefix_alt_longest' :method
+    .param string prefix
+    .param pmc tail
+    .tailcall self.'prefix_alt'(prefix, tail :flat)
+.end
+
+
+.sub 'prefix_anchor' :method
+    .param string prefix
+    .param pmc tail
+
+    unless tail goto anchor_done
+    .local pmc head
+    head = shift tail
+    .tailcall head.'prefix'(prefix, tail :flat)
+  anchor_done:
+    .return (prefix)
+.end
+
+
+.sub 'prefix_concat' :method
+    .param string prefix
+    .param pmc tail
+
+    $P0 = self.'list'()
+    splice tail, $P0, 0, 0
+    unless tail goto done
+    $P1 = shift tail
+    .tailcall $P1.'prefix'(prefix, tail :flat)
+  done:
+    .return (prefix)
+.end
+
+
+.sub 'prefix_literal' :method
+    .param string prefix
+    .param pmc tail
+
+    .local pmc lpast
+    lpast = self[0]
+    $I0 = isa lpast, ['String']
+    unless $I0 goto done
+
+    .local string subtype
+    subtype = self.'subtype'()
+    if subtype == 'ignorecase' goto done
+
+    $S0 = lpast
+    prefix = concat prefix, $S0
+    unless tail goto done
+    $P0 = shift tail
+    .tailcall $P0.'prefix'(prefix, tail :flat)
+
+  done:
+    .return (prefix)
+.end
+
+
+.sub 'prefix_enumcharlist' :method
+    .param string prefix
+    .param pmc tail
+
+    .local pmc negate
+    negate = self.'negate'()
+    .local string subtype, charlist
+    subtype = self.'subtype'()
+    charlist = self[0]
+
+    if negate goto charlist_negate
+
+    unless tail goto charlist_notail
+    if subtype == 'zerowidth' goto charlist_notail
+
+    .local pmc result, head
+    result = new ['ResizablePMCArray']
+    head = shift tail
+
+    .local int pos, eos
+    eos = length charlist
+    pos = 0
+  charlist_loop:
+    unless pos < eos goto charlist_done
+    .local string char
+    char = substr charlist, pos, 1
+    $S0 = concat prefix, char
+    ($P0 :slurpy) = head.'prefix'($S0, tail :flat)
+    splice result, $P0, 0, 0
+    inc pos
+    goto charlist_loop
+  charlist_done:
+    .return (result :flat)
+
+  charlist_notail:
+    $P0 = split '', charlist
+    .return ($P0 :flat)
+
+  charlist_negate:
+    if subtype == 'zerowidth' goto charlist_negate_0
+    unless tail goto charlist_negate_0
+    .return (prefix)
+  charlist_negate_0:
+    head = shift tail
+    .tailcall head.'prefix'(prefix, tail :flat)
+.end
+
+
+.sub 'prefix_subcapture' :method
+    .param string prefix
+    .param pmc tail
+
+    .tailcall self.'prefix_concat'(prefix, tail)
+.end
+
+.sub 'prefix_subrule' :method
+    .param string prefix
+    .param pmc tail
+
+    .local pmc name, negate, subtype
+    name = self.'name'()
+    negate = self.'negate'()
+    subtype = self.'subtype'()
+    $I0 = does name, 'string'
+    unless $I0 goto subrule_none
+    if negate goto subrule_none
+    if subtype == 'zerowidth' goto subrule_none
+
+    .local pmc selfpast, spast
+    $P99 = get_hll_global ['PAST'], 'Var'
+    selfpast = $P99.'new'( 'name'=>'self', 'scope'=>'register')
+    $P99 = get_hll_global ['PAST'], 'Op'
+    spast = $P99.'new'( selfpast, name, prefix, 'name'=>'!PREFIX__!subrule', 'pasttype'=>'callmethod')
+    .return (spast)
+
+  subrule_none:
+    .return (prefix)
+.end
+
+=back
+
+
+=head1 AUTHOR
+
+Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
+Please send patches and suggestions to the Parrot porters or
+Perl 6 compilers mailing lists.
+
+=head1 COPYRIGHT
+
+Copyright (C) 2009, Patrick R. Michaud.
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+### .include 'src/PAST/Compiler-Regex.pir'
+# $Id$
+
+=head1 NAME
+
+PAST::Compiler-Regex - Compiler for PAST::Regex nodes
+
+=head1 DESCRIPTION
+
+PAST::Compiler-Regex implements the transformations to convert
+PAST::Regex nodes into POST.  It's still a part of PAST::Compiler;
+we've separated out the regex-specific transformations here for
+better code management and debugging.
+
+=head2 Compiler methods
+
+=head3 C<PAST::Regex>
+
+=over 4
+
+=item as_post(PAST::Regex node)
+
+Return the POST representation of the regex AST rooted by C<node>.
+
+=cut
+
+.include 'cclass.pasm'
+### .include 'src/Regex/constants.pir'
+.const int CURSOR_FAIL = -1
+.const int CURSOR_FAIL_GROUP = -2
+.const int CURSOR_FAIL_RULE = -3
+.const int CURSOR_FAIL_MATCH = -4
+
+.const int CURSOR_TYPE_SCAN = 1
+.const int CURSOR_TYPE_PEEK = 2
+
+.namespace ['PAST';'Compiler']
+
+.sub 'as_post' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+    .param pmc options         :slurpy :named
+
+    .local pmc ops
+    ops = self.'post_new'('Ops', 'node'=>node)
+
+    .local pmc reghash
+    reghash = new ['Hash']
+    .lex '$*REG', reghash
+
+    .local pmc regexname, regexname_esc
+    $P0 = get_global '@?BLOCK'
+    $P1 = $P0[0]
+    $S0 = $P1.'name'()
+    regexname = box $S0
+    regexname_esc = self.'escape'($S0)
+    .lex '$*REGEXNAME', regexname
+
+    .local string prefix, rname, rtype
+    prefix = self.'unique'('rx')
+    concat prefix, '_'
+    $P0 = split ' ', 'tgt string pos int off int eos int rep int cur pmc'
+    $P1 = iter $P0
+  iter_loop:
+    unless $P1 goto iter_done
+    rname = shift $P1
+    rtype = shift $P1
+    $S1 = concat prefix, rname
+    reghash[rname] = $S1
+    $S2 = concat '.local ', rtype
+    ops.'push_pirop'($S2, $S1)
+    goto iter_loop
+  iter_done:
+
+    .local pmc startlabel, donelabel, faillabel
+    $S0 = concat prefix, 'start'
+    startlabel = self.'post_new'('Label', 'result'=>$S0)
+    $S0 = concat prefix, 'done'
+    donelabel = self.'post_new'('Label', 'result'=>$S0)
+    $S0 = concat prefix, 'fail'
+    faillabel = self.'post_new'('Label', 'result'=>$S0)
+    reghash['fail'] = faillabel
+
+    # If capnames is available, it's a hash where each key is the
+    # name of a potential subcapture and the value is greater than 1
+    # if it's to be an array.  This builds a list of arrayed subcaptures
+    # for use by "!cursor_caparray" below.
+    .local pmc capnames, capnames_it, caparray
+    capnames = node.'capnames'()
+    caparray = box 0
+    unless capnames goto capnames_done
+    capnames_it = iter capnames
+    caparray = new ['ResizablePMCArray']
+  capnames_loop:
+    unless capnames_it goto capnames_done
+    $S0 = shift capnames_it
+    $I0 = capnames[$S0]
+    unless $I0 > 1 goto capnames_loop
+    $S0 = self.'escape'($S0)
+    push caparray, $S0
+    goto capnames_loop
+  capnames_done:
+
+    .local string cur, rep, pos, tgt, off, eos
+    (cur, rep, pos, tgt, off, eos) = self.'!rxregs'('cur rep pos tgt off eos')
+
+    unless regexname goto peek_done
+    .local pmc tpast, token, tpost
+    $P99 = get_hll_global ['PAST'], 'Op'
+    tpast = $P99.'new'( 'pasttype'=>'list', 'node'=>node )
+    (token :slurpy) = node.'prefix'('')
+  token_loop:
+    unless token goto token_done
+    $P0 = shift token
+    push tpast, $P0
+    goto token_loop
+  token_done:
+    $S0 = regexname
+    $S0 = concat '!PREFIX__', $S0
+    $P99 = get_hll_global ['PAST'], 'Block'
+    tpast = $P99.'new'(tpast, 'name'=>$S0, 'lexical'=>0, 'blocktype'=>'method')
+    tpost = self.'as_post'(tpast, 'rtype'=>'v')
+    ops.'push'(tpost)
+  peek_done:
+
+    $S0 = concat '(', cur
+    concat $S0, ', '
+    concat $S0, pos
+    concat $S0, ', '
+    concat $S0, tgt
+    concat $S0, ', $I10)'
+    ops.'push_pirop'('callmethod', '"!cursor_start"', 'self', 'result'=>$S0)
+    self.'!cursorop'(ops, '!cursor_debug', 0, '"START "', regexname_esc)
+    unless caparray goto caparray_skip
+    self.'!cursorop'(ops, '!cursor_caparray', 0, caparray :flat)
+  caparray_skip:
+
+    ops.'push_pirop'('.lex', 'unicode:"$\x{a2}"', cur)
+    ops.'push_pirop'('.local pmc', 'match')
+    ops.'push_pirop'('.lex', '"$/"', 'match')
+    ops.'push_pirop'('length', eos, tgt, 'result'=>eos)
+
+    # On Parrot, indexing into variable-width encoded strings
+    # (such as utf8) becomes much more expensive as we move
+    # farther away from the beginning of the string (via calls
+    # to utf8_skip_forward).  For regexes that are starting a match
+    # at a position other than the beginning of the string (e.g.,
+    # a subrule call), we can save a lot of useless scanning work
+    # in utf8_skip_forward by removing the first C<off = from-1>
+    # characters from the target and then performing all indexed
+    # operations on the resulting target relative to C<off>.
+
+    ops.'push_pirop'('set', off, 0)
+    ops.'push_pirop'('lt', '$I10', 2, startlabel)
+    ops.'push_pirop'('sub', off, '$I10', 1, 'result'=>off)
+    ops.'push_pirop'('substr', tgt, tgt, off, 'result'=>tgt)
+    ops.'push'(startlabel)
+
+    $P0 = self.'post_regex'(node)
+    ops.'push'($P0)
+    ops.'push'(faillabel)
+    self.'!cursorop'(ops, '!mark_fail', 4, rep, pos, '$I10', '$P10', 0)
+    ops.'push_pirop'('lt', pos, CURSOR_FAIL, donelabel)
+    ops.'push_pirop'('eq', pos, CURSOR_FAIL, faillabel)
+    ops.'push_pirop'('jump', '$I10')
+    ops.'push'(donelabel)
+    self.'!cursorop'(ops, '!cursor_fail', 0)
+    self.'!cursorop'(ops, '!cursor_debug', 0, '"FAIL  "', regexname_esc)
+    ops.'push_pirop'('return', cur)
+    .return (ops)
+.end
+
+=item !cursorop(ops, func, retelems, arg :slurpy)
+
+Helper function to push POST nodes onto C<ops> that perform C<func>
+on the regex's current cursor.  By default this ends up being a method
+call on the cursor, but some values of C<func> can result in inlined
+code to perform the equivalent operation without using the method call.
+
+The C<retelems> argument is the number of elements in C<arg> that
+represent return values from the function; any remaining elements in arg
+are passed to the function as input arguments.
+
+=cut
+
+.sub '!cursorop' :method
+    .param pmc ops
+    .param string func
+    .param int retelems
+    .param pmc args            :slurpy
+
+    if retelems < 1 goto result_done
+    .local pmc retargs
+    retargs = new ['ResizableStringArray']
+    $I0 = retelems
+  retargs_loop:
+    unless $I0 > 0 goto retargs_done
+    $S0 = shift args
+    push retargs, $S0
+    dec $I0
+    goto retargs_loop
+  retargs_done:
+    .local string result
+    result = join ', ', retargs
+    result = concat '(', result
+    concat result, ')'
+  result_done:
+
+    .local pmc cur
+    cur = self.'!rxregs'('cur')
+    $S0 = self.'escape'(func)
+    $P0 = ops.'push_pirop'('callmethod', $S0, cur, args :flat)
+    if retelems < 1 goto done
+    $P0.'result'(result)
+  done:
+    .return (ops)
+.end
+
+
+=item !rxregs(keystr)
+
+Helper function -- looks up the current regex register table
+in the dynamic scope and returns a slice based on the keys
+given in C<keystr>.
+
+=cut
+
+.sub '!rxregs' :method
+    .param string keystr
+
+    .local pmc keys, reghash, vals
+    keys = split ' ', keystr
+    reghash = find_dynamic_lex '$*REG'
+    vals = new ['ResizablePMCArray']
+  keys_loop:
+    unless keys goto keys_done
+    $S0 = shift keys
+    $P0 = reghash[$S0]
+    push vals, $P0
+    goto keys_loop
+  keys_done:
+    .return (vals :flat)
+.end
+
+
+=item post_regex(PAST::Regex node)
+
+Return the POST representation of the regex component given by C<node>.
+Normally this is handled by redispatching to a method corresponding to
+the node's "pasttype" and "backtrack" attributes.  If no "pasttype" is
+given, then "concat" is assumed.
+
+=cut
+
+.sub 'post_regex' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+    .param string cur          :optional
+    .param int have_cur        :opt_flag
+
+    .local string pasttype
+    pasttype = node.'pasttype'()
+    if pasttype goto have_pasttype
+    pasttype = 'concat'
+  have_pasttype:
+    $P0 = find_method self, pasttype
+    $P1 = self.$P0(node)
+    unless have_cur goto done
+    $S0 = $P1.'result'()
+    if $S0 == cur goto done
+    $P1 = self.'coerce'($P1, cur)
+  done:
+    .return ($P1)
+.end
+
+
+.sub 'post_regex' :method :multi(_, _)
+    .param pmc node
+    .param string cur          :optional
+    .param int have_cur        :opt_flag
+
+    $P0 = self.'as_post'(node)
+    unless have_cur goto done
+    $P0 = self.'coerce'($P0, cur)
+  done:
+    .return ($P0)
+.end
+
+
+=item alt(PAST::Regex node)
+
+=cut
+
+.sub 'alt' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, pos
+    (cur, pos) = self.'!rxregs'('cur pos')
+
+    .local string name
+    name = self.'unique'('alt')
+    concat name, '_'
+
+    .local pmc ops, iter
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+    iter = node.'iterator'()
+    unless iter goto done
+
+    .local int acount
+    .local pmc alabel, endlabel
+    acount = 0
+    $S0 = acount
+    $S0 = concat name, $S0
+    alabel = self.'post_new'('Label', 'result'=>$S0)
+    $S0 = concat name, 'end'
+    endlabel = self.'post_new'('Label', 'result'=>$S0)
+
+  iter_loop:
+    ops.'push'(alabel)
+    .local pmc apast, apost
+    apast = shift iter
+    apost = self.'post_regex'(apast, cur)
+    unless iter goto iter_done
+    inc acount
+    $S0 = acount
+    $S0 = concat name, $S0
+    alabel = self.'post_new'('Label', 'result'=>$S0)
+    ops.'push_pirop'('set_addr', '$I10', alabel)
+    self.'!cursorop'(ops, '!mark_push', 0, 0, pos, '$I10')
+    ops.'push'(apost)
+    ops.'push_pirop'('goto', endlabel)
+    goto iter_loop
+  iter_done:
+    ops.'push'(apost)
+    ops.'push'(endlabel)
+  done:
+    .return (ops)
+.end
+
+
+=item alt_longest(PAST::Regex node)
+
+Same as 'alt' above, but use declarative/LTM semantics.
+(Currently we cheat and just use 'alt' above.)
+
+=cut
+
+.sub 'alt_longest' :method
+    .param pmc node
+    .tailcall self.'alt'(node)
+.end
+
+
+=item anchor(PAST::Regex node)
+
+Match various anchor points, including ^, ^^, $, $$.
+
+=cut
+
+.sub 'anchor' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, tgt, pos, off, eos, fail, ops
+    (cur, tgt, pos, off, eos, fail) = self.'!rxregs'('cur tgt pos off eos fail')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    .local string subtype
+    subtype = node.'subtype'()
+
+    ops.'push_pirop'('inline', subtype, 'inline'=>'  # rxanchor %0')
+
+    if subtype == 'null' goto done
+    if subtype == 'fail' goto anchor_fail
+    if subtype == 'bos' goto anchor_bos
+    if subtype == 'eos' goto anchor_eos
+    if subtype == 'lwb' goto anchor_lwb
+    if subtype == 'rwb' goto anchor_rwb
+
+    .local pmc donelabel
+    $S0 = self.'unique'('rxanchor')
+    concat $S0, '_done'
+    donelabel = self.'post_new'('Label', 'result'=>$S0)
+
+    if subtype == 'bol' goto anchor_bol
+    if subtype == 'eol' goto anchor_eol
+
+    self.'panic'('Unrecognized subtype "', subtype, '" in PAST::Regex anchor node')
+
+  anchor_fail:
+    ops.'push_pirop'('goto', fail)
+    goto done
+
+  anchor_bos:
+    ops.'push_pirop'('ne', pos, 0, fail)
+    goto done
+
+  anchor_eos:
+    ops.'push_pirop'('ne', pos, eos, fail)
+    goto done
+
+  anchor_bol:
+    ops.'push_pirop'('eq', pos, 0, donelabel)
+    ops.'push_pirop'('ge', pos, eos, fail)
+    ops.'push_pirop'('sub', '$I10', pos, off)
+    ops.'push_pirop'('dec', '$I10')
+    ops.'push_pirop'('is_cclass', '$I11', .CCLASS_NEWLINE, tgt, '$I10')
+    ops.'push_pirop'('unless', '$I11', fail)
+    ops.'push'(donelabel)
+    goto done
+
+  anchor_eol:
+    ops.'push_pirop'('sub', '$I10', pos, off)
+    ops.'push_pirop'('is_cclass', '$I11', .CCLASS_NEWLINE, tgt, '$I10')
+    ops.'push_pirop'('if', '$I11', donelabel)
+    ops.'push_pirop'('ne', pos, eos, fail)
+    ops.'push_pirop'('eq', pos, 0, donelabel)
+    ops.'push_pirop'('dec', '$I10')
+    ops.'push_pirop'('is_cclass', '$I11', .CCLASS_NEWLINE, tgt, '$I10')
+    ops.'push_pirop'('if', '$I11', fail)
+    ops.'push'(donelabel)
+    goto done
+
+  anchor_lwb:
+    ops.'push_pirop'('ge', pos, eos, fail)
+    ops.'push_pirop'('sub', '$I10', pos, off)
+    ops.'push_pirop'('is_cclass', '$I11', .CCLASS_WORD, tgt, '$I10')
+    ops.'push_pirop'('unless', '$I11', fail)
+    ops.'push_pirop'('dec', '$I10')
+    ops.'push_pirop'('is_cclass', '$I11', .CCLASS_WORD, tgt, '$I10')
+    ops.'push_pirop'('if', '$I11', fail)
+    goto done
+
+  anchor_rwb:
+    ops.'push_pirop'('le', pos, 0, fail)
+    ops.'push_pirop'('sub', '$I10', pos, off)
+    ops.'push_pirop'('is_cclass', '$I11', .CCLASS_WORD, tgt, '$I10')
+    ops.'push_pirop'('if', '$I11', fail)
+    ops.'push_pirop'('dec', '$I10')
+    ops.'push_pirop'('is_cclass', '$I11', .CCLASS_WORD, tgt, '$I10')
+    ops.'push_pirop'('unless', '$I11', fail)
+    goto done
+
+  done:
+    .return (ops)
+.end
+
+
+=item charclass(PAST::Regex node)
+
+Match something in a character class, such as \w, \d, \s, dot, etc.
+
+=cut
+
+.sub 'charclass' :method
+    .param pmc node
+
+    .local string subtype
+    .local int cclass, negate
+    (subtype, cclass, negate) = self.'!charclass_init'(node)
+
+    .local pmc cur, tgt, pos, off, eos, fail, ops
+    (cur, tgt, pos, off, eos, fail) = self.'!rxregs'('cur tgt pos off eos fail')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    ops.'push_pirop'('inline', subtype, 'inline'=>'  # rx charclass %0')
+    ops.'push_pirop'('ge', pos, eos, fail)
+    if cclass == .CCLASS_ANY goto charclass_done
+
+    .local pmc cctest
+    cctest = self.'??!!'(negate, 'if', 'unless')
+
+    ops.'push_pirop'('sub', '$I10', pos, off)
+    ops.'push_pirop'('is_cclass', '$I11', cclass, tgt, '$I10')
+    ops.'push_pirop'(cctest, '$I11', fail)
+    unless subtype == 'nl' goto charclass_done
+    # handle logical newline here
+    ops.'push_pirop'('substr', '$S10', tgt, '$I10', 2)
+    ops.'push_pirop'('iseq', '$I11', '$S10', '"\r\n"')
+    ops.'push_pirop'('add', pos, '$I11')
+
+  charclass_done:
+    ops.'push_pirop'('inc', pos)
+
+    .return (ops)
+.end
+
+
+=item !charclass_init(PAST::Regex node)
+
+Return the subtype, cclass value, and negation for a
+charclass C<node>.
+
+=cut
+
+.sub '!charclass_init' :method
+    .param pmc node
+
+    .local string subtype
+    .local int negate
+    subtype = node.'subtype'()
+    $S0 = downcase subtype
+    negate = isne subtype, $S0
+
+    $I0 = node.'negate'()
+    negate = xor negate, $I0
+
+    if $S0 == '.' goto cclass_dot
+    if $S0 == 'd' goto cclass_digit
+    if $S0 == 's' goto cclass_space
+    if $S0 == 'w' goto cclass_word
+    if $S0 == 'n' goto cclass_newline
+    if $S0 == 'nl' goto cclass_newline
+    self.'panic'('Unrecognized subtype "', subtype, '" in PAST::Regex charclass node')
+  cclass_dot:
+    .local int cclass
+    cclass = .CCLASS_ANY
+    goto cclass_done
+  cclass_digit:
+    cclass = .CCLASS_NUMERIC
+    goto cclass_done
+  cclass_space:
+    cclass = .CCLASS_WHITESPACE
+    goto cclass_done
+  cclass_word:
+    cclass = .CCLASS_WORD
+    goto cclass_done
+  cclass_newline:
+    cclass = .CCLASS_NEWLINE
+  cclass_done:
+    .return (subtype, cclass, negate)
+.end
+
+
+=item charclass_q(PAST::Regex node)
+
+Optimize certain quantified character class shortcuts, if it
+makes sense to do so.  If not, return a null PMC and the
+standard quantifier code will handle it.
+
+=cut
+
+.sub 'charclass_q' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+    .param string backtrack
+    .param int min
+    .param int max
+
+    if backtrack != 'r' goto pessimistic
+
+    .local string subtype
+    .local int cclass, negate
+    (subtype, cclass, negate) = self.'!charclass_init'(node)
+
+    # positive logical newline matching is special, don't try to optimize it
+    if negate goto nl_done
+    if subtype == 'nl' goto pessimistic
+  nl_done:
+
+    .local pmc findop
+    findop = self.'??!!'(negate, 'find_cclass', 'find_not_cclass')
+
+  quant_r:
+    .local pmc cur, tgt, pos, off, eos, fail, ops
+    (cur, tgt, pos, off, eos, fail) = self.'!rxregs'('cur tgt pos off eos fail')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    ops.'push_pirop'('inline', subtype, backtrack, min, max, 'inline'=>'  # rx charclass_q %0 %1 %2..%3')
+    ops.'push_pirop'('sub', '$I10', pos, off)
+    ops.'push_pirop'(findop, '$I11', cclass, tgt, '$I10', eos)
+    unless min > 0 goto min_done
+    ops.'push_pirop'('add', '$I12', '$I10', min)
+    ops.'push_pirop'('lt', '$I11', '$I12', fail)
+  min_done:
+    unless max > 0 goto max_done
+    .local pmc maxlabel
+    maxlabel = self.'post_new'('Label', 'name'=>'rx_charclass_')
+    ops.'push_pirop'('add', '$I12', '$I10', max)
+    ops.'push_pirop'('le', '$I11', '$I12', maxlabel)
+    ops.'push_pirop'('set', '$I11', '$I12')
+    ops.'push'(maxlabel)
+  max_done:
+    ops.'push_pirop'('add', pos, off, '$I11')
+    .return (ops)
+
+  pessimistic:
+    null ops
+    .return (ops)
+.end
+
+
+=item concat(PAST::Regex node)
+
+Handle a concatenation of regexes.
+
+=cut
+
+.sub 'concat' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, ops, iter
+    (cur) = self.'!rxregs'('cur')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+    iter = node.'iterator'()
+
+  iter_loop:
+    unless iter goto iter_done
+    .local pmc cpast, cpost
+    cpast = shift iter
+    cpost = self.'post_regex'(cpast, cur)
+    ops.'push'(cpost)
+    goto iter_loop
+  iter_done:
+
+    .return (ops)
+.end
+
+
+=item cut(PAST::Regex node)
+
+Generate POST for the cut-group and cut-rule operators.
+
+=cut
+
+.sub 'cut' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, fail, ops
+    (cur, fail) = self.'!rxregs'('cur fail')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+    ops.'push_pirop'('set_addr', '$I10', fail)
+    self.'!cursorop'(ops, '!mark_commit', 0, '$I10')
+    .return (ops)
+.end
+
+
+=item enumcharlist(PAST::Regex node)
+
+Generate POST for matching a character from an enumerated
+character list.
+
+=cut
+
+.sub 'enumcharlist' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, tgt, pos, off, eos, fail, ops
+    (cur, tgt, pos, off, eos, fail) = self.'!rxregs'('cur tgt pos off eos fail')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    .local string charlist
+    charlist = node[0]
+    charlist = self.'escape'(charlist)
+    .local pmc  negate, testop
+    negate = node.'negate'()
+    testop = self.'??!!'(negate, 'ge', 'lt')
+    .local string subtype
+    .local int zerowidth
+    subtype = node.'subtype'()
+    zerowidth = iseq subtype, 'zerowidth'
+
+    ops.'push_pirop'('inline', negate, subtype, 'inline'=>'  # rx enumcharlist negate=%0 %1')
+
+    ops.'push_pirop'('ge', pos, eos, fail)
+    ops.'push_pirop'('sub', '$I10', pos, off)
+    ops.'push_pirop'('substr', '$S10', tgt, '$I10', 1)
+    ops.'push_pirop'('index', '$I11', charlist, '$S10')
+    ops.'push_pirop'(testop, '$I11', 0, fail)
+    if zerowidth goto skip_zero_2
+    ops.'push_pirop'('inc', pos)
+  skip_zero_2:
+    .return (ops)
+.end
+
+
+=item literal(PAST::Regex node)
+
+Generate POST for matching a literal string provided as the
+second child of this node.
+
+=cut
+
+.sub 'literal' :method :multi(_,['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, pos, eos, tgt, fail, off
+    (cur, pos, eos, tgt, fail, off) = self.'!rxregs'('cur pos eos tgt fail off')
+    .local pmc ops, cpast, cpost, lpast, lpost
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    .local string subtype
+    .local int ignorecase
+    subtype = node.'subtype'()
+    ignorecase = iseq subtype, 'ignorecase'
+
+    # literal to be matched is our first child
+    .local int litconst
+    lpast = node[0]
+    litconst = isa lpast, ['String']
+    unless litconst goto lpast_done
+    unless ignorecase goto lpast_done
+    $S0 = lpast
+    $S0 = downcase $S0
+    lpast = box $S0
+  lpast_done:
+    lpost = self.'as_post'(lpast, 'rtype'=>'~')
+
+    $S0 = lpost.'result'()
+    ops.'push_pirop'('inline', subtype, $S0, 'inline'=>'  # rx literal %0 %1')
+    ops.'push'(lpost)
+
+    # compute constant literal length at compile time
+    .local string litlen
+    $I0 = isa lpast, ['String']
+    if $I0 goto literal_string
+    litlen = '$I10'
+    ops.'push_pirop'('length', '$I10', lpost)
+    goto have_litlen
+  literal_string:
+    $S0 = lpast
+    $I0 = length $S0
+    litlen = $I0
+    if $I0 > 0 goto have_litlen
+    .return (cpost)
+  have_litlen:
+
+    # fail if there aren't enough characters left in string
+    ops.'push_pirop'('add', '$I11', pos, litlen)
+    ops.'push_pirop'('gt', '$I11', eos, fail)
+
+    # compute string to be matched and fail if mismatch
+    ops.'push_pirop'('sub', '$I11', pos, off)
+    ops.'push_pirop'('substr', '$S10', tgt, '$I11', litlen)
+    unless ignorecase goto literal_test
+    ops.'push_pirop'('downcase', '$S10', '$S10')
+  literal_test:
+    ops.'push_pirop'('ne', '$S10', lpost, fail)
+
+    # increase position by literal length and move on
+    ops.'push_pirop'('add', pos, litlen)
+    .return (ops)
+.end
+
+
+=item 'pastnode'(PAST::Regex node)
+
+=cut
+
+.sub 'pastnode' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+    .local pmc cur, pos, fail, ops
+    (cur, pos, fail) = self.'!rxregs'('cur pos fail')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    .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
+    negate = node.'negate'()
+    testop = self.'??!!'(negate, 'if', 'unless')
+    ops.'push_pirop'(testop, cpost, fail)
+  done:
+    .return (ops)
+.end
+
+
+=item pass(PAST::Regex node)
+
+=cut
+
+.sub 'pass' :method :multi(_,['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, pos, ops
+    (cur, pos) = self.'!rxregs'('cur pos')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    .local string regexname
+    $P0 = find_dynamic_lex '$*REGEXNAME'
+    regexname = self.'escape'($P0)
+
+    ops.'push_pirop'('inline', 'inline'=>'  # rx pass')
+    self.'!cursorop'(ops, '!cursor_pass', 0, pos, regexname)
+    self.'!cursorop'(ops, '!cursor_debug', 0, '"PASS  "', regexname, '" at pos="', pos)
+    ops.'push_pirop'('return', cur)
+    .return (ops)
+.end
+
+
+=item reduce
+
+=cut
+
+.sub 'reduce' :method :multi(_,['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, pos, ops
+    (cur, pos) = self.'!rxregs'('cur pos')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    .local pmc cpost, posargs, namedargs
+    (cpost, posargs, namedargs) = self.'post_children'(node, 'signature'=>'v:')
+
+    .local string regexname, key
+    $P0 = find_dynamic_lex '$*REGEXNAME'
+    regexname = self.'escape'($P0)
+    key = posargs[0]
+
+    ops.'push_pirop'('inline', regexname, key, 'inline'=>'  # rx reduce name=%0 key=%1')
+    ops.'push'(cpost)
+    self.'!cursorop'(ops, '!cursor_pos', 0, pos)
+    self.'!cursorop'(ops, '!reduce', 0, regexname, posargs :flat, namedargs :flat)
+    .return (ops)
+.end
+
+
+=item quant(PAST::Regex node)
+
+=cut
+
+.sub 'quant' :method :multi(_,['PAST';'Regex'])
+    .param pmc node
+
+    .local string backtrack
+    backtrack = node.'backtrack'()
+    if backtrack goto have_backtrack
+    backtrack = 'g'
+  have_backtrack:
+
+     .local int min, max
+     min = node.'min'()
+     $P0 = node.'max'()
+     max = $P0
+     $I0 = defined $P0
+     if $I0 goto have_max
+     max = -1                          # -1 represents Inf
+   have_max:
+
+   optimize:
+     $I0 = node.'list'()
+     if $I0 != 1 goto optimize_done
+     .local pmc cpast
+     cpast = node[0]
+     $S0 = cpast.'pasttype'()
+     $S0 = concat $S0, '_q'
+     $I0 = can self, $S0
+     unless $I0 goto optimize_done
+     $P0 = self.$S0(cpast, backtrack, min, max)
+     if null $P0 goto optimize_done
+     .return ($P0)
+  optimize_done:
+
+    .local pmc cur, pos, rep, fail
+    (cur, pos, rep, fail) = self.'!rxregs'('cur pos rep fail')
+
+    .local string qname
+    .local pmc ops, q1label, q2label, btreg, cpost
+    $S0 = concat 'rxquant', backtrack
+    qname = self.'unique'($S0)
+    ops = self.'post_new'('Ops', 'node'=>node)
+    $S0 = concat qname, '_loop'
+    q1label = self.'post_new'('Label', 'result'=>$S0)
+    $S0 = concat qname, '_done'
+    q2label = self.'post_new'('Label', 'result'=>$S0)
+    cpost = self.'concat'(node)
+
+    .local pmc seppast, seppost
+    null seppost
+    seppast = node.'sep'()
+    unless seppast goto have_seppost
+    seppost = self.'post_regex'(seppast)
+  have_seppost:
+
+    $S0 = max
+    .local int needrep
+    $I0 = isgt min, 1
+    $I1 = isgt max, 1
+    needrep = or $I0, $I1
+
+    unless max < 0 goto have_s0
+    $S0 = '*'
+  have_s0:
+    ops.'push_pirop'('inline', qname, min, $S0, 'inline'=>'  # rx %0 ** %1..%2')
+
+  if backtrack == 'f' goto frugal
+
+  greedy:
+    btreg = self.'uniquereg'('I')
+    ops.'push_pirop'('set_addr', btreg, q2label)
+    .local int needmark
+    .local string peekcut
+    needmark = needrep
+    peekcut = '!mark_peek'
+    if backtrack != 'r' goto greedy_1
+    needmark = 1
+    peekcut = '!mark_commit'
+  greedy_1:
+    if min == 0 goto greedy_2
+    unless needmark goto greedy_loop
+    self.'!cursorop'(ops, '!mark_push', 0, 0, CURSOR_FAIL, btreg)
+    goto greedy_loop
+  greedy_2:
+    self.'!cursorop'(ops, '!mark_push', 0, 0, pos, btreg)
+  greedy_loop:
+    ops.'push'(q1label)
+    ops.'push'(cpost)
+    unless needmark goto greedy_3
+    self.'!cursorop'(ops, peekcut, 1, rep, btreg)
+    unless needrep goto greedy_3
+    ops.'push_pirop'('inc', rep)
+  greedy_3:
+    unless max > 1 goto greedy_4
+    ops.'push_pirop'('ge', rep, max, q2label)
+  greedy_4:
+    unless max != 1 goto greedy_5
+    self.'!cursorop'(ops, '!mark_push', 0, rep, pos, btreg)
+    if null seppost goto greedy_4a
+    ops.'push'(seppost)
+  greedy_4a:
+    ops.'push_pirop'('goto', q1label)
+  greedy_5:
+    ops.'push'(q2label)
+    unless min > 1 goto greedy_6
+    ops.'push_pirop'('lt', rep, min, fail)
+  greedy_6:
+    .return (ops)
+
+  frugal:
+    .local pmc ireg
+    ireg = self.'uniquereg'('I')
+    if min == 0 goto frugal_1
+    unless needrep goto frugal_0
+    ops.'push_pirop'('set', rep, 0)
+  frugal_0:
+    if null seppost goto frugal_2
+    .local pmc seplabel
+    $S0 = concat qname, '_sep'
+    seplabel = self.'post_new'('Label', 'result'=>$S0)
+    ops.'push_pirop'('goto', seplabel)
+    goto frugal_2
+  frugal_1:
+    ops.'push_pirop'('set_addr', '$I10', q1label)
+    self.'!cursorop'(ops, '!mark_push', 0, 0, pos, '$I10')
+    ops.'push_pirop'('goto', q2label)
+  frugal_2:
+    ops.'push'(q1label)
+    if null seppost goto frugal_2a
+    ops.'push'(seppost)
+    ops.'push'(seplabel)
+  frugal_2a:
+    unless needrep goto frugal_3
+    ops.'push_pirop'('set', ireg, rep)
+  frugal_3:
+    ops.'push'(cpost)
+    unless needrep goto frugal_4
+    ops.'push_pirop'('add', rep, ireg, 1)
+  frugal_4:
+    unless min > 1 goto frugal_5
+    ops.'push_pirop'('lt', rep, min, q1label)
+  frugal_5:
+    unless max > 1 goto frugal_6
+    ops.'push_pirop'('ge', rep, max, q2label)
+  frugal_6:
+    unless max != 1 goto frugal_7
+    ops.'push_pirop'('set_addr', '$I10', q1label)
+    self.'!cursorop'(ops, '!mark_push', 0, ireg, pos, '$I10')
+  frugal_7:
+    ops.'push'(q2label)
+    .return (ops)
+.end
+
+
+=item scan(POST::Regex)
+
+Code for initial regex scan.
+
+=cut
+
+.sub 'scan' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, pos, eos, ops
+    (cur, pos, eos) = self.'!rxregs'('cur pos eos')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+    .local pmc looplabel, donelabel
+    $S0 = self.'unique'('rxscan')
+    $S1 = concat $S0, '_loop'
+    looplabel = self.'post_new'('Label', 'result'=>$S1)
+    $S1 = concat $S0, '_done'
+    donelabel = self.'post_new'('Label', 'result'=>$S1)
+
+    ops.'push_pirop'('ge', pos, 0, donelabel)
+    ops.'push'(looplabel)
+    self.'!cursorop'(ops, 'from', 1, '$P10')
+    ops.'push_pirop'('inc', '$P10')
+    ops.'push_pirop'('set', pos, '$P10')
+    ops.'push_pirop'('ge', pos, eos, donelabel)
+    ops.'push_pirop'('set_addr', '$I10', looplabel)
+    self.'!cursorop'(ops, '!mark_push', 0, 0, pos, '$I10')
+    ops.'push'(donelabel)
+    .return (ops)
+.end
+
+
+=item subcapture(PAST::Regex node)
+
+Perform a subcapture (capture of a portion of a regex).
+
+=cut
+
+.sub 'subcapture' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, pos, tgt, fail
+    (cur, pos, tgt, fail) = self.'!rxregs'('cur pos tgt fail')
+    .local pmc ops, cpast, cpost
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+    cpast = node[0]
+    cpost = self.'post_regex'(cpast)
+
+    .local pmc name
+    $P0 = node.'name'()
+    name = self.'as_post'($P0, 'rtype'=>'*')
+
+    .local string rxname
+    rxname = self.'unique'('rxcap_')
+
+    .local pmc caplabel, donelabel
+    $S0 = concat rxname, '_fail'
+    caplabel = self.'post_new'('Label', 'result'=>$S0)
+    $S0 = concat rxname, '_done'
+    donelabel = self.'post_new'('Label', 'result'=>$S0)
+
+    ops.'push_pirop'('inline', name, 'inline'=>'  # rx subcapture %0')
+    ops.'push_pirop'('set_addr', '$I10', caplabel)
+    self.'!cursorop'(ops, '!mark_push', 0, 0, pos, '$I10')
+    ops.'push'(cpost)
+    ops.'push_pirop'('set_addr', '$I10', caplabel)
+    self.'!cursorop'(ops, '!mark_peek', 2, '$I12', '$I11', '$I10')
+    self.'!cursorop'(ops, '!cursor_pos', 0, '$I11')
+    self.'!cursorop'(ops, '!cursor_start', 1, '$P10')
+    ops.'push_pirop'('callmethod', '"!cursor_pass"', '$P10', pos, '""')
+    ops.'push'(name)
+    self.'!cursorop'(ops, '!mark_push', 0, 0, CURSOR_FAIL, 0, '$P10')
+    ops.'push_pirop'('callmethod', '"!cursor_names"', '$P10', name)
+    ops.'push_pirop'('goto', donelabel)
+    ops.'push'(caplabel)
+    ops.'push_pirop'('goto', fail)
+    ops.'push'(donelabel)
+    .return (ops)
+.end
+
+
+=item subrule(PAST::Regex node)
+
+Perform a subrule call.
+
+=cut
+
+.sub 'subrule' :method :multi(_, ['PAST';'Regex'])
+    .param pmc node
+
+    .local pmc cur, pos, fail, ops
+    (cur, pos, fail) = self.'!rxregs'('cur pos fail')
+    ops = self.'post_new'('Ops', 'node'=>node, 'result'=>cur)
+
+    .local pmc name
+    $P0 = node.'name'()
+    name = self.'as_post'($P0, 'rtype'=>'*')
+
+    .local pmc cpost, posargs, namedargs, subpost
+    (cpost, posargs, namedargs) = self.'post_children'(node, 'signature'=>'v:')
+    subpost = shift posargs
+
+    .local pmc negate
+    .local string testop
+    negate = node.'negate'()
+    testop = self.'??!!'(negate, 'if', 'unless')
+
+    .local pmc subtype
+    subtype = node.'subtype'()
+
+    ops.'push_pirop'('inline', subpost, subtype, negate, 'inline'=>"  # rx subrule %0 subtype=%1 negate=%2")
+
+    self.'!cursorop'(ops, '!cursor_pos', 0, pos)
+    ops.'push'(cpost)
+    ops.'push_pirop'('callmethod', subpost, cur, posargs :flat, namedargs :flat, 'result'=>'$P10')
+    ops.'push_pirop'(testop, '$P10', fail)
+    if subtype == 'zerowidth' goto done
+    if subtype == 'method' goto subrule_pos
+    self.'!cursorop'(ops, '!mark_push', 0, 0, CURSOR_FAIL, 0, '$P10')
+    ops.'push'(name)
+    ops.'push_pirop'('callmethod', '"!cursor_names"', '$P10', name)
+  subrule_pos:
+    ops.'push_pirop'('callmethod', '"pos"', '$P10', 'result'=>pos)
+  done:
+    .return (ops)
+.end
+
+
+=item post_new(type, args :slurpy, options :slurpy :named)
+
+Helper method to create a new POST node of C<type>.
+
+=cut
+
+.sub 'post_new' :method
+    .param string type
+    .param pmc args            :slurpy
+    .param pmc options         :slurpy :named
+
+    $P0 = get_hll_global ['POST'], type
+    .tailcall $P0.'new'(args :flat, options :flat :named)
+.end
+
+=item ??!!(test, trueval, falseval)
+
+Helper method to perform ternary operation -- returns C<trueval>
+if C<test> is true, C<falseval> otherwise.
+
+=cut
+
+.sub '??!!' :method
+    .param pmc test
+    .param pmc trueval
+    .param pmc falseval
+
+    if test goto true
+    .return (falseval)
+  true:
+    .return (trueval)
+.end
+
+
+=back
+
+=head1 AUTHOR
+
+Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
+
+=head1 COPYRIGHT
+
+Copyright (C) 2009, Patrick R. Michaud.
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+
+
+=head1 AUTHOR
+
+Patrick Michaud <pmichaud at pobox.com> is the author and maintainer.
+
+=head1 COPYRIGHT
+
+Copyright (C) 2009, Patrick R. Michaud
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: trunk/ext/nqp-rx/t/nqp/01-literals.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/01-literals.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,20 @@
+#! nqp
+
+# check literals
+
+say('1..8');
+
+print("ok ");
+print(1);
+print("\n");
+
+print('ok ');
+say(2);
+
+print("ok 3\n");
+say('ok 4');
+say("ok 5");
+say(q<ok 6>);
+say(q  <ok 7>);
+
+say("\x6f\x6b 8");

Added: trunk/ext/nqp-rx/t/nqp/02-if.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/02-if.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,19 @@
+#! nqp
+
+# check control structure 'if'
+
+say('1..4');
+
+if 1 { say("ok 1 # on one line"); }
+
+say("ok 2 # statements following if are okay");
+
+if 1 {
+    say("ok 3 # multi-line if");
+}
+
+if 0 {
+    print("not ");
+}
+
+say("ok 4 # multi-line if, false condition causes block not to execute");

Added: trunk/ext/nqp-rx/t/nqp/03-if-else.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/03-if-else.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,132 @@
+#! nqp
+
+# check control structure 'if ... else'
+
+say('1..14');
+
+if 1 { say("ok 1 # on one line with else"); } else { say("not ok 1 # on one line with else")}
+
+say("ok 2 # statements following if with else are okay");
+
+if 1 {
+    print("ok 3");
+}
+else {
+    print("not ok 3");
+}
+say(" # multi-line if with else");
+
+if 0 {
+    print("not ok 4");
+}
+else {
+    print("ok 4");
+}
+say(" # multi-line if, else branch");
+
+if 0 {
+}
+else {
+    print("ok 5");
+}
+say(" # empty if-block");
+
+if 0 {
+    print("not ok 6");
+}
+else {
+}
+print("ok 6");
+say(" # empty else-block");
+
+if 0 {
+}
+else {
+}
+print("ok 7");
+say(" # empty if- and else-block");
+
+if 0 {
+}
+elsif 0 {
+}
+elsif 0 {
+}
+else {
+}
+print("ok 8");
+say(" # empty if-, elsif-, and else-block");
+
+if 1 {
+    print("ok 9");
+}
+elsif 0 {
+    print("not ok 9 # elsif 1");
+}
+elsif 0 {
+    print("not ok 9 # elsif 2");
+}
+else {
+    print("not ok 9 # else");
+}
+say(" # if expr true in if/elsif/elsif/else");
+
+if 0 {
+    print("not ok 10 # if");
+}
+elsif 1 {
+    print("ok 10");
+}
+elsif 0 {
+    print("not ok 10 # elsif 2");
+}
+else {
+    print("not ok 10 # else");
+}
+say(" # first elsif expr true in if/elsif/elsif/else");
+
+if 0 {
+    print("not ok 11 # if");
+}
+elsif 0 {
+    print("not ok 11 # elsif 1");
+}
+elsif 1 {
+    print("ok 11");
+}
+else {
+    print("not ok 11 # else");
+}
+say(" # second elsif expr true in if/elsif/elsif/else");
+
+if 0 {
+    print("not ok 12 # if");
+}
+elsif 1 {
+    print("ok 12");
+}
+elsif 1 {
+    print("not ok 12 # elsif 2");
+}
+else {
+    print("not ok 12 # else");
+}
+say(" # first and second elsif expr true in if/elsif/elsif/else");
+
+if 0 {
+    print("not ok 13 # if");
+}
+elsif 0 {
+    print("not ok 13 # elsif 1");
+}
+elsif 0 {
+    print("not ok 13 # elsif 2");
+}
+else {
+    print("ok 13");
+}
+say(" # else expr true in if/elsif/elsif/else");
+
+if 0 { } elsif 0 { }
+print("ok 14");
+say(" # no else block in if/elsif")

Added: trunk/ext/nqp-rx/t/nqp/04-unless.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/04-unless.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,18 @@
+#! nqp
+
+# check control structure 'unless'
+
+say('1..4');
+
+unless 0 { say("ok 1 # on one line"); }
+
+say("ok 2 # statements following unless are okay");
+
+unless 0 {
+    say("ok 3 # multi-line unless");
+}
+
+unless 1 {
+    print("not ");
+}
+say("ok 4 # testing conditional");

Added: trunk/ext/nqp-rx/t/nqp/05-comments.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/05-comments.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,13 @@
+#! nqp
+
+# check comments
+
+say('1..2');
+
+#Comment preceding
+say("ok 1");
+
+say("ok 2"); #Comment following
+
+#say("not ok 3");
+#          say("not ok 4");

Added: trunk/ext/nqp-rx/t/nqp/06-args-pos.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/06-args-pos.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,9 @@
+#!./parrot nqp.pbc
+
+# positional arguments
+
+say('1..2');
+
+say("ok ", 1);
+
+print('o', 'k', ' ', 2, "\n");

Added: trunk/ext/nqp-rx/t/nqp/07-boolean.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/07-boolean.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,27 @@
+#!./parrot nqp.pbc
+
+# Testing boolean context operators, ! and ?
+
+plan(8);
+
+##Negation
+ok(!0,   'prefix negation on integer 0');
+ok(!"0", 'prefix negation on string 0');
+
+if !1 {
+    print("not");
+}
+ok(1, "negating integer 1");
+
+ok(!!1, 'double negation on 1');
+
+##Boolean context
+ok(?1,    'prefix negation on integer 1');
+ok(?"10", 'prefix negation on string 10');
+
+if ?0 {
+    print("not");
+}
+ok(1, "boolean integer 0");
+
+ok(!?!?1, 'spaghetti chaining');

Added: trunk/ext/nqp-rx/t/nqp/08-blocks.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/08-blocks.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,33 @@
+#! nqp
+
+# check blocks and statement enders
+
+say('1..7');
+
+{
+    say("ok 1 # blocks are okay");
+}
+
+{
+    print("ok ");
+    say("2 # last statement in a block does not need a semi-colon")
+}
+
+
+{
+    say("ok 3 # statements can precede blocks");
+    {
+        say("ok 4 # blocks can nest");
+    }
+    say("ok 5 # statements can follow blocks");
+}
+
+
+{ print("ok ") }; { say("6 # multiple blocks on one line need a semi-colon") }
+
+{
+    print("ok ")
+}; {
+    say("7 # blocks following an end brace must be separated by a semicolon")
+}
+

Added: trunk/ext/nqp-rx/t/nqp/09-var.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/09-var.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,76 @@
+#!./parrot nqp.pbc
+
+# check variables
+
+say('1..13');
+
+my $o1 := 'ok 1'; print($o1); say(" # direct binding and scoping");
+
+my $o2; $o2 := 'ok 2'; print($o2); say(" # first scope and declare, then bind");
+
+my $o3 := 'ok 3';
+my $p3 := $o3;
+print($p3); say(" # bind to another variable");
+
+my $o4 := 'ok 4';
+my $p4 := $o4;
+$o4 := 'not ok 4';
+print($p4); say(" # rebind the original, the bound one does not change");
+
+my $r1 := 'not ok 5';
+my $r2 := 'ok 5';
+my $r3;
+$r3 := $r1;
+$r3 := $r2;
+print($r3); say(' # variables can be rebound');
+
+my $b1 := 'ok 7';
+
+{
+    my $b1 := 'ok 6';
+    print($b1); say(' # my scoping works inside a block');
+}
+
+print($b1); say(' # block does not stomp on out scope');
+
+my $b2 := 'ok 8';
+
+{
+    print($b2); say(' # variables scoped outside of block persists inside the block');
+}
+
+my $b3;
+{
+    my $b4 := 'ok 9';
+    $b3 := $b4;
+}
+print($b3); say(' # variable is bound to the value, not the symbol in the block');
+
+my $b5 := '';
+{
+    my $b5 := 'not ';
+}
+print($b5);say('ok 10 # $b5, defined inside block, does not exist outside');
+
+{
+    our $m1 := 'ok 11 ';
+}
+
+our $m1;
+unless $m1 {
+    print('not ');
+}
+say('ok 11 # our variables have package scope, exists outside of block');
+
+our $m2;
+$m2 := 'ok 12';
+{
+    print($m2); say(' # our variables exist inside blocks');
+}
+
+our $m3;
+$m3 := 'not ok 13';
+{
+    $m3 := 'ok 13';
+}
+print($m3); say(' # our variables written inside block keep their values outside');

Added: trunk/ext/nqp-rx/t/nqp/10-cmp.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/10-cmp.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,98 @@
+#! nqp
+
+# check comparisons
+
+say('1..19');
+
+##Integers, positive and negative
+
+if 1 == 1 { say("ok 1 # numeric equality, integers"); }
+
+unless 1 == 2 {
+    say("ok 2 # numeric equality, integers, not equal");
+}
+
+if -3 == -3 { say("ok 3 # numeric equality, negative integers"); }
+
+if 1 != 2 { say("ok 4 # numeric inequality, integers"); }
+
+unless 1 != 1 {
+    say("ok 5 # numeric inequality, equal, integers");
+}
+
+unless -2 != -2 {
+    say("ok 6 # numeric inequality, equal, negative integers");
+}
+
+##Strings
+
+if "eq" eq "eq" { say("ok 7 # string equality"); }
+
+unless "one" eq "two" {
+    say("ok 8 # string equality, not equal");
+}
+
+if "ONE" ne "TWO" { say("ok 9 # string inequality"); }
+
+unless "STRING" ne "STRING" {
+    say("ok 10 # string inequality, equal");
+}
+
+##Coerce strings into integers
+
+if "11" ne ~11 {
+    print("not ");
+}
+say("ok 11 # coerce integer 11 into string eleven");
+
+if "-12" ne ~-12 {
+    print("not ");
+}
+say("ok 12 # coerce integer -12 into string twelve");
+
+##Coerce integers into strings
+
+if 13 ne +"13" {
+    print("not ");
+}
+say("ok 13 # coerce string 13 into an integer");
+
+if -14 ne +"-14" {
+    print("not ");
+}
+say("ok 14 # coerce string -14 into an integer");
+
+##Containers
+
+if (1,2) =:= (1,2) {
+    print("not ");
+}
+say("ok 15 # container equality, unnamed arrays");
+
+my @a := (1, 2);
+
+unless @a =:= @a {
+    print("not ");
+}
+say("ok 16 # container equality, self");
+
+my @b := @a;
+
+unless @a =:= @b {
+    print("not ");
+}
+say("ok 17 # container equality, named arrays");
+
+my $x := 'foo';
+my $y := $x;
+my $z := 'foo';
+
+unless $x =:= $y {
+    print("not ");
+}
+say("ok 18 # container equality, string binding");
+
+if $x =:= $z {
+    print("not ");
+}
+say("ok 19 # container equality, string value");

Added: trunk/ext/nqp-rx/t/nqp/11-sub.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/11-sub.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,76 @@
+#!./parrot nqp.pbc
+
+# check subs
+
+say('1..11');
+
+sub one ( ) {
+    say("ok 1 # sub def and call");
+}
+
+one();
+
+{
+    sub two ( ) {
+        say("ok 2 # sub def and call inside block");
+    }
+    two();
+}
+
+sub three ( ) { say("ok 3 # sub def; sub call on same line"); }; three();
+
+sub four_five ($arg1) {
+    say($arg1);
+}
+four_five('ok 4 # passed in 1 arg');
+
+{
+    four_five('ok 5 # calling sub in outer scope');
+}
+
+{
+    our sub six ( ) {
+        say("ok 6 # def in inner scope, called from outer scope");
+    }
+}
+six();
+
+sub seven () {
+    "ok 7 # return string literal from sub";
+}
+
+say(seven());
+
+sub eight () {
+    "ok 8 # bind sub return to variable";
+}
+
+my $retVal := eight();
+
+unless $retVal {
+    print("not ");
+}
+say($retVal);
+
+sub add_stomp ($first, $last) {
+    my $sum := $first + $last;
+    $first  := $last - $first;
+    $sum;
+}
+
+print("ok "); print(add_stomp(3,6)); say(" # returning the result of operating on arguments");
+
+my $five  := 5;
+my $seven := 7;
+
+add_stomp($five, $seven);
+
+if $five != 5 {
+    print("not ");
+}
+say("ok 10 # subroutines that operate on args do not affect the original arg outside the sub");
+
+sub eleven ($arg) {
+    say("ok 11 # parameter with a trailing comma");
+}
+eleven( 'dummy', );

Added: trunk/ext/nqp-rx/t/nqp/12-logical.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/12-logical.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,33 @@
+#! nqp
+
+# check '||', '&&', and '//'
+
+plan(7);
+
+my $or_no_branch := 1;
+$or_no_branch || ( $or_no_branch := 0 );
+ok($or_no_branch, "logical || shortcuts, branch not taken");
+
+my $or_branch := 0;
+0 || ( $or_branch := 1 );
+ok($or_branch, "logical || shortcuts, branch taken");
+
+my $and_no_branch := 0;
+$and_no_branch && ( $and_no_branch := 1 );
+ok(!$and_no_branch, "logical && shortcuts, branch not taken");
+
+my $and_branch := 0;
+1 && ( $and_branch := 1 );
+ok($and_branch, "logicl && shortcuts, branch taken");
+
+my $err_no_branch := 1;
+$err_no_branch // ( $err_no_branch := -1 );
+ok($err_no_branch == 1, "logical // shortcuts on true, branch not taken");
+
+$err_no_branch := 0;
+$err_no_branch // ( $err_no_branch := -1 );
+ok($err_no_branch == 0, "logical // shortcuts on defined false, branch not taken");
+
+my $err_branch;
+$err_branch // ( $err_branch := 1 );
+ok($err_branch == 1, "logical // takes branch on undef");

Added: trunk/ext/nqp-rx/t/nqp/13-op.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/13-op.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,48 @@
+#!./parrot nqp.pbc
+
+# checking basic operands and circumfix:( )
+
+plan(29);
+
+##Additive operators
+ok(      1+2  == 3, 'Checking addition 1+2');
+ok(     10-9  == 1, 'Checking subtraction 10-9');
+ok(   10-3+2  == 9, 'Checking compound statements 10-3+2');
+ok(  10-(3+2) == 5, 'Checking parenthesized statement 10-(3+2)');
+
+##Multiplicative operators
+ok(      6*7  == 42, 'Checking multiplication 6*7');
+ok(     36/6  ==  6, 'Checking division 36/6');
+ok(    4*3+5  == 17, 'Checking compound statements 4*3+5');
+ok(   4*(3+5) == 32, 'Checking parenthesized statements 4*(3+5)');
+ok(   12/4*3  ==  9, 'Checking compound statements 12/4*3');
+ok( 12/(4*3)  ==  1, 'Checking compound statements 12/(4*3)');
+ok(   5-3*2   == -1, 'Checking compound statements 5-3*2');
+
+##Modulo operator
+ok(      8%3  == 2, 'Checking modulo 8%3');
+ok(    8%3+2  == 4, 'Checking compound statement 8%3+2');
+ok(  8%(3+2)  == 3, 'Checking compound statement 8%(3+2)');
+
+##Concatenation operator
+ok( 'a' ~ 'b' eq 'ab', 'Checking concatenation "a" ~ "b"');
+ok(  1  ~ 'b' eq '1b', 'Checking concatenation  1  ~ "b"');
+ok( 'a' ~  2  eq 'a2', 'Checking concatenation "a" ~  2 ');
+
+##Postfix operators
+my $x := 0;
+ok( $x++ == 0 );
+ok( $x   == 1 );
+ok( $x-- == 1 );
+ok( $x   == 0 );
+
+##Relational operators
+ok( ?(1 <  2) );
+ok( !(2 <  1) );
+ok( ?(2 <= 2) );
+ok( !(3 <= 2) );
+ok( ?(2 >  1) );
+ok( !(2 >  3) );
+ok( ?(2 >= 1) );
+ok( !(2 >= 3) );
+

Added: trunk/ext/nqp-rx/t/nqp/14-while.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/14-while.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,89 @@
+#!./parrot nqp.pbc
+
+# while, until statements
+
+plan(12);
+
+my $a; my $sum;
+
+$a := 1; $sum := 0;
+while $a != 10 {
+    $sum := $sum + $a;
+    $a := $a + 1;
+}
+ok($sum == 45, 'basic while loop test');
+
+$a := 1; $sum := 0;
+until $a == 10 {
+    $sum := $sum + $a;
+    $a := $a + 1;
+}
+ok($sum == 45, 'basic until loop test');
+
+$a := 1; $sum := 0;
+while $a != 1 {
+    $sum := 99;
+    $a := 1;
+}
+ok($sum == 0, 'while loop exits initial false immediately');
+
+$a := 1; $sum := 0;
+until $a == 1 {
+    $sum := 99;
+    $a := 1;
+}
+ok($sum == 0, 'until loop exits initial true immediately');
+
+$a := 1; $sum := 0;
+repeat {
+    $sum := $sum + $a;
+    $a := $a + 1;
+} while $a != 10;
+ok($sum == 45, 'basic repeat_while loop');
+
+$a := 1; $sum := 0;
+repeat {
+    $sum := $sum + $a;
+    $a := $a + 1;
+} until $a == 10;
+ok($sum == 45, 'basic repeat_until loop');
+
+$a := 1; $sum := 0;
+repeat while $a != 10 {
+    $sum := $sum + $a;
+    $a := $a + 1;
+};
+ok($sum == 45, 'basic repeat_while loop');
+
+$a := 1; $sum := 0;
+repeat until $a == 10 {
+    $sum := $sum + $a;
+    $a := $a + 1;
+};
+ok($sum == 45, 'basic repeat_until loop');
+
+$a := 1; $sum := 0;
+repeat {
+    $sum := 99;
+} while $a != 1;
+ok($sum == 99, 'repeat_while always executes at least once');
+
+$a := 1; $sum := 0;
+repeat {
+    $sum := 99;
+} until $a == 1;
+ok($sum == 99, 'repeat_until always executes at least once');
+
+$a := 1; $sum := 0;
+repeat while $a != 1 {
+    $sum := 99;
+};
+ok($sum == 99, 'repeat_while always executes at least once');
+
+$a := 1; $sum := 0;
+repeat until $a == 1 {
+    $sum := 99;
+};
+ok($sum == 99, 'repeat_until always executes at least once');
+
+

Added: trunk/ext/nqp-rx/t/nqp/15-list.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/15-list.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,12 @@
+#!./parrot nqp.pbc
+
+# lists and for
+
+plan(3);
+
+my $list := (1,2,3);
+my $indexer := 0;
+
+for $list {
+    print("ok "); print($_); say(" checking loop via indices");
+}

Added: trunk/ext/nqp-rx/t/nqp/16-ternary.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/16-ternary.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,23 @@
+#!./parrot nqp.pbc
+
+# the ternary ?? !! operator
+
+plan(8);
+
+ok( 1 ?? 1 !! 0 );
+ok( 0 ?? 0 !! 1 );
+
+my $a := 1 ?? 'yes' !! 'no';
+ok( $a eq 'yes' );
+
+my $b := 0 ?? 'yes' !! 'no';
+ok( $b eq 'no' );
+
+my $c := 1 ?? 'yes' !! ( $a := 'no' );
+ok( $c eq 'yes' );
+ok( $a eq 'yes' );
+
+my $d := 0 ?? ( $a := 'no' ) !! 'yes';
+ok( $d eq 'yes' );
+ok( $a eq 'yes' );
+

Added: trunk/ext/nqp-rx/t/nqp/17-positional.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/17-positional.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,23 @@
+#! nqp
+
+# check positional subscripting
+
+plan(7);
+
+my @l := (1,2,3,4,5);
+
+say("ok 1 # list assignment didn't barf");
+say('ok ', at l[1], ' # numeric subscript');
+say('ok ', @l['2'], ' # string subscript');
+
+my $idx := 3;
+
+say('ok ', @l[$idx], ' # variable subscript');
+say('ok ', @l[$idx + 1], ' # expression in subscript');
+
+ at l[0] := 'ok 6 # string array element';
+say(@l[0]);
+
+ at l[10] := 'ok 7 # automatic expansion';
+say(@l[10]);
+

Added: trunk/ext/nqp-rx/t/nqp/18-associative.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/18-associative.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,27 @@
+#!./parrot nqp.pbc
+
+# check hash access methods
+
+plan(7);
+
+my %h;
+
+%h<a> := 1;
+say("ok 1 # hash assignment with numeric value works");
+
+say('ok ', %h<a> + 1, ' # hash access to numeric value');
+
+%h<a> := 'ok 3';
+say(%h<a>, ' # hash access to string value');
+
+%h{1} := '4';
+say('ok ', %h{1}, ' # numeric hash access');
+
+say('ok ', %h<1> + 1, ' # numbers stringify');
+
+%h{'b'} := 'ok 6 # curly braces and single quotes work';
+say(%h{'b'});
+
+%h{"foo"} := "ok 7 # curly braces and double quotes work";
+say(%h{"foo"});
+

Added: trunk/ext/nqp-rx/t/nqp/19-inline.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/19-inline.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,10 @@
+#!./parrot nqp.pbc
+
+# inline
+
+plan(2);
+
+Q:PIR { say 'ok 1' };
+my $x := Q:PIR { %r = box 'ok 2' };
+say($x);
+

Added: trunk/ext/nqp-rx/t/nqp/20-return.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/20-return.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,23 @@
+#! nqp
+
+# implicit and explicit returns from subs
+
+plan(3);
+
+sub foo() { 1; }
+
+
+sub bar() {
+    return 2;
+    0;
+}
+
+sub baz() {
+    if (1) { return 3; }
+    0;
+}
+
+ok( foo() == 1 , 'last value in block' );
+ok( bar() == 2 , 'explicit return value in block');
+ok( baz() == 3 , 'explicit return from nested block');
+

Added: trunk/ext/nqp-rx/t/nqp/21-contextual.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/21-contextual.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,28 @@
+#! nqp
+
+# Tests for contextual variables
+
+plan(6);
+
+sub foo() { $*VAR }
+
+{
+    my $*VAR := 'abc';
+    ok($*VAR eq 'abc', 'basic contextual declaration works');
+    ok(foo() eq 'abc', 'called subroutine sees caller $*VAR');
+
+    sub bar() { $*VAR }
+
+    ok(bar() eq 'abc', 'called subroutine sees caller $*VAR');
+
+
+
+    {
+        my $*VAR := 'def';
+        ok( $*VAR eq 'def', 'basic nested contextual works');
+        ok( foo() eq 'def', 'called subroutine sees caller $*VAR');
+        ok( bar() eq 'def', 'called subroutine sees caller not outer');
+    }
+}
+
+

Added: trunk/ext/nqp-rx/t/nqp/22-optional-args.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/22-optional-args.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,30 @@
+#! nqp
+
+# test optional arguments and parameters
+
+plan(3);
+
+sub f1 ($x, $y!, $z?) {
+  $x;
+}
+say('ok ', f1(1, 2), ' # optional args ignorable');
+say('ok ', f1(2, 2, 2), ' # optional args passable');
+
+sub f2 ($x?, $y?) { 'ok 3 # only optional args'; }
+say(f2());
+
+# TODO we can't parse .defined() yet - jg
+#sub f3 ($x, $y?, $text?) {
+#  if ! $y.defined() && ! $text.defined() {
+#    say('ok 4 # unpassed optional args are undef');
+#  } else {
+#    say('ok ', $x - $y, $text);
+#  }
+#}
+#f3(2);
+#f3(8, 3, ' # optional args get passed values');
+#f3(8, :text(' # optional args specifiable by name'), :y(2));
+
+# XXX: need to be able to test that the following is illegal
+#sub f4 ($x?, $y) { $y; }
+

Added: trunk/ext/nqp-rx/t/nqp/23-named-args.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/23-named-args.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,20 @@
+#! nqp
+
+# test named parameters and arguments
+
+plan(4);
+
+sub f1 ($x, :$y) { $x - $y; }
+say('ok ', f1(2, :y(1)), ' # named args passable');
+
+sub f2 ($x, :$y) { $x; }
+say('ok ', f2(2), ' # named args ignorable');
+
+sub f3 (:$x, :$y) { $x - $y; }
+say('ok ', f3(:y(2), :x(5)), ' # args reorderable');
+
+sub f4 ($w, $x, :$y, :$z) { $w + $x + $y + $z; }
+say('ok ', f4(:z(2), -3, :y(1), 4), ' # named/positional intermixable');
+
+
+# XXX: test mandatory named args are actually mandatory

Added: trunk/ext/nqp-rx/t/nqp/24-module.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/24-module.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,19 @@
+#! nqp
+
+# check module
+
+plan(3);
+
+XYZ::foo('ok 1');
+XYZ::sayfoo();
+
+module XYZ {
+    our $value := 'ok 2';
+    our sub foo($x) { $value := $x; }
+    our sub sayfoo() { say($value // 'ok 1'); }
+    sayfoo();
+}
+
+XYZ::foo('ok 3');
+XYZ::sayfoo();
+

Added: trunk/ext/nqp-rx/t/nqp/25-class.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/25-class.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,15 @@
+#!./parrot nqp.pbc
+
+# class
+
+plan(1);
+
+class XYZ {
+    method foo($x) {
+        say($x);
+    }
+}
+
+my $xyz := XYZ.new();
+
+$xyz.foo('ok 1');

Added: trunk/ext/nqp-rx/t/nqp/26-methodops.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/26-methodops.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,30 @@
+#! nqp
+
+# method ops (just method calls for now)
+
+plan(3);
+
+class Foo {
+  method blarg() {
+    'ok 1 # method calls work';
+  }
+  method blargless() {
+    'ok 3 # argument-less method calls work'
+  }
+}
+
+class Bar {
+  method blarg() {
+    'not ok 1';
+  }
+}
+
+sub blarg() {
+  'ok 2 # regular subs aren\'t confused with methods';
+}
+
+my $foo := Foo.new();
+
+say($foo.blarg());
+say(blarg());
+say($foo.blargless);

Added: trunk/ext/nqp-rx/t/nqp/27-self.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/27-self.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,28 @@
+#!./parrot nqp.pbc
+
+plan(3);
+
+class Foo {
+    method foo() { 1 };
+
+    method uno() {
+        self.foo();
+    };
+
+    method des() {
+        if 1 {
+            self.foo();
+        }
+    };
+
+    method tres($a) {
+        if 1 {
+            self.foo();
+        }
+    };
+};
+
+ok(Foo.new.uno, "Can access self within method");
+ok(Foo.new.des, "Can access self within sub-block");
+ok(Foo.new.tres(42), "Can access self within method with signature");
+

Added: trunk/ext/nqp-rx/t/nqp/28-subclass.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/28-subclass.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,34 @@
+#! nqp
+
+# class inheritance
+
+plan(6);
+
+class ABC {
+    method foo() {
+        say('ok 1');
+    }
+
+    method bar() {
+        say('ok 3');
+    }
+}
+
+class XYZ is ABC {
+    method foo() {
+        say('ok 2');
+    }
+}
+
+
+my $abc := ABC.new();
+my $xyz := XYZ.new();
+
+$abc.foo();
+$xyz.foo();
+$xyz.bar();
+my $xyzhow := $xyz.HOW;
+if $xyzhow.isa($xyz, ABC) { say('ok 4') }
+if $xyzhow.isa($xyz, XYZ) { say('ok 5') }
+say( $xyzhow.isa($abc, XYZ) ?? 'not ok 6' !! 'ok 6' );
+

Added: trunk/ext/nqp-rx/t/nqp/29-make.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/29-make.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,19 @@
+#! nqp
+
+# Tests for 'make' builtin.
+
+plan(2);
+
+my $/ := Regex::Match.new();
+make 'ok 1';
+say($/.ast);
+
+# check that it finds contextual $/
+our sub foo() {
+    make 'ok 2'
+}
+
+foo();
+say($/.ast);
+
+

Added: trunk/ext/nqp-rx/t/nqp/30-pirop.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/30-pirop.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,11 @@
+#! nqp
+
+# Test PIR::op pseudo-functions.
+
+plan(3);
+
+say( pir::join__SsP('', ('o', 'k', ' ', 1) ) );
+
+say( 'ok ', pir::div(6,3) );
+
+say( 'ok ', pir::chr__Si(51) );

Added: trunk/ext/nqp-rx/t/nqp/31-grammar.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/31-grammar.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,22 @@
+#! nqp
+
+# Test grammars and regexes
+
+plan(3);
+
+grammar ABC {
+    token TOP { ok ' ' <integer> }
+    token integer { \d+ }
+}
+
+my $match := ABC.parse('not ok');
+ok( !$match, 'parse method works on negative match');
+
+$match := ABC.parse('ok 123');
+ok( ?$match, 'parse method works on positive match');
+
+ok( $match<integer> == 123, 'captured $<integer>');
+
+
+
+

Added: trunk/ext/nqp-rx/t/nqp/32-protoregex.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/32-protoregex.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,32 @@
+#! nqp
+
+# test protoregexes in grammars
+
+plan(6);
+
+grammar ABC {
+
+    token TOP { <symbols> .* }
+
+    proto token symbols { <...> }
+
+    token symbols:sym<abc>  { <sym> }
+    token symbols:sym<a>    { <sym> }
+    token symbols:sym<bang> { $<sym>=['!'] }
+    token symbols:sym<===>  { <sym> }
+}
+
+
+my $/ := ABC.parse('abcdef');
+ok( ?$/ ,           'successfully matched grammar' );
+ok( $/ eq 'abcdef', 'successful string match' );
+ok( $<symbols> eq 'abc', 'successful protoregex match');
+ok( $<symbols><sym> eq 'abc', 'correct proto candidate match' );
+
+$/ := ABC.parse('adef');
+ok( ?$/ ,           'successfully matched grammar' );
+
+$/ := ABC.parse('xxx');
+ok( !$/ ,           'successfully failed protoregex match' );
+
+

Added: trunk/ext/nqp-rx/t/nqp/33-init.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/33-init.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,23 @@
+#! nqp
+
+# Test INIT blocks
+
+INIT plan(4);
+
+our $foo;
+
+ok($foo == 2, 'after second INIT block');
+
+INIT {
+    our $foo;
+    ok($foo == 0, 'first INIT');
+    $foo := 1;
+}
+
+$foo := 3;
+
+INIT ok($foo++, 'after first INIT but before mainline');
+
+ok($foo == 3, 'After everything else');
+
+

Added: trunk/ext/nqp-rx/t/nqp/34-rxcodeblock.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/34-rxcodeblock.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,32 @@
+#! nqp
+
+plan(12);
+
+grammar ABC {
+    token TOP { { ok(1, 'basic code assertion'); } }
+}
+ABC.parse('abc');
+
+grammar BCD {
+    token TOP { $<bcd>=[.*] { ok( $<bcd> eq 'bcd', 'match in assertion' ); } }
+}
+BCD.parse('bcd');
+
+grammar CDE {
+    token TOP { \d+ <?{ +$/ < 255}> cde }
+}
+ok( ?CDE.parse('123cde'),  'passes assertion, match after');
+ok( !CDE.parse('1234cde'), 'fails assertion');
+ok( ?CDE.parse('0cde'),    'passes assertion, match after');
+ok( !CDE.parse('1234'),    'fails assertion');
+ok( !CDE.parse('123'),     'fails regex after passing assertion');
+
+grammar DEF {
+    token TOP { \d+ <!{ +$/ < 255 }> def }
+}
+ok( !DEF.parse('123def'),  'fails assertion');
+ok( ?DEF.parse('1234def'), 'passes assertion, text after');
+ok( !DEF.parse('0def'),    'fails assertion');
+ok( !DEF.parse('1234'),    'passes assertion, fails text after');
+ok( ?DEF.parse('999def'),  'passes assertion, text after');
+

Added: trunk/ext/nqp-rx/t/nqp/35-prefix-sigil.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/35-prefix-sigil.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,18 @@
+#!./parrot nqp.pbc
+
+# prefix sigils like @(...) and %(...)
+
+plan(1);
+
+class XYZ {
+    method list() {
+        'ok ', '1';
+    }
+}
+
+my $xyz := XYZ.new();
+
+for @( $xyz ) {
+    print( $_ );
+}
+print( "\n" );

Added: trunk/ext/nqp-rx/t/nqp/36-callable.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/36-callable.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,8 @@
+#!./parrot nqp.pbc
+
+# postcircumfix:<( )>
+
+plan(1);
+
+my $sub := { ok(1, 'works'); }
+$sub();

Added: trunk/ext/nqp-rx/t/nqp/37-slurpy.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/37-slurpy.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,20 @@
+#!./parrot nqp.pbc
+
+# slurpy args
+
+plan(5);
+
+sub slurpy_pos(*@pos) {
+    for @pos {
+        say("ok " ~ $_);
+    }
+}
+
+slurpy_pos(1, 2, 3);
+
+sub slurpy_named(*%named) {
+    say(%named<pivo>);
+    say(%named<slanina>);
+}
+
+slurpy_named(:pivo("ok 4"), :slanina("ok 5"));

Added: trunk/ext/nqp-rx/t/nqp/38-quotes.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/38-quotes.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,19 @@
+#! nqp
+
+# interpolating quotes
+
+plan(4);
+
+my $abc := 'abc';
+
+ok( "xxx$abc" eq 'xxxabc', "basic scalar interpolation" );
+
+ok( qq{xxx $abc zzz} eq 'xxx abc zzz', 'basic qq{} interpolation' );
+
+my $num := 5;
+
+ok( "xxx {3+$num} zzz" eq 'xxx 8 zzz', "basic closure interpolation" );
+
+ok( qq{xxx {3+$num} zzz} eq 'xxx 8 zzz', 'basic qq{} closure interpolation' );
+
+

Added: trunk/ext/nqp-rx/t/nqp/39-pointy.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/39-pointy.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,18 @@
+#! nqp
+
+plan(6);
+
+my $count := 1;
+
+my $x := -> $a, $b { ok($a == $count++, $b); }
+
+$x(1, 'basic pointy block');
+
+my $y := -> $a, $b = 2 { ok($b == $count++, $a); }
+
+$y('pointy block with optional');
+
+$y('pointy block with optional + arg', 3);
+
+for <4 pointy4 5 pointy5 6 pointy6> -> $a, $b { ok($a == $count++, $b); }
+

Added: trunk/ext/nqp-rx/t/nqp/40-lists.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/40-lists.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,46 @@
+#! nqp
+
+plan(18);
+
+my $a;
+$a := (8);
+ok( pir::typeof__SP($a) eq 'Integer', 'basic parens');
+
+$a := (8,9);
+ok( pir::typeof__SP($a) eq 'ResizablePMCArray', 'paren list');
+ok( +$a == 2, 'paren list elems' );
+
+$a := (8,);
+ok( pir::typeof__SP($a) eq 'ResizablePMCArray', 'paren comma');
+ok( +$a == 1, 'paren comma' );
+
+$a := ();
+ok( pir::typeof__SP($a) eq 'ResizablePMCArray', 'empty parens');
+ok( +$a == 0, 'paren list elems' );
+
+$a := [8];
+ok( pir::typeof__SP($a) eq 'ResizablePMCArray', 'brackets of one elem');
+ok( +$a == 1, 'brackets of one elem' );
+
+$a := [7,8,9];
+ok( pir::typeof__SP($a) eq 'ResizablePMCArray', 'brackets of 3 elems');
+ok( +$a == 3, 'brackets of 3 elems' );
+
+$a := [];
+ok( pir::typeof__SP($a) eq 'ResizablePMCArray', 'brackets of 0 elems');
+ok( +$a == 0, 'brackets of 0 elems' );
+
+$a := {};
+ok( pir::typeof__SP($a) eq 'Hash', 'empty braces');
+
+$a := { 1 };
+ok( pir::typeof__SP($a) eq 'Sub', 'non-empty braces');
+
+sub xyz(*@a) {
+    ok( + at a == 1, "brackets as single argument #1" );
+    ok( + at a[0] == 2, "brackets as single argument #2");
+    ok( @a[0][1] == 'b', "brackets as single argument #3");
+}
+
+xyz(['a', 'b']);
+

Added: trunk/ext/nqp-rx/t/nqp/41-flat.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/nqp/41-flat.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,15 @@
+#!./parrot nqp.pbc
+
+# flattened arguments
+
+plan(3);
+
+sub xyz($x, $y, $z) {
+    ok( $x == 7, 'first argument');
+    ok( $y == 8, 'second argument');
+    ok( $z == 9, 'third argument');
+}
+
+my @a := [7,8,9];
+xyz(|@a);
+

Added: trunk/ext/nqp-rx/t/p6regex/01-regex.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/01-regex.t	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,497 @@
+#! parrot
+# Copyright (C) 2001-2008, Parrot Foundation.
+# $Id: 01-regex.t 40191 2009-07-21 12:56:20Z bacek $
+
+=head1 NAME
+
+t/compilers/pge/perl6regex/01-regex.t  -- Basic Perl6Regex tests
+
+=head1 DESCRIPTION
+
+These tests are based on L<http://dev.perl.org/perl6/doc/design/syn/S05.html>.
+Individual tests are stored in the C<rx_*> files in the same directory;
+There is one test per line: each test consists of the following
+columns (separated by one *or more* tabs):
+
+=over 4
+
+=item pattern
+
+The Perl 6 regex to test.
+
+=item target
+
+The string that will be matched against the pattern. Use '' to indicate
+an empty string.
+
+=item result
+
+The expected result of the match. Either C<y> for a successful match, C<n>
+for a failed one. Otherwise the output is expected to begin and end with
+C</>.
+
+This result is used in one of two ways: If an exception is thrown by the
+match, the result must be contained in the exception's message. If the match
+succeeds, then the message must be contained in a dump of the match object.
+
+=item test id
+
+A unique test identifier. This allows us to track TODO/SKIP information in
+*this* file instead of the associated test file, which lets us easily
+share the tests across implementations of perl6's regex engine.
+
+=item description
+
+Description of the test.
+
+=back
+
+=head1 SYNOPSIS
+
+    % prove t/compilers/pge/01-regex.t
+
+=cut
+
+.const string TESTS = 'no_plan'
+
+.sub main :main
+    load_bytecode 'Test/Builder.pbc'
+    load_bytecode 'P6Regex.pbc'
+    load_bytecode 'String/Utils.pbc'
+    .include "iglobals.pasm"
+
+    # Variable declarations, initializations
+    .local pmc test       # the test harness object.
+               test = new [ 'Test'; 'Builder' ]
+
+    .local string test_dir # the directory containing tests
+                  test_dir = 't/p6regex/'
+
+    .local pmc test_files # values are test file names to run.
+               test_files = new 'ResizablePMCArray'
+
+    # populate the list of test files
+    push test_files, 'rx_basic'
+    push test_files, 'rx_metachars'
+    push test_files, 'rx_quantifiers'
+    push test_files, 'rx_backtrack'
+    push test_files, 'rx_charclass'
+    push test_files, 'rx_subrules'
+    push test_files, 'rx_lookarounds'
+    push test_files, 'rx_captures'
+    push test_files, 'rx_modifiers'
+    # push test_files, 'rx_syntax'
+    push test_files, 'rx_goal'
+
+    .local pmc interp     # a handle to our interpreter object.
+               interp = getinterp
+
+    .local pmc config
+               config = interp[.IGLOBALS_CONFIG_HASH]
+
+    .local int has_icu    # flag indicating presense of icu
+               has_icu = config['has_icu']
+
+    .local pmc file_iterator # iterate over list of files..
+               file_iterator = iter test_files
+
+    .local int test_number   # the number of the test we're running
+               test_number = 0
+
+    # these vars are in the loops below
+    .local pmc file_handle   # currently open file.
+    .local string test_file  # name of the current test file
+    .local string test_line  # one line of one test file, a single test
+    .local int ok            # is this a passing test?
+
+    # for any given test:
+    .local int skiptest       # if the test is '# skip'
+    .local int todotest       # if the test is '# todo'
+    .local string reason      # reason for todo/skip
+    .local pmc rule           # the rule
+    .local pmc match          # the match
+    .local string pattern     # the regexp
+    .local string target      # this string to match against the regex
+    .local string result      # expected result of this test. (y/n/...)
+    .local string description # user-facing description of the test.
+
+    # how many tests to run?
+    # XXX: this should be summed automatically from test_files data
+    #      until then, it's set to no plan
+    test.'plan'(TESTS)
+
+
+  outer_loop:
+    unless file_iterator goto end_outer_loop
+    .local string test_name
+                  test_name = shift file_iterator
+    # local test number in test file
+    .local int local_test_number
+               local_test_number = 0
+
+    # local line number in test file
+    .local int local_line_number
+               local_line_number = 0
+
+    # append the test directory and filename
+    test_file = test_dir . test_name
+
+    # Open the test file
+    file_handle = open test_file, 'r'
+    $S0 = typeof file_handle
+    if $S0 == 'Undef' goto bad_file
+
+  next_test:
+    skiptest = 0
+    todotest = 0
+    trace 0
+
+    # loop over the file, one at a time.
+  loop:
+    # read in the file one line at a time...
+    $I0 = file_handle.'eof'()
+    if $I0 goto end_loop
+
+    test_line = readline file_handle
+    inc local_line_number
+
+    # if this line is not a comment, try a test
+    $S0 = substr test_line, 0, 1
+    if $S0 != '#' goto parse_test
+
+  parse_comment:
+    # line is a comment, if no :pge<...> then skip comment
+    $I0 = index test_line, ':pge<'
+    if $I0 == -1 goto loop
+
+    # extract out the reason for skip or todo
+    $I0 += 5
+    $I1 = index test_line, '>', $I0
+    $I1 -= $I0
+    reason = substr test_line, $I0, $I1
+
+    # determine skip/todo
+    $P0 = split ' ', test_line
+    $S0 = $P0[1]
+    if $S0 == 'skip' goto comment_skip
+    if $S0 == 'todo' goto comment_todo
+    if $S0 == 'trace' goto comment_trace
+    goto loop
+  comment_skip:
+    skiptest = 1
+    goto loop
+  comment_todo:
+    todotest = 1
+    goto loop
+  comment_trace:
+    $I0 = reason
+    trace $I0
+    goto loop
+
+  parse_test:
+    # skip lines without tabs
+    $I0 = index test_line, "\t"
+    if $I0 == -1 goto loop
+    inc test_number
+    inc local_test_number
+
+  parse_data:
+    push_eh eh_bad_line
+    ( pattern, target, result, description ) = parse_data( test_line )
+    pop_eh
+
+    # prepend test filename and line number to description
+    description = 'build_test_desc'( description, test_name, local_line_number )
+
+    if target != "''" goto got_target
+    target = ''
+
+  got_target:
+    target = 'backslash_escape'( target )
+    result = 'backslash_escape'( result )
+
+    # Should this test be skipped?
+    unless skiptest goto not_skip
+    test.'skip'(1, reason)
+    goto next_test
+
+  not_skip:
+    push_eh thrown
+    match = 'match_perl6regex'( pattern, target )
+    pop_eh
+
+    if match goto matched
+
+    if result == 'n' goto is_ok
+    if result == 'y' goto is_nok
+    goto check_dump
+
+  matched:
+    if result == 'y' goto is_ok
+    if result == 'n' goto is_nok
+    # goto check_dump
+
+  check_dump:
+    $S1 = match.'dump_str'('mob', ' ', '')
+
+    # remove /'s
+    $S0 = substr result, 0, 1
+    if $S0 != "/" goto bad_line
+    substr result, 0, 1, ''
+    substr result, -1, 1, ''
+
+    $I0 = index $S1, result
+    if $I0 == -1 goto is_nok
+    # goto is_ok
+
+  is_ok:
+    ok = 1
+    goto emit_test
+  is_nok:
+    ok = 0
+
+  emit_test:
+    unless todotest goto not_todo
+    test.'todo'(ok, description, reason)
+    goto next_test
+  not_todo:
+    test.'ok'(ok, description)
+    goto next_test
+
+  end_loop:
+    close file_handle
+    goto outer_loop
+  end_outer_loop:
+
+    test.'finish'()
+    end
+
+  bad_file:
+    print "Unable to open '"
+    print test_file
+    print "'\n"
+
+  thrown:
+    .local pmc exception
+    .local string message
+    get_results '0', exception
+    message = exception
+    say message
+    # remove /'s
+    $S0 = substr result, 0, 1
+    if $S0 != "/" goto bad_error
+    substr result, 0, 1, ''
+    substr result, -1, 1, ''
+    $I0 = index message, result
+    if $I0 == -1 goto bad_error
+    ok = 1
+    goto emit_test
+  bad_error:
+    ok = 0
+    goto emit_test
+  bad_line:
+    $S0 = "Test not formatted properly!"
+    test.'ok'(0, $S0)
+    goto loop
+  eh_bad_line:
+    $S0 = "Test not formatted properly!"
+    test.'ok'(0, $S0)
+    goto loop
+.end
+
+
+.sub 'parse_data'
+    .param string test_line   # the data record
+
+    .local pmc rule           # the rule
+    .local pmc match          # the match
+    .local string pattern     # the regexp
+    .local string target      # this string to match against the regex
+    .local string result      # expected result of this test. (y/n/...)
+    .local string description # user-facing description of the test.
+
+    # NOTE: there can be multiple tabs between entries, so skip until
+    # we have something.
+    # remove the trailing newline from record
+    chopn test_line, 1
+
+    $P1 = split "\t", test_line
+    $I0 = elements $P1 # length of array
+    .local int tab_number
+               tab_number = 0
+  get_pattern:
+    if tab_number >= $I0 goto bad_line
+    pattern     = $P1[tab_number]
+    inc tab_number
+  get_target:
+    if tab_number >= $I0 goto bad_line
+    target      = $P1[tab_number]
+    inc tab_number
+    if target == '' goto get_target
+  get_result:
+    if tab_number >= $I0 goto bad_line
+    result      = $P1[tab_number]
+    inc tab_number
+    if result == '' goto get_result
+  get_description:
+    if tab_number >= $I0 goto bad_line
+    description = $P1[tab_number]
+    inc tab_number
+    if description == '' goto get_description
+
+  return:
+    .return ( pattern, target, result, description )
+
+  bad_line:
+      $P1 = new 'Exception'
+      $P1 = 'invalid data format'
+      throw $P1
+.end
+
+
+.sub 'build_test_desc'
+    .param string desc
+    .param string test_name
+    .param string local_test_number
+
+    $S0  = '['
+    $S0 .= test_name
+    $S0 .= ':'
+    $S0 .= local_test_number
+    $S0 .= '] '
+
+    desc = concat $S0, desc
+
+    .return (desc)
+.end
+
+
+.sub 'match_perl6regex'
+    .param string pattern
+    .param string target
+
+    .local pmc match
+
+    .local pmc p6rule     # the perl6 regex compiler
+               p6rule = compreg 'Regex::P6Regex'
+
+    .local pmc rule
+               rule = p6rule.'compile'(pattern)
+
+    unless_null rule, match_it
+    $P1 = new 'Exception'
+    $P1 = 'rule error'
+    throw $P1
+  match_it:
+    $P0 = get_hll_global ['Regex'], 'Cursor'
+    match = $P0.'parse'(target, rule, 'from'=>-1)
+
+    .return (match)
+.end
+
+
+# given a 2 digit string, convert to appropriate chr() value.
+.sub hex_chr
+    .param string hex
+
+    $S0 = substr hex, 0, 1
+    $S1 = substr hex, 1, 1
+
+    $I0 = hex_val($S0)
+    $I1 = hex_val($S1)
+
+    $I0 *=16
+    $I0 += $I1
+
+    $S2 = chr $I0
+
+    .return ($S2)
+.end
+
+
+# given a single digit hex value, return it's int value.
+.sub hex_val
+  .param string digit
+
+  $I0 = ord digit
+  if $I0 < 48 goto bad_digit
+  if $I0 > 57 goto non_numeric
+  $I0 -=48
+  .return ($I0)
+non_numeric:
+  if $I0 < 65 goto bad_digit
+  if $I0 > 70 goto not_capital
+  $I0 -= 55 # A is ascii 65, so reset to zero, add 10 for hex..
+  .return ($I0)
+not_capital:
+  if $I0 < 97 goto  bad_digit
+  if $I0 > 102 goto bad_digit
+  $I0 -= 87 # a is ascii 97, so reset to zero, add 10 for hex..
+  .return ($I0)
+
+bad_digit:
+  $P1 = new 'Exception'
+  $P1 = 'invalid hex digit'
+  throw $P1
+.end
+
+
+.sub backslash_escape
+    .param string target
+
+  target1:
+    $I0 = index target, '\n'
+    if $I0 == -1 goto target2
+    substr target, $I0, 2, "\n"
+    goto target1
+  target2:
+    $I0 = index target, '\r'
+    if $I0 == -1 goto target3
+    substr target, $I0, 2, "\r"
+    goto target2
+  target3:
+    $I0 = index target, '\e'
+    if $I0 == -1 goto target4
+    substr target, $I0, 2, "\e"
+    goto target3
+  target4:
+    $I0 = index target, '\t'
+    if $I0 == -1 goto target5
+    substr target, $I0, 2, "\t"
+    goto target4
+  target5:
+    $I0 = index target, '\f'
+    if $I0 == -1 goto target6
+    substr target, $I0, 2, "\f"
+    goto target5
+  target6:
+    # handle \xHH, hex escape.
+
+    $I0 = index target, '\x'
+    if $I0 == -1 goto target7
+
+    $I1 = $I0 + 2
+    $P0 = get_hll_global ['String';'Utils'], 'convert_digits_to_string'
+    ($S0, $I2) = $P0(target, 'x', $I1)
+    $S3 = substr target, $I1, $I2
+    $I2 += 2
+    substr target, $I0, $I2, $S0
+    goto target6
+  target7:
+    .return (target)
+.end
+
+=head1 BUGS AND LIMITATIONS
+
+Note that while our job would be easier if we could use regular expressions
+in here, but we want to avoid any dependency on the thing we're testing.
+
+Need to add in test ids, to avoid the precarious line numbering.
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: trunk/ext/nqp-rx/t/p6regex/rx_backtrack
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_backtrack	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,33 @@
+##   Backtracking control tests
+a* a			bazaar		y	control
+# todo :pge<adverbs before backtrack(?)>
+a*:a			bazaar		/:a/	basic
+a*: a			bazaar		n	basic
+^[a|b]*  aba		abbabbababba	y	control
+^[a|b]*: aba		abbabbababba	n	outside a group
+\d+:			123abc		y	cut on character class shortcut
+\d+:			abc		n	cut on character class shortcut
+[ if    not | ify ]	verify		y	control
+[ if :: not | ify ]	verify		n	inside a group
+  if :: not | ify	verify		n	the default all group
+# todo :pugs<feature>
+[ if :  not | ify ]	verify		y	simple backtrack still works
+# todo :pugs<feature>
+[ if :: not | ify ] | verify	verify	y	rule continues
+[ when     ever ] | whence	whence	y	full backtrack failure
+[ when ::: ever ] | whence	whence	n	full backtrack failure
+# todo :pugs<feature>
+ab::cd | gh::ij		xyabghij	y	group cut at top
+ab:::cd | gh:::ij	xyabghij	n	rule cut at top
+# todo :pugs<feature>
+[ab::cd | gh::ij]	xyabghij	y	group cut in group
+[ab:::cd | gh:::ij]	xyabghij	n	rule cut in group
+[ ab | abc ]: de	xyzabcde	n	no backtrack into group
+( ab | abc ): de	xyzabcde	n	no backtrack into subpattern
+# todo :pugs<feature>
+[ when <commit> ever ] | whence	whence	n	full backtrack failure
+
+:ratchet a* a		bazaar		n	ratchet modifier
+:ratchet a*! a		bazaar		y	force backtracking !
+
+## vim: noexpandtab tabstop=4 shiftwidth=4

Added: trunk/ext/nqp-rx/t/p6regex/rx_basic
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_basic	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,10 @@
+##   Basic tests
+a			a		y	basic literal
+abc			abc		y	basic multichar literal
+.			a		y	basic dot
+..			abc		y	basic multidot
+a.c			a.c		y	dot in mid pattern
+b			a		n	failed literal match
+aa			a		n	failed literal match
+...			ab		n	failed dot match
+c			abc		y	scanning match

Added: trunk/ext/nqp-rx/t/p6regex/rx_captures
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_captures	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,63 @@
+##   captures
+(a.)..(..)		zzzabcdefzzz	y			basic match
+(a.)..(..)		zzzabcdefzzz	/mob: <abcdef @ 3>/	basic $0
+(a.)..(..)		zzzabcdefzzz	/mob 0: <ab @ 3>/	basic $1
+(a.)..(..)		zzzabcdefzzz	/mob 1: <ef @ 7>/	basic $2
+(a(b(c))(d))		abcd		y			nested match
+(a(b(c))(d))		abcd		/mob: <abcd @ 0>/	nested match
+(a(b(c))(d))		abcd		/mob 0: <abcd @ 0>/	nested match
+(a(b(c))(d))		abcd		/mob 0 0: <bc @ 1>/	nested match
+(a(b(c))(d))		abcd		/mob 0 0 0: <c @ 2>/	nested match
+(a(b(c))(d))		abcd		/mob 0 1: <d @ 3>/	nested match
+((\w+)+)		abcd		/mob: <abcd @ 0>/	nested match
+((\w+)+)		abcd		/mob 0: <abcd @ 0>/	nested match
+((\w+)+)		abcd		/mob 0 0 0: <abcd @ 0>/	nested match
+((\w+)+)	ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz	/mob: <ABCD/	nested match
+((\w+)+)	ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz	/mob 0: <ABCD/	nested match
+((\w+)+)	ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz	/mob 0 0 0: <ABCD/	nested match
+(a) [ (bc) (d) | .* (ef) ] .* (g)	abcdefg	/mob 0: <a @ 0>/	alt subpattern before group
+(a) [ (bc) (d) | .* (ef) ] .* (g)	abcdefg	/mob 1: <bc @ 1>/	alt subpattern in group
+(a) [ (bc) (d) | .* (ef) ] .* (g)	abcdefg	/mob 2: <d @ 3>/	alt subpattern in group
+(a) [ (bc) (d) | .* (ef) ] .* (g)	abcdefg	/mob 3: <g @ 6>/	alt subpattern after group
+(a) [ (bc) (x) | .* (ef) ] .* (g)	abcdefg	/mob 1: <ef @ 4>/	2nd alt subpattern in group
+(a) [ (bc) (x) | .* (ef) ] .* (g)	abcdefg	/mob 3: <g @ 6>/	2nd alt subpattern after group
+( (.) )*				abc	/mob 0 1 0: <b @ 1>/	nested repeated captures
+[ (.) ]*				abc	/mob 0 1: <b @ 1>/	nested repeated captures
+( [.] )*				abc	/mob 0 1: <b @ 1>/	nested repeated captures
+(.) (.) $7=(.) (.) $4=(.)		abcdefg	/mob 0: <a @ 0>/	numbered aliases $1
+(.) (.) $7=(.) (.) $4=(.)		abcdefg	/mob 1: <b @ 1>/	numbered aliases $2
+(.) (.) $7=(.) (.) $4=(.)		abcdefg	/mob 7: <c @ 2>/	numbered aliases $7
+(.) (.) $7=(.) (.) $4=(.)		abcdefg	/mob 8: <d @ 3>/	numbered aliases $8
+(.) (.) $7=(.) (.) $4=(.)		abcdefg	/mob 4: <e @ 4>/	numbered aliases $4
+$1=[ (.) (.) (.) ] (.)			abcdefg	/mob 1: <abc @ 0>/	perl5 numbered captures $1
+$1=[ (.) (.) (.) ] (.)			abcdefg	/mob 2: <a @ 0>/	perl5 numbered captures $1
+$1=[ (.) (.) (.) ] (.)			abcdefg	/mob 3: <b @ 1>/	perl5 numbered captures $1
+$1=[ (.) (.) (.) ] (.)			abcdefg	/mob 4: <c @ 2>/	perl5 numbered captures $1
+$1=[ (.) (.) (.) ] (.)			abcdefg	/mob 5: <d @ 3>/	perl5 numbered captures $1
+# todo :pugs<feature>
+:s $<key>=[\w+] \= $<val>=[\S+]	 abc = 123	/mob<key>: <abc @ 1>/	named capture
+# todo :pugs<feature>
+:s $<key>=[\w+] \= $<val>=[\S+]	 abc = 123	/mob<val>: <123 @ 7>/	named capture
+# todo :pugs<feature>
+:s (\w+) $<foo>=(\w+) (\w+)		abc def ghi	/mob<foo>: <def @ 4>/	mixing named and unnamed capture
+# todo :pugs<feature>
+:s (\w+) $<foo>=(\w+) (\w+)		abc def ghi	/mob 1: <ghi @ 8>/	mixing named and unnamed capture
+# todo :pugs<feature>
+<alpha> [ \- <alpha> ]?			abc def ghi	/mob<alpha> 0: <a @ 0>/	multiple subrule captures in same scope
+# todo :pugs<feature>
+[(.)$0]+				bookkeeper	y			backreference
+# todo :pugs<feature>
+(\w+) <+ws> $0				hello hello	y			backreference at end of string
+# todo :pugs<feature>
+[(.)$0]+				bookkeeper	/mob 0 0: <o @ 1>/	backref $1
+# todo :pugs<feature>
+[(.)$0]+				bookkeeper	/mob 0 1: <k @ 3>/	backref $1
+# todo :pugs<feature>
+[(.)$0]+				bookkeeper	/mob 0 2: <e @ 5>/	backref $1
+# todo :pugs<feature>
+(.)*x					123x		/mob: <123x @ 0>/	repeated dot capture
+
+$<key>=<alpha>				12ab34		/mob<key>: <a @ 2>/	alias capture
+<key=alpha>				12ab34		/mob<key>: <a @ 2>/	alias capture
+
+## vim: noexpandtab tabstop=4 shiftwidth=4

Added: trunk/ext/nqp-rx/t/p6regex/rx_charclass
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_charclass	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,82 @@
+##   Enumerated character lists
+<[c]>			abcdef		y	character class
+# todo :pugs<feature>
+<[ z ]>			abc def		n	character class ignores ws
+# todo :pugs<feature>
+<[dcb]>**3		abcdef		y	repeated character class
+^<[a]>			abcdef		y	anchored character class
+<-[e]>			abcdef		y	negated character class
+^<[a]>?			abcdef		y	anchored optional character class
+<-[e]>?			abcdef		y	negated optional character class
+<-[dcb]>**3		abcdef		n	repeated negated character class
+^<-[e]>			abcdef		y	anchored negated character class
+^<-[a]>			abcdef		n	anchored negated character class
+<[b..d]>		abcdef		y	character range
+# todo :pugs<feature>
+<[b .. d]>		c		y	character range ignores ws
+<[b..d]>		abxxef		y	character range
+<[b..d]>		axcxef		y	character range
+<[b..d]>		axxdef		y	character range
+<[b..d]>		axxxef		n	character range
+<-[b..d]>		abcdef		y	negated character range
+# todo :pugs<feature>
+<- [b..d]>		abcdef		y	negated allows ws
+<-[b..d]>		bbccdd		n	negated character range
+# todo :pge<reversed character range>
+<-[d..b]>		bbccdd		/parse error/	illegal character range
+<[-]>			ab-def		/Obsolete/	unescaped hyphen
+<[\-]>			ab-def		y	escaped hyphen
+<[\-]>			abcdef		n	escaped hyphen
+<-[\-]>			---x--		y	negated escaped hyphen
+<-[\-]>			------		n	negated escaped hyphen
+<[\-+]>			ab-def		y	escaped hyphen in range
+<[\-+]>			ab+def		y	escaped hyphen in range
+<[\-+]>			abcdef		n	escaped hyphen in range
+<[+\-]>			ab-def		y	escaped hyphen in range
+<[+\-]>			ab+def		y	escaped hyphen in range
+<[+\-]>			abcdef		n	escaped hyphen in range
+<-[\-+]>		---x--		y	negated escaped hyphen in range
+<-[\-+]>		------		n	negated escaped hyphen in range
+<-[+\-]>		---x--		y	negated escaped hyphen in range
+<-[+\-]>		------		n	negated escaped hyphen in range
+<["\\]>			\\			y	escaped backslash
+<[\]]>			]			y	escaped close bracket
+<[\]>			\\]]		/error/	unescaped backslash (or no closing brace)
+^\><[<]>		><		y	lt character class
+^<[>]>\<		><		y	gt character class
+# todo :pugs<feature>
+^<[><]>**2		><		y	gt, lt character class
+# todo :pugs<feature>
+^<[<>]>**2		><		y	lt, gt  character class
+^<-[><]>		><		n	not gt, lt character class
+^<-[<>]>		><		n	not lt, gt  character class
+'... --- ...'		... --- ...	y	literal match (\')
+'... --- ...'		...---...	n	literal match (\')
+# todo :pugs<feature>
+'ab\'>cd'		ab'>cd		y	literal match with quote
+'ab\\yz'		ab\x5cyz	y	literal match with backslash
+'ab"cd'			ab"cd		y	literal match with quote
+# todo :pugs<feature>
+'ab\\yz'		ab\x5cyz	y	literal match with backslash
+# todo :pugs<feature> :pge<feature>
+"... --- ..."		... --- ...	y	literal match (\")
+# todo :pugs<feature> :pge<feature>
+"... --- ..."		...---...	n	literal match (\")
+# todo :pugs<feature> :pge<feature>
+"ab<\">cd"		ab<">cd		y	literal match with quote
+# todo :pugs<feature> :pge<feature>
+"ab<'>cd"		ab<'>cd		y	literal match with quote
+# todo :pugs<feature> :pge<feature>
+"ab\\cd"		ab\x5ccd	y	literal match with backslash
+# todo :pugs<feature> :pge<feature>
+(ab)x"$0"		abxab		y	literal match with interpolation
+# todo :pugs<feature> :pge<feature>
+(ab)"x$0"		abxab		y	literal match with interpolation
+'?'			ab<?		y	literal match with question mark
+'<'			ab<?		y	literal match with lt
+'<?'			ab<?		y	literal match with lt and question mark
+'<?'			ab<x?		n	non-matching literal match
+<[A..Z0..9]>		abcdef		n	two enumerated ranges
+<[A..Z0..9]>		abcDef		y	two enumerated ranges
+
+## vim: noexpandtab tabstop=4 shiftwidth=4

Added: trunk/ext/nqp-rx/t/p6regex/rx_goal
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_goal	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,14 @@
+##   Goal tests
+'(' ~ ')' \d+		(123)		y	basic goal syntax
+'(' ~ ')' \d+		(123		/couldn't find final/	missing goal
+'(' ~ ')' \d+		(123abc)	/couldn't find final/	stuff before goal
+'(' ~ ')' \d+		(abc)		n	can't match internal stuff
+'(' ~ ')' \d+		()		n	missing internal stuff
+['('] ~ [')'] \d+		(123)		y	goal syntax with brackets
+['('] ~ [')'] [\d+]		(123)		y	goal syntax with brackets
+['('] ~ [')'] [\d\d+]		(123)		y	goal syntax with brackets
+('(') ~ (')') (\d\d+)		(123)		y	goal syntax with parentheses
+'(' ~ <[()]> \d+		(123)		y	non-literal goal
+'(' ~ <[()]> \d+		(123(		y	non-literal goal
+'(' ~ <[()]> \d+		(123]		/Unable to parse/	failing non-literal goal
+:dba('zz') '(' ~ ')' \d+	(123		/zz/	:dba adverb

Added: trunk/ext/nqp-rx/t/p6regex/rx_lookarounds
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_lookarounds	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,48 @@
+## lookarounds
+<before .d> a.		abacad		/mob: <ad @ 4>/			lookahead <before>
+<before c> ....		abacad		n				lookahead <before>
+<before> .		abcd		n				null <before>
+<!before ..b> aa	aabaaa		/mob: <aa @ 3>/			negated lookahead
+# todo :pugs<feature>
+<after a>b		ab		y				lookbehind <after>
+<after a>b		cb		n				lookbehind <after>
+<after a>b		b		n				lookbehind <after>
+# todo :pugs<feature>
+<!after c>b		ab		y				lookbehind <!after>
+<!after c>b		cb		n				lookbehind <!after>
+# todo :pugs<feature>
+<!after c>b		b		y				lookbehind <!after>
+<!after <[cd]>>b	dbcb		n				lookbehind <!after>
+# todo :pugs<feature>
+<!after <[cd]>><[ab]>	dbaacb		y				lookbehind <!after>
+<!after c|d>b		dbcb		n				lookbehind <!after>
+# todo :pugs<feature>
+<!after c|d><[ab]>	dbaacb		y				lookbehind <!after>
+# todo :pugs<feature>
+<!after cd><[ab]>	cbaccb		y				lookbehind <!after>
+# todo :pugs<feature>
+$ <after ^a>		a		y				lookbehind <after>
+# todo :pugs<feature>
+<after x+>y		axxbxxyc	y				lookbehind <after>
+<[a..z]>+		az		y				metasyntax with leading + (<+...>)
+<+[a..z]>+		az		y				metasyntax with leading + (<+...>)
+<+alpha>+		az		y				metasyntax with leading + (<+...>)
+
+<?>			''		y		null pattern (<?>)
+^ <?>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	y	null pattern (<?>)
+<?> $		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	y	null pattern (<?>)
+abc <?> def	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	y	null pattern (<?>)
+x | y | <?>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	y	null pattern (<?>)
+x | y | <?>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	y	null pattern (<?>)
+
+abc <!> def	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	n	fail pattern <!>
+
+a[b}		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/error/	mismatched close
+
+c <before .d>		abacad		/mob: <c @ 3>/				one character and lookahead <before>
+.* <before .d>		abacad		/mob: <abac @ 0>/			multiple characters and lookahead <before>
+.* <before .\<>		abaca<d		/mob: <abac @ 0>/			multiple characters and lookahead <before> with a '<'
+.* <before \<>		aba<ca<d		/mob: <aba<ca @ 0>/		greedy any character and lookahead <before> with a '<'
+.*? <before \<>		aba<ca<d		/mob: <aba @ 0>/		non-greedy any character and lookahead <before> with a '<'
+
+## vim: noexpandtab tabstop=4 shiftwidth=4

Added: trunk/ext/nqp-rx/t/p6regex/rx_metachars
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_metachars	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,263 @@
+##   Metacharacter tests
+.			a		y	dot (.)
+.			\n		y	dot (.)
+.			''		n	dot (.)
+a\s+f			abcdef		n	whitespace (\s)
+ab\s+cdef		ab  cdef	y	whitespace (\s)
+a\S+f			abcdef		y	not whitespace (\S)
+a\S+f			ab cdef		n	not whitespace (\S)
+^ abc			abcdef		y	start and end of string (^)
+^ abc			abc\ndef	y	start and end of string (^)
+^ abc			def\nabc	n	start and end of string (^)
+def \n ^ abc		def\nabc	n	start and end of string (^)
+def $			abcdef		y	start and end of string ($)
+def $			abc\ndef	y	start and end of string ($)
+def $			def\nabc	n	start and end of string ($)
+def $ \n abc		def\nabc	n	start and end of string (^)
+abc \n $		abc\n		y	end of string ($)
+abc $			abc\n		n	end of string ($)
+<<def			abc-def		y	left word boundary, beginning of word
+<<bc			abc-def		n	left word boundary, mid-word
+c<<			abc-def		n	left word boundary, end of word
+<<abc			abc-def		y	left word boundary, BOS
+def<<			abc-def		n	left word boundary, EOS
+<<			-------		n	left word boundary, no word chars
+>>def			abc-def		n	right word boundary, beginning of word
+>>bc			abc-def		n	right word boundary, mid-word
+c>>			abc-def		y	right word boundary, end of word
+>>abc			abc-def		n	right word boundary, BOS
+def>>			abc-def		y	right word boundary, EOS
+>>			-------		n	right word boundary, no word chars
+
+c \n d			abc\ndef	y	logical newline (\n)
+# todo :pugs<feature>
+c \n d			abc\rdef	y	logical newline matches \r
+c \n+ d			abc\n\ndef	y	logical newline quantified
+a\n+f			abcdef		n	logical newline (\n)
+c \n d			abc\n\rdef	n	logical newline matches \n\r
+# todo :pugs<feature>
+c \n d			abc\r\ndef	y	logical newline matches \r\n
+b \n c			abc\ndef	n	logical newline (\n)
+\N			a		y	not logical newline (\N)
+a \N c			abc		y	not logical newline (\N)
+\N			''		n	not logical newline (\N)
+c \N d			abc\ndef	n	not logical newline (\N)
+c \N d			abc\rdef	n	not logical newline (\N)
+c \N+ d			abc\n\ndef	n	not logical newline (\N)
+a\N+f			abcdef		y	not logical newline (\N)
+c \N d			abc\n\rdef	n	not logical newline (\N)
+c \N d			abc\r\ndef	n	not logical newline (\N)
+b \N \n			abc\ndef	y	not logical newline (\N)
+\Aabc			Aabc		/Obsolete/	retired metachars (\A)
+\Aabc			abc\ndef	/Obsolete/	retired metachars (\A)
+abc\Z			abcZ		/Obsolete/	retired metachars (\Z)
+abc\Z			abc\ndef	/Obsolete/	retired metachars (\Z)
+abc\z			abcz		/Obsolete/	retired metachars (\z)
+def\z			abc\ndef	/Obsolete/	retired metachars (\z)
+abc # def		abc#def		y	comments (#)
+abc # xyz		abc#def		y	comments (#)
+abc # def \n \$		abc#def		y	comments (#)
+abc \# def		abc#def		y	comments (#)
+abc \# xyz		abc#def		n	comments (#)
+^ abc \# def $		abc#def		y	comments (#)
+^^ abc \n ^^ def	abc\ndef	y	line beginnings and endings (^^)
+# todo :pugs<feature>
+^^ abc \n ^^ def \n ^^	abc\ndef\n	n	line beginnings and endings (^^)
+^^ \n			\n		y	line beginnings and endings (^^)
+# todo :pugs<feature>
+\n ^^			\n		n	line beginnings and endings (^^)
+abc $$ \n def $$	abc\ndef	y	line beginnings and endings ($$)
+# todo :pugs<feature>
+abc $$ \n def $$ \n $$	abc\ndef\n	n	line beginnings and endings ($$)
+$$ \n			\n		y	line beginnings and endings ($$)
+# todo :pugs<feature>
+\n $$			\n		n	line beginnings and endings ($$)
+<[a..d]> | <[b..e]>	c		y	alternation (|)
+<[a..d]> | <[d..e]>	c		y	alternation (|)
+<[a..b]> | <[b..e]>	c		y	alternation (|)
+<[a..b]> | <[d..e]>	c		n	alternation (|)
+<[a..d]>+ | <[b..e]>+	bcd		y	alternation (|)
+^ [ <[a..d]>+ | <[b..e]>+ ] $	bcd		y	alternation (|)
+^ [ <[a..c]>+ | <[b..e]>+ ] $	bcd		y	alternation (|)
+^ [ <[a..d]>+ | <[c..e]>+ ] $	bcd		y	alternation (|)
+b|			bcd		/Null pattern/	alternation (|) - null right arg illegal
+|b			bcd		y	alternation (|) - null left arg ignored
+|			bcd		/Null pattern/	alternation (|) - null both args illegal
+\|			|		y	alternation (|) - literal must be escaped
+|			|		/Null pattern/	alternation (|) - literal must be escaped
+# todo :pugs<feature>
+<[a..d]> & <[b..e]>	c		y	conjunction (&)
+<[a..d]> & <[d..e]>	c		n	conjunction (&)
+<[a..b]> & <[b..e]>	c		n	conjunction (&)
+<[a..b]> & <[d..e]>	c		n	conjunction (&)
+# todo :pugs<feature>
+<[a..d]>+ & <[b..e]>+	bcd		y	conjunction (&)
+# todo :pugs<feature>
+^ [ <[a..d]>+ & <[b..e]>+ ] $	bcd		y	conjunction (&)
+# todo :pugs<feature>
+<[a..c]>+ & <[b..e]>+	bcd		y	conjunction (&)
+# todo :pugs<feature>
+<[a..d]>+ & <[c..e]>+	bcd		y	conjunction (&)
+b&			bcd		/rule error/	conjunction (&) - null right arg illegal
+&b			bcd		/rule error/	conjunction (&) - null left arg illegal
+&			bcd		/rule error/	conjunction (&) - null both args illegal
+\&			&		y	conjunction (&) - literal must be escaped
+&			&		/rule error/	conjunction (&) - literal must be escaped
+# todo :pge<leading |>
+a&|b			a&|b		/rule error/	alternation and conjunction (&|) - parse error
+a|&b			a|&b		/rule error/	alternation and conjunction (|&) - parse error
+|d|b			abc		y	leading alternation ignored
+ |d|b			abc		y	leading alternation ignored
+|d |b			abc		y	leading alternation ignored
+ | d | b		abc		y	leading alternation ignored
+# todo :pugs<feature> :pge<feature>
+ b |  | d		abc		n	null pattern invalid
+\pabc			pabc		/Obsolete/	retired metachars (\p)
+\p{InConsonant}		a		/Obsolete/	retired metachars (\p)
+\Pabc			Pabc		/Obsolete/	retired metachars (\P)
+\P{InConsonant}		a		/Obsolete/	retired metachars (\P)
+\Labc\E			LabcE		/Obsolete/	retired metachars (\L...\E)
+\LABC\E			abc		/Obsolete/	retired metachars (\L...\E)
+\Uabc\E			UabcE		/Obsolete/	retired metachars (\U...\E)
+\Uabc\E			ABC		/Obsolete/	retired metachars (\U...\E)
+\Qabc\E			QabcE		/Obsolete/	retired metachars (\Q...\E)
+\Qabc d?\E		abc d		/Obsolete/	retired metachars (\Q...\E)
+\Gabc			Gabc		/Obsolete/	retired metachars (\G)
+\1abc			1abc		/Obsolete/	retired metachars (\1)
+# todo :pugs<feature>
+^ \s+ $			\x0009\x0020\x00a0\x000a\x000b\x000c\x000d\x0085	y	0-255 whitespace (\s)
+# todo :pugs<feature>
+^ \h+ $			\x0009\x0020\x00a0	y	0-255 horizontal whitespace (\h)
+^ \V+ $			\x0009\x0020\x00a0	y	0-255 horizontal whitespace (\V)
+# todo :pugs<feature>
+^ \v+ $			\x000a\x000b\x000c\x000d\x0085	y	0-255 vertical whitespace (\v)
+^ \h+ $			\x000a\x000b\x000c\x000d\x0085	n	0-255 horizontal whitespace (\h)
+^ \v+ $			\x0009\x0020\x00a0	n	0-255 vertical whitespace (\v)
+# todo :pugs<feature>
+^ \s+ $			\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2008\x2009\x200a\x202f\x205f\x3000	y	unicode whitespace (\s)
+# todo :pugs<feature>
+^ \h+ $			\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2008\x2009\x200a\x202f\x205f\x3000	y	unicode whitespace (\h)
+^ \V+ $			\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2008\x2009\x200a\x202f\x205f\x3000	y	unicode whitespace (\V)
+^ \v+ $			\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2008\x2009\x200a\x202f\x205f\x3000	n	unicode whitespace (\v)
+c \t d			abc\tdef	y	horizontal tab (\t)
+c \t+ d			abc\t\tdef	y	horizontal tab (\t)
+a \t+ f			abcdef		n	horizontal tab (\t)
+b \t c			abc\tdef	n	horizontal tab (\t)
+\T			a		y	not horizontal tab (\T)
+a \T c			abc		y	not horizontal tab (\T)
+\T			''		n	not horizontal tab (\T)
+c \T d			abc\tdef	n	not horizontal tab (\T)
+c \T+ d			abc\t\tdef	n	not horizontal tab (\T)
+a \T+ f			abcdef		y	not horizontal tab (\T)
+c \r d			abc\rdef	y	return (\r)
+c \r+ d			abc\r\rdef	y	return (\r)
+a \r+ f			abcdef		n	return (\r)
+b \r c			abc\rdef	n	return (\r)
+\R			a		y	not return (\R)
+a \R c			abc		y	not return (\R)
+\R			''		n	not return (\R)
+c \R d			abc\rdef	n	not return (\R)
+c \R+ d			abc\r\rdef	n	not return (\R)
+a \R+ f			abcdef		y	not return (\R)
+c \f d			abc\fdef	y	formfeed (\f)
+c \f+ d			abc\f\fdef	y	formfeed (\f)
+a \f+ f			abcdef		n	formfeed (\f)
+b \f c			abc\fdef	n	formfeed (\f)
+\F			a		y	not formfeed (\F)
+a \F c			abc		y	not formfeed (\F)
+\F			''		n	not formfeed (\F)
+c \F d			abc\fdef	n	not formfeed (\F)
+c \F+ d			abc\f\fdef	n	not formfeed (\F)
+a \F+ f			abcdef		y	not formfeed (\F)
+# todo :pugs<feature>
+c \e d			abc\edef	y	escape (\e)
+# todo :pugs<feature>
+c \e+ d			abc\e\edef	y	escape (\e)
+a \e+ f			abcdef		n	escape (\e)
+b \e c			abc\edef	n	escape (\e)
+\E			a		y	not escape (\E)
+a \E c			abc		y	not escape (\E)
+\E			''		n	not escape (\E)
+# todo :pugs<feature>
+c \E d			abc\edef	n	not escape (\E)
+# todo :pugs<feature>
+c \E+ d			abc\e\edef	n	not escape (\E)
+a \E+ f			abcdef		y	not escape (\E)
+c \x0021 d		abc!def	y	hex (\x)
+c \x0021+ d		abc!!def	y	hex (\x)
+a \x0021+ f		abcdef		n	hex (\x)
+b \x0021 c		abc!def		n	hex (\x)
+c \x[0021] d		abc!def		y	hex (\x[])
+c \x[0021]+ d		abc!!def	y	hex (\x[])
+c \x[21,21] d		abc!!def	y	hex (\x[])
+c \x[21, 21] d		abc!!def	y	hex (\x[])
+c \x[ 21 , 21 ] d	abc!!def	y	hex (\x[])
+a \x[0021]+ f		abcdef		n	hex (\x[])
+b \x[0021] c		abc!def		n	hex (\x[])
+\X0021			a		y	not hex (\X)
+a \X0021 c		abc		y	not hex (\X)
+\X0021			''		n	not hex (\X)
+c \X0021 d		abc!def		n	not hex (\X)
+c \X0021+ d		abc!!def	n	not hex (\X)
+a \X0021+ f		abcdef		y	not hex (\X)
+\X[0021]		a		y	not hex (\X[])
+a \X[0021] c		abc		y	not hex (\X[])
+\X[0021]		''		n	not hex (\X[])
+c \X[0021] d		abc!def		n	not hex (\X[])
+c \X[0021]+ d		abc!!def	n	not hex (\X[])
+a \X[0021]+ f		abcdef		y	not hex (\X[])
+c \c33 d		abc!def	y	hex (\c)
+c \c33+ d		abc!!def	y	hex (\c)
+a \c33+ f		abcdef		n	hex (\c)
+b \c33 c		abc!def		n	hex (\c)
+c \c[33] d		abc!def		y	hex (\c[])
+c \c[33]+ d		abc!!def	y	hex (\c[])
+c \c[33,33] d		abc!!def	y	hex (\c[])
+c \c[ 33, 33] d		abc!!def	y	hex (\c[])
+c \c[ 33 , 33 ] d	abc!!def	y	hex (\c[])
+a \c[33]+ f		abcdef		n	hex (\c[])
+b \c[33] c		abc!def		n	hex (\c[])
+\C33			a		y	not hex (\C)
+a \C33 c		abc		y	not hex (\C)
+\C33			''		n	not hex (\C)
+c \C33 d		abc!def		n	not hex (\C)
+c \C33+ d		abc!!def	n	not hex (\C)
+a \C33+ f		abcdef		y	not hex (\C)
+\C[33]			a		y	not hex (\C[])
+a \C[33] c		abc		y	not hex (\C[])
+\C[33]			''		n	not hex (\C[])
+c \C[33] d		abc!def		n	not hex (\C[])
+c \C[33]+ d		abc!!def	n	not hex (\C[])
+a \C[33]+ f		abcdef		y	not hex (\C[])
+c \o041 d		abc!def		y	octal (\o)
+c \o41+ d		abc!!def	y	octal (\o)
+a \o41+ f		abcdef		n	octal (\o)
+b \o41 c		abc!def		n	octal (\o)
+c \o[41] d		abc!def		y	octal (\o[])
+c \o[41]+ d		abc!!def	y	octal (\o[])
+# todo :pugs<feature>
+c \o[41,41] d		abc!!def	y	octal (\o[])
+a \o[41]+ f		abcdef		n	octal (\o[])
+b \o[41] c		abc!def		n	octal (\o[])
+\O41			a		y	not octal (\O)
+a \O41 c		abc		y	not octal (\O)
+\O41			''		n	not octal (\O)
+c \O41 d		abc!def		n	not octal (\O)
+c \O41+ d		abc!!def	n	not octal (\O)
+a \O41+ f		abcdef		y	not octal (\O)
+\O[41]			a		y	not octal (\O[])
+a \O[41] c		abc		y	not octal (\O[])
+\O[41]			''		n	not octal (\O[])
+c \O[41] d		abc!def		n	not octal (\O[])
+c \O[41]+ d		abc!!def	n	not octal (\O[])
+a \O[41]+ f		abcdef		y	not octal (\O[])
+a\w+f			a=[ *f		n	word character
+a\w+f			abcdef		y	word character
+a\W+f			a&%- f		y	not word character
+a\W+f			abcdef		n	not word character
+a\d+f			abcdef		n	digit
+ab\d+cdef		ab42cdef	y	digit
+a\D+f			abcdef		y	not digit
+a\D+f			ab0cdef		n	not digit
+
+## vim: noexpandtab tabstop=4 shiftwidth=4

Added: trunk/ext/nqp-rx/t/p6regex/rx_modifiers
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_modifiers	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,154 @@
+##  modifiers
+:i bcd			abcdef	y	ignorecase (:i)
+:i bcd			aBcdef	y	ignorecase (:i)
+:i bcd			abCdef	y	ignorecase (:i)
+:i bcd			abcDef	y	ignorecase (:i)
+:i bcd			abc-ef	n	ignorecase (:i)
+:ignorecase bcd		abcdef	y	ignorecase (:ignorecase)
+:ignorecase bcd		aBCDef	y	ignorecase (:ignorecase)
+:ignorecase bcd		abc-ef	n	ignorecase (:ignorecase)
+# todo :pugs<feature>
+:i(0) bcd		abcdef	y	ignorecase, repetition (:i(0))
+:i(0) bcd		abCdef	n	ignorecase, repetition (:i(0))
+# todo :pugs<feature>
+:i(1) bcd		abcdef	y	ignorecase, repetition (:i(1))
+# todo :pugs<feature>
+:i(1) bcd		abCdef	y	ignorecase, repetition (:i(1))
+:i(1) bcd		aBxDef	n	ignorecase, repetition (:i(1))
+# todo :pugs<feature>
+:0i bcd			abcdef	y	ignorecase, repetition (:0i)
+:0i bcd			abCdef	n	ignorecase, repetition (:0i)
+# todo :pugs<feature>
+:1i bcd			abcdef	y	ignorecase, repetition (:1i)
+# todo :pugs<feature>
+:1i bcd			abCdef	y	ignorecase, repetition (:1i)
+# todo :pugs<feature>
+:1i bcd			aBCDef	y	ignorecase, repetition (:1i)
+:1i bcd			aBxDef	n	ignorecase, repetition (:1i)
+ab [:i cd ] ef		abcdef	y	ignorecase, lexical (:i)
+ab [:i cd ] ef		abCdef	y	ignorecase, lexical (:i)
+ab [:i cd ] ef		abcDef	y	ignorecase, lexical (:i)
+ab [:i cd ] ef		abCDef	y	ignorecase, lexical (:i)
+ab [:i cd ] ef		aBCDef	n	ignorecase, lexical (:i)
+ab [:i cd ] ef		abCDEf	n	ignorecase, lexical (:i)
+:i ab [:i cd ] ef	abCDef	y	ignorecase, lexical (:i)
+:i ab [:i cd ] ef	AbCDeF	y	ignorecase, lexical (:i)
+:i ab [:i cd ] ef	AbcdeF	y	ignorecase, lexical (:i)
+# todo :pugs<feature>
+:i a [:i(0) b [:i(1) c [:0i d [:1i e [:i(0) f ] ] ] ] ]		AbCdEf		y	ignorecase, lexical (:i)
+# todo :pugs<feature>
+:i aa [:i(0) bb [:i(1) cc [:0i dd [:1i ee [:i(0) ff ] ] ] ] ]	AabbCcddEeff	y	ignorecase, lexical (:i)
+:i a [:i(0) b [:i(1) c [:0i d [:1i e [:i(0) f ] ] ] ] ]		AbCdEF		n	ignorecase, lexical (:i)
+:i aa [:i(0) bb [:i(1) cc [:0i dd [:1i ee [:i(0) ff ] ] ] ] ]	AabbCcddEeFf	n	ignorecase, lexical (:i)
+# todo :pugs<feature>
+:i ab [:i(0) cd ] ef	AbcdeF	y	ignorecase, lexical repetition (:i)
+# todo :pugs<feature> :pge<feature>
+:i ab [:!i cd ] ef	AbcdeF	y	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:i ab [:0i cd ] ef	AbcdeF	y	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:0i ab [:1i cd ] ef	abCDef	y	ignorecase, lexical repetition (:i)
+:0i ab [:1i cd ] ef	AbCDeF	n	ignorecase, lexical repetition (:i)
+:0i ab [:1i cd ] ef	AbcdeF	n	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:0i ab [:i(0) cd ] ef	abcdef	y	ignorecase, lexical repetition (:i)
+:0i ab [:1i cd ] ef	AbcdeF	n	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:i(1) ab [:1i cd ] ef	AbCdeF	y	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:i(1) ab [:i(0) cd ] ef	AbcdeF	y	ignorecase, lexical repetition (:i)
+:i(1) ab [:i(0) cd ] ef	AbcDeF	n	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:i(2) ab [:i(999) cd ] ef	ABCDEF	y	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:1i ab [:i(1) cd ] ef		ABCDEF	y	ignorecase, lexical repetition (:i)
+:0i ab [:1i cd ] ef		abcDeF	n	ignorecase, lexical repetition (:i)
+# todo :pugs<feature>
+:2i ab [:999i cd ] ef		ABCDEF	y	ignorecase, lexical repetition (:i)
+ab [:ignorecase cd ] ef		abCDef	y	ignorecase, lexical (:ignorecase)
+ab [:ignorecase cd ] ef		aBCDef	n	ignorecase, lexical (:ignorecase)
+# todo :pugs<feature>
+:1ignorecase ab [:ignorecase(1) cd ] ef	ABCDEF	y	ignorecase, lexical repetition (:ignorecase)
+# todo :pugs<feature>
+:s bcd			a bcdef		y	sigspace (:s)
+# todo :pugs<feature>
+:s bcd			a bcd ef	y	sigspace (:s)
+:s bcd			abcdef		n	sigspace (:s)
+:s bcd			abcd ef		n	sigspace (:s)
+:s bcd			ab cdef		n	sigspace (:s)
+# todo :pugs<feature>
+:s b c d		a b c d ef	y	sigspace (:s)
+# todo :pugs<feature>
+:s b c d		a b c def	y	sigspace (:s)
+:s b c d		ab c d ef	n	sigspace (:s)
+:s b c d		a bcdef		n	sigspace (:s)
+:s b c d		abcdef		n	sigspace (:s)
+# todo :pugs<feature>
+:sigspace bcd		a bcdef		y	sigspace (:sigspace)
+# todo :pugs<feature>
+:sigspace bcd		a bcd ef	y	sigspace (:sigspace)
+:sigspace bcd		abcdef		n	sigspace (:sigspace)
+# todo :pugs<feature>
+:sigspace b c d		a b c d ef	y	sigspace (:sigspace)
+# todo :pugs<feature>
+:sigspace b c d		a b c def	y	sigspace (:sigspace)
+:sigspace b c d		ab c d ef	n	sigspace (:sigspace)
+# todo :pugs<feature>
+:s(1) b c [:s(0) d e f ]	a b c def	y	sigspace, lexical repetition (:s)
+# todo :pugs<feature> :pge<feature>
+:s b c [:!s d e f ]	a b c def	y	sigspace, lexical repetition (:s)
+:s(0) b c [:s(1) d e f ]	a b c def	n	sigspace, lexical repetition (:s)
+# todo :pge<feature>
+:!s b c [:s d e f ]	a b c def	n	sigspace, lexical repetition (:s)
+:s(0) b c [:s(0) d e f ]	a b c def	n	sigspace, lexical repetition (:s)
+# todo :pge<feature>
+:!s b c [:!s d e f ]	a b c def	n	sigspace, lexical repetition (:s)
+# todo :pugs<feature>
+:s ab 				ab		y	sigspace, trailing ws
+foo\s*'-'?\s*bar		foo\t \n-\n\t bar	y	basic match
+foo\s*'-'?\s*bar		foo - bar	y	basic match
+foo\s+'-'?\s*bar		foo   bar	y	basic match \s+ \s*
+foo\s+'-'?\s*bar		foo  -bar	y	basic match \s+ \s*
+foo\s*'-'?\s+bar		foo-  bar	y	basic match \s* \s+
+foo '-'? bar			foo-bar		y	basic match \s* \s*
+foo '-'? bar			foobar		y	basic match
+foo '-'? bar			foo - bar	n	basic non-match
+# todo :pugs<feature>
+:s foo '-'? bar			foo\n \t- \t\t\nbar	y	basic ws match
+# todo :pugs<feature>
+:s foo '-'? bar			foo - bar	y	basic ws match
+# todo :pugs<feature>
+:s foo '-'? bar			foo   bar	y	basic ws match \s+ \s*
+# todo :pugs<feature>
+:s foo '-'? bar			foo  -bar	y	basic ws match \s+ \s*
+# todo :pugs<feature>
+:s foo '-'? bar			foo-  bar	y	basic ws match \s* \s+
+# todo :pugs<feature>
+:s foo '-'? bar			foo-bar		y	basic ws match \s* \s*
+:s foo '-'? bar			foobar		n	basic ws non-match
+:s()foo '-'? bar		foo - bar	n	basic ws match
+# todo :pugs<feature> :pge<feature>
+:s[]foo '-'? bar		foo - bar	y	basic ws match
+# todo :pugs<feature>
+:s<?wb>foo '-'? bar		foo - bar	y	basic ws match with boundary modifier separation
+# todo :pugs<feature>
+:s::foo '-'? bar			foo - bar	y	basic ws match with backtrack no-op modifier separation
+:s::(\w+) ':=' (\S+)		dog := spot	/mob 0: <dog @ 0>/	sigspace and capture together
+:s::(\w+) ':=' (\S+)		dog := spot	/mob 1: <spot @ 7>/	sigspace and capture together
+# todo :pugs<feature> :pge<feature>
+:perl5 \A.*? bcd\Q$\E..\z	a bcd$ef	y	perl5 syntax (:perl5)
+# todo :pugs<feature>
+:x(6) \d			123456		y	repetition (:x)
+# todo :pugs<feature>
+:x(3) \d			123456		y	repetition (:x)
+# todo :pugs<feature>
+:x(0) \d			123456		y	repetition (:x)
+# todo :pugs<feature>
+:nth(3) a \d			a1a2a3		y	nth occurance (:nth)
+# todo :pge<feature>
+:nth(4) a \d			a1a2a3		n	nth occurance (:nth)
+# todo :pge<feature>
+:nth(0) a \d			a1a2a3		n	nth occurance (:nth)
+:s^[\d+ ]* abc			11 12 13 abc	y	<?ws> before closing bracket
+
+## vim: noexpandtab tabstop=4 shiftwidth=4

Added: trunk/ext/nqp-rx/t/p6regex/rx_quantifiers
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_quantifiers	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,189 @@
+##  Quantifiers
+
+xa*			xaaaay		/<xaaaa @ 0>/	star 2+
+xa*			xay		/<xa @ 0>/	star 1
+xa*			xy		/<x @ 0>/	star 0
+xa*y			xaaaay		/<xaaaay @ 0>/	star 2+
+xa*y			xay		/<xay @ 0>/	star 1
+xa*y			xy		/<xy @ 0>/	star 0
+
+xa+			xaaaay		/<xaaaa @ 0>/	plus 2+
+xa+			xay		/<xa @ 0>/	plus 1
+xa+			xy		n		plus 0
+xa+y			xaaaay		/<xaaaay @ 0>/	plus 2+
+xa+y			xay		/<xay @ 0>/	plus 1
+xa+y			xy		n		plus 0
+
+xa?			xaaaay		/<xa @ 0>/	ques 2+
+xa?			xay		/<xa @ 0>/	ques 1
+xa?			xy		/<x @ 0>/	ques 0
+xa?y			xaaaay		n		ques 2+
+xa?y			xay		/<xay @ 0>/	ques 1
+xa?y			xy		/<xy @ 0>/	ques 0
+
+xa*!			xaaaay		/<xaaaa @ 0>/	star greedy 2+
+xa*!			xay		/<xa @ 0>/	star greedy 1
+xa*!			xy		/<x @ 0>/	star greedy 0
+xa*!y			xaaaay		/<xaaaay @ 0>/	star greedy 2+
+xa*!y			xay		/<xay @ 0>/	star greedy 1
+xa*!y			xy		/<xy @ 0>/	star greedy 0
+
+xa+!			xaaaay		/<xaaaa @ 0>/	plus greedy 2+
+xa+!			xay		/<xa @ 0>/	plus greedy 1
+xa+!			xy		n		plus greedy 0
+xa+!y			xaaaay		/<xaaaay @ 0>/	plus greedy 2+
+xa+!y			xay		/<xay @ 0>/	plus greedy 1
+xa+!y			xy		n		plus greedy 0
+
+xa?!			xaaaay		/<xa @ 0>/	ques greedy 2+
+xa?!			xay		/<xa @ 0>/	ques greedy 1
+xa?!			xy		/<x @ 0>/	ques greedy 0
+xa?!y			xaaaay		n		ques greedy 2+
+xa?!y			xay		/<xay @ 0>/	ques greedy 1
+xa?!y			xy		/<xy @ 0>/	ques greedy 0
+
+xa*:!			xaaaay		/<xaaaa @ 0>/	star :greedy 2+
+xa*:!			xay		/<xa @ 0>/	star :greedy 1
+xa*:!			xy		/<x @ 0>/	star :greedy 0
+xa*:!y			xaaaay		/<xaaaay @ 0>/	star :greedy 2+
+xa*:!y			xay		/<xay @ 0>/	star :greedy 1
+xa*:!y			xy		/<xy @ 0>/	star :greedy 0
+
+xa+:!			xaaaay		/<xaaaa @ 0>/	plus :greedy 2+
+xa+:!			xay		/<xa @ 0>/	plus :greedy 1
+xa+:!			xy		n		plus :greedy 0
+xa+:!y			xaaaay		/<xaaaay @ 0>/	plus :greedy 2+
+xa+:!y			xay		/<xay @ 0>/	plus :greedy 1
+xa+:!y			xy		n		plus :greedy 0
+
+xa?:!			xaaaay		/<xa @ 0>/	ques :greedy 2+
+xa?:!			xay		/<xa @ 0>/	ques :greedy 1
+xa?:!			xy		/<x @ 0>/	ques :greedy 0
+xa?:!y			xaaaay		n		ques :greedy 2+
+xa?:!y			xay		/<xay @ 0>/	ques :greedy 1
+xa?:!y			xy		/<xy @ 0>/	ques :greedy 0
+
+xa*?			xaaaay		/<x @ 0>/	star eager 2+
+xa*?			xay		/<x @ 0>/	star eager 1
+xa*?			xy		/<x @ 0>/	star eager 0
+xa*?y			xaaaay		/<xaaaay @ 0>/	star eager 2+
+xa*?y			xay		/<xay @ 0>/	star eager 1
+xa*?y			xy		/<xy @ 0>/	star eager 0
+
+xa+?			xaaaay		/<xa @ 0>/	plus eager 2+
+xa+?			xay		/<xa @ 0>/	plus eager 1
+xa+?			xy		n		plus eager 0
+xa+?y			xaaaay		/<xaaaay @ 0>/	plus eager 2+
+xa+?y			xay		/<xay @ 0>/	plus eager 1
+xa+?y			xy		n		plus eager 0
+
+xa??			xaaaay		/<x @ 0>/	ques eager 2+
+xa??			xay		/<x @ 0>/	ques eager 1
+xa??			xy		/<x @ 0>/	ques eager 0
+xa??y			xaaaay		n		ques eager 2+
+xa??y			xay		/<xay @ 0>/	ques eager 1
+xa??y			xy		/<xy @ 0>/	ques eager 0
+
+xa*:?			xaaaay		/<x @ 0>/	star :eager 2+
+xa*:?			xay		/<x @ 0>/	star :eager 1
+xa*:?			xy		/<x @ 0>/	star :eager 0
+xa*:?y			xaaaay		/<xaaaay @ 0>/	star :eager 2+
+xa*:?y			xay		/<xay @ 0>/	star :eager 1
+xa*:?y			xy		/<xy @ 0>/	star :eager 0
+
+xa+:?			xaaaay		/<xa @ 0>/	plus :eager 2+
+xa+:?			xay		/<xa @ 0>/	plus :eager 1
+xa+:?			xy		n		plus :eager 0
+xa+:?y			xaaaay		/<xaaaay @ 0>/	plus :eager 2+
+xa+:?y			xay		/<xay @ 0>/	plus :eager 1
+xa+:?y			xy		n		plus :eager 0
+
+xa?:?			xaaaay		/<x @ 0>/	ques :eager 2+
+xa?:?			xay		/<x @ 0>/	ques :eager 1
+xa?:?			xy		/<x @ 0>/	ques :eager 0
+xa?:?y			xaaaay		n		ques :eager 2+
+xa?:?y			xay		/<xay @ 0>/	ques :eager 1
+xa?:?y			xy		/<xy @ 0>/	ques :eager 0
+
+xa*:y			xaaaay		/<xaaaay @ 0>/	star cut 2+
+xa*:y			xay		/<xay @ 0>/	star cut 1
+xa*:y			xy		/<xy @ 0>/	star cut 0
+xa*:a			xaaaay		n		star cut 2+
+xa*:a			xay		n		star cut 1
+
+xa+:y			xaaaay		/<xaaaay @ 0>/	plus cut 2+
+xa+:y			xay		/<xay @ 0>/	plus cut 1
+xa+:y			xy		n		plus cut 0
+xa+:a			xaaaay		n		plus cut 2+
+xa+:a			xay		n		plus cut 1
+
+xa?:y			xaaaay		n		ques cut 2+
+xa?:y			xay		/<xay @ 0>/	ques cut 1
+xa?:y			xy		/<xy @ 0>/	ques cut 0
+xa?:a			xaaaay		/<xaa @ 0>	ques cut 2+
+xa?:a			xay		n		ques cut 1
+
+:ratchet xa*y			xaaaay		/<xaaaay @ 0>/	star ratchet 2+
+:ratchet xa*y			xay		/<xay @ 0>/	star ratchet 1
+:ratchet xa*y			xy		/<xy @ 0>/	star ratchet 0
+:ratchet xa*a			xaaaay		n		star ratchet 2+
+:ratchet xa*a			xay		n		star ratchet 1
+
+:ratchet xa+y			xaaaay		/<xaaaay @ 0>/	plus ratchet 2+
+:ratchet xa+y			xay		/<xay @ 0>/	plus ratchet 1
+:ratchet xa+y			xy		n		plus ratchet 0
+:ratchet xa+a			xaaaay		n		plus ratchet 2+
+:ratchet xa+a			xay		n		plus ratchet 1
+
+:ratchet xa?y			xaaaay		n		ques ratchet 2+
+:ratchet xa?y			xay		/<xay @ 0>/	ques ratchet 1
+:ratchet xa?y			xy		/<xy @ 0>/	ques ratchet 0
+:ratchet xa?a			xaaaay		/<xaa @ 0>	ques ratchet 2+
+:ratchet xa?a			xay		n		ques ratchet 1
+
+:ratchet xa*!y			xaaaay		/<xaaaay @ 0>/	star ratchet greedy 2+
+:ratchet xa*!y			xay		/<xay @ 0>/	star ratchet greedy 1
+:ratchet xa*!y			xy		/<xy @ 0>/	star ratchet greedy 0
+:ratchet xa*!a			xaaaay		/<xaaaa @ 0>/	star ratchet greedy 2+
+:ratchet xa*!a			xay		/<xa @ 0>/	star ratchet greedy 1
+
+:ratchet xa+!y			xaaaay		/<xaaaay @ 0>/	plus ratchet greedy 2+
+:ratchet xa+!y			xay		/<xay @ 0>/	plus ratchet greedy 1
+:ratchet xa+!y			xy		n		plus ratchet greedy 0
+:ratchet xa+!a			xaaaay		/<xaaaa @ 0>/	plus ratchet greedy 2+
+:ratchet xa+!a			xay		n		plus ratchet greedy 1
+
+:ratchet xa?!y			xaaaay		n		ques ratchet greedy 2+
+:ratchet xa?!y			xay		/<xay @ 0>/	ques ratchet greedy 1
+:ratchet xa?!y			xy		/<xy @ 0>/	ques ratchet greedy 0
+:ratchet xa?!a			xaaaay		/<xaa @ 0>	ques ratchet greedy 2+
+:ratchet xa?!a			xay		/<xa @ 0>	ques ratchet greedy 1
+
+
+## Quantifier bare range
+.**2			a			n	only one character
+.**2			ab			y	two characters
+a**2			foobar		n	only one "a" character
+a**2			baabaa		y	two "a" characters
+a**0..4			bbbbbbb		y	no "a" characters
+a**2..4			bababab		n	not two consecutive "a" characters
+a**2..4			baabbbb		y	two "a" characters
+a**2..4			baaabbb		y	three "a" characters
+a**2..4			baaaabb		y	four "a" characters
+a**2..4			baaaaaa		y	four "a" characters
+a**2..*			baaaaaa		y	six "a" characters
+a**?2..*		baaaaaa		y	two "a" characters (non-greedy)
+a**:?2..*		baaaaaa		y	two "a" characters (non-greedy)
+a**!2..*		baaaaaa		y	six "a" characters (explicit greed)
+a**:!2..*		baaaaaa		y	six "a" characters (explicit greed)
+a**?2..4		baaabbb		y	two "a" characters (non-greedy)
+a**:?2..4		baaabbb		y	two "a" characters (non-greedy)
+a**!2..4		baaabbb		y	three "a" characters (explicit greed)
+a**:!2..4		baaabbb		y	three "a" characters (explicit greed)
+
+^[\w+] ** \,$		foo,bar,baz	y	** with a term
+^[\w+] **? \, ....$	foo,bar,baz	y	**? with a term
+^[\w+] ** [\,\s*]$	foo, bar, baz	y	** with term + ws
+:sigspace ^[\w+] ** \, $	foo, bar ,baz	y	** under :sigspace
+:sigspace ^[\w+]** \, $	foo, bar ,baz	n	** under :sigspace w/o ws
+:sigspace ^[\w+]** \, $	foo,bar,baz	y	** under :sigspace w/o ws

Added: trunk/ext/nqp-rx/t/p6regex/rx_subrules
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_subrules	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,67 @@
+##  builtin subrules
+
+<ident>			2+3 ab2		/mob<ident>: <ab2 @ 4>/		capturing builtin <ident>
+<name>			ab::cd::x3::42	/mob<name>: <ab::cd::x3 @ 0>/	capturing builtin <name>
+
+<.ident>			2+3 ab2		y		non-capturing builtin <.ident>
+<.name>			ab::cd::x3::42	y	non-capturing builtin <.name>
+
+<?wb>def		abc\ndef\n-==\nghi	y	word boundary \W\w
+abc<?wb>		abc\ndef\n-==\nghi	y	word boundary \w\W
+<?wb>abc		abc\ndef\n-==\nghi	y	BOS word boundary
+ghi<?wb>		abc\ndef\n-==\nghi	y	EOS word boundary
+a<?wb>			abc\ndef\n-==\nghi	n	\w\w word boundary
+\-<?wb>			abc\ndef\n-==\nghi	n	\W\W word boundary
+<!wb>def		abc\ndef\n-==\nghi	n	nonword boundary \W\w
+abc<!wb>		abc\ndef\n-==\nghi	n	nonword boundary \w\W
+<!wb>abc		abc\ndef\n-==\nghi	n	BOS nonword boundary
+ghi<!wb>		abc\ndef\n-==\nghi	n	EOS nonword boundary
+a<!wb>			abc\ndef\n-==\nghi	y	\w\w nonword boundary
+\-<!wb>			abc\ndef\n-==\nghi	y	\W\W nonword boundary
+
+<upper>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<upper>: <A @ 45>/		<upper>
+<+upper>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <A @ 45>/			<+upper>
+<+upper>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <ABCDEFGHIJ @ 45>/	<+upper>+
+<lower>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<lower>: <a @ 55>/		<lower>
+<+lower>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <a @ 55>/			<+lower>
+<+lower>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <abcdefghij @ 55>/	<+lower>+
+<alpha>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<alpha>: <_ @ 31>/		<alpha>
+<+alpha>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <_ @ 31>/			<+alpha>
+<+alpha>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <_ @ 31>/	<+alpha>+
+<digit>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<digit>: <0 @ 35>/		<digit>
+<+digit>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <0 @ 35>/			<+digit>
+<+digit>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <0123456789 @ 35>/	<+digit>+
+<xdigit>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<xdigit>: <0 @ 35>/		<xdigit>
+<+xdigit>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <0 @ 35>/			<+xdigit>
+<+xdigit>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <0123456789ABCDEF @ 35>/	<+xdigit>+
+<space>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<space>: <\t @ 0>/		<space>
+<+space>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <\t @ 0>/		<+space>
+<+space>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <\t\n\r  @ 0>/		<+space>+
+<blank>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<blank>: <\t @ 0>/		<blank>
+<+blank>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <\t @ 0>/			<+blank>
+<+blank>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <\t @ 0>/			<+blank>+
+<cntrl>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<cntrl>: <\t @ 0>/		<cntrl>
+<+cntrl>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <\t @ 0>/			<+cntrl>
+<+cntrl>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <\t\n\r @ 0>/		<+cntrl>+
+<punct>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<punct>: <! @ 4>/		<punct>
+<+punct>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <! @ 4>/			<+punct>
+<+punct>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <!"#$%&/		<+punct>+
+<alnum>		\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob<alnum>: <0 @ 35>/		<alnum>
+<+alnum>	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <0 @ 35>/	<+alnum>
+<+alnum>+	\t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij	/mob: <0123456789ABCDEFGHIJabcdefghij @ 35>/	<+alnum>+
+<+alnum+[_]>	ident_1				y	union of character classes
+<+[ab]+[\-]>+	aaa-bbb				y	enumerated character classes
+<+  [ a  b ]+[\-]>+		aaa-bbb		y	whitespace is ignored within square brackets and after the initial +
+<+[ab]+[\-]>+	-ab-				y	enumerated character classes variant
+<+[ab]+[\-]>+	----				y	enumerated character classes variant
+<+[ab]+[\-]>+	-				y	enumerated character classes variant
+<-[ab]+[cd]>+	ccdd				y	enumerated character classes variant
+^<-[ab]+[cd]>+$	caad				n	enumerated character classes variant
+<-  [ a  b ]+[cd]>+	ccdd			y	whitespace is ignored within square brackets and after the initial -
+^<-upper>dent	ident_1				y	inverted character class
+^<-upper>dent	Ident_1				n	inverted character class
+<+alpha-[Jj]>+	abc				y	character class with no j
+<+ alpha - [ Jj ]>	abc			y	character class with no j with ws
+^<+alpha-[Jj]>+$	aJc			n	character class with no j fail
+
+## vim: noexpandtab tabstop=4 shiftwidth=4

Added: trunk/ext/nqp-rx/t/p6regex/rx_syntax
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/t/p6regex/rx_syntax	Thu Nov 12 19:22:40 2009	(r42451)
@@ -0,0 +1,41 @@
+##  syntax errors
+
+{{		abcdef		/Missing closing braces/	unterminated closure
+\1		abcdef		/reserved/			back references
+\x[		abcdef		/Missing close bracket/		unterminated \x[..]
+\X[		abcdef		/Missing close bracket/		unterminated \X[..]
+
+* abc		abcdef		/Quantifier follows nothing/	bare * at start
+  * abc		abcdef		/Quantifier follows nothing/	bare * after ws
+[*|a]		abcdef		/Quantifier follows nothing/	bare * after [
+[ *|a]		abcdef		/Quantifier follows nothing/	bare * after [+sp
+[a|*]		abcdef		/Quantifier follows nothing/	bare * after |
+[a| *]		abcdef		/Quantifier follows nothing/	bare * after |+sp
+
++ abc		abcdef		/Quantifier follows nothing/	bare + at start
+  + abc		abcdef		/Quantifier follows nothing/	bare + after ws
+[+|a]		abcdef		/Quantifier follows nothing/	bare + after [
+[ +|a]		abcdef		/Quantifier follows nothing/	bare + after [+sp
+[a|+]		abcdef		/Quantifier follows nothing/	bare + after |
+[a| +]		abcdef		/Quantifier follows nothing/	bare + after |+sp
+
+? abc		abcdef		/Quantifier follows nothing/	bare ? at start
+  ? abc		abcdef		/Quantifier follows nothing/	bare ? after ws
+[?|a]		abcdef		/Quantifier follows nothing/	bare ? after [
+[ ?|a]		abcdef		/Quantifier follows nothing/	bare ? after [+sp
+[a|?]		abcdef		/Quantifier follows nothing/	bare ? after |
+[a| ?]		abcdef		/Quantifier follows nothing/	bare ? after |+sp
+
+: abc		abcdef		/Quantifier follows nothing/	bare : at start
+  : abc		abcdef		/Quantifier follows nothing/	bare : after ws
+[:|a]		abcdef		/Quantifier follows nothing/	bare : after [
+[ :|a]		abcdef		/Quantifier follows nothing/	bare : after [+sp
+[a|:]		abcdef		/Quantifier follows nothing/	bare : after |
+[a| :]		abcdef		/Quantifier follows nothing/	bare : after |+sp
+
+		abcdef		/Null pattern illegal/		null pattern
+  		abcdef		/Null pattern illegal/		ws null pattern
+
+  =abc		abcdef		/LHS of alias must be lvalue/	bare : after ws
+[ =a]		abcdef		/LHS of alias must be lvalue/	bare : after [+sp
+[a| =a]		abcdef		/LHS of alias must be lvalue/	bare : after |+sp


More information about the parrot-commits mailing list