diff --git a/Configure.PL b/Configure.PL
--- a/Configure.PL
+++ b/Configure.PL
@@ -72,7 +72,7 @@
 s/^-I// for @include_dirs;
 
 my @cc_options = map { /^-optc(.+)/ ? $1 : () } (split(/\s+/, $embed_flags), split(/\s+/, $ccdlflags));
-my @ld_options = map { /^-optl(.+)/ ? $1 : () } (split(/\s+/, $embed_flags), split(/\s+/, $ccdlflags));
+my @ld_options = grep { not /,/ } map { /^-optl(.+)/ ? $1 : () } (split(/\s+/, $embed_flags), split(/\s+/, $ccdlflags));
 
 open INFO, ">Pugs.buildinfo" or die "Cannot write build info: $!";
 print INFO << ".";
diff --git a/Pugs.cabal b/Pugs.cabal
--- a/Pugs.cabal
+++ b/Pugs.cabal
@@ -1,5 +1,5 @@
 Name            : Pugs
-Version         : 6.2.13.10
+Version         : 6.2.13.11
 license         : BSD3
 license-file    : LICENSE
 cabal-version   : >= 1.2
@@ -162,7 +162,7 @@
     build-depends:
         base, haskell98, filepath, mtl, stm, parsec < 3.0.0, network,
         pretty, time, random, process, containers, bytestring,
-        array, directory, utf8-string, binary, haskeline >= 0.2.1,
+        array, directory, utf8-string, binary, haskeline >= 0.2.1, FindBin,
 
         MetaObject       >= 0.0.4,
         HsParrot         >= 0.0.2,
diff --git a/blib6/pugs/perl5/lib/Pugs/Compiler/Rule.pm b/blib6/pugs/perl5/lib/Pugs/Compiler/Rule.pm
--- a/blib6/pugs/perl5/lib/Pugs/Compiler/Rule.pm
+++ b/blib6/pugs/perl5/lib/Pugs/Compiler/Rule.pm
@@ -4,7 +4,7 @@
 
 package Pugs::Compiler::Rule;
 
-our $VERSION = '0.28';
+our $VERSION = '0.35';
 
 use base 'Pugs::Compiler::Regex';
 
diff --git a/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5.pm b/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5.pm
--- a/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5.pm
+++ b/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5.pm
@@ -295,6 +295,7 @@
 }
 sub special_char {
     my ($char, $data) = $_[0] =~ /^.(.)(.*)/;
+    $_[1] = '' unless defined $_[1];
 
     return  "$_[1] perl5( '\\N{" . join( "}\\N{", split( /\s*;\s*/, $data ) ) . "}' )\n"
         if $char eq 'c';
diff --git a/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5/CharClass.pm b/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5/CharClass.pm
--- a/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5/CharClass.pm
+++ b/blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5/CharClass.pm
@@ -1,9 +1,11 @@
 package Pugs::Emitter::Rule::Perl5::CharClass;
 
 use strict;
+use charnames ();
 use Data::Dumper;
+use utf8;
 
-use vars qw( %char_class );
+use vars qw( %char_class %extra_unicode );
 BEGIN {
     %char_class = map { $_ => 1 } qw(
         alpha alnum ascii blank
@@ -11,8 +13,57 @@
         print punct space upper
         word  xdigit
     );
+    %extra_unicode = (
+        'Lr'       => '(?:\p{isLl}|\p{isLu}|\p{isLt})',
+        'InLatin1Supplement'      => '[\x{0080}–\x{00FF}]',
+        'InCyrillicSupplementary' => '[\x{0500}–\x{052F}]',
+
+        # http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Grapheme_Link=True:]
+        'GraphemeLink'  => '[\x{94d}\x{9cd}\x{a4d}\x{acd}\x{b4d}\x{bcd}\x{c4d}\x{ccd}\x{d4d}\x{dca}\x{e3a}\x{f84}\x{1039}\x{103a}\x{1714}\x{1734}\x{17d2}\x{1b44}\x{1baa}\x{a806}\x{a8c4}\x{a953}\x{10a3f}]',
+        
+        # $ perl -e 'use Set::IntSpan; BEGIN{ binmode(STDOUT, ":utf8") }END{ $set= new Set::IntSpan @nums; $set="$set"; $set =~ s/(\d+)/ sprintf("\\x{%0X}",$1) /ge; print $set,"\n"} for (0..0x10000) { push @nums,$_ if chr($_) =~ /\p{Cn}/ } '
+        'Cn' => '[\x{242}-\x{24F},\x{370}-\x{373},\x{376}-\x{379},\x{37B}-\x{37D},\x{37F}-\x{383},\x{38B},\x{38D},\x{3A2},\x{3CF},\x{487},\x{4CF},\x{4FA}-\x{4FF},\x{510}-\x{530},\x{557}-\x{558},\x{560},\x{588},\x{58B}-\x{590},\x{5BA},\x{5C8}-\x{5CF},\x{5EB}-\x{5EF},\x{5F5}-\x{5FF},\x{604}-\x{60A},\x{616}-\x{61A},\x{61C}-\x{61D},\x{620},\x{63B}-\x{63F},\x{65F},\x{70E},\x{74B}-\x{74C},\x{76E}-\x{77F},\x{7B2}-\x{900},\x{93A}-\x{93B},\x{94E}-\x{94F},\x{955}-\x{957},\x{971}-\x{97C},\x{97E}-\x{980},\x{984},\x{98D}-\x{98E},\x{991}-\x{992},\x{9A9},\x{9B1},\x{9B3}-\x{9B5},\x{9BA}-\x{9BB},\x{9C5}-\x{9C6},\x{9C9}-\x{9CA},\x{9CF}-\x{9D6},\x{9D8}-\x{9DB},\x{9DE},\x{9E4}-\x{9E5},\x{9FB}-\x{A00},\x{A04},\x{A0B}-\x{A0E},\x{A11}-\x{A12},\x{A29},\x{A31},\x{A34},\x{A37},\x{A3A}-\x{A3B},\x{A3D},\x{A43}-\x{A46},\x{A49}-\x{A4A},\x{A4E}-\x{A58},\x{A5D},\x{A5F}-\x{A65},\x{A75}-\x{A80},\x{A84},\x{A8E},\x{A92},\x{AA9},\x{AB1},\x{AB4},\x{ABA}-\x{ABB},\x{AC6},\x{ACA},\x{ACE}-\x{ACF},\x{AD1}-\x{ADF},\x{AE4}-\x{AE5},\x{AF0},\x{AF2}-\x{B00},\x{B04},\x{B0D}-\x{B0E},\x{B11}-\x{B12},\x{B29},\x{B31},\x{B34},\x{B3A}-\x{B3B},\x{B44}-\x{B46},\x{B49}-\x{B4A},\x{B4E}-\x{B55},\x{B58}-\x{B5B},\x{B5E},\x{B62}-\x{B65},\x{B72}-\x{B81},\x{B84},\x{B8B}-\x{B8D},\x{B91},\x{B96}-\x{B98},\x{B9B},\x{B9D},\x{BA0}-\x{BA2},\x{BA5}-\x{BA7},\x{BAB}-\x{BAD},\x{BBA}-\x{BBD},\x{BC3}-\x{BC5},\x{BC9},\x{BCE}-\x{BD6},\x{BD8}-\x{BE5},\x{BFB}-\x{C00},\x{C04},\x{C0D},\x{C11},\x{C29},\x{C34},\x{C3A}-\x{C3D},\x{C45},\x{C49},\x{C4E}-\x{C54},\x{C57}-\x{C5F},\x{C62}-\x{C65},\x{C70}-\x{C81},\x{C84},\x{C8D},\x{C91},\x{CA9},\x{CB4},\x{CBA}-\x{CBB},\x{CC5},\x{CC9},\x{CCE}-\x{CD4},\x{CD7}-\x{CDD},\x{CDF},\x{CE2}-\x{CE5},\x{CF0}-\x{D01},\x{D04},\x{D0D},\x{D11},\x{D29},\x{D3A}-\x{D3D},\x{D44}-\x{D45},\x{D49},\x{D4E}-\x{D56},\x{D58}-\x{D5F},\x{D62}-\x{D65},\x{D70}-\x{D81},\x{D84},\x{D97}-\x{D99},\x{DB2},\x{DBC},\x{DBE}-\x{DBF},\x{DC7}-\x{DC9},\x{DCB}-\x{DCE},\x{DD5},\x{DD7},\x{DE0}-\x{DF1},\x{DF5}-\x{E00},\x{E3B}-\x{E3E},\x{E5C}-\x{E80},\x{E83},\x{E85}-\x{E86},\x{E89},\x{E8B}-\x{E8C},\x{E8E}-\x{E93},\x{E98},\x{EA0},\x{EA4},\x{EA6},\x{EA8}-\x{EA9},\x{EAC},\x{EBA},\x{EBE}-\x{EBF},\x{EC5},\x{EC7},\x{ECE}-\x{ECF},\x{EDA}-\x{EDB},\x{EDE}-\x{EFF},\x{F48},\x{F6B}-\x{F70},\x{F8C}-\x{F8F},\x{F98},\x{FBD},\x{FCD}-\x{FCE},\x{FD2}-\x{FFF},\x{1022},\x{1028},\x{102B},\x{1033}-\x{1035},\x{103A}-\x{103F},\x{105A}-\x{109F},\x{10C6}-\x{10CF},\x{10FD}-\x{10FF},\x{115A}-\x{115E},\x{11A3}-\x{11A7},\x{11FA}-\x{11FF},\x{1249},\x{124E}-\x{124F},\x{1257},\x{1259},\x{125E}-\x{125F},\x{1289},\x{128E}-\x{128F},\x{12B1},\x{12B6}-\x{12B7},\x{12BF},\x{12C1},\x{12C6}-\x{12C7},\x{12D7},\x{1311},\x{1316}-\x{1317},\x{135B}-\x{135E},\x{137D}-\x{137F},\x{139A}-\x{139F},\x{13F5}-\x{1400},\x{1677}-\x{167F},\x{169D}-\x{169F},\x{16F1}-\x{16FF},\x{170D},\x{1715}-\x{171F},\x{1737}-\x{173F},\x{1754}-\x{175F},\x{176D},\x{1771},\x{1774}-\x{177F},\x{17DE}-\x{17DF},\x{17EA}-\x{17EF},\x{17FA}-\x{17FF},\x{180F},\x{181A}-\x{181F},\x{1878}-\x{187F},\x{18AA}-\x{18FF},\x{191D}-\x{191F},\x{192C}-\x{192F},\x{193C}-\x{193F},\x{1941}-\x{1943},\x{196E}-\x{196F},\x{1975}-\x{197F},\x{19AA}-\x{19AF},\x{19CA}-\x{19CF},\x{19DA}-\x{19DD},\x{1A1C}-\x{1A1D},\x{1A20}-\x{1CFF},\x{1DC4}-\x{1DFF},\x{1E9C}-\x{1E9F},\x{1EFA}-\x{1EFF},\x{1F16}-\x{1F17},\x{1F1E}-\x{1F1F},\x{1F46}-\x{1F47},\x{1F4E}-\x{1F4F},\x{1F58},\x{1F5A},\x{1F5C},\x{1F5E},\x{1F7E}-\x{1F7F},\x{1FB5},\x{1FC5},\x{1FD4}-\x{1FD5},\x{1FDC},\x{1FF0}-\x{1FF1},\x{1FF5},\x{1FFF},\x{2064}-\x{2069},\x{2072}-\x{2073},\x{208F},\x{2095}-\x{209F},\x{20B6}-\x{20CF},\x{20EC}-\x{20FF},\x{214D}-\x{2152},\x{2184}-\x{218F},\x{23DC}-\x{23FF},\x{2427}-\x{243F},\x{244B}-\x{245F},\x{269D}-\x{269F},\x{26B2}-\x{2700},\x{2705},\x{270A}-\x{270B},\x{2728},\x{274C},\x{274E},\x{2753}-\x{2755},\x{2757},\x{275F}-\x{2760},\x{2795}-\x{2797},\x{27B0},\x{27BF},\x{27C7}-\x{27CF},\x{27EC}-\x{27EF},\x{2B14}-\x{2BFF},\x{2C2F},\x{2C5F}-\x{2C7F},\x{2CEB}-\x{2CF8},\x{2D26}-\x{2D2F},\x{2D66}-\x{2D6E},\x{2D70}-\x{2D7F},\x{2D97}-\x{2D9F},\x{2DA7},\x{2DAF},\x{2DB7},\x{2DBF},\x{2DC7},\x{2DCF},\x{2DD7},\x{2DDF}-\x{2DFF},\x{2E18}-\x{2E1B},\x{2E1E}-\x{2E7F},\x{2E9A},\x{2EF4}-\x{2EFF},\x{2FD6}-\x{2FEF},\x{2FFC}-\x{2FFF},\x{3040},\x{3097}-\x{3098},\x{3100}-\x{3104},\x{312D}-\x{3130},\x{318F},\x{31B8}-\x{31BF},\x{31D0}-\x{31EF},\x{321F},\x{3244}-\x{324F},\x{32FF},\x{4DB6}-\x{4DBF},\x{9FBC}-\x{9FFF},\x{A48D}-\x{A48F},\x{A4C7}-\x{A6FF},\x{A717}-\x{A7FF},\x{A82C}-\x{ABFF},\x{D7A4}-\x{D7FF},\x{FA2E}-\x{FA2F},\x{FA6B}-\x{FA6F},\x{FADA}-\x{FAFF},\x{FB07}-\x{FB12},\x{FB18}-\x{FB1C},\x{FB37},\x{FB3D},\x{FB3F},\x{FB42},\x{FB45},\x{FBB2}-\x{FBD2},\x{FD40}-\x{FD4F},\x{FD90}-\x{FD91},\x{FDC8}-\x{FDEF},\x{FDFE}-\x{FDFF},\x{FE1A}-\x{FE1F},\x{FE24}-\x{FE2F},\x{FE53},\x{FE67},\x{FE6C}-\x{FE6F},\x{FE75},\x{FEFD}-\x{FEFE},\x{FF00},\x{FFBF}-\x{FFC1},\x{FFC8}-\x{FFC9},\x{FFD0}-\x{FFD1},\x{FFD8}-\x{FFD9},\x{FFDD}-\x{FFDF},\x{FFE7},\x{FFEF}-\x{FFF8},\x{FFFE}-\x{FFFF}]',
+        
+    # $ perl -MSet::IntSpan -ne ' @x=split/;/; $v=hex($x[0]); push @nums, $v if $x[4] eq "EN"; END{ $set= new Set::IntSpan @nums; $set="$set"; $set =~ s/(\d+)/ sprintf("\\x{%0X}",$1) /ge; print $set,"\n"}'  
+    #     /opt/local/lib/perl5/5.8.8/unicore/UnicodeData.txt 
+
+        'BidiEN'   => '[\x{30}-\x{39},\x{B2}-\x{B3},\x{B9},\x{6F0}-\x{6F9},\x{2070},\x{2074}-\x{2079},\x{2080}-\x{2089},\x{2488}-\x{249B},\x{FF10}-\x{FF19},\x{1D7CE}-\x{1D7FF}]',
+
+        'BidiWS'   => '[\x{0C},\x{20},\x{1680},\x{180E},\x{2000}-\x{200A},\x{2028},\x{205F},\x{3000}]',
+
+        'BidiET'   => '[\x{23}-\x{25},\x{A2}-\x{A5},\x{B0}-\x{B1},\x{66A},\x{9F2}-\x{9F3},\x{AF1},\x{BF9},\x{E3F},\x{17DB},\x{2030}-\x{2034},\x{20A0}-\x{20B5},\x{212E},\x{2213},\x{FE5F},\x{FE69}-\x{FE6A},\x{FF03}-\x{FF05},\x{FFE0}-\x{FFE1},\x{FFE5}-\x{FFE6}]',
+
+        'BidiES'   => '\x{2F}',    # SOLIDUS ???
+
+        'BidiR'    => '[\x{5BE},\x{5C0},\x{5C3},\x{5C6},\x{5D0}-\x{5EA},\x{5F0}-\x{5F4},\x{200F},\x{FB1D},\x{FB1F}-\x{FB28},\x{FB2A}-\x{FB36},\x{FB38}-\x{FB3C},\x{FB3E},\x{FB40}-\x{FB41},\x{FB43}-\x{FB44},\x{FB46}-\x{FB4F},\x{10800}-\x{10805},\x{10808},\x{1080A}-\x{10835},\x{10837}-\x{10838},\x{1083C},\x{1083F},\x{10A00},\x{10A10}-\x{10A13},\x{10A15}-\x{10A17},\x{10A19}-\x{10A33},\x{10A40}-\x{10A47},\x{10A50}-\x{10A58}]',
+
+        'BidiL'    => '[\x{41}-\x{5A},\x{61}-\x{7A},\x{AA},\x{B5},\x{BA},\x{C0}-\x{D6},\x{D8}-\x{F6},\x{F8}-\x{241},\x{250}-\x{2B8},\x{2BB}-\x{2C1},\x{2D0}-\x{2D1},\x{2E0}-\x{2E4},\x{2EE},\x{37A},\x{386},\x{388}-\x{38A},\x{38C},\x{38E}-\x{3A1},\x{3A3}-\x{3CE},\x{3D0}-\x{3F5},\x{3F7}-\x{482},\x{48A}-\x{4CE},\x{4D0}-\x{4F9},\x{500}-\x{50F},\x{531}-\x{556},\x{559}-\x{55F},\x{561}-\x{587},\x{589},\x{903}-\x{939},\x{93D}-\x{940},\x{949}-\x{94C},\x{950},\x{958}-\x{961},\x{964}-\x{970},\x{97D},\x{982}-\x{983},\x{985}-\x{98C},\x{98F}-\x{990},\x{993}-\x{9A8},\x{9AA}-\x{9B0},\x{9B2},\x{9B6}-\x{9B9},\x{9BD}-\x{9C0},\x{9C7}-\x{9C8},\x{9CB}-\x{9CC},\x{9CE},\x{9D7},\x{9DC}-\x{9DD},\x{9DF}-\x{9E1},\x{9E6}-\x{9F1},\x{9F4}-\x{9FA},\x{A03},\x{A05}-\x{A0A},\x{A0F}-\x{A10},\x{A13}-\x{A28},\x{A2A}-\x{A30},\x{A32}-\x{A33},\x{A35}-\x{A36},\x{A38}-\x{A39},\x{A3E}-\x{A40},\x{A59}-\x{A5C},\x{A5E},\x{A66}-\x{A6F},\x{A72}-\x{A74},\x{A83},\x{A85}-\x{A8D},\x{A8F}-\x{A91},\x{A93}-\x{AA8},\x{AAA}-\x{AB0},\x{AB2}-\x{AB3},\x{AB5}-\x{AB9},\x{ABD}-\x{AC0},\x{AC9},\x{ACB}-\x{ACC},\x{AD0},\x{AE0}-\x{AE1},\x{AE6}-\x{AEF},\x{B02}-\x{B03},\x{B05}-\x{B0C},\x{B0F}-\x{B10},\x{B13}-\x{B28},\x{B2A}-\x{B30},\x{B32}-\x{B33},\x{B35}-\x{B39},\x{B3D}-\x{B3E},\x{B40},\x{B47}-\x{B48},\x{B4B}-\x{B4C},\x{B57},\x{B5C}-\x{B5D},\x{B5F}-\x{B61},\x{B66}-\x{B71},\x{B83},\x{B85}-\x{B8A},\x{B8E}-\x{B90},\x{B92}-\x{B95},\x{B99}-\x{B9A},\x{B9C},\x{B9E}-\x{B9F},\x{BA3}-\x{BA4},\x{BA8}-\x{BAA},\x{BAE}-\x{BB9},\x{BBE}-\x{BBF},\x{BC1}-\x{BC2},\x{BC6}-\x{BC8},\x{BCA}-\x{BCC},\x{BD7},\x{BE6}-\x{BF2},\x{C01}-\x{C03},\x{C05}-\x{C0C},\x{C0E}-\x{C10},\x{C12}-\x{C28},\x{C2A}-\x{C33},\x{C35}-\x{C39},\x{C41}-\x{C44},\x{C60}-\x{C61},\x{C66}-\x{C6F},\x{C82}-\x{C83},\x{C85}-\x{C8C},\x{C8E}-\x{C90},\x{C92}-\x{CA8},\x{CAA}-\x{CB3},\x{CB5}-\x{CB9},\x{CBD}-\x{CC4},\x{CC6}-\x{CC8},\x{CCA}-\x{CCB},\x{CD5}-\x{CD6},\x{CDE},\x{CE0}-\x{CE1},\x{CE6}-\x{CEF},\x{D02}-\x{D03},\x{D05}-\x{D0C},\x{D0E}-\x{D10},\x{D12}-\x{D28},\x{D2A}-\x{D39},\x{D3E}-\x{D40},\x{D46}-\x{D48},\x{D4A}-\x{D4C},\x{D57},\x{D60}-\x{D61},\x{D66}-\x{D6F},\x{D82}-\x{D83},\x{D85}-\x{D96},\x{D9A}-\x{DB1},\x{DB3}-\x{DBB},\x{DBD},\x{DC0}-\x{DC6},\x{DCF}-\x{DD1},\x{DD8}-\x{DDF},\x{DF2}-\x{DF4},\x{E01}-\x{E30},\x{E32}-\x{E33},\x{E40}-\x{E46},\x{E4F}-\x{E5B},\x{E81}-\x{E82},\x{E84},\x{E87}-\x{E88},\x{E8A},\x{E8D},\x{E94}-\x{E97},\x{E99}-\x{E9F},\x{EA1}-\x{EA3},\x{EA5},\x{EA7},\x{EAA}-\x{EAB},\x{EAD}-\x{EB0},\x{EB2}-\x{EB3},\x{EBD},\x{EC0}-\x{EC4},\x{EC6},\x{ED0}-\x{ED9},\x{EDC}-\x{EDD},\x{F00}-\x{F17},\x{F1A}-\x{F34},\x{F36},\x{F38},\x{F3E}-\x{F47},\x{F49}-\x{F6A},\x{F7F},\x{F85},\x{F88}-\x{F8B},\x{FBE}-\x{FC5},\x{FC7}-\x{FCC},\x{FCF}-\x{FD1},\x{1000}-\x{1021},\x{1023}-\x{1027},\x{1029}-\x{102A},\x{102C},\x{1031},\x{1038},\x{1040}-\x{1057},\x{10A0}-\x{10C5},\x{10D0}-\x{10FC},\x{1100}-\x{1159},\x{115F}-\x{11A2},\x{11A8}-\x{11F9},\x{1200}-\x{1248},\x{124A}-\x{124D},\x{1250}-\x{1256},\x{1258},\x{125A}-\x{125D},\x{1260}-\x{1288},\x{128A}-\x{128D},\x{1290}-\x{12B0},\x{12B2}-\x{12B5},\x{12B8}-\x{12BE},\x{12C0},\x{12C2}-\x{12C5},\x{12C8}-\x{12D6},\x{12D8}-\x{1310},\x{1312}-\x{1315},\x{1318}-\x{135A},\x{1360}-\x{137C},\x{1380}-\x{138F},\x{13A0}-\x{13F4},\x{1401}-\x{1676},\x{1681}-\x{169A},\x{16A0}-\x{16F0},\x{1700}-\x{170C},\x{170E}-\x{1711},\x{1720}-\x{1731},\x{1735}-\x{1736},\x{1740}-\x{1751},\x{1760}-\x{176C},\x{176E}-\x{1770},\x{1780}-\x{17B6},\x{17BE}-\x{17C5},\x{17C7}-\x{17C8},\x{17D4}-\x{17DA},\x{17DC},\x{17E0}-\x{17E9},\x{1810}-\x{1819},\x{1820}-\x{1877},\x{1880}-\x{18A8},\x{1900}-\x{191C},\x{1923}-\x{1926},\x{1930}-\x{1931},\x{1933}-\x{1938},\x{1946}-\x{196D},\x{1970}-\x{1974},\x{1980}-\x{19A9},\x{19B0}-\x{19C9},\x{19D0}-\x{19D9},\x{1A00}-\x{1A16},\x{1A19}-\x{1A1B},\x{1A1E}-\x{1A1F},\x{1D00}-\x{1DBF},\x{1E00}-\x{1E9B},\x{1EA0}-\x{1EF9},\x{1F00}-\x{1F15},\x{1F18}-\x{1F1D},\x{1F20}-\x{1F45},\x{1F48}-\x{1F4D},\x{1F50}-\x{1F57},\x{1F59},\x{1F5B},\x{1F5D},\x{1F5F}-\x{1F7D},\x{1F80}-\x{1FB4},\x{1FB6}-\x{1FBC},\x{1FBE},\x{1FC2}-\x{1FC4},\x{1FC6}-\x{1FCC},\x{1FD0}-\x{1FD3},\x{1FD6}-\x{1FDB},\x{1FE0}-\x{1FEC},\x{1FF2}-\x{1FF4},\x{1FF6}-\x{1FFC},\x{200E},\x{2071},\x{207F},\x{2090}-\x{2094},\x{2102},\x{2107},\x{210A}-\x{2113},\x{2115},\x{2119}-\x{211D},\x{2124},\x{2126},\x{2128},\x{212A}-\x{212D},\x{212F}-\x{2131},\x{2133}-\x{2139},\x{213C}-\x{213F},\x{2145}-\x{2149},\x{2160}-\x{2183},\x{2336}-\x{237A},\x{2395},\x{249C}-\x{24E9},\x{26AC},\x{2800}-\x{28FF},\x{2C00}-\x{2C2E},\x{2C30}-\x{2C5E},\x{2C80}-\x{2CE4},\x{2D00}-\x{2D25},\x{2D30}-\x{2D65},\x{2D6F},\x{2D80}-\x{2D96},\x{2DA0}-\x{2DA6},\x{2DA8}-\x{2DAE},\x{2DB0}-\x{2DB6},\x{2DB8}-\x{2DBE},\x{2DC0}-\x{2DC6},\x{2DC8}-\x{2DCE},\x{2DD0}-\x{2DD6},\x{2DD8}-\x{2DDE},\x{3005}-\x{3007},\x{3021}-\x{3029},\x{3031}-\x{3035},\x{3038}-\x{303C},\x{3041}-\x{3096},\x{309D}-\x{309F},\x{30A1}-\x{30FA},\x{30FC}-\x{30FF},\x{3105}-\x{312C},\x{3131}-\x{318E},\x{3190}-\x{31B7},\x{31F0}-\x{321C},\x{3220}-\x{3243},\x{3260}-\x{327B},\x{327F}-\x{32B0},\x{32C0}-\x{32CB},\x{32D0}-\x{32FE},\x{3300}-\x{3376},\x{337B}-\x{33DD},\x{33E0}-\x{33FE},\x{3400},\x{4DB5},\x{4E00},\x{9FBB},\x{A000}-\x{A48C},\x{A800}-\x{A801},\x{A803}-\x{A805},\x{A807}-\x{A80A},\x{A80C}-\x{A824},\x{A827},\x{AC00},\x{D7A3},\x{D800},\x{DB7F}-\x{DB80},\x{DBFF}-\x{DC00},\x{DFFF}-\x{E000},\x{F8FF}-\x{FA2D},\x{FA30}-\x{FA6A},\x{FA70}-\x{FAD9},\x{FB00}-\x{FB06},\x{FB13}-\x{FB17},\x{FF21}-\x{FF3A},\x{FF41}-\x{FF5A},\x{FF66}-\x{FFBE},\x{FFC2}-\x{FFC7},\x{FFCA}-\x{FFCF},\x{FFD2}-\x{FFD7},\x{FFDA}-\x{FFDC},\x{10000}-\x{1000B},\x{1000D}-\x{10026},\x{10028}-\x{1003A},\x{1003C}-\x{1003D},\x{1003F}-\x{1004D},\x{10050}-\x{1005D},\x{10080}-\x{100FA},\x{10100},\x{10102},\x{10107}-\x{10133},\x{10137}-\x{1013F},\x{10300}-\x{1031E},\x{10320}-\x{10323},\x{10330}-\x{1034A},\x{10380}-\x{1039D},\x{1039F}-\x{103C3},\x{103C8}-\x{103D0},\x{10400}-\x{1049D},\x{104A0}-\x{104A9},\x{1D000}-\x{1D0F5},\x{1D100}-\x{1D126},\x{1D12A}-\x{1D166},\x{1D16A}-\x{1D172},\x{1D183}-\x{1D184},\x{1D18C}-\x{1D1A9},\x{1D1AE}-\x{1D1DD},\x{1D400}-\x{1D454},\x{1D456}-\x{1D49C},\x{1D49E}-\x{1D49F},\x{1D4A2},\x{1D4A5}-\x{1D4A6},\x{1D4A9}-\x{1D4AC},\x{1D4AE}-\x{1D4B9},\x{1D4BB},\x{1D4BD}-\x{1D4C3},\x{1D4C5}-\x{1D505},\x{1D507}-\x{1D50A},\x{1D50D}-\x{1D514},\x{1D516}-\x{1D51C},\x{1D51E}-\x{1D539},\x{1D53B}-\x{1D53E},\x{1D540}-\x{1D544},\x{1D546},\x{1D54A}-\x{1D550},\x{1D552}-\x{1D6A5},\x{1D6A8}-\x{1D7C9},\x{20000},\x{2A6D6},\x{2F800}-\x{2FA1D},\x{F0000},\x{FFFFD},\x{100000},\x{10FFFD}]',
+    );
+    $extra_unicode{ 'is' . $_ } = $extra_unicode{$_}
+        for keys %extra_unicode;
 }
 
+sub vianame {
+    my $c = shift;
+    $c =~ s/^\s+//;
+    $c =~ s/\s+$//;
+    my $s = charnames::vianame($c);
+    return $s if defined $s;
+    $s = charnames::vianame("LINE FEED (LF)") 
+        if $c eq "LINE FEED" || $c eq "LF";
+    return $s if $s;
+    $s = charnames::vianame("CARRIAGE RETURN (CR)") 
+        if $c eq "CARRIAGE RETURN" || $c eq "CR";
+    return $s if $s;
+    $s = charnames::vianame("FORM FEED (FF)")  
+        if $c eq "FORM FEED" || $c eq "FF";
+    return $s if $s;
+    $s = charnames::vianame("NEXT LINE (NEL)") 
+        if $c eq "NEXT LINE" || $c eq "NEL";
+    return $s if $s;
+    die "unknown unicode name: $c";
+}
+
 # input format:
 # [
 #    '+alpha'
@@ -32,31 +83,19 @@
     for ( @c ) {
         my ( $op, $cmd ) = /(.)(.*)/;
 
+        $cmd =~ s/ \\c\[ ([^];]+) \; ([^];]+) \] / 
+                "\\x{" . sprintf("%02X", vianame($1)) . "}"
+              . "\\x{" . sprintf("%02X", vianame($2)) . "}"
+            /xgme;
+        $cmd =~ s/ \\c\[ ([^]]+) \] / "\\x[" . sprintf("%02X", vianame($1)) . ']' /xgme;
+        $cmd =~ s/ \\C\[ ([^]]+) \] / "\\X[" . sprintf("%02X", vianame($1)) . ']' /xgme;
+        $cmd =~ s/ \\o\[ ([^]]+) \] / "\\x[" . sprintf("%02X", oct($1)) . ']' /xgme;
+        $cmd =~ s/ \\O\[ ([^]]+) \] / "\\X[" . sprintf("%02X", oct($1)) . ']' /xgme;
         $cmd =~ s/\s//g;
-
-        #if ( $last_cmd eq '-'
-        #    && substr($cmd,0,1) eq '+'
-        #    )
-        #{
-        #    $out .= '|';
-        #}
-        #$last_cmd = substr($cmd,0,1);
-
+        
         $cmd =~ s/\.\./-/g;  # ranges
 
-        # TODO - \o \O
-
-        if    ( $cmd =~ /^ \[ \\ c \[ (.*) \] \] /x ) {
-            #$cmd = "(?:\\N{" . join( "}|\\N{", split( /\s*;\s*/, $1 ) ) . "})";
-            $cmd = "[\\N{" . join( "}\\N{", split( /\s*;\s*/, $1 ) ) . "}]";
-        }
-        elsif ( $cmd =~ /^ \[ \\ C \[ (.*) \] \] /x ) {
-            #$cmd = "(?!\\N{" . join( "}|\\N{", split( /\s*;\s*/, $1 ) ) . "})\\X";
-            $cmd = "[^\\N{" . join( "}\\N{", split( /\s*;\s*/, $1 ) ) . "}]";
-        }
-
-
-        elsif ( $cmd =~ /^ \[ \\ x \[ (.*) \] \] /x ) {
+        if ( $cmd =~ /^ \[ \\ x \[ (.*) \] \] /x ) {
             $cmd = "(?:\\x{$1})";
         }
         elsif ( $cmd =~ /^ \[ \\ X \[ (.*) \] \] /x ) {
@@ -64,15 +103,16 @@
             #$cmd = "[^\\x{$1}]";
         }
 
-
         elsif ( $cmd =~ /^ \s* \[ (.*) /x ) {
            $cmd = '[' . $1;
 	    }
         elsif ( $cmd =~ /^ \s* (.*) /x ) {
            my $name = $1;
            $cmd = ( exists $char_class{$name} )
-                ? "[[:$name:]]"
-                : "\\p{$name}";
+                    ? "[[:$name:]]"
+                    : exists $extra_unicode{$name}
+                        ? $extra_unicode{$name} 
+                        : "\\p{$name}";
         }
 
         if ( $op eq '+' ) {
@@ -91,7 +131,7 @@
     }
     $out = "(?:$out)\\X";
 
-    #print Dumper( @c ), ' == ', $out, "\n";
+    #print Dumper( \@c ), ' == ', $out, "\n";
 
     return $out;
 }
diff --git a/blib6/pugs/perl5/lib/Pugs/Grammar/Base.pm b/blib6/pugs/perl5/lib/Pugs/Grammar/Base.pm
--- a/blib6/pugs/perl5/lib/Pugs/Grammar/Base.pm
+++ b/blib6/pugs/perl5/lib/Pugs/Grammar/Base.pm
@@ -168,14 +168,19 @@
         
         # is it a Unicode property? "isL"
         {
-          local $@;
-          eval ' my $s="a"; $s =~ /\p{' . $meth . '}/ ';
-          unless ( $@ ) {
-            *{$meth} = Pugs::Compiler::RegexPerl5->compile( 
-              '\p{' . $meth . '}'
-            )->code;
-            return $meth->( @_ );
-          }
+            local $@;
+            my $p5;
+            if ( exists $Pugs::Emitter::Rule::Perl5::CharClass::extra_unicode{$meth} ) {
+                $p5 = $Pugs::Emitter::Rule::Perl5::CharClass::extra_unicode{$meth};
+            }
+            else {
+                $p5 = '\p{' . $meth . '}';
+                eval ' my $s="a"; $s =~ /' . $p5 . '/ ';
+            }
+            unless ( $@ ) {
+                *{$meth} = Pugs::Compiler::RegexPerl5->compile($p5)->code;
+                return $meth->( @_ );
+            }
         }
         
         # is it a char class? "digit"
diff --git a/blib6/pugs/perl5/lib/Pugs/Grammar/Rule.pmc b/blib6/pugs/perl5/lib/Pugs/Grammar/Rule.pmc
--- a/blib6/pugs/perl5/lib/Pugs/Grammar/Rule.pmc
+++ b/blib6/pugs/perl5/lib/Pugs/Grammar/Rule.pmc
@@ -1,15143 +1,15186 @@
 # !!! DO NOT EDIT !!!
 # This file was generated by Pugs::Compiler::Rule's compile_p6grammar.pl
-# script from examples/Grammar.grammar at Tue Oct 30 11:29:45 2007
-
-use strict;
-use warnings;
-
-package Pugs::Grammar::Rule;
-
-#use base 'Pugs::Grammar::Base';
-
-use Pugs::Runtime::Match;
-use Pugs::Runtime::Regex;
-use Pugs::Runtime::Tracer ();
-
-# Code block from grammar spec
-
-
-use utf8;
-no strict 'refs';
-no warnings 'redefine';
-no warnings 'once';
-
-#use Pugs::Runtime::Match;
-
-our %rule_terms;
-our %variables;
-
-
-
-# token pod_begin
-*pod_begin =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 632 675
-           (
-               ( $pad{I1170} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 633 652
-               (
-      
-                 ## <group>
-                 ## pos: 633 639
-                  (   ( $pad{I1171} = $pos or 1 ) &&
-                   ## <perl5>
-                   ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
-                       ? ( $pos += length( $1 ) or 1 )
-                       : 0
-                   )
-                   ## </perl5>
-     ||    ( ( $pos = $pad{I1171} ) && 0 ) )
-                 ## </group>
-    
-               &&
-    
-                 ## <constant>
-                 ## pos: 639 640
-                 ( ( substr( $s, $pos, 1 ) eq '=' )
-                     ? ( $pos += 1 or 1 )
-                     : 0
-                 )
-                 ## </constant>
-    
-               &&
-    
-                 ## <constant>
-                 ## pos: 640 641
-                 ( ( substr( $s, $pos, 1 ) eq 'e' )
-                     ? ( $pos += 1 or 1 )
-                     : 0
-                 )
-                 ## </constant>
-    
-               &&
-    
-                 ## <constant>
-                 ## pos: 641 642
-                 ( ( substr( $s, $pos, 1 ) eq 'n' )
-                     ? ( $pos += 1 or 1 )
-                     : 0
-                 )
-                 ## </constant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 642 644
-                  (   ( $pad{I1172} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 642 643
-                   ( ( substr( $s, $pos, 1 ) eq 'd' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1172} ) && 0 ) )
-                 ## </group>
-    
-               &&
-                 ## <quant>
-                 ## pos: 644 652
-                 do { while (
-                  (   ( $pad{I1173} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1173} ) && 0 ) )) {}; $bool = 1 }
-                 ## </quant>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1170} ) or 1 )
-               &&            ## <concat>
-               ## pos: 653 675
-               (
-      
-                 ## <group>
-                 ## pos: 653 658
-                  (   ( $pad{I1174} = $pos or 1 ) &&
-    
-                   ## <dot>
-                   ## pos: 656 657
-                   ( substr( $s, $pos++, 1 ) ne '' )
-                   ## </dot>
-     ||    ( ( $pos = $pad{I1174} ) && 0 ) )
-                 ## </group>
-    
-               &&
-                 ## <quant>
-                 ## pos: 658 662
-                 do { while (
-                  (   ( $pad{I1175} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1175} ) && 0 ) )) {}; $bool = 1 }
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 662 675
-                  (   ( $pad{I1176} = $pos or 1 ) &&
-                   ## <metasyntax>
-                   ## pos: 662 674
-                   do {
-                        my $prior = $::_V6_PRIOR_;
-                        my $match =
-                               $grammar->pod_begin( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                        $::_V6_PRIOR_ = $prior;
-                        my $bool = (!$match != 1);
-                        $pos = $match->to if $bool;
-                        $match;
-                   }
-                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1176} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token pod_other
-*pod_other =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 700 743
-           (
-               ( $pad{I1177} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 701 720
-               (
-      
-                 ## <group>
-                 ## pos: 701 707
-                  (   ( $pad{I1178} = $pos or 1 ) &&
-                   ## <perl5>
-                   ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
-                       ? ( $pos += length( $1 ) or 1 )
-                       : 0
-                   )
-                   ## </perl5>
-     ||    ( ( $pos = $pad{I1178} ) && 0 ) )
-                 ## </group>
-    
-               &&
-    
-                 ## <constant>
-                 ## pos: 707 708
-                 ( ( substr( $s, $pos, 1 ) eq '=' )
-                     ? ( $pos += 1 or 1 )
-                     : 0
-                 )
-                 ## </constant>
-    
-               &&
-    
-                 ## <constant>
-                 ## pos: 708 709
-                 ( ( substr( $s, $pos, 1 ) eq 'c' )
-                     ? ( $pos += 1 or 1 )
-                     : 0
-                 )
-                 ## </constant>
-    
-               &&
-    
-                 ## <constant>
-                 ## pos: 709 710
-                 ( ( substr( $s, $pos, 1 ) eq 'u' )
-                     ? ( $pos += 1 or 1 )
-                     : 0
-                 )
-                 ## </constant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 710 712
-                  (   ( $pad{I1179} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 710 711
-                   ( ( substr( $s, $pos, 1 ) eq 't' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1179} ) && 0 ) )
-                 ## </group>
-    
-               &&
-                 ## <quant>
-                 ## pos: 712 720
-                 do { while (
-                  (   ( $pad{I1180} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1180} ) && 0 ) )) {}; $bool = 1 }
-                 ## </quant>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1177} ) or 1 )
-               &&            ## <concat>
-               ## pos: 721 743
-               (
-      
-                 ## <group>
-                 ## pos: 721 726
-                  (   ( $pad{I1181} = $pos or 1 ) &&
-    
-                   ## <dot>
-                   ## pos: 724 725
-                   ( substr( $s, $pos++, 1 ) ne '' )
-                   ## </dot>
-     ||    ( ( $pos = $pad{I1181} ) && 0 ) )
-                 ## </group>
-    
-               &&
-                 ## <quant>
-                 ## pos: 726 730
-                 do { while (
-                  (   ( $pad{I1182} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1182} ) && 0 ) )) {}; $bool = 1 }
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 730 743
-                  (   ( $pad{I1183} = $pos or 1 ) &&
-                   ## <metasyntax>
-                   ## pos: 730 742
-                   do {
-                        my $prior = $::_V6_PRIOR_;
-                        my $match =
-                               $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                        $::_V6_PRIOR_ = $prior;
-                        my $bool = (!$match != 1);
-                        $pos = $match->to if $bool;
-                        $match;
-                   }
-                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1183} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token ws
-*ws =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <quant>
-           ## pos: 761 1059
-           (
-            (   ( $pad{I1184} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 762 1056
-               (
-                   ( $pad{I1185} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 768 783
-                   (
-      
-                     ## <group>
-                     ## pos: 768 775
-                      (   ( $pad{I1186} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 772 774
-                       ( ( substr( $s, $pos, 1 ) eq '#' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1186} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-                     ## <quant>
-                     ## pos: 775 783
-                     do { while (
-                      (   ( $pad{I1187} = $pos or 1 ) &&
-                         ## <perl5>
-                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                             ? ( $pos += length( $1 ) or 1 )
-                             : 0
-                         )
-                         ## </perl5>
-     ||    ( ( $pos = $pad{I1187} ) && 0 ) )) {}; $bool = 1 }
-                     ## </quant>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 784 1044
-                   (
-      
-                     ## <group>
-                     ## pos: 784 791
-                      (   ( $pad{I1188} = $pos or 1 ) &&
-                       ## <perl5>
-                       ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
-                           ? ( $pos += length( $1 ) or 1 )
-                           : 0
-                       )
-                       ## </perl5>
-     ||    ( ( $pos = $pad{I1188} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-                     ## <quant>
-                     ## pos: 791 1044
-                     (
-                      (   ( $pad{I1189} = $pos or 1 ) &&
-                         ## <concat>
-                         ## pos: 792 1037
-                         (
-      
-                           ## <group>
-                           ## pos: 792 795
-                            (   ( $pad{I1190} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 793 794
-                             ( ( substr( $s, $pos, 1 ) eq '=' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1190} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-                           ## <quant>
-                           ## pos: 795 1037
-                           (
-                            (   ( $pad{I1191} = $pos or 1 ) &&
-                               ## <alt>
-                               ## pos: 796 1022
-                               (
-                                   ( $pad{I1192} = $pos or 1 )
-                                   && (
-                                   ## <concat>
-                                   ## pos: 810 847
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 810 813
-                                      (   ( $pad{I1193} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 812 813
-                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1193} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 813 814
-                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 814 815
-                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 815 816
-                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 816 818
-                                      (   ( $pad{I1194} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 816 817
-                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1194} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 818 824
-                                      (   ( $pad{I1195} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 818 823
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1195} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 824 825
-                                     ( ( substr( $s, $pos, 1 ) eq 'E' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 825 826
-                                     ( ( substr( $s, $pos, 1 ) eq 'N' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 826 828
-                                      (   ( $pad{I1196} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 826 827
-                                       ( ( substr( $s, $pos, 1 ) eq 'D' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1196} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-                                     ## <quant>
-                                     ## pos: 828 832
-                                     do { while (
-                                      (   ( $pad{I1197} = $pos or 1 ) &&
-                                         ## <perl5>
-                                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                                             ? ( $pos += length( $1 ) or 1 )
-                                             : 0
-                                         )
-                                         ## </perl5>
-     ||    ( ( $pos = $pad{I1197} ) && 0 ) )) {}; $bool = 1 }
-                                     ## </quant>
-    
-                                   &&
-                                     ## <quant>
-                                     ## pos: 832 847
-                                     do { while (
-                                      (   ( $pad{I1198} = $pos or 1 ) &&
-    
-                                         ## <dot>
-                                         ## pos: 832 833
-                                         ( substr( $s, $pos++, 1 ) ne '' )
-                                         ## </dot>
-     ||    ( ( $pos = $pad{I1198} ) && 0 ) )) {}; $bool = 1 }
-                                     ## </quant>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 848 882
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 848 851
-                                      (   ( $pad{I1199} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 850 851
-                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1199} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 851 852
-                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 852 853
-                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 853 854
-                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 854 857
-                                      (   ( $pad{I1200} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 854 855
-                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1200} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 857 882
-                                      (   ( $pad{I1201} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 857 869
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_begin( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1201} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 883 917
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 883 886
-                                      (   ( $pad{I1202} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 885 886
-                                       ( ( substr( $s, $pos, 1 ) eq 'k' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1202} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 886 887
-                                     ( ( substr( $s, $pos, 1 ) eq 'w' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 887 888
-                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 888 892
-                                      (   ( $pad{I1203} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 888 889
-                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1203} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 892 917
-                                      (   ( $pad{I1204} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 892 904
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1204} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 918 952
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 918 921
-                                      (   ( $pad{I1205} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 920 921
-                                       ( ( substr( $s, $pos, 1 ) eq 'p' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1205} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 921 922
-                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 922 927
-                                      (   ( $pad{I1206} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 922 923
-                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1206} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 927 952
-                                      (   ( $pad{I1207} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 927 939
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1207} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 953 987
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 953 956
-                                      (   ( $pad{I1208} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 955 956
-                                       ( ( substr( $s, $pos, 1 ) eq 'f' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1208} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 956 957
-                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 957 962
-                                      (   ( $pad{I1209} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 957 958
-                                       ( ( substr( $s, $pos, 1 ) eq 'r' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1209} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 962 987
-                                      (   ( $pad{I1210} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 962 974
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1210} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 988 1022
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 988 991
-                                      (   ( $pad{I1211} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 990 991
-                                       ( ( substr( $s, $pos, 1 ) eq 'h' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1211} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 991 992
-                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 992 993
-                                     ( ( substr( $s, $pos, 1 ) eq 'a' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 993 994
-                                     ( ( substr( $s, $pos, 1 ) eq 'd' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 994 997
-                                      (   ( $pad{I1212} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 994 995
-                                       ( ( substr( $s, $pos, 1 ) eq '1' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1212} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 997 1022
-                                      (   ( $pad{I1213} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 997 1009
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1213} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                 )
-                               )
-                               ## </alt>
-     ||    ( ( $pos = $pad{I1191} ) && 0 ) )
-                           || ( $bool = 1 )
-                           )
-                           ## </quant>
-    
-                         )
-                         ## </concat>
-     ||    ( ( $pos = $pad{I1189} ) && 0 ) )
-                     || ( $bool = 1 )
-                     )
-                     ## </quant>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 1045 1056
-                    (   ( $pad{I1214} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^(\s)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1214} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1184} ) && 0 ) )
-           && do { while (
-            (   ( $pad{I1184} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 762 1056
-               (
-                   ( $pad{I1185} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 768 783
-                   (
-      
-                     ## <group>
-                     ## pos: 768 775
-                      (   ( $pad{I1186} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 772 774
-                       ( ( substr( $s, $pos, 1 ) eq '#' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1186} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-                     ## <quant>
-                     ## pos: 775 783
-                     do { while (
-                      (   ( $pad{I1187} = $pos or 1 ) &&
-                         ## <perl5>
-                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                             ? ( $pos += length( $1 ) or 1 )
-                             : 0
-                         )
-                         ## </perl5>
-     ||    ( ( $pos = $pad{I1187} ) && 0 ) )) {}; $bool = 1 }
-                     ## </quant>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 784 1044
-                   (
-      
-                     ## <group>
-                     ## pos: 784 791
-                      (   ( $pad{I1188} = $pos or 1 ) &&
-                       ## <perl5>
-                       ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
-                           ? ( $pos += length( $1 ) or 1 )
-                           : 0
-                       )
-                       ## </perl5>
-     ||    ( ( $pos = $pad{I1188} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-                     ## <quant>
-                     ## pos: 791 1044
-                     (
-                      (   ( $pad{I1189} = $pos or 1 ) &&
-                         ## <concat>
-                         ## pos: 792 1037
-                         (
-      
-                           ## <group>
-                           ## pos: 792 795
-                            (   ( $pad{I1190} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 793 794
-                             ( ( substr( $s, $pos, 1 ) eq '=' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1190} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-                           ## <quant>
-                           ## pos: 795 1037
-                           (
-                            (   ( $pad{I1191} = $pos or 1 ) &&
-                               ## <alt>
-                               ## pos: 796 1022
-                               (
-                                   ( $pad{I1192} = $pos or 1 )
-                                   && (
-                                   ## <concat>
-                                   ## pos: 810 847
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 810 813
-                                      (   ( $pad{I1193} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 812 813
-                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1193} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 813 814
-                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 814 815
-                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 815 816
-                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 816 818
-                                      (   ( $pad{I1194} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 816 817
-                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1194} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 818 824
-                                      (   ( $pad{I1195} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 818 823
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1195} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 824 825
-                                     ( ( substr( $s, $pos, 1 ) eq 'E' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 825 826
-                                     ( ( substr( $s, $pos, 1 ) eq 'N' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 826 828
-                                      (   ( $pad{I1196} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 826 827
-                                       ( ( substr( $s, $pos, 1 ) eq 'D' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1196} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-                                     ## <quant>
-                                     ## pos: 828 832
-                                     do { while (
-                                      (   ( $pad{I1197} = $pos or 1 ) &&
-                                         ## <perl5>
-                                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
-                                             ? ( $pos += length( $1 ) or 1 )
-                                             : 0
-                                         )
-                                         ## </perl5>
-     ||    ( ( $pos = $pad{I1197} ) && 0 ) )) {}; $bool = 1 }
-                                     ## </quant>
-    
-                                   &&
-                                     ## <quant>
-                                     ## pos: 832 847
-                                     do { while (
-                                      (   ( $pad{I1198} = $pos or 1 ) &&
-    
-                                         ## <dot>
-                                         ## pos: 832 833
-                                         ( substr( $s, $pos++, 1 ) ne '' )
-                                         ## </dot>
-     ||    ( ( $pos = $pad{I1198} ) && 0 ) )) {}; $bool = 1 }
-                                     ## </quant>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 848 882
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 848 851
-                                      (   ( $pad{I1199} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 850 851
-                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1199} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 851 852
-                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 852 853
-                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 853 854
-                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 854 857
-                                      (   ( $pad{I1200} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 854 855
-                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1200} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 857 882
-                                      (   ( $pad{I1201} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 857 869
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_begin( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1201} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 883 917
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 883 886
-                                      (   ( $pad{I1202} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 885 886
-                                       ( ( substr( $s, $pos, 1 ) eq 'k' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1202} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 886 887
-                                     ( ( substr( $s, $pos, 1 ) eq 'w' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 887 888
-                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 888 892
-                                      (   ( $pad{I1203} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 888 889
-                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1203} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 892 917
-                                      (   ( $pad{I1204} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 892 904
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1204} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 918 952
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 918 921
-                                      (   ( $pad{I1205} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 920 921
-                                       ( ( substr( $s, $pos, 1 ) eq 'p' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1205} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 921 922
-                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 922 927
-                                      (   ( $pad{I1206} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 922 923
-                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1206} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 927 952
-                                      (   ( $pad{I1207} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 927 939
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1207} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 953 987
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 953 956
-                                      (   ( $pad{I1208} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 955 956
-                                       ( ( substr( $s, $pos, 1 ) eq 'f' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1208} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 956 957
-                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 957 962
-                                      (   ( $pad{I1209} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 957 958
-                                       ( ( substr( $s, $pos, 1 ) eq 'r' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1209} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 962 987
-                                      (   ( $pad{I1210} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 962 974
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1210} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
-                                   &&                                ## <concat>
-                                   ## pos: 988 1022
-                                   (
-      
-                                     ## <group>
-                                     ## pos: 988 991
-                                      (   ( $pad{I1211} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 990 991
-                                       ( ( substr( $s, $pos, 1 ) eq 'h' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1211} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 991 992
-                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 992 993
-                                     ( ( substr( $s, $pos, 1 ) eq 'a' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-    
-                                     ## <constant>
-                                     ## pos: 993 994
-                                     ( ( substr( $s, $pos, 1 ) eq 'd' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 994 997
-                                      (   ( $pad{I1212} = $pos or 1 ) &&
-    
-                                       ## <constant>
-                                       ## pos: 994 995
-                                       ( ( substr( $s, $pos, 1 ) eq '1' )
-                                           ? ( $pos += 1 or 1 )
-                                           : 0
-                                       )
-                                       ## </constant>
-     ||    ( ( $pos = $pad{I1212} ) && 0 ) )
-                                     ## </group>
-    
-                                   &&
-      
-                                     ## <group>
-                                     ## pos: 997 1022
-                                      (   ( $pad{I1213} = $pos or 1 ) &&
-                                       ## <metasyntax>
-                                       ## pos: 997 1009
-                                       do {
-                                            my $prior = $::_V6_PRIOR_;
-                                            my $match =
-                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                            $::_V6_PRIOR_ = $prior;
-                                            my $bool = (!$match != 1);
-                                            $pos = $match->to if $bool;
-                                            $match;
-                                       }
-                                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1213} ) && 0 ) )
-                                     ## </group>
-    
-                                   )
-                                   ## </concat>
-    
-                                 )
-                               )
-                               ## </alt>
-     ||    ( ( $pos = $pad{I1191} ) && 0 ) )
-                           || ( $bool = 1 )
-                           )
-                           ## </quant>
-    
-                         )
-                         ## </concat>
-     ||    ( ( $pos = $pad{I1189} ) && 0 ) )
-                     || ( $bool = 1 )
-                     )
-                     ## </quant>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 1045 1056
-                    (   ( $pad{I1214} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^(\s)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1214} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1184} ) && 0 ) )) {}; $bool = 1 }
-           )
-           ## </quant>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token ident
-*ident =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <quant>
-           ## pos: 1118 1143
-           (
-            (   ( $pad{I1215} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 1119 1140
-               (
-                   ( $pad{I1216} = $pos or 1 )
-                   && (
-      
-                   ## <group>
-                   ## pos: 1119 1129
-                    (   ( $pad{I1217} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 1120 1128
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1217} ) && 0 ) )
-                   ## </group>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 1130 1133
-                    (   ( $pad{I1218} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 1131 1132
-                     ( ( substr( $s, $pos, 1 ) eq '_' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1218} ) && 0 ) )
-                   ## </group>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 1134 1140
-                    (   ( $pad{I1219} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 1135 1139
-                     ( ( substr( $s, $pos, 2 ) eq '::' )
-                         ? ( $pos += 2 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1219} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1215} ) && 0 ) )
-           && do { while (
-            (   ( $pad{I1215} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 1119 1140
-               (
-                   ( $pad{I1216} = $pos or 1 )
-                   && (
-      
-                   ## <group>
-                   ## pos: 1119 1129
-                    (   ( $pad{I1217} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 1120 1128
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1217} ) && 0 ) )
-                   ## </group>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 1130 1133
-                    (   ( $pad{I1218} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 1131 1132
-                     ( ( substr( $s, $pos, 1 ) eq '_' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1218} ) && 0 ) )
-                   ## </group>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 1134 1140
-                    (   ( $pad{I1219} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 1135 1139
-                     ( ( substr( $s, $pos, 2 ) eq '::' )
-                         ? ( $pos += 2 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1219} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1215} ) && 0 ) )) {}; $bool = 1 }
-           )
-           ## </quant>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token alnum
-*alnum =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 1164 1178
-            (   ( $pad{I1220} = $pos or 1 ) &&
-             ## <perl5>
-             ( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9a-zA-Z]))\X)/ )
-                 ? ( $pos += length( $1 ) or 1 )
-                 : 0
-             )
-             ## </perl5>
-     ||    ( ( $pos = $pad{I1220} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token alpha
-*alpha =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 1199 1210
-            (   ( $pad{I1221} = $pos or 1 ) &&
-             ## <perl5>
-             ( ( substr( $s, $pos ) =~ m/^((?:(?=[a-zA-Z]))\X)/ )
-                 ? ( $pos += length( $1 ) or 1 )
-                 : 0
-             )
-             ## </perl5>
-     ||    ( ( $pos = $pad{I1221} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token digit
-*digit =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 1231 1239
-            (   ( $pad{I1222} = $pos or 1 ) &&
-             ## <perl5>
-             ( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9]))\X)/ )
-                 ? ( $pos += length( $1 ) or 1 )
-                 : 0
-             )
-             ## </perl5>
-     ||    ( ( $pos = $pad{I1222} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token special_char
-*special_char =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 1284 2177
-           (
-               ( $pad{I1223} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 1285 1473
-               (
-      
-                 ## <group>
-                 ## pos: 1285 1296
-                  (   ( $pad{I1224} = $pos or 1 ) &&
-    
-                   ## <capture>
-                   do{
-                       my $hash = do {
-                         my $bool = 1;
-                         my $from = $pos;
-                         my @match;
-                         my %named;
-                         $bool = 0 unless
-                           ## <alt>
-                           ## pos: 1287 1294
-                           (
-                               ( $pad{I1225} = $pos or 1 )
-                               && (
-      
-                               ## <group>
-                               ## pos: 1287 1290
-                                (   ( $pad{I1226} = $pos or 1 ) &&
-    
-                                 ## <constant>
-                                 ## pos: 1288 1289
-                                 ( ( substr( $s, $pos, 1 ) eq 'c' )
-                                     ? ( $pos += 1 or 1 )
-                                     : 0
-                                 )
-                                 ## </constant>
-     ||    ( ( $pos = $pad{I1226} ) && 0 ) )
-                               ## </group>
-    
-                               )
-                             || (
-                               ( ( $bool = 1 ) && ( $pos = $pad{I1225} ) or 1 )
-                               &&   
-                               ## <group>
-                               ## pos: 1291 1294
-                                (   ( $pad{I1227} = $pos or 1 ) &&
-    
-                                 ## <constant>
-                                 ## pos: 1292 1293
-                                 ( ( substr( $s, $pos, 1 ) eq 'C' )
-                                     ? ( $pos += 1 or 1 )
-                                     : 0
-                                 )
-                                 ## </constant>
-     ||    ( ( $pos = $pad{I1227} ) && 0 ) )
-                               ## </group>
-    
-                             )
-                           )
-                           ## </alt>
-    ;
-                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                       };
-                       my $bool = ${$hash->{'bool'}};
-                       $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                       $bool;
-                   }
-                   ## </capture>
-     ||    ( ( $pos = $pad{I1224} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1296 1299
-                  (   ( $pad{I1228} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 1296 1298
-                   ( ( substr( $s, $pos, 1 ) eq '[' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1228} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1299 1340
-                  (   ( $pad{I1229} = $pos or 1 ) &&
-    
-                   ## <capture>
-                   do{
-                       my $hash = do {
-                         my $bool = 1;
-                         my $from = $pos;
-                         my @match;
-                         my %named;
-                         $bool = 0 unless
-                           ## <quant>
-                           ## pos: 1300 1338
-                           (
-                            (   ( $pad{I1230} = $pos or 1 ) &&
-                               ## <alt>
-                               ## pos: 1302 1336
-                               (
-                                   ( $pad{I1231} = $pos or 1 )
-                                   && (
-                                   ## <named_capture>
-                                   ## pos: 1302 1309
-                                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                               $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'alnum'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                                   ## </named_capture>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&                                ## <perl5>
-                                   ( ( substr( $s, $pos ) =~ m/^(\s)/ )
-                                       ? ( $pos += length( $1 ) or 1 )
-                                       : 0
-                                   )
-                                   ## </perl5>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1313 1318
-                                    (   ( $pad{I1232} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1314 1317
-                                     ( ( substr( $s, $pos, 1 ) eq ';' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1232} ) && 0 ) )
-                                   ## </group>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1319 1324
-                                    (   ( $pad{I1233} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1320 1323
-                                     ( ( substr( $s, $pos, 1 ) eq '(' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1233} ) && 0 ) )
-                                   ## </group>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1325 1330
-                                    (   ( $pad{I1234} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1326 1329
-                                     ( ( substr( $s, $pos, 1 ) eq ')' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1234} ) && 0 ) )
-                                   ## </group>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1331 1336
-                                    (   ( $pad{I1235} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1332 1335
-                                     ( ( substr( $s, $pos, 1 ) eq '-' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1235} ) && 0 ) )
-                                   ## </group>
-    
-                                 )
-                               )
-                               ## </alt>
-     ||    ( ( $pos = $pad{I1230} ) && 0 ) )
-                           && do { while (
-                            (   ( $pad{I1230} = $pos or 1 ) &&
-                               ## <alt>
-                               ## pos: 1302 1336
-                               (
-                                   ( $pad{I1231} = $pos or 1 )
-                                   && (
-                                   ## <named_capture>
-                                   ## pos: 1302 1309
-                                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                               $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'alnum'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                                   ## </named_capture>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&                                ## <perl5>
-                                   ( ( substr( $s, $pos ) =~ m/^(\s)/ )
-                                       ? ( $pos += length( $1 ) or 1 )
-                                       : 0
-                                   )
-                                   ## </perl5>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1313 1318
-                                    (   ( $pad{I1232} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1314 1317
-                                     ( ( substr( $s, $pos, 1 ) eq ';' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1232} ) && 0 ) )
-                                   ## </group>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1319 1324
-                                    (   ( $pad{I1233} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1320 1323
-                                     ( ( substr( $s, $pos, 1 ) eq '(' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1233} ) && 0 ) )
-                                   ## </group>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1325 1330
-                                    (   ( $pad{I1234} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1326 1329
-                                     ( ( substr( $s, $pos, 1 ) eq ')' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1234} ) && 0 ) )
-                                   ## </group>
-    
-                                   )
-                                 || (
-                                   ( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
-                                   &&   
-                                   ## <group>
-                                   ## pos: 1331 1336
-                                    (   ( $pad{I1235} = $pos or 1 ) &&
-    
-                                     ## <constant>
-                                     ## pos: 1332 1335
-                                     ( ( substr( $s, $pos, 1 ) eq '-' )
-                                         ? ( $pos += 1 or 1 )
-                                         : 0
-                                     )
-                                     ## </constant>
-     ||    ( ( $pos = $pad{I1235} ) && 0 ) )
-                                   ## </group>
-    
-                                 )
-                               )
-                               ## </alt>
-     ||    ( ( $pos = $pad{I1230} ) && 0 ) )) {}; $bool = 1 }
-                           )
-                           ## </quant>
-    ;
-                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                       };
-                       my $bool = ${$hash->{'bool'}};
-                       $match[ 1 ] = Pugs::Runtime::Match->new( $hash );
-                       $bool;
-                   }
-                   ## </capture>
-     ||    ( ( $pos = $pad{I1229} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1340 1385
-                  (   ( $pad{I1236} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 1340 1342
-                   ( ( substr( $s, $pos, 1 ) eq ']' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1236} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1385 1473
-                  (   ( $pad{I1237} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 1385 1463
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1237} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
-               &&            ## <concat>
-               ## pos: 1474 1617
-               (
-      
-                 ## <group>
-                 ## pos: 1474 1485
-                  (   ( $pad{I1238} = $pos or 1 ) &&
-                   ## <alt>
-                   ## pos: 1476 1483
-                   (
-                       ( $pad{I1239} = $pos or 1 )
-                       && (
-      
-                       ## <group>
-                       ## pos: 1476 1479
-                        (   ( $pad{I1240} = $pos or 1 ) &&
-    
-                         ## <constant>
-                         ## pos: 1477 1478
-                         ( ( substr( $s, $pos, 1 ) eq 'x' )
-                             ? ( $pos += 1 or 1 )
-                             : 0
-                         )
-                         ## </constant>
-     ||    ( ( $pos = $pad{I1240} ) && 0 ) )
-                       ## </group>
-    
-                       )
-                     || (
-                       ( ( $bool = 1 ) && ( $pos = $pad{I1239} ) or 1 )
-                       &&   
-                       ## <group>
-                       ## pos: 1480 1483
-                        (   ( $pad{I1241} = $pos or 1 ) &&
-    
-                         ## <constant>
-                         ## pos: 1481 1482
-                         ( ( substr( $s, $pos, 1 ) eq 'X' )
-                             ? ( $pos += 1 or 1 )
-                             : 0
-                         )
-                         ## </constant>
-     ||    ( ( $pos = $pad{I1241} ) && 0 ) )
-                       ## </group>
-    
-                     )
-                   )
-                   ## </alt>
-     ||    ( ( $pos = $pad{I1238} ) && 0 ) )
-                 ## </group>
-    
-               &&
-                 ## <quant>
-                 ## pos: 1485 1535
-                 (
-                  (   ( $pad{I1242} = $pos or 1 ) &&
-                     ## <named_capture>
-                     ## pos: 1485 1493
-                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                 $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'xdigit'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1242} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1242} = $pos or 1 ) &&
-                     ## <named_capture>
-                     ## pos: 1485 1493
-                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                 $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'xdigit'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1242} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1535 1617
-                  (   ( $pad{I1243} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 1535 1608
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1243} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
-               &&            ## <concat>
-               ## pos: 1618 1777
-               (
-      
-                 ## <group>
-                 ## pos: 1618 1629
-                  (   ( $pad{I1244} = $pos or 1 ) &&
-    
-                   ## <capture>
-                   do{
-                       my $hash = do {
-                         my $bool = 1;
-                         my $from = $pos;
-                         my @match;
-                         my %named;
-                         $bool = 0 unless
-                           ## <alt>
-                           ## pos: 1620 1627
-                           (
-                               ( $pad{I1245} = $pos or 1 )
-                               && (
-      
-                               ## <group>
-                               ## pos: 1620 1623
-                                (   ( $pad{I1246} = $pos or 1 ) &&
-    
-                                 ## <constant>
-                                 ## pos: 1621 1622
-                                 ( ( substr( $s, $pos, 1 ) eq 'x' )
-                                     ? ( $pos += 1 or 1 )
-                                     : 0
-                                 )
-                                 ## </constant>
-     ||    ( ( $pos = $pad{I1246} ) && 0 ) )
-                               ## </group>
-    
-                               )
-                             || (
-                               ( ( $bool = 1 ) && ( $pos = $pad{I1245} ) or 1 )
-                               &&   
-                               ## <group>
-                               ## pos: 1624 1627
-                                (   ( $pad{I1247} = $pos or 1 ) &&
-    
-                                 ## <constant>
-                                 ## pos: 1625 1626
-                                 ( ( substr( $s, $pos, 1 ) eq 'X' )
-                                     ? ( $pos += 1 or 1 )
-                                     : 0
-                                 )
-                                 ## </constant>
-     ||    ( ( $pos = $pad{I1247} ) && 0 ) )
-                               ## </group>
-    
-                             )
-                           )
-                           ## </alt>
-    ;
-                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                       };
-                       my $bool = ${$hash->{'bool'}};
-                       $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                       $bool;
-                   }
-                   ## </capture>
-     ||    ( ( $pos = $pad{I1244} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1629 1632
-                  (   ( $pad{I1248} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 1629 1631
-                   ( ( substr( $s, $pos, 1 ) eq '[' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1248} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1632 1644
-                  (   ( $pad{I1249} = $pos or 1 ) &&
-    
-                   ## <capture>
-                   do{
-                       my $hash = do {
-                         my $bool = 1;
-                         my $from = $pos;
-                         my @match;
-                         my %named;
-                         $bool = 0 unless
-                           ## <quant>
-                           ## pos: 1633 1642
-                           (
-                            (   ( $pad{I1250} = $pos or 1 ) &&
-                               ## <named_capture>
-                               ## pos: 1633 1641
-                               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                           $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'xdigit'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                               ## </named_capture>
-     ||    ( ( $pos = $pad{I1250} ) && 0 ) )
-                           && do { while (
-                            (   ( $pad{I1250} = $pos or 1 ) &&
-                               ## <named_capture>
-                               ## pos: 1633 1641
-                               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                           $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'xdigit'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                               ## </named_capture>
-     ||    ( ( $pos = $pad{I1250} ) && 0 ) )) {}; $bool = 1 }
-                           )
-                           ## </quant>
-    ;
-                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                       };
-                       my $bool = ${$hash->{'bool'}};
-                       $match[ 1 ] = Pugs::Runtime::Match->new( $hash );
-                       $bool;
-                   }
-                   ## </capture>
-     ||    ( ( $pos = $pad{I1249} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1644 1689
-                  (   ( $pad{I1251} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 1644 1646
-                   ( ( substr( $s, $pos, 1 ) eq ']' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1251} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1689 1777
-                  (   ( $pad{I1252} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 1689 1767
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1252} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
-               &&            ## <concat>
-               ## pos: 1778 1915
-               (
-      
-                 ## <group>
-                 ## pos: 1778 1789
-                  (   ( $pad{I1253} = $pos or 1 ) &&
-                   ## <alt>
-                   ## pos: 1780 1787
-                   (
-                       ( $pad{I1254} = $pos or 1 )
-                       && (
-      
-                       ## <group>
-                       ## pos: 1780 1783
-                        (   ( $pad{I1255} = $pos or 1 ) &&
-    
-                         ## <constant>
-                         ## pos: 1781 1782
-                         ( ( substr( $s, $pos, 1 ) eq 'o' )
-                             ? ( $pos += 1 or 1 )
-                             : 0
-                         )
-                         ## </constant>
-     ||    ( ( $pos = $pad{I1255} ) && 0 ) )
-                       ## </group>
-    
-                       )
-                     || (
-                       ( ( $bool = 1 ) && ( $pos = $pad{I1254} ) or 1 )
-                       &&   
-                       ## <group>
-                       ## pos: 1784 1787
-                        (   ( $pad{I1256} = $pos or 1 ) &&
-    
-                         ## <constant>
-                         ## pos: 1785 1786
-                         ( ( substr( $s, $pos, 1 ) eq 'O' )
-                             ? ( $pos += 1 or 1 )
-                             : 0
-                         )
-                         ## </constant>
-     ||    ( ( $pos = $pad{I1256} ) && 0 ) )
-                       ## </group>
-    
-                     )
-                   )
-                   ## </alt>
-     ||    ( ( $pos = $pad{I1253} ) && 0 ) )
-                 ## </group>
-    
-               &&
-                 ## <quant>
-                 ## pos: 1789 1833
-                 (
-                  (   ( $pad{I1257} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^(\d)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1257} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1257} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^(\d)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1257} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1833 1915
-                  (   ( $pad{I1258} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 1833 1906
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1258} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
-               &&            ## <concat>
-               ## pos: 1916 2069
-               (
-      
-                 ## <group>
-                 ## pos: 1916 1927
-                  (   ( $pad{I1259} = $pos or 1 ) &&
-    
-                   ## <capture>
-                   do{
-                       my $hash = do {
-                         my $bool = 1;
-                         my $from = $pos;
-                         my @match;
-                         my %named;
-                         $bool = 0 unless
-                           ## <alt>
-                           ## pos: 1918 1925
-                           (
-                               ( $pad{I1260} = $pos or 1 )
-                               && (
-      
-                               ## <group>
-                               ## pos: 1918 1921
-                                (   ( $pad{I1261} = $pos or 1 ) &&
-    
-                                 ## <constant>
-                                 ## pos: 1919 1920
-                                 ( ( substr( $s, $pos, 1 ) eq 'o' )
-                                     ? ( $pos += 1 or 1 )
-                                     : 0
-                                 )
-                                 ## </constant>
-     ||    ( ( $pos = $pad{I1261} ) && 0 ) )
-                               ## </group>
-    
-                               )
-                             || (
-                               ( ( $bool = 1 ) && ( $pos = $pad{I1260} ) or 1 )
-                               &&   
-                               ## <group>
-                               ## pos: 1922 1925
-                                (   ( $pad{I1262} = $pos or 1 ) &&
-    
-                                 ## <constant>
-                                 ## pos: 1923 1924
-                                 ( ( substr( $s, $pos, 1 ) eq 'O' )
-                                     ? ( $pos += 1 or 1 )
-                                     : 0
-                                 )
-                                 ## </constant>
-     ||    ( ( $pos = $pad{I1262} ) && 0 ) )
-                               ## </group>
-    
-                             )
-                           )
-                           ## </alt>
-    ;
-                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                       };
-                       my $bool = ${$hash->{'bool'}};
-                       $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                       $bool;
-                   }
-                   ## </capture>
-     ||    ( ( $pos = $pad{I1259} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1927 1930
-                  (   ( $pad{I1263} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 1927 1929
-                   ( ( substr( $s, $pos, 1 ) eq '[' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1263} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1930 1936
-                  (   ( $pad{I1264} = $pos or 1 ) &&
-    
-                   ## <capture>
-                   do{
-                       my $hash = do {
-                         my $bool = 1;
-                         my $from = $pos;
-                         my @match;
-                         my %named;
-                         $bool = 0 unless
-                           ## <quant>
-                           ## pos: 1931 1934
-                           (
-                            (   ( $pad{I1265} = $pos or 1 ) &&
-                               ## <perl5>
-                               ( ( substr( $s, $pos ) =~ m/^(\d)/ )
-                                   ? ( $pos += length( $1 ) or 1 )
-                                   : 0
-                               )
-                               ## </perl5>
-     ||    ( ( $pos = $pad{I1265} ) && 0 ) )
-                           && do { while (
-                            (   ( $pad{I1265} = $pos or 1 ) &&
-                               ## <perl5>
-                               ( ( substr( $s, $pos ) =~ m/^(\d)/ )
-                                   ? ( $pos += length( $1 ) or 1 )
-                                   : 0
-                               )
-                               ## </perl5>
-     ||    ( ( $pos = $pad{I1265} ) && 0 ) )) {}; $bool = 1 }
-                           )
-                           ## </quant>
-    ;
-                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                       };
-                       my $bool = ${$hash->{'bool'}};
-                       $match[ 1 ] = Pugs::Runtime::Match->new( $hash );
-                       $bool;
-                   }
-                   ## </capture>
-     ||    ( ( $pos = $pad{I1264} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1936 1981
-                  (   ( $pad{I1266} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 1936 1938
-                   ( ( substr( $s, $pos, 1 ) eq ']' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1266} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 1981 2069
-                  (   ( $pad{I1267} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 1981 2059
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1267} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
-               &&            ## <concat>
-               ## pos: 2070 2177
-               (
-      
-                 ## <group>
-                 ## pos: 2070 2103
-                  (   ( $pad{I1268} = $pos or 1 ) &&
-    
-                   ## <dot>
-                   ## pos: 2071 2072
-                   ( substr( $s, $pos++, 1 ) ne '' )
-                   ## </dot>
-     ||    ( ( $pos = $pad{I1268} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 2103 2177
-                  (   ( $pad{I1269} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 2103 2176
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1269} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token literal
-*literal =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <quant>
-           ## pos: 2200 2251
-           do { while (
-            (   ( $pad{I1270} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2201 2248
-               (
-                   ( $pad{I1271} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2207 2231
-                   (
-      
-                     ## <group>
-                     ## pos: 2207 2212
-                      (   ( $pad{I1272} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2209 2211
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1272} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2212 2231
-                      (   ( $pad{I1273} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2212 2226
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1273} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1271} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 2232 2248
-                    (   ( $pad{I1274} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\']))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1274} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1270} ) && 0 ) )) {}; $bool = 1 }
-           ## </quant>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token double_quoted
-*double_quoted =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <quant>
-           ## pos: 2280 2372
-           do { while (
-            (   ( $pad{I1275} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2281 2369
-               (
-                   ( $pad{I1276} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2287 2311
-                   (
-      
-                     ## <group>
-                     ## pos: 2287 2292
-                      (   ( $pad{I1277} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2289 2291
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1277} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2292 2311
-                      (   ( $pad{I1278} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2292 2306
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1278} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1276} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 2312 2352
-                    (   ( $pad{I1279} = $pos or 1 ) &&
-                    ## <metasyntax>
-                     ## pos: 2314 2347
-                     do{
-                    my $match = 
-              ## <variable>
-              ## pos: 2314 2347
-              do {
-                our $I1280;
-                our $I1280_sizes;
-                unless ( $I1280 ) {
-                    my $hash = \%Pugs::Grammar::Rule::variables;
-                    my %sizes = map { length($_) => 1 } keys %$hash;
-                    $I1280_sizes = [ sort { $b <=> $a } keys %sizes ];
-                    $I1280 = $hash;
-                }
-                my $match = 0;
-                my $key;
-                for ( @$I1280_sizes ) {
-                    $key = ( $pos <= length( $s )
-                                ? substr( $s, $pos, $_ )
-                                : '' );
-                    if ( exists $I1280->{$key} ) {
-                        #$named{KEY} = $key;
-                        #$::_V6_MATCH_ = $m;
-                        #print "m: ", Dumper( $::_V6_MATCH_->data )
-                        #    if ( $key eq 'until' );
-                        $match = Pugs::Runtime::Regex::preprocess_hash( $I1280, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
-                        last if $match;
-                    }
-                }
-                if ( $match ) {
-                    $pos = $match->to;
-                    #print "match: $key at $pos = ", Dumper( $match->data );
-                    $bool = 1;
-                }; # else { $bool = 0 }
-                $match;
-              }
-              ## </variable>
-    ;
-                    if ( $match ) { push @{$named{'Pugs::Grammar::Rule::variables'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                    ## </metasyntax>
-     ||    ( ( $pos = $pad{I1279} ) && 0 ) )
-                   ## </group>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1276} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 2353 2369
-                    (   ( $pad{I1281} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\"]))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1281} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1275} ) && 0 ) )) {}; $bool = 1 }
-           ## </quant>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token metasyntax
-*metasyntax =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <quant>
-           ## pos: 2398 2576
-           (
-            (   ( $pad{I1282} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2399 2573
-               (
-                   ( $pad{I1283} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2405 2429
-                   (
-      
-                     ## <group>
-                     ## pos: 2405 2410
-                      (   ( $pad{I1284} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2407 2409
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1284} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2410 2429
-                      (   ( $pad{I1285} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2410 2424
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1285} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2430 2458
-                   (
-      
-                     ## <group>
-                     ## pos: 2430 2436
-                      (   ( $pad{I1286} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2432 2434
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1286} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2436 2451
-                      (   ( $pad{I1287} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2436 2446
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1287} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2451 2458
-                      (   ( $pad{I1288} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2451 2453
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1288} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2459 2491
-                   (
-      
-                     ## <group>
-                     ## pos: 2459 2465
-                      (   ( $pad{I1289} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2461 2463
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1289} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2465 2484
-                      (   ( $pad{I1290} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2465 2481
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1290} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2484 2491
-                      (   ( $pad{I1291} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2484 2486
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1291} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2492 2527
-                   (
-      
-                     ## <group>
-                     ## pos: 2492 2498
-                      (   ( $pad{I1292} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2494 2496
-                       ( ( substr( $s, $pos, 1 ) eq '{' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1292} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2498 2520
-                      (   ( $pad{I1293} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2498 2512
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1293} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2520 2527
-                      (   ( $pad{I1294} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2520 2522
-                       ( ( substr( $s, $pos, 1 ) eq '}' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1294} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2528 2556
-                   (
-      
-                     ## <group>
-                     ## pos: 2528 2534
-                      (   ( $pad{I1295} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2530 2532
-                       ( ( substr( $s, $pos, 1 ) eq '<' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1295} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2534 2549
-                      (   ( $pad{I1296} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2534 2547
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1296} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2549 2556
-                      (   ( $pad{I1297} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2549 2551
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1297} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 2557 2573
-                    (   ( $pad{I1298} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1298} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1282} ) && 0 ) )
-           && do { while (
-            (   ( $pad{I1282} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2399 2573
-               (
-                   ( $pad{I1283} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2405 2429
-                   (
-      
-                     ## <group>
-                     ## pos: 2405 2410
-                      (   ( $pad{I1284} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2407 2409
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1284} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2410 2429
-                      (   ( $pad{I1285} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2410 2424
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1285} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2430 2458
-                   (
-      
-                     ## <group>
-                     ## pos: 2430 2436
-                      (   ( $pad{I1286} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2432 2434
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1286} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2436 2451
-                      (   ( $pad{I1287} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2436 2446
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1287} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2451 2458
-                      (   ( $pad{I1288} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2451 2453
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1288} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2459 2491
-                   (
-      
-                     ## <group>
-                     ## pos: 2459 2465
-                      (   ( $pad{I1289} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2461 2463
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1289} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2465 2484
-                      (   ( $pad{I1290} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2465 2481
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1290} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2484 2491
-                      (   ( $pad{I1291} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2484 2486
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1291} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2492 2527
-                   (
-      
-                     ## <group>
-                     ## pos: 2492 2498
-                      (   ( $pad{I1292} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2494 2496
-                       ( ( substr( $s, $pos, 1 ) eq '{' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1292} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2498 2520
-                      (   ( $pad{I1293} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2498 2512
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1293} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2520 2527
-                      (   ( $pad{I1294} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2520 2522
-                       ( ( substr( $s, $pos, 1 ) eq '}' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1294} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2528 2556
-                   (
-      
-                     ## <group>
-                     ## pos: 2528 2534
-                      (   ( $pad{I1295} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2530 2532
-                       ( ( substr( $s, $pos, 1 ) eq '<' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1295} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2534 2549
-                      (   ( $pad{I1296} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2534 2547
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1296} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2549 2556
-                      (   ( $pad{I1297} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2549 2551
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1297} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 2557 2573
-                    (   ( $pad{I1298} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1298} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1282} ) && 0 ) )) {}; $bool = 1 }
-           )
-           ## </quant>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token char_range
-*char_range =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <quant>
-           ## pos: 2602 2653
-           (
-            (   ( $pad{I1299} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2603 2650
-               (
-                   ( $pad{I1300} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2609 2633
-                   (
-      
-                     ## <group>
-                     ## pos: 2609 2614
-                      (   ( $pad{I1301} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2611 2613
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1301} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2614 2633
-                      (   ( $pad{I1302} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2614 2628
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1302} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1300} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 2634 2650
-                    (   ( $pad{I1303} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1303} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1299} ) && 0 ) )
-           && do { while (
-            (   ( $pad{I1299} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2603 2650
-               (
-                   ( $pad{I1300} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2609 2633
-                   (
-      
-                     ## <group>
-                     ## pos: 2609 2614
-                      (   ( $pad{I1301} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2611 2613
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1301} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2614 2633
-                      (   ( $pad{I1302} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2614 2628
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1302} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1300} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 2634 2650
-                    (   ( $pad{I1303} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1303} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1299} ) && 0 ) )) {}; $bool = 1 }
-           )
-           ## </quant>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token char_class
-*char_class =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 2679 2721
-           (
-               ( $pad{I1304} = $pos or 1 )
-               && (
-               ## <quant>
-               ## pos: 2680 2696
-               (
-                (   ( $pad{I1305} = $pos or 1 ) &&
-                   ## <metasyntax>
-                   ## pos: 2682 2690
-                   do {
-                        my $prior = $::_V6_PRIOR_;
-                        my $match =
-                               $grammar->alpha( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                        $::_V6_PRIOR_ = $prior;
-                        my $bool = (!$match != 1);
-                        $pos = $match->to if $bool;
-                        $match;
-                   }
-                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1305} ) && 0 ) )
-               && do { while (
-                (   ( $pad{I1305} = $pos or 1 ) &&
-                   ## <metasyntax>
-                   ## pos: 2682 2690
-                   do {
-                        my $prior = $::_V6_PRIOR_;
-                        my $match =
-                               $grammar->alpha( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                        $::_V6_PRIOR_ = $prior;
-                        my $bool = (!$match != 1);
-                        $pos = $match->to if $bool;
-                        $match;
-                   }
-                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1305} ) && 0 ) )) {}; $bool = 1 }
-               )
-               ## </quant>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1304} ) or 1 )
-               &&            ## <concat>
-               ## pos: 2697 2721
-               (
-      
-                 ## <group>
-                 ## pos: 2697 2703
-                  (   ( $pad{I1306} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 2699 2701
-                   ( ( substr( $s, $pos, 1 ) eq '[' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1306} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 2703 2718
-                  (   ( $pad{I1307} = $pos or 1 ) &&
-                   ## <metasyntax>
-                   ## pos: 2703 2716
-                   do {
-                        my $prior = $::_V6_PRIOR_;
-                        my $match =
-                               $grammar->char_range( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                        $::_V6_PRIOR_ = $prior;
-                        my $bool = (!$match != 1);
-                        $pos = $match->to if $bool;
-                        $match;
-                   }
-                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1307} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 2718 2721
-                  (   ( $pad{I1308} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 2718 2720
-                   ( ( substr( $s, $pos, 1 ) eq ']' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1308} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token string_code
-*string_code =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <quant>
-           ## pos: 2771 3055
-           (
-            (   ( $pad{I1309} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2772 3052
-               (
-                   ( $pad{I1310} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2778 2802
-                   (
-      
-                     ## <group>
-                     ## pos: 2778 2783
-                      (   ( $pad{I1311} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2780 2782
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1311} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2783 2802
-                      (   ( $pad{I1312} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2783 2797
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1312} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2803 2831
-                   (
-      
-                     ## <group>
-                     ## pos: 2803 2809
-                      (   ( $pad{I1313} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2805 2807
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1313} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2809 2824
-                      (   ( $pad{I1314} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2809 2819
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1314} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2824 2831
-                      (   ( $pad{I1315} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2824 2826
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1315} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2832 2864
-                   (
-      
-                     ## <group>
-                     ## pos: 2832 2838
-                      (   ( $pad{I1316} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2834 2836
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1316} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2838 2857
-                      (   ( $pad{I1317} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2838 2854
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1317} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2857 2864
-                      (   ( $pad{I1318} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2857 2859
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1318} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2865 2903
-                   (
-      
-                     ## <group>
-                     ## pos: 2865 2871
-                      (   ( $pad{I1319} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2867 2869
-                       ( ( substr( $s, $pos, 1 ) eq '{' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1319} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2871 2896
-                      (   ( $pad{I1320} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2872 2893
-                       (
-                           ( $pad{I1321} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2872 2888
-                            (   ( $pad{I1322} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2873 2887
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1322} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1321} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2889 2893
-                            (   ( $pad{I1323} = $pos or 1 ) &&
-     1 # null constant
-     ||    ( ( $pos = $pad{I1323} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1320} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2896 2903
-                      (   ( $pad{I1324} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2896 2898
-                       ( ( substr( $s, $pos, 1 ) eq '}' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1324} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2904 2942
-                   (
-      
-                     ## <group>
-                     ## pos: 2904 2910
-                      (   ( $pad{I1325} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2906 2908
-                       ( ( substr( $s, $pos, 1 ) eq '(' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1325} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2910 2935
-                      (   ( $pad{I1326} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2911 2932
-                       (
-                           ( $pad{I1327} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2911 2927
-                            (   ( $pad{I1328} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2912 2926
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1328} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1327} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2928 2932
-                            (   ( $pad{I1329} = $pos or 1 ) &&
-     1 # null constant
-     ||    ( ( $pos = $pad{I1329} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1326} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2935 2942
-                      (   ( $pad{I1330} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2935 2937
-                       ( ( substr( $s, $pos, 1 ) eq ')' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1330} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2943 2981
-                   (
-      
-                     ## <group>
-                     ## pos: 2943 2949
-                      (   ( $pad{I1331} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2945 2947
-                       ( ( substr( $s, $pos, 1 ) eq '<' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1331} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2949 2974
-                      (   ( $pad{I1332} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2950 2971
-                       (
-                           ( $pad{I1333} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2950 2966
-                            (   ( $pad{I1334} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2951 2965
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1334} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1333} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2967 2971
-                            (   ( $pad{I1335} = $pos or 1 ) &&
-     1 # null constant
-     ||    ( ( $pos = $pad{I1335} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1332} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2974 2981
-                      (   ( $pad{I1336} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2974 2976
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1336} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2982 3016
-                   (
-      
-                     ## <group>
-                     ## pos: 2982 3009
-                      (   ( $pad{I1337} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2985 3007
-                       (
-                           ( $pad{I1338} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2985 2992
-                            (   ( $pad{I1339} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2986 2991
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1339} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2993 2997
-                            (   ( $pad{I1340} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 2994 2996
-                             ( ( substr( $s, $pos, 1 ) eq '>' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1340} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2998 3002
-                            (   ( $pad{I1341} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 2999 3001
-                             ( ( substr( $s, $pos, 1 ) eq '=' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1341} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 3003 3007
-                            (   ( $pad{I1342} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 3004 3006
-                             ( ( substr( $s, $pos, 1 ) eq '-' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1342} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1337} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 3009 3016
-                      (   ( $pad{I1343} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 3009 3011
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1343} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 3017 3029
-                    (   ( $pad{I1344} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 3019 3024
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1344} ) && 0 ) )
-                   ## </group>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 3030 3052
-                    (   ( $pad{I1345} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1345} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1309} ) && 0 ) )
-           && do { while (
-            (   ( $pad{I1309} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 2772 3052
-               (
-                   ( $pad{I1310} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 2778 2802
-                   (
-      
-                     ## <group>
-                     ## pos: 2778 2783
-                      (   ( $pad{I1311} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2780 2782
-                       ( ( substr( $s, $pos, 1 ) eq '\\' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1311} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2783 2802
-                      (   ( $pad{I1312} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 2783 2797
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1312} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2803 2831
-                   (
-      
-                     ## <group>
-                     ## pos: 2803 2809
-                      (   ( $pad{I1313} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2805 2807
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1313} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2809 2824
-                      (   ( $pad{I1314} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2809 2819
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1314} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2824 2831
-                      (   ( $pad{I1315} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2824 2826
-                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1315} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2832 2864
-                   (
-      
-                     ## <group>
-                     ## pos: 2832 2838
-                      (   ( $pad{I1316} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2834 2836
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1316} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2838 2857
-                      (   ( $pad{I1317} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 2838 2854
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1317} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2857 2864
-                      (   ( $pad{I1318} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2857 2859
-                       ( ( substr( $s, $pos, 1 ) eq '"' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1318} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2865 2903
-                   (
-      
-                     ## <group>
-                     ## pos: 2865 2871
-                      (   ( $pad{I1319} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2867 2869
-                       ( ( substr( $s, $pos, 1 ) eq '{' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1319} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2871 2896
-                      (   ( $pad{I1320} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2872 2893
-                       (
-                           ( $pad{I1321} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2872 2888
-                            (   ( $pad{I1322} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2873 2887
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1322} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1321} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2889 2893
-                            (   ( $pad{I1323} = $pos or 1 ) &&
-     1 # null constant
-     ||    ( ( $pos = $pad{I1323} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1320} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2896 2903
-                      (   ( $pad{I1324} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2896 2898
-                       ( ( substr( $s, $pos, 1 ) eq '}' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1324} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2904 2942
-                   (
-      
-                     ## <group>
-                     ## pos: 2904 2910
-                      (   ( $pad{I1325} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2906 2908
-                       ( ( substr( $s, $pos, 1 ) eq '(' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1325} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2910 2935
-                      (   ( $pad{I1326} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2911 2932
-                       (
-                           ( $pad{I1327} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2911 2927
-                            (   ( $pad{I1328} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2912 2926
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1328} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1327} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2928 2932
-                            (   ( $pad{I1329} = $pos or 1 ) &&
-     1 # null constant
-     ||    ( ( $pos = $pad{I1329} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1326} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2935 2942
-                      (   ( $pad{I1330} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2935 2937
-                       ( ( substr( $s, $pos, 1 ) eq ')' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1330} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2943 2981
-                   (
-      
-                     ## <group>
-                     ## pos: 2943 2949
-                      (   ( $pad{I1331} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2945 2947
-                       ( ( substr( $s, $pos, 1 ) eq '<' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1331} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2949 2974
-                      (   ( $pad{I1332} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2950 2971
-                       (
-                           ( $pad{I1333} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2950 2966
-                            (   ( $pad{I1334} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2951 2965
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1334} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1333} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2967 2971
-                            (   ( $pad{I1335} = $pos or 1 ) &&
-     1 # null constant
-     ||    ( ( $pos = $pad{I1335} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1332} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 2974 2981
-                      (   ( $pad{I1336} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 2974 2976
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1336} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 2982 3016
-                   (
-      
-                     ## <group>
-                     ## pos: 2982 3009
-                      (   ( $pad{I1337} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 2985 3007
-                       (
-                           ( $pad{I1338} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 2985 2992
-                            (   ( $pad{I1339} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 2986 2991
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1339} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2993 2997
-                            (   ( $pad{I1340} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 2994 2996
-                             ( ( substr( $s, $pos, 1 ) eq '>' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1340} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 2998 3002
-                            (   ( $pad{I1341} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 2999 3001
-                             ( ( substr( $s, $pos, 1 ) eq '=' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1341} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 3003 3007
-                            (   ( $pad{I1342} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 3004 3006
-                             ( ( substr( $s, $pos, 1 ) eq '-' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1342} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1337} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 3009 3016
-                      (   ( $pad{I1343} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 3009 3011
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1343} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 3017 3029
-                    (   ( $pad{I1344} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 3019 3024
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1344} ) && 0 ) )
-                   ## </group>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
-                   &&   
-                   ## <group>
-                   ## pos: 3030 3052
-                    (   ( $pad{I1345} = $pos or 1 ) &&
-                     ## <perl5>
-                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
-                         ? ( $pos += length( $1 ) or 1 )
-                         : 0
-                     )
-                     ## </perl5>
-     ||    ( ( $pos = $pad{I1345} ) && 0 ) )
-                   ## </group>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1309} ) && 0 ) )) {}; $bool = 1 }
-           )
-           ## </quant>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token parsed_code
-*parsed_code =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 3141 3187
-           (
-      
-             ## <group>
-             ## pos: 3141 3160
-              (   ( $pad{I1346} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 3141 3155
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1346} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 3160 3187
-              (   ( $pad{I1347} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 3160 3186
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return '{' . $_[0] . '}'; }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1347} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token named_capture_body
-*named_capture_body =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 3221 3712
-           (
-               ( $pad{I1348} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 3222 3354
-               (
-      
-                 ## <group>
-                 ## pos: 3222 3227
-                  (   ( $pad{I1349} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 3223 3225
-                   ( ( substr( $s, $pos, 1 ) eq '(' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1349} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3227 3241
-                  (   ( $pad{I1350} = $pos or 1 ) &&
-                   ## <named_capture>
-                   ## pos: 3227 3233
-                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                               $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                   ## </named_capture>
-     ||    ( ( $pos = $pad{I1350} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3241 3245
-                  (   ( $pad{I1351} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 3241 3243
-                   ( ( substr( $s, $pos, 1 ) eq ')' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1351} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3245 3354
-                  (   ( $pad{I1352} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 3245 3349
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { capturing_group => ${ $_[0]->{qw(rule)} },
-                                  _pos => [ $_[0]->from, $_[0]->to ], }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1352} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
-               &&            ## <concat>
-               ## pos: 3355 3402
-               (
-      
-                 ## <group>
-                 ## pos: 3355 3360
-                  (   ( $pad{I1353} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 3356 3358
-                   ( ( substr( $s, $pos, 1 ) eq '[' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1353} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3360 3374
-                  (   ( $pad{I1354} = $pos or 1 ) &&
-                   ## <named_capture>
-                   ## pos: 3360 3366
-                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                               $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                   ## </named_capture>
-     ||    ( ( $pos = $pad{I1354} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3374 3378
-                  (   ( $pad{I1355} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 3374 3376
-                   ( ( substr( $s, $pos, 1 ) eq ']' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1355} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3378 3402
-                  (   ( $pad{I1356} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 3378 3397
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(rule)} } }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1356} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
-               &&            ## <concat>
-               ## pos: 3403 3464
-               (
-      
-                 ## <group>
-                 ## pos: 3403 3408
-                  (   ( $pad{I1357} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 3404 3406
-                   ( ( substr( $s, $pos, 1 ) eq '<' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1357} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3408 3428
-                  (   ( $pad{I1358} = $pos or 1 ) &&
-                   ## <named_capture>
-                   ## pos: 3408 3426
-                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                               $grammar->parse_metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'parse_metasyntax'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                   ## </named_capture>
-     ||    ( ( $pos = $pad{I1358} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3428 3464
-                  (   ( $pad{I1359} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 3428 3459
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(parse_metasyntax)} } }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1359} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
-               &&            ## <concat>
-               ## pos: 3465 3678
-               (
-      
-                 ## <group>
-                 ## pos: 3465 3470
-                  (   ( $pad{I1360} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 3466 3468
-                   ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1360} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3470 3484
-                  (   ( $pad{I1361} = $pos or 1 ) &&
-                   ## <metasyntax>
-                   ## pos: 3470 3480
-                   do {
-                        my $prior = $::_V6_PRIOR_;
-                        my $match =
-                               $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                        $::_V6_PRIOR_ = $prior;
-                        my $bool = (!$match != 1);
-                        $pos = $match->to if $bool;
-                        $match;
-                   }
-                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1361} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3484 3495
-                  (   ( $pad{I1362} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 3484 3486
-                   ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1362} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 3495 3678
-                  (   ( $pad{I1363} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 3495 3673
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { metasyntax => {
-                            metasyntax => "${$_[0]}",
-                            },
-                       _pos => [ $_[0]->from, $_[0]->to ],
-                    };
-            }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1363} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
-               &&   
-               ## <group>
-               ## pos: 3679 3712
-                (   ( $pad{I1364} = $pos or 1 ) &&
-                 ## <closure>
-                 ## pos: 3680 3711
-                 do { 
-                   local $::_V6_SUCCEED = 1;
-                   $::_V6_MATCH_ = $m;
-                   sub { die "invalid alias syntax"; }->( $m );
-                   1;
-                 }
-                 ## </closure>
-     ||    ( ( $pos = $pad{I1364} ) && 0 ) )
-               ## </group>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token parse_metasyntax
-*parse_metasyntax =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 3748 6621
-           (
-      
-             ## <group>
-             ## pos: 3748 3792
-              (   ( $pad{I1365} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 3748 3787
-               do{
-                    my $from = $pos;
-                    my $bool =                    ## <alt>
-                       ## pos: 3764 3786
-                       (
-                           ( $pad{I1366} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 3764 3769
-                            (   ( $pad{I1367} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 3765 3768
-                             ( ( substr( $s, $pos, 1 ) eq '!' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1367} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1366} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 3770 3775
-                            (   ( $pad{I1368} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 3771 3774
-                             ( ( substr( $s, $pos, 1 ) eq '?' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1368} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1366} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 3776 3781
-                            (   ( $pad{I1369} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 3777 3780
-                             ( ( substr( $s, $pos, 1 ) eq '.' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1369} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1366} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 3782 3786
-                            (   ( $pad{I1370} = $pos or 1 ) &&
-     1 # null constant
-     ||    ( ( $pos = $pad{I1370} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-    ;
-                    my $match = Pugs::Runtime::Match->new(
-                        { str => \$s, from => \$from, match => [], named => {}, bool => \1, to => \(0+$pos), capture => undef }
-                    ); $named{'modifier'} = $match;
-                    $bool
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1365} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 3792 6621
-              (   ( $pad{I1371} = $pos or 1 ) &&
-               ## <alt>
-               ## pos: 3793 6619
-               (
-                   ( $pad{I1372} = $pos or 1 )
-                   && (
-                   ## <concat>
-                   ## pos: 3793 4011
-                   (
-      
-                     ## <group>
-                     ## pos: 3793 3807
-                      (   ( $pad{I1373} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 3802 3805
-                       ( ( substr( $s, $pos, 1 ) eq '{' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1373} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 3807 3822
-                      (   ( $pad{I1374} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 3807 3820
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'parsed_code'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1374} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 3822 3835
-                      (   ( $pad{I1375} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 3822 3826
-                       ( ( substr( $s, $pos, 2 ) eq '}>' )
-                           ? ( $pos += 2 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1375} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 3835 4011
-                      (   ( $pad{I1376} = $pos or 1 ) &&
-                       ## <closure>
-                       ## pos: 3835 4006
-                       do {
-                         local $::_V6_SUCCEED = 1;
-                         $::_V6_MATCH_ = $m;
-                         $m->data->{capture} = \( sub { return { closure => {
-                closure  => ${ $_[0]->{qw(parsed_code)} },
-                modifier => ${ $_[0]->{qw(modifier)} },
-            },
-                _pos => [ $_[0]->from - 1, $_[0]->to ],
-            } }->( $m ) ); 
-                         $bool = $::_V6_SUCCEED;
-                         $::_V6_MATCH_ = $m if $bool; 
-                         return $m if $bool; 
-                       }
-                       ## </closure>
-     ||    ( ( $pos = $pad{I1376} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1372} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 4012 4505
-                   (
-      
-                     ## <group>
-                     ## pos: 4012 4042
-                      (   ( $pad{I1377} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 4021 4033
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1377} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-                     ## <quant>
-                     ## pos: 4042 4075
-                     (
-                      (   ( $pad{I1378} = $pos or 1 ) &&
-    
-                         ## <capture>
-                         do{
-                             my $hash = do {
-                               my $bool = 1;
-                               my $from = $pos;
-                               my @match;
-                               my %named;
-                               $bool = 0 unless
-                                 ## <concat>
-                                 ## pos: 4043 4064
-                                 (
-      
-                                   ## <group>
-                                   ## pos: 4043 4051
-                                    (   ( $pad{I1379} = $pos or 1 ) &&
-                                     ## <perl5>
-                                     ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
-                                         ? ( $pos += length( $1 ) or 1 )
-                                         : 0
-                                     )
-                                     ## </perl5>
-     ||    ( ( $pos = $pad{I1379} ) && 0 ) )
-                                   ## </group>
-    
-                                 &&
-      
-                                   ## <group>
-                                   ## pos: 4051 4064
-                                    (   ( $pad{I1380} = $pos or 1 ) &&
-                                     ## <named_capture>
-                                     ## pos: 4051 4063
-                                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                                 $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1380} ) && 0 ) )
-                                   ## </group>
-    
-                                 )
-                                 ## </concat>
-    ;
-                               { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                             };
-                             my $bool = ${$hash->{'bool'}};
-                             if ( $bool ) {
-                                 push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
-                             }
-                             $bool;
-                         }
-                         ## </capture>
-     ||    ( ( $pos = $pad{I1378} ) && 0 ) )
-                     && do { while (
-                      (   ( $pad{I1378} = $pos or 1 ) &&
-    
-                         ## <capture>
-                         do{
-                             my $hash = do {
-                               my $bool = 1;
-                               my $from = $pos;
-                               my @match;
-                               my %named;
-                               $bool = 0 unless
-                                 ## <concat>
-                                 ## pos: 4043 4064
-                                 (
-      
-                                   ## <group>
-                                   ## pos: 4043 4051
-                                    (   ( $pad{I1379} = $pos or 1 ) &&
-                                     ## <perl5>
-                                     ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
-                                         ? ( $pos += length( $1 ) or 1 )
-                                         : 0
-                                     )
-                                     ## </perl5>
-     ||    ( ( $pos = $pad{I1379} ) && 0 ) )
-                                   ## </group>
-    
-                                 &&
-      
-                                   ## <group>
-                                   ## pos: 4051 4064
-                                    (   ( $pad{I1380} = $pos or 1 ) &&
-                                     ## <named_capture>
-                                     ## pos: 4051 4063
-                                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                                 $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1380} ) && 0 ) )
-                                   ## </group>
-    
-                                 )
-                                 ## </concat>
-    ;
-                               { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                             };
-                             my $bool = ${$hash->{'bool'}};
-                             if ( $bool ) {
-                                 push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
-                             }
-                             $bool;
-                         }
-                         ## </capture>
-     ||    ( ( $pos = $pad{I1378} ) && 0 ) )) {}; $bool = 1 }
-                     )
-                     ## </quant>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 4075 4086
-                      (   ( $pad{I1381} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 4075 4077
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1381} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 4086 4505
-                      (   ( $pad{I1382} = $pos or 1 ) &&
-                       ## <closure>
-                       ## pos: 4086 4500
-                       do {
-                         local $::_V6_SUCCEED = 1;
-                         $::_V6_MATCH_ = $m;
-                         $m->data->{capture} = \( sub {
-                if ( ${ $_[0]->{qw(modifier)} } eq '!' ) {
-                  return {
-                    negate => {
-                      char_class => [
-                        '+' . $_[0]->{qw(char_class)},
-                        @{$_[0]->[0]},   # TODO - stringify
-                  ] } }
-                }
-                return {
-                  char_class => [
-                    '+' . $_[0]->{qw(char_class)},
-                    @{$_[0]->[0]},   # TODO - stringify
-                ] }
-            }->( $m ) ); 
-                         $bool = $::_V6_SUCCEED;
-                         $::_V6_MATCH_ = $m if $bool; 
-                         return $m if $bool; 
-                       }
-                       ## </closure>
-     ||    ( ( $pos = $pad{I1382} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1372} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 4506 6394
-                   (
-      
-                     ## <group>
-                     ## pos: 4506 4531
-                      (   ( $pad{I1383} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 4515 4522
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'ident'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1383} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 4531 6394
-                      (   ( $pad{I1384} = $pos or 1 ) &&
-                       ## <alt>
-                       ## pos: 4532 6388
-                       (
-                           ( $pad{I1385} = $pos or 1 )
-                           && (
-                           ## <concat>
-                           ## pos: 4532 5149
-                           (
-      
-                             ## <group>
-                             ## pos: 4532 4549
-                              (   ( $pad{I1386} = $pos or 1 ) &&
-                               ## <metasyntax>
-                               ## pos: 4543 4548
-                               do {
-                                    my $prior = $::_V6_PRIOR_;
-                                    my $match =
-                                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                    $::_V6_PRIOR_ = $prior;
-                                    my $bool = (!$match != 1);
-                                    $pos = $match->to if $bool;
-                                    $match;
-                               }
-                               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1386} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 4549 4556
-                              (   ( $pad{I1387} = $pos or 1 ) &&
-                               ## <named_capture>
-                               ## pos: 4549 4555
-                               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                               ## </named_capture>
-     ||    ( ( $pos = $pad{I1387} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 4556 4569
-                              (   ( $pad{I1388} = $pos or 1 ) &&
-    
-                               ## <constant>
-                               ## pos: 4556 4558
-                               ( ( substr( $s, $pos, 1 ) eq '>' )
-                                   ? ( $pos += 1 or 1 )
-                                   : 0
-                               )
-                               ## </constant>
-     ||    ( ( $pos = $pad{I1388} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 4569 5149
-                              (   ( $pad{I1389} = $pos or 1 ) &&
-                               ## <closure>
-                               ## pos: 4569 5140
-                               do {
-                                 local $::_V6_SUCCEED = 1;
-                                 $::_V6_MATCH_ = $m;
-                                 $m->data->{capture} = \( sub {
-                if  ( ${ $_[0]->{qw(ident)} } eq 'before'
-                   || ${ $_[0]->{qw(ident)} } eq 'after'
-                    ) {
-                    return { ${ $_[0]->{qw(ident)} } => {
-                        rule => ${ $_[0]->{qw(rule)} }, modifier => ${ $_[0]->{qw(modifier)} },
-                         }, _pos => [ $_[0]->from - 1, $_[0]->to ], }
-                }
-                return { metasyntax => {
-                            metasyntax => ${ $_[0]->{qw(ident)} },
-                            rule       => ${ $_[0]->{qw(rule)} },
-                            modifier   => ${ $_[0]->{qw(modifier)} },
-                        },
-                        _pos => [ $_[0]->from - 1, $_[0]->to ],
-                    }
-              }->( $m ) ); 
-                                 $bool = $::_V6_SUCCEED;
-                                 $::_V6_MATCH_ = $m if $bool; 
-                                 return $m if $bool; 
-                               }
-                               ## </closure>
-     ||    ( ( $pos = $pad{I1389} ) && 0 ) )
-                             ## </group>
-    
-                           )
-                           ## </concat>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1385} ) or 1 )
-                           &&                        ## <concat>
-                           ## pos: 5150 6129
-                           (
-      
-                             ## <group>
-                             ## pos: 5150 5165
-                              (   ( $pad{I1390} = $pos or 1 ) &&
-    
-                               ## <constant>
-                               ## pos: 5161 5164
-                               ( ( substr( $s, $pos, 1 ) eq ':' )
-                                   ? ( $pos += 1 or 1 )
-                                   : 0
-                               )
-                               ## </constant>
-     ||    ( ( $pos = $pad{I1390} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-                             ## <quant>
-                             ## pos: 5165 5182
-                             (
-                              (   ( $pad{I1391} = $pos or 1 ) &&
-                                 ## <metasyntax>
-                                 ## pos: 5165 5170
-                                 do {
-                                      my $prior = $::_V6_PRIOR_;
-                                      my $match =
-                                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                      $::_V6_PRIOR_ = $prior;
-                                      my $bool = (!$match != 1);
-                                      $pos = $match->to if $bool;
-                                      $match;
-                                 }
-                                 ## </metasyntax>
-     ||    ( ( $pos = $pad{I1391} ) && 0 ) )
-                             || ( $bool = 1 )
-                             )
-                             ## </quant>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 5182 5352
-                              (   ( $pad{I1392} = $pos or 1 ) &&
-                               ## <named_capture>
-                               ## pos: 5182 5341
-                               do{
-                    my $from = $pos;
-                    my $bool =                                    ## <quant>
-                                       ## pos: 5193 5340
-                                       do { while (
-                                        (   ( $pad{I1393} = $pos or 1 ) &&
-                                           ## <alt>
-                                           ## pos: 5207 5327
-                                           (
-                                               ( $pad{I1394} = $pos or 1 )
-                                               && (
-                                               ## <concat>
-                                               ## pos: 5221 5253
-                                               (
-      
-                                                 ## <group>
-                                                 ## pos: 5221 5226
-                                                  (   ( $pad{I1395} = $pos or 1 ) &&
-    
-                                                   ## <constant>
-                                                   ## pos: 5223 5225
-                                                   ( ( substr( $s, $pos, 1 ) eq '\\' )
-                                                       ? ( $pos += 1 or 1 )
-                                                       : 0
-                                                   )
-                                                   ## </constant>
-     ||    ( ( $pos = $pad{I1395} ) && 0 ) )
-                                                 ## </group>
-    
-                                               &&
-      
-                                                 ## <group>
-                                                 ## pos: 5226 5253
-                                                  (   ( $pad{I1396} = $pos or 1 ) &&
-                                                   ## <named_capture>
-                                                   ## pos: 5226 5240
-                                                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                                               $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'special_char'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                                                   ## </named_capture>
-     ||    ( ( $pos = $pad{I1396} ) && 0 ) )
-                                                 ## </group>
-    
-                                               )
-                                               ## </concat>
-    
-                                               )
-                                             || (
-                                               ( ( $bool = 1 ) && ( $pos = $pad{I1394} ) or 1 )
-                                               &&   
-                                               ## <group>
-                                               ## pos: 5254 5302
-                                                (   ( $pad{I1397} = $pos or 1 ) &&
-                                                ## <metasyntax>
-                                                 ## pos: 5256 5289
-                                                 do{
-                    my $match = 
-              ## <variable>
-              ## pos: 5256 5289
-              do {
-                our $I1398;
-                our $I1398_sizes;
-                unless ( $I1398 ) {
-                    my $hash = \%Pugs::Grammar::Rule::variables;
-                    my %sizes = map { length($_) => 1 } keys %$hash;
-                    $I1398_sizes = [ sort { $b <=> $a } keys %sizes ];
-                    $I1398 = $hash;
-                }
-                my $match = 0;
-                my $key;
-                for ( @$I1398_sizes ) {
-                    $key = ( $pos <= length( $s )
-                                ? substr( $s, $pos, $_ )
-                                : '' );
-                    if ( exists $I1398->{$key} ) {
-                        #$named{KEY} = $key;
-                        #$::_V6_MATCH_ = $m;
-                        #print "m: ", Dumper( $::_V6_MATCH_->data )
-                        #    if ( $key eq 'until' );
-                        $match = Pugs::Runtime::Regex::preprocess_hash( $I1398, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
-                        last if $match;
-                    }
-                }
-                if ( $match ) {
-                    $pos = $match->to;
-                    #print "match: $key at $pos = ", Dumper( $match->data );
-                    $bool = 1;
-                }; # else { $bool = 0 }
-                $match;
-              }
-              ## </variable>
-    ;
-                    if ( $match ) { push @{$named{'Pugs::Grammar::Rule::variables'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                                                ## </metasyntax>
-     ||    ( ( $pos = $pad{I1397} ) && 0 ) )
-                                               ## </group>
-    
-                                               )
-                                             || (
-                                               ( ( $bool = 1 ) && ( $pos = $pad{I1394} ) or 1 )
-                                               &&   
-                                               ## <group>
-                                               ## pos: 5303 5327
-                                                (   ( $pad{I1399} = $pos or 1 ) &&
-                                                 ## <perl5>
-                                                 ( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
-                                                     ? ( $pos += length( $1 ) or 1 )
-                                                     : 0
-                                                 )
-                                                 ## </perl5>
-     ||    ( ( $pos = $pad{I1399} ) && 0 ) )
-                                               ## </group>
-    
-                                             )
-                                           )
-                                           ## </alt>
-     ||    ( ( $pos = $pad{I1393} ) && 0 ) )) {}; $bool = 1 }
-                                       ## </quant>
-    ;
-                    my $match = Pugs::Runtime::Match->new(
-                        { str => \$s, from => \$from, match => [], named => {}, bool => \1, to => \(0+$pos), capture => undef }
-                    ); $named{'str'} = $match;
-                    $bool
-                }
-                               ## </named_capture>
-     ||    ( ( $pos = $pad{I1392} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 5352 5365
-                              (   ( $pad{I1400} = $pos or 1 ) &&
-    
-                               ## <constant>
-                               ## pos: 5352 5354
-                               ( ( substr( $s, $pos, 1 ) eq '>' )
-                                   ? ( $pos += 1 or 1 )
-                                   : 0
-                               )
-                               ## </constant>
-     ||    ( ( $pos = $pad{I1400} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 5365 6129
-                              (   ( $pad{I1401} = $pos or 1 ) &&
-                               ## <closure>
-                               ## pos: 5365 6120
-                               do {
-                                 local $::_V6_SUCCEED = 1;
-                                 $::_V6_MATCH_ = $m;
-                                 $m->data->{capture} = \( sub {
-                if  ( ${ $_[0]->{qw(ident)} } eq 'before'
-                   || ${ $_[0]->{qw(ident)} } eq 'after'
-                    ) {
-                    return { ${ $_[0]->{qw(ident)} } => {
-                        rule     => { metasyntax => {
-                                    metasyntax => '\'' . ${ $_[0]->{qw(str)} } . '\'',
-                                },
-                            _pos => [ $_[0]->{qw(str)}->from, $_[0]->{qw(str)}->to ],                   },
-                        modifier => ${ $_[0]->{qw(modifier)} },
-                        _pos => [ $_[0]->from - 1, $_[0]->to ],
-                    } }
-                }
-                return { metasyntax => {
-                    metasyntax => ${ $_[0]->{qw(ident)} },
-                    string   => ${ $_[0]->{qw(str)} },
-                    modifier => ${ $_[0]->{qw(modifier)} },
-                },
-                    _pos => [ $_[0]->from - 1, $_[0]->to ],
-                }
-              }->( $m ) ); 
-                                 $bool = $::_V6_SUCCEED;
-                                 $::_V6_MATCH_ = $m if $bool; 
-                                 return $m if $bool; 
-                               }
-                               ## </closure>
-     ||    ( ( $pos = $pad{I1401} ) && 0 ) )
-                             ## </group>
-    
-                           )
-                           ## </concat>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1385} ) or 1 )
-                           &&                        ## <concat>
-                           ## pos: 6130 6388
-                           (
-      
-                             ## <group>
-                             ## pos: 6130 6145
-                              (   ( $pad{I1402} = $pos or 1 ) &&
-    
-                               ## <constant>
-                               ## pos: 6141 6143
-                               ( ( substr( $s, $pos, 1 ) eq '(' )
-                                   ? ( $pos += 1 or 1 )
-                                   : 0
-                               )
-                               ## </constant>
-     ||    ( ( $pos = $pad{I1402} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 6145 6160
-                              (   ( $pad{I1403} = $pos or 1 ) &&
-                               ## <named_capture>
-                               ## pos: 6145 6158
-                               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                           $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'parsed_code'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                               ## </named_capture>
-     ||    ( ( $pos = $pad{I1403} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 6160 6163
-                              (   ( $pad{I1404} = $pos or 1 ) &&
-    
-                               ## <constant>
-                               ## pos: 6160 6162
-                               ( ( substr( $s, $pos, 1 ) eq ')' )
-                                   ? ( $pos += 1 or 1 )
-                                   : 0
-                               )
-                               ## </constant>
-     ||    ( ( $pos = $pad{I1404} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 6163 6176
-                              (   ( $pad{I1405} = $pos or 1 ) &&
-    
-                               ## <constant>
-                               ## pos: 6163 6165
-                               ( ( substr( $s, $pos, 1 ) eq '>' )
-                                   ? ( $pos += 1 or 1 )
-                                   : 0
-                               )
-                               ## </constant>
-     ||    ( ( $pos = $pad{I1405} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 6176 6388
-                              (   ( $pad{I1406} = $pos or 1 ) &&
-                               ## <closure>
-                               ## pos: 6176 6379
-                               do {
-                                 local $::_V6_SUCCEED = 1;
-                                 $::_V6_MATCH_ = $m;
-                                 $m->data->{capture} = \( sub { return { call => {
-                  method   => ${ $_[0]->{qw(ident)} },
-                  params   => ${ $_[0]->{qw(parsed_code)} },
-                  modifier => ${ $_[0]->{qw(modifier)} },
-              },
-                  _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
-                                 $bool = $::_V6_SUCCEED;
-                                 $::_V6_MATCH_ = $m if $bool; 
-                                 return $m if $bool; 
-                               }
-                               ## </closure>
-     ||    ( ( $pos = $pad{I1406} ) && 0 ) )
-                             ## </group>
-    
-                           )
-                           ## </concat>
-    
-                         )
-                       )
-                       ## </alt>
-     ||    ( ( $pos = $pad{I1384} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                   )
-                 || (
-                   ( ( $bool = 1 ) && ( $pos = $pad{I1372} ) or 1 )
-                   &&                ## <concat>
-                   ## pos: 6395 6619
-                   (
-      
-                     ## <group>
-                     ## pos: 6395 6418
-                      (   ( $pad{I1407} = $pos or 1 ) &&
-                       ## <named_capture>
-                       ## pos: 6404 6416
-                       do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                   $grammar->metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'metasyntax'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                       ## </named_capture>
-     ||    ( ( $pos = $pad{I1407} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 6418 6429
-                      (   ( $pad{I1408} = $pos or 1 ) &&
-    
-                       ## <constant>
-                       ## pos: 6418 6420
-                       ( ( substr( $s, $pos, 1 ) eq '>' )
-                           ? ( $pos += 1 or 1 )
-                           : 0
-                       )
-                       ## </constant>
-     ||    ( ( $pos = $pad{I1408} ) && 0 ) )
-                     ## </group>
-    
-                   &&
-      
-                     ## <group>
-                     ## pos: 6429 6619
-                      (   ( $pad{I1409} = $pos or 1 ) &&
-                       ## <closure>
-                       ## pos: 6429 6614
-                       do {
-                         local $::_V6_SUCCEED = 1;
-                         $::_V6_MATCH_ = $m;
-                         $m->data->{capture} = \( sub { return { metasyntax => {
-                  metasyntax => "${ $_[0]->{qw(metasyntax)} }",
-                  modifier   => ${ $_[0]->{qw(modifier)} },
-            },
-                  _pos => [ $_[0]->from - 1, $_[0]->to ],
-            } }->( $m ) ); 
-                         $bool = $::_V6_SUCCEED;
-                         $::_V6_MATCH_ = $m if $bool; 
-                         return $m if $bool; 
-                       }
-                       ## </closure>
-     ||    ( ( $pos = $pad{I1409} ) && 0 ) )
-                     ## </group>
-    
-                   )
-                   ## </concat>
-    
-                 )
-               )
-               ## </alt>
-     ||    ( ( $pos = $pad{I1371} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token var1
-*var1 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 6731 6833
-           (
-      
-             ## <group>
-             ## pos: 6731 6739
-              (   ( $pad{I1410} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 6731 6738
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'ident'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1410} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 6739 6750
-              (   ( $pad{I1411} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 6739 6741
-               ( ( substr( $s, $pos, 1 ) eq '>' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1411} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 6750 6833
-              (   ( $pad{I1412} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 6750 6832
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { match_variable => '$' . $_[0]->{ident}, _pos => [$_[0]->from - 2, $_[0]->to], }; }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1412} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $variables{'$<'} = sub { var1($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token var2
-*var2 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 6925 7149
-           (
-               ( $pad{I1413} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 6925 7023
-               (
-                 ## <quant>
-                 ## pos: 6925 6943
-                 (
-                  (   ( $pad{I1414} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 6925 6933
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1414} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1414} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 6925 6933
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1414} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 6943 7023
-                  (   ( $pad{I1415} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 6943 7018
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { match_variable => '$' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1415} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1413} ) or 1 )
-               &&            ## <concat>
-               ## pos: 7024 7149
-               (
-                 ## <quant>
-                 ## pos: 7024 7045
-                 (
-                  (   ( $pad{I1416} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 7033 7035
-                     ( ( substr( $s, $pos, 1 ) eq '^' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1416} ) && 0 ) )
-                 || ( $bool = 1 )
-                 )
-                 ## </quant>
-    
-               &&
-                 ## <quant>
-                 ## pos: 7045 7079
-                 (
-                  (   ( $pad{I1417} = $pos or 1 ) &&
-                     ## <alt>
-                     ## pos: 7046 7068
-                     (
-                         ( $pad{I1418} = $pos or 1 )
-                         && (
-      
-                         ## <group>
-                         ## pos: 7046 7056
-                          (   ( $pad{I1419} = $pos or 1 ) &&
-                           ## <metasyntax>
-                           ## pos: 7047 7055
-                           do {
-                                my $prior = $::_V6_PRIOR_;
-                                my $match =
-                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                $::_V6_PRIOR_ = $prior;
-                                my $bool = (!$match != 1);
-                                $pos = $match->to if $bool;
-                                $match;
-                           }
-                           ## </metasyntax>
-     ||    ( ( $pos = $pad{I1419} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
-                         &&   
-                         ## <group>
-                         ## pos: 7057 7060
-                          (   ( $pad{I1420} = $pos or 1 ) &&
-    
-                           ## <constant>
-                           ## pos: 7058 7059
-                           ( ( substr( $s, $pos, 1 ) eq '_' )
-                               ? ( $pos += 1 or 1 )
-                               : 0
-                           )
-                           ## </constant>
-     ||    ( ( $pos = $pad{I1420} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
-                         &&                      ## <concat>
-                         ## pos: 7061 7068
-                         (
-      
-                           ## <group>
-                           ## pos: 7061 7065
-                            (   ( $pad{I1421} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7062 7064
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1421} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 7065 7068
-                            (   ( $pad{I1422} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7065 7067
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1422} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    
-                       )
-                     )
-                     ## </alt>
-     ||    ( ( $pos = $pad{I1417} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1417} = $pos or 1 ) &&
-                     ## <alt>
-                     ## pos: 7046 7068
-                     (
-                         ( $pad{I1418} = $pos or 1 )
-                         && (
-      
-                         ## <group>
-                         ## pos: 7046 7056
-                          (   ( $pad{I1419} = $pos or 1 ) &&
-                           ## <metasyntax>
-                           ## pos: 7047 7055
-                           do {
-                                my $prior = $::_V6_PRIOR_;
-                                my $match =
-                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                $::_V6_PRIOR_ = $prior;
-                                my $bool = (!$match != 1);
-                                $pos = $match->to if $bool;
-                                $match;
-                           }
-                           ## </metasyntax>
-     ||    ( ( $pos = $pad{I1419} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
-                         &&   
-                         ## <group>
-                         ## pos: 7057 7060
-                          (   ( $pad{I1420} = $pos or 1 ) &&
-    
-                           ## <constant>
-                           ## pos: 7058 7059
-                           ( ( substr( $s, $pos, 1 ) eq '_' )
-                               ? ( $pos += 1 or 1 )
-                               : 0
-                           )
-                           ## </constant>
-     ||    ( ( $pos = $pad{I1420} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
-                         &&                      ## <concat>
-                         ## pos: 7061 7068
-                         (
-      
-                           ## <group>
-                           ## pos: 7061 7065
-                            (   ( $pad{I1421} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7062 7064
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1421} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 7065 7068
-                            (   ( $pad{I1422} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7065 7067
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1422} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    
-                       )
-                     )
-                     ## </alt>
-     ||    ( ( $pos = $pad{I1417} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 7079 7149
-                  (   ( $pad{I1423} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 7079 7148
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { variable => '$' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1423} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $variables{'$'} = sub { var2($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token var3
-*var3 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 7240 7462
-           (
-               ( $pad{I1424} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 7240 7337
-               (
-                 ## <quant>
-                 ## pos: 7240 7258
-                 (
-                  (   ( $pad{I1425} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 7240 7248
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1425} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1425} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 7240 7248
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1425} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 7258 7337
-                  (   ( $pad{I1426} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 7258 7332
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { match_variable => '@' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1426} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1424} ) or 1 )
-               &&            ## <concat>
-               ## pos: 7338 7462
-               (
-                 ## <quant>
-                 ## pos: 7338 7359
-                 (
-                  (   ( $pad{I1427} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 7347 7349
-                     ( ( substr( $s, $pos, 1 ) eq '^' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1427} ) && 0 ) )
-                 || ( $bool = 1 )
-                 )
-                 ## </quant>
-    
-               &&
-                 ## <quant>
-                 ## pos: 7359 7393
-                 (
-                  (   ( $pad{I1428} = $pos or 1 ) &&
-                     ## <alt>
-                     ## pos: 7360 7382
-                     (
-                         ( $pad{I1429} = $pos or 1 )
-                         && (
-      
-                         ## <group>
-                         ## pos: 7360 7370
-                          (   ( $pad{I1430} = $pos or 1 ) &&
-                           ## <metasyntax>
-                           ## pos: 7361 7369
-                           do {
-                                my $prior = $::_V6_PRIOR_;
-                                my $match =
-                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                $::_V6_PRIOR_ = $prior;
-                                my $bool = (!$match != 1);
-                                $pos = $match->to if $bool;
-                                $match;
-                           }
-                           ## </metasyntax>
-     ||    ( ( $pos = $pad{I1430} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
-                         &&   
-                         ## <group>
-                         ## pos: 7371 7374
-                          (   ( $pad{I1431} = $pos or 1 ) &&
-    
-                           ## <constant>
-                           ## pos: 7372 7373
-                           ( ( substr( $s, $pos, 1 ) eq '_' )
-                               ? ( $pos += 1 or 1 )
-                               : 0
-                           )
-                           ## </constant>
-     ||    ( ( $pos = $pad{I1431} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
-                         &&                      ## <concat>
-                         ## pos: 7375 7382
-                         (
-      
-                           ## <group>
-                           ## pos: 7375 7379
-                            (   ( $pad{I1432} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7376 7378
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1432} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 7379 7382
-                            (   ( $pad{I1433} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7379 7381
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1433} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    
-                       )
-                     )
-                     ## </alt>
-     ||    ( ( $pos = $pad{I1428} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1428} = $pos or 1 ) &&
-                     ## <alt>
-                     ## pos: 7360 7382
-                     (
-                         ( $pad{I1429} = $pos or 1 )
-                         && (
-      
-                         ## <group>
-                         ## pos: 7360 7370
-                          (   ( $pad{I1430} = $pos or 1 ) &&
-                           ## <metasyntax>
-                           ## pos: 7361 7369
-                           do {
-                                my $prior = $::_V6_PRIOR_;
-                                my $match =
-                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                $::_V6_PRIOR_ = $prior;
-                                my $bool = (!$match != 1);
-                                $pos = $match->to if $bool;
-                                $match;
-                           }
-                           ## </metasyntax>
-     ||    ( ( $pos = $pad{I1430} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
-                         &&   
-                         ## <group>
-                         ## pos: 7371 7374
-                          (   ( $pad{I1431} = $pos or 1 ) &&
-    
-                           ## <constant>
-                           ## pos: 7372 7373
-                           ( ( substr( $s, $pos, 1 ) eq '_' )
-                               ? ( $pos += 1 or 1 )
-                               : 0
-                           )
-                           ## </constant>
-     ||    ( ( $pos = $pad{I1431} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
-                         &&                      ## <concat>
-                         ## pos: 7375 7382
-                         (
-      
-                           ## <group>
-                           ## pos: 7375 7379
-                            (   ( $pad{I1432} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7376 7378
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1432} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 7379 7382
-                            (   ( $pad{I1433} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7379 7381
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1433} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    
-                       )
-                     )
-                     ## </alt>
-     ||    ( ( $pos = $pad{I1428} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 7393 7462
-                  (   ( $pad{I1434} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 7393 7461
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { variable => '@' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1434} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $variables{'@'} = sub { var3($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token var4
-*var4 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 7553 7773
-           (
-               ( $pad{I1435} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 7553 7649
-               (
-                 ## <quant>
-                 ## pos: 7553 7571
-                 (
-                  (   ( $pad{I1436} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 7553 7561
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1436} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1436} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 7553 7561
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1436} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 7571 7649
-                  (   ( $pad{I1437} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 7571 7644
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { match_variable => '%' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] } }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1437} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1435} ) or 1 )
-               &&            ## <concat>
-               ## pos: 7650 7773
-               (
-                 ## <quant>
-                 ## pos: 7650 7671
-                 (
-                  (   ( $pad{I1438} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 7659 7661
-                     ( ( substr( $s, $pos, 1 ) eq '^' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1438} ) && 0 ) )
-                 || ( $bool = 1 )
-                 )
-                 ## </quant>
-    
-               &&
-                 ## <quant>
-                 ## pos: 7671 7705
-                 (
-                  (   ( $pad{I1439} = $pos or 1 ) &&
-                     ## <alt>
-                     ## pos: 7672 7694
-                     (
-                         ( $pad{I1440} = $pos or 1 )
-                         && (
-      
-                         ## <group>
-                         ## pos: 7672 7682
-                          (   ( $pad{I1441} = $pos or 1 ) &&
-                           ## <metasyntax>
-                           ## pos: 7673 7681
-                           do {
-                                my $prior = $::_V6_PRIOR_;
-                                my $match =
-                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                $::_V6_PRIOR_ = $prior;
-                                my $bool = (!$match != 1);
-                                $pos = $match->to if $bool;
-                                $match;
-                           }
-                           ## </metasyntax>
-     ||    ( ( $pos = $pad{I1441} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
-                         &&   
-                         ## <group>
-                         ## pos: 7683 7686
-                          (   ( $pad{I1442} = $pos or 1 ) &&
-    
-                           ## <constant>
-                           ## pos: 7684 7685
-                           ( ( substr( $s, $pos, 1 ) eq '_' )
-                               ? ( $pos += 1 or 1 )
-                               : 0
-                           )
-                           ## </constant>
-     ||    ( ( $pos = $pad{I1442} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
-                         &&                      ## <concat>
-                         ## pos: 7687 7694
-                         (
-      
-                           ## <group>
-                           ## pos: 7687 7691
-                            (   ( $pad{I1443} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7688 7690
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1443} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 7691 7694
-                            (   ( $pad{I1444} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7691 7693
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1444} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    
-                       )
-                     )
-                     ## </alt>
-     ||    ( ( $pos = $pad{I1439} ) && 0 ) )
-                 && do { while (
-                  (   ( $pad{I1439} = $pos or 1 ) &&
-                     ## <alt>
-                     ## pos: 7672 7694
-                     (
-                         ( $pad{I1440} = $pos or 1 )
-                         && (
-      
-                         ## <group>
-                         ## pos: 7672 7682
-                          (   ( $pad{I1441} = $pos or 1 ) &&
-                           ## <metasyntax>
-                           ## pos: 7673 7681
-                           do {
-                                my $prior = $::_V6_PRIOR_;
-                                my $match =
-                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                $::_V6_PRIOR_ = $prior;
-                                my $bool = (!$match != 1);
-                                $pos = $match->to if $bool;
-                                $match;
-                           }
-                           ## </metasyntax>
-     ||    ( ( $pos = $pad{I1441} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
-                         &&   
-                         ## <group>
-                         ## pos: 7683 7686
-                          (   ( $pad{I1442} = $pos or 1 ) &&
-    
-                           ## <constant>
-                           ## pos: 7684 7685
-                           ( ( substr( $s, $pos, 1 ) eq '_' )
-                               ? ( $pos += 1 or 1 )
-                               : 0
-                           )
-                           ## </constant>
-     ||    ( ( $pos = $pad{I1442} ) && 0 ) )
-                         ## </group>
-    
-                         )
-                       || (
-                         ( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
-                         &&                      ## <concat>
-                         ## pos: 7687 7694
-                         (
-      
-                           ## <group>
-                           ## pos: 7687 7691
-                            (   ( $pad{I1443} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7688 7690
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1443} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 7691 7694
-                            (   ( $pad{I1444} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 7691 7693
-                             ( ( substr( $s, $pos, 1 ) eq ':' )
-                                 ? ( $pos += 1 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1444} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    
-                       )
-                     )
-                     ## </alt>
-     ||    ( ( $pos = $pad{I1439} ) && 0 ) )) {}; $bool = 1 }
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 7705 7773
-                  (   ( $pad{I1445} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 7705 7772
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { variable => '%' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] } }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1445} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $variables{'%'} = sub { var4($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term1
-*term1 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 7974 8124
-            (   ( $pad{I1446} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 7974 8123
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { metasyntax => {
-                            metasyntax => 'null',
-            },
-                            _pos => [ $_[0]->from, $_[0]->to ],
-            } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1446} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'{*}'} = sub { term1($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term2
-*term2 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 8220 8435
-           (
-      
-             ## <group>
-             ## pos: 8220 8235
-              (   ( $pad{I1447} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 8220 8230
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1447} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 8235 8246
-              (   ( $pad{I1448} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 8235 8237
-               ( ( substr( $s, $pos, 1 ) eq chr(39) )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1448} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 8246 8435
-              (   ( $pad{I1449} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 8246 8434
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                    metasyntax => {
-                        metasyntax => '\'' . ${$_[0]},
-                    },
-                        _pos => [ $_[0]->from - 1, $_[0]->to ],
-                };
-            }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1449} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'\''} = sub { term2($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term3
-*term3 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 8530 8646
-           (
-      
-             ## <group>
-             ## pos: 8530 8537
-              (   ( $pad{I1450} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 8530 8536
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1450} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 8537 8548
-              (   ( $pad{I1451} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 8537 8539
-               ( ( substr( $s, $pos, 1 ) eq ')' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1451} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 8548 8646
-              (   ( $pad{I1452} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 8548 8645
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { capturing_group => ${ $_[0]->{qw(rule)} },
-                       _pos => [ $_[0]->from - 1, $_[0]->to ], }; }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1452} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'('} = sub { term3($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term4
-*term4 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 8740 8861
-           (
-      
-             ## <group>
-             ## pos: 8740 8748
-              (   ( $pad{I1453} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 8740 8746
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1453} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 8748 8761
-              (   ( $pad{I1454} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 8748 8752
-               ( ( substr( $s, $pos, 2 ) eq ')>' )
-                   ? ( $pos += 2 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1454} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 8761 8861
-              (   ( $pad{I1455} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 8761 8860
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { capture_as_result => ${ $_[0]->{qw(rule)} },
-                       _pos => [ $_[0]->from - 2, $_[0]->to ], }; }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1455} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'<('} = sub { term4($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term5
-*term5 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 8956 9216
-           (
-      
-             ## <group>
-             ## pos: 8956 8977
-              (   ( $pad{I1456} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 8956 8968
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1456} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 8977 9010
-             do { while (
-              (   ( $pad{I1457} = $pos or 1 ) &&
-    
-                 ## <capture>
-                 do{
-                     my $hash = do {
-                       my $bool = 1;
-                       my $from = $pos;
-                       my @match;
-                       my %named;
-                       $bool = 0 unless
-                         ## <concat>
-                         ## pos: 8978 8999
-                         (
-      
-                           ## <group>
-                           ## pos: 8978 8986
-                            (   ( $pad{I1458} = $pos or 1 ) &&
-                             ## <perl5>
-                             ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
-                                 ? ( $pos += length( $1 ) or 1 )
-                                 : 0
-                             )
-                             ## </perl5>
-     ||    ( ( $pos = $pad{I1458} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 8986 8999
-                            (   ( $pad{I1459} = $pos or 1 ) &&
-                             ## <named_capture>
-                             ## pos: 8986 8998
-                             do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                         $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                             ## </named_capture>
-     ||    ( ( $pos = $pad{I1459} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    ;
-                       { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                     };
-                     my $bool = ${$hash->{'bool'}};
-                     if ( $bool ) {
-                         push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
-                     }
-                     $bool;
-                 }
-                 ## </capture>
-     ||    ( ( $pos = $pad{I1457} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 9010 9021
-              (   ( $pad{I1460} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 9010 9012
-               ( ( substr( $s, $pos, 1 ) eq '>' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1460} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 9021 9216
-              (   ( $pad{I1461} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 9021 9215
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                _pos => [ $_[0]->from - 2, $_[0]->to ],
-                char_class => [
-                    '+' . $_[0]->{qw(char_class)},
-                    @{$_[0]->[0]},   # TODO - stringify
-                ] }
-            }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1461} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'<+'} = sub { term5($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term6
-*term6 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 9311 9571
-           (
-      
-             ## <group>
-             ## pos: 9311 9332
-              (   ( $pad{I1462} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 9311 9323
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1462} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 9332 9365
-             do { while (
-              (   ( $pad{I1463} = $pos or 1 ) &&
-    
-                 ## <capture>
-                 do{
-                     my $hash = do {
-                       my $bool = 1;
-                       my $from = $pos;
-                       my @match;
-                       my %named;
-                       $bool = 0 unless
-                         ## <concat>
-                         ## pos: 9333 9354
-                         (
-      
-                           ## <group>
-                           ## pos: 9333 9341
-                            (   ( $pad{I1464} = $pos or 1 ) &&
-                             ## <perl5>
-                             ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
-                                 ? ( $pos += length( $1 ) or 1 )
-                                 : 0
-                             )
-                             ## </perl5>
-     ||    ( ( $pos = $pad{I1464} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 9341 9354
-                            (   ( $pad{I1465} = $pos or 1 ) &&
-                             ## <named_capture>
-                             ## pos: 9341 9353
-                             do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                         $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                             ## </named_capture>
-     ||    ( ( $pos = $pad{I1465} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    ;
-                       { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                     };
-                     my $bool = ${$hash->{'bool'}};
-                     if ( $bool ) {
-                         push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
-                     }
-                     $bool;
-                 }
-                 ## </capture>
-     ||    ( ( $pos = $pad{I1463} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 9365 9376
-              (   ( $pad{I1466} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 9365 9367
-               ( ( substr( $s, $pos, 1 ) eq '>' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1466} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 9376 9571
-              (   ( $pad{I1467} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 9376 9570
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                _pos => [ $_[0]->from - 2, $_[0]->to ],
-                char_class => [
-                    '-' . $_[0]->{qw(char_class)},
-                    @{$_[0]->[0]},   # TODO - stringify
-                ] }
-            }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1467} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'<-'} = sub { term6($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term7
-*term7 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 9666 9937
-           (
-      
-             ## <group>
-             ## pos: 9666 9680
-              (   ( $pad{I1468} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 9666 9678
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->char_range( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_range'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1468} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 9680 9691
-              (   ( $pad{I1469} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 9680 9682
-               ( ( substr( $s, $pos, 1 ) eq ']' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1469} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 9691 9724
-             do { while (
-              (   ( $pad{I1470} = $pos or 1 ) &&
-    
-                 ## <capture>
-                 do{
-                     my $hash = do {
-                       my $bool = 1;
-                       my $from = $pos;
-                       my @match;
-                       my %named;
-                       $bool = 0 unless
-                         ## <concat>
-                         ## pos: 9692 9713
-                         (
-      
-                           ## <group>
-                           ## pos: 9692 9700
-                            (   ( $pad{I1471} = $pos or 1 ) &&
-                             ## <perl5>
-                             ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
-                                 ? ( $pos += length( $1 ) or 1 )
-                                 : 0
-                             )
-                             ## </perl5>
-     ||    ( ( $pos = $pad{I1471} ) && 0 ) )
-                           ## </group>
-    
-                         &&
-      
-                           ## <group>
-                           ## pos: 9700 9713
-                            (   ( $pad{I1472} = $pos or 1 ) &&
-                             ## <named_capture>
-                             ## pos: 9700 9712
-                             do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                         $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'char_class'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                             ## </named_capture>
-     ||    ( ( $pos = $pad{I1472} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                         ## </concat>
-    ;
-                       { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                     };
-                     my $bool = ${$hash->{'bool'}};
-                     if ( $bool ) {
-                         push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
-                     }
-                     $bool;
-                 }
-                 ## </capture>
-     ||    ( ( $pos = $pad{I1470} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 9724 9735
-              (   ( $pad{I1473} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 9724 9726
-               ( ( substr( $s, $pos, 1 ) eq '>' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1473} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 9735 9937
-              (   ( $pad{I1474} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 9735 9936
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                _pos => [ $_[0]->from - 2, $_[0]->to ],
-                char_class => [
-                    '+[' . $_[0]->{qw(char_range)} . ']',
-                    @{$_[0]->[0]},   # TODO - stringify
-                ] }
-            }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1474} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'<['} = sub { term7($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term8
-*term8 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 10032 10091
-           (
-      
-             ## <group>
-             ## pos: 10032 10059
-              (   ( $pad{I1475} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 10032 10050
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->parse_metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'parse_metasyntax'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1475} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 10059 10091
-              (   ( $pad{I1476} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 10059 10090
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return ${ $_[0]->{qw(parse_metasyntax)} } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1476} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'<'} = sub { term8($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term9
-*term9 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 10185 10375
-           (
-      
-             ## <group>
-             ## pos: 10185 10200
-              (   ( $pad{I1477} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 10185 10198
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'parsed_code'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1477} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 10200 10211
-              (   ( $pad{I1478} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 10200 10202
-               ( ( substr( $s, $pos, 1 ) eq '}' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1478} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 10211 10375
-              (   ( $pad{I1479} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 10211 10374
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { closure => {
-                closure => ${ $_[0]->{qw(parsed_code)} },
-                modifier => 'plain',
-            },
-                _pos => [$_[0]->from - 1, $_[0]->to],
-            } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1479} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'{'} = sub { term9($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term10
-*term10 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 10470 10521
-           (
-      
-             ## <group>
-             ## pos: 10470 10493
-              (   ( $pad{I1480} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 10470 10484
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'special_char'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1480} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 10493 10521
-              (   ( $pad{I1481} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 10493 10520
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return ${ $_[0]->{qw(special_char)} } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1481} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'\\'} = sub { term10($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term11
-*term11 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 10618 10677
-            (   ( $pad{I1482} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 10618 10676
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { 'dot' => 1, _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1482} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'.'} = sub { term11($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term12
-*term12 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 10773 10811
-           (
-      
-             ## <group>
-             ## pos: 10773 10780
-              (   ( $pad{I1483} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 10773 10779
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1483} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 10780 10791
-              (   ( $pad{I1484} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 10780 10782
-               ( ( substr( $s, $pos, 1 ) eq ']' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1484} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 10791 10811
-              (   ( $pad{I1485} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 10791 10810
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return ${ $_[0]->{qw(rule)} } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1485} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'['} = sub { term12($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term13
-*term13 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 10899 10962
-            (   ( $pad{I1486} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 10899 10961
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => ':::', _pos => [$_[0]->from - 3, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1486} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':::'} = sub { term13($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term14
-*term14 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 11052 11114
-            (   ( $pad{I1487} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 11052 11113
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => ':?', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1487} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':?'} = sub { term14($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term15
-*term15 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 11203 11265
-            (   ( $pad{I1488} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 11203 11264
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => ':+', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1488} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':+'} = sub { term15($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term16
-*term16 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 11354 11416
-            (   ( $pad{I1489} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 11354 11415
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => '::', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1489} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'::'} = sub { term16($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term17
-*term17 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 11505 11566
-            (   ( $pad{I1490} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 11505 11565
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => ':', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1490} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':'} = sub { term17($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term18
-*term18 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 11654 11716
-            (   ( $pad{I1491} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 11654 11715
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => '$$', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1491} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'$$'} = sub { term18($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term19
-*term19 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 11805 11867
-            (   ( $pad{I1492} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 11805 11866
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => '$', _pos => [$_[0]->from - 1, $_[0]->to],  } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1492} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'$'} = sub { term19($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term20
-*term20 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 11955 12017
-            (   ( $pad{I1493} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 11955 12016
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => '^^', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1493} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'^^'} = sub { term20($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term21
-*term21 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 12106 12167
-            (   ( $pad{I1494} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 12106 12166
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => '^', _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1494} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'^'} = sub { term21($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term22
-*term22 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 12255 12317
-            (   ( $pad{I1495} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 12255 12316
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => '>>', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1495} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'>>'} = sub { term22($_[1], $_[0], $_[2], $_[3]) }; 
-
-# Code block from grammar spec
- $rule_terms{'»'} = sub { term22($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term24
-*term24 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-      
-           ## <group>
-           ## pos: 12559 12621
-            (   ( $pad{I1496} = $pos or 1 ) &&
-             ## <closure>
-             ## pos: 12559 12620
-             do {
-               local $::_V6_SUCCEED = 1;
-               $::_V6_MATCH_ = $m;
-               $m->data->{capture} = \( sub { return { colon => '<<', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
-               $bool = $::_V6_SUCCEED;
-               $::_V6_MATCH_ = $m if $bool; 
-               return $m if $bool; 
-             }
-             ## </closure>
-     ||    ( ( $pos = $pad{I1496} ) && 0 ) )
-           ## </group>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{'<<'} = sub { term24($_[1], $_[0], $_[2], $_[3]) }; 
-
-# Code block from grammar spec
- $rule_terms{'«'} = sub { term24($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term26
-*term26 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 12871 13048
-           (
-      
-             ## <group>
-             ## pos: 12871 12877
-              (   ( $pad{I1497} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 12871 12876
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1497} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 12877 12892
-              (   ( $pad{I1498} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 12877 12883
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1498} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 12892 13048
-              (   ( $pad{I1499} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 12892 13047
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                modifier => {
-                    modifier => 'ignorecase',
-                    rule => ${ $_[0]->{qw(rule)} },
-                    }
-                },
-            }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1499} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':i'} = sub { term26($_[1], $_[0], $_[2], $_[3]) }; 
-
-# Code block from grammar spec
- $rule_terms{':ignorecase'} = sub { term26($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term28
-*term28 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 13328 13405
-           (
-      
-             ## <group>
-             ## pos: 13328 13334
-              (   ( $pad{I1500} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 13328 13333
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1500} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 13334 13349
-              (   ( $pad{I1501} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 13334 13340
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1501} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 13349 13405
-              (   ( $pad{I1502} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 13349 13404
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { modifier => 'sigspace', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1502} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':s'} = sub { term28($_[1], $_[0], $_[2], $_[3]) }; 
-
-# Code block from grammar spec
- $rule_terms{':sigspace'} = sub { term28($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term30
-*term30 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 13684 13758
-           (
-      
-             ## <group>
-             ## pos: 13684 13690
-              (   ( $pad{I1503} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 13684 13689
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1503} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 13690 13705
-              (   ( $pad{I1504} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 13690 13696
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1504} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 13705 13758
-              (   ( $pad{I1505} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 13705 13757
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { modifier => 'Perl5', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1505} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':P5'} = sub { term30($_[1], $_[0], $_[2], $_[3]) }; 
-
-# Code block from grammar spec
- $rule_terms{':Perl5'} = sub { term30($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term32
-*term32 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 14031 14105
-           (
-      
-             ## <group>
-             ## pos: 14031 14037
-              (   ( $pad{I1506} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 14031 14036
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1506} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14037 14052
-              (   ( $pad{I1507} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 14037 14043
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1507} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14052 14105
-              (   ( $pad{I1508} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 14052 14104
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { modifier => 'bytes', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1508} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':bytes'} = sub { term32($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term33
-*term33 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 14206 14280
-           (
-      
-             ## <group>
-             ## pos: 14206 14212
-              (   ( $pad{I1509} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 14206 14211
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1509} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14212 14227
-              (   ( $pad{I1510} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 14212 14218
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1510} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14227 14280
-              (   ( $pad{I1511} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 14227 14279
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { modifier => 'codes', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1511} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':codes'} = sub { term33($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term34
-*term34 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 14381 14456
-           (
-      
-             ## <group>
-             ## pos: 14381 14387
-              (   ( $pad{I1512} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 14381 14386
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1512} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14387 14402
-              (   ( $pad{I1513} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 14387 14393
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1513} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14402 14456
-              (   ( $pad{I1514} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 14402 14455
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { modifier => 'graphs', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1514} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':graphs'} = sub { term34($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term35
-*term35 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 14558 14633
-           (
-      
-             ## <group>
-             ## pos: 14558 14564
-              (   ( $pad{I1515} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 14558 14563
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1515} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14564 14579
-              (   ( $pad{I1516} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 14564 14570
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1516} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 14579 14633
-              (   ( $pad{I1517} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 14579 14632
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { modifier => 'langs',  rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1517} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# Code block from grammar spec
- $rule_terms{':langs'} = sub { term35($_[1], $_[0], $_[2], $_[3]) }; 
-
-# token term
-*term =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 14728 15530
-           (
-               ( $pad{I1518} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 14729 15207
-               (
-      
-                 ## <group>
-                 ## pos: 14729 14772
-                  (   ( $pad{I1519} = $pos or 1 ) &&
-                  ## <metasyntax>
-                   ## pos: 14731 14764
-                   do{
-                    my $match = 
-              ## <variable>
-              ## pos: 14731 14764
-              do {
-                our $I1520;
-                our $I1520_sizes;
-                unless ( $I1520 ) {
-                    my $hash = \%Pugs::Grammar::Rule::variables;
-                    my %sizes = map { length($_) => 1 } keys %$hash;
-                    $I1520_sizes = [ sort { $b <=> $a } keys %sizes ];
-                    $I1520 = $hash;
-                }
-                my $match = 0;
-                my $key;
-                for ( @$I1520_sizes ) {
-                    $key = ( $pos <= length( $s )
-                                ? substr( $s, $pos, $_ )
-                                : '' );
-                    if ( exists $I1520->{$key} ) {
-                        #$named{KEY} = $key;
-                        #$::_V6_MATCH_ = $m;
-                        #print "m: ", Dumper( $::_V6_MATCH_->data )
-                        #    if ( $key eq 'until' );
-                        $match = Pugs::Runtime::Regex::preprocess_hash( $I1520, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
-                        last if $match;
-                    }
-                }
-                if ( $match ) {
-                    $pos = $match->to;
-                    #print "match: $key at $pos = ", Dumper( $match->data );
-                    $bool = 1;
-                }; # else { $bool = 0 }
-                $match;
-              }
-              ## </variable>
-    ;
-                    if ( $match ) { $named{'Pugs::Grammar::Rule::variables'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                  ## </metasyntax>
-     ||    ( ( $pos = $pad{I1519} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 14772 15207
-                  (   ( $pad{I1521} = $pos or 1 ) &&
-                   ## <alt>
-                   ## pos: 14773 15201
-                   (
-                       ( $pad{I1522} = $pos or 1 )
-                       && (
-                       ## <concat>
-                       ## pos: 14773 15114
-                       (
-                         ## <quant>
-                         ## pos: 14773 14782
-                         (
-                          (   ( $pad{I1523} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 14775 14780
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1523} ) && 0 ) )
-                         || ( $bool = 1 )
-                         )
-                         ## </quant>
-    
-                       &&
-      
-                         ## <group>
-                         ## pos: 14782 14787
-                          (   ( $pad{I1524} = $pos or 1 ) &&
-    
-                           ## <constant>
-                           ## pos: 14782 14786
-                           ( ( substr( $s, $pos, 2 ) eq ':=' )
-                               ? ( $pos += 2 or 1 )
-                               : 0
-                           )
-                           ## </constant>
-     ||    ( ( $pos = $pad{I1524} ) && 0 ) )
-                         ## </group>
-    
-                       &&
-                         ## <quant>
-                         ## pos: 14787 14794
-                         (
-                          (   ( $pad{I1525} = $pos or 1 ) &&
-                             ## <metasyntax>
-                             ## pos: 14787 14792
-                             do {
-                                  my $prior = $::_V6_PRIOR_;
-                                  my $match =
-                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                  $::_V6_PRIOR_ = $prior;
-                                  my $bool = (!$match != 1);
-                                  $pos = $match->to if $bool;
-                                  $match;
-                             }
-                             ## </metasyntax>
-     ||    ( ( $pos = $pad{I1525} ) && 0 ) )
-                         || ( $bool = 1 )
-                         )
-                         ## </quant>
-    
-                       &&
-      
-                         ## <group>
-                         ## pos: 14794 14825
-                          (   ( $pad{I1526} = $pos or 1 ) &&
-                           ## <named_capture>
-                           ## pos: 14794 14814
-                           do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                       $grammar->named_capture_body( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'named_capture_body'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                           ## </named_capture>
-     ||    ( ( $pos = $pad{I1526} ) && 0 ) )
-                         ## </group>
-    
-                       &&
-      
-                         ## <group>
-                         ## pos: 14825 15114
-                          (   ( $pad{I1527} = $pos or 1 ) &&
-                           ## <closure>
-                           ## pos: 14825 15106
-                           do {
-                             local $::_V6_SUCCEED = 1;
-                             $::_V6_MATCH_ = $m;
-                             $m->data->{capture} = \( sub {
-                return { named_capture => {
-                            rule =>  ${ $_[0]->{qw(named_capture_body)} },
-                            ident => ${ $_[0]->{qw(Pugs::Grammar::Rule::variables)} },
-                         },
-                            _pos => [ $_[0]->from, $_[0]->to ],
-                         };
-              }->( $m ) ); 
-                             $bool = $::_V6_SUCCEED;
-                             $::_V6_MATCH_ = $m if $bool; 
-                             return $m if $bool; 
-                           }
-                           ## </closure>
-     ||    ( ( $pos = $pad{I1527} ) && 0 ) )
-                         ## </group>
-    
-                       )
-                       ## </concat>
-    
-                       )
-                     || (
-                       ( ( $bool = 1 ) && ( $pos = $pad{I1522} ) or 1 )
-                       &&   
-                       ## <group>
-                       ## pos: 15115 15201
-                        (   ( $pad{I1528} = $pos or 1 ) &&
-                         ## <closure>
-                         ## pos: 15126 15193
-                         do {
-                           local $::_V6_SUCCEED = 1;
-                           $::_V6_MATCH_ = $m;
-                           $m->data->{capture} = \( sub {
-                return ${ $_[0]->{qw(Pugs::Grammar::Rule::variables)} }
-              }->( $m ) ); 
-                           $bool = $::_V6_SUCCEED;
-                           $::_V6_MATCH_ = $m if $bool; 
-                           return $m if $bool; 
-                         }
-                         ## </closure>
-     ||    ( ( $pos = $pad{I1528} ) && 0 ) )
-                       ## </group>
-    
-                     )
-                   )
-                   ## </alt>
-     ||    ( ( $pos = $pad{I1521} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1518} ) or 1 )
-               &&            ## <concat>
-               ## pos: 15208 15376
-               (
-      
-                 ## <group>
-                 ## pos: 15208 15253
-                  (   ( $pad{I1529} = $pos or 1 ) &&
-                  ## <metasyntax>
-                   ## pos: 15210 15244
-                   do{
-                    my $match = 
-              ## <variable>
-              ## pos: 15210 15244
-              do {
-                our $I1530;
-                our $I1530_sizes;
-                unless ( $I1530 ) {
-                    my $hash = \%Pugs::Grammar::Rule::rule_terms;
-                    my %sizes = map { length($_) => 1 } keys %$hash;
-                    $I1530_sizes = [ sort { $b <=> $a } keys %sizes ];
-                    $I1530 = $hash;
-                }
-                my $match = 0;
-                my $key;
-                for ( @$I1530_sizes ) {
-                    $key = ( $pos <= length( $s )
-                                ? substr( $s, $pos, $_ )
-                                : '' );
-                    if ( exists $I1530->{$key} ) {
-                        #$named{KEY} = $key;
-                        #$::_V6_MATCH_ = $m;
-                        #print "m: ", Dumper( $::_V6_MATCH_->data )
-                        #    if ( $key eq 'until' );
-                        $match = Pugs::Runtime::Regex::preprocess_hash( $I1530, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
-                        last if $match;
-                    }
-                }
-                if ( $match ) {
-                    $pos = $match->to;
-                    #print "match: $key at $pos = ", Dumper( $match->data );
-                    $bool = 1;
-                }; # else { $bool = 0 }
-                $match;
-              }
-              ## </variable>
-    ;
-                    if ( $match ) { $named{'Pugs::Grammar::Rule::rule_terms'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                  ## </metasyntax>
-     ||    ( ( $pos = $pad{I1529} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 15253 15376
-                  (   ( $pad{I1531} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 15253 15371
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub {
-                #print "term: ", Dumper( $_[0]->data );
-                return ${ $_[0]->{qw(Pugs::Grammar::Rule::rule_terms)} }
-            }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1531} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1518} ) or 1 )
-               &&            ## <concat>
-               ## pos: 15377 15530
-               (
-      
-                 ## <group>
-                 ## pos: 15377 15424
-                  (   ( $pad{I1532} = $pos or 1 ) &&
-                   ## <perl5>
-                   ( ( substr( $s, $pos ) =~ m/^((?:(?![\]\}\)\>\:\?\+\*\|\&]))\X)/ )
-                       ? ( $pos += length( $1 ) or 1 )
-                       : 0
-                   )
-                   ## </perl5>
-     ||    ( ( $pos = $pad{I1532} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 15424 15530
-                  (   ( $pad{I1533} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 15424 15529
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub {
-                return { 'constant' => ${$_[0]},
-                         _pos => [ $_[0]->from, $_[0]->to ] }
-            }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1533} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token quant
-*quant =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 15551 15665
-           (
-               ( $pad{I1534} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 15552 15643
-               (
-      
-                 ## <group>
-                 ## pos: 15552 15560
-                  (   ( $pad{I1535} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 15555 15559
-                   ( ( substr( $s, $pos, 2 ) eq '**' )
-                       ? ( $pos += 2 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1535} ) && 0 ) )
-                 ## </group>
-    
-               &&
-                 ## <quant>
-                 ## pos: 15560 15567
-                 (
-                  (   ( $pad{I1536} = $pos or 1 ) &&
-                     ## <metasyntax>
-                     ## pos: 15560 15565
-                     do {
-                          my $prior = $::_V6_PRIOR_;
-                          my $match =
-                                 $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                          $::_V6_PRIOR_ = $prior;
-                          my $bool = (!$match != 1);
-                          $pos = $match->to if $bool;
-                          $match;
-                     }
-                     ## </metasyntax>
-     ||    ( ( $pos = $pad{I1536} ) && 0 ) )
-                 || ( $bool = 1 )
-                 )
-                 ## </quant>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 15567 15571
-                  (   ( $pad{I1537} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 15567 15569
-                   ( ( substr( $s, $pos, 1 ) eq '{' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1537} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 15571 15586
-                  (   ( $pad{I1538} = $pos or 1 ) &&
-                   ## <named_capture>
-                   ## pos: 15571 15584
-                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                               $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'parsed_code'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                   ## </named_capture>
-     ||    ( ( $pos = $pad{I1538} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 15586 15597
-                  (   ( $pad{I1539} = $pos or 1 ) &&
-    
-                   ## <constant>
-                   ## pos: 15586 15588
-                   ( ( substr( $s, $pos, 1 ) eq '}' )
-                       ? ( $pos += 1 or 1 )
-                       : 0
-                   )
-                   ## </constant>
-     ||    ( ( $pos = $pad{I1539} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 15597 15643
-                  (   ( $pad{I1540} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 15597 15638
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return { closure => ${ $_[0]->{qw(parsed_code)} } } }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1540} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1534} ) or 1 )
-               &&            ## <quant>
-               ## pos: 15644 15665
-               (
-                (   ( $pad{I1541} = $pos or 1 ) &&
-                   ## <perl5>
-                   ( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\*\+]))\X)/ )
-                       ? ( $pos += length( $1 ) or 1 )
-                       : 0
-                   )
-                   ## </perl5>
-     ||    ( ( $pos = $pad{I1541} ) && 0 ) )
-               || ( $bool = 1 )
-               )
-               ## </quant>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token quantifier
-*quantifier =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 15691 16457
-           (
-      
-             ## <group>
-             ## pos: 15691 15716
-              (   ( $pad{I1542} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 15691 15711
-               do{
-                    my $match = Pugs::Runtime::Match->new( do {
-                        my $bool = 1;
-                        my $from = $pos;
-                        my @match;
-                        my %named;
-                        $bool = 0 unless 
-                       ## <capture>
-                       do{
-                           my $hash = do {
-                             my $bool = 1;
-                             my $from = $pos;
-                             my @match;
-                             my %named;
-                             $bool = 0 unless
-                               ## <quant>
-                               ## pos: 15704 15710
-                               (
-                                (   ( $pad{I1543} = $pos or 1 ) &&
-                                   ## <metasyntax>
-                                   ## pos: 15704 15709
-                                   do {
-                                        my $prior = $::_V6_PRIOR_;
-                                        my $match =
-                                               $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                        $::_V6_PRIOR_ = $prior;
-                                        my $bool = (!$match != 1);
-                                        $pos = $match->to if $bool;
-                                        $match;
-                                   }
-                                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1543} ) && 0 ) )
-                               || ( $bool = 1 )
-                               )
-                               ## </quant>
-    ;
-                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                           };
-                           my $bool = ${$hash->{'bool'}};
-                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                           $bool;
-                       }
-                       ## </capture>
-    ;
-                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                    } );
-                    if ( $match ) { $named{'ws1'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1542} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 15716 15751
-              (   ( $pad{I1544} = $pos or 1 ) &&
-               ## <negate>
-               ## pos: 15716 15746
-               do{
-                   my $pos1 = $pos;
-                   do {
-                     my $pos = $pos1;
-                     my $from = $pos;
-                     my @match;
-                     my %named;
-                     $bool = 
-                         ## <before>
-                         ## pos: 15726 15745
-                         do{
-                             my $pos1 = $pos;
-                             do {
-                               my $pos = $pos1;
-                               my $from = $pos;
-                               my @match;
-                               my %named;
-                               $bool = 0 unless
-      
-                                   ## <group>
-                                   ## pos: 15726 15745
-                                    (   ( $pad{I1545} = $pos or 1 ) &&
-                                     ## <perl5>
-                                     ( ( substr( $s, $pos ) =~ m/^((?:(?=[\}\]\)]))\X)/ )
-                                         ? ( $pos += length( $1 ) or 1 )
-                                         : 0
-                                     )
-                                     ## </perl5>
-     ||    ( ( $pos = $pad{I1545} ) && 0 ) )
-                                   ## </group>
-    ;
-                               $bool;
-                             };
-                         }
-                         ## </before>
-     ? 0 : 1;
-                     $bool;
-                   };
-               }
-               ## </negate>
-     ||    ( ( $pos = $pad{I1544} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 15751 15762
-              (   ( $pad{I1546} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 15751 15757
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->term( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'term'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1546} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 15762 15787
-              (   ( $pad{I1547} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 15762 15782
-               do{
-                    my $match = Pugs::Runtime::Match->new( do {
-                        my $bool = 1;
-                        my $from = $pos;
-                        my @match;
-                        my %named;
-                        $bool = 0 unless 
-                       ## <capture>
-                       do{
-                           my $hash = do {
-                             my $bool = 1;
-                             my $from = $pos;
-                             my @match;
-                             my %named;
-                             $bool = 0 unless
-                               ## <quant>
-                               ## pos: 15775 15781
-                               (
-                                (   ( $pad{I1548} = $pos or 1 ) &&
-                                   ## <metasyntax>
-                                   ## pos: 15775 15780
-                                   do {
-                                        my $prior = $::_V6_PRIOR_;
-                                        my $match =
-                                               $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                        $::_V6_PRIOR_ = $prior;
-                                        my $bool = (!$match != 1);
-                                        $pos = $match->to if $bool;
-                                        $match;
-                                   }
-                                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1548} ) && 0 ) )
-                               || ( $bool = 1 )
-                               )
-                               ## </quant>
-    ;
-                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                           };
-                           my $bool = ${$hash->{'bool'}};
-                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                           $bool;
-                       }
-                       ## </capture>
-    ;
-                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                    } );
-                    if ( $match ) { $named{'ws2'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1547} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 15787 15799
-              (   ( $pad{I1549} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 15787 15794
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->quant( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'quant'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1549} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 15799 15833
-              (   ( $pad{I1550} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 15799 15828
-               do{
-                    my $match = Pugs::Runtime::Match->new( do {
-                        my $bool = 1;
-                        my $from = $pos;
-                        my @match;
-                        my %named;
-                        $bool = 0 unless 
-                       ## <capture>
-                       do{
-                           my $hash = do {
-                             my $bool = 1;
-                             my $from = $pos;
-                             my @match;
-                             my %named;
-                             $bool = 0 unless
-                               ## <quant>
-                               ## pos: 15813 15827
-                               (
-                                (   ( $pad{I1551} = $pos or 1 ) &&
-                                   ## <perl5>
-                                   ( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\+]))\X)/ )
-                                       ? ( $pos += length( $1 ) or 1 )
-                                       : 0
-                                   )
-                                   ## </perl5>
-     ||    ( ( $pos = $pad{I1551} ) && 0 ) )
-                               || ( $bool = 1 )
-                               )
-                               ## </quant>
-    ;
-                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                           };
-                           my $bool = ${$hash->{'bool'}};
-                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                           $bool;
-                       }
-                       ## </capture>
-    ;
-                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                    } );
-                    if ( $match ) { $named{'greedy'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1550} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 15833 15858
-              (   ( $pad{I1552} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 15833 15853
-               do{
-                    my $match = Pugs::Runtime::Match->new( do {
-                        my $bool = 1;
-                        my $from = $pos;
-                        my @match;
-                        my %named;
-                        $bool = 0 unless 
-                       ## <capture>
-                       do{
-                           my $hash = do {
-                             my $bool = 1;
-                             my $from = $pos;
-                             my @match;
-                             my %named;
-                             $bool = 0 unless
-                               ## <quant>
-                               ## pos: 15846 15852
-                               (
-                                (   ( $pad{I1553} = $pos or 1 ) &&
-                                   ## <metasyntax>
-                                   ## pos: 15846 15851
-                                   do {
-                                        my $prior = $::_V6_PRIOR_;
-                                        my $match =
-                                               $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                                        $::_V6_PRIOR_ = $prior;
-                                        my $bool = (!$match != 1);
-                                        $pos = $match->to if $bool;
-                                        $match;
-                                   }
-                                   ## </metasyntax>
-     ||    ( ( $pos = $pad{I1553} ) && 0 ) )
-                               || ( $bool = 1 )
-                               )
-                               ## </quant>
-    ;
-                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                           };
-                           my $bool = ${$hash->{'bool'}};
-                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                           $bool;
-                       }
-                       ## </capture>
-    ;
-                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                    } );
-                    if ( $match ) { $named{'ws3'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1552} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 15858 16457
-              (   ( $pad{I1554} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 15858 16456
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub {
-          if (
-                   ${$_[0]->{'quant'}}  eq ''
-                && ${$_[0]->{'greedy'}} eq ''
-                && ${$_[0]->{'ws1'}}    eq ''
-                && ${$_[0]->{'ws2'}}    eq ''
-                && ${$_[0]->{'ws3'}}    eq ''
-          ) {
-              return ${$_[0]->{'term'}};
-          }
-          return {
-            quant => {
-                    term    => ${$_[0]->{'term'}},
-                    quant   => ${$_[0]->{'quant'}},
-                    greedy  => ${$_[0]->{'greedy'}},
-                    ws1     => ${$_[0]->{'ws1'}},
-                    ws2     => ${$_[0]->{'ws2'}},
-                    ws3     => ${$_[0]->{'ws3'}},
-                },
-            _pos => [$_[0]->from, $_[0]->to],
-          }
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1554} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token concat
-*concat =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 16479 16688
-           (
-             ## <quant>
-             ## pos: 16479 16497
-             (
-              (   ( $pad{I1555} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 16479 16491
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->quantifier( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'quantifier'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1555} ) && 0 ) )
-             && do { while (
-              (   ( $pad{I1555} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 16479 16491
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->quantifier( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'quantifier'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1555} ) && 0 ) )) {}; $bool = 1 }
-             )
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 16497 16688
-              (   ( $pad{I1556} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 16497 16687
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub {
-            my @a = map {  $_->()  }  @{ $::_V6_MATCH_->{'quantifier'} };
-            return { concat => \@a, _pos => [$_[0]->from, $_[0]->to] }
-                if scalar @a > 1;
-            return $a[0];
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1556} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token conjunctive1
-*conjunctive1 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 16716 16996
-           (
-             ## <quant>
-             ## pos: 16716 16750
-             (
-              (   ( $pad{I1557} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 16717 16742
-                 (
-                   ## <quant>
-                   ## pos: 16717 16725
-                   (
-                    (   ( $pad{I1558} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 16718 16723
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1558} ) && 0 ) )
-                   || ( $bool = 1 )
-                   )
-                   ## </quant>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 16725 16728
-                    (   ( $pad{I1559} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 16725 16727
-                     ( ( substr( $s, $pos, 1 ) eq '&' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1559} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 16728 16742
-                    (   ( $pad{I1560} = $pos or 1 ) &&
-                     ## <negate>
-                     ## pos: 16728 16741
-                     do{
-                         my $pos1 = $pos;
-                         do {
-                           my $pos = $pos1;
-                           my $from = $pos;
-                           my @match;
-                           my %named;
-                           $bool = 
-                               ## <before>
-                               ## pos: 16737 16740
-                               do{
-                                   my $pos1 = $pos;
-                                   do {
-                                     my $pos = $pos1;
-                                     my $from = $pos;
-                                     my @match;
-                                     my %named;
-                                     $bool = 0 unless
-      
-                                         ## <group>
-                                         ## pos: 16737 16740
-                                          (   ( $pad{I1561} = $pos or 1 ) &&
-    
-                                           ## <constant>
-                                           ## pos: 16737 16739
-                                           ( ( substr( $s, $pos, 1 ) eq '&' )
-                                               ? ( $pos += 1 or 1 )
-                                               : 0
-                                           )
-                                           ## </constant>
-     ||    ( ( $pos = $pad{I1561} ) && 0 ) )
-                                         ## </group>
-    ;
-                                     $bool;
-                                   };
-                               }
-                               ## </before>
-     ? 0 : 1;
-                           $bool;
-                         };
-                     }
-                     ## </negate>
-     ||    ( ( $pos = $pad{I1560} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1557} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 16750 16768
-             (
-              (   ( $pad{I1562} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 16750 16758
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->concat( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'concat'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1562} ) && 0 ) )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 16768 16817
-             do { while (
-              (   ( $pad{I1563} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 16769 16809
-                 (
-      
-                   ## <group>
-                   ## pos: 16769 16781
-                    (   ( $pad{I1564} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 16778 16780
-                     ( ( substr( $s, $pos, 1 ) eq '&' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1564} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 16781 16796
-                    (   ( $pad{I1565} = $pos or 1 ) &&
-                     ## <negate>
-                     ## pos: 16781 16794
-                     do{
-                         my $pos1 = $pos;
-                         do {
-                           my $pos = $pos1;
-                           my $from = $pos;
-                           my @match;
-                           my %named;
-                           $bool = 
-                               ## <before>
-                               ## pos: 16790 16793
-                               do{
-                                   my $pos1 = $pos;
-                                   do {
-                                     my $pos = $pos1;
-                                     my $from = $pos;
-                                     my @match;
-                                     my %named;
-                                     $bool = 0 unless
-      
-                                         ## <group>
-                                         ## pos: 16790 16793
-                                          (   ( $pad{I1566} = $pos or 1 ) &&
-    
-                                           ## <constant>
-                                           ## pos: 16790 16792
-                                           ( ( substr( $s, $pos, 1 ) eq '&' )
-                                               ? ( $pos += 1 or 1 )
-                                               : 0
-                                           )
-                                           ## </constant>
-     ||    ( ( $pos = $pad{I1566} ) && 0 ) )
-                                         ## </group>
-    ;
-                                     $bool;
-                                   };
-                               }
-                               ## </before>
-     ? 0 : 1;
-                           $bool;
-                         };
-                     }
-                     ## </negate>
-     ||    ( ( $pos = $pad{I1565} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 16796 16809
-                    (   ( $pad{I1567} = $pos or 1 ) &&
-                     ## <named_capture>
-                     ## pos: 16796 16804
-                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                 $grammar->concat( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'concat'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1567} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1563} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 16817 16996
-              (   ( $pad{I1568} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 16817 16995
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub {
-            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'concat'} };
-            return { conjunctive1 => \@a, _pos => [$_[0]->from, $_[0]->to] }  if scalar @a > 1;
-            return $a[0];
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1568} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token disjunctive1
-*disjunctive1 =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 17024 17313
-           (
-             ## <quant>
-             ## pos: 17024 17058
-             (
-              (   ( $pad{I1569} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 17025 17050
-                 (
-                   ## <quant>
-                   ## pos: 17025 17033
-                   (
-                    (   ( $pad{I1570} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 17026 17031
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1570} ) && 0 ) )
-                   || ( $bool = 1 )
-                   )
-                   ## </quant>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17033 17036
-                    (   ( $pad{I1571} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17033 17035
-                     ( ( substr( $s, $pos, 1 ) eq '|' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1571} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17036 17050
-                    (   ( $pad{I1572} = $pos or 1 ) &&
-                     ## <negate>
-                     ## pos: 17036 17049
-                     do{
-                         my $pos1 = $pos;
-                         do {
-                           my $pos = $pos1;
-                           my $from = $pos;
-                           my @match;
-                           my %named;
-                           $bool = 
-                               ## <before>
-                               ## pos: 17045 17048
-                               do{
-                                   my $pos1 = $pos;
-                                   do {
-                                     my $pos = $pos1;
-                                     my $from = $pos;
-                                     my @match;
-                                     my %named;
-                                     $bool = 0 unless
-      
-                                         ## <group>
-                                         ## pos: 17045 17048
-                                          (   ( $pad{I1573} = $pos or 1 ) &&
-    
-                                           ## <constant>
-                                           ## pos: 17045 17047
-                                           ( ( substr( $s, $pos, 1 ) eq '|' )
-                                               ? ( $pos += 1 or 1 )
-                                               : 0
-                                           )
-                                           ## </constant>
-     ||    ( ( $pos = $pad{I1573} ) && 0 ) )
-                                         ## </group>
-    ;
-                                     $bool;
-                                   };
-                               }
-                               ## </before>
-     ? 0 : 1;
-                           $bool;
-                         };
-                     }
-                     ## </negate>
-     ||    ( ( $pos = $pad{I1572} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1569} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 17058 17082
-             (
-              (   ( $pad{I1574} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 17058 17072
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->conjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'conjunctive1'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1574} ) && 0 ) )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 17082 17136
-             do { while (
-              (   ( $pad{I1575} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 17083 17128
-                 (
-      
-                   ## <group>
-                   ## pos: 17083 17095
-                    (   ( $pad{I1576} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17092 17094
-                     ( ( substr( $s, $pos, 1 ) eq '|' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1576} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17095 17109
-                    (   ( $pad{I1577} = $pos or 1 ) &&
-                     ## <negate>
-                     ## pos: 17095 17108
-                     do{
-                         my $pos1 = $pos;
-                         do {
-                           my $pos = $pos1;
-                           my $from = $pos;
-                           my @match;
-                           my %named;
-                           $bool = 
-                               ## <before>
-                               ## pos: 17104 17107
-                               do{
-                                   my $pos1 = $pos;
-                                   do {
-                                     my $pos = $pos1;
-                                     my $from = $pos;
-                                     my @match;
-                                     my %named;
-                                     $bool = 0 unless
-      
-                                         ## <group>
-                                         ## pos: 17104 17107
-                                          (   ( $pad{I1578} = $pos or 1 ) &&
-    
-                                           ## <constant>
-                                           ## pos: 17104 17106
-                                           ( ( substr( $s, $pos, 1 ) eq '|' )
-                                               ? ( $pos += 1 or 1 )
-                                               : 0
-                                           )
-                                           ## </constant>
-     ||    ( ( $pos = $pad{I1578} ) && 0 ) )
-                                         ## </group>
-    ;
-                                     $bool;
-                                   };
-                               }
-                               ## </before>
-     ? 0 : 1;
-                           $bool;
-                         };
-                     }
-                     ## </negate>
-     ||    ( ( $pos = $pad{I1577} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17109 17128
-                    (   ( $pad{I1579} = $pos or 1 ) &&
-                     ## <named_capture>
-                     ## pos: 17109 17123
-                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                 $grammar->conjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'conjunctive1'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1579} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1575} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 17136 17313
-              (   ( $pad{I1580} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 17136 17312
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub {
-            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'conjunctive1'} };
-            return { alt1 => \@a, _pos => [$_[0]->from, $_[0]->to] }  if scalar @a > 1;
-            return $a[0];
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1580} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token conjunctive
-*conjunctive =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 17340 17614
-           (
-             ## <quant>
-             ## pos: 17340 17363
-             (
-              (   ( $pad{I1581} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 17341 17355
-                 (
-                   ## <quant>
-                   ## pos: 17341 17349
-                   (
-                    (   ( $pad{I1582} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 17342 17347
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1582} ) && 0 ) )
-                   || ( $bool = 1 )
-                   )
-                   ## </quant>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17349 17352
-                    (   ( $pad{I1583} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17349 17351
-                     ( ( substr( $s, $pos, 1 ) eq '&' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1583} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17352 17355
-                    (   ( $pad{I1584} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17352 17354
-                     ( ( substr( $s, $pos, 1 ) eq '&' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1584} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1581} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 17363 17387
-             (
-              (   ( $pad{I1585} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 17363 17377
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->disjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'disjunctive1'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1585} ) && 0 ) )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 17387 17430
-             do { while (
-              (   ( $pad{I1586} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 17388 17422
-                 (
-      
-                   ## <group>
-                   ## pos: 17388 17400
-                    (   ( $pad{I1587} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17397 17399
-                     ( ( substr( $s, $pos, 1 ) eq '&' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1587} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17400 17403
-                    (   ( $pad{I1588} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17400 17402
-                     ( ( substr( $s, $pos, 1 ) eq '&' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1588} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17403 17422
-                    (   ( $pad{I1589} = $pos or 1 ) &&
-                     ## <named_capture>
-                     ## pos: 17403 17417
-                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                 $grammar->disjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'disjunctive1'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1589} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1586} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 17430 17614
-              (   ( $pad{I1590} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 17430 17613
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub {
-            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'disjunctive1'} };
-            return { conjunctive => \@a, _pos => [$_[0]->from, $_[0]->to] }  if scalar @a > 1;
-            return $a[0];
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1590} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token rule
-*rule =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 17634 17898
-           (
-             ## <quant>
-             ## pos: 17634 17657
-             (
-              (   ( $pad{I1591} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 17635 17649
-                 (
-                   ## <quant>
-                   ## pos: 17635 17643
-                   (
-                    (   ( $pad{I1592} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 17636 17641
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1592} ) && 0 ) )
-                   || ( $bool = 1 )
-                   )
-                   ## </quant>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17643 17646
-                    (   ( $pad{I1593} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17643 17645
-                     ( ( substr( $s, $pos, 1 ) eq '|' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1593} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17646 17649
-                    (   ( $pad{I1594} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17646 17648
-                     ( ( substr( $s, $pos, 1 ) eq '|' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1594} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1591} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 17657 17680
-             (
-              (   ( $pad{I1595} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 17657 17670
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->conjunctive( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'conjunctive'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1595} ) && 0 ) )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 17680 17722
-             do { while (
-              (   ( $pad{I1596} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 17681 17714
-                 (
-      
-                   ## <group>
-                   ## pos: 17681 17693
-                    (   ( $pad{I1597} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17690 17692
-                     ( ( substr( $s, $pos, 1 ) eq '|' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1597} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17693 17696
-                    (   ( $pad{I1598} = $pos or 1 ) &&
-    
-                     ## <constant>
-                     ## pos: 17693 17695
-                     ( ( substr( $s, $pos, 1 ) eq '|' )
-                         ? ( $pos += 1 or 1 )
-                         : 0
-                     )
-                     ## </constant>
-     ||    ( ( $pos = $pad{I1598} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-      
-                   ## <group>
-                   ## pos: 17696 17714
-                    (   ( $pad{I1599} = $pos or 1 ) &&
-                     ## <named_capture>
-                     ## pos: 17696 17709
-                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                 $grammar->conjunctive( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'conjunctive'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1599} ) && 0 ) )
-                   ## </group>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1596} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 17722 17898
-              (   ( $pad{I1600} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 17722 17897
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub {
-            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'conjunctive'} };
-            return { alt => \@a, _pos => [$_[0]->from, $_[0]->to], }  if scalar @a > 1;
-            return $a[0];
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1600} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token named_regex
-*named_regex =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 17925 18145
-           (
-      
-             ## <group>
-             ## pos: 17925 17960
-              (   ( $pad{I1601} = $pos or 1 ) &&
-    
-               ## <capture>
-               do{
-                   my $hash = do {
-                     my $bool = 1;
-                     my $from = $pos;
-                     my @match;
-                     my %named;
-                     $bool = 0 unless
-                       ## <alt>
-                       ## pos: 17926 17954
-                       (
-                           ( $pad{I1602} = $pos or 1 )
-                           && (
-      
-                           ## <group>
-                           ## pos: 17926 17935
-                            (   ( $pad{I1603} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 17927 17934
-                             ( ( substr( $s, $pos, 5 ) eq 'token' )
-                                 ? ( $pos += 5 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1603} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1602} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 17936 17945
-                            (   ( $pad{I1604} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 17937 17944
-                             ( ( substr( $s, $pos, 5 ) eq 'regex' )
-                                 ? ( $pos += 5 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1604} ) && 0 ) )
-                           ## </group>
-    
-                           )
-                         || (
-                           ( ( $bool = 1 ) && ( $pos = $pad{I1602} ) or 1 )
-                           &&   
-                           ## <group>
-                           ## pos: 17946 17954
-                            (   ( $pad{I1605} = $pos or 1 ) &&
-    
-                             ## <constant>
-                             ## pos: 17947 17953
-                             ( ( substr( $s, $pos, 4 ) eq 'rule' )
-                                 ? ( $pos += 4 or 1 )
-                                 : 0
-                             )
-                             ## </constant>
-     ||    ( ( $pos = $pad{I1605} ) && 0 ) )
-                           ## </group>
-    
-                         )
-                       )
-                       ## </alt>
-    ;
-                     { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                   };
-                   my $bool = ${$hash->{'bool'}};
-                   $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                   $bool;
-               }
-               ## </capture>
-     ||    ( ( $pos = $pad{I1601} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 17960 17966
-              (   ( $pad{I1606} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 17960 17965
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1606} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 17966 17974
-              (   ( $pad{I1607} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 17966 17973
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'ident'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1607} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 17974 17981
-             (
-              (   ( $pad{I1608} = $pos or 1 ) &&
-                 ## <metasyntax>
-                 ## pos: 17974 17979
-                 do {
-                      my $prior = $::_V6_PRIOR_;
-                      my $match =
-                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                      $::_V6_PRIOR_ = $prior;
-                      my $bool = (!$match != 1);
-                      $pos = $match->to if $bool;
-                      $match;
-                 }
-                 ## </metasyntax>
-     ||    ( ( $pos = $pad{I1608} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 17981 17993
-              (   ( $pad{I1609} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 17981 17984
-               ( ( substr( $s, $pos, 1 ) eq '{' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1609} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 17993 18008
-             (
-              (   ( $pad{I1610} = $pos or 1 ) &&
-                 ## <metasyntax>
-                 ## pos: 17993 17998
-                 do {
-                      my $prior = $::_V6_PRIOR_;
-                      my $match =
-                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                      $::_V6_PRIOR_ = $prior;
-                      my $bool = (!$match != 1);
-                      $pos = $match->to if $bool;
-                      $match;
-                 }
-                 ## </metasyntax>
-     ||    ( ( $pos = $pad{I1610} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18008 18019
-              (   ( $pad{I1611} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 18008 18014
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'rule'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1611} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18019 18023
-              (   ( $pad{I1612} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 18019 18022
-               ( ( substr( $s, $pos, 1 ) eq '}' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1612} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 18023 18033
-             (
-              (   ( $pad{I1613} = $pos or 1 ) &&
-    
-                 ## <constant>
-                 ## pos: 18023 18026
-                 ( ( substr( $s, $pos, 1 ) eq ';' )
-                     ? ( $pos += 1 or 1 )
-                     : 0
-                 )
-                 ## </constant>
-     ||    ( ( $pos = $pad{I1613} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18033 18145
-              (   ( $pad{I1614} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 18033 18144
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                type => ${ $_[0]->[0] },
-                name => ${ $_[0]->{qw(ident)} },
-                ast => ${ $_[0]->{qw(rule)} }
-            };
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1614} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token verbatim
-*verbatim =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 18207 18329
-           (
-      
-             ## <group>
-             ## pos: 18207 18212
-              (   ( $pad{I1615} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 18207 18211
-               ( ( substr( $s, $pos, 2 ) eq '%{' )
-                   ? ( $pos += 2 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1615} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18212 18238
-              (   ( $pad{I1616} = $pos or 1 ) &&
-    
-               ## <capture>
-               do{
-                   my $hash = do {
-                     my $bool = 1;
-                     my $from = $pos;
-                     my @match;
-                     my %named;
-                     $bool = 0 unless
-                       ## <quant>
-                       ## pos: 18213 18236
-                       do { while (
-                        (   ( $pad{I1617} = $pos or 1 ) &&
-                           ## <concat>
-                           ## pos: 18215 18233
-                           (
-      
-                             ## <group>
-                             ## pos: 18215 18231
-                              (   ( $pad{I1618} = $pos or 1 ) &&
-                               ## <negate>
-                               ## pos: 18216 18230
-                               do{
-                                   my $pos1 = $pos;
-                                   do {
-                                     my $pos = $pos1;
-                                     my $from = $pos;
-                                     my @match;
-                                     my %named;
-                                     $bool = 
-                                         ## <before>
-                                         ## pos: 18225 18229
-                                         do{
-                                             my $pos1 = $pos;
-                                             do {
-                                               my $pos = $pos1;
-                                               my $from = $pos;
-                                               my @match;
-                                               my %named;
-                                               $bool = 0 unless
-    
-                                                   ## <constant>
-                                                   ## pos: 18225 18229
-                                                   ( ( substr( $s, $pos, 2 ) eq '%}' )
-                                                       ? ( $pos += 2 or 1 )
-                                                       : 0
-                                                   )
-                                                   ## </constant>
-    ;
-                                               $bool;
-                                             };
-                                         }
-                                         ## </before>
-     ? 0 : 1;
-                                     $bool;
-                                   };
-                               }
-                               ## </negate>
-     ||    ( ( $pos = $pad{I1618} ) && 0 ) )
-                             ## </group>
-    
-                           &&
-      
-                             ## <group>
-                             ## pos: 18231 18233
-                              (   ( $pad{I1619} = $pos or 1 ) &&
-    
-                               ## <dot>
-                               ## pos: 18231 18232
-                               ( substr( $s, $pos++, 1 ) ne '' )
-                               ## </dot>
-     ||    ( ( $pos = $pad{I1619} ) && 0 ) )
-                             ## </group>
-    
-                           )
-                           ## </concat>
-     ||    ( ( $pos = $pad{I1617} ) && 0 ) )) {}; $bool = 1 }
-                       ## </quant>
-    ;
-                     { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
-                   };
-                   my $bool = ${$hash->{'bool'}};
-                   $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
-                   $bool;
-               }
-               ## </capture>
-     ||    ( ( $pos = $pad{I1616} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18238 18247
-              (   ( $pad{I1620} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 18238 18242
-               ( ( substr( $s, $pos, 2 ) eq '%}' )
-                   ? ( $pos += 2 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1620} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18247 18329
-              (   ( $pad{I1621} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 18247 18328
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                type => 'block',
-                value => ${ $_[0]->[0] }
-            };
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1621} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token item
-*item =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <alt>
-           ## pos: 18349 18441
-           (
-               ( $pad{I1622} = $pos or 1 )
-               && (
-               ## <concat>
-               ## pos: 18350 18397
-               (
-      
-                 ## <group>
-                 ## pos: 18350 18368
-                  (   ( $pad{I1623} = $pos or 1 ) &&
-                   ## <named_capture>
-                   ## pos: 18351 18361
-                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                               $grammar->verbatim( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'verbatim'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                   ## </named_capture>
-     ||    ( ( $pos = $pad{I1623} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 18368 18397
-                  (   ( $pad{I1624} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 18368 18392
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(verbatim)} }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1624} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-               )
-             || (
-               ( ( $bool = 1 ) && ( $pos = $pad{I1622} ) or 1 )
-               &&            ## <concat>
-               ## pos: 18398 18441
-               (
-      
-                 ## <group>
-                 ## pos: 18398 18413
-                  (   ( $pad{I1625} = $pos or 1 ) &&
-                   ## <named_capture>
-                   ## pos: 18399 18412
-                   do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                               $grammar->named_regex( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'named_regex'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                   ## </named_capture>
-     ||    ( ( $pos = $pad{I1625} ) && 0 ) )
-                 ## </group>
-    
-               &&
-      
-                 ## <group>
-                 ## pos: 18413 18441
-                  (   ( $pad{I1626} = $pos or 1 ) &&
-                   ## <closure>
-                   ## pos: 18413 18440
-                   do {
-                     local $::_V6_SUCCEED = 1;
-                     $::_V6_MATCH_ = $m;
-                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(named_regex)} }; }->( $m ) ); 
-                     $bool = $::_V6_SUCCEED;
-                     $::_V6_MATCH_ = $m if $bool; 
-                     return $m if $bool; 
-                   }
-                   ## </closure>
-     ||    ( ( $pos = $pad{I1626} ) && 0 ) )
-                 ## </group>
-    
-               )
-               ## </concat>
-    
-             )
-           )
-           ## </alt>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token grammar
-*grammar =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 18464 18580
-           (
-             ## <quant>
-             ## pos: 18464 18471
-             (
-              (   ( $pad{I1627} = $pos or 1 ) &&
-                 ## <metasyntax>
-                 ## pos: 18464 18469
-                 do {
-                      my $prior = $::_V6_PRIOR_;
-                      my $match =
-                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                      $::_V6_PRIOR_ = $prior;
-                      my $bool = (!$match != 1);
-                      $pos = $match->to if $bool;
-                      $match;
-                 }
-                 ## </metasyntax>
-     ||    ( ( $pos = $pad{I1627} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18471 18481
-              (   ( $pad{I1628} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 18471 18480
-               ( ( substr( $s, $pos, 7 ) eq 'grammar' )
-                   ? ( $pos += 7 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1628} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18481 18487
-              (   ( $pad{I1629} = $pos or 1 ) &&
-               ## <metasyntax>
-               ## pos: 18481 18486
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    my $bool = (!$match != 1);
-                    $pos = $match->to if $bool;
-                    $match;
-               }
-               ## </metasyntax>
-     ||    ( ( $pos = $pad{I1629} ) && 0 ) )
-             ## </group>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18487 18495
-              (   ( $pad{I1630} = $pos or 1 ) &&
-               ## <named_capture>
-               ## pos: 18487 18494
-               do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                           $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { $named{'ident'} = $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-               ## </named_capture>
-     ||    ( ( $pos = $pad{I1630} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 18495 18502
-             (
-              (   ( $pad{I1631} = $pos or 1 ) &&
-                 ## <metasyntax>
-                 ## pos: 18495 18500
-                 do {
-                      my $prior = $::_V6_PRIOR_;
-                      my $match =
-                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                      $::_V6_PRIOR_ = $prior;
-                      my $bool = (!$match != 1);
-                      $pos = $match->to if $bool;
-                      $match;
-                 }
-                 ## </metasyntax>
-     ||    ( ( $pos = $pad{I1631} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18502 18510
-              (   ( $pad{I1632} = $pos or 1 ) &&
-    
-               ## <constant>
-               ## pos: 18502 18505
-               ( ( substr( $s, $pos, 1 ) eq ';' )
-                   ? ( $pos += 1 or 1 )
-                   : 0
-               )
-               ## </constant>
-     ||    ( ( $pos = $pad{I1632} ) && 0 ) )
-             ## </group>
-    
-           &&
-             ## <quant>
-             ## pos: 18510 18521
-             (
-              (   ( $pad{I1633} = $pos or 1 ) &&
-                 ## <metasyntax>
-                 ## pos: 18510 18515
-                 do {
-                      my $prior = $::_V6_PRIOR_;
-                      my $match =
-                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                      $::_V6_PRIOR_ = $prior;
-                      my $bool = (!$match != 1);
-                      $pos = $match->to if $bool;
-                      $match;
-                 }
-                 ## </metasyntax>
-     ||    ( ( $pos = $pad{I1633} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 18521 18544
-             do { while (
-              (   ( $pad{I1634} = $pos or 1 ) &&
-                 ## <concat>
-                 ## pos: 18522 18537
-                 (
-      
-                   ## <group>
-                   ## pos: 18522 18530
-                    (   ( $pad{I1635} = $pos or 1 ) &&
-                     ## <named_capture>
-                     ## pos: 18523 18529
-                     do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                                 $grammar->item( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'item'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                     ## </named_capture>
-     ||    ( ( $pos = $pad{I1635} ) && 0 ) )
-                   ## </group>
-    
-                 &&
-                   ## <quant>
-                   ## pos: 18530 18537
-                   (
-                    (   ( $pad{I1636} = $pos or 1 ) &&
-                       ## <metasyntax>
-                       ## pos: 18530 18535
-                       do {
-                            my $prior = $::_V6_PRIOR_;
-                            my $match =
-                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                            $::_V6_PRIOR_ = $prior;
-                            my $bool = (!$match != 1);
-                            $pos = $match->to if $bool;
-                            $match;
-                       }
-                       ## </metasyntax>
-     ||    ( ( $pos = $pad{I1636} ) && 0 ) )
-                   || ( $bool = 1 )
-                   )
-                   ## </quant>
-    
-                 )
-                 ## </concat>
-     ||    ( ( $pos = $pad{I1634} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18544 18580
-              (   ( $pad{I1637} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 18544 18579
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return { ${ $_[0]->{qw(ident)} } => $_[0]->{qw(item)} } }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1637} ) && 0 ) )
-             ## </group>
-    
-           )
-           ## </concat>
-    ;
-        }
-        if ( $bool ) {
-          my $prior = $::_V6_PRIOR_;
-          $::_V6_PRIOR_ = sub {
-            local $main::_V6_PRIOR_ = $prior;
-            $rule->(@_);
-          };
-          #warn "pos2 = ", $pos, "\n";
-          pos($_[1]) = $pos if $_[3]{continue};
-          last;
-        }
-      } # /for
-      $::_V6_MATCH_ = $m;
-      return $m;
-    } }
-    ## </global>
-;
-
-# token spec
-*spec =
-    ## <global>
-    ## sigspace: 0
-    ## ratchet: 1
-    do { my $rule; $rule = sub {
-      my $grammar = $_[0];
-      my $s = $_[1];
-      $_[3] = $_[2] unless defined $_[3]; # backwards compat
-      no warnings 'substr', 'uninitialized', 'syntax';
-      my %pad;
-      my $m;
-      my $bool;
-      my @pos;
-      # XXX :pos(X) takes the precedence over :continue ?
-      if (defined $_[3]{p}) {
-        push @pos, $_[3]{p} || 0;
-      } elsif ($_[3]{continue}) {
-        push @pos, (pos($_[1]) || 0) .. length($s);
-      } else {
-        push @pos, 0..length($s);
-      }
-      for my $pos ( @pos ) {
-        my %index;
-        my @match;
-        my %named;
-        $bool = 1;
-        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
-        $m = Pugs::Runtime::Match->new( {
-          str => \$s, from => \(0+$pos), to => \($pos),
-          bool => \$bool, match => \@match, named => \%named, capture => undef,
-        } );
-        {
-          my $prior = $::_V6_PRIOR_;
-          local $::_V6_PRIOR_ = $prior;
-          $bool = 0 unless
-           ## <concat>
-           ## pos: 18600 18720
-           (
-             ## <quant>
-             ## pos: 18600 18616
-             (
-              (   ( $pad{I1638} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 18600 18610
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->verbatim( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'verbatim'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1638} ) && 0 ) )
-             || ( $bool = 1 )
-             )
-             ## </quant>
-    
-           &&
-             ## <quant>
-             ## pos: 18616 18631
-             do { while (
-              (   ( $pad{I1639} = $pos or 1 ) &&
-                 ## <named_capture>
-                 ## pos: 18616 18625
-                 do {
-                    my $prior = $::_V6_PRIOR_;
-                    my $match =
-                             $grammar->grammar( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
-                    $::_V6_PRIOR_ = $prior;
-                    if ( $match ) { push @{$named{'grammar'}}, $match;
-                        $pos = $match->to;
-                        1
-                    }
-                    else { 0 }
-                }
-                 ## </named_capture>
-     ||    ( ( $pos = $pad{I1639} ) && 0 ) )) {}; $bool = 1 }
-             ## </quant>
-    
-           &&
-      
-             ## <group>
-             ## pos: 18631 18720
-              (   ( $pad{I1640} = $pos or 1 ) &&
-               ## <closure>
-               ## pos: 18631 18719
-               do {
-                 local $::_V6_SUCCEED = 1;
-                 $::_V6_MATCH_ = $m;
-                 $m->data->{capture} = \( sub { return {
-                block => $_[0]->{qw(verbatim)},
-                'grammar' => $_[0]->{qw(grammar)} }
-        }->( $m ) ); 
-                 $bool = $::_V6_SUCCEED;
-                 $::_V6_MATCH_ = $m if $bool; 
-                 return $m if $bool; 
-               }
-               ## </closure>
-     ||    ( ( $pos = $pad{I1640} ) && 0 ) )
+# script from examples/Grammar.grammar at Tue Jul 22 22:14:35 2008
+
+use strict;
+use warnings;
+
+package Pugs::Grammar::Rule;
+
+#use base 'Pugs::Grammar::Base';
+
+use Pugs::Runtime::Match;
+use Pugs::Runtime::Regex;
+use Pugs::Runtime::Tracer ();
+
+# Code block from grammar spec
+
+
+use utf8;
+no strict 'refs';
+no warnings 'redefine';
+no warnings 'once';
+
+#use Pugs::Runtime::Match;
+
+our %rule_terms;
+our %variables;
+
+
+
+# token pod_begin
+*pod_begin =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 632 675
+           (
+               ( $pad{I1955} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 633 652
+               (
+      
+                 ## <group>
+                 ## pos: 633 639
+                  (   ( $pad{I1956} = $pos or 1 ) &&
+                   ## <perl5>
+                   ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
+                       ? ( $pos += length( $1 ) or 1 )
+                       : 0
+                   )
+                   ## </perl5>
+     ||    ( ( $pos = $pad{I1956} ) && 0 ) )
+                 ## </group>
+    
+               &&
+    
+                 ## <constant>
+                 ## pos: 639 640
+                 ( ( substr( $s, $pos, 1 ) eq '=' )
+                     ? ( $pos += 1 or 1 )
+                     : 0
+                 )
+                 ## </constant>
+    
+               &&
+    
+                 ## <constant>
+                 ## pos: 640 641
+                 ( ( substr( $s, $pos, 1 ) eq 'e' )
+                     ? ( $pos += 1 or 1 )
+                     : 0
+                 )
+                 ## </constant>
+    
+               &&
+    
+                 ## <constant>
+                 ## pos: 641 642
+                 ( ( substr( $s, $pos, 1 ) eq 'n' )
+                     ? ( $pos += 1 or 1 )
+                     : 0
+                 )
+                 ## </constant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 642 644
+                  (   ( $pad{I1957} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 642 643
+                   ( ( substr( $s, $pos, 1 ) eq 'd' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I1957} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 644 652
+                 do { while (
+                  (   ( $pad{I1958} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I1958} ) && 0 ) )) {}; $bool = 1 }
+                 ## </quant>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I1955} ) or 1 )
+               &&            ## <concat>
+               ## pos: 653 675
+               (
+      
+                 ## <group>
+                 ## pos: 653 658
+                  (   ( $pad{I1959} = $pos or 1 ) &&
+    
+                   ## <dot>
+                   ## pos: 656 657
+                   ( substr( $s, $pos++, 1 ) ne '' )
+                   ## </dot>
+     ||    ( ( $pos = $pad{I1959} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 658 662
+                 do { while (
+                  (   ( $pad{I1960} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I1960} ) && 0 ) )) {}; $bool = 1 }
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 662 675
+                  (   ( $pad{I1961} = $pos or 1 ) &&
+                   ## <metasyntax>
+                   ## pos: 662 674
+                   do {
+                        my $prior = $::_V6_PRIOR_;
+                        my $match =
+                               $grammar->pod_begin( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                        $::_V6_PRIOR_ = $prior;
+                        my $bool = (!$match != 1);
+                        $pos = $match->to if $bool;
+                        $match;
+                   }
+                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I1961} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token pod_other
+*pod_other =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 700 743
+           (
+               ( $pad{I1962} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 701 720
+               (
+      
+                 ## <group>
+                 ## pos: 701 707
+                  (   ( $pad{I1963} = $pos or 1 ) &&
+                   ## <perl5>
+                   ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
+                       ? ( $pos += length( $1 ) or 1 )
+                       : 0
+                   )
+                   ## </perl5>
+     ||    ( ( $pos = $pad{I1963} ) && 0 ) )
+                 ## </group>
+    
+               &&
+    
+                 ## <constant>
+                 ## pos: 707 708
+                 ( ( substr( $s, $pos, 1 ) eq '=' )
+                     ? ( $pos += 1 or 1 )
+                     : 0
+                 )
+                 ## </constant>
+    
+               &&
+    
+                 ## <constant>
+                 ## pos: 708 709
+                 ( ( substr( $s, $pos, 1 ) eq 'c' )
+                     ? ( $pos += 1 or 1 )
+                     : 0
+                 )
+                 ## </constant>
+    
+               &&
+    
+                 ## <constant>
+                 ## pos: 709 710
+                 ( ( substr( $s, $pos, 1 ) eq 'u' )
+                     ? ( $pos += 1 or 1 )
+                     : 0
+                 )
+                 ## </constant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 710 712
+                  (   ( $pad{I1964} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 710 711
+                   ( ( substr( $s, $pos, 1 ) eq 't' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I1964} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 712 720
+                 do { while (
+                  (   ( $pad{I1965} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I1965} ) && 0 ) )) {}; $bool = 1 }
+                 ## </quant>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I1962} ) or 1 )
+               &&            ## <concat>
+               ## pos: 721 743
+               (
+      
+                 ## <group>
+                 ## pos: 721 726
+                  (   ( $pad{I1966} = $pos or 1 ) &&
+    
+                   ## <dot>
+                   ## pos: 724 725
+                   ( substr( $s, $pos++, 1 ) ne '' )
+                   ## </dot>
+     ||    ( ( $pos = $pad{I1966} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 726 730
+                 do { while (
+                  (   ( $pad{I1967} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I1967} ) && 0 ) )) {}; $bool = 1 }
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 730 743
+                  (   ( $pad{I1968} = $pos or 1 ) &&
+                   ## <metasyntax>
+                   ## pos: 730 742
+                   do {
+                        my $prior = $::_V6_PRIOR_;
+                        my $match =
+                               $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                        $::_V6_PRIOR_ = $prior;
+                        my $bool = (!$match != 1);
+                        $pos = $match->to if $bool;
+                        $match;
+                   }
+                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I1968} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token ws
+*ws =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <quant>
+           ## pos: 761 1059
+           (
+            (   ( $pad{I1969} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 762 1056
+               (
+                   ( $pad{I1970} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 768 783
+                   (
+      
+                     ## <group>
+                     ## pos: 768 775
+                      (   ( $pad{I1971} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 772 774
+                       ( ( substr( $s, $pos, 1 ) eq '#' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I1971} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+                     ## <quant>
+                     ## pos: 775 783
+                     do { while (
+                      (   ( $pad{I1972} = $pos or 1 ) &&
+                         ## <perl5>
+                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                             ? ( $pos += length( $1 ) or 1 )
+                             : 0
+                         )
+                         ## </perl5>
+     ||    ( ( $pos = $pad{I1972} ) && 0 ) )) {}; $bool = 1 }
+                     ## </quant>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 784 1044
+                   (
+      
+                     ## <group>
+                     ## pos: 784 791
+                      (   ( $pad{I1973} = $pos or 1 ) &&
+                       ## <perl5>
+                       ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
+                           ? ( $pos += length( $1 ) or 1 )
+                           : 0
+                       )
+                       ## </perl5>
+     ||    ( ( $pos = $pad{I1973} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+                     ## <quant>
+                     ## pos: 791 1044
+                     (
+                      (   ( $pad{I1974} = $pos or 1 ) &&
+                         ## <concat>
+                         ## pos: 792 1037
+                         (
+      
+                           ## <group>
+                           ## pos: 792 795
+                            (   ( $pad{I1975} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 793 794
+                             ( ( substr( $s, $pos, 1 ) eq '=' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I1975} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+                           ## <quant>
+                           ## pos: 795 1037
+                           (
+                            (   ( $pad{I1976} = $pos or 1 ) &&
+                               ## <alt>
+                               ## pos: 796 1022
+                               (
+                                   ( $pad{I1977} = $pos or 1 )
+                                   && (
+                                   ## <concat>
+                                   ## pos: 810 847
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 810 813
+                                      (   ( $pad{I1978} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 812 813
+                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1978} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 813 814
+                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 814 815
+                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 815 816
+                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 816 818
+                                      (   ( $pad{I1979} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 816 817
+                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1979} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 818 824
+                                      (   ( $pad{I1980} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 818 823
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1980} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 824 825
+                                     ( ( substr( $s, $pos, 1 ) eq 'E' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 825 826
+                                     ( ( substr( $s, $pos, 1 ) eq 'N' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 826 828
+                                      (   ( $pad{I1981} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 826 827
+                                       ( ( substr( $s, $pos, 1 ) eq 'D' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1981} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+                                     ## <quant>
+                                     ## pos: 828 832
+                                     do { while (
+                                      (   ( $pad{I1982} = $pos or 1 ) &&
+                                         ## <perl5>
+                                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                                             ? ( $pos += length( $1 ) or 1 )
+                                             : 0
+                                         )
+                                         ## </perl5>
+     ||    ( ( $pos = $pad{I1982} ) && 0 ) )) {}; $bool = 1 }
+                                     ## </quant>
+    
+                                   &&
+                                     ## <quant>
+                                     ## pos: 832 847
+                                     do { while (
+                                      (   ( $pad{I1983} = $pos or 1 ) &&
+    
+                                         ## <dot>
+                                         ## pos: 832 833
+                                         ( substr( $s, $pos++, 1 ) ne '' )
+                                         ## </dot>
+     ||    ( ( $pos = $pad{I1983} ) && 0 ) )) {}; $bool = 1 }
+                                     ## </quant>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 848 882
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 848 851
+                                      (   ( $pad{I1984} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 850 851
+                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1984} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 851 852
+                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 852 853
+                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 853 854
+                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 854 857
+                                      (   ( $pad{I1985} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 854 855
+                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1985} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 857 882
+                                      (   ( $pad{I1986} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 857 869
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_begin( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1986} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 883 917
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 883 886
+                                      (   ( $pad{I1987} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 885 886
+                                       ( ( substr( $s, $pos, 1 ) eq 'k' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1987} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 886 887
+                                     ( ( substr( $s, $pos, 1 ) eq 'w' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 887 888
+                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 888 892
+                                      (   ( $pad{I1988} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 888 889
+                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1988} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 892 917
+                                      (   ( $pad{I1989} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 892 904
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1989} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 918 952
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 918 921
+                                      (   ( $pad{I1990} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 920 921
+                                       ( ( substr( $s, $pos, 1 ) eq 'p' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1990} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 921 922
+                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 922 927
+                                      (   ( $pad{I1991} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 922 923
+                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1991} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 927 952
+                                      (   ( $pad{I1992} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 927 939
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1992} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 953 987
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 953 956
+                                      (   ( $pad{I1993} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 955 956
+                                       ( ( substr( $s, $pos, 1 ) eq 'f' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1993} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 956 957
+                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 957 962
+                                      (   ( $pad{I1994} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 957 958
+                                       ( ( substr( $s, $pos, 1 ) eq 'r' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1994} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 962 987
+                                      (   ( $pad{I1995} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 962 974
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1995} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 988 1022
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 988 991
+                                      (   ( $pad{I1996} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 990 991
+                                       ( ( substr( $s, $pos, 1 ) eq 'h' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1996} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 991 992
+                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 992 993
+                                     ( ( substr( $s, $pos, 1 ) eq 'a' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 993 994
+                                     ( ( substr( $s, $pos, 1 ) eq 'd' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 994 997
+                                      (   ( $pad{I1997} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 994 995
+                                       ( ( substr( $s, $pos, 1 ) eq '1' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1997} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 997 1022
+                                      (   ( $pad{I1998} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 997 1009
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1998} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                 )
+                               )
+                               ## </alt>
+     ||    ( ( $pos = $pad{I1976} ) && 0 ) )
+                           || ( $bool = 1 )
+                           )
+                           ## </quant>
+    
+                         )
+                         ## </concat>
+     ||    ( ( $pos = $pad{I1974} ) && 0 ) )
+                     || ( $bool = 1 )
+                     )
+                     ## </quant>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 1045 1056
+                    (   ( $pad{I1999} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^(\s)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I1999} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I1969} ) && 0 ) )
+           && do { while (
+            (   ( $pad{I1969} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 762 1056
+               (
+                   ( $pad{I1970} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 768 783
+                   (
+      
+                     ## <group>
+                     ## pos: 768 775
+                      (   ( $pad{I1971} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 772 774
+                       ( ( substr( $s, $pos, 1 ) eq '#' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I1971} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+                     ## <quant>
+                     ## pos: 775 783
+                     do { while (
+                      (   ( $pad{I1972} = $pos or 1 ) &&
+                         ## <perl5>
+                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                             ? ( $pos += length( $1 ) or 1 )
+                             : 0
+                         )
+                         ## </perl5>
+     ||    ( ( $pos = $pad{I1972} ) && 0 ) )) {}; $bool = 1 }
+                     ## </quant>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 784 1044
+                   (
+      
+                     ## <group>
+                     ## pos: 784 791
+                      (   ( $pad{I1973} = $pos or 1 ) &&
+                       ## <perl5>
+                       ( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
+                           ? ( $pos += length( $1 ) or 1 )
+                           : 0
+                       )
+                       ## </perl5>
+     ||    ( ( $pos = $pad{I1973} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+                     ## <quant>
+                     ## pos: 791 1044
+                     (
+                      (   ( $pad{I1974} = $pos or 1 ) &&
+                         ## <concat>
+                         ## pos: 792 1037
+                         (
+      
+                           ## <group>
+                           ## pos: 792 795
+                            (   ( $pad{I1975} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 793 794
+                             ( ( substr( $s, $pos, 1 ) eq '=' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I1975} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+                           ## <quant>
+                           ## pos: 795 1037
+                           (
+                            (   ( $pad{I1976} = $pos or 1 ) &&
+                               ## <alt>
+                               ## pos: 796 1022
+                               (
+                                   ( $pad{I1977} = $pos or 1 )
+                                   && (
+                                   ## <concat>
+                                   ## pos: 810 847
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 810 813
+                                      (   ( $pad{I1978} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 812 813
+                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1978} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 813 814
+                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 814 815
+                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 815 816
+                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 816 818
+                                      (   ( $pad{I1979} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 816 817
+                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1979} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 818 824
+                                      (   ( $pad{I1980} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 818 823
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1980} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 824 825
+                                     ( ( substr( $s, $pos, 1 ) eq 'E' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 825 826
+                                     ( ( substr( $s, $pos, 1 ) eq 'N' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 826 828
+                                      (   ( $pad{I1981} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 826 827
+                                       ( ( substr( $s, $pos, 1 ) eq 'D' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1981} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+                                     ## <quant>
+                                     ## pos: 828 832
+                                     do { while (
+                                      (   ( $pad{I1982} = $pos or 1 ) &&
+                                         ## <perl5>
+                                         ( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
+                                             ? ( $pos += length( $1 ) or 1 )
+                                             : 0
+                                         )
+                                         ## </perl5>
+     ||    ( ( $pos = $pad{I1982} ) && 0 ) )) {}; $bool = 1 }
+                                     ## </quant>
+    
+                                   &&
+                                     ## <quant>
+                                     ## pos: 832 847
+                                     do { while (
+                                      (   ( $pad{I1983} = $pos or 1 ) &&
+    
+                                         ## <dot>
+                                         ## pos: 832 833
+                                         ( substr( $s, $pos++, 1 ) ne '' )
+                                         ## </dot>
+     ||    ( ( $pos = $pad{I1983} ) && 0 ) )) {}; $bool = 1 }
+                                     ## </quant>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 848 882
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 848 851
+                                      (   ( $pad{I1984} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 850 851
+                                       ( ( substr( $s, $pos, 1 ) eq 'b' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1984} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 851 852
+                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 852 853
+                                     ( ( substr( $s, $pos, 1 ) eq 'g' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 853 854
+                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 854 857
+                                      (   ( $pad{I1985} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 854 855
+                                       ( ( substr( $s, $pos, 1 ) eq 'n' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1985} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 857 882
+                                      (   ( $pad{I1986} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 857 869
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_begin( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1986} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 883 917
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 883 886
+                                      (   ( $pad{I1987} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 885 886
+                                       ( ( substr( $s, $pos, 1 ) eq 'k' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1987} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 886 887
+                                     ( ( substr( $s, $pos, 1 ) eq 'w' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 887 888
+                                     ( ( substr( $s, $pos, 1 ) eq 'i' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 888 892
+                                      (   ( $pad{I1988} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 888 889
+                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1988} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 892 917
+                                      (   ( $pad{I1989} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 892 904
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1989} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 918 952
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 918 921
+                                      (   ( $pad{I1990} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 920 921
+                                       ( ( substr( $s, $pos, 1 ) eq 'p' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1990} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 921 922
+                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 922 927
+                                      (   ( $pad{I1991} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 922 923
+                                       ( ( substr( $s, $pos, 1 ) eq 'd' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1991} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 927 952
+                                      (   ( $pad{I1992} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 927 939
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1992} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 953 987
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 953 956
+                                      (   ( $pad{I1993} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 955 956
+                                       ( ( substr( $s, $pos, 1 ) eq 'f' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1993} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 956 957
+                                     ( ( substr( $s, $pos, 1 ) eq 'o' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 957 962
+                                      (   ( $pad{I1994} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 957 958
+                                       ( ( substr( $s, $pos, 1 ) eq 'r' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1994} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 962 987
+                                      (   ( $pad{I1995} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 962 974
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1995} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
+                                   &&                                ## <concat>
+                                   ## pos: 988 1022
+                                   (
+      
+                                     ## <group>
+                                     ## pos: 988 991
+                                      (   ( $pad{I1996} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 990 991
+                                       ( ( substr( $s, $pos, 1 ) eq 'h' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1996} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 991 992
+                                     ( ( substr( $s, $pos, 1 ) eq 'e' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 992 993
+                                     ( ( substr( $s, $pos, 1 ) eq 'a' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+    
+                                     ## <constant>
+                                     ## pos: 993 994
+                                     ( ( substr( $s, $pos, 1 ) eq 'd' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 994 997
+                                      (   ( $pad{I1997} = $pos or 1 ) &&
+    
+                                       ## <constant>
+                                       ## pos: 994 995
+                                       ( ( substr( $s, $pos, 1 ) eq '1' )
+                                           ? ( $pos += 1 or 1 )
+                                           : 0
+                                       )
+                                       ## </constant>
+     ||    ( ( $pos = $pad{I1997} ) && 0 ) )
+                                     ## </group>
+    
+                                   &&
+      
+                                     ## <group>
+                                     ## pos: 997 1022
+                                      (   ( $pad{I1998} = $pos or 1 ) &&
+                                       ## <metasyntax>
+                                       ## pos: 997 1009
+                                       do {
+                                            my $prior = $::_V6_PRIOR_;
+                                            my $match =
+                                                   $grammar->pod_other( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                            $::_V6_PRIOR_ = $prior;
+                                            my $bool = (!$match != 1);
+                                            $pos = $match->to if $bool;
+                                            $match;
+                                       }
+                                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I1998} ) && 0 ) )
+                                     ## </group>
+    
+                                   )
+                                   ## </concat>
+    
+                                 )
+                               )
+                               ## </alt>
+     ||    ( ( $pos = $pad{I1976} ) && 0 ) )
+                           || ( $bool = 1 )
+                           )
+                           ## </quant>
+    
+                         )
+                         ## </concat>
+     ||    ( ( $pos = $pad{I1974} ) && 0 ) )
+                     || ( $bool = 1 )
+                     )
+                     ## </quant>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 1045 1056
+                    (   ( $pad{I1999} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^(\s)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I1999} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I1969} ) && 0 ) )) {}; $bool = 1 }
+           )
+           ## </quant>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token ident
+*ident =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <quant>
+           ## pos: 1118 1143
+           (
+            (   ( $pad{I2000} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 1119 1140
+               (
+                   ( $pad{I2001} = $pos or 1 )
+                   && (
+      
+                   ## <group>
+                   ## pos: 1119 1129
+                    (   ( $pad{I2002} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 1120 1128
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2002} ) && 0 ) )
+                   ## </group>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 1130 1133
+                    (   ( $pad{I2003} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 1131 1132
+                     ( ( substr( $s, $pos, 1 ) eq '_' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2003} ) && 0 ) )
+                   ## </group>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 1134 1140
+                    (   ( $pad{I2004} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 1135 1139
+                     ( ( substr( $s, $pos, 2 ) eq '::' )
+                         ? ( $pos += 2 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2004} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2000} ) && 0 ) )
+           && do { while (
+            (   ( $pad{I2000} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 1119 1140
+               (
+                   ( $pad{I2001} = $pos or 1 )
+                   && (
+      
+                   ## <group>
+                   ## pos: 1119 1129
+                    (   ( $pad{I2002} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 1120 1128
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2002} ) && 0 ) )
+                   ## </group>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 1130 1133
+                    (   ( $pad{I2003} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 1131 1132
+                     ( ( substr( $s, $pos, 1 ) eq '_' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2003} ) && 0 ) )
+                   ## </group>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 1134 1140
+                    (   ( $pad{I2004} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 1135 1139
+                     ( ( substr( $s, $pos, 2 ) eq '::' )
+                         ? ( $pos += 2 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2004} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2000} ) && 0 ) )) {}; $bool = 1 }
+           )
+           ## </quant>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token alnum
+*alnum =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 1164 1178
+            (   ( $pad{I2005} = $pos or 1 ) &&
+             ## <perl5>
+             ( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9a-zA-Z]))\X)/ )
+                 ? ( $pos += length( $1 ) or 1 )
+                 : 0
+             )
+             ## </perl5>
+     ||    ( ( $pos = $pad{I2005} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token alpha
+*alpha =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 1199 1210
+            (   ( $pad{I2006} = $pos or 1 ) &&
+             ## <perl5>
+             ( ( substr( $s, $pos ) =~ m/^((?:(?=[a-zA-Z]))\X)/ )
+                 ? ( $pos += length( $1 ) or 1 )
+                 : 0
+             )
+             ## </perl5>
+     ||    ( ( $pos = $pad{I2006} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token digit
+*digit =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 1231 1239
+            (   ( $pad{I2007} = $pos or 1 ) &&
+             ## <perl5>
+             ( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9]))\X)/ )
+                 ? ( $pos += length( $1 ) or 1 )
+                 : 0
+             )
+             ## </perl5>
+     ||    ( ( $pos = $pad{I2007} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token special_char
+*special_char =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 1284 2177
+           (
+               ( $pad{I2008} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 1285 1473
+               (
+      
+                 ## <group>
+                 ## pos: 1285 1296
+                  (   ( $pad{I2009} = $pos or 1 ) &&
+    
+                   ## <capture>
+                   do{
+                       my $hash = do {
+                         my $bool = 1;
+                         my $from = $pos;
+                         my @match;
+                         my %named;
+                         $bool = 0 unless
+                           ## <alt>
+                           ## pos: 1287 1294
+                           (
+                               ( $pad{I2010} = $pos or 1 )
+                               && (
+      
+                               ## <group>
+                               ## pos: 1287 1290
+                                (   ( $pad{I2011} = $pos or 1 ) &&
+    
+                                 ## <constant>
+                                 ## pos: 1288 1289
+                                 ( ( substr( $s, $pos, 1 ) eq 'c' )
+                                     ? ( $pos += 1 or 1 )
+                                     : 0
+                                 )
+                                 ## </constant>
+     ||    ( ( $pos = $pad{I2011} ) && 0 ) )
+                               ## </group>
+    
+                               )
+                             || (
+                               ( ( $bool = 1 ) && ( $pos = $pad{I2010} ) or 1 )
+                               &&   
+                               ## <group>
+                               ## pos: 1291 1294
+                                (   ( $pad{I2012} = $pos or 1 ) &&
+    
+                                 ## <constant>
+                                 ## pos: 1292 1293
+                                 ( ( substr( $s, $pos, 1 ) eq 'C' )
+                                     ? ( $pos += 1 or 1 )
+                                     : 0
+                                 )
+                                 ## </constant>
+     ||    ( ( $pos = $pad{I2012} ) && 0 ) )
+                               ## </group>
+    
+                             )
+                           )
+                           ## </alt>
+    ;
+                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                       };
+                       my $bool = ${$hash->{'bool'}};
+                       $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                       $bool;
+                   }
+                   ## </capture>
+     ||    ( ( $pos = $pad{I2009} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1296 1299
+                  (   ( $pad{I2013} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 1296 1298
+                   ( ( substr( $s, $pos, 1 ) eq '[' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2013} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1299 1340
+                  (   ( $pad{I2014} = $pos or 1 ) &&
+    
+                   ## <capture>
+                   do{
+                       my $hash = do {
+                         my $bool = 1;
+                         my $from = $pos;
+                         my @match;
+                         my %named;
+                         $bool = 0 unless
+                           ## <quant>
+                           ## pos: 1300 1338
+                           (
+                            (   ( $pad{I2015} = $pos or 1 ) &&
+                               ## <alt>
+                               ## pos: 1302 1336
+                               (
+                                   ( $pad{I2016} = $pos or 1 )
+                                   && (
+                                   ## <named_capture>
+                                   ## pos: 1302 1309
+                                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                               $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'alnum'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                                   ## </named_capture>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&                                ## <perl5>
+                                   ( ( substr( $s, $pos ) =~ m/^(\s)/ )
+                                       ? ( $pos += length( $1 ) or 1 )
+                                       : 0
+                                   )
+                                   ## </perl5>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1313 1318
+                                    (   ( $pad{I2017} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1314 1317
+                                     ( ( substr( $s, $pos, 1 ) eq ';' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2017} ) && 0 ) )
+                                   ## </group>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1319 1324
+                                    (   ( $pad{I2018} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1320 1323
+                                     ( ( substr( $s, $pos, 1 ) eq '(' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2018} ) && 0 ) )
+                                   ## </group>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1325 1330
+                                    (   ( $pad{I2019} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1326 1329
+                                     ( ( substr( $s, $pos, 1 ) eq ')' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2019} ) && 0 ) )
+                                   ## </group>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1331 1336
+                                    (   ( $pad{I2020} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1332 1335
+                                     ( ( substr( $s, $pos, 1 ) eq '-' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2020} ) && 0 ) )
+                                   ## </group>
+    
+                                 )
+                               )
+                               ## </alt>
+     ||    ( ( $pos = $pad{I2015} ) && 0 ) )
+                           && do { while (
+                            (   ( $pad{I2015} = $pos or 1 ) &&
+                               ## <alt>
+                               ## pos: 1302 1336
+                               (
+                                   ( $pad{I2016} = $pos or 1 )
+                                   && (
+                                   ## <named_capture>
+                                   ## pos: 1302 1309
+                                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                               $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'alnum'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                                   ## </named_capture>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&                                ## <perl5>
+                                   ( ( substr( $s, $pos ) =~ m/^(\s)/ )
+                                       ? ( $pos += length( $1 ) or 1 )
+                                       : 0
+                                   )
+                                   ## </perl5>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1313 1318
+                                    (   ( $pad{I2017} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1314 1317
+                                     ( ( substr( $s, $pos, 1 ) eq ';' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2017} ) && 0 ) )
+                                   ## </group>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1319 1324
+                                    (   ( $pad{I2018} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1320 1323
+                                     ( ( substr( $s, $pos, 1 ) eq '(' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2018} ) && 0 ) )
+                                   ## </group>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1325 1330
+                                    (   ( $pad{I2019} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1326 1329
+                                     ( ( substr( $s, $pos, 1 ) eq ')' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2019} ) && 0 ) )
+                                   ## </group>
+    
+                                   )
+                                 || (
+                                   ( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
+                                   &&   
+                                   ## <group>
+                                   ## pos: 1331 1336
+                                    (   ( $pad{I2020} = $pos or 1 ) &&
+    
+                                     ## <constant>
+                                     ## pos: 1332 1335
+                                     ( ( substr( $s, $pos, 1 ) eq '-' )
+                                         ? ( $pos += 1 or 1 )
+                                         : 0
+                                     )
+                                     ## </constant>
+     ||    ( ( $pos = $pad{I2020} ) && 0 ) )
+                                   ## </group>
+    
+                                 )
+                               )
+                               ## </alt>
+     ||    ( ( $pos = $pad{I2015} ) && 0 ) )) {}; $bool = 1 }
+                           )
+                           ## </quant>
+    ;
+                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                       };
+                       my $bool = ${$hash->{'bool'}};
+                       $match[ 1 ] = Pugs::Runtime::Match->new( $hash );
+                       $bool;
+                   }
+                   ## </capture>
+     ||    ( ( $pos = $pad{I2014} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1340 1385
+                  (   ( $pad{I2021} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 1340 1342
+                   ( ( substr( $s, $pos, 1 ) eq ']' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2021} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1385 1473
+                  (   ( $pad{I2022} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 1385 1463
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2022} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
+               &&            ## <concat>
+               ## pos: 1474 1617
+               (
+      
+                 ## <group>
+                 ## pos: 1474 1485
+                  (   ( $pad{I2023} = $pos or 1 ) &&
+                   ## <alt>
+                   ## pos: 1476 1483
+                   (
+                       ( $pad{I2024} = $pos or 1 )
+                       && (
+      
+                       ## <group>
+                       ## pos: 1476 1479
+                        (   ( $pad{I2025} = $pos or 1 ) &&
+    
+                         ## <constant>
+                         ## pos: 1477 1478
+                         ( ( substr( $s, $pos, 1 ) eq 'x' )
+                             ? ( $pos += 1 or 1 )
+                             : 0
+                         )
+                         ## </constant>
+     ||    ( ( $pos = $pad{I2025} ) && 0 ) )
+                       ## </group>
+    
+                       )
+                     || (
+                       ( ( $bool = 1 ) && ( $pos = $pad{I2024} ) or 1 )
+                       &&   
+                       ## <group>
+                       ## pos: 1480 1483
+                        (   ( $pad{I2026} = $pos or 1 ) &&
+    
+                         ## <constant>
+                         ## pos: 1481 1482
+                         ( ( substr( $s, $pos, 1 ) eq 'X' )
+                             ? ( $pos += 1 or 1 )
+                             : 0
+                         )
+                         ## </constant>
+     ||    ( ( $pos = $pad{I2026} ) && 0 ) )
+                       ## </group>
+    
+                     )
+                   )
+                   ## </alt>
+     ||    ( ( $pos = $pad{I2023} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 1485 1535
+                 (
+                  (   ( $pad{I2027} = $pos or 1 ) &&
+                     ## <named_capture>
+                     ## pos: 1485 1493
+                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                 $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'xdigit'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2027} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2027} = $pos or 1 ) &&
+                     ## <named_capture>
+                     ## pos: 1485 1493
+                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                 $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'xdigit'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2027} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1535 1617
+                  (   ( $pad{I2028} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 1535 1608
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2028} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
+               &&            ## <concat>
+               ## pos: 1618 1777
+               (
+      
+                 ## <group>
+                 ## pos: 1618 1629
+                  (   ( $pad{I2029} = $pos or 1 ) &&
+    
+                   ## <capture>
+                   do{
+                       my $hash = do {
+                         my $bool = 1;
+                         my $from = $pos;
+                         my @match;
+                         my %named;
+                         $bool = 0 unless
+                           ## <alt>
+                           ## pos: 1620 1627
+                           (
+                               ( $pad{I2030} = $pos or 1 )
+                               && (
+      
+                               ## <group>
+                               ## pos: 1620 1623
+                                (   ( $pad{I2031} = $pos or 1 ) &&
+    
+                                 ## <constant>
+                                 ## pos: 1621 1622
+                                 ( ( substr( $s, $pos, 1 ) eq 'x' )
+                                     ? ( $pos += 1 or 1 )
+                                     : 0
+                                 )
+                                 ## </constant>
+     ||    ( ( $pos = $pad{I2031} ) && 0 ) )
+                               ## </group>
+    
+                               )
+                             || (
+                               ( ( $bool = 1 ) && ( $pos = $pad{I2030} ) or 1 )
+                               &&   
+                               ## <group>
+                               ## pos: 1624 1627
+                                (   ( $pad{I2032} = $pos or 1 ) &&
+    
+                                 ## <constant>
+                                 ## pos: 1625 1626
+                                 ( ( substr( $s, $pos, 1 ) eq 'X' )
+                                     ? ( $pos += 1 or 1 )
+                                     : 0
+                                 )
+                                 ## </constant>
+     ||    ( ( $pos = $pad{I2032} ) && 0 ) )
+                               ## </group>
+    
+                             )
+                           )
+                           ## </alt>
+    ;
+                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                       };
+                       my $bool = ${$hash->{'bool'}};
+                       $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                       $bool;
+                   }
+                   ## </capture>
+     ||    ( ( $pos = $pad{I2029} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1629 1632
+                  (   ( $pad{I2033} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 1629 1631
+                   ( ( substr( $s, $pos, 1 ) eq '[' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2033} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1632 1644
+                  (   ( $pad{I2034} = $pos or 1 ) &&
+    
+                   ## <capture>
+                   do{
+                       my $hash = do {
+                         my $bool = 1;
+                         my $from = $pos;
+                         my @match;
+                         my %named;
+                         $bool = 0 unless
+                           ## <quant>
+                           ## pos: 1633 1642
+                           (
+                            (   ( $pad{I2035} = $pos or 1 ) &&
+                               ## <named_capture>
+                               ## pos: 1633 1641
+                               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                           $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'xdigit'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                               ## </named_capture>
+     ||    ( ( $pos = $pad{I2035} ) && 0 ) )
+                           && do { while (
+                            (   ( $pad{I2035} = $pos or 1 ) &&
+                               ## <named_capture>
+                               ## pos: 1633 1641
+                               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                           $grammar->xdigit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'xdigit'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                               ## </named_capture>
+     ||    ( ( $pos = $pad{I2035} ) && 0 ) )) {}; $bool = 1 }
+                           )
+                           ## </quant>
+    ;
+                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                       };
+                       my $bool = ${$hash->{'bool'}};
+                       $match[ 1 ] = Pugs::Runtime::Match->new( $hash );
+                       $bool;
+                   }
+                   ## </capture>
+     ||    ( ( $pos = $pad{I2034} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1644 1689
+                  (   ( $pad{I2036} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 1644 1646
+                   ( ( substr( $s, $pos, 1 ) eq ']' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2036} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1689 1777
+                  (   ( $pad{I2037} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 1689 1767
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2037} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
+               &&            ## <concat>
+               ## pos: 1778 1915
+               (
+      
+                 ## <group>
+                 ## pos: 1778 1789
+                  (   ( $pad{I2038} = $pos or 1 ) &&
+                   ## <alt>
+                   ## pos: 1780 1787
+                   (
+                       ( $pad{I2039} = $pos or 1 )
+                       && (
+      
+                       ## <group>
+                       ## pos: 1780 1783
+                        (   ( $pad{I2040} = $pos or 1 ) &&
+    
+                         ## <constant>
+                         ## pos: 1781 1782
+                         ( ( substr( $s, $pos, 1 ) eq 'o' )
+                             ? ( $pos += 1 or 1 )
+                             : 0
+                         )
+                         ## </constant>
+     ||    ( ( $pos = $pad{I2040} ) && 0 ) )
+                       ## </group>
+    
+                       )
+                     || (
+                       ( ( $bool = 1 ) && ( $pos = $pad{I2039} ) or 1 )
+                       &&   
+                       ## <group>
+                       ## pos: 1784 1787
+                        (   ( $pad{I2041} = $pos or 1 ) &&
+    
+                         ## <constant>
+                         ## pos: 1785 1786
+                         ( ( substr( $s, $pos, 1 ) eq 'O' )
+                             ? ( $pos += 1 or 1 )
+                             : 0
+                         )
+                         ## </constant>
+     ||    ( ( $pos = $pad{I2041} ) && 0 ) )
+                       ## </group>
+    
+                     )
+                   )
+                   ## </alt>
+     ||    ( ( $pos = $pad{I2038} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 1789 1833
+                 (
+                  (   ( $pad{I2042} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^(\d)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2042} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2042} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^(\d)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2042} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1833 1915
+                  (   ( $pad{I2043} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 1833 1906
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2043} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
+               &&            ## <concat>
+               ## pos: 1916 2069
+               (
+      
+                 ## <group>
+                 ## pos: 1916 1927
+                  (   ( $pad{I2044} = $pos or 1 ) &&
+    
+                   ## <capture>
+                   do{
+                       my $hash = do {
+                         my $bool = 1;
+                         my $from = $pos;
+                         my @match;
+                         my %named;
+                         $bool = 0 unless
+                           ## <alt>
+                           ## pos: 1918 1925
+                           (
+                               ( $pad{I2045} = $pos or 1 )
+                               && (
+      
+                               ## <group>
+                               ## pos: 1918 1921
+                                (   ( $pad{I2046} = $pos or 1 ) &&
+    
+                                 ## <constant>
+                                 ## pos: 1919 1920
+                                 ( ( substr( $s, $pos, 1 ) eq 'o' )
+                                     ? ( $pos += 1 or 1 )
+                                     : 0
+                                 )
+                                 ## </constant>
+     ||    ( ( $pos = $pad{I2046} ) && 0 ) )
+                               ## </group>
+    
+                               )
+                             || (
+                               ( ( $bool = 1 ) && ( $pos = $pad{I2045} ) or 1 )
+                               &&   
+                               ## <group>
+                               ## pos: 1922 1925
+                                (   ( $pad{I2047} = $pos or 1 ) &&
+    
+                                 ## <constant>
+                                 ## pos: 1923 1924
+                                 ( ( substr( $s, $pos, 1 ) eq 'O' )
+                                     ? ( $pos += 1 or 1 )
+                                     : 0
+                                 )
+                                 ## </constant>
+     ||    ( ( $pos = $pad{I2047} ) && 0 ) )
+                               ## </group>
+    
+                             )
+                           )
+                           ## </alt>
+    ;
+                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                       };
+                       my $bool = ${$hash->{'bool'}};
+                       $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                       $bool;
+                   }
+                   ## </capture>
+     ||    ( ( $pos = $pad{I2044} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1927 1930
+                  (   ( $pad{I2048} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 1927 1929
+                   ( ( substr( $s, $pos, 1 ) eq '[' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2048} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1930 1936
+                  (   ( $pad{I2049} = $pos or 1 ) &&
+    
+                   ## <capture>
+                   do{
+                       my $hash = do {
+                         my $bool = 1;
+                         my $from = $pos;
+                         my @match;
+                         my %named;
+                         $bool = 0 unless
+                           ## <quant>
+                           ## pos: 1931 1934
+                           (
+                            (   ( $pad{I2050} = $pos or 1 ) &&
+                               ## <perl5>
+                               ( ( substr( $s, $pos ) =~ m/^(\d)/ )
+                                   ? ( $pos += length( $1 ) or 1 )
+                                   : 0
+                               )
+                               ## </perl5>
+     ||    ( ( $pos = $pad{I2050} ) && 0 ) )
+                           && do { while (
+                            (   ( $pad{I2050} = $pos or 1 ) &&
+                               ## <perl5>
+                               ( ( substr( $s, $pos ) =~ m/^(\d)/ )
+                                   ? ( $pos += length( $1 ) or 1 )
+                                   : 0
+                               )
+                               ## </perl5>
+     ||    ( ( $pos = $pad{I2050} ) && 0 ) )) {}; $bool = 1 }
+                           )
+                           ## </quant>
+    ;
+                         { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                       };
+                       my $bool = ${$hash->{'bool'}};
+                       $match[ 1 ] = Pugs::Runtime::Match->new( $hash );
+                       $bool;
+                   }
+                   ## </capture>
+     ||    ( ( $pos = $pad{I2049} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1936 1981
+                  (   ( $pad{I2051} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 1936 1938
+                   ( ( substr( $s, $pos, 1 ) eq ']' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2051} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 1981 2069
+                  (   ( $pad{I2052} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 1981 2059
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2052} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
+               &&            ## <concat>
+               ## pos: 2070 2177
+               (
+      
+                 ## <group>
+                 ## pos: 2070 2103
+                  (   ( $pad{I2053} = $pos or 1 ) &&
+    
+                   ## <dot>
+                   ## pos: 2071 2072
+                   ( substr( $s, $pos++, 1 ) ne '' )
+                   ## </dot>
+     ||    ( ( $pos = $pad{I2053} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 2103 2177
+                  (   ( $pad{I2054} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 2103 2176
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2054} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token literal
+*literal =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <quant>
+           ## pos: 2200 2251
+           do { while (
+            (   ( $pad{I2055} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2201 2248
+               (
+                   ( $pad{I2056} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2207 2231
+                   (
+      
+                     ## <group>
+                     ## pos: 2207 2212
+                      (   ( $pad{I2057} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2209 2211
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2057} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2212 2231
+                      (   ( $pad{I2058} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2212 2226
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2058} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2056} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 2232 2248
+                    (   ( $pad{I2059} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\']))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2059} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2055} ) && 0 ) )) {}; $bool = 1 }
+           ## </quant>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token double_quoted
+*double_quoted =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <quant>
+           ## pos: 2280 2372
+           do { while (
+            (   ( $pad{I2060} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2281 2369
+               (
+                   ( $pad{I2061} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2287 2311
+                   (
+      
+                     ## <group>
+                     ## pos: 2287 2292
+                      (   ( $pad{I2062} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2289 2291
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2062} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2292 2311
+                      (   ( $pad{I2063} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2292 2306
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2063} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2061} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 2312 2352
+                    (   ( $pad{I2064} = $pos or 1 ) &&
+                    ## <metasyntax>
+                     ## pos: 2314 2347
+                     do{
+                    my $match = 
+              ## <variable>
+              ## pos: 2314 2347
+              do {
+                our $I2065;
+                our $I2065_sizes;
+                unless ( $I2065 ) {
+                    my $hash = \%Pugs::Grammar::Rule::variables;
+                    my %sizes = map { length($_) => 1 } keys %$hash;
+                    $I2065_sizes = [ sort { $b <=> $a } keys %sizes ];
+                    $I2065 = $hash;
+                }
+                my $match = 0;
+                my $key;
+                for ( @$I2065_sizes ) {
+                    $key = ( $pos <= length( $s )
+                                ? substr( $s, $pos, $_ )
+                                : '' );
+                    if ( exists $I2065->{$key} ) {
+                        #$named{KEY} = $key;
+                        #$::_V6_MATCH_ = $m;
+                        #print "m: ", Dumper( $::_V6_MATCH_->data )
+                        #    if ( $key eq 'until' );
+                        $match = Pugs::Runtime::Regex::preprocess_hash( $I2065, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
+                        last if $match;
+                    }
+                }
+                if ( $match ) {
+                    $pos = $match->to;
+                    #print "match: $key at $pos = ", Dumper( $match->data );
+                    $bool = 1;
+                }; # else { $bool = 0 }
+                $match;
+              }
+              ## </variable>
+    ;
+                    if ( $match ) { push @{$named{'Pugs::Grammar::Rule::variables'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                    ## </metasyntax>
+     ||    ( ( $pos = $pad{I2064} ) && 0 ) )
+                   ## </group>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2061} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 2353 2369
+                    (   ( $pad{I2066} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\"]))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2066} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2060} ) && 0 ) )) {}; $bool = 1 }
+           ## </quant>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token metasyntax
+*metasyntax =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <quant>
+           ## pos: 2398 2576
+           (
+            (   ( $pad{I2067} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2399 2573
+               (
+                   ( $pad{I2068} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2405 2429
+                   (
+      
+                     ## <group>
+                     ## pos: 2405 2410
+                      (   ( $pad{I2069} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2407 2409
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2069} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2410 2429
+                      (   ( $pad{I2070} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2410 2424
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2070} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2430 2458
+                   (
+      
+                     ## <group>
+                     ## pos: 2430 2436
+                      (   ( $pad{I2071} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2432 2434
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2071} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2436 2451
+                      (   ( $pad{I2072} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2436 2446
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2072} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2451 2458
+                      (   ( $pad{I2073} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2451 2453
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2073} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2459 2491
+                   (
+      
+                     ## <group>
+                     ## pos: 2459 2465
+                      (   ( $pad{I2074} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2461 2463
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2074} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2465 2484
+                      (   ( $pad{I2075} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2465 2481
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2075} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2484 2491
+                      (   ( $pad{I2076} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2484 2486
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2076} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2492 2527
+                   (
+      
+                     ## <group>
+                     ## pos: 2492 2498
+                      (   ( $pad{I2077} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2494 2496
+                       ( ( substr( $s, $pos, 1 ) eq '{' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2077} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2498 2520
+                      (   ( $pad{I2078} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2498 2512
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2078} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2520 2527
+                      (   ( $pad{I2079} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2520 2522
+                       ( ( substr( $s, $pos, 1 ) eq '}' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2079} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2528 2556
+                   (
+      
+                     ## <group>
+                     ## pos: 2528 2534
+                      (   ( $pad{I2080} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2530 2532
+                       ( ( substr( $s, $pos, 1 ) eq '<' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2080} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2534 2549
+                      (   ( $pad{I2081} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2534 2547
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2081} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2549 2556
+                      (   ( $pad{I2082} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2549 2551
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2082} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 2557 2573
+                    (   ( $pad{I2083} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2083} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2067} ) && 0 ) )
+           && do { while (
+            (   ( $pad{I2067} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2399 2573
+               (
+                   ( $pad{I2068} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2405 2429
+                   (
+      
+                     ## <group>
+                     ## pos: 2405 2410
+                      (   ( $pad{I2069} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2407 2409
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2069} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2410 2429
+                      (   ( $pad{I2070} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2410 2424
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2070} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2430 2458
+                   (
+      
+                     ## <group>
+                     ## pos: 2430 2436
+                      (   ( $pad{I2071} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2432 2434
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2071} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2436 2451
+                      (   ( $pad{I2072} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2436 2446
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2072} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2451 2458
+                      (   ( $pad{I2073} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2451 2453
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2073} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2459 2491
+                   (
+      
+                     ## <group>
+                     ## pos: 2459 2465
+                      (   ( $pad{I2074} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2461 2463
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2074} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2465 2484
+                      (   ( $pad{I2075} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2465 2481
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2075} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2484 2491
+                      (   ( $pad{I2076} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2484 2486
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2076} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2492 2527
+                   (
+      
+                     ## <group>
+                     ## pos: 2492 2498
+                      (   ( $pad{I2077} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2494 2496
+                       ( ( substr( $s, $pos, 1 ) eq '{' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2077} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2498 2520
+                      (   ( $pad{I2078} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2498 2512
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2078} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2520 2527
+                      (   ( $pad{I2079} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2520 2522
+                       ( ( substr( $s, $pos, 1 ) eq '}' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2079} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2528 2556
+                   (
+      
+                     ## <group>
+                     ## pos: 2528 2534
+                      (   ( $pad{I2080} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2530 2532
+                       ( ( substr( $s, $pos, 1 ) eq '<' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2080} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2534 2549
+                      (   ( $pad{I2081} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2534 2547
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2081} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2549 2556
+                      (   ( $pad{I2082} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2549 2551
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2082} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 2557 2573
+                    (   ( $pad{I2083} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2083} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2067} ) && 0 ) )) {}; $bool = 1 }
+           )
+           ## </quant>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token char_range
+*char_range =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <quant>
+           ## pos: 2602 2653
+           (
+            (   ( $pad{I2084} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2603 2650
+               (
+                   ( $pad{I2085} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2609 2633
+                   (
+      
+                     ## <group>
+                     ## pos: 2609 2614
+                      (   ( $pad{I2086} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2611 2613
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2086} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2614 2633
+                      (   ( $pad{I2087} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2614 2628
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2087} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2085} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 2634 2650
+                    (   ( $pad{I2088} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2088} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2084} ) && 0 ) )
+           && do { while (
+            (   ( $pad{I2084} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2603 2650
+               (
+                   ( $pad{I2085} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2609 2633
+                   (
+      
+                     ## <group>
+                     ## pos: 2609 2614
+                      (   ( $pad{I2086} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2611 2613
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2086} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2614 2633
+                      (   ( $pad{I2087} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2614 2628
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2087} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2085} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 2634 2650
+                    (   ( $pad{I2088} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2088} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2084} ) && 0 ) )) {}; $bool = 1 }
+           )
+           ## </quant>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token char_class
+*char_class =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 2679 2738
+           (
+               ( $pad{I2089} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 2680 2713
+               (
+      
+                 ## <group>
+                 ## pos: 2680 2691
+                  (   ( $pad{I2090} = $pos or 1 ) &&
+                   ## <metasyntax>
+                   ## pos: 2682 2690
+                   do {
+                        my $prior = $::_V6_PRIOR_;
+                        my $match =
+                               $grammar->alpha( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                        $::_V6_PRIOR_ = $prior;
+                        my $bool = (!$match != 1);
+                        $pos = $match->to if $bool;
+                        $match;
+                   }
+                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I2090} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 2691 2713
+                 do { while (
+                  (   ( $pad{I2091} = $pos or 1 ) &&
+                     ## <alt>
+                     ## pos: 2692 2706
+                     (
+                         ( $pad{I2092} = $pos or 1 )
+                         && (
+      
+                         ## <group>
+                         ## pos: 2692 2702
+                          (   ( $pad{I2093} = $pos or 1 ) &&
+                           ## <metasyntax>
+                           ## pos: 2693 2701
+                           do {
+                                my $prior = $::_V6_PRIOR_;
+                                my $match =
+                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                $::_V6_PRIOR_ = $prior;
+                                my $bool = (!$match != 1);
+                                $pos = $match->to if $bool;
+                                $match;
+                           }
+                           ## </metasyntax>
+     ||    ( ( $pos = $pad{I2093} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2092} ) or 1 )
+                         &&   
+                         ## <group>
+                         ## pos: 2703 2706
+                          (   ( $pad{I2094} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 2704 2705
+                           ( ( substr( $s, $pos, 1 ) eq '_' )
+                               ? ( $pos += 1 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2094} ) && 0 ) )
+                         ## </group>
+    
+                       )
+                     )
+                     ## </alt>
+     ||    ( ( $pos = $pad{I2091} ) && 0 ) )) {}; $bool = 1 }
+                 ## </quant>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2089} ) or 1 )
+               &&            ## <concat>
+               ## pos: 2714 2738
+               (
+      
+                 ## <group>
+                 ## pos: 2714 2720
+                  (   ( $pad{I2095} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 2716 2718
+                   ( ( substr( $s, $pos, 1 ) eq '[' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2095} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 2720 2735
+                  (   ( $pad{I2096} = $pos or 1 ) &&
+                   ## <metasyntax>
+                   ## pos: 2720 2733
+                   do {
+                        my $prior = $::_V6_PRIOR_;
+                        my $match =
+                               $grammar->char_range( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                        $::_V6_PRIOR_ = $prior;
+                        my $bool = (!$match != 1);
+                        $pos = $match->to if $bool;
+                        $match;
+                   }
+                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I2096} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 2735 2738
+                  (   ( $pad{I2097} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 2735 2737
+                   ( ( substr( $s, $pos, 1 ) eq ']' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2097} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token string_code
+*string_code =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <quant>
+           ## pos: 2788 3072
+           (
+            (   ( $pad{I2098} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2789 3069
+               (
+                   ( $pad{I2099} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2795 2819
+                   (
+      
+                     ## <group>
+                     ## pos: 2795 2800
+                      (   ( $pad{I2100} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2797 2799
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2100} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2800 2819
+                      (   ( $pad{I2101} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2800 2814
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2101} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2820 2848
+                   (
+      
+                     ## <group>
+                     ## pos: 2820 2826
+                      (   ( $pad{I2102} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2822 2824
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2102} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2826 2841
+                      (   ( $pad{I2103} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2826 2836
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2103} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2841 2848
+                      (   ( $pad{I2104} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2841 2843
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2104} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2849 2881
+                   (
+      
+                     ## <group>
+                     ## pos: 2849 2855
+                      (   ( $pad{I2105} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2851 2853
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2105} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2855 2874
+                      (   ( $pad{I2106} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2855 2871
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2106} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2874 2881
+                      (   ( $pad{I2107} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2874 2876
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2107} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2882 2920
+                   (
+      
+                     ## <group>
+                     ## pos: 2882 2888
+                      (   ( $pad{I2108} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2884 2886
+                       ( ( substr( $s, $pos, 1 ) eq '{' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2108} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2888 2913
+                      (   ( $pad{I2109} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 2889 2910
+                       (
+                           ( $pad{I2110} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 2889 2905
+                            (   ( $pad{I2111} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 2890 2904
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2111} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2110} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 2906 2910
+                            (   ( $pad{I2112} = $pos or 1 ) &&
+     1 # null constant
+     ||    ( ( $pos = $pad{I2112} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2109} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2913 2920
+                      (   ( $pad{I2113} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2913 2915
+                       ( ( substr( $s, $pos, 1 ) eq '}' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2113} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2921 2959
+                   (
+      
+                     ## <group>
+                     ## pos: 2921 2927
+                      (   ( $pad{I2114} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2923 2925
+                       ( ( substr( $s, $pos, 1 ) eq '(' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2114} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2927 2952
+                      (   ( $pad{I2115} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 2928 2949
+                       (
+                           ( $pad{I2116} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 2928 2944
+                            (   ( $pad{I2117} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 2929 2943
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2117} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2116} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 2945 2949
+                            (   ( $pad{I2118} = $pos or 1 ) &&
+     1 # null constant
+     ||    ( ( $pos = $pad{I2118} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2115} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2952 2959
+                      (   ( $pad{I2119} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2952 2954
+                       ( ( substr( $s, $pos, 1 ) eq ')' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2119} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2960 2998
+                   (
+      
+                     ## <group>
+                     ## pos: 2960 2966
+                      (   ( $pad{I2120} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2962 2964
+                       ( ( substr( $s, $pos, 1 ) eq '<' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2120} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2966 2991
+                      (   ( $pad{I2121} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 2967 2988
+                       (
+                           ( $pad{I2122} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 2967 2983
+                            (   ( $pad{I2123} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 2968 2982
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2123} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2122} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 2984 2988
+                            (   ( $pad{I2124} = $pos or 1 ) &&
+     1 # null constant
+     ||    ( ( $pos = $pad{I2124} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2121} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2991 2998
+                      (   ( $pad{I2125} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2991 2993
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2125} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2999 3033
+                   (
+      
+                     ## <group>
+                     ## pos: 2999 3026
+                      (   ( $pad{I2126} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 3002 3024
+                       (
+                           ( $pad{I2127} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 3002 3009
+                            (   ( $pad{I2128} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 3003 3008
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2128} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3010 3014
+                            (   ( $pad{I2129} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3011 3013
+                             ( ( substr( $s, $pos, 1 ) eq '>' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2129} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3015 3019
+                            (   ( $pad{I2130} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3016 3018
+                             ( ( substr( $s, $pos, 1 ) eq '=' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2130} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3020 3024
+                            (   ( $pad{I2131} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3021 3023
+                             ( ( substr( $s, $pos, 1 ) eq '-' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2131} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2126} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 3026 3033
+                      (   ( $pad{I2132} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 3026 3028
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2132} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 3034 3046
+                    (   ( $pad{I2133} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 3036 3041
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2133} ) && 0 ) )
+                   ## </group>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 3047 3069
+                    (   ( $pad{I2134} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2134} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2098} ) && 0 ) )
+           && do { while (
+            (   ( $pad{I2098} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 2789 3069
+               (
+                   ( $pad{I2099} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 2795 2819
+                   (
+      
+                     ## <group>
+                     ## pos: 2795 2800
+                      (   ( $pad{I2100} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2797 2799
+                       ( ( substr( $s, $pos, 1 ) eq '\\' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2100} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2800 2819
+                      (   ( $pad{I2101} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 2800 2814
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2101} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2820 2848
+                   (
+      
+                     ## <group>
+                     ## pos: 2820 2826
+                      (   ( $pad{I2102} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2822 2824
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2102} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2826 2841
+                      (   ( $pad{I2103} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2826 2836
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2103} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2841 2848
+                      (   ( $pad{I2104} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2841 2843
+                       ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2104} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2849 2881
+                   (
+      
+                     ## <group>
+                     ## pos: 2849 2855
+                      (   ( $pad{I2105} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2851 2853
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2105} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2855 2874
+                      (   ( $pad{I2106} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 2855 2871
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->double_quoted( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2106} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2874 2881
+                      (   ( $pad{I2107} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2874 2876
+                       ( ( substr( $s, $pos, 1 ) eq '"' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2107} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2882 2920
+                   (
+      
+                     ## <group>
+                     ## pos: 2882 2888
+                      (   ( $pad{I2108} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2884 2886
+                       ( ( substr( $s, $pos, 1 ) eq '{' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2108} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2888 2913
+                      (   ( $pad{I2109} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 2889 2910
+                       (
+                           ( $pad{I2110} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 2889 2905
+                            (   ( $pad{I2111} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 2890 2904
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2111} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2110} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 2906 2910
+                            (   ( $pad{I2112} = $pos or 1 ) &&
+     1 # null constant
+     ||    ( ( $pos = $pad{I2112} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2109} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2913 2920
+                      (   ( $pad{I2113} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2913 2915
+                       ( ( substr( $s, $pos, 1 ) eq '}' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2113} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2921 2959
+                   (
+      
+                     ## <group>
+                     ## pos: 2921 2927
+                      (   ( $pad{I2114} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2923 2925
+                       ( ( substr( $s, $pos, 1 ) eq '(' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2114} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2927 2952
+                      (   ( $pad{I2115} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 2928 2949
+                       (
+                           ( $pad{I2116} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 2928 2944
+                            (   ( $pad{I2117} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 2929 2943
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2117} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2116} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 2945 2949
+                            (   ( $pad{I2118} = $pos or 1 ) &&
+     1 # null constant
+     ||    ( ( $pos = $pad{I2118} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2115} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2952 2959
+                      (   ( $pad{I2119} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2952 2954
+                       ( ( substr( $s, $pos, 1 ) eq ')' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2119} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2960 2998
+                   (
+      
+                     ## <group>
+                     ## pos: 2960 2966
+                      (   ( $pad{I2120} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2962 2964
+                       ( ( substr( $s, $pos, 1 ) eq '<' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2120} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2966 2991
+                      (   ( $pad{I2121} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 2967 2988
+                       (
+                           ( $pad{I2122} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 2967 2983
+                            (   ( $pad{I2123} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 2968 2982
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2123} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2122} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 2984 2988
+                            (   ( $pad{I2124} = $pos or 1 ) &&
+     1 # null constant
+     ||    ( ( $pos = $pad{I2124} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2121} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 2991 2998
+                      (   ( $pad{I2125} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 2991 2993
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2125} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 2999 3033
+                   (
+      
+                     ## <group>
+                     ## pos: 2999 3026
+                      (   ( $pad{I2126} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 3002 3024
+                       (
+                           ( $pad{I2127} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 3002 3009
+                            (   ( $pad{I2128} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 3003 3008
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2128} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3010 3014
+                            (   ( $pad{I2129} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3011 3013
+                             ( ( substr( $s, $pos, 1 ) eq '>' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2129} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3015 3019
+                            (   ( $pad{I2130} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3016 3018
+                             ( ( substr( $s, $pos, 1 ) eq '=' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2130} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3020 3024
+                            (   ( $pad{I2131} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3021 3023
+                             ( ( substr( $s, $pos, 1 ) eq '-' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2131} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2126} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 3026 3033
+                      (   ( $pad{I2132} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 3026 3028
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2132} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 3034 3046
+                    (   ( $pad{I2133} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 3036 3041
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2133} ) && 0 ) )
+                   ## </group>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
+                   &&   
+                   ## <group>
+                   ## pos: 3047 3069
+                    (   ( $pad{I2134} = $pos or 1 ) &&
+                     ## <perl5>
+                     ( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
+                         ? ( $pos += length( $1 ) or 1 )
+                         : 0
+                     )
+                     ## </perl5>
+     ||    ( ( $pos = $pad{I2134} ) && 0 ) )
+                   ## </group>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2098} ) && 0 ) )) {}; $bool = 1 }
+           )
+           ## </quant>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token parsed_code
+*parsed_code =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 3158 3204
+           (
+      
+             ## <group>
+             ## pos: 3158 3177
+              (   ( $pad{I2135} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 3158 3172
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->string_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2135} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 3177 3204
+              (   ( $pad{I2136} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 3177 3203
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return '{' . $_[0] . '}'; }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2136} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token named_capture_body
+*named_capture_body =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 3238 3729
+           (
+               ( $pad{I2137} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 3239 3371
+               (
+      
+                 ## <group>
+                 ## pos: 3239 3244
+                  (   ( $pad{I2138} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 3240 3242
+                   ( ( substr( $s, $pos, 1 ) eq '(' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2138} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3244 3258
+                  (   ( $pad{I2139} = $pos or 1 ) &&
+                   ## <named_capture>
+                   ## pos: 3244 3250
+                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                               $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                   ## </named_capture>
+     ||    ( ( $pos = $pad{I2139} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3258 3262
+                  (   ( $pad{I2140} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 3258 3260
+                   ( ( substr( $s, $pos, 1 ) eq ')' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2140} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3262 3371
+                  (   ( $pad{I2141} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 3262 3366
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { capturing_group => ${ $_[0]->{qw(rule)} },
+                                  _pos => [ $_[0]->from, $_[0]->to ], }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2141} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
+               &&            ## <concat>
+               ## pos: 3372 3419
+               (
+      
+                 ## <group>
+                 ## pos: 3372 3377
+                  (   ( $pad{I2142} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 3373 3375
+                   ( ( substr( $s, $pos, 1 ) eq '[' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2142} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3377 3391
+                  (   ( $pad{I2143} = $pos or 1 ) &&
+                   ## <named_capture>
+                   ## pos: 3377 3383
+                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                               $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                   ## </named_capture>
+     ||    ( ( $pos = $pad{I2143} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3391 3395
+                  (   ( $pad{I2144} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 3391 3393
+                   ( ( substr( $s, $pos, 1 ) eq ']' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2144} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3395 3419
+                  (   ( $pad{I2145} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 3395 3414
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(rule)} } }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2145} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
+               &&            ## <concat>
+               ## pos: 3420 3481
+               (
+      
+                 ## <group>
+                 ## pos: 3420 3425
+                  (   ( $pad{I2146} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 3421 3423
+                   ( ( substr( $s, $pos, 1 ) eq '<' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2146} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3425 3445
+                  (   ( $pad{I2147} = $pos or 1 ) &&
+                   ## <named_capture>
+                   ## pos: 3425 3443
+                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                               $grammar->parse_metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'parse_metasyntax'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                   ## </named_capture>
+     ||    ( ( $pos = $pad{I2147} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3445 3481
+                  (   ( $pad{I2148} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 3445 3476
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(parse_metasyntax)} } }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2148} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
+               &&            ## <concat>
+               ## pos: 3482 3695
+               (
+      
+                 ## <group>
+                 ## pos: 3482 3487
+                  (   ( $pad{I2149} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 3483 3485
+                   ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2149} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3487 3501
+                  (   ( $pad{I2150} = $pos or 1 ) &&
+                   ## <metasyntax>
+                   ## pos: 3487 3497
+                   do {
+                        my $prior = $::_V6_PRIOR_;
+                        my $match =
+                               $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                        $::_V6_PRIOR_ = $prior;
+                        my $bool = (!$match != 1);
+                        $pos = $match->to if $bool;
+                        $match;
+                   }
+                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I2150} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3501 3512
+                  (   ( $pad{I2151} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 3501 3503
+                   ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2151} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 3512 3695
+                  (   ( $pad{I2152} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 3512 3690
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { metasyntax => {
+                            metasyntax => "${$_[0]}",
+                            },
+                       _pos => [ $_[0]->from, $_[0]->to ],
+                    };
+            }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2152} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
+               &&   
+               ## <group>
+               ## pos: 3696 3729
+                (   ( $pad{I2153} = $pos or 1 ) &&
+                 ## <closure>
+                 ## pos: 3697 3728
+                 do { 
+                   local $::_V6_SUCCEED = 1;
+                   $::_V6_MATCH_ = $m;
+                   sub { die "invalid alias syntax"; }->( $m );
+                   1;
+                 }
+                 ## </closure>
+     ||    ( ( $pos = $pad{I2153} ) && 0 ) )
+               ## </group>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token parse_metasyntax
+*parse_metasyntax =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 3765 6638
+           (
+      
+             ## <group>
+             ## pos: 3765 3809
+              (   ( $pad{I2154} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 3765 3804
+               do{
+                    my $from = $pos;
+                    my $bool =                    ## <alt>
+                       ## pos: 3781 3803
+                       (
+                           ( $pad{I2155} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 3781 3786
+                            (   ( $pad{I2156} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3782 3785
+                             ( ( substr( $s, $pos, 1 ) eq '!' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2156} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2155} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3787 3792
+                            (   ( $pad{I2157} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3788 3791
+                             ( ( substr( $s, $pos, 1 ) eq '?' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2157} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2155} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3793 3798
+                            (   ( $pad{I2158} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 3794 3797
+                             ( ( substr( $s, $pos, 1 ) eq '.' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2158} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2155} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 3799 3803
+                            (   ( $pad{I2159} = $pos or 1 ) &&
+     1 # null constant
+     ||    ( ( $pos = $pad{I2159} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+    ;
+                    my $match = Pugs::Runtime::Match->new(
+                        { str => \$s, from => \$from, match => [], named => {}, bool => \1, to => \(0+$pos), capture => undef }
+                    ); $named{'modifier'} = $match;
+                    $bool
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2154} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 3809 6638
+              (   ( $pad{I2160} = $pos or 1 ) &&
+               ## <alt>
+               ## pos: 3810 6636
+               (
+                   ( $pad{I2161} = $pos or 1 )
+                   && (
+                   ## <concat>
+                   ## pos: 3810 4028
+                   (
+      
+                     ## <group>
+                     ## pos: 3810 3824
+                      (   ( $pad{I2162} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 3819 3822
+                       ( ( substr( $s, $pos, 1 ) eq '{' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2162} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 3824 3839
+                      (   ( $pad{I2163} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 3824 3837
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'parsed_code'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2163} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 3839 3852
+                      (   ( $pad{I2164} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 3839 3843
+                       ( ( substr( $s, $pos, 2 ) eq '}>' )
+                           ? ( $pos += 2 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2164} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 3852 4028
+                      (   ( $pad{I2165} = $pos or 1 ) &&
+                       ## <closure>
+                       ## pos: 3852 4023
+                       do {
+                         local $::_V6_SUCCEED = 1;
+                         $::_V6_MATCH_ = $m;
+                         $m->data->{capture} = \( sub { return { closure => {
+                closure  => ${ $_[0]->{qw(parsed_code)} },
+                modifier => ${ $_[0]->{qw(modifier)} },
+            },
+                _pos => [ $_[0]->from - 1, $_[0]->to ],
+            } }->( $m ) ); 
+                         $bool = $::_V6_SUCCEED;
+                         $::_V6_MATCH_ = $m if $bool; 
+                         return $m if $bool; 
+                       }
+                       ## </closure>
+     ||    ( ( $pos = $pad{I2165} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2161} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 4029 4522
+                   (
+      
+                     ## <group>
+                     ## pos: 4029 4059
+                      (   ( $pad{I2166} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 4038 4050
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2166} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+                     ## <quant>
+                     ## pos: 4059 4092
+                     (
+                      (   ( $pad{I2167} = $pos or 1 ) &&
+    
+                         ## <capture>
+                         do{
+                             my $hash = do {
+                               my $bool = 1;
+                               my $from = $pos;
+                               my @match;
+                               my %named;
+                               $bool = 0 unless
+                                 ## <concat>
+                                 ## pos: 4060 4081
+                                 (
+      
+                                   ## <group>
+                                   ## pos: 4060 4068
+                                    (   ( $pad{I2168} = $pos or 1 ) &&
+                                     ## <perl5>
+                                     ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
+                                         ? ( $pos += length( $1 ) or 1 )
+                                         : 0
+                                     )
+                                     ## </perl5>
+     ||    ( ( $pos = $pad{I2168} ) && 0 ) )
+                                   ## </group>
+    
+                                 &&
+      
+                                   ## <group>
+                                   ## pos: 4068 4081
+                                    (   ( $pad{I2169} = $pos or 1 ) &&
+                                     ## <named_capture>
+                                     ## pos: 4068 4080
+                                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                                 $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2169} ) && 0 ) )
+                                   ## </group>
+    
+                                 )
+                                 ## </concat>
+    ;
+                               { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                             };
+                             my $bool = ${$hash->{'bool'}};
+                             if ( $bool ) {
+                                 push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
+                             }
+                             $bool;
+                         }
+                         ## </capture>
+     ||    ( ( $pos = $pad{I2167} ) && 0 ) )
+                     && do { while (
+                      (   ( $pad{I2167} = $pos or 1 ) &&
+    
+                         ## <capture>
+                         do{
+                             my $hash = do {
+                               my $bool = 1;
+                               my $from = $pos;
+                               my @match;
+                               my %named;
+                               $bool = 0 unless
+                                 ## <concat>
+                                 ## pos: 4060 4081
+                                 (
+      
+                                   ## <group>
+                                   ## pos: 4060 4068
+                                    (   ( $pad{I2168} = $pos or 1 ) &&
+                                     ## <perl5>
+                                     ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
+                                         ? ( $pos += length( $1 ) or 1 )
+                                         : 0
+                                     )
+                                     ## </perl5>
+     ||    ( ( $pos = $pad{I2168} ) && 0 ) )
+                                   ## </group>
+    
+                                 &&
+      
+                                   ## <group>
+                                   ## pos: 4068 4081
+                                    (   ( $pad{I2169} = $pos or 1 ) &&
+                                     ## <named_capture>
+                                     ## pos: 4068 4080
+                                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                                 $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2169} ) && 0 ) )
+                                   ## </group>
+    
+                                 )
+                                 ## </concat>
+    ;
+                               { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                             };
+                             my $bool = ${$hash->{'bool'}};
+                             if ( $bool ) {
+                                 push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
+                             }
+                             $bool;
+                         }
+                         ## </capture>
+     ||    ( ( $pos = $pad{I2167} ) && 0 ) )) {}; $bool = 1 }
+                     )
+                     ## </quant>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 4092 4103
+                      (   ( $pad{I2170} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 4092 4094
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2170} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 4103 4522
+                      (   ( $pad{I2171} = $pos or 1 ) &&
+                       ## <closure>
+                       ## pos: 4103 4517
+                       do {
+                         local $::_V6_SUCCEED = 1;
+                         $::_V6_MATCH_ = $m;
+                         $m->data->{capture} = \( sub {
+                if ( ${ $_[0]->{qw(modifier)} } eq '!' ) {
+                  return {
+                    negate => {
+                      char_class => [
+                        '+' . $_[0]->{qw(char_class)},
+                        @{$_[0]->[0]},   # TODO - stringify
+                  ] } }
+                }
+                return {
+                  char_class => [
+                    '+' . $_[0]->{qw(char_class)},
+                    @{$_[0]->[0]},   # TODO - stringify
+                ] }
+            }->( $m ) ); 
+                         $bool = $::_V6_SUCCEED;
+                         $::_V6_MATCH_ = $m if $bool; 
+                         return $m if $bool; 
+                       }
+                       ## </closure>
+     ||    ( ( $pos = $pad{I2171} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2161} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 4523 6411
+                   (
+      
+                     ## <group>
+                     ## pos: 4523 4548
+                      (   ( $pad{I2172} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 4532 4539
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'ident'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2172} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 4548 6411
+                      (   ( $pad{I2173} = $pos or 1 ) &&
+                       ## <alt>
+                       ## pos: 4549 6405
+                       (
+                           ( $pad{I2174} = $pos or 1 )
+                           && (
+                           ## <concat>
+                           ## pos: 4549 5166
+                           (
+      
+                             ## <group>
+                             ## pos: 4549 4566
+                              (   ( $pad{I2175} = $pos or 1 ) &&
+                               ## <metasyntax>
+                               ## pos: 4560 4565
+                               do {
+                                    my $prior = $::_V6_PRIOR_;
+                                    my $match =
+                                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                    $::_V6_PRIOR_ = $prior;
+                                    my $bool = (!$match != 1);
+                                    $pos = $match->to if $bool;
+                                    $match;
+                               }
+                               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2175} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 4566 4573
+                              (   ( $pad{I2176} = $pos or 1 ) &&
+                               ## <named_capture>
+                               ## pos: 4566 4572
+                               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                               ## </named_capture>
+     ||    ( ( $pos = $pad{I2176} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 4573 4586
+                              (   ( $pad{I2177} = $pos or 1 ) &&
+    
+                               ## <constant>
+                               ## pos: 4573 4575
+                               ( ( substr( $s, $pos, 1 ) eq '>' )
+                                   ? ( $pos += 1 or 1 )
+                                   : 0
+                               )
+                               ## </constant>
+     ||    ( ( $pos = $pad{I2177} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 4586 5166
+                              (   ( $pad{I2178} = $pos or 1 ) &&
+                               ## <closure>
+                               ## pos: 4586 5157
+                               do {
+                                 local $::_V6_SUCCEED = 1;
+                                 $::_V6_MATCH_ = $m;
+                                 $m->data->{capture} = \( sub {
+                if  ( ${ $_[0]->{qw(ident)} } eq 'before'
+                   || ${ $_[0]->{qw(ident)} } eq 'after'
+                    ) {
+                    return { ${ $_[0]->{qw(ident)} } => {
+                        rule => ${ $_[0]->{qw(rule)} }, modifier => ${ $_[0]->{qw(modifier)} },
+                         }, _pos => [ $_[0]->from - 1, $_[0]->to ], }
+                }
+                return { metasyntax => {
+                            metasyntax => ${ $_[0]->{qw(ident)} },
+                            rule       => ${ $_[0]->{qw(rule)} },
+                            modifier   => ${ $_[0]->{qw(modifier)} },
+                        },
+                        _pos => [ $_[0]->from - 1, $_[0]->to ],
+                    }
+              }->( $m ) ); 
+                                 $bool = $::_V6_SUCCEED;
+                                 $::_V6_MATCH_ = $m if $bool; 
+                                 return $m if $bool; 
+                               }
+                               ## </closure>
+     ||    ( ( $pos = $pad{I2178} ) && 0 ) )
+                             ## </group>
+    
+                           )
+                           ## </concat>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2174} ) or 1 )
+                           &&                        ## <concat>
+                           ## pos: 5167 6146
+                           (
+      
+                             ## <group>
+                             ## pos: 5167 5182
+                              (   ( $pad{I2179} = $pos or 1 ) &&
+    
+                               ## <constant>
+                               ## pos: 5178 5181
+                               ( ( substr( $s, $pos, 1 ) eq ':' )
+                                   ? ( $pos += 1 or 1 )
+                                   : 0
+                               )
+                               ## </constant>
+     ||    ( ( $pos = $pad{I2179} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+                             ## <quant>
+                             ## pos: 5182 5199
+                             (
+                              (   ( $pad{I2180} = $pos or 1 ) &&
+                                 ## <metasyntax>
+                                 ## pos: 5182 5187
+                                 do {
+                                      my $prior = $::_V6_PRIOR_;
+                                      my $match =
+                                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                      $::_V6_PRIOR_ = $prior;
+                                      my $bool = (!$match != 1);
+                                      $pos = $match->to if $bool;
+                                      $match;
+                                 }
+                                 ## </metasyntax>
+     ||    ( ( $pos = $pad{I2180} ) && 0 ) )
+                             || ( $bool = 1 )
+                             )
+                             ## </quant>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 5199 5369
+                              (   ( $pad{I2181} = $pos or 1 ) &&
+                               ## <named_capture>
+                               ## pos: 5199 5358
+                               do{
+                    my $from = $pos;
+                    my $bool =                                    ## <quant>
+                                       ## pos: 5210 5357
+                                       do { while (
+                                        (   ( $pad{I2182} = $pos or 1 ) &&
+                                           ## <alt>
+                                           ## pos: 5224 5344
+                                           (
+                                               ( $pad{I2183} = $pos or 1 )
+                                               && (
+                                               ## <concat>
+                                               ## pos: 5238 5270
+                                               (
+      
+                                                 ## <group>
+                                                 ## pos: 5238 5243
+                                                  (   ( $pad{I2184} = $pos or 1 ) &&
+    
+                                                   ## <constant>
+                                                   ## pos: 5240 5242
+                                                   ( ( substr( $s, $pos, 1 ) eq '\\' )
+                                                       ? ( $pos += 1 or 1 )
+                                                       : 0
+                                                   )
+                                                   ## </constant>
+     ||    ( ( $pos = $pad{I2184} ) && 0 ) )
+                                                 ## </group>
+    
+                                               &&
+      
+                                                 ## <group>
+                                                 ## pos: 5243 5270
+                                                  (   ( $pad{I2185} = $pos or 1 ) &&
+                                                   ## <named_capture>
+                                                   ## pos: 5243 5257
+                                                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                                               $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'special_char'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                                                   ## </named_capture>
+     ||    ( ( $pos = $pad{I2185} ) && 0 ) )
+                                                 ## </group>
+    
+                                               )
+                                               ## </concat>
+    
+                                               )
+                                             || (
+                                               ( ( $bool = 1 ) && ( $pos = $pad{I2183} ) or 1 )
+                                               &&   
+                                               ## <group>
+                                               ## pos: 5271 5319
+                                                (   ( $pad{I2186} = $pos or 1 ) &&
+                                                ## <metasyntax>
+                                                 ## pos: 5273 5306
+                                                 do{
+                    my $match = 
+              ## <variable>
+              ## pos: 5273 5306
+              do {
+                our $I2187;
+                our $I2187_sizes;
+                unless ( $I2187 ) {
+                    my $hash = \%Pugs::Grammar::Rule::variables;
+                    my %sizes = map { length($_) => 1 } keys %$hash;
+                    $I2187_sizes = [ sort { $b <=> $a } keys %sizes ];
+                    $I2187 = $hash;
+                }
+                my $match = 0;
+                my $key;
+                for ( @$I2187_sizes ) {
+                    $key = ( $pos <= length( $s )
+                                ? substr( $s, $pos, $_ )
+                                : '' );
+                    if ( exists $I2187->{$key} ) {
+                        #$named{KEY} = $key;
+                        #$::_V6_MATCH_ = $m;
+                        #print "m: ", Dumper( $::_V6_MATCH_->data )
+                        #    if ( $key eq 'until' );
+                        $match = Pugs::Runtime::Regex::preprocess_hash( $I2187, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
+                        last if $match;
+                    }
+                }
+                if ( $match ) {
+                    $pos = $match->to;
+                    #print "match: $key at $pos = ", Dumper( $match->data );
+                    $bool = 1;
+                }; # else { $bool = 0 }
+                $match;
+              }
+              ## </variable>
+    ;
+                    if ( $match ) { push @{$named{'Pugs::Grammar::Rule::variables'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                                                ## </metasyntax>
+     ||    ( ( $pos = $pad{I2186} ) && 0 ) )
+                                               ## </group>
+    
+                                               )
+                                             || (
+                                               ( ( $bool = 1 ) && ( $pos = $pad{I2183} ) or 1 )
+                                               &&   
+                                               ## <group>
+                                               ## pos: 5320 5344
+                                                (   ( $pad{I2188} = $pos or 1 ) &&
+                                                 ## <perl5>
+                                                 ( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
+                                                     ? ( $pos += length( $1 ) or 1 )
+                                                     : 0
+                                                 )
+                                                 ## </perl5>
+     ||    ( ( $pos = $pad{I2188} ) && 0 ) )
+                                               ## </group>
+    
+                                             )
+                                           )
+                                           ## </alt>
+     ||    ( ( $pos = $pad{I2182} ) && 0 ) )) {}; $bool = 1 }
+                                       ## </quant>
+    ;
+                    my $match = Pugs::Runtime::Match->new(
+                        { str => \$s, from => \$from, match => [], named => {}, bool => \1, to => \(0+$pos), capture => undef }
+                    ); $named{'str'} = $match;
+                    $bool
+                }
+                               ## </named_capture>
+     ||    ( ( $pos = $pad{I2181} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 5369 5382
+                              (   ( $pad{I2189} = $pos or 1 ) &&
+    
+                               ## <constant>
+                               ## pos: 5369 5371
+                               ( ( substr( $s, $pos, 1 ) eq '>' )
+                                   ? ( $pos += 1 or 1 )
+                                   : 0
+                               )
+                               ## </constant>
+     ||    ( ( $pos = $pad{I2189} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 5382 6146
+                              (   ( $pad{I2190} = $pos or 1 ) &&
+                               ## <closure>
+                               ## pos: 5382 6137
+                               do {
+                                 local $::_V6_SUCCEED = 1;
+                                 $::_V6_MATCH_ = $m;
+                                 $m->data->{capture} = \( sub {
+                if  ( ${ $_[0]->{qw(ident)} } eq 'before'
+                   || ${ $_[0]->{qw(ident)} } eq 'after'
+                    ) {
+                    return { ${ $_[0]->{qw(ident)} } => {
+                        rule     => { metasyntax => {
+                                    metasyntax => '\'' . ${ $_[0]->{qw(str)} } . '\'',
+                                },
+                            _pos => [ $_[0]->{qw(str)}->from, $_[0]->{qw(str)}->to ],                   },
+                        modifier => ${ $_[0]->{qw(modifier)} },
+                        _pos => [ $_[0]->from - 1, $_[0]->to ],
+                    } }
+                }
+                return { metasyntax => {
+                    metasyntax => ${ $_[0]->{qw(ident)} },
+                    string   => ${ $_[0]->{qw(str)} },
+                    modifier => ${ $_[0]->{qw(modifier)} },
+                },
+                    _pos => [ $_[0]->from - 1, $_[0]->to ],
+                }
+              }->( $m ) ); 
+                                 $bool = $::_V6_SUCCEED;
+                                 $::_V6_MATCH_ = $m if $bool; 
+                                 return $m if $bool; 
+                               }
+                               ## </closure>
+     ||    ( ( $pos = $pad{I2190} ) && 0 ) )
+                             ## </group>
+    
+                           )
+                           ## </concat>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2174} ) or 1 )
+                           &&                        ## <concat>
+                           ## pos: 6147 6405
+                           (
+      
+                             ## <group>
+                             ## pos: 6147 6162
+                              (   ( $pad{I2191} = $pos or 1 ) &&
+    
+                               ## <constant>
+                               ## pos: 6158 6160
+                               ( ( substr( $s, $pos, 1 ) eq '(' )
+                                   ? ( $pos += 1 or 1 )
+                                   : 0
+                               )
+                               ## </constant>
+     ||    ( ( $pos = $pad{I2191} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 6162 6177
+                              (   ( $pad{I2192} = $pos or 1 ) &&
+                               ## <named_capture>
+                               ## pos: 6162 6175
+                               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                           $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'parsed_code'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                               ## </named_capture>
+     ||    ( ( $pos = $pad{I2192} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 6177 6180
+                              (   ( $pad{I2193} = $pos or 1 ) &&
+    
+                               ## <constant>
+                               ## pos: 6177 6179
+                               ( ( substr( $s, $pos, 1 ) eq ')' )
+                                   ? ( $pos += 1 or 1 )
+                                   : 0
+                               )
+                               ## </constant>
+     ||    ( ( $pos = $pad{I2193} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 6180 6193
+                              (   ( $pad{I2194} = $pos or 1 ) &&
+    
+                               ## <constant>
+                               ## pos: 6180 6182
+                               ( ( substr( $s, $pos, 1 ) eq '>' )
+                                   ? ( $pos += 1 or 1 )
+                                   : 0
+                               )
+                               ## </constant>
+     ||    ( ( $pos = $pad{I2194} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 6193 6405
+                              (   ( $pad{I2195} = $pos or 1 ) &&
+                               ## <closure>
+                               ## pos: 6193 6396
+                               do {
+                                 local $::_V6_SUCCEED = 1;
+                                 $::_V6_MATCH_ = $m;
+                                 $m->data->{capture} = \( sub { return { call => {
+                  method   => ${ $_[0]->{qw(ident)} },
+                  params   => ${ $_[0]->{qw(parsed_code)} },
+                  modifier => ${ $_[0]->{qw(modifier)} },
+              },
+                  _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
+                                 $bool = $::_V6_SUCCEED;
+                                 $::_V6_MATCH_ = $m if $bool; 
+                                 return $m if $bool; 
+                               }
+                               ## </closure>
+     ||    ( ( $pos = $pad{I2195} ) && 0 ) )
+                             ## </group>
+    
+                           )
+                           ## </concat>
+    
+                         )
+                       )
+                       ## </alt>
+     ||    ( ( $pos = $pad{I2173} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                   )
+                 || (
+                   ( ( $bool = 1 ) && ( $pos = $pad{I2161} ) or 1 )
+                   &&                ## <concat>
+                   ## pos: 6412 6636
+                   (
+      
+                     ## <group>
+                     ## pos: 6412 6435
+                      (   ( $pad{I2196} = $pos or 1 ) &&
+                       ## <named_capture>
+                       ## pos: 6421 6433
+                       do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                   $grammar->metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'metasyntax'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                       ## </named_capture>
+     ||    ( ( $pos = $pad{I2196} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 6435 6446
+                      (   ( $pad{I2197} = $pos or 1 ) &&
+    
+                       ## <constant>
+                       ## pos: 6435 6437
+                       ( ( substr( $s, $pos, 1 ) eq '>' )
+                           ? ( $pos += 1 or 1 )
+                           : 0
+                       )
+                       ## </constant>
+     ||    ( ( $pos = $pad{I2197} ) && 0 ) )
+                     ## </group>
+    
+                   &&
+      
+                     ## <group>
+                     ## pos: 6446 6636
+                      (   ( $pad{I2198} = $pos or 1 ) &&
+                       ## <closure>
+                       ## pos: 6446 6631
+                       do {
+                         local $::_V6_SUCCEED = 1;
+                         $::_V6_MATCH_ = $m;
+                         $m->data->{capture} = \( sub { return { metasyntax => {
+                  metasyntax => "${ $_[0]->{qw(metasyntax)} }",
+                  modifier   => ${ $_[0]->{qw(modifier)} },
+            },
+                  _pos => [ $_[0]->from - 1, $_[0]->to ],
+            } }->( $m ) ); 
+                         $bool = $::_V6_SUCCEED;
+                         $::_V6_MATCH_ = $m if $bool; 
+                         return $m if $bool; 
+                       }
+                       ## </closure>
+     ||    ( ( $pos = $pad{I2198} ) && 0 ) )
+                     ## </group>
+    
+                   )
+                   ## </concat>
+    
+                 )
+               )
+               ## </alt>
+     ||    ( ( $pos = $pad{I2160} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token var1
+*var1 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 6748 6850
+           (
+      
+             ## <group>
+             ## pos: 6748 6756
+              (   ( $pad{I2199} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 6748 6755
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'ident'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2199} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 6756 6767
+              (   ( $pad{I2200} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 6756 6758
+               ( ( substr( $s, $pos, 1 ) eq '>' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2200} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 6767 6850
+              (   ( $pad{I2201} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 6767 6849
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { match_variable => '$' . $_[0]->{ident}, _pos => [$_[0]->from - 2, $_[0]->to], }; }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2201} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $variables{'$<'} = sub { var1($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token var2
+*var2 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 6942 7166
+           (
+               ( $pad{I2202} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 6942 7040
+               (
+                 ## <quant>
+                 ## pos: 6942 6960
+                 (
+                  (   ( $pad{I2203} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 6942 6950
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2203} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2203} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 6942 6950
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2203} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 6960 7040
+                  (   ( $pad{I2204} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 6960 7035
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { match_variable => '$' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2204} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2202} ) or 1 )
+               &&            ## <concat>
+               ## pos: 7041 7166
+               (
+                 ## <quant>
+                 ## pos: 7041 7062
+                 (
+                  (   ( $pad{I2205} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 7050 7052
+                     ( ( substr( $s, $pos, 1 ) eq '^' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2205} ) && 0 ) )
+                 || ( $bool = 1 )
+                 )
+                 ## </quant>
+    
+               &&
+                 ## <quant>
+                 ## pos: 7062 7096
+                 (
+                  (   ( $pad{I2206} = $pos or 1 ) &&
+                     ## <alt>
+                     ## pos: 7063 7085
+                     (
+                         ( $pad{I2207} = $pos or 1 )
+                         && (
+      
+                         ## <group>
+                         ## pos: 7063 7073
+                          (   ( $pad{I2208} = $pos or 1 ) &&
+                           ## <metasyntax>
+                           ## pos: 7064 7072
+                           do {
+                                my $prior = $::_V6_PRIOR_;
+                                my $match =
+                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                $::_V6_PRIOR_ = $prior;
+                                my $bool = (!$match != 1);
+                                $pos = $match->to if $bool;
+                                $match;
+                           }
+                           ## </metasyntax>
+     ||    ( ( $pos = $pad{I2208} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
+                         &&   
+                         ## <group>
+                         ## pos: 7074 7077
+                          (   ( $pad{I2209} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 7075 7076
+                           ( ( substr( $s, $pos, 1 ) eq '_' )
+                               ? ( $pos += 1 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2209} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
+                         &&                      ## <concat>
+                         ## pos: 7078 7085
+                         (
+      
+                           ## <group>
+                           ## pos: 7078 7082
+                            (   ( $pad{I2210} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7079 7081
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2210} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 7082 7085
+                            (   ( $pad{I2211} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7082 7084
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2211} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    
+                       )
+                     )
+                     ## </alt>
+     ||    ( ( $pos = $pad{I2206} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2206} = $pos or 1 ) &&
+                     ## <alt>
+                     ## pos: 7063 7085
+                     (
+                         ( $pad{I2207} = $pos or 1 )
+                         && (
+      
+                         ## <group>
+                         ## pos: 7063 7073
+                          (   ( $pad{I2208} = $pos or 1 ) &&
+                           ## <metasyntax>
+                           ## pos: 7064 7072
+                           do {
+                                my $prior = $::_V6_PRIOR_;
+                                my $match =
+                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                $::_V6_PRIOR_ = $prior;
+                                my $bool = (!$match != 1);
+                                $pos = $match->to if $bool;
+                                $match;
+                           }
+                           ## </metasyntax>
+     ||    ( ( $pos = $pad{I2208} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
+                         &&   
+                         ## <group>
+                         ## pos: 7074 7077
+                          (   ( $pad{I2209} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 7075 7076
+                           ( ( substr( $s, $pos, 1 ) eq '_' )
+                               ? ( $pos += 1 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2209} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
+                         &&                      ## <concat>
+                         ## pos: 7078 7085
+                         (
+      
+                           ## <group>
+                           ## pos: 7078 7082
+                            (   ( $pad{I2210} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7079 7081
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2210} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 7082 7085
+                            (   ( $pad{I2211} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7082 7084
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2211} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    
+                       )
+                     )
+                     ## </alt>
+     ||    ( ( $pos = $pad{I2206} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 7096 7166
+                  (   ( $pad{I2212} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 7096 7165
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { variable => '$' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2212} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $variables{'$'} = sub { var2($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token var3
+*var3 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 7257 7479
+           (
+               ( $pad{I2213} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 7257 7354
+               (
+                 ## <quant>
+                 ## pos: 7257 7275
+                 (
+                  (   ( $pad{I2214} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 7257 7265
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2214} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2214} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 7257 7265
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2214} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 7275 7354
+                  (   ( $pad{I2215} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 7275 7349
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { match_variable => '@' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2215} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2213} ) or 1 )
+               &&            ## <concat>
+               ## pos: 7355 7479
+               (
+                 ## <quant>
+                 ## pos: 7355 7376
+                 (
+                  (   ( $pad{I2216} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 7364 7366
+                     ( ( substr( $s, $pos, 1 ) eq '^' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2216} ) && 0 ) )
+                 || ( $bool = 1 )
+                 )
+                 ## </quant>
+    
+               &&
+                 ## <quant>
+                 ## pos: 7376 7410
+                 (
+                  (   ( $pad{I2217} = $pos or 1 ) &&
+                     ## <alt>
+                     ## pos: 7377 7399
+                     (
+                         ( $pad{I2218} = $pos or 1 )
+                         && (
+      
+                         ## <group>
+                         ## pos: 7377 7387
+                          (   ( $pad{I2219} = $pos or 1 ) &&
+                           ## <metasyntax>
+                           ## pos: 7378 7386
+                           do {
+                                my $prior = $::_V6_PRIOR_;
+                                my $match =
+                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                $::_V6_PRIOR_ = $prior;
+                                my $bool = (!$match != 1);
+                                $pos = $match->to if $bool;
+                                $match;
+                           }
+                           ## </metasyntax>
+     ||    ( ( $pos = $pad{I2219} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
+                         &&   
+                         ## <group>
+                         ## pos: 7388 7391
+                          (   ( $pad{I2220} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 7389 7390
+                           ( ( substr( $s, $pos, 1 ) eq '_' )
+                               ? ( $pos += 1 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2220} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
+                         &&                      ## <concat>
+                         ## pos: 7392 7399
+                         (
+      
+                           ## <group>
+                           ## pos: 7392 7396
+                            (   ( $pad{I2221} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7393 7395
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2221} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 7396 7399
+                            (   ( $pad{I2222} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7396 7398
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2222} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    
+                       )
+                     )
+                     ## </alt>
+     ||    ( ( $pos = $pad{I2217} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2217} = $pos or 1 ) &&
+                     ## <alt>
+                     ## pos: 7377 7399
+                     (
+                         ( $pad{I2218} = $pos or 1 )
+                         && (
+      
+                         ## <group>
+                         ## pos: 7377 7387
+                          (   ( $pad{I2219} = $pos or 1 ) &&
+                           ## <metasyntax>
+                           ## pos: 7378 7386
+                           do {
+                                my $prior = $::_V6_PRIOR_;
+                                my $match =
+                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                $::_V6_PRIOR_ = $prior;
+                                my $bool = (!$match != 1);
+                                $pos = $match->to if $bool;
+                                $match;
+                           }
+                           ## </metasyntax>
+     ||    ( ( $pos = $pad{I2219} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
+                         &&   
+                         ## <group>
+                         ## pos: 7388 7391
+                          (   ( $pad{I2220} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 7389 7390
+                           ( ( substr( $s, $pos, 1 ) eq '_' )
+                               ? ( $pos += 1 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2220} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
+                         &&                      ## <concat>
+                         ## pos: 7392 7399
+                         (
+      
+                           ## <group>
+                           ## pos: 7392 7396
+                            (   ( $pad{I2221} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7393 7395
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2221} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 7396 7399
+                            (   ( $pad{I2222} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7396 7398
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2222} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    
+                       )
+                     )
+                     ## </alt>
+     ||    ( ( $pos = $pad{I2217} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 7410 7479
+                  (   ( $pad{I2223} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 7410 7478
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { variable => '@' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2223} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $variables{'@'} = sub { var3($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token var4
+*var4 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 7570 7790
+           (
+               ( $pad{I2224} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 7570 7666
+               (
+                 ## <quant>
+                 ## pos: 7570 7588
+                 (
+                  (   ( $pad{I2225} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 7570 7578
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2225} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2225} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 7570 7578
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->digit( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2225} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 7588 7666
+                  (   ( $pad{I2226} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 7588 7661
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { match_variable => '%' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] } }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2226} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2224} ) or 1 )
+               &&            ## <concat>
+               ## pos: 7667 7790
+               (
+                 ## <quant>
+                 ## pos: 7667 7688
+                 (
+                  (   ( $pad{I2227} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 7676 7678
+                     ( ( substr( $s, $pos, 1 ) eq '^' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2227} ) && 0 ) )
+                 || ( $bool = 1 )
+                 )
+                 ## </quant>
+    
+               &&
+                 ## <quant>
+                 ## pos: 7688 7722
+                 (
+                  (   ( $pad{I2228} = $pos or 1 ) &&
+                     ## <alt>
+                     ## pos: 7689 7711
+                     (
+                         ( $pad{I2229} = $pos or 1 )
+                         && (
+      
+                         ## <group>
+                         ## pos: 7689 7699
+                          (   ( $pad{I2230} = $pos or 1 ) &&
+                           ## <metasyntax>
+                           ## pos: 7690 7698
+                           do {
+                                my $prior = $::_V6_PRIOR_;
+                                my $match =
+                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                $::_V6_PRIOR_ = $prior;
+                                my $bool = (!$match != 1);
+                                $pos = $match->to if $bool;
+                                $match;
+                           }
+                           ## </metasyntax>
+     ||    ( ( $pos = $pad{I2230} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
+                         &&   
+                         ## <group>
+                         ## pos: 7700 7703
+                          (   ( $pad{I2231} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 7701 7702
+                           ( ( substr( $s, $pos, 1 ) eq '_' )
+                               ? ( $pos += 1 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2231} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
+                         &&                      ## <concat>
+                         ## pos: 7704 7711
+                         (
+      
+                           ## <group>
+                           ## pos: 7704 7708
+                            (   ( $pad{I2232} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7705 7707
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2232} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 7708 7711
+                            (   ( $pad{I2233} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7708 7710
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2233} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    
+                       )
+                     )
+                     ## </alt>
+     ||    ( ( $pos = $pad{I2228} ) && 0 ) )
+                 && do { while (
+                  (   ( $pad{I2228} = $pos or 1 ) &&
+                     ## <alt>
+                     ## pos: 7689 7711
+                     (
+                         ( $pad{I2229} = $pos or 1 )
+                         && (
+      
+                         ## <group>
+                         ## pos: 7689 7699
+                          (   ( $pad{I2230} = $pos or 1 ) &&
+                           ## <metasyntax>
+                           ## pos: 7690 7698
+                           do {
+                                my $prior = $::_V6_PRIOR_;
+                                my $match =
+                                       $grammar->alnum( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                $::_V6_PRIOR_ = $prior;
+                                my $bool = (!$match != 1);
+                                $pos = $match->to if $bool;
+                                $match;
+                           }
+                           ## </metasyntax>
+     ||    ( ( $pos = $pad{I2230} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
+                         &&   
+                         ## <group>
+                         ## pos: 7700 7703
+                          (   ( $pad{I2231} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 7701 7702
+                           ( ( substr( $s, $pos, 1 ) eq '_' )
+                               ? ( $pos += 1 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2231} ) && 0 ) )
+                         ## </group>
+    
+                         )
+                       || (
+                         ( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
+                         &&                      ## <concat>
+                         ## pos: 7704 7711
+                         (
+      
+                           ## <group>
+                           ## pos: 7704 7708
+                            (   ( $pad{I2232} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7705 7707
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2232} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 7708 7711
+                            (   ( $pad{I2233} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 7708 7710
+                             ( ( substr( $s, $pos, 1 ) eq ':' )
+                                 ? ( $pos += 1 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2233} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    
+                       )
+                     )
+                     ## </alt>
+     ||    ( ( $pos = $pad{I2228} ) && 0 ) )) {}; $bool = 1 }
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 7722 7790
+                  (   ( $pad{I2234} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 7722 7789
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { variable => '%' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] } }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2234} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $variables{'%'} = sub { var4($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term1
+*term1 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 7991 8141
+            (   ( $pad{I2235} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 7991 8140
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { metasyntax => {
+                            metasyntax => 'null',
+            },
+                            _pos => [ $_[0]->from, $_[0]->to ],
+            } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2235} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'{*}'} = sub { term1($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term2
+*term2 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 8237 8452
+           (
+      
+             ## <group>
+             ## pos: 8237 8252
+              (   ( $pad{I2236} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 8237 8247
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->literal( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2236} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 8252 8263
+              (   ( $pad{I2237} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 8252 8254
+               ( ( substr( $s, $pos, 1 ) eq chr(39) )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2237} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 8263 8452
+              (   ( $pad{I2238} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 8263 8451
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                    metasyntax => {
+                        metasyntax => '\'' . ${$_[0]},
+                    },
+                        _pos => [ $_[0]->from - 1, $_[0]->to ],
+                };
+            }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2238} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'\''} = sub { term2($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term3
+*term3 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 8547 8663
+           (
+      
+             ## <group>
+             ## pos: 8547 8554
+              (   ( $pad{I2239} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 8547 8553
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2239} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 8554 8565
+              (   ( $pad{I2240} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 8554 8556
+               ( ( substr( $s, $pos, 1 ) eq ')' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2240} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 8565 8663
+              (   ( $pad{I2241} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 8565 8662
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { capturing_group => ${ $_[0]->{qw(rule)} },
+                       _pos => [ $_[0]->from - 1, $_[0]->to ], }; }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2241} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'('} = sub { term3($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term4
+*term4 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 8757 8878
+           (
+      
+             ## <group>
+             ## pos: 8757 8765
+              (   ( $pad{I2242} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 8757 8763
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2242} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 8765 8778
+              (   ( $pad{I2243} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 8765 8769
+               ( ( substr( $s, $pos, 2 ) eq ')>' )
+                   ? ( $pos += 2 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2243} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 8778 8878
+              (   ( $pad{I2244} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 8778 8877
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { capture_as_result => ${ $_[0]->{qw(rule)} },
+                       _pos => [ $_[0]->from - 2, $_[0]->to ], }; }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2244} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'<('} = sub { term4($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term5
+*term5 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 8973 9233
+           (
+      
+             ## <group>
+             ## pos: 8973 8994
+              (   ( $pad{I2245} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 8973 8985
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2245} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 8994 9027
+             do { while (
+              (   ( $pad{I2246} = $pos or 1 ) &&
+    
+                 ## <capture>
+                 do{
+                     my $hash = do {
+                       my $bool = 1;
+                       my $from = $pos;
+                       my @match;
+                       my %named;
+                       $bool = 0 unless
+                         ## <concat>
+                         ## pos: 8995 9016
+                         (
+      
+                           ## <group>
+                           ## pos: 8995 9003
+                            (   ( $pad{I2247} = $pos or 1 ) &&
+                             ## <perl5>
+                             ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
+                                 ? ( $pos += length( $1 ) or 1 )
+                                 : 0
+                             )
+                             ## </perl5>
+     ||    ( ( $pos = $pad{I2247} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 9003 9016
+                            (   ( $pad{I2248} = $pos or 1 ) &&
+                             ## <named_capture>
+                             ## pos: 9003 9015
+                             do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                         $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                             ## </named_capture>
+     ||    ( ( $pos = $pad{I2248} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    ;
+                       { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                     };
+                     my $bool = ${$hash->{'bool'}};
+                     if ( $bool ) {
+                         push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
+                     }
+                     $bool;
+                 }
+                 ## </capture>
+     ||    ( ( $pos = $pad{I2246} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 9027 9038
+              (   ( $pad{I2249} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 9027 9029
+               ( ( substr( $s, $pos, 1 ) eq '>' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2249} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 9038 9233
+              (   ( $pad{I2250} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 9038 9232
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                _pos => [ $_[0]->from - 2, $_[0]->to ],
+                char_class => [
+                    '+' . $_[0]->{qw(char_class)},
+                    @{$_[0]->[0]},   # TODO - stringify
+                ] }
+            }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2250} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'<+'} = sub { term5($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term6
+*term6 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 9328 9588
+           (
+      
+             ## <group>
+             ## pos: 9328 9349
+              (   ( $pad{I2251} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 9328 9340
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2251} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 9349 9382
+             do { while (
+              (   ( $pad{I2252} = $pos or 1 ) &&
+    
+                 ## <capture>
+                 do{
+                     my $hash = do {
+                       my $bool = 1;
+                       my $from = $pos;
+                       my @match;
+                       my %named;
+                       $bool = 0 unless
+                         ## <concat>
+                         ## pos: 9350 9371
+                         (
+      
+                           ## <group>
+                           ## pos: 9350 9358
+                            (   ( $pad{I2253} = $pos or 1 ) &&
+                             ## <perl5>
+                             ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
+                                 ? ( $pos += length( $1 ) or 1 )
+                                 : 0
+                             )
+                             ## </perl5>
+     ||    ( ( $pos = $pad{I2253} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 9358 9371
+                            (   ( $pad{I2254} = $pos or 1 ) &&
+                             ## <named_capture>
+                             ## pos: 9358 9370
+                             do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                         $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                             ## </named_capture>
+     ||    ( ( $pos = $pad{I2254} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    ;
+                       { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                     };
+                     my $bool = ${$hash->{'bool'}};
+                     if ( $bool ) {
+                         push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
+                     }
+                     $bool;
+                 }
+                 ## </capture>
+     ||    ( ( $pos = $pad{I2252} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 9382 9393
+              (   ( $pad{I2255} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 9382 9384
+               ( ( substr( $s, $pos, 1 ) eq '>' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2255} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 9393 9588
+              (   ( $pad{I2256} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 9393 9587
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                _pos => [ $_[0]->from - 2, $_[0]->to ],
+                char_class => [
+                    '-' . $_[0]->{qw(char_class)},
+                    @{$_[0]->[0]},   # TODO - stringify
+                ] }
+            }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2256} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'<-'} = sub { term6($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term7
+*term7 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 9683 9954
+           (
+      
+             ## <group>
+             ## pos: 9683 9697
+              (   ( $pad{I2257} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 9683 9695
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->char_range( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_range'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2257} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 9697 9708
+              (   ( $pad{I2258} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 9697 9699
+               ( ( substr( $s, $pos, 1 ) eq ']' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2258} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 9708 9741
+             do { while (
+              (   ( $pad{I2259} = $pos or 1 ) &&
+    
+                 ## <capture>
+                 do{
+                     my $hash = do {
+                       my $bool = 1;
+                       my $from = $pos;
+                       my @match;
+                       my %named;
+                       $bool = 0 unless
+                         ## <concat>
+                         ## pos: 9709 9730
+                         (
+      
+                           ## <group>
+                           ## pos: 9709 9717
+                            (   ( $pad{I2260} = $pos or 1 ) &&
+                             ## <perl5>
+                             ( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
+                                 ? ( $pos += length( $1 ) or 1 )
+                                 : 0
+                             )
+                             ## </perl5>
+     ||    ( ( $pos = $pad{I2260} ) && 0 ) )
+                           ## </group>
+    
+                         &&
+      
+                           ## <group>
+                           ## pos: 9717 9730
+                            (   ( $pad{I2261} = $pos or 1 ) &&
+                             ## <named_capture>
+                             ## pos: 9717 9729
+                             do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                         $grammar->char_class( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'char_class'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                             ## </named_capture>
+     ||    ( ( $pos = $pad{I2261} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                         ## </concat>
+    ;
+                       { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                     };
+                     my $bool = ${$hash->{'bool'}};
+                     if ( $bool ) {
+                         push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
+                     }
+                     $bool;
+                 }
+                 ## </capture>
+     ||    ( ( $pos = $pad{I2259} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 9741 9752
+              (   ( $pad{I2262} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 9741 9743
+               ( ( substr( $s, $pos, 1 ) eq '>' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2262} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 9752 9954
+              (   ( $pad{I2263} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 9752 9953
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                _pos => [ $_[0]->from - 2, $_[0]->to ],
+                char_class => [
+                    '+[' . $_[0]->{qw(char_range)} . ']',
+                    @{$_[0]->[0]},   # TODO - stringify
+                ] }
+            }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2263} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'<['} = sub { term7($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term8
+*term8 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 10049 10108
+           (
+      
+             ## <group>
+             ## pos: 10049 10076
+              (   ( $pad{I2264} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 10049 10067
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->parse_metasyntax( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'parse_metasyntax'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2264} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 10076 10108
+              (   ( $pad{I2265} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 10076 10107
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return ${ $_[0]->{qw(parse_metasyntax)} } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2265} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'<'} = sub { term8($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term9
+*term9 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 10202 10392
+           (
+      
+             ## <group>
+             ## pos: 10202 10217
+              (   ( $pad{I2266} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 10202 10215
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'parsed_code'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2266} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 10217 10228
+              (   ( $pad{I2267} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 10217 10219
+               ( ( substr( $s, $pos, 1 ) eq '}' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2267} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 10228 10392
+              (   ( $pad{I2268} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 10228 10391
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { closure => {
+                closure => ${ $_[0]->{qw(parsed_code)} },
+                modifier => 'plain',
+            },
+                _pos => [$_[0]->from - 1, $_[0]->to],
+            } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2268} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'{'} = sub { term9($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term10
+*term10 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 10487 10538
+           (
+      
+             ## <group>
+             ## pos: 10487 10510
+              (   ( $pad{I2269} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 10487 10501
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->special_char( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'special_char'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2269} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 10510 10538
+              (   ( $pad{I2270} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 10510 10537
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return ${ $_[0]->{qw(special_char)} } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2270} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'\\'} = sub { term10($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term11
+*term11 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 10635 10694
+            (   ( $pad{I2271} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 10635 10693
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { 'dot' => 1, _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2271} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'.'} = sub { term11($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term12
+*term12 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 10790 10828
+           (
+      
+             ## <group>
+             ## pos: 10790 10797
+              (   ( $pad{I2272} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 10790 10796
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2272} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 10797 10808
+              (   ( $pad{I2273} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 10797 10799
+               ( ( substr( $s, $pos, 1 ) eq ']' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2273} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 10808 10828
+              (   ( $pad{I2274} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 10808 10827
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return ${ $_[0]->{qw(rule)} } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2274} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'['} = sub { term12($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term13
+*term13 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 10916 10979
+            (   ( $pad{I2275} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 10916 10978
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => ':::', _pos => [$_[0]->from - 3, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2275} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':::'} = sub { term13($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term14
+*term14 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 11069 11131
+            (   ( $pad{I2276} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 11069 11130
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => ':?', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2276} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':?'} = sub { term14($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term15
+*term15 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 11220 11282
+            (   ( $pad{I2277} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 11220 11281
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => ':+', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2277} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':+'} = sub { term15($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term16
+*term16 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 11371 11433
+            (   ( $pad{I2278} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 11371 11432
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => '::', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2278} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'::'} = sub { term16($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term17
+*term17 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 11522 11583
+            (   ( $pad{I2279} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 11522 11582
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => ':', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2279} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':'} = sub { term17($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term18
+*term18 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 11671 11733
+            (   ( $pad{I2280} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 11671 11732
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => '$$', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2280} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'$$'} = sub { term18($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term19
+*term19 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 11822 11884
+            (   ( $pad{I2281} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 11822 11883
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => '$', _pos => [$_[0]->from - 1, $_[0]->to],  } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2281} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'$'} = sub { term19($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term20
+*term20 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 11972 12034
+            (   ( $pad{I2282} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 11972 12033
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => '^^', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2282} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'^^'} = sub { term20($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term21
+*term21 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 12123 12184
+            (   ( $pad{I2283} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 12123 12183
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => '^', _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2283} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'^'} = sub { term21($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term22
+*term22 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 12272 12334
+            (   ( $pad{I2284} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 12272 12333
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => '>>', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2284} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'>>'} = sub { term22($_[1], $_[0], $_[2], $_[3]) }; 
+
+# Code block from grammar spec
+ $rule_terms{'»'} = sub { term22($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term24
+*term24 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+      
+           ## <group>
+           ## pos: 12576 12638
+            (   ( $pad{I2285} = $pos or 1 ) &&
+             ## <closure>
+             ## pos: 12576 12637
+             do {
+               local $::_V6_SUCCEED = 1;
+               $::_V6_MATCH_ = $m;
+               $m->data->{capture} = \( sub { return { colon => '<<', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) ); 
+               $bool = $::_V6_SUCCEED;
+               $::_V6_MATCH_ = $m if $bool; 
+               return $m if $bool; 
+             }
+             ## </closure>
+     ||    ( ( $pos = $pad{I2285} ) && 0 ) )
+           ## </group>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{'<<'} = sub { term24($_[1], $_[0], $_[2], $_[3]) }; 
+
+# Code block from grammar spec
+ $rule_terms{'«'} = sub { term24($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term26
+*term26 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 12888 13065
+           (
+      
+             ## <group>
+             ## pos: 12888 12894
+              (   ( $pad{I2286} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 12888 12893
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2286} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 12894 12909
+              (   ( $pad{I2287} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 12894 12900
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2287} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 12909 13065
+              (   ( $pad{I2288} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 12909 13064
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                modifier => {
+                    modifier => 'ignorecase',
+                    rule => ${ $_[0]->{qw(rule)} },
+                    }
+                },
+            }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2288} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':i'} = sub { term26($_[1], $_[0], $_[2], $_[3]) }; 
+
+# Code block from grammar spec
+ $rule_terms{':ignorecase'} = sub { term26($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term28
+*term28 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 13345 13422
+           (
+      
+             ## <group>
+             ## pos: 13345 13351
+              (   ( $pad{I2289} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 13345 13350
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2289} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 13351 13366
+              (   ( $pad{I2290} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 13351 13357
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2290} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 13366 13422
+              (   ( $pad{I2291} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 13366 13421
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { modifier => 'sigspace', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2291} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':s'} = sub { term28($_[1], $_[0], $_[2], $_[3]) }; 
+
+# Code block from grammar spec
+ $rule_terms{':sigspace'} = sub { term28($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term30
+*term30 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 13701 13775
+           (
+      
+             ## <group>
+             ## pos: 13701 13707
+              (   ( $pad{I2292} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 13701 13706
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2292} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 13707 13722
+              (   ( $pad{I2293} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 13707 13713
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2293} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 13722 13775
+              (   ( $pad{I2294} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 13722 13774
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { modifier => 'Perl5', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2294} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':P5'} = sub { term30($_[1], $_[0], $_[2], $_[3]) }; 
+
+# Code block from grammar spec
+ $rule_terms{':Perl5'} = sub { term30($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term32
+*term32 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 14048 14122
+           (
+      
+             ## <group>
+             ## pos: 14048 14054
+              (   ( $pad{I2295} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 14048 14053
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2295} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14054 14069
+              (   ( $pad{I2296} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 14054 14060
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2296} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14069 14122
+              (   ( $pad{I2297} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 14069 14121
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { modifier => 'bytes', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2297} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':bytes'} = sub { term32($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term33
+*term33 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 14223 14297
+           (
+      
+             ## <group>
+             ## pos: 14223 14229
+              (   ( $pad{I2298} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 14223 14228
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2298} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14229 14244
+              (   ( $pad{I2299} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 14229 14235
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2299} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14244 14297
+              (   ( $pad{I2300} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 14244 14296
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { modifier => 'codes', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2300} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':codes'} = sub { term33($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term34
+*term34 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 14398 14473
+           (
+      
+             ## <group>
+             ## pos: 14398 14404
+              (   ( $pad{I2301} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 14398 14403
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2301} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14404 14419
+              (   ( $pad{I2302} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 14404 14410
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2302} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14419 14473
+              (   ( $pad{I2303} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 14419 14472
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { modifier => 'graphs', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2303} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':graphs'} = sub { term34($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term35
+*term35 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 14575 14650
+           (
+      
+             ## <group>
+             ## pos: 14575 14581
+              (   ( $pad{I2304} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 14575 14580
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2304} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14581 14596
+              (   ( $pad{I2305} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 14581 14587
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2305} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 14596 14650
+              (   ( $pad{I2306} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 14596 14649
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { modifier => 'langs',  rule => ${ $_[0]->{qw(rule)} } } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2306} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# Code block from grammar spec
+ $rule_terms{':langs'} = sub { term35($_[1], $_[0], $_[2], $_[3]) }; 
+
+# token term
+*term =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 14745 15547
+           (
+               ( $pad{I2307} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 14746 15224
+               (
+      
+                 ## <group>
+                 ## pos: 14746 14789
+                  (   ( $pad{I2308} = $pos or 1 ) &&
+                  ## <metasyntax>
+                   ## pos: 14748 14781
+                   do{
+                    my $match = 
+              ## <variable>
+              ## pos: 14748 14781
+              do {
+                our $I2309;
+                our $I2309_sizes;
+                unless ( $I2309 ) {
+                    my $hash = \%Pugs::Grammar::Rule::variables;
+                    my %sizes = map { length($_) => 1 } keys %$hash;
+                    $I2309_sizes = [ sort { $b <=> $a } keys %sizes ];
+                    $I2309 = $hash;
+                }
+                my $match = 0;
+                my $key;
+                for ( @$I2309_sizes ) {
+                    $key = ( $pos <= length( $s )
+                                ? substr( $s, $pos, $_ )
+                                : '' );
+                    if ( exists $I2309->{$key} ) {
+                        #$named{KEY} = $key;
+                        #$::_V6_MATCH_ = $m;
+                        #print "m: ", Dumper( $::_V6_MATCH_->data )
+                        #    if ( $key eq 'until' );
+                        $match = Pugs::Runtime::Regex::preprocess_hash( $I2309, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
+                        last if $match;
+                    }
+                }
+                if ( $match ) {
+                    $pos = $match->to;
+                    #print "match: $key at $pos = ", Dumper( $match->data );
+                    $bool = 1;
+                }; # else { $bool = 0 }
+                $match;
+              }
+              ## </variable>
+    ;
+                    if ( $match ) { $named{'Pugs::Grammar::Rule::variables'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                  ## </metasyntax>
+     ||    ( ( $pos = $pad{I2308} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 14789 15224
+                  (   ( $pad{I2310} = $pos or 1 ) &&
+                   ## <alt>
+                   ## pos: 14790 15218
+                   (
+                       ( $pad{I2311} = $pos or 1 )
+                       && (
+                       ## <concat>
+                       ## pos: 14790 15131
+                       (
+                         ## <quant>
+                         ## pos: 14790 14799
+                         (
+                          (   ( $pad{I2312} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 14792 14797
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2312} ) && 0 ) )
+                         || ( $bool = 1 )
+                         )
+                         ## </quant>
+    
+                       &&
+      
+                         ## <group>
+                         ## pos: 14799 14804
+                          (   ( $pad{I2313} = $pos or 1 ) &&
+    
+                           ## <constant>
+                           ## pos: 14799 14803
+                           ( ( substr( $s, $pos, 2 ) eq ':=' )
+                               ? ( $pos += 2 or 1 )
+                               : 0
+                           )
+                           ## </constant>
+     ||    ( ( $pos = $pad{I2313} ) && 0 ) )
+                         ## </group>
+    
+                       &&
+                         ## <quant>
+                         ## pos: 14804 14811
+                         (
+                          (   ( $pad{I2314} = $pos or 1 ) &&
+                             ## <metasyntax>
+                             ## pos: 14804 14809
+                             do {
+                                  my $prior = $::_V6_PRIOR_;
+                                  my $match =
+                                         $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                  $::_V6_PRIOR_ = $prior;
+                                  my $bool = (!$match != 1);
+                                  $pos = $match->to if $bool;
+                                  $match;
+                             }
+                             ## </metasyntax>
+     ||    ( ( $pos = $pad{I2314} ) && 0 ) )
+                         || ( $bool = 1 )
+                         )
+                         ## </quant>
+    
+                       &&
+      
+                         ## <group>
+                         ## pos: 14811 14842
+                          (   ( $pad{I2315} = $pos or 1 ) &&
+                           ## <named_capture>
+                           ## pos: 14811 14831
+                           do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                       $grammar->named_capture_body( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'named_capture_body'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                           ## </named_capture>
+     ||    ( ( $pos = $pad{I2315} ) && 0 ) )
+                         ## </group>
+    
+                       &&
+      
+                         ## <group>
+                         ## pos: 14842 15131
+                          (   ( $pad{I2316} = $pos or 1 ) &&
+                           ## <closure>
+                           ## pos: 14842 15123
+                           do {
+                             local $::_V6_SUCCEED = 1;
+                             $::_V6_MATCH_ = $m;
+                             $m->data->{capture} = \( sub {
+                return { named_capture => {
+                            rule =>  ${ $_[0]->{qw(named_capture_body)} },
+                            ident => ${ $_[0]->{qw(Pugs::Grammar::Rule::variables)} },
+                         },
+                            _pos => [ $_[0]->from, $_[0]->to ],
+                         };
+              }->( $m ) ); 
+                             $bool = $::_V6_SUCCEED;
+                             $::_V6_MATCH_ = $m if $bool; 
+                             return $m if $bool; 
+                           }
+                           ## </closure>
+     ||    ( ( $pos = $pad{I2316} ) && 0 ) )
+                         ## </group>
+    
+                       )
+                       ## </concat>
+    
+                       )
+                     || (
+                       ( ( $bool = 1 ) && ( $pos = $pad{I2311} ) or 1 )
+                       &&   
+                       ## <group>
+                       ## pos: 15132 15218
+                        (   ( $pad{I2317} = $pos or 1 ) &&
+                         ## <closure>
+                         ## pos: 15143 15210
+                         do {
+                           local $::_V6_SUCCEED = 1;
+                           $::_V6_MATCH_ = $m;
+                           $m->data->{capture} = \( sub {
+                return ${ $_[0]->{qw(Pugs::Grammar::Rule::variables)} }
+              }->( $m ) ); 
+                           $bool = $::_V6_SUCCEED;
+                           $::_V6_MATCH_ = $m if $bool; 
+                           return $m if $bool; 
+                         }
+                         ## </closure>
+     ||    ( ( $pos = $pad{I2317} ) && 0 ) )
+                       ## </group>
+    
+                     )
+                   )
+                   ## </alt>
+     ||    ( ( $pos = $pad{I2310} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2307} ) or 1 )
+               &&            ## <concat>
+               ## pos: 15225 15393
+               (
+      
+                 ## <group>
+                 ## pos: 15225 15270
+                  (   ( $pad{I2318} = $pos or 1 ) &&
+                  ## <metasyntax>
+                   ## pos: 15227 15261
+                   do{
+                    my $match = 
+              ## <variable>
+              ## pos: 15227 15261
+              do {
+                our $I2319;
+                our $I2319_sizes;
+                unless ( $I2319 ) {
+                    my $hash = \%Pugs::Grammar::Rule::rule_terms;
+                    my %sizes = map { length($_) => 1 } keys %$hash;
+                    $I2319_sizes = [ sort { $b <=> $a } keys %sizes ];
+                    $I2319 = $hash;
+                }
+                my $match = 0;
+                my $key;
+                for ( @$I2319_sizes ) {
+                    $key = ( $pos <= length( $s )
+                                ? substr( $s, $pos, $_ )
+                                : '' );
+                    if ( exists $I2319->{$key} ) {
+                        #$named{KEY} = $key;
+                        #$::_V6_MATCH_ = $m;
+                        #print "m: ", Dumper( $::_V6_MATCH_->data )
+                        #    if ( $key eq 'until' );
+                        $match = Pugs::Runtime::Regex::preprocess_hash( $I2319, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
+                        last if $match;
+                    }
+                }
+                if ( $match ) {
+                    $pos = $match->to;
+                    #print "match: $key at $pos = ", Dumper( $match->data );
+                    $bool = 1;
+                }; # else { $bool = 0 }
+                $match;
+              }
+              ## </variable>
+    ;
+                    if ( $match ) { $named{'Pugs::Grammar::Rule::rule_terms'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                  ## </metasyntax>
+     ||    ( ( $pos = $pad{I2318} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 15270 15393
+                  (   ( $pad{I2320} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 15270 15388
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub {
+                #print "term: ", Dumper( $_[0]->data );
+                return ${ $_[0]->{qw(Pugs::Grammar::Rule::rule_terms)} }
+            }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2320} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2307} ) or 1 )
+               &&            ## <concat>
+               ## pos: 15394 15547
+               (
+      
+                 ## <group>
+                 ## pos: 15394 15441
+                  (   ( $pad{I2321} = $pos or 1 ) &&
+                   ## <perl5>
+                   ( ( substr( $s, $pos ) =~ m/^((?:(?![\]\}\)\>\:\?\+\*\|\&]))\X)/ )
+                       ? ( $pos += length( $1 ) or 1 )
+                       : 0
+                   )
+                   ## </perl5>
+     ||    ( ( $pos = $pad{I2321} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 15441 15547
+                  (   ( $pad{I2322} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 15441 15546
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub {
+                return { 'constant' => ${$_[0]},
+                         _pos => [ $_[0]->from, $_[0]->to ] }
+            }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2322} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token quant
+*quant =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 15568 15682
+           (
+               ( $pad{I2323} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 15569 15660
+               (
+      
+                 ## <group>
+                 ## pos: 15569 15577
+                  (   ( $pad{I2324} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 15572 15576
+                   ( ( substr( $s, $pos, 2 ) eq '**' )
+                       ? ( $pos += 2 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2324} ) && 0 ) )
+                 ## </group>
+    
+               &&
+                 ## <quant>
+                 ## pos: 15577 15584
+                 (
+                  (   ( $pad{I2325} = $pos or 1 ) &&
+                     ## <metasyntax>
+                     ## pos: 15577 15582
+                     do {
+                          my $prior = $::_V6_PRIOR_;
+                          my $match =
+                                 $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                          $::_V6_PRIOR_ = $prior;
+                          my $bool = (!$match != 1);
+                          $pos = $match->to if $bool;
+                          $match;
+                     }
+                     ## </metasyntax>
+     ||    ( ( $pos = $pad{I2325} ) && 0 ) )
+                 || ( $bool = 1 )
+                 )
+                 ## </quant>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 15584 15588
+                  (   ( $pad{I2326} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 15584 15586
+                   ( ( substr( $s, $pos, 1 ) eq '{' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2326} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 15588 15603
+                  (   ( $pad{I2327} = $pos or 1 ) &&
+                   ## <named_capture>
+                   ## pos: 15588 15601
+                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                               $grammar->parsed_code( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'parsed_code'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                   ## </named_capture>
+     ||    ( ( $pos = $pad{I2327} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 15603 15614
+                  (   ( $pad{I2328} = $pos or 1 ) &&
+    
+                   ## <constant>
+                   ## pos: 15603 15605
+                   ( ( substr( $s, $pos, 1 ) eq '}' )
+                       ? ( $pos += 1 or 1 )
+                       : 0
+                   )
+                   ## </constant>
+     ||    ( ( $pos = $pad{I2328} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 15614 15660
+                  (   ( $pad{I2329} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 15614 15655
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return { closure => ${ $_[0]->{qw(parsed_code)} } } }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2329} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2323} ) or 1 )
+               &&            ## <quant>
+               ## pos: 15661 15682
+               (
+                (   ( $pad{I2330} = $pos or 1 ) &&
+                   ## <perl5>
+                   ( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\*\+]))\X)/ )
+                       ? ( $pos += length( $1 ) or 1 )
+                       : 0
+                   )
+                   ## </perl5>
+     ||    ( ( $pos = $pad{I2330} ) && 0 ) )
+               || ( $bool = 1 )
+               )
+               ## </quant>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token quantifier
+*quantifier =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 15708 16474
+           (
+      
+             ## <group>
+             ## pos: 15708 15733
+              (   ( $pad{I2331} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 15708 15728
+               do{
+                    my $match = Pugs::Runtime::Match->new( do {
+                        my $bool = 1;
+                        my $from = $pos;
+                        my @match;
+                        my %named;
+                        $bool = 0 unless 
+                       ## <capture>
+                       do{
+                           my $hash = do {
+                             my $bool = 1;
+                             my $from = $pos;
+                             my @match;
+                             my %named;
+                             $bool = 0 unless
+                               ## <quant>
+                               ## pos: 15721 15727
+                               (
+                                (   ( $pad{I2332} = $pos or 1 ) &&
+                                   ## <metasyntax>
+                                   ## pos: 15721 15726
+                                   do {
+                                        my $prior = $::_V6_PRIOR_;
+                                        my $match =
+                                               $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                        $::_V6_PRIOR_ = $prior;
+                                        my $bool = (!$match != 1);
+                                        $pos = $match->to if $bool;
+                                        $match;
+                                   }
+                                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I2332} ) && 0 ) )
+                               || ( $bool = 1 )
+                               )
+                               ## </quant>
+    ;
+                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                           };
+                           my $bool = ${$hash->{'bool'}};
+                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                           $bool;
+                       }
+                       ## </capture>
+    ;
+                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                    } );
+                    if ( $match ) { $named{'ws1'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2331} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 15733 15768
+              (   ( $pad{I2333} = $pos or 1 ) &&
+               ## <negate>
+               ## pos: 15733 15763
+               do{
+                   my $pos1 = $pos;
+                   do {
+                     my $pos = $pos1;
+                     my $from = $pos;
+                     my @match;
+                     my %named;
+                     $bool = 
+                         ## <before>
+                         ## pos: 15743 15762
+                         do{
+                             my $pos1 = $pos;
+                             do {
+                               my $pos = $pos1;
+                               my $from = $pos;
+                               my @match;
+                               my %named;
+                               $bool = 0 unless
+      
+                                   ## <group>
+                                   ## pos: 15743 15762
+                                    (   ( $pad{I2334} = $pos or 1 ) &&
+                                     ## <perl5>
+                                     ( ( substr( $s, $pos ) =~ m/^((?:(?=[\}\]\)]))\X)/ )
+                                         ? ( $pos += length( $1 ) or 1 )
+                                         : 0
+                                     )
+                                     ## </perl5>
+     ||    ( ( $pos = $pad{I2334} ) && 0 ) )
+                                   ## </group>
+    ;
+                               $bool;
+                             };
+                         }
+                         ## </before>
+     ? 0 : 1;
+                     $bool;
+                   };
+               }
+               ## </negate>
+     ||    ( ( $pos = $pad{I2333} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 15768 15779
+              (   ( $pad{I2335} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 15768 15774
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->term( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'term'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2335} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 15779 15804
+              (   ( $pad{I2336} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 15779 15799
+               do{
+                    my $match = Pugs::Runtime::Match->new( do {
+                        my $bool = 1;
+                        my $from = $pos;
+                        my @match;
+                        my %named;
+                        $bool = 0 unless 
+                       ## <capture>
+                       do{
+                           my $hash = do {
+                             my $bool = 1;
+                             my $from = $pos;
+                             my @match;
+                             my %named;
+                             $bool = 0 unless
+                               ## <quant>
+                               ## pos: 15792 15798
+                               (
+                                (   ( $pad{I2337} = $pos or 1 ) &&
+                                   ## <metasyntax>
+                                   ## pos: 15792 15797
+                                   do {
+                                        my $prior = $::_V6_PRIOR_;
+                                        my $match =
+                                               $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                        $::_V6_PRIOR_ = $prior;
+                                        my $bool = (!$match != 1);
+                                        $pos = $match->to if $bool;
+                                        $match;
+                                   }
+                                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I2337} ) && 0 ) )
+                               || ( $bool = 1 )
+                               )
+                               ## </quant>
+    ;
+                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                           };
+                           my $bool = ${$hash->{'bool'}};
+                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                           $bool;
+                       }
+                       ## </capture>
+    ;
+                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                    } );
+                    if ( $match ) { $named{'ws2'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2336} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 15804 15816
+              (   ( $pad{I2338} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 15804 15811
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->quant( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'quant'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2338} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 15816 15850
+              (   ( $pad{I2339} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 15816 15845
+               do{
+                    my $match = Pugs::Runtime::Match->new( do {
+                        my $bool = 1;
+                        my $from = $pos;
+                        my @match;
+                        my %named;
+                        $bool = 0 unless 
+                       ## <capture>
+                       do{
+                           my $hash = do {
+                             my $bool = 1;
+                             my $from = $pos;
+                             my @match;
+                             my %named;
+                             $bool = 0 unless
+                               ## <quant>
+                               ## pos: 15830 15844
+                               (
+                                (   ( $pad{I2340} = $pos or 1 ) &&
+                                   ## <perl5>
+                                   ( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\+]))\X)/ )
+                                       ? ( $pos += length( $1 ) or 1 )
+                                       : 0
+                                   )
+                                   ## </perl5>
+     ||    ( ( $pos = $pad{I2340} ) && 0 ) )
+                               || ( $bool = 1 )
+                               )
+                               ## </quant>
+    ;
+                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                           };
+                           my $bool = ${$hash->{'bool'}};
+                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                           $bool;
+                       }
+                       ## </capture>
+    ;
+                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                    } );
+                    if ( $match ) { $named{'greedy'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2339} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 15850 15875
+              (   ( $pad{I2341} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 15850 15870
+               do{
+                    my $match = Pugs::Runtime::Match->new( do {
+                        my $bool = 1;
+                        my $from = $pos;
+                        my @match;
+                        my %named;
+                        $bool = 0 unless 
+                       ## <capture>
+                       do{
+                           my $hash = do {
+                             my $bool = 1;
+                             my $from = $pos;
+                             my @match;
+                             my %named;
+                             $bool = 0 unless
+                               ## <quant>
+                               ## pos: 15863 15869
+                               (
+                                (   ( $pad{I2342} = $pos or 1 ) &&
+                                   ## <metasyntax>
+                                   ## pos: 15863 15868
+                                   do {
+                                        my $prior = $::_V6_PRIOR_;
+                                        my $match =
+                                               $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                                        $::_V6_PRIOR_ = $prior;
+                                        my $bool = (!$match != 1);
+                                        $pos = $match->to if $bool;
+                                        $match;
+                                   }
+                                   ## </metasyntax>
+     ||    ( ( $pos = $pad{I2342} ) && 0 ) )
+                               || ( $bool = 1 )
+                               )
+                               ## </quant>
+    ;
+                             { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                           };
+                           my $bool = ${$hash->{'bool'}};
+                           $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                           $bool;
+                       }
+                       ## </capture>
+    ;
+                        { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                    } );
+                    if ( $match ) { $named{'ws3'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2341} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 15875 16474
+              (   ( $pad{I2343} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 15875 16473
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub {
+          if (
+                   ${$_[0]->{'quant'}}  eq ''
+                && ${$_[0]->{'greedy'}} eq ''
+                && ${$_[0]->{'ws1'}}    eq ''
+                && ${$_[0]->{'ws2'}}    eq ''
+                && ${$_[0]->{'ws3'}}    eq ''
+          ) {
+              return ${$_[0]->{'term'}};
+          }
+          return {
+            quant => {
+                    term    => ${$_[0]->{'term'}},
+                    quant   => ${$_[0]->{'quant'}},
+                    greedy  => ${$_[0]->{'greedy'}},
+                    ws1     => ${$_[0]->{'ws1'}},
+                    ws2     => ${$_[0]->{'ws2'}},
+                    ws3     => ${$_[0]->{'ws3'}},
+                },
+            _pos => [$_[0]->from, $_[0]->to],
+          }
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2343} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token concat
+*concat =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 16496 16705
+           (
+             ## <quant>
+             ## pos: 16496 16514
+             (
+              (   ( $pad{I2344} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 16496 16508
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->quantifier( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'quantifier'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2344} ) && 0 ) )
+             && do { while (
+              (   ( $pad{I2344} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 16496 16508
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->quantifier( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'quantifier'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2344} ) && 0 ) )) {}; $bool = 1 }
+             )
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 16514 16705
+              (   ( $pad{I2345} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 16514 16704
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub {
+            my @a = map {  $_->()  }  @{ $::_V6_MATCH_->{'quantifier'} };
+            return { concat => \@a, _pos => [$_[0]->from, $_[0]->to] }
+                if scalar @a > 1;
+            return $a[0];
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2345} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token conjunctive1
+*conjunctive1 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 16733 17013
+           (
+             ## <quant>
+             ## pos: 16733 16767
+             (
+              (   ( $pad{I2346} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 16734 16759
+                 (
+                   ## <quant>
+                   ## pos: 16734 16742
+                   (
+                    (   ( $pad{I2347} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 16735 16740
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2347} ) && 0 ) )
+                   || ( $bool = 1 )
+                   )
+                   ## </quant>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 16742 16745
+                    (   ( $pad{I2348} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 16742 16744
+                     ( ( substr( $s, $pos, 1 ) eq '&' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2348} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 16745 16759
+                    (   ( $pad{I2349} = $pos or 1 ) &&
+                     ## <negate>
+                     ## pos: 16745 16758
+                     do{
+                         my $pos1 = $pos;
+                         do {
+                           my $pos = $pos1;
+                           my $from = $pos;
+                           my @match;
+                           my %named;
+                           $bool = 
+                               ## <before>
+                               ## pos: 16754 16757
+                               do{
+                                   my $pos1 = $pos;
+                                   do {
+                                     my $pos = $pos1;
+                                     my $from = $pos;
+                                     my @match;
+                                     my %named;
+                                     $bool = 0 unless
+      
+                                         ## <group>
+                                         ## pos: 16754 16757
+                                          (   ( $pad{I2350} = $pos or 1 ) &&
+    
+                                           ## <constant>
+                                           ## pos: 16754 16756
+                                           ( ( substr( $s, $pos, 1 ) eq '&' )
+                                               ? ( $pos += 1 or 1 )
+                                               : 0
+                                           )
+                                           ## </constant>
+     ||    ( ( $pos = $pad{I2350} ) && 0 ) )
+                                         ## </group>
+    ;
+                                     $bool;
+                                   };
+                               }
+                               ## </before>
+     ? 0 : 1;
+                           $bool;
+                         };
+                     }
+                     ## </negate>
+     ||    ( ( $pos = $pad{I2349} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2346} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 16767 16785
+             (
+              (   ( $pad{I2351} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 16767 16775
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->concat( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'concat'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2351} ) && 0 ) )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 16785 16834
+             do { while (
+              (   ( $pad{I2352} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 16786 16826
+                 (
+      
+                   ## <group>
+                   ## pos: 16786 16798
+                    (   ( $pad{I2353} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 16795 16797
+                     ( ( substr( $s, $pos, 1 ) eq '&' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2353} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 16798 16813
+                    (   ( $pad{I2354} = $pos or 1 ) &&
+                     ## <negate>
+                     ## pos: 16798 16811
+                     do{
+                         my $pos1 = $pos;
+                         do {
+                           my $pos = $pos1;
+                           my $from = $pos;
+                           my @match;
+                           my %named;
+                           $bool = 
+                               ## <before>
+                               ## pos: 16807 16810
+                               do{
+                                   my $pos1 = $pos;
+                                   do {
+                                     my $pos = $pos1;
+                                     my $from = $pos;
+                                     my @match;
+                                     my %named;
+                                     $bool = 0 unless
+      
+                                         ## <group>
+                                         ## pos: 16807 16810
+                                          (   ( $pad{I2355} = $pos or 1 ) &&
+    
+                                           ## <constant>
+                                           ## pos: 16807 16809
+                                           ( ( substr( $s, $pos, 1 ) eq '&' )
+                                               ? ( $pos += 1 or 1 )
+                                               : 0
+                                           )
+                                           ## </constant>
+     ||    ( ( $pos = $pad{I2355} ) && 0 ) )
+                                         ## </group>
+    ;
+                                     $bool;
+                                   };
+                               }
+                               ## </before>
+     ? 0 : 1;
+                           $bool;
+                         };
+                     }
+                     ## </negate>
+     ||    ( ( $pos = $pad{I2354} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 16813 16826
+                    (   ( $pad{I2356} = $pos or 1 ) &&
+                     ## <named_capture>
+                     ## pos: 16813 16821
+                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                 $grammar->concat( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'concat'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2356} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2352} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 16834 17013
+              (   ( $pad{I2357} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 16834 17012
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub {
+            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'concat'} };
+            return { conjunctive1 => \@a, _pos => [$_[0]->from, $_[0]->to] }  if scalar @a > 1;
+            return $a[0];
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2357} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token disjunctive1
+*disjunctive1 =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 17041 17330
+           (
+             ## <quant>
+             ## pos: 17041 17075
+             (
+              (   ( $pad{I2358} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 17042 17067
+                 (
+                   ## <quant>
+                   ## pos: 17042 17050
+                   (
+                    (   ( $pad{I2359} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 17043 17048
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2359} ) && 0 ) )
+                   || ( $bool = 1 )
+                   )
+                   ## </quant>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17050 17053
+                    (   ( $pad{I2360} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17050 17052
+                     ( ( substr( $s, $pos, 1 ) eq '|' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2360} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17053 17067
+                    (   ( $pad{I2361} = $pos or 1 ) &&
+                     ## <negate>
+                     ## pos: 17053 17066
+                     do{
+                         my $pos1 = $pos;
+                         do {
+                           my $pos = $pos1;
+                           my $from = $pos;
+                           my @match;
+                           my %named;
+                           $bool = 
+                               ## <before>
+                               ## pos: 17062 17065
+                               do{
+                                   my $pos1 = $pos;
+                                   do {
+                                     my $pos = $pos1;
+                                     my $from = $pos;
+                                     my @match;
+                                     my %named;
+                                     $bool = 0 unless
+      
+                                         ## <group>
+                                         ## pos: 17062 17065
+                                          (   ( $pad{I2362} = $pos or 1 ) &&
+    
+                                           ## <constant>
+                                           ## pos: 17062 17064
+                                           ( ( substr( $s, $pos, 1 ) eq '|' )
+                                               ? ( $pos += 1 or 1 )
+                                               : 0
+                                           )
+                                           ## </constant>
+     ||    ( ( $pos = $pad{I2362} ) && 0 ) )
+                                         ## </group>
+    ;
+                                     $bool;
+                                   };
+                               }
+                               ## </before>
+     ? 0 : 1;
+                           $bool;
+                         };
+                     }
+                     ## </negate>
+     ||    ( ( $pos = $pad{I2361} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2358} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 17075 17099
+             (
+              (   ( $pad{I2363} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 17075 17089
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->conjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'conjunctive1'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2363} ) && 0 ) )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 17099 17153
+             do { while (
+              (   ( $pad{I2364} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 17100 17145
+                 (
+      
+                   ## <group>
+                   ## pos: 17100 17112
+                    (   ( $pad{I2365} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17109 17111
+                     ( ( substr( $s, $pos, 1 ) eq '|' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2365} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17112 17126
+                    (   ( $pad{I2366} = $pos or 1 ) &&
+                     ## <negate>
+                     ## pos: 17112 17125
+                     do{
+                         my $pos1 = $pos;
+                         do {
+                           my $pos = $pos1;
+                           my $from = $pos;
+                           my @match;
+                           my %named;
+                           $bool = 
+                               ## <before>
+                               ## pos: 17121 17124
+                               do{
+                                   my $pos1 = $pos;
+                                   do {
+                                     my $pos = $pos1;
+                                     my $from = $pos;
+                                     my @match;
+                                     my %named;
+                                     $bool = 0 unless
+      
+                                         ## <group>
+                                         ## pos: 17121 17124
+                                          (   ( $pad{I2367} = $pos or 1 ) &&
+    
+                                           ## <constant>
+                                           ## pos: 17121 17123
+                                           ( ( substr( $s, $pos, 1 ) eq '|' )
+                                               ? ( $pos += 1 or 1 )
+                                               : 0
+                                           )
+                                           ## </constant>
+     ||    ( ( $pos = $pad{I2367} ) && 0 ) )
+                                         ## </group>
+    ;
+                                     $bool;
+                                   };
+                               }
+                               ## </before>
+     ? 0 : 1;
+                           $bool;
+                         };
+                     }
+                     ## </negate>
+     ||    ( ( $pos = $pad{I2366} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17126 17145
+                    (   ( $pad{I2368} = $pos or 1 ) &&
+                     ## <named_capture>
+                     ## pos: 17126 17140
+                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                 $grammar->conjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'conjunctive1'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2368} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2364} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 17153 17330
+              (   ( $pad{I2369} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 17153 17329
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub {
+            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'conjunctive1'} };
+            return { alt1 => \@a, _pos => [$_[0]->from, $_[0]->to] }  if scalar @a > 1;
+            return $a[0];
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2369} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token conjunctive
+*conjunctive =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 17357 17631
+           (
+             ## <quant>
+             ## pos: 17357 17380
+             (
+              (   ( $pad{I2370} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 17358 17372
+                 (
+                   ## <quant>
+                   ## pos: 17358 17366
+                   (
+                    (   ( $pad{I2371} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 17359 17364
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2371} ) && 0 ) )
+                   || ( $bool = 1 )
+                   )
+                   ## </quant>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17366 17369
+                    (   ( $pad{I2372} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17366 17368
+                     ( ( substr( $s, $pos, 1 ) eq '&' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2372} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17369 17372
+                    (   ( $pad{I2373} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17369 17371
+                     ( ( substr( $s, $pos, 1 ) eq '&' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2373} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2370} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 17380 17404
+             (
+              (   ( $pad{I2374} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 17380 17394
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->disjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'disjunctive1'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2374} ) && 0 ) )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 17404 17447
+             do { while (
+              (   ( $pad{I2375} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 17405 17439
+                 (
+      
+                   ## <group>
+                   ## pos: 17405 17417
+                    (   ( $pad{I2376} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17414 17416
+                     ( ( substr( $s, $pos, 1 ) eq '&' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2376} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17417 17420
+                    (   ( $pad{I2377} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17417 17419
+                     ( ( substr( $s, $pos, 1 ) eq '&' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2377} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17420 17439
+                    (   ( $pad{I2378} = $pos or 1 ) &&
+                     ## <named_capture>
+                     ## pos: 17420 17434
+                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                 $grammar->disjunctive1( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'disjunctive1'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2378} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2375} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 17447 17631
+              (   ( $pad{I2379} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 17447 17630
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub {
+            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'disjunctive1'} };
+            return { conjunctive => \@a, _pos => [$_[0]->from, $_[0]->to] }  if scalar @a > 1;
+            return $a[0];
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2379} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token rule
+*rule =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 17651 17915
+           (
+             ## <quant>
+             ## pos: 17651 17674
+             (
+              (   ( $pad{I2380} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 17652 17666
+                 (
+                   ## <quant>
+                   ## pos: 17652 17660
+                   (
+                    (   ( $pad{I2381} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 17653 17658
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2381} ) && 0 ) )
+                   || ( $bool = 1 )
+                   )
+                   ## </quant>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17660 17663
+                    (   ( $pad{I2382} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17660 17662
+                     ( ( substr( $s, $pos, 1 ) eq '|' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2382} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17663 17666
+                    (   ( $pad{I2383} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17663 17665
+                     ( ( substr( $s, $pos, 1 ) eq '|' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2383} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2380} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 17674 17697
+             (
+              (   ( $pad{I2384} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 17674 17687
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->conjunctive( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'conjunctive'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2384} ) && 0 ) )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 17697 17739
+             do { while (
+              (   ( $pad{I2385} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 17698 17731
+                 (
+      
+                   ## <group>
+                   ## pos: 17698 17710
+                    (   ( $pad{I2386} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17707 17709
+                     ( ( substr( $s, $pos, 1 ) eq '|' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2386} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17710 17713
+                    (   ( $pad{I2387} = $pos or 1 ) &&
+    
+                     ## <constant>
+                     ## pos: 17710 17712
+                     ( ( substr( $s, $pos, 1 ) eq '|' )
+                         ? ( $pos += 1 or 1 )
+                         : 0
+                     )
+                     ## </constant>
+     ||    ( ( $pos = $pad{I2387} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+      
+                   ## <group>
+                   ## pos: 17713 17731
+                    (   ( $pad{I2388} = $pos or 1 ) &&
+                     ## <named_capture>
+                     ## pos: 17713 17726
+                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                 $grammar->conjunctive( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'conjunctive'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2388} ) && 0 ) )
+                   ## </group>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2385} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 17739 17915
+              (   ( $pad{I2389} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 17739 17914
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub {
+            my @a = map {  $$_  }  @{ $::_V6_MATCH_->{'conjunctive'} };
+            return { alt => \@a, _pos => [$_[0]->from, $_[0]->to], }  if scalar @a > 1;
+            return $a[0];
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2389} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token named_regex
+*named_regex =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 17942 18162
+           (
+      
+             ## <group>
+             ## pos: 17942 17977
+              (   ( $pad{I2390} = $pos or 1 ) &&
+    
+               ## <capture>
+               do{
+                   my $hash = do {
+                     my $bool = 1;
+                     my $from = $pos;
+                     my @match;
+                     my %named;
+                     $bool = 0 unless
+                       ## <alt>
+                       ## pos: 17943 17971
+                       (
+                           ( $pad{I2391} = $pos or 1 )
+                           && (
+      
+                           ## <group>
+                           ## pos: 17943 17952
+                            (   ( $pad{I2392} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 17944 17951
+                             ( ( substr( $s, $pos, 5 ) eq 'token' )
+                                 ? ( $pos += 5 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2392} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2391} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 17953 17962
+                            (   ( $pad{I2393} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 17954 17961
+                             ( ( substr( $s, $pos, 5 ) eq 'regex' )
+                                 ? ( $pos += 5 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2393} ) && 0 ) )
+                           ## </group>
+    
+                           )
+                         || (
+                           ( ( $bool = 1 ) && ( $pos = $pad{I2391} ) or 1 )
+                           &&   
+                           ## <group>
+                           ## pos: 17963 17971
+                            (   ( $pad{I2394} = $pos or 1 ) &&
+    
+                             ## <constant>
+                             ## pos: 17964 17970
+                             ( ( substr( $s, $pos, 4 ) eq 'rule' )
+                                 ? ( $pos += 4 or 1 )
+                                 : 0
+                             )
+                             ## </constant>
+     ||    ( ( $pos = $pad{I2394} ) && 0 ) )
+                           ## </group>
+    
+                         )
+                       )
+                       ## </alt>
+    ;
+                     { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                   };
+                   my $bool = ${$hash->{'bool'}};
+                   $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                   $bool;
+               }
+               ## </capture>
+     ||    ( ( $pos = $pad{I2390} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 17977 17983
+              (   ( $pad{I2395} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 17977 17982
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2395} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 17983 17991
+              (   ( $pad{I2396} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 17983 17990
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'ident'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2396} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 17991 17998
+             (
+              (   ( $pad{I2397} = $pos or 1 ) &&
+                 ## <metasyntax>
+                 ## pos: 17991 17996
+                 do {
+                      my $prior = $::_V6_PRIOR_;
+                      my $match =
+                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                      $::_V6_PRIOR_ = $prior;
+                      my $bool = (!$match != 1);
+                      $pos = $match->to if $bool;
+                      $match;
+                 }
+                 ## </metasyntax>
+     ||    ( ( $pos = $pad{I2397} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 17998 18010
+              (   ( $pad{I2398} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 17998 18001
+               ( ( substr( $s, $pos, 1 ) eq '{' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2398} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 18010 18025
+             (
+              (   ( $pad{I2399} = $pos or 1 ) &&
+                 ## <metasyntax>
+                 ## pos: 18010 18015
+                 do {
+                      my $prior = $::_V6_PRIOR_;
+                      my $match =
+                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                      $::_V6_PRIOR_ = $prior;
+                      my $bool = (!$match != 1);
+                      $pos = $match->to if $bool;
+                      $match;
+                 }
+                 ## </metasyntax>
+     ||    ( ( $pos = $pad{I2399} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18025 18036
+              (   ( $pad{I2400} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 18025 18031
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->rule( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'rule'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2400} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18036 18040
+              (   ( $pad{I2401} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 18036 18039
+               ( ( substr( $s, $pos, 1 ) eq '}' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2401} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 18040 18050
+             (
+              (   ( $pad{I2402} = $pos or 1 ) &&
+    
+                 ## <constant>
+                 ## pos: 18040 18043
+                 ( ( substr( $s, $pos, 1 ) eq ';' )
+                     ? ( $pos += 1 or 1 )
+                     : 0
+                 )
+                 ## </constant>
+     ||    ( ( $pos = $pad{I2402} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18050 18162
+              (   ( $pad{I2403} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 18050 18161
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                type => ${ $_[0]->[0] },
+                name => ${ $_[0]->{qw(ident)} },
+                ast => ${ $_[0]->{qw(rule)} }
+            };
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2403} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token verbatim
+*verbatim =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 18224 18346
+           (
+      
+             ## <group>
+             ## pos: 18224 18229
+              (   ( $pad{I2404} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 18224 18228
+               ( ( substr( $s, $pos, 2 ) eq '%{' )
+                   ? ( $pos += 2 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2404} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18229 18255
+              (   ( $pad{I2405} = $pos or 1 ) &&
+    
+               ## <capture>
+               do{
+                   my $hash = do {
+                     my $bool = 1;
+                     my $from = $pos;
+                     my @match;
+                     my %named;
+                     $bool = 0 unless
+                       ## <quant>
+                       ## pos: 18230 18253
+                       do { while (
+                        (   ( $pad{I2406} = $pos or 1 ) &&
+                           ## <concat>
+                           ## pos: 18232 18250
+                           (
+      
+                             ## <group>
+                             ## pos: 18232 18248
+                              (   ( $pad{I2407} = $pos or 1 ) &&
+                               ## <negate>
+                               ## pos: 18233 18247
+                               do{
+                                   my $pos1 = $pos;
+                                   do {
+                                     my $pos = $pos1;
+                                     my $from = $pos;
+                                     my @match;
+                                     my %named;
+                                     $bool = 
+                                         ## <before>
+                                         ## pos: 18242 18246
+                                         do{
+                                             my $pos1 = $pos;
+                                             do {
+                                               my $pos = $pos1;
+                                               my $from = $pos;
+                                               my @match;
+                                               my %named;
+                                               $bool = 0 unless
+    
+                                                   ## <constant>
+                                                   ## pos: 18242 18246
+                                                   ( ( substr( $s, $pos, 2 ) eq '%}' )
+                                                       ? ( $pos += 2 or 1 )
+                                                       : 0
+                                                   )
+                                                   ## </constant>
+    ;
+                                               $bool;
+                                             };
+                                         }
+                                         ## </before>
+     ? 0 : 1;
+                                     $bool;
+                                   };
+                               }
+                               ## </negate>
+     ||    ( ( $pos = $pad{I2407} ) && 0 ) )
+                             ## </group>
+    
+                           &&
+      
+                             ## <group>
+                             ## pos: 18248 18250
+                              (   ( $pad{I2408} = $pos or 1 ) &&
+    
+                               ## <dot>
+                               ## pos: 18248 18249
+                               ( substr( $s, $pos++, 1 ) ne '' )
+                               ## </dot>
+     ||    ( ( $pos = $pad{I2408} ) && 0 ) )
+                             ## </group>
+    
+                           )
+                           ## </concat>
+     ||    ( ( $pos = $pad{I2406} ) && 0 ) )) {}; $bool = 1 }
+                       ## </quant>
+    ;
+                     { str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
+                   };
+                   my $bool = ${$hash->{'bool'}};
+                   $match[ 0 ] = Pugs::Runtime::Match->new( $hash );
+                   $bool;
+               }
+               ## </capture>
+     ||    ( ( $pos = $pad{I2405} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18255 18264
+              (   ( $pad{I2409} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 18255 18259
+               ( ( substr( $s, $pos, 2 ) eq '%}' )
+                   ? ( $pos += 2 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2409} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18264 18346
+              (   ( $pad{I2410} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 18264 18345
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                type => 'block',
+                value => ${ $_[0]->[0] }
+            };
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2410} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token item
+*item =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <alt>
+           ## pos: 18366 18458
+           (
+               ( $pad{I2411} = $pos or 1 )
+               && (
+               ## <concat>
+               ## pos: 18367 18414
+               (
+      
+                 ## <group>
+                 ## pos: 18367 18385
+                  (   ( $pad{I2412} = $pos or 1 ) &&
+                   ## <named_capture>
+                   ## pos: 18368 18378
+                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                               $grammar->verbatim( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'verbatim'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                   ## </named_capture>
+     ||    ( ( $pos = $pad{I2412} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 18385 18414
+                  (   ( $pad{I2413} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 18385 18409
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(verbatim)} }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2413} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+               )
+             || (
+               ( ( $bool = 1 ) && ( $pos = $pad{I2411} ) or 1 )
+               &&            ## <concat>
+               ## pos: 18415 18458
+               (
+      
+                 ## <group>
+                 ## pos: 18415 18430
+                  (   ( $pad{I2414} = $pos or 1 ) &&
+                   ## <named_capture>
+                   ## pos: 18416 18429
+                   do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                               $grammar->named_regex( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'named_regex'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                   ## </named_capture>
+     ||    ( ( $pos = $pad{I2414} ) && 0 ) )
+                 ## </group>
+    
+               &&
+      
+                 ## <group>
+                 ## pos: 18430 18458
+                  (   ( $pad{I2415} = $pos or 1 ) &&
+                   ## <closure>
+                   ## pos: 18430 18457
+                   do {
+                     local $::_V6_SUCCEED = 1;
+                     $::_V6_MATCH_ = $m;
+                     $m->data->{capture} = \( sub { return ${ $_[0]->{qw(named_regex)} }; }->( $m ) ); 
+                     $bool = $::_V6_SUCCEED;
+                     $::_V6_MATCH_ = $m if $bool; 
+                     return $m if $bool; 
+                   }
+                   ## </closure>
+     ||    ( ( $pos = $pad{I2415} ) && 0 ) )
+                 ## </group>
+    
+               )
+               ## </concat>
+    
+             )
+           )
+           ## </alt>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token grammar
+*grammar =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 18481 18597
+           (
+             ## <quant>
+             ## pos: 18481 18488
+             (
+              (   ( $pad{I2416} = $pos or 1 ) &&
+                 ## <metasyntax>
+                 ## pos: 18481 18486
+                 do {
+                      my $prior = $::_V6_PRIOR_;
+                      my $match =
+                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                      $::_V6_PRIOR_ = $prior;
+                      my $bool = (!$match != 1);
+                      $pos = $match->to if $bool;
+                      $match;
+                 }
+                 ## </metasyntax>
+     ||    ( ( $pos = $pad{I2416} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18488 18498
+              (   ( $pad{I2417} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 18488 18497
+               ( ( substr( $s, $pos, 7 ) eq 'grammar' )
+                   ? ( $pos += 7 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2417} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18498 18504
+              (   ( $pad{I2418} = $pos or 1 ) &&
+               ## <metasyntax>
+               ## pos: 18498 18503
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    my $bool = (!$match != 1);
+                    $pos = $match->to if $bool;
+                    $match;
+               }
+               ## </metasyntax>
+     ||    ( ( $pos = $pad{I2418} ) && 0 ) )
+             ## </group>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18504 18512
+              (   ( $pad{I2419} = $pos or 1 ) &&
+               ## <named_capture>
+               ## pos: 18504 18511
+               do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                           $grammar->ident( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { $named{'ident'} = $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+               ## </named_capture>
+     ||    ( ( $pos = $pad{I2419} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 18512 18519
+             (
+              (   ( $pad{I2420} = $pos or 1 ) &&
+                 ## <metasyntax>
+                 ## pos: 18512 18517
+                 do {
+                      my $prior = $::_V6_PRIOR_;
+                      my $match =
+                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                      $::_V6_PRIOR_ = $prior;
+                      my $bool = (!$match != 1);
+                      $pos = $match->to if $bool;
+                      $match;
+                 }
+                 ## </metasyntax>
+     ||    ( ( $pos = $pad{I2420} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18519 18527
+              (   ( $pad{I2421} = $pos or 1 ) &&
+    
+               ## <constant>
+               ## pos: 18519 18522
+               ( ( substr( $s, $pos, 1 ) eq ';' )
+                   ? ( $pos += 1 or 1 )
+                   : 0
+               )
+               ## </constant>
+     ||    ( ( $pos = $pad{I2421} ) && 0 ) )
+             ## </group>
+    
+           &&
+             ## <quant>
+             ## pos: 18527 18538
+             (
+              (   ( $pad{I2422} = $pos or 1 ) &&
+                 ## <metasyntax>
+                 ## pos: 18527 18532
+                 do {
+                      my $prior = $::_V6_PRIOR_;
+                      my $match =
+                             $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                      $::_V6_PRIOR_ = $prior;
+                      my $bool = (!$match != 1);
+                      $pos = $match->to if $bool;
+                      $match;
+                 }
+                 ## </metasyntax>
+     ||    ( ( $pos = $pad{I2422} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 18538 18561
+             do { while (
+              (   ( $pad{I2423} = $pos or 1 ) &&
+                 ## <concat>
+                 ## pos: 18539 18554
+                 (
+      
+                   ## <group>
+                   ## pos: 18539 18547
+                    (   ( $pad{I2424} = $pos or 1 ) &&
+                     ## <named_capture>
+                     ## pos: 18540 18546
+                     do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                                 $grammar->item( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'item'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                     ## </named_capture>
+     ||    ( ( $pos = $pad{I2424} ) && 0 ) )
+                   ## </group>
+    
+                 &&
+                   ## <quant>
+                   ## pos: 18547 18554
+                   (
+                    (   ( $pad{I2425} = $pos or 1 ) &&
+                       ## <metasyntax>
+                       ## pos: 18547 18552
+                       do {
+                            my $prior = $::_V6_PRIOR_;
+                            my $match =
+                                   $grammar->ws( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                            $::_V6_PRIOR_ = $prior;
+                            my $bool = (!$match != 1);
+                            $pos = $match->to if $bool;
+                            $match;
+                       }
+                       ## </metasyntax>
+     ||    ( ( $pos = $pad{I2425} ) && 0 ) )
+                   || ( $bool = 1 )
+                   )
+                   ## </quant>
+    
+                 )
+                 ## </concat>
+     ||    ( ( $pos = $pad{I2423} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18561 18597
+              (   ( $pad{I2426} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 18561 18596
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return { ${ $_[0]->{qw(ident)} } => $_[0]->{qw(item)} } }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2426} ) && 0 ) )
+             ## </group>
+    
+           )
+           ## </concat>
+    ;
+        }
+        if ( $bool ) {
+          my $prior = $::_V6_PRIOR_;
+          $::_V6_PRIOR_ = sub {
+            local $main::_V6_PRIOR_ = $prior;
+            $rule->(@_);
+          };
+          #warn "pos2 = ", $pos, "\n";
+          pos($_[1]) = $pos if $_[3]{continue};
+          last;
+        }
+      } # /for
+      $::_V6_MATCH_ = $m;
+      return $m;
+    } }
+    ## </global>
+;
+
+# token spec
+*spec =
+    ## <global>
+    ## sigspace: 0
+    ## ratchet: 1
+    do { my $rule; $rule = sub {
+      my $grammar = $_[0];
+      my $s = $_[1];
+      $_[3] = $_[2] unless defined $_[3]; # backwards compat
+      no warnings 'substr', 'uninitialized', 'syntax';
+      my %pad;
+      my $m;
+      my $bool;
+      my @pos;
+      # XXX :pos(X) takes the precedence over :continue ?
+      if (defined $_[3]{p}) {
+        push @pos, $_[3]{p} || 0;
+      } elsif ($_[3]{continue}) {
+        push @pos, (pos($_[1]) || 0) .. length($s);
+      } else {
+        push @pos, 0..length($s);
+      }
+      for my $pos ( @pos ) {
+        my %index;
+        my @match;
+        my %named;
+        $bool = 1;
+        $named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
+        $m = Pugs::Runtime::Match->new( {
+          str => \$s, from => \(0+$pos), to => \($pos),
+          bool => \$bool, match => \@match, named => \%named, capture => undef,
+        } );
+        {
+          my $prior = $::_V6_PRIOR_;
+          local $::_V6_PRIOR_ = $prior;
+          $bool = 0 unless
+           ## <concat>
+           ## pos: 18617 18737
+           (
+             ## <quant>
+             ## pos: 18617 18633
+             (
+              (   ( $pad{I2427} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 18617 18627
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->verbatim( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'verbatim'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2427} ) && 0 ) )
+             || ( $bool = 1 )
+             )
+             ## </quant>
+    
+           &&
+             ## <quant>
+             ## pos: 18633 18648
+             do { while (
+              (   ( $pad{I2428} = $pos or 1 ) &&
+                 ## <named_capture>
+                 ## pos: 18633 18642
+                 do {
+                    my $prior = $::_V6_PRIOR_;
+                    my $match =
+                             $grammar->grammar( $s, { p => $pos, positionals => [  ], args => {}, }, undef );
+                    $::_V6_PRIOR_ = $prior;
+                    if ( $match ) { push @{$named{'grammar'}}, $match;
+                        $pos = $match->to;
+                        1
+                    }
+                    else { 0 }
+                }
+                 ## </named_capture>
+     ||    ( ( $pos = $pad{I2428} ) && 0 ) )) {}; $bool = 1 }
+             ## </quant>
+    
+           &&
+      
+             ## <group>
+             ## pos: 18648 18737
+              (   ( $pad{I2429} = $pos or 1 ) &&
+               ## <closure>
+               ## pos: 18648 18736
+               do {
+                 local $::_V6_SUCCEED = 1;
+                 $::_V6_MATCH_ = $m;
+                 $m->data->{capture} = \( sub { return {
+                block => $_[0]->{qw(verbatim)},
+                'grammar' => $_[0]->{qw(grammar)} }
+        }->( $m ) ); 
+                 $bool = $::_V6_SUCCEED;
+                 $::_V6_MATCH_ = $m if $bool; 
+                 return $m if $bool; 
+               }
+               ## </closure>
+     ||    ( ( $pos = $pad{I2429} ) && 0 ) )
              ## </group>
     
            )
diff --git a/blib6/pugs/perl5/lib/Pugs/Runtime/Common.pm b/blib6/pugs/perl5/lib/Pugs/Runtime/Common.pm
--- a/blib6/pugs/perl5/lib/Pugs/Runtime/Common.pm
+++ b/blib6/pugs/perl5/lib/Pugs/Runtime/Common.pm
@@ -20,7 +20,7 @@
     ''    => '',
 );
 
-our %perl6_name = (
+my @names = (
     # perl 5        => # perl 6
     '%::ENV'        => '%*ENV',  
     '$^O'           => '$*OS',  
@@ -42,7 +42,8 @@
     '$::_V6_COMPILER_NAME'    => '$?COMPILER', 
     '$::_V6_COMPILER_VERSION' => '$?VERSION',
 );
-our %perl5_name = reverse %perl6_name;
+our %perl6_name = @names;
+our %perl5_name = reverse @names;
 
 sub mangle_ident {
     my $s = shift;
@@ -53,7 +54,6 @@
 
 sub mangle_var {
     my $s = $_[0];
-    #warn "mangle: $s";
     return $perl5_name{$s} if exists $perl5_name{$s};
     substr($s,1) =~ s/ ([^a-zA-Z0-9_:] | (?<!:):(?!:)) / '_'.ord($1).'_' /xge;
     return $s;
diff --git a/blib6/pugs/perl5/lib/Pugs/Runtime/Regex.pm b/blib6/pugs/perl5/lib/Pugs/Runtime/Regex.pm
--- a/blib6/pugs/perl5/lib/Pugs/Runtime/Regex.pm
+++ b/blib6/pugs/perl5/lib/Pugs/Runtime/Regex.pm
@@ -213,10 +213,12 @@
     }
     return sub {
         #use charnames ':full';
-        my $bool = $_[7]{ignorecase}
-            ? substr( $_[0], $_[5] ) =~ m/(?i)$rx/
-            : substr( $_[0], $_[5] ) =~ m/$rx/;
-        $_[3] = Pugs::Runtime::Match->new({ 
+        my $bool;
+        eval {
+            $bool = $_[7]{ignorecase}
+                ? substr( $_[0], $_[5] ) =~ m/(?i)$rx/
+                : substr( $_[0], $_[5] ) =~ m/$rx/;
+            $_[3] = Pugs::Runtime::Match->new({ 
                 bool  => \$bool,
                 str   => \$_[0],
                 from  => \(0 + $_[5]),
@@ -224,6 +226,12 @@
                 named => {},
                 match => [],
             });
+            1;
+        } 
+        or do {
+            die "$@ in perl5 regex: /$rx/";
+        };
+        $_[3];
     };
 }
 
diff --git a/cbits/Test_pm.c b/cbits/Test_pm.c
# file too large to diff: cbits/Test_pm.c
diff --git a/src/Pugs/Parser.hs b/src/Pugs/Parser.hs
--- a/src/Pugs/Parser.hs
+++ b/src/Pugs/Parser.hs
@@ -474,11 +474,10 @@
         sub <- ruleHashSubscript
         -- Not exactly un-evil
         let (Syn "{}" [_, expr]) = sub (Val VUndef)
-        Val (VStr name) <- unsafeEvalExp $
-            App (_Var "&*join") 
-            Nothing 
-            (Val (VStr " ") : [expr])
-        return name
+            exprs = case expr of
+                Syn "," es  -> es
+                e           -> [e]
+        return $ unwords [ str | Val (VStr str) <- exprs ]
     return $ categ ++ name
 
 
diff --git a/src/Pugs/Version.hs b/src/Pugs/Version.hs
--- a/src/Pugs/Version.hs
+++ b/src/Pugs/Version.hs
@@ -14,10 +14,10 @@
 -- #include "pugs_version.h"
 
 #ifndef PUGS_VERSION
-#define PUGS_VERSION "6.2.13.10"
+#define PUGS_VERSION "6.2.13.11"
 #endif
 #ifndef PUGS_DATE
-#define PUGS_DATE "July 26, 2008"
+#define PUGS_DATE "July 31, 2008"
 #endif
 #ifndef PUGS_SVN_REVISION
 #define PUGS_SVN_REVISION 0
