/[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 1370 by ph10, Wed Oct 9 10:18:26 2013 UTC revision 1379 by ph10, Mon Oct 14 13:54:07 2013 UTC
# Line 2070  enum { Line 2070  enum {
2070    OP_CRRANGE,        /* 104 These are different to the three sets above. */    OP_CRRANGE,        /* 104 These are different to the three sets above. */
2071    OP_CRMINRANGE,     /* 105 */    OP_CRMINRANGE,     /* 105 */
2072    
2073      OP_CRPOSSTAR,      /* 106 Possessified versions */
2074      OP_CRPOSPLUS,      /* 107 */
2075      OP_CRPOSQUERY,     /* 108 */
2076      OP_CRPOSRANGE,     /* 109 */
2077    
2078    /* End of quantifier opcodes */    /* End of quantifier opcodes */
2079    
2080    OP_CLASS,          /* 106 Match a character class, chars < 256 only */    OP_CLASS,          /* 110 Match a character class, chars < 256 only */
2081    OP_NCLASS,         /* 107 Same, but the bitmap was created from a negative    OP_NCLASS,         /* 111 Same, but the bitmap was created from a negative
2082                                class - the difference is relevant only when a                                class - the difference is relevant only when a
2083                                character > 255 is encountered. */                                character > 255 is encountered. */
2084    OP_XCLASS,         /* 108 Extended class for handling > 255 chars within the    OP_XCLASS,         /* 112 Extended class for handling > 255 chars within the
2085                                class. This does both positive and negative. */                                class. This does both positive and negative. */
2086    OP_REF,            /* 109 Match a back reference, casefully */    OP_REF,            /* 113 Match a back reference, casefully */
2087    OP_REFI,           /* 110 Match a back reference, caselessly */    OP_REFI,           /* 114 Match a back reference, caselessly */
2088    OP_DNREF,          /* 111 Match a duplicate name backref, casefully */    OP_DNREF,          /* 115 Match a duplicate name backref, casefully */
2089    OP_DNREFI,         /* 112 Match a duplicate name backref, caselessly */    OP_DNREFI,         /* 116 Match a duplicate name backref, caselessly */
2090    OP_RECURSE,        /* 113 Match a numbered subpattern (possibly recursive) */    OP_RECURSE,        /* 117 Match a numbered subpattern (possibly recursive) */
2091    OP_CALLOUT,        /* 114 Call out to external function if provided */    OP_CALLOUT,        /* 118 Call out to external function if provided */
2092    
2093    OP_ALT,            /* 115 Start of alternation */    OP_ALT,            /* 119 Start of alternation */
2094    OP_KET,            /* 116 End of group that doesn't have an unbounded repeat */    OP_KET,            /* 120 End of group that doesn't have an unbounded repeat */
2095    OP_KETRMAX,        /* 117 These two must remain together and in this */    OP_KETRMAX,        /* 121 These two must remain together and in this */
2096    OP_KETRMIN,        /* 118 order. They are for groups the repeat for ever. */    OP_KETRMIN,        /* 122 order. They are for groups the repeat for ever. */
2097    OP_KETRPOS,        /* 119 Possessive unlimited repeat. */    OP_KETRPOS,        /* 123 Possessive unlimited repeat. */
2098    
2099    /* The assertions must come before BRA, CBRA, ONCE, and COND, and the four    /* The assertions must come before BRA, CBRA, ONCE, and COND, and the four
2100    asserts must remain in order. */    asserts must remain in order. */
2101    
2102    OP_REVERSE,        /* 129 Move pointer back - used in lookbehind assertions */    OP_REVERSE,        /* 124 Move pointer back - used in lookbehind assertions */
2103    OP_ASSERT,         /* 121 Positive lookahead */    OP_ASSERT,         /* 125 Positive lookahead */
2104    OP_ASSERT_NOT,     /* 122 Negative lookahead */    OP_ASSERT_NOT,     /* 126 Negative lookahead */
2105    OP_ASSERTBACK,     /* 123 Positive lookbehind */    OP_ASSERTBACK,     /* 127 Positive lookbehind */
2106    OP_ASSERTBACK_NOT, /* 124 Negative lookbehind */    OP_ASSERTBACK_NOT, /* 128 Negative lookbehind */
2107    
2108    /* ONCE, ONCE_NC, BRA, BRAPOS, CBRA, CBRAPOS, and COND must come immediately    /* ONCE, ONCE_NC, BRA, BRAPOS, CBRA, CBRAPOS, and COND must come immediately
2109    after the assertions, with ONCE first, as there's a test for >= ONCE for a    after the assertions, with ONCE first, as there's a test for >= ONCE for a
2110    subpattern that isn't an assertion. The POS versions must immediately follow    subpattern that isn't an assertion. The POS versions must immediately follow
2111    the non-POS versions in each case. */    the non-POS versions in each case. */
2112    
2113    OP_ONCE,           /* 125 Atomic group, contains captures */    OP_ONCE,           /* 129 Atomic group, contains captures */
2114    OP_ONCE_NC,        /* 126 Atomic group containing no captures */    OP_ONCE_NC,        /* 130 Atomic group containing no captures */
2115    OP_BRA,            /* 127 Start of non-capturing bracket */    OP_BRA,            /* 131 Start of non-capturing bracket */
2116    OP_BRAPOS,         /* 128 Ditto, with unlimited, possessive repeat */    OP_BRAPOS,         /* 132 Ditto, with unlimited, possessive repeat */
2117    OP_CBRA,           /* 129 Start of capturing bracket */    OP_CBRA,           /* 133 Start of capturing bracket */
2118    OP_CBRAPOS,        /* 130 Ditto, with unlimited, possessive repeat */    OP_CBRAPOS,        /* 134 Ditto, with unlimited, possessive repeat */
2119    OP_COND,           /* 131 Conditional group */    OP_COND,           /* 135 Conditional group */
2120    
2121    /* These five must follow the previous five, in the same order. There's a    /* These five must follow the previous five, in the same order. There's a
2122    check for >= SBRA to distinguish the two sets. */    check for >= SBRA to distinguish the two sets. */
2123    
2124    OP_SBRA,           /* 132 Start of non-capturing bracket, check empty  */    OP_SBRA,           /* 136 Start of non-capturing bracket, check empty  */
2125    OP_SBRAPOS,        /* 133 Ditto, with unlimited, possessive repeat */    OP_SBRAPOS,        /* 137 Ditto, with unlimited, possessive repeat */
2126    OP_SCBRA,          /* 134 Start of capturing bracket, check empty */    OP_SCBRA,          /* 138 Start of capturing bracket, check empty */
2127    OP_SCBRAPOS,       /* 135 Ditto, with unlimited, possessive repeat */    OP_SCBRAPOS,       /* 139 Ditto, with unlimited, possessive repeat */
2128    OP_SCOND,          /* 136 Conditional group, check empty */    OP_SCOND,          /* 140 Conditional group, check empty */
2129    
2130    /* The next two pairs must (respectively) be kept together. */    /* The next two pairs must (respectively) be kept together. */
2131    
2132    OP_CREF,           /* 137 Used to hold a capture number as condition */    OP_CREF,           /* 141 Used to hold a capture number as condition */
2133    OP_DNCREF,         /* 138 Used to point to duplicate names as a condition */    OP_DNCREF,         /* 142 Used to point to duplicate names as a condition */
2134    OP_RREF,           /* 139 Used to hold a recursion number as condition */    OP_RREF,           /* 143 Used to hold a recursion number as condition */
2135    OP_DNRREF,         /* 140 Used to point to duplicate names as a condition */    OP_DNRREF,         /* 144 Used to point to duplicate names as a condition */
2136    OP_DEF,            /* 141 The DEFINE condition */    OP_DEF,            /* 145 The DEFINE condition */
2137    
2138    OP_BRAZERO,        /* 142 These two must remain together and in this */    OP_BRAZERO,        /* 146 These two must remain together and in this */
2139    OP_BRAMINZERO,     /* 143 order. */    OP_BRAMINZERO,     /* 147 order. */
2140    OP_BRAPOSZERO,     /* 144 */    OP_BRAPOSZERO,     /* 148 */
2141    
2142    /* These are backtracking control verbs */    /* These are backtracking control verbs */
2143    
2144    OP_MARK,           /* 145 always has an argument */    OP_MARK,           /* 149 always has an argument */
2145    OP_PRUNE,          /* 146 */    OP_PRUNE,          /* 150 */
2146    OP_PRUNE_ARG,      /* 147 same, but with argument */    OP_PRUNE_ARG,      /* 151 same, but with argument */
2147    OP_SKIP,           /* 148 */    OP_SKIP,           /* 152 */
2148    OP_SKIP_ARG,       /* 149 same, but with argument */    OP_SKIP_ARG,       /* 153 same, but with argument */
2149    OP_THEN,           /* 150 */    OP_THEN,           /* 154 */
2150    OP_THEN_ARG,       /* 151 same, but with argument */    OP_THEN_ARG,       /* 155 same, but with argument */
2151    OP_COMMIT,         /* 152 */    OP_COMMIT,         /* 156 */
2152    
2153    /* These are forced failure and success verbs */    /* These are forced failure and success verbs */
2154    
2155    OP_FAIL,           /* 153 */    OP_FAIL,           /* 157 */
2156    OP_ACCEPT,         /* 154 */    OP_ACCEPT,         /* 158 */
2157    OP_ASSERT_ACCEPT,  /* 155 Used inside assertions */    OP_ASSERT_ACCEPT,  /* 159 Used inside assertions */
2158    OP_CLOSE,          /* 156 Used before OP_ACCEPT to close open captures */    OP_CLOSE,          /* 160 Used before OP_ACCEPT to close open captures */
2159    
2160    /* This is used to skip a subpattern with a {0} quantifier */    /* This is used to skip a subpattern with a {0} quantifier */
2161    
2162    OP_SKIPZERO,       /* 157 */    OP_SKIPZERO,       /* 161 */
2163    
2164    /* This is not an opcode, but is used to check that tables indexed by opcode    /* This is not an opcode, but is used to check that tables indexed by opcode
2165    are the correct length, in order to catch updating errors - there have been    are the correct length, in order to catch updating errors - there have been
# Line 2194  some cases doesn't actually use these na Line 2199  some cases doesn't actually use these na
2199    "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \    "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
2200    "*+","++", "?+", "{",                                           \    "*+","++", "?+", "{",                                           \
2201    "*", "*?", "+", "+?", "?", "??", "{", "{",                      \    "*", "*?", "+", "+?", "?", "??", "{", "{",                      \
2202      "*+","++", "?+", "{",                                           \
2203    "class", "nclass", "xclass", "Ref", "Refi", "DnRef", "DnRefi",  \    "class", "nclass", "xclass", "Ref", "Refi", "DnRef", "DnRefi",  \
2204    "Recurse", "Callout",                                           \    "Recurse", "Callout",                                           \
2205    "Alt", "Ket", "KetRmax", "KetRmin", "KetRpos",                  \    "Alt", "Ket", "KetRmax", "KetRmin", "KetRpos",                  \
# Line 2259  in UTF-8 mode. The code that uses this t Line 2265  in UTF-8 mode. The code that uses this t
2265    /* Character class & ref repeats                                         */ \    /* Character class & ref repeats                                         */ \
2266    1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */ \    1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */ \
2267    1+2*IMM2_SIZE, 1+2*IMM2_SIZE,  /* CRRANGE, CRMINRANGE                    */ \    1+2*IMM2_SIZE, 1+2*IMM2_SIZE,  /* CRRANGE, CRMINRANGE                    */ \
2268      1, 1, 1, 1+2*IMM2_SIZE,        /* Possessive *+, ++, ?+, CRPOSRANGE      */ \
2269    1+(32/sizeof(pcre_uchar)),     /* CLASS                                  */ \    1+(32/sizeof(pcre_uchar)),     /* CLASS                                  */ \
2270    1+(32/sizeof(pcre_uchar)),     /* NCLASS                                 */ \    1+(32/sizeof(pcre_uchar)),     /* NCLASS                                 */ \
2271    0,                             /* XCLASS - variable length               */ \    0,                             /* XCLASS - variable length               */ \

Legend:
Removed from v.1370  
changed lines
  Added in v.1379

  ViewVC Help
Powered by ViewVC 1.1.5