636
641
OP_WHITESPACE, /* 9 \s */
637
642
OP_NOT_WORDCHAR, /* 10 \W */
638
643
OP_WORDCHAR, /* 11 \w */
639
OP_ANY, /* 12 Match any character */
640
OP_ANYBYTE, /* 13 Match any byte (\C); different to OP_ANY for UTF-8 */
641
OP_NOTPROP, /* 14 \P (not Unicode property) */
642
OP_PROP, /* 15 \p (Unicode property) */
643
OP_ANYNL, /* 16 \R (any newline sequence) */
644
OP_NOT_HSPACE, /* 17 \H (not horizontal whitespace) */
645
OP_HSPACE, /* 18 \h (horizontal whitespace) */
646
OP_NOT_VSPACE, /* 19 \V (not vertical whitespace) */
647
OP_VSPACE, /* 20 \v (vertical whitespace) */
648
OP_EXTUNI, /* 21 \X (extended Unicode sequence */
649
OP_EODN, /* 22 End of data or \n at end of data: \Z. */
650
OP_EOD, /* 23 End of data: \z */
652
OP_OPT, /* 24 Set runtime options */
653
OP_CIRC, /* 25 Start of line - varies with multiline switch */
654
OP_DOLL, /* 26 End of line - varies with multiline switch */
655
OP_CHAR, /* 27 Match one character, casefully */
656
OP_CHARNC, /* 28 Match one character, caselessly */
657
OP_NOT, /* 29 Match one character, not the following one */
659
OP_STAR, /* 30 The maximizing and minimizing versions of */
660
OP_MINSTAR, /* 31 these six opcodes must come in pairs, with */
661
OP_PLUS, /* 32 the minimizing one second. */
662
OP_MINPLUS, /* 33 This first set applies to single characters.*/
664
OP_MINQUERY, /* 35 */
666
OP_UPTO, /* 36 From 0 to n matches */
668
OP_EXACT, /* 38 Exactly n matches */
670
OP_POSSTAR, /* 39 Possessified star */
671
OP_POSPLUS, /* 40 Possessified plus */
672
OP_POSQUERY, /* 41 Posesssified query */
673
OP_POSUPTO, /* 42 Possessified upto */
675
OP_NOTSTAR, /* 43 The maximizing and minimizing versions of */
676
OP_NOTMINSTAR, /* 44 these six opcodes must come in pairs, with */
677
OP_NOTPLUS, /* 45 the minimizing one second. They must be in */
678
OP_NOTMINPLUS, /* 46 exactly the same order as those above. */
679
OP_NOTQUERY, /* 47 This set applies to "not" single characters. */
680
OP_NOTMINQUERY, /* 48 */
682
OP_NOTUPTO, /* 49 From 0 to n matches */
683
OP_NOTMINUPTO, /* 50 */
684
OP_NOTEXACT, /* 51 Exactly n matches */
686
OP_NOTPOSSTAR, /* 52 Possessified versions */
687
OP_NOTPOSPLUS, /* 53 */
688
OP_NOTPOSQUERY, /* 54 */
689
OP_NOTPOSUPTO, /* 55 */
691
OP_TYPESTAR, /* 56 The maximizing and minimizing versions of */
692
OP_TYPEMINSTAR, /* 57 these six opcodes must come in pairs, with */
693
OP_TYPEPLUS, /* 58 the minimizing one second. These codes must */
694
OP_TYPEMINPLUS, /* 59 be in exactly the same order as those above. */
695
OP_TYPEQUERY, /* 60 This set applies to character types such as \d */
696
OP_TYPEMINQUERY, /* 61 */
698
OP_TYPEUPTO, /* 62 From 0 to n matches */
699
OP_TYPEMINUPTO, /* 63 */
700
OP_TYPEEXACT, /* 64 Exactly n matches */
702
OP_TYPEPOSSTAR, /* 65 Possessified versions */
703
OP_TYPEPOSPLUS, /* 66 */
704
OP_TYPEPOSQUERY, /* 67 */
705
OP_TYPEPOSUPTO, /* 68 */
707
OP_CRSTAR, /* 69 The maximizing and minimizing versions of */
708
OP_CRMINSTAR, /* 70 all these opcodes must come in pairs, with */
709
OP_CRPLUS, /* 71 the minimizing one second. These codes must */
710
OP_CRMINPLUS, /* 72 be in exactly the same order as those above. */
711
OP_CRQUERY, /* 73 These are for character classes and back refs */
712
OP_CRMINQUERY, /* 74 */
713
OP_CRRANGE, /* 75 These are different to the three sets above. */
714
OP_CRMINRANGE, /* 76 */
716
OP_CLASS, /* 77 Match a character class, chars < 256 only */
717
OP_NCLASS, /* 78 Same, but the bitmap was created from a negative
644
OP_ANY, /* 12 Match any character (subject to DOTALL) */
645
OP_ALLANY, /* 13 Match any character (not subject to DOTALL) */
646
OP_ANYBYTE, /* 14 Match any byte (\C); different to OP_ANY for UTF-8 */
647
OP_NOTPROP, /* 15 \P (not Unicode property) */
648
OP_PROP, /* 16 \p (Unicode property) */
649
OP_ANYNL, /* 17 \R (any newline sequence) */
650
OP_NOT_HSPACE, /* 18 \H (not horizontal whitespace) */
651
OP_HSPACE, /* 19 \h (horizontal whitespace) */
652
OP_NOT_VSPACE, /* 20 \V (not vertical whitespace) */
653
OP_VSPACE, /* 21 \v (vertical whitespace) */
654
OP_EXTUNI, /* 22 \X (extended Unicode sequence */
655
OP_EODN, /* 23 End of data or \n at end of data: \Z. */
656
OP_EOD, /* 24 End of data: \z */
658
OP_OPT, /* 25 Set runtime options */
659
OP_CIRC, /* 26 Start of line - varies with multiline switch */
660
OP_DOLL, /* 27 End of line - varies with multiline switch */
661
OP_CHAR, /* 28 Match one character, casefully */
662
OP_CHARNC, /* 29 Match one character, caselessly */
663
OP_NOT, /* 30 Match one character, not the following one */
665
OP_STAR, /* 31 The maximizing and minimizing versions of */
666
OP_MINSTAR, /* 32 these six opcodes must come in pairs, with */
667
OP_PLUS, /* 33 the minimizing one second. */
668
OP_MINPLUS, /* 34 This first set applies to single characters.*/
670
OP_MINQUERY, /* 36 */
672
OP_UPTO, /* 37 From 0 to n matches */
674
OP_EXACT, /* 39 Exactly n matches */
676
OP_POSSTAR, /* 40 Possessified star */
677
OP_POSPLUS, /* 41 Possessified plus */
678
OP_POSQUERY, /* 42 Posesssified query */
679
OP_POSUPTO, /* 43 Possessified upto */
681
OP_NOTSTAR, /* 44 The maximizing and minimizing versions of */
682
OP_NOTMINSTAR, /* 45 these six opcodes must come in pairs, with */
683
OP_NOTPLUS, /* 46 the minimizing one second. They must be in */
684
OP_NOTMINPLUS, /* 47 exactly the same order as those above. */
685
OP_NOTQUERY, /* 48 This set applies to "not" single characters. */
686
OP_NOTMINQUERY, /* 49 */
688
OP_NOTUPTO, /* 50 From 0 to n matches */
689
OP_NOTMINUPTO, /* 51 */
690
OP_NOTEXACT, /* 52 Exactly n matches */
692
OP_NOTPOSSTAR, /* 53 Possessified versions */
693
OP_NOTPOSPLUS, /* 54 */
694
OP_NOTPOSQUERY, /* 55 */
695
OP_NOTPOSUPTO, /* 56 */
697
OP_TYPESTAR, /* 57 The maximizing and minimizing versions of */
698
OP_TYPEMINSTAR, /* 58 these six opcodes must come in pairs, with */
699
OP_TYPEPLUS, /* 59 the minimizing one second. These codes must */
700
OP_TYPEMINPLUS, /* 60 be in exactly the same order as those above. */
701
OP_TYPEQUERY, /* 61 This set applies to character types such as \d */
702
OP_TYPEMINQUERY, /* 62 */
704
OP_TYPEUPTO, /* 63 From 0 to n matches */
705
OP_TYPEMINUPTO, /* 64 */
706
OP_TYPEEXACT, /* 65 Exactly n matches */
708
OP_TYPEPOSSTAR, /* 66 Possessified versions */
709
OP_TYPEPOSPLUS, /* 67 */
710
OP_TYPEPOSQUERY, /* 68 */
711
OP_TYPEPOSUPTO, /* 69 */
713
OP_CRSTAR, /* 70 The maximizing and minimizing versions of */
714
OP_CRMINSTAR, /* 71 all these opcodes must come in pairs, with */
715
OP_CRPLUS, /* 72 the minimizing one second. These codes must */
716
OP_CRMINPLUS, /* 73 be in exactly the same order as those above. */
717
OP_CRQUERY, /* 74 These are for character classes and back refs */
718
OP_CRMINQUERY, /* 75 */
719
OP_CRRANGE, /* 76 These are different to the three sets above. */
720
OP_CRMINRANGE, /* 77 */
722
OP_CLASS, /* 78 Match a character class, chars < 256 only */
723
OP_NCLASS, /* 79 Same, but the bitmap was created from a negative
718
724
class - the difference is relevant only when a UTF-8
719
725
character > 255 is encountered. */
721
OP_XCLASS, /* 79 Extended class for handling UTF-8 chars within the
727
OP_XCLASS, /* 80 Extended class for handling UTF-8 chars within the
722
728
class. This does both positive and negative. */
724
OP_REF, /* 80 Match a back reference */
725
OP_RECURSE, /* 81 Match a numbered subpattern (possibly recursive) */
726
OP_CALLOUT, /* 82 Call out to external function if provided */
730
OP_REF, /* 81 Match a back reference */
731
OP_RECURSE, /* 82 Match a numbered subpattern (possibly recursive) */
732
OP_CALLOUT, /* 83 Call out to external function if provided */
728
OP_ALT, /* 83 Start of alternation */
729
OP_KET, /* 84 End of group that doesn't have an unbounded repeat */
730
OP_KETRMAX, /* 85 These two must remain together and in this */
731
OP_KETRMIN, /* 86 order. They are for groups the repeat for ever. */
734
OP_ALT, /* 84 Start of alternation */
735
OP_KET, /* 85 End of group that doesn't have an unbounded repeat */
736
OP_KETRMAX, /* 86 These two must remain together and in this */
737
OP_KETRMIN, /* 87 order. They are for groups the repeat for ever. */
733
739
/* The assertions must come before BRA, CBRA, ONCE, and COND.*/
735
OP_ASSERT, /* 87 Positive lookahead */
736
OP_ASSERT_NOT, /* 88 Negative lookahead */
737
OP_ASSERTBACK, /* 89 Positive lookbehind */
738
OP_ASSERTBACK_NOT, /* 90 Negative lookbehind */
739
OP_REVERSE, /* 91 Move pointer back - used in lookbehind assertions */
741
OP_ASSERT, /* 88 Positive lookahead */
742
OP_ASSERT_NOT, /* 89 Negative lookahead */
743
OP_ASSERTBACK, /* 90 Positive lookbehind */
744
OP_ASSERTBACK_NOT, /* 91 Negative lookbehind */
745
OP_REVERSE, /* 92 Move pointer back - used in lookbehind assertions */
741
747
/* ONCE, BRA, CBRA, and COND must come after the assertions, with ONCE first,
742
748
as there's a test for >= ONCE for a subpattern that isn't an assertion. */
744
OP_ONCE, /* 92 Atomic group */
745
OP_BRA, /* 93 Start of non-capturing bracket */
746
OP_CBRA, /* 94 Start of capturing bracket */
747
OP_COND, /* 95 Conditional group */
750
OP_ONCE, /* 93 Atomic group */
751
OP_BRA, /* 94 Start of non-capturing bracket */
752
OP_CBRA, /* 95 Start of capturing bracket */
753
OP_COND, /* 96 Conditional group */
749
755
/* These three must follow the previous three, in the same order. There's a
750
756
check for >= SBRA to distinguish the two sets. */
752
OP_SBRA, /* 96 Start of non-capturing bracket, check empty */
753
OP_SCBRA, /* 97 Start of capturing bracket, check empty */
754
OP_SCOND, /* 98 Conditional group, check empty */
756
OP_CREF, /* 99 Used to hold a capture number as condition */
757
OP_RREF, /* 100 Used to hold a recursion number as condition */
758
OP_DEF, /* 101 The DEFINE condition */
760
OP_BRAZERO, /* 102 These two must remain together and in this */
761
OP_BRAMINZERO, /* 103 order. */
758
OP_SBRA, /* 97 Start of non-capturing bracket, check empty */
759
OP_SCBRA, /* 98 Start of capturing bracket, check empty */
760
OP_SCOND, /* 99 Conditional group, check empty */
762
OP_CREF, /* 100 Used to hold a capture number as condition */
763
OP_RREF, /* 101 Used to hold a recursion number as condition */
764
OP_DEF, /* 102 The DEFINE condition */
766
OP_BRAZERO, /* 103 These two must remain together and in this */
767
OP_BRAMINZERO, /* 104 order. */
763
769
/* These are backtracking control verbs */
770
776
/* These are forced failure and success verbs */
781
/* This is used to skip a subpattern with a {0} quantifier */
783
OP_SKIPZERO /* 111 */