Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [user@localhost]$ perl -e "use re 'debug'; my $s = q[I(2,3).I.I]; my $call = qr[I (?: \(\d (?:, \d)*\) )?]x; my $name = qr[ (?:$call \.)* (I) ]x; print qq(Matched $1.\n) if $s =~ m/$name/x;"
- Compiling REx "I (?: \(\d (?:, \d)*\) )?"
- Final program:
- 1: EXACT <I> (3)
- 3: CURLYX[0]{0,1} (18)
- 5: EXACT <(> (7)
- 7: POSIXU[\d] (8)
- 8: CURLYM[0]{0,INFTY} (15)
- 10: EXACT <,> (12)
- 12: POSIXU[\d] (13)
- 13: SUCCEED (0)
- 14: NOTHING (15)
- 15: EXACT <)> (17)
- 17: WHILEM (0)
- 18: NOTHING (19)
- 19: END (0)
- anchored "I" at 0..0 (checking anchored) minlen 1
- Compiling REx " (?:(?^x:I (?: \(\d (?:, \d)*\) )?) \.)* (I) "
- synthetic stclass "ANYOF[I]".
- Final program:
- 1: CURLYX[0]{0,INFTY} (24)
- 3: EXACT <I> (5)
- 5: CURLYX[0]{0,1} (20)
- 7: EXACT <(> (9)
- 9: POSIXU[\d] (10)
- 10: CURLYM[0]{0,INFTY} (17)
- 12: EXACT <,> (14)
- 14: POSIXU[\d] (15)
- 15: SUCCEED (0)
- 16: NOTHING (17)
- 17: EXACT <)> (19)
- 19: WHILEM (0)
- 20: NOTHING (21)
- 21: EXACT <.> (23)
- 23: WHILEM[1/3] (0)
- 24: NOTHING (25)
- 25: OPEN1 (27)
- 27: EXACT <I> (29)
- 29: CLOSE1 (31)
- 31: END (0)
- floating "I" at 0..2147483647 (checking floating) stclass ANYOF[I] minlen 1
- Matching REx " (?:(?^x:I (?: \(\d (?:, \d)*\) )?) \.)* (I) " against "I(2,3).I.I"
- Intuit: trying to determine minimum start position...
- doing 'check' fbm scan, [0..10] gave 0
- Found floating substr "I" at offset 0 (rx_origin now 0)...
- (multiline anchor test skipped)
- looking for class: start_shift: 0 check_at: 0 rx_origin: 0 endpos: 1
- Does not contradict STCLASS...
- Intuit: Successfully guessed: match at offset 0
- Matching stclass ANYOF[I] against "I(2,3).I.I" (10 bytes)
- 0 <> <I(2,3).I.I> | 0| 1:CURLYX[0]{0,INFTY}(24)
- 0 <> <I(2,3).I.I> | 1| 23:WHILEM[1/3](0)
- | 1| WHILEM: matched 0 out of 0..32767
- 0 <> <I(2,3).I.I> | 2| 3:EXACT <I>(5)
- 1 <I> <(2,3).I.I> | 2| 5:CURLYX[0]{0,1}(20)
- 1 <I> <(2,3).I.I> | 3| 19:WHILEM(0)
- | 3| WHILEM: matched 0 out of 0..1
- 1 <I> <(2,3).I.I> | 4| 7:EXACT <(>(9)
- 2 <I(> <2,3).I.I> | 4| 9:POSIXU[\d](10)
- 3 <I(2> <,3).I.I> | 4| 10:CURLYM[0]{0,INFTY}(17)
- 3 <I(2> <,3).I.I> | 5| 12:EXACT <,>(14)
- 4 <I(2,> <3).I.I> | 5| 14:POSIXU[\d](15)
- 5 <I(2,3> <).I.I> | 5| 15:SUCCEED(0)
- | 5| SUCCEED: subpattern success...
- | 4| CURLYM now matched 1 times, len=2...
- 5 <I(2,3> <).I.I> | 5| 12:EXACT <,>(14)
- | 5| failed...
- | 4| CURLYM trying tail with matches=1...
- 5 <I(2,3> <).I.I> | 5| 17:EXACT <)>(19)
- 6 <I(2,3)> <.I.I> | 5| 19:WHILEM(0)
- | 5| WHILEM: matched 1 out of 0..1
- 6 <I(2,3)> <.I.I> | 6| 20:NOTHING(21)
- 6 <I(2,3)> <.I.I> | 6| 21:EXACT <.>(23)
- 7 <I(2,3).> <I.I> | 6| 23:WHILEM[1/3](0)
- | 6| WHILEM: matched 1 out of 0..32767
- 7 <I(2,3).> <I.I> | 7| 3:EXACT <I>(5)
- 8 <I(2,3).I> <.I> | 7| 5:CURLYX[0]{0,1}(20)
- 8 <I(2,3).I> <.I> | 8| 19:WHILEM(0)
- | 8| WHILEM: matched 0 out of 0..1
- 8 <I(2,3).I> <.I> | 9| 7:EXACT <(>(9)
- | 9| failed...
- | 8| WHILEM: failed, trying continuation...
- 8 <I(2,3).I> <.I> | 9| 20:NOTHING(21)
- 8 <I(2,3).I> <.I> | 9| 21:EXACT <.>(23)
- 9 <I(2,3).I.> <I> | 9| 23:WHILEM[1/3](0)
- | 9| WHILEM: matched 2 out of 0..32767
- 9 <I(2,3).I.> <I> | 10| 3:EXACT <I>(5)
- 10 <I(2,3).I.I> <> | 10| 5:CURLYX[0]{0,1}(20)
- 10 <I(2,3).I.I> <> | 11| 19:WHILEM(0)
- | 11| WHILEM: matched 0 out of 0..1
- 10 <I(2,3).I.I> <> | 12| 7:EXACT <(>(9)
- | 12| failed...
- | 11| WHILEM: failed, trying continuation...
- 10 <I(2,3).I.I> <> | 12| 20:NOTHING(21)
- 10 <I(2,3).I.I> <> | 12| 21:EXACT <.>(23)
- | 12| failed...
- | 11| failed...
- | 10| failed...
- | 9| WHILEM: failed, trying continuation...
- 9 <I(2,3).I.> <I> | 10| 24:NOTHING(25)
- 9 <I(2,3).I.> <I> | 10| 25:OPEN1(27)
- 9 <I(2,3).I.> <I> | 10| 27:EXACT <I>(29)
- 10 <I(2,3).I.I> <> | 10| 29:CLOSE1(31)
- 10 <I(2,3).I.I> <> | 10| 31:END(0)
- Match successful!
- Matched I.
- Freeing REx: " (?:(?^x:I (?: \(\d (?:, \d)*\) )?) \.)* (I) "
- Freeing REx: "I (?: \(\d (?:, \d)*\) )?"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement