875 |
#define STRING_COMMIT0 "COMMIT\0" |
#define STRING_COMMIT0 "COMMIT\0" |
876 |
#define STRING_F0 "F\0" |
#define STRING_F0 "F\0" |
877 |
#define STRING_FAIL0 "FAIL\0" |
#define STRING_FAIL0 "FAIL\0" |
878 |
|
#define STRING_MARK0 "MARK\0" |
879 |
#define STRING_PRUNE0 "PRUNE\0" |
#define STRING_PRUNE0 "PRUNE\0" |
880 |
#define STRING_SKIP0 "SKIP\0" |
#define STRING_SKIP0 "SKIP\0" |
881 |
#define STRING_THEN "THEN" |
#define STRING_THEN "THEN" |
1128 |
#define STRING_COMMIT0 STR_C STR_O STR_M STR_M STR_I STR_T "\0" |
#define STRING_COMMIT0 STR_C STR_O STR_M STR_M STR_I STR_T "\0" |
1129 |
#define STRING_F0 STR_F "\0" |
#define STRING_F0 STR_F "\0" |
1130 |
#define STRING_FAIL0 STR_F STR_A STR_I STR_L "\0" |
#define STRING_FAIL0 STR_F STR_A STR_I STR_L "\0" |
1131 |
|
#define STRING_MARK0 STR_M STR_A STR_R STR_K "\0" |
1132 |
#define STRING_PRUNE0 STR_P STR_R STR_U STR_N STR_E "\0" |
#define STRING_PRUNE0 STR_P STR_R STR_U STR_N STR_E "\0" |
1133 |
#define STRING_SKIP0 STR_S STR_K STR_I STR_P "\0" |
#define STRING_SKIP0 STR_S STR_K STR_I STR_P "\0" |
1134 |
#define STRING_THEN STR_T STR_H STR_E STR_N |
#define STRING_THEN STR_T STR_H STR_E STR_N |
1380 |
|
|
1381 |
/* These are backtracking control verbs */ |
/* These are backtracking control verbs */ |
1382 |
|
|
1383 |
OP_PRUNE, /* 107 */ |
OP_MARK, /* 107 always has an argument */ |
1384 |
OP_SKIP, /* 108 */ |
OP_PRUNE, /* 108 */ |
1385 |
OP_THEN, /* 109 */ |
OP_PRUNE_ARG, /* 109 same, but with argument */ |
1386 |
OP_COMMIT, /* 110 */ |
OP_SKIP, /* 110 */ |
1387 |
|
OP_SKIP_ARG, /* 111 same, but with argument */ |
1388 |
|
OP_THEN, /* 112 */ |
1389 |
|
OP_THEN_ARG, /* 113 same, but with argument */ |
1390 |
|
OP_COMMIT, /* 114 */ |
1391 |
|
|
1392 |
/* These are forced failure and success verbs */ |
/* These are forced failure and success verbs */ |
1393 |
|
|
1394 |
OP_FAIL, /* 111 */ |
OP_FAIL, /* 115 */ |
1395 |
OP_ACCEPT, /* 112 */ |
OP_ACCEPT, /* 116 */ |
1396 |
OP_CLOSE, /* 113 Used before OP_ACCEPT to close open captures */ |
OP_CLOSE, /* 117 Used before OP_ACCEPT to close open captures */ |
1397 |
|
|
1398 |
/* This is used to skip a subpattern with a {0} quantifier */ |
/* This is used to skip a subpattern with a {0} quantifier */ |
1399 |
|
|
1400 |
OP_SKIPZERO, /* 114 */ |
OP_SKIPZERO, /* 118 */ |
1401 |
|
|
1402 |
/* 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 |
1403 |
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 |
1408 |
|
|
1409 |
/* *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro |
/* *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro |
1410 |
definitions that follow must also be updated to match. There are also tables |
definitions that follow must also be updated to match. There are also tables |
1411 |
called "coptable" cna "poptable" in pcre_dfa_exec.c that must be updated. */ |
called "coptable" and "poptable" in pcre_dfa_exec.c that must be updated. */ |
1412 |
|
|
1413 |
|
|
1414 |
/* This macro defines textual names for all the opcodes. These are used only |
/* This macro defines textual names for all the opcodes. These are used only |
1433 |
"Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ |
"Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ |
1434 |
"Cond ref", "Cond nref", "Cond rec", "Cond nrec", "Cond def", \ |
"Cond ref", "Cond nref", "Cond rec", "Cond nrec", "Cond def", \ |
1435 |
"Brazero", "Braminzero", \ |
"Brazero", "Braminzero", \ |
1436 |
"*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ |
"*MARK", "*PRUNE", "*PRUNE", "*SKIP", "*SKIP", \ |
1437 |
|
"*THEN", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ |
1438 |
"Close", "Skip zero" |
"Close", "Skip zero" |
1439 |
|
|
1440 |
|
|
1500 |
3, 3, /* RREF, NRREF */ \ |
3, 3, /* RREF, NRREF */ \ |
1501 |
1, /* DEF */ \ |
1, /* DEF */ \ |
1502 |
1, 1, /* BRAZERO, BRAMINZERO */ \ |
1, 1, /* BRAZERO, BRAMINZERO */ \ |
1503 |
1, 1, 1, 1, /* PRUNE, SKIP, THEN, COMMIT, */ \ |
3, 1, 3, /* MARK, PRUNE, PRUNE_ARG, */ \ |
1504 |
1, 1, 3, 1 /* FAIL, ACCEPT, CLOSE, SKIPZERO */ |
1, 3, 1, 3, /* SKIP, SKIP_ARG, THEN, THEN_ARG, */ \ |
1505 |
|
1, 1, 1, 3, 1 /* COMMIT, FAIL, ACCEPT, CLOSE, SKIPZERO */ |
1506 |
|
|
1507 |
|
|
1508 |
/* A magic value for OP_RREF and OP_NRREF to indicate the "any recursion" |
/* A magic value for OP_RREF and OP_NRREF to indicate the "any recursion" |
1511 |
#define RREF_ANY 0xffff |
#define RREF_ANY 0xffff |
1512 |
|
|
1513 |
/* Compile time error code numbers. They are given names so that they can more |
/* Compile time error code numbers. They are given names so that they can more |
1514 |
easily be tracked. When a new number is added, the table called eint in |
easily be tracked. When a new number is added, the table called eint in |
1515 |
pcreposix.c must be updated. */ |
pcreposix.c must be updated. */ |
1516 |
|
|
1517 |
enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, |
enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, |
1520 |
ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39, |
ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39, |
1521 |
ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49, |
ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49, |
1522 |
ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, |
ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, |
1523 |
ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERRCOUNT }; |
ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERRCOUNT }; |
1524 |
|
|
1525 |
/* The real format of the start of the pcre block; the index of names and the |
/* The real format of the start of the pcre block; the index of names and the |
1526 |
code vector run on as long as necessary after the end. We store an explicit |
code vector run on as long as necessary after the end. We store an explicit |
1625 |
struct recursion_info *prevrec; /* Previous recursion record (or NULL) */ |
struct recursion_info *prevrec; /* Previous recursion record (or NULL) */ |
1626 |
int group_num; /* Number of group that was called */ |
int group_num; /* Number of group that was called */ |
1627 |
const uschar *after_call; /* "Return value": points after the call in the expr */ |
const uschar *after_call; /* "Return value": points after the call in the expr */ |
|
USPTR save_start; /* Old value of mstart */ |
|
1628 |
int *offset_save; /* Pointer to start of saved offsets */ |
int *offset_save; /* Pointer to start of saved offsets */ |
1629 |
int saved_max; /* Number of saved offsets */ |
int saved_max; /* Number of saved offsets */ |
1630 |
int save_offset_top; /* Current value of offset_top */ |
int save_offset_top; /* Current value of offset_top */ |
1682 |
int eptrn; /* Next free eptrblock */ |
int eptrn; /* Next free eptrblock */ |
1683 |
recursion_info *recursive; /* Linked list of recursion data */ |
recursion_info *recursive; /* Linked list of recursion data */ |
1684 |
void *callout_data; /* To pass back to callouts */ |
void *callout_data; /* To pass back to callouts */ |
1685 |
|
const uschar *mark; /* Mark pointer to pass back */ |
1686 |
} match_data; |
} match_data; |
1687 |
|
|
1688 |
/* A similar structure is used for the same purpose by the DFA matching |
/* A similar structure is used for the same purpose by the DFA matching |