[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