X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=regnodes.h;h=79de061fb6acf97abde4fa992d63878c59043c02;hb=08d0d8ab11be611f4baf746cfb6ff7791962f494;hp=3c3a5d6d29de4b8583f8d5d737a3d01f57ba2ae6;hpb=e1d1eefb8c88e0dcaf2bb9e6c04d7f6192be966f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/regnodes.h b/regnodes.h index 3c3a5d6..79de061 100644 --- a/regnodes.h +++ b/regnodes.h @@ -6,8 +6,8 @@ /* Regops and State definitions */ -#define REGNODE_MAX 89 -#define REGMATCH_STATE_MAX 129 +#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. */ @@ -97,8 +97,9 @@ #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 OPTIMIZED 88 /* 0x58 Placeholder for dump. */ -#define PSEUDO 89 /* 0x59 Pseudo opcode for internal use. */ +#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 */ @@ -235,6 +236,7 @@ EXTCONST U8 PL_regkind[] = { NVERTWS, /* NVERTWS */ HORIZWS, /* HORIZWS */ NHORIZWS, /* NHORIZWS */ + FOLDCHAR, /* FOLDCHAR */ NOTHING, /* OPTIMIZED */ PSEUDO, /* PSEUDO */ /* ------------ States ------------- */ @@ -373,6 +375,7 @@ static const U8 regarglen[] = { 0, /* NVERTWS */ 0, /* HORIZWS */ 0, /* NHORIZWS */ + EXTRA_SIZE(struct regnode_1), /* FOLDCHAR */ 0, /* OPTIMIZED */ 0, /* PSEUDO */ }; @@ -468,6 +471,7 @@ static const char reg_off_by_arg[] = { 0, /* NVERTWS */ 0, /* HORIZWS */ 0, /* NHORIZWS */ + 0, /* FOLDCHAR */ 0, /* OPTIMIZED */ 0, /* PSEUDO */ }; @@ -568,8 +572,9 @@ EXTCONST char * const PL_reg_name[] = { "NVERTWS", /* 0x55 */ "HORIZWS", /* 0x56 */ "NHORIZWS", /* 0x57 */ - "OPTIMIZED", /* 0x58 */ - "PSEUDO", /* 0x59 */ + "FOLDCHAR", /* 0x58 */ + "OPTIMIZED", /* 0x59 */ + "PSEUDO", /* 0x5a */ /* ------------ States ------------- */ "TRIE_next", /* REGNODE_MAX +0x01 */ "TRIE_next_fail", /* REGNODE_MAX +0x02 */ @@ -614,4 +619,46 @@ EXTCONST char * const PL_reg_name[] = { }; #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: */