Pugs 6.2.13.10 → 6.2.13.11
raw patch · 12 files changed
+15287/−15191 lines, 12 filesdep +FindBin
Dependencies added: FindBin
Files
- Configure.PL +1/−1
- Pugs.cabal +2/−2
- blib6/pugs/perl5/lib/Pugs/Compiler/Rule.pm +1/−1
- blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5.pm +1/−0
- blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5/CharClass.pm +67/−27
- blib6/pugs/perl5/lib/Pugs/Grammar/Base.pm +13/−8
- blib6/pugs/perl5/lib/Pugs/Grammar/Rule.pmc +15181/−15138
- blib6/pugs/perl5/lib/Pugs/Runtime/Common.pm +3/−3
- blib6/pugs/perl5/lib/Pugs/Runtime/Regex.pm +12/−4
- cbits/Test_pm.c too large to diff
- src/Pugs/Parser.hs +4/−5
- src/Pugs/Version.hs +2/−2
Configure.PL view
@@ -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 << ".";
Pugs.cabal view
@@ -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,
blib6/pugs/perl5/lib/Pugs/Compiler/Rule.pm view
@@ -4,7 +4,7 @@ package Pugs::Compiler::Rule; -our $VERSION = '0.28';+our $VERSION = '0.35'; use base 'Pugs::Compiler::Regex';
blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5.pm view
@@ -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';
blib6/pugs/perl5/lib/Pugs/Emitter/Rule/Perl5/CharClass.pm view
@@ -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; }
blib6/pugs/perl5/lib/Pugs/Grammar/Base.pm view
@@ -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"
blib6/pugs/perl5/lib/Pugs/Grammar/Rule.pmc view
@@ -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> )
blib6/pugs/perl5/lib/Pugs/Runtime/Common.pm view
@@ -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;
blib6/pugs/perl5/lib/Pugs/Runtime/Regex.pm view
@@ -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]; }; }
cbits/Test_pm.c view
file too large to diff
src/Pugs/Parser.hs view
@@ -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
src/Pugs/Version.hs view
@@ -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