| # These are: |
| # |
| # (1) Tests of the match-limiting features. The results are different for |
| # interpretive or JIT matching, so this test should not be run with JIT. The |
| # same tests are run using JIT in test 17. |
| |
| # (2) Other tests that must not be run with JIT. |
| |
| /(a+)*zz/I |
| Capturing subpattern count = 1 |
| Starting code units: a z |
| Last code unit = 'z' |
| Subject length lower bound = 2 |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits |
| Minimum match limit = 8 |
| Minimum recursion limit = 6 |
| 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz |
| 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| aaaaaaaaaaaaaz\=find_limits |
| Minimum match limit = 32768 |
| Minimum recursion limit = 29 |
| No match |
| |
| !((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I |
| Capturing subpattern count = 1 |
| May match empty string |
| Subject length lower bound = 0 |
| /* this is a C style comment */\=find_limits |
| Minimum match limit = 120 |
| Minimum recursion limit = 6 |
| 0: /* this is a C style comment */ |
| 1: /* this is a C style comment */ |
| |
| /^(?>a)++/ |
| aa\=find_limits |
| Minimum match limit = 5 |
| Minimum recursion limit = 2 |
| 0: aa |
| aaaaaaaaa\=find_limits |
| Minimum match limit = 12 |
| Minimum recursion limit = 2 |
| 0: aaaaaaaaa |
| |
| /(a)(?1)++/ |
| aa\=find_limits |
| Minimum match limit = 7 |
| Minimum recursion limit = 4 |
| 0: aa |
| 1: a |
| aaaaaaaaa\=find_limits |
| Minimum match limit = 21 |
| Minimum recursion limit = 4 |
| 0: aaaaaaaaa |
| 1: a |
| |
| /a(?:.)*?a/ims |
| abbbbbbbbbbbbbbbbbbbbba\=find_limits |
| Minimum match limit = 65 |
| Minimum recursion limit = 2 |
| 0: abbbbbbbbbbbbbbbbbbbbba |
| |
| /a(?:.(*THEN))*?a/ims |
| abbbbbbbbbbbbbbbbbbbbba\=find_limits |
| Minimum match limit = 86 |
| Minimum recursion limit = 45 |
| 0: abbbbbbbbbbbbbbbbbbbbba |
| |
| /a(?:.(*THEN:ABC))*?a/ims |
| abbbbbbbbbbbbbbbbbbbbba\=find_limits |
| Minimum match limit = 86 |
| Minimum recursion limit = 45 |
| 0: abbbbbbbbbbbbbbbbbbbbba |
| |
| /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/ |
| aabbccddee\=find_limits |
| Minimum match limit = 7 |
| Minimum recursion limit = 2 |
| 0: aabbccddee |
| |
| /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/ |
| aabbccddee\=find_limits |
| Minimum match limit = 17 |
| Minimum recursion limit = 16 |
| 0: aabbccddee |
| 1: aa |
| 2: bb |
| 3: cc |
| 4: dd |
| 5: ee |
| |
| /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/ |
| aabbccddee\=find_limits |
| Minimum match limit = 13 |
| Minimum recursion limit = 10 |
| 0: aabbccddee |
| 1: aa |
| 2: cc |
| 3: ee |
| |
| /(*LIMIT_MATCH=12bc)abc/ |
| Failed: error 160 at offset 17: (*VERB) not recognized or malformed |
| |
| /(*LIMIT_MATCH=4294967290)abc/ |
| Failed: error 160 at offset 24: (*VERB) not recognized or malformed |
| |
| /(*LIMIT_RECURSION=4294967280)abc/I |
| Capturing subpattern count = 0 |
| Recursion limit = 4294967280 |
| First code unit = 'a' |
| Last code unit = 'c' |
| Subject length lower bound = 3 |
| |
| /(a+)*zz/ |
| aaaaaaaaaaaaaz |
| No match |
| aaaaaaaaaaaaaz\=match_limit=3000 |
| Failed: error -47: match limit exceeded |
| |
| /(a+)*zz/ |
| aaaaaaaaaaaaaz\=recursion_limit=10 |
| Failed: error -53: recursion limit exceeded |
| |
| /(*LIMIT_MATCH=3000)(a+)*zz/I |
| Capturing subpattern count = 1 |
| Match limit = 3000 |
| Starting code units: a z |
| Last code unit = 'z' |
| Subject length lower bound = 2 |
| aaaaaaaaaaaaaz |
| Failed: error -47: match limit exceeded |
| aaaaaaaaaaaaaz\=match_limit=60000 |
| Failed: error -47: match limit exceeded |
| |
| /(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I |
| Capturing subpattern count = 1 |
| Match limit = 3000 |
| Starting code units: a z |
| Last code unit = 'z' |
| Subject length lower bound = 2 |
| aaaaaaaaaaaaaz |
| Failed: error -47: match limit exceeded |
| |
| /(*LIMIT_MATCH=60000)(a+)*zz/I |
| Capturing subpattern count = 1 |
| Match limit = 60000 |
| Starting code units: a z |
| Last code unit = 'z' |
| Subject length lower bound = 2 |
| aaaaaaaaaaaaaz |
| No match |
| aaaaaaaaaaaaaz\=match_limit=3000 |
| Failed: error -47: match limit exceeded |
| |
| /(*LIMIT_RECURSION=10)(a+)*zz/I |
| Capturing subpattern count = 1 |
| Recursion limit = 10 |
| Starting code units: a z |
| Last code unit = 'z' |
| Subject length lower bound = 2 |
| aaaaaaaaaaaaaz |
| Failed: error -53: recursion limit exceeded |
| aaaaaaaaaaaaaz\=recursion_limit=1000 |
| Failed: error -53: recursion limit exceeded |
| |
| /(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/I |
| Capturing subpattern count = 1 |
| Recursion limit = 1000 |
| Starting code units: a z |
| Last code unit = 'z' |
| Subject length lower bound = 2 |
| aaaaaaaaaaaaaz |
| No match |
| |
| /(*LIMIT_RECURSION=1000)(a+)*zz/I |
| Capturing subpattern count = 1 |
| Recursion limit = 1000 |
| Starting code units: a z |
| Last code unit = 'z' |
| Subject length lower bound = 2 |
| aaaaaaaaaaaaaz |
| No match |
| aaaaaaaaaaaaaz\=recursion_limit=10 |
| Failed: error -53: recursion limit exceeded |
| |
| # These three have infinitely nested recursions. |
| |
| /((?2))((?1))/ |
| abc |
| Failed: error -52: nested recursion at the same subject position |
| |
| /((?(R2)a+|(?1)b))/ |
| aaaabcde |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(?(R)a*(?1)|((?R))b)/ |
| aaaabcde |
| Failed: error -52: nested recursion at the same subject position |
| |
| # The allusedtext modifier does not work with JIT, which does not maintain |
| # the leftchar/rightchar data. |
| |
| /abc(?=xyz)/allusedtext |
| abcxyzpqr |
| 0: abcxyz |
| >>> |
| abcxyzpqr\=aftertext |
| 0: abcxyz |
| >>> |
| 0+ xyzpqr |
| |
| /(?<=pqr)abc(?=xyz)/allusedtext |
| xyzpqrabcxyzpqr |
| 0: pqrabcxyz |
| <<< >>> |
| xyzpqrabcxyzpqr\=aftertext |
| 0: pqrabcxyz |
| <<< >>> |
| 0+ xyzpqr |
| |
| /a\b/ |
| a.\=allusedtext |
| 0: a. |
| > |
| a\=allusedtext |
| 0: a |
| |
| /abc\Kxyz/ |
| abcxyz\=allusedtext |
| 0: abcxyz |
| <<< |
| |
| /abc(?=xyz(*ACCEPT))/ |
| abcxyz\=allusedtext |
| 0: abcxyz |
| >>> |
| |
| /abc(?=abcde)(?=ab)/allusedtext |
| abcabcdefg |
| 0: abcabcde |
| >>>>> |
| |
| # These tests provoke recursion loops, which give a different error message |
| # when JIT is used. |
| |
| /(?R)/I |
| Capturing subpattern count = 0 |
| May match empty string |
| Subject length lower bound = 0 |
| abcd |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(a|(?R))/I |
| Capturing subpattern count = 1 |
| May match empty string |
| Subject length lower bound = 0 |
| abcd |
| 0: a |
| 1: a |
| defg |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(ab|(bc|(de|(?R))))/I |
| Capturing subpattern count = 3 |
| May match empty string |
| Subject length lower bound = 0 |
| abcd |
| 0: ab |
| 1: ab |
| fghi |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(ab|(bc|(de|(?1))))/I |
| Capturing subpattern count = 3 |
| May match empty string |
| Subject length lower bound = 0 |
| abcd |
| 0: ab |
| 1: ab |
| fghi |
| Failed: error -52: nested recursion at the same subject position |
| |
| /x(ab|(bc|(de|(?1)x)x)x)/I |
| Capturing subpattern count = 3 |
| First code unit = 'x' |
| Subject length lower bound = 3 |
| xab123 |
| 0: xab |
| 1: ab |
| xfghi |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(?!\w)(?R)/ |
| abcd |
| Failed: error -52: nested recursion at the same subject position |
| =abc |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(?=\w)(?R)/ |
| =abc |
| Failed: error -52: nested recursion at the same subject position |
| abcd |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(?<!\w)(?R)/ |
| abcd |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(?<=\w)(?R)/ |
| abcd |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(a+|(?R)b)/ |
| aaa |
| 0: aaa |
| 1: aaa |
| bbb |
| Failed: error -52: nested recursion at the same subject position |
| |
| /[^\xff]((?1))/BI |
| ------------------------------------------------------------------ |
| Bra |
| [^\x{ff}] |
| CBra 1 |
| Recurse |
| Ket |
| Ket |
| End |
| ------------------------------------------------------------------ |
| Capturing subpattern count = 1 |
| Subject length lower bound = 1 |
| abcd |
| Failed: error -52: nested recursion at the same subject position |
| |
| # These tests don't behave the same with JIT |
| |
| /\w+(?C1)/BI,no_auto_possess |
| ------------------------------------------------------------------ |
| Bra |
| \w+ |
| Callout 1 8 0 |
| Ket |
| End |
| ------------------------------------------------------------------ |
| Capturing subpattern count = 0 |
| Options: no_auto_possess |
| Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P |
| Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z |
| Subject length lower bound = 1 |
| abc\=callout_fail=1 |
| --->abc |
| 1 ^ ^ |
| 1 ^ ^ |
| 1 ^^ |
| 1 ^ ^ |
| 1 ^^ |
| 1 ^^ |
| No match |
| |
| /(*NO_AUTO_POSSESS)\w+(?C1)/BI |
| ------------------------------------------------------------------ |
| Bra |
| \w+ |
| Callout 1 26 0 |
| Ket |
| End |
| ------------------------------------------------------------------ |
| Capturing subpattern count = 0 |
| Compile options: <none> |
| Overall options: no_auto_possess |
| Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P |
| Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z |
| Subject length lower bound = 1 |
| abc\=callout_fail=1 |
| --->abc |
| 1 ^ ^ |
| 1 ^ ^ |
| 1 ^^ |
| 1 ^ ^ |
| 1 ^^ |
| 1 ^^ |
| No match |
| |
| # End of testinput15 |