Annotation of embedaddon/pcre/testdata/testinput11, revision 1.1.1.1

1.1       misho       1: /-- These tests are for the Perl >= 5.10 features that PCRE supports. --/
                      2: 
                      3: /\H\h\V\v/
                      4:     X X\x0a
                      5:     X\x09X\x0b
                      6:     ** Failers
                      7:     \xa0 X\x0a   
                      8:     
                      9: /\H*\h+\V?\v{3,4}/ 
                     10:     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
                     11:     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
                     12:     \x09\x20\xa0\x0a\x0b\x0c
                     13:     ** Failers 
                     14:     \x09\x20\xa0\x0a\x0b
                     15:      
                     16: /\H{3,4}/
                     17:     XY  ABCDE
                     18:     XY  PQR ST 
                     19:     
                     20: /.\h{3,4}./
                     21:     XY  AB    PQRS
                     22: 
                     23: /\h*X\h?\H+Y\H?Z/
                     24:     >XNNNYZ
                     25:     >  X NYQZ
                     26:     ** Failers
                     27:     >XYZ   
                     28:     >  X NY Z
                     29: 
                     30: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
                     31:     >XY\x0aZ\x0aA\x0bNN\x0c
                     32:     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
                     33: 
                     34: /(foo)\Kbar/
                     35:     foobar
                     36:    
                     37: /(foo)(\Kbar|baz)/
                     38:     foobar
                     39:     foobaz 
                     40: 
                     41: /(foo\Kbar)baz/
                     42:     foobarbaz
                     43: 
                     44: /abc\K|def\K/g+
                     45:     Xabcdefghi
                     46: 
                     47: /ab\Kc|de\Kf/g+
                     48:     Xabcdefghi
                     49:     
                     50: /(?=C)/g+
                     51:     ABCDECBA
                     52:     
                     53: /^abc\K/+
                     54:     abcdef
                     55:     ** Failers
                     56:     defabcxyz   
                     57: 
                     58: /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
                     59:     ababababbbabZXXXX
                     60: 
                     61: /(?<A>tom|bon)-\g{A}/
                     62:     tom-tom
                     63:     bon-bon 
                     64:     
                     65: /(^(a|b\g{-1}))/
                     66:     bacxxx
                     67: 
                     68: /(?|(abc)|(xyz))\1/
                     69:     abcabc
                     70:     xyzxyz 
                     71:     ** Failers
                     72:     abcxyz
                     73:     xyzabc   
                     74:     
                     75: /(?|(abc)|(xyz))(?1)/
                     76:     abcabc
                     77:     xyzabc 
                     78:     ** Failers 
                     79:     xyzxyz 
                     80:  
                     81: /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
                     82:     XYabcdY
                     83: 
                     84: /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
                     85:     XYabcdY
                     86: 
                     87: /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
                     88:     XYabcdY
                     89: 
                     90: /(?'abc'\w+):\k<abc>{2}/
                     91:     a:aaxyz
                     92:     ab:ababxyz
                     93:     ** Failers
                     94:     a:axyz
                     95:     ab:abxyz
                     96: 
                     97: /(?'abc'\w+):\g{abc}{2}/
                     98:     a:aaxyz
                     99:     ab:ababxyz
                    100:     ** Failers
                    101:     a:axyz
                    102:     ab:abxyz
                    103: 
                    104: /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
                    105:     abd
                    106:     ce
                    107: 
                    108: /^(a.)\g-1Z/
                    109:     aXaXZ
                    110: 
                    111: /^(a.)\g{-1}Z/
                    112:     aXaXZ
                    113: 
                    114: /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
                    115:     abcd
                    116: 
                    117: /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
                    118:   (?(DEFINE)
                    119:   (?<NAME_PAT>[a-z]+)
                    120:   (?<ADDRESS_PAT>\d+)
                    121:   )/x
                    122:     metcalfe 33
                    123: 
                    124: /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
                    125:     1.2.3.4
                    126:     131.111.10.206
                    127:     10.0.0.0
                    128:     ** Failers
                    129:     10.6
                    130:     455.3.4.5
                    131: 
                    132: /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
                    133:     1.2.3.4
                    134:     131.111.10.206
                    135:     10.0.0.0
                    136:     ** Failers
                    137:     10.6
                    138:     455.3.4.5
                    139: 
                    140: /^(\w++|\s++)*$/
                    141:     now is the time for all good men to come to the aid of the party
                    142:     *** Failers
                    143:     this is not a line with only words and spaces!
                    144: 
                    145: /(\d++)(\w)/
                    146:     12345a
                    147:     *** Failers
                    148:     12345+
                    149: 
                    150: /a++b/
                    151:     aaab
                    152: 
                    153: /(a++b)/
                    154:     aaab
                    155: 
                    156: /(a++)b/
                    157:     aaab
                    158: 
                    159: /([^()]++|\([^()]*\))+/
                    160:     ((abc(ade)ufh()()x
                    161: 
                    162: /\(([^()]++|\([^()]+\))+\)/
                    163:     (abc)
                    164:     (abc(def)xyz)
                    165:     *** Failers
                    166:     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                    167: 
                    168: /^([^()]|\((?1)*\))*$/
                    169:     abc
                    170:     a(b)c
                    171:     a(b(c))d
                    172:     *** Failers)
                    173:     a(b(c)d
                    174: 
                    175: /^>abc>([^()]|\((?1)*\))*<xyz<$/
                    176:    >abc>123<xyz<
                    177:    >abc>1(2)3<xyz<
                    178:    >abc>(1(2)3)<xyz<
                    179: 
                    180: /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
                    181:     1221
                    182:     Satanoscillatemymetallicsonatas
                    183:     AmanaplanacanalPanama
                    184:     AblewasIereIsawElba
                    185:     *** Failers
                    186:     Thequickbrownfox
                    187: 
                    188: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
                    189:     12
                    190:     (((2+2)*-3)-7)
                    191:     -12
                    192:     *** Failers
                    193:     ((2+2)*-3)-7)
                    194: 
                    195: /^(x(y|(?1){2})z)/
                    196:     xyz
                    197:     xxyzxyzz
                    198:     *** Failers
                    199:     xxyzz
                    200:     xxyzxyzxyzz
                    201: 
                    202: /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
                    203:     <>
                    204:     <abcd>
                    205:     <abc <123> hij>
                    206:     <abc <def> hij>
                    207:     <abc<>def>
                    208:     <abc<>
                    209:     *** Failers
                    210:     <abc
                    211: 
                    212: /^a+(*FAIL)/
                    213:     aaaaaa
                    214:     
                    215: /a+b?c+(*FAIL)/
                    216:     aaabccc
                    217: 
                    218: /a+b?(*PRUNE)c+(*FAIL)/
                    219:     aaabccc
                    220: 
                    221: /a+b?(*COMMIT)c+(*FAIL)/
                    222:     aaabccc
                    223:     
                    224: /a+b?(*SKIP)c+(*FAIL)/
                    225:     aaabcccaaabccc
                    226: 
                    227: /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
                    228:     aaaxxxxxx
                    229:     aaa++++++ 
                    230:     bbbxxxxx
                    231:     bbb+++++ 
                    232:     cccxxxx
                    233:     ccc++++ 
                    234:     dddddddd   
                    235: 
                    236: /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
                    237:     aaaxxxxxx
                    238:     aaa++++++ 
                    239:     bbbxxxxx
                    240:     bbb+++++ 
                    241:     cccxxxx
                    242:     ccc++++ 
                    243:     dddddddd   
                    244: 
                    245: /a+b?(*THEN)c+(*FAIL)/
                    246:     aaabccc
                    247: 
                    248: /(A (A|B(*ACCEPT)|C) D)(E)/x
                    249:     AB
                    250:     ABX
                    251:     AADE
                    252:     ACDE
                    253:     ** Failers
                    254:     AD 
                    255:         
                    256: /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
                    257:     1221
                    258:     Satan, oscillate my metallic sonatas!
                    259:     A man, a plan, a canal: Panama!
                    260:     Able was I ere I saw Elba.
                    261:     *** Failers
                    262:     The quick brown fox
                    263: 
                    264: /^((.)(?1)\2|.)$/
                    265:     a
                    266:     aba
                    267:     aabaa  
                    268:     abcdcba 
                    269:     pqaabaaqp  
                    270:     ablewasiereisawelba
                    271:     rhubarb
                    272:     the quick brown fox  
                    273: 
                    274: /(a)(?<=b(?1))/
                    275:     baz
                    276:     ** Failers
                    277:     caz  
                    278:     
                    279: /(?<=b(?1))(a)/
                    280:     zbaaz
                    281:     ** Failers
                    282:     aaa  
                    283:     
                    284: /(?<X>a)(?<=b(?&X))/
                    285:     baz
                    286: 
                    287: /^(?|(abc)|(def))\1/
                    288:     abcabc
                    289:     defdef 
                    290:     ** Failers
                    291:     abcdef
                    292:     defabc   
                    293:     
                    294: /^(?|(abc)|(def))(?1)/
                    295:     abcabc
                    296:     defabc
                    297:     ** Failers
                    298:     defdef
                    299:     abcdef    
                    300: 
                    301: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
                    302:     a\"aaaaa
                    303:     b\"aaaaa 
                    304:     ** Failers 
                    305:     b\"11111
                    306: 
                    307: /(?:(?1)|B)(A(*F)|C)/
                    308:     ABCD
                    309:     CCD
                    310:     ** Failers
                    311:     CAD   
                    312: 
                    313: /^(?:(?1)|B)(A(*F)|C)/
                    314:     CCD
                    315:     BCD 
                    316:     ** Failers
                    317:     ABCD
                    318:     CAD
                    319:     BAD    
                    320: 
                    321: /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
                    322:     AAD
                    323:     ACD
                    324:     BAD
                    325:     BCD
                    326:     BAX  
                    327:     ** Failers
                    328:     ACX
                    329:     ABC   
                    330: 
                    331: /(?(DEFINE)(A))B(?1)C/
                    332:     BAC
                    333: 
                    334: /(?(DEFINE)((A)\2))B(?1)C/
                    335:     BAAC
                    336: 
                    337: /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
                    338:     (ab(cd)ef)
                    339: 
                    340: /^(?!a(*SKIP)b)/
                    341:     ac
                    342:     
                    343: /^(?=a(*SKIP)b|ac)/
                    344:     ** Failers
                    345:     ac
                    346:     
                    347: /^(?=a(*THEN)b|ac)/
                    348:     ac
                    349:     
                    350: /^(?=a(*PRUNE)b)/
                    351:     ab  
                    352:     ** Failers 
                    353:     ac
                    354: 
                    355: /^(?=a(*ACCEPT)b)/
                    356:     ac
                    357: 
                    358: /^(?(?!a(*SKIP)b))/
                    359:     ac
                    360: 
                    361: /(?>a\Kb)/
                    362:     ab
                    363: 
                    364: /((?>a\Kb))/
                    365:     ab
                    366: 
                    367: /(a\Kb)/
                    368:     ab
                    369:     
                    370: /^a\Kcz|ac/
                    371:     ac
                    372:     
                    373: /(?>a\Kbz|ab)/
                    374:     ab 
                    375: 
                    376: /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
                    377:     ab
                    378: 
                    379: /^([^()]|\((?1)*\))*$/
                    380:     a(b)c
                    381:     a(b(c)d)e 
                    382: 
                    383: /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
                    384:     0
                    385:     00
                    386:     0000  
                    387: 
                    388: /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
                    389:     0
                    390:     00
                    391:     0000  
                    392: 
                    393: /--- This one does fail, as expected, in Perl. It needs the complex item at the
                    394:      end of the pattern. A single letter instead of (B|D) makes it not fail,
                    395:      which I think is a Perl bug. --- /
                    396: 
                    397: /A(*COMMIT)(B|D)/
                    398:     ACABX
                    399: 
                    400: /--- Check the use of names for failure ---/
                    401: 
                    402: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
                    403:     ** Failers
                    404:     AC
                    405:     CB    
                    406:     
                    407: /--- Force no study, otherwise mark is not seen. The studied version is in
                    408:      test 2 because it isn't Perl-compatible. ---/
                    409: 
                    410: /(*MARK:A)(*SKIP:B)(C|X)/KSS
                    411:     C
                    412:     D
                    413:      
                    414: /^(A(*THEN:A)B|C(*THEN:B)D)/K
                    415:     ** Failers
                    416:     CB    
                    417: 
                    418: /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
                    419:     CB    
                    420:     
                    421: /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
                    422:     CB    
                    423:     
                    424: /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
                    425: that we have to have something complicated such as (B|Z) at the end because,
                    426: for Perl, a simple character somehow causes an unwanted optimization to mess
                    427: with the handling of backtracking verbs. ---/
                    428: 
                    429: /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
                    430:     AAAC
                    431:     
                    432: /--- Test skipping over a non-matching mark. ---/
                    433: 
                    434: /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
                    435:     AAAC
                    436:     
                    437: /--- Check shorthand for MARK ---/
                    438: 
                    439: /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
                    440:     AAAC
                    441: 
                    442: /--- Don't loop! Force no study, otherwise mark is not seen. ---/
                    443: 
                    444: /(*:A)A+(*SKIP:A)(B|Z)/KSS
                    445:     AAAC
                    446: 
                    447: /--- This should succeed, as a non-existent skip name disables the skip ---/ 
                    448: 
                    449: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
                    450:     AAAC
                    451: 
                    452: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
                    453:     AAAC
                    454: 
                    455: /--- COMMIT at the start of a pattern should act like an anchor. Again, 
                    456: however, we need the complication for Perl. ---/
                    457: 
                    458: /(*COMMIT)(A|P)(B|P)(C|P)/
                    459:     ABCDEFG
                    460:     ** Failers
                    461:     DEFGABC  
                    462: 
                    463: /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
                    464: 
                    465: /(\w+)(?>b(*COMMIT))\w{2}/
                    466:     abbb
                    467: 
                    468: /(\w+)b(*COMMIT)\w{2}/
                    469:     abbb
                    470: 
                    471: /--- Check opening parens in comment when seeking forward reference. ---/ 
                    472: 
                    473: /(?&t)(?#()(?(DEFINE)(?<t>a))/
                    474:     bac
                    475: 
                    476: /--- COMMIT should override THEN ---/
                    477: 
                    478: /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
                    479:   yes
                    480: 
                    481: /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
                    482:   yes
                    483: 
                    484: /b?(*SKIP)c/
                    485:     bc
                    486:     abc
                    487:    
                    488: /(*SKIP)bc/
                    489:     a
                    490: 
                    491: /(*SKIP)b/
                    492:     a 
                    493: 
                    494: /(?P<abn>(?P=abn)xxx|)+/
                    495:     xxx
                    496: 
                    497: /(?i:([^b]))(?1)/
                    498:     aa
                    499:     aA     
                    500:     ** Failers
                    501:     ab
                    502:     aB
                    503:     Ba
                    504:     ba
                    505: 
                    506: /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
                    507:     aaaaaaX
                    508:     ** Failers 
                    509:     aaaaaa 
                    510: 
                    511: /^(?&t)*(?(DEFINE)(?<t>a))\w$/
                    512:     aaaaaaX
                    513:     aaaaaa 
                    514: 
                    515: /^(a)*+(\w)/
                    516:     aaaaX
                    517:     YZ 
                    518:     ** Failers 
                    519:     aaaa
                    520: 
                    521: /^(?:a)*+(\w)/
                    522:     aaaaX
                    523:     YZ 
                    524:     ** Failers 
                    525:     aaaa
                    526: 
                    527: /^(a)++(\w)/
                    528:     aaaaX
                    529:     ** Failers 
                    530:     aaaa
                    531:     YZ 
                    532: 
                    533: /^(?:a)++(\w)/
                    534:     aaaaX
                    535:     ** Failers 
                    536:     aaaa
                    537:     YZ 
                    538: 
                    539: /^(a)?+(\w)/
                    540:     aaaaX
                    541:     YZ 
                    542: 
                    543: /^(?:a)?+(\w)/
                    544:     aaaaX
                    545:     YZ 
                    546: 
                    547: /^(a){2,}+(\w)/
                    548:     aaaaX
                    549:     ** Failers
                    550:     aaa
                    551:     YZ 
                    552: 
                    553: /^(?:a){2,}+(\w)/
                    554:     aaaaX
                    555:     ** Failers
                    556:     aaa
                    557:     YZ 
                    558: 
                    559: /(a|)*(?1)b/
                    560:     b
                    561:     ab
                    562:     aab  
                    563: 
                    564: /(a)++(?1)b/
                    565:     ** Failers
                    566:     ab 
                    567:     aab
                    568: 
                    569: /(a)*+(?1)b/
                    570:     ** Failers
                    571:     ab
                    572:     aab  
                    573: 
                    574: /(?1)(?:(b)){0}/
                    575:     b
                    576: 
                    577: /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
                    578:     foo(bar(baz)+baz(bop))
                    579: 
                    580: /(A (A|B(*ACCEPT)|C) D)(E)/x
                    581:     AB
                    582: 
                    583: /\A.*?(?:a|b(*THEN)c)/
                    584:     ba
                    585: 
                    586: /\A.*?(?:a|bc)/
                    587:     ba
                    588: 
                    589: /\A.*?(a|b(*THEN)c)/
                    590:     ba
                    591: 
                    592: /\A.*?(a|bc)/
                    593:     ba
                    594: 
                    595: /\A.*?(?:a|b(*THEN)c)++/
                    596:     ba
                    597: 
                    598: /\A.*?(?:a|bc)++/
                    599:     ba
                    600: 
                    601: /\A.*?(a|b(*THEN)c)++/
                    602:     ba
                    603: 
                    604: /\A.*?(a|bc)++/
                    605:     ba
                    606: 
                    607: /\A.*?(?:a|b(*THEN)c|d)/
                    608:     ba
                    609: 
                    610: /\A.*?(?:a|bc|d)/
                    611:     ba
                    612: 
                    613: /(?:(b))++/
                    614:     beetle
                    615: 
                    616: /(?(?=(a(*ACCEPT)z))a)/
                    617:     a
                    618: 
                    619: /^(a)(?1)+ab/
                    620:     aaaab
                    621:     
                    622: /^(a)(?1)++ab/
                    623:     aaaab
                    624: 
                    625: /^(?=a(*:M))aZ/K
                    626:     aZbc
                    627: 
                    628: /^(?!(*:M)b)aZ/K
                    629:     aZbc
                    630: 
                    631: /(?(DEFINE)(a))?b(?1)/
                    632:     backgammon
                    633: 
                    634: /^\N+/
                    635:     abc\ndef
                    636:     
                    637: /^\N{1,}/
                    638:     abc\ndef 
                    639: 
                    640: /(?(R)a+|(?R)b)/
                    641:     aaaabcde
                    642: 
                    643: /(?(R)a+|((?R))b)/
                    644:     aaaabcde
                    645: 
                    646: /((?(R)a+|(?1)b))/
                    647:     aaaabcde
                    648: 
                    649: /((?(R1)a+|(?1)b))/
                    650:     aaaabcde
                    651: 
                    652: /a(*:any 
                    653: name)/K
                    654:     abc
                    655:     
                    656: /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
                    657:     a
                    658:     ba
                    659:     bba 
                    660:     
                    661: /--- Checking revised (*THEN) handling ---/ 
                    662: 
                    663: /--- Capture ---/
                    664: 
                    665: /^.*? (a(*THEN)b) c/x
                    666:     aabc
                    667: 
                    668: /^.*? (a(*THEN)b|(*F)) c/x
                    669:     aabc
                    670: 
                    671: /^.*? ( (a(*THEN)b) | (*F) ) c/x
                    672:     aabc
                    673: 
                    674: /^.*? ( (a(*THEN)b) ) c/x
                    675:     aabc
                    676: 
                    677: /--- Non-capture ---/
                    678: 
                    679: /^.*? (?:a(*THEN)b) c/x
                    680:     aabc
                    681: 
                    682: /^.*? (?:a(*THEN)b|(*F)) c/x
                    683:     aabc
                    684: 
                    685: /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
                    686:     aabc
                    687: 
                    688: /^.*? (?: (?:a(*THEN)b) ) c/x
                    689:     aabc
                    690: 
                    691: /--- Atomic ---/
                    692: 
                    693: /^.*? (?>a(*THEN)b) c/x
                    694:     aabc
                    695: 
                    696: /^.*? (?>a(*THEN)b|(*F)) c/x
                    697:     aabc
                    698: 
                    699: /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
                    700:     aabc
                    701: 
                    702: /^.*? (?> (?>a(*THEN)b) ) c/x
                    703:     aabc
                    704: 
                    705: /--- Possessive capture ---/
                    706: 
                    707: /^.*? (a(*THEN)b)++ c/x
                    708:     aabc
                    709: 
                    710: /^.*? (a(*THEN)b|(*F))++ c/x
                    711:     aabc
                    712: 
                    713: /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
                    714:     aabc
                    715: 
                    716: /^.*? ( (a(*THEN)b)++ )++ c/x
                    717:     aabc
                    718: 
                    719: /--- Possessive non-capture ---/
                    720: 
                    721: /^.*? (?:a(*THEN)b)++ c/x
                    722:     aabc
                    723: 
                    724: /^.*? (?:a(*THEN)b|(*F))++ c/x
                    725:     aabc
                    726: 
                    727: /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
                    728:     aabc
                    729: 
                    730: /^.*? (?: (?:a(*THEN)b)++ )++ c/x
                    731:     aabc
                    732:     
                    733: /--- Condition assertion ---/
                    734: 
                    735: /^(?(?=a(*THEN)b)ab|ac)/
                    736:     ac
                    737:  
                    738: /--- Condition ---/
                    739: 
                    740: /^.*?(?(?=a)a|b(*THEN)c)/
                    741:     ba
                    742: 
                    743: /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
                    744:     ba
                    745: 
                    746: /^.*?(?(?=a)a(*THEN)b|c)/
                    747:     ac
                    748: 
                    749: /--- Assertion ---/
                    750: 
                    751: /^.*(?=a(*THEN)b)/ 
                    752:     aabc
                    753: 
                    754: /------------------------------/
                    755: 
                    756: /(?>a(*:m))/imsxSK 
                    757:     a
                    758: 
                    759: /(?>(a)(*:m))/imsxSK 
                    760:     a
                    761: 
                    762: /(?<=a(*ACCEPT)b)c/
                    763:     xacd
                    764: 
                    765: /(?<=(a(*ACCEPT)b))c/
                    766:     xacd
                    767: 
                    768: /(?<=(a(*COMMIT)b))c/
                    769:     xabcd
                    770:     ** Failers 
                    771:     xacd
                    772:     
                    773: /(?<!a(*FAIL)b)c/
                    774:     xcd
                    775:     acd 
                    776: 
                    777: /(?<=a(*:N)b)c/K
                    778:     xabcd
                    779:     
                    780: /(?<=a(*PRUNE)b)c/
                    781:     xabcd 
                    782: 
                    783: /(?<=a(*SKIP)b)c/
                    784:     xabcd 
                    785: 
                    786: /(?<=a(*THEN)b)c/
                    787:     xabcd 
                    788: 
                    789: /(a)(?2){2}(.)/
                    790:     abcd
                    791: 
                    792: /(*MARK:A)(*PRUNE:B)(C|X)/KS
                    793:     C
                    794:     D 
                    795: 
                    796: /(*MARK:A)(*PRUNE:B)(C|X)/KSS
                    797:     C
                    798:     D 
                    799: 
                    800: /(*MARK:A)(*THEN:B)(C|X)/KS
                    801:     C
                    802:     D 
                    803: 
                    804: /(*MARK:A)(*THEN:B)(C|X)/KSY
                    805:     C
                    806:     D 
                    807: 
                    808: /(*MARK:A)(*THEN:B)(C|X)/KSS
                    809:     C
                    810:     D 
                    811: 
                    812: /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
                    813: 
                    814: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
                    815:     AAAC
                    816: 
                    817: /--- Same --/
                    818: 
                    819: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
                    820:     AAAC
                    821: 
                    822: /A(*:A)A+(*SKIP)(B|Z) | AC/xK
                    823:     AAAC
                    824: 
                    825: /--- This should fail, as a null name is the same as no name ---/
                    826: 
                    827: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
                    828:     AAAC
                    829: 
                    830: /--- A check on what happens after hitting a mark and them bumping along to
                    831: something that does not even start. Perl reports tags after the failures here, 
                    832: though it does not when the individual letters are made into something 
                    833: more complicated. ---/
                    834: 
                    835: /A(*:A)B|XX(*:B)Y/K
                    836:     AABC
                    837:     XXYZ 
                    838:     ** Failers
                    839:     XAQQ  
                    840:     XAQQXZZ  
                    841:     AXQQQ 
                    842:     AXXQQQ 
                    843:     
                    844: /^(A(*THEN:A)B|C(*THEN:B)D)/K
                    845:     AB
                    846:     CD
                    847:     ** Failers
                    848:     AC
                    849:     CB    
                    850:     
                    851: /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
                    852:     AB
                    853:     CD
                    854:     ** Failers
                    855:     AC
                    856:     CB    
                    857:     
                    858: /--- An empty name does not pass back an empty string. It is the same as if no
                    859: name were given. ---/ 
                    860: 
                    861: /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
                    862:     AB
                    863:     CD 
                    864: 
                    865: /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
                    866:     
                    867: /A(*PRUNE:A)B/K
                    868:     ACAB
                    869: 
                    870: /--- Mark names can be duplicated ---/
                    871: 
                    872: /A(*:A)B|X(*:A)Y/K
                    873:     AABC
                    874:     XXYZ 
                    875:     
                    876: /b(*:m)f|a(*:n)w/K
                    877:     aw 
                    878:     ** Failers 
                    879:     abc
                    880: 
                    881: /b(*:m)f|aw/K
                    882:     abaw
                    883:     ** Failers 
                    884:     abc
                    885:     abax 
                    886: 
                    887: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
                    888:     AAAC
                    889: 
                    890: /a(*PRUNE:X)bc|qq/KY
                    891:     ** Failers
                    892:     axy
                    893: 
                    894: /a(*THEN:X)bc|qq/KY
                    895:     ** Failers
                    896:     axy
                    897: 
                    898: /(?=a(*MARK:A)b)..x/K
                    899:     abxy
                    900:     ** Failers
                    901:     abpq  
                    902: 
                    903: /(?=a(*MARK:A)b)..(*:Y)x/K
                    904:     abxy
                    905:     ** Failers
                    906:     abpq  
                    907: 
                    908: /(?=a(*PRUNE:A)b)..x/K
                    909:     abxy
                    910:     ** Failers
                    911:     abpq  
                    912: 
                    913: /(?=a(*PRUNE:A)b)..(*:Y)x/K
                    914:     abxy
                    915:     ** Failers
                    916:     abpq  
                    917: 
                    918: /(?=a(*THEN:A)b)..x/K
                    919:     abxy
                    920:     ** Failers
                    921:     abpq  
                    922: 
                    923: /(?=a(*THEN:A)b)..(*:Y)x/K
                    924:     abxy
                    925:     ** Failers
                    926:     abpq  
                    927: 
                    928: /-- End of testinput11 --/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>