/[pcre]/code/trunk/pcre_internal.h
ViewVC logotype

Diff of /code/trunk/pcre_internal.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 172 by ph10, Tue Jun 5 10:40:13 2007 UTC revision 178 by ph10, Wed Jun 13 08:44:34 2007 UTC
# Line 606  consume characters. If any new escapes a Line 606  consume characters. If any new escapes a
606  character, that code will have to change. */  character, that code will have to change. */
607    
608  enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s,  enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s,
609         ESC_W, ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_R, ESC_X, ESC_Z, ESC_z,         ESC_W, ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H, ESC_h,
610         ESC_E, ESC_Q, ESC_k, ESC_REF };         ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, ESC_E, ESC_Q, ESC_k, ESC_REF };
611    
612    
613  /* Opcode table: OP_BRA must be last, as all values >= it are used for brackets  /* Opcode table: OP_BRA must be last, as all values >= it are used for brackets
# Line 643  enum { Line 643  enum {
643    OP_NOTPROP,        /* 14 \P (not Unicode property) */    OP_NOTPROP,        /* 14 \P (not Unicode property) */
644    OP_PROP,           /* 15 \p (Unicode property) */    OP_PROP,           /* 15 \p (Unicode property) */
645    OP_ANYNL,          /* 16 \R (any newline sequence) */    OP_ANYNL,          /* 16 \R (any newline sequence) */
646    OP_EXTUNI,         /* 17 \X (extended Unicode sequence */    OP_NOT_HSPACE,     /* 17 \H (not horizontal whitespace) */
647    OP_EODN,           /* 18 End of data or \n at end of data: \Z. */    OP_HSPACE,         /* 18 \h (horizontal whitespace) */
648    OP_EOD,            /* 19 End of data: \z */    OP_NOT_VSPACE,     /* 19 \V (not vertical whitespace) */
649      OP_VSPACE,         /* 20 \v (vertical whitespace) */
650    OP_OPT,            /* 20 Set runtime options */    OP_EXTUNI,         /* 21 \X (extended Unicode sequence */
651    OP_CIRC,           /* 21 Start of line - varies with multiline switch */    OP_EODN,           /* 22 End of data or \n at end of data: \Z. */
652    OP_DOLL,           /* 22 End of line - varies with multiline switch */    OP_EOD,            /* 23 End of data: \z */
653    OP_CHAR,           /* 23 Match one character, casefully */  
654    OP_CHARNC,         /* 24 Match one character, caselessly */    OP_OPT,            /* 24 Set runtime options */
655    OP_NOT,            /* 25 Match one character, not the following one */    OP_CIRC,           /* 25 Start of line - varies with multiline switch */
656      OP_DOLL,           /* 26 End of line - varies with multiline switch */
657    OP_STAR,           /* 26 The maximizing and minimizing versions of */    OP_CHAR,           /* 27 Match one character, casefully */
658    OP_MINSTAR,        /* 27 these six opcodes must come in pairs, with */    OP_CHARNC,         /* 28 Match one character, caselessly */
659    OP_PLUS,           /* 28 the minimizing one second. */    OP_NOT,            /* 29 Match one character, not the following one */
660    OP_MINPLUS,        /* 29 This first set applies to single characters.*/  
661    OP_QUERY,          /* 30 */    OP_STAR,           /* 30 The maximizing and minimizing versions of */
662    OP_MINQUERY,       /* 31 */    OP_MINSTAR,        /* 31 these six opcodes must come in pairs, with */
663      OP_PLUS,           /* 32 the minimizing one second. */
664    OP_UPTO,           /* 32 From 0 to n matches */    OP_MINPLUS,        /* 33 This first set applies to single characters.*/
665    OP_MINUPTO,        /* 33 */    OP_QUERY,          /* 34 */
666    OP_EXACT,          /* 34 Exactly n matches */    OP_MINQUERY,       /* 35 */
667    
668    OP_POSSTAR,        /* 35 Possessified star */    OP_UPTO,           /* 36 From 0 to n matches */
669    OP_POSPLUS,        /* 36 Possessified plus */    OP_MINUPTO,        /* 37 */
670    OP_POSQUERY,       /* 37 Posesssified query */    OP_EXACT,          /* 38 Exactly n matches */
671    OP_POSUPTO,        /* 38 Possessified upto */  
672      OP_POSSTAR,        /* 39 Possessified star */
673    OP_NOTSTAR,        /* 39 The maximizing and minimizing versions of */    OP_POSPLUS,        /* 40 Possessified plus */
674    OP_NOTMINSTAR,     /* 40 these six opcodes must come in pairs, with */    OP_POSQUERY,       /* 41 Posesssified query */
675    OP_NOTPLUS,        /* 41 the minimizing one second. They must be in */    OP_POSUPTO,        /* 42 Possessified upto */
676    OP_NOTMINPLUS,     /* 42 exactly the same order as those above. */  
677    OP_NOTQUERY,       /* 43 This set applies to "not" single characters. */    OP_NOTSTAR,        /* 43 The maximizing and minimizing versions of */
678    OP_NOTMINQUERY,    /* 44 */    OP_NOTMINSTAR,     /* 44 these six opcodes must come in pairs, with */
679      OP_NOTPLUS,        /* 45 the minimizing one second. They must be in */
680    OP_NOTUPTO,        /* 45 From 0 to n matches */    OP_NOTMINPLUS,     /* 46 exactly the same order as those above. */
681    OP_NOTMINUPTO,     /* 46 */    OP_NOTQUERY,       /* 47 This set applies to "not" single characters. */
682    OP_NOTEXACT,       /* 47 Exactly n matches */    OP_NOTMINQUERY,    /* 48 */
683    
684    OP_NOTPOSSTAR,     /* 48 Possessified versions */    OP_NOTUPTO,        /* 49 From 0 to n matches */
685    OP_NOTPOSPLUS,     /* 49 */    OP_NOTMINUPTO,     /* 50 */
686    OP_NOTPOSQUERY,    /* 50 */    OP_NOTEXACT,       /* 51 Exactly n matches */
687    OP_NOTPOSUPTO,     /* 51 */  
688      OP_NOTPOSSTAR,     /* 52 Possessified versions */
689    OP_TYPESTAR,       /* 52 The maximizing and minimizing versions of */    OP_NOTPOSPLUS,     /* 53 */
690    OP_TYPEMINSTAR,    /* 53 these six opcodes must come in pairs, with */    OP_NOTPOSQUERY,    /* 54 */
691    OP_TYPEPLUS,       /* 54 the minimizing one second. These codes must */    OP_NOTPOSUPTO,     /* 55 */
692    OP_TYPEMINPLUS,    /* 55 be in exactly the same order as those above. */  
693    OP_TYPEQUERY,      /* 56 This set applies to character types such as \d */    OP_TYPESTAR,       /* 56 The maximizing and minimizing versions of */
694    OP_TYPEMINQUERY,   /* 57 */    OP_TYPEMINSTAR,    /* 57 these six opcodes must come in pairs, with */
695      OP_TYPEPLUS,       /* 58 the minimizing one second. These codes must */
696    OP_TYPEUPTO,       /* 58 From 0 to n matches */    OP_TYPEMINPLUS,    /* 59 be in exactly the same order as those above. */
697    OP_TYPEMINUPTO,    /* 59 */    OP_TYPEQUERY,      /* 60 This set applies to character types such as \d */
698    OP_TYPEEXACT,      /* 60 Exactly n matches */    OP_TYPEMINQUERY,   /* 61 */
699    
700    OP_TYPEPOSSTAR,    /* 61 Possessified versions */    OP_TYPEUPTO,       /* 62 From 0 to n matches */
701    OP_TYPEPOSPLUS,    /* 62 */    OP_TYPEMINUPTO,    /* 63 */
702    OP_TYPEPOSQUERY,   /* 63 */    OP_TYPEEXACT,      /* 64 Exactly n matches */
703    OP_TYPEPOSUPTO,    /* 64 */  
704      OP_TYPEPOSSTAR,    /* 65 Possessified versions */
705    OP_CRSTAR,         /* 65 The maximizing and minimizing versions of */    OP_TYPEPOSPLUS,    /* 66 */
706    OP_CRMINSTAR,      /* 66 all these opcodes must come in pairs, with */    OP_TYPEPOSQUERY,   /* 67 */
707    OP_CRPLUS,         /* 67 the minimizing one second. These codes must */    OP_TYPEPOSUPTO,    /* 68 */
708    OP_CRMINPLUS,      /* 68 be in exactly the same order as those above. */  
709    OP_CRQUERY,        /* 69 These are for character classes and back refs */    OP_CRSTAR,         /* 69 The maximizing and minimizing versions of */
710    OP_CRMINQUERY,     /* 70 */    OP_CRMINSTAR,      /* 70 all these opcodes must come in pairs, with */
711    OP_CRRANGE,        /* 71 These are different to the three sets above. */    OP_CRPLUS,         /* 71 the minimizing one second. These codes must */
712    OP_CRMINRANGE,     /* 72 */    OP_CRMINPLUS,      /* 72 be in exactly the same order as those above. */
713      OP_CRQUERY,        /* 73 These are for character classes and back refs */
714      OP_CRMINQUERY,     /* 74 */
715      OP_CRRANGE,        /* 75 These are different to the three sets above. */
716      OP_CRMINRANGE,     /* 76 */
717    
718    OP_CLASS,          /* 73 Match a character class, chars < 256 only */    OP_CLASS,          /* 77 Match a character class, chars < 256 only */
719    OP_NCLASS,         /* 74 Same, but the bitmap was created from a negative    OP_NCLASS,         /* 78 Same, but the bitmap was created from a negative
720                             class - the difference is relevant only when a UTF-8                             class - the difference is relevant only when a UTF-8
721                             character > 255 is encountered. */                             character > 255 is encountered. */
722    
723    OP_XCLASS,         /* 75 Extended class for handling UTF-8 chars within the    OP_XCLASS,         /* 79 Extended class for handling UTF-8 chars within the
724                             class. This does both positive and negative. */                             class. This does both positive and negative. */
725    
726    OP_REF,            /* 76 Match a back reference */    OP_REF,            /* 80 Match a back reference */
727    OP_RECURSE,        /* 77 Match a numbered subpattern (possibly recursive) */    OP_RECURSE,        /* 81 Match a numbered subpattern (possibly recursive) */
728    OP_CALLOUT,        /* 78 Call out to external function if provided */    OP_CALLOUT,        /* 82 Call out to external function if provided */
729    
730    OP_ALT,            /* 79 Start of alternation */    OP_ALT,            /* 83 Start of alternation */
731    OP_KET,            /* 80 End of group that doesn't have an unbounded repeat */    OP_KET,            /* 84 End of group that doesn't have an unbounded repeat */
732    OP_KETRMAX,        /* 81 These two must remain together and in this */    OP_KETRMAX,        /* 85 These two must remain together and in this */
733    OP_KETRMIN,        /* 82 order. They are for groups the repeat for ever. */    OP_KETRMIN,        /* 86 order. They are for groups the repeat for ever. */
734    
735    /* The assertions must come before BRA, CBRA, ONCE, and COND.*/    /* The assertions must come before BRA, CBRA, ONCE, and COND.*/
736    
737    OP_ASSERT,         /* 83 Positive lookahead */    OP_ASSERT,         /* 87 Positive lookahead */
738    OP_ASSERT_NOT,     /* 84 Negative lookahead */    OP_ASSERT_NOT,     /* 88 Negative lookahead */
739    OP_ASSERTBACK,     /* 85 Positive lookbehind */    OP_ASSERTBACK,     /* 89 Positive lookbehind */
740    OP_ASSERTBACK_NOT, /* 86 Negative lookbehind */    OP_ASSERTBACK_NOT, /* 90 Negative lookbehind */
741    OP_REVERSE,        /* 87 Move pointer back - used in lookbehind assertions */    OP_REVERSE,        /* 91 Move pointer back - used in lookbehind assertions */
742    
743    /* ONCE, BRA, CBRA, and COND must come after the assertions, with ONCE first,    /* ONCE, BRA, CBRA, and COND must come after the assertions, with ONCE first,
744    as there's a test for >= ONCE for a subpattern that isn't an assertion. */    as there's a test for >= ONCE for a subpattern that isn't an assertion. */
745    
746    OP_ONCE,           /* 88 Atomic group */    OP_ONCE,           /* 92 Atomic group */
747    OP_BRA,            /* 89 Start of non-capturing bracket */    OP_BRA,            /* 83 Start of non-capturing bracket */
748    OP_CBRA,           /* 90 Start of capturing bracket */    OP_CBRA,           /* 94 Start of capturing bracket */
749    OP_COND,           /* 91 Conditional group */    OP_COND,           /* 95 Conditional group */
750    
751    /* These three must follow the previous three, in the same order. There's a    /* These three must follow the previous three, in the same order. There's a
752    check for >= SBRA to distinguish the two sets. */    check for >= SBRA to distinguish the two sets. */
753    
754    OP_SBRA,           /* 92 Start of non-capturing bracket, check empty  */    OP_SBRA,           /* 96 Start of non-capturing bracket, check empty  */
755    OP_SCBRA,          /* 93 Start of capturing bracket, check empty */    OP_SCBRA,          /* 97 Start of capturing bracket, check empty */
756    OP_SCOND,          /* 94 Conditional group, check empty */    OP_SCOND,          /* 98 Conditional group, check empty */
757    
758    OP_CREF,           /* 95 Used to hold a capture number as condition */    OP_CREF,           /* 99 Used to hold a capture number as condition */
759    OP_RREF,           /* 96 Used to hold a recursion number as condition */    OP_RREF,           /* 100 Used to hold a recursion number as condition */
760    OP_DEF,            /* 97 The DEFINE condition */    OP_DEF,            /* 101 The DEFINE condition */
761    
762    OP_BRAZERO,        /* 98 These two must remain together and in this */    OP_BRAZERO,        /* 102 These two must remain together and in this */
763    OP_BRAMINZERO      /* 99 order. */    OP_BRAMINZERO      /* 103 order. */
764  };  };
765    
766    
# Line 766  for debugging. The macro is referenced o Line 770  for debugging. The macro is referenced o
770  #define OP_NAME_LIST \  #define OP_NAME_LIST \
771    "End", "\\A", "\\G", "\\K", "\\B", "\\b", "\\D", "\\d",         \    "End", "\\A", "\\G", "\\K", "\\B", "\\b", "\\D", "\\d",         \
772    "\\S", "\\s", "\\W", "\\w", "Any", "Anybyte",                   \    "\\S", "\\s", "\\W", "\\w", "Any", "Anybyte",                   \
773    "notprop", "prop", "anynl", "extuni",                           \    "notprop", "prop", "\\R", "\\H", "\\h", "\\V", "\\v",           \
774    "\\Z", "\\z",                                                   \    "extuni",  "\\Z", "\\z",                                        \
775    "Opt", "^", "$", "char", "charnc", "not",                       \    "Opt", "^", "$", "char", "charnc", "not",                       \
776    "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \    "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
777    "*+","++", "?+", "{",                                           \    "*+","++", "?+", "{",                                           \
# Line 797  in UTF-8 mode. The code that uses this t Line 801  in UTF-8 mode. The code that uses this t
801    1, 1, 1, 1, 1,                 /* \A, \G, \K, \B, \b                     */ \    1, 1, 1, 1, 1,                 /* \A, \G, \K, \B, \b                     */ \
802    1, 1, 1, 1, 1, 1,              /* \D, \d, \S, \s, \W, \w                 */ \    1, 1, 1, 1, 1, 1,              /* \D, \d, \S, \s, \W, \w                 */ \
803    1, 1,                          /* Any, Anybyte                           */ \    1, 1,                          /* Any, Anybyte                           */ \
804    3, 3, 1, 1,                    /* NOTPROP, PROP, EXTUNI, ANYNL           */ \    3, 3, 1,                       /* NOTPROP, PROP, EXTUNI                  */ \
805      1, 1, 1, 1, 1,                 /* \R, \H, \h, \V, \v                     */ \
806    1, 1, 2, 1, 1,                 /* \Z, \z, Opt, ^, $                      */ \    1, 1, 2, 1, 1,                 /* \Z, \z, Opt, ^, $                      */ \
807    2,                             /* Char  - the minimum length             */ \    2,                             /* Char  - the minimum length             */ \
808    2,                             /* Charnc  - the minimum length           */ \    2,                             /* Charnc  - the minimum length           */ \

Legend:
Removed from v.172  
changed lines
  Added in v.178

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12