/* Regops and State definitions */
-#define REGNODE_MAX 84
-#define REGMATCH_STATE_MAX 124
+#define REGNODE_MAX 90
+#define REGMATCH_STATE_MAX 130
#define END 0 /* 0000 End of program. */
#define SUCCEED 1 /* 0x01 Return from a subroutine, basically. */
#define COMMIT 80 /* 0x50 Pattern fails outright if backtracking through this */
#define CUTGROUP 81 /* 0x51 On failure go to the next alternation in the group */
#define KEEPS 82 /* 0x52 $& begins here. */
-#define OPTIMIZED 83 /* 0x53 Placeholder for dump. */
-#define PSEUDO 84 /* 0x54 Pseudo opcode for internal use. */
+#define LNBREAK 83 /* 0x53 generic newline pattern */
+#define VERTWS 84 /* 0x54 vertical whitespace (Perl 6) */
+#define NVERTWS 85 /* 0x55 not vertical whitespace (Perl 6) */
+#define HORIZWS 86 /* 0x56 horizontal whitespace (Perl 6) */
+#define NHORIZWS 87 /* 0x57 not horizontal whitespace (Perl 6) */
+#define FOLDCHAR 88 /* 0x58 codepoint with tricky case folding properties. */
+#define OPTIMIZED 89 /* 0x59 Placeholder for dump. */
+#define PSEUDO 90 /* 0x5a Pseudo opcode for internal use. */
/* ------------ States ------------- */
#define TRIE_next (REGNODE_MAX + 1) /* state for TRIE */
#define TRIE_next_fail (REGNODE_MAX + 2) /* state for TRIE */
VERB, /* COMMIT */
VERB, /* CUTGROUP */
KEEPS, /* KEEPS */
+ LNBREAK, /* LNBREAK */
+ VERTWS, /* VERTWS */
+ NVERTWS, /* NVERTWS */
+ HORIZWS, /* HORIZWS */
+ NHORIZWS, /* NHORIZWS */
+ FOLDCHAR, /* FOLDCHAR */
NOTHING, /* OPTIMIZED */
PSEUDO, /* PSEUDO */
/* ------------ States ------------- */
EXTRA_SIZE(struct regnode_1), /* COMMIT */
EXTRA_SIZE(struct regnode_1), /* CUTGROUP */
0, /* KEEPS */
+ 0, /* LNBREAK */
+ 0, /* VERTWS */
+ 0, /* NVERTWS */
+ 0, /* HORIZWS */
+ 0, /* NHORIZWS */
+ EXTRA_SIZE(struct regnode_1), /* FOLDCHAR */
0, /* OPTIMIZED */
0, /* PSEUDO */
};
0, /* COMMIT */
0, /* CUTGROUP */
0, /* KEEPS */
+ 0, /* LNBREAK */
+ 0, /* VERTWS */
+ 0, /* NVERTWS */
+ 0, /* HORIZWS */
+ 0, /* NHORIZWS */
+ 0, /* FOLDCHAR */
0, /* OPTIMIZED */
0, /* PSEUDO */
};
/* reg_name[] - Opcode/state names in string form, for debugging */
-#ifdef DEBUGGING
-# ifndef DOINIT
+#ifndef DOINIT
EXTCONST char * PL_reg_name[];
-# else
-EXTCONST char * PL_reg_name[] = {
+#else
+EXTCONST char * const PL_reg_name[] = {
"END", /* 0000 */
"SUCCEED", /* 0x01 */
"BOL", /* 0x02 */
"COMMIT", /* 0x50 */
"CUTGROUP", /* 0x51 */
"KEEPS", /* 0x52 */
- "OPTIMIZED", /* 0x53 */
- "PSEUDO", /* 0x54 */
+ "LNBREAK", /* 0x53 */
+ "VERTWS", /* 0x54 */
+ "NVERTWS", /* 0x55 */
+ "HORIZWS", /* 0x56 */
+ "NHORIZWS", /* 0x57 */
+ "FOLDCHAR", /* 0x58 */
+ "OPTIMIZED", /* 0x59 */
+ "PSEUDO", /* 0x5a */
/* ------------ States ------------- */
"TRIE_next", /* REGNODE_MAX +0x01 */
"TRIE_next_fail", /* REGNODE_MAX +0x02 */
"KEEPS_next", /* REGNODE_MAX +0x27 */
"KEEPS_next_fail", /* REGNODE_MAX +0x28 */
};
-# endif /* DOINIT */
-#endif /* DEBUGGING */
+#endif /* DOINIT */
+
+/* PL_reg_extflags_name[] - Opcode/state names in string form, for debugging */
+
+#ifndef DOINIT
+EXTCONST char * PL_reg_extflags_name[];
+#else
+EXTCONST char * const PL_reg_extflags_name[] = {
+ /* Bits in extflags defined: 11111111111101111111111100111111 */
+ "MULTILINE", /* 0x00000001 */
+ "SINGLELINE", /* 0x00000002 */
+ "FOLD", /* 0x00000004 */
+ "EXTENDED", /* 0x00000008 */
+ "KEEPCOPY", /* 0x00000010 */
+ "LOCALE", /* 0x00000020 */
+ "UNUSED_BIT_6", /* 0x00000040 */
+ "UNUSED_BIT_7", /* 0x00000080 */
+ "ANCH_BOL", /* 0x00000100 */
+ "ANCH_MBOL", /* 0x00000200 */
+ "ANCH_SBOL", /* 0x00000400 */
+ "ANCH_GPOS", /* 0x00000800 */
+ "GPOS_SEEN", /* 0x00001000 */
+ "GPOS_FLOAT", /* 0x00002000 */
+ "LOOKBEHIND_SEEN", /* 0x00004000 */
+ "EVAL_SEEN", /* 0x00008000 */
+ "CANY_SEEN", /* 0x00010000 */
+ "NOSCAN", /* 0x00020000 */
+ "CHECK_ALL", /* 0x00040000 */
+ "UNUSED_BIT_19", /* 0x00080000 */
+ "MATCH_UTF8", /* 0x00100000 */
+ "USE_INTUIT_NOML", /* 0x00200000 */
+ "USE_INTUIT_ML", /* 0x00400000 */
+ "INTUIT_TAIL", /* 0x00800000 */
+ "SPLIT", /* 0x01000000 */
+ "COPY_DONE", /* 0x02000000 */
+ "TAINTED_SEEN", /* 0x04000000 */
+ "TAINTED", /* 0x08000000 */
+ "START_ONLY", /* 0x10000000 */
+ "SKIPWHITE", /* 0x20000000 */
+ "WHITE", /* 0x40000000 */
+ "NULL", /* 0x80000000 */
+};
+#endif /* DOINIT */
/* ex: set ro: */