diff options
-rw-r--r-- | regen/regcomp.pl | 34 | ||||
-rw-r--r-- | regnodes.h | 118 |
2 files changed, 152 insertions, 0 deletions
diff --git a/regen/regcomp.pl b/regen/regcomp.pl index 09b20ca641..c49c86b355 100644 --- a/regen/regcomp.pl +++ b/regen/regcomp.pl @@ -496,6 +496,39 @@ EOP EOP } +sub print_typedefs { + my ($out)= @_; + print $out <<EOP; + +/* typedefs for regex nodes - one typedef per node type */ + +EOP + my $len= 0; + foreach my $node (@ops) { + if ($node->{suffix} and $len < length($node->{suffix})) { + $len= length $node->{suffix}; + } + } + $len += length "struct regnode_"; + $len = (int($len/5)+2)*5; + my $prefix= "tregnode"; + + foreach my $node (sort { $a->{name} cmp $b->{name} } @ops) { + my $struct_name= "struct regnode"; + if (my $suffix= $node->{suffix}) { + $struct_name .= "_$suffix"; + } + $node->{typedef}= $prefix . "_" . $node->{name}; + printf $out "typedef %*s %s;\n", -$len, $struct_name, $node->{typedef}; + } + print $out <<EOP; + +/* end typedefs */ + +EOP + +} + sub print_regarglen { my ($out)= @_; print $out <<EOP; @@ -810,6 +843,7 @@ read_definition("regcomp.sym"); my $out= open_new( 'regnodes.h', '>', { by => 'regen/regcomp.pl', from => 'regcomp.sym' } ); print $out "#if $confine_to_core\n\n"; +print_typedefs($out); print_state_defs($out); print_regkind($out); print_regarglen($out), diff --git a/regnodes.h b/regnodes.h index 673dcf5643..8d29900e0c 100644 --- a/regnodes.h +++ b/regnodes.h @@ -6,6 +6,124 @@ #if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) + +/* typedefs for regex nodes - one typedef per node type */ + +typedef struct regnode_2L tregnode_ACCEPT; +typedef struct regnode_1 tregnode_AHOCORASICK; +typedef struct regnode_charclass tregnode_AHOCORASICKC; +typedef struct regnode_charclass tregnode_ANYOF; +typedef struct regnode_charclass tregnode_ANYOFD; +typedef struct regnode_1 tregnode_ANYOFH; +typedef struct regnode_1 tregnode_ANYOFHb; +typedef struct regnode_bbm tregnode_ANYOFHbbm; +typedef struct regnode_1 tregnode_ANYOFHr; +typedef struct regnode_1 tregnode_ANYOFHs; +typedef struct regnode_charclass tregnode_ANYOFL; +typedef struct regnode_1 tregnode_ANYOFM; +typedef struct regnode_charclass_posixl tregnode_ANYOFPOSIXL; +typedef struct regnode_1 tregnode_ANYOFR; +typedef struct regnode_1 tregnode_ANYOFRb; +typedef struct regnode tregnode_BOUND; +typedef struct regnode tregnode_BOUNDA; +typedef struct regnode tregnode_BOUNDL; +typedef struct regnode tregnode_BOUNDU; +typedef struct regnode tregnode_BRANCH; +typedef struct regnode_1 tregnode_BRANCHJ; +typedef struct regnode_1 tregnode_CLOSE; +typedef struct regnode tregnode_CLUMP; +typedef struct regnode_1 tregnode_COMMIT; +typedef struct regnode_2 tregnode_CURLY; +typedef struct regnode_2 tregnode_CURLYM; +typedef struct regnode_2 tregnode_CURLYN; +typedef struct regnode_2 tregnode_CURLYX; +typedef struct regnode_1 tregnode_CUTGROUP; +typedef struct regnode_1 tregnode_DEFINEP; +typedef struct regnode tregnode_END; +typedef struct regnode tregnode_ENDLIKE; +typedef struct regnode tregnode_EOS; +typedef struct regnode_2L tregnode_EVAL; +typedef struct regnode tregnode_EXACT; +typedef struct regnode tregnode_EXACTF; +typedef struct regnode tregnode_EXACTFAA; +typedef struct regnode tregnode_EXACTFAA_NO_TRIE; +typedef struct regnode tregnode_EXACTFL; +typedef struct regnode tregnode_EXACTFLU8; +typedef struct regnode tregnode_EXACTFU; +typedef struct regnode tregnode_EXACTFUP; +typedef struct regnode tregnode_EXACTFU_REQ8; +typedef struct regnode tregnode_EXACTFU_S_EDGE; +typedef struct regnode tregnode_EXACTL; +typedef struct regnode tregnode_EXACT_REQ8; +typedef struct regnode_2L tregnode_GOSUB; +typedef struct regnode tregnode_GPOS; +typedef struct regnode_1 tregnode_GROUPP; +typedef struct regnode_1 tregnode_GROUPPN; +typedef struct regnode_1 tregnode_IFMATCH; +typedef struct regnode_1 tregnode_IFTHEN; +typedef struct regnode_1 tregnode_INSUBP; +typedef struct regnode tregnode_KEEPS; +typedef struct regnode_1 tregnode_LEXACT; +typedef struct regnode_1 tregnode_LEXACT_REQ8; +typedef struct regnode tregnode_LNBREAK; +typedef struct regnode tregnode_LOGICAL; +typedef struct regnode_1 tregnode_LONGJMP; +typedef struct regnode tregnode_LOOKBEHIND_END; +typedef struct regnode_1 tregnode_MARKPOINT; +typedef struct regnode tregnode_MBOL; +typedef struct regnode tregnode_MEOL; +typedef struct regnode tregnode_MINMOD; +typedef struct regnode_1 tregnode_NANYOFM; +typedef struct regnode tregnode_NBOUND; +typedef struct regnode tregnode_NBOUNDA; +typedef struct regnode tregnode_NBOUNDL; +typedef struct regnode tregnode_NBOUNDU; +typedef struct regnode tregnode_NOTHING; +typedef struct regnode tregnode_NPOSIXA; +typedef struct regnode tregnode_NPOSIXD; +typedef struct regnode tregnode_NPOSIXL; +typedef struct regnode tregnode_NPOSIXU; +typedef struct regnode_1 tregnode_OPEN; +typedef struct regnode_1 tregnode_OPFAIL; +typedef struct regnode tregnode_OPTIMIZED; +typedef struct regnode tregnode_PLUS; +typedef struct regnode tregnode_POSIXA; +typedef struct regnode tregnode_POSIXD; +typedef struct regnode tregnode_POSIXL; +typedef struct regnode tregnode_POSIXU; +typedef struct regnode_1 tregnode_PRUNE; +typedef struct regnode tregnode_PSEUDO; +typedef struct regnode_1 tregnode_REF; +typedef struct regnode_1 tregnode_REFF; +typedef struct regnode_1 tregnode_REFFA; +typedef struct regnode_1 tregnode_REFFAN; +typedef struct regnode_1 tregnode_REFFL; +typedef struct regnode_1 tregnode_REFFLN; +typedef struct regnode_1 tregnode_REFFN; +typedef struct regnode_1 tregnode_REFFU; +typedef struct regnode_1 tregnode_REFFUN; +typedef struct regnode_1 tregnode_REFN; +typedef struct regnode_p tregnode_REGEX_SET; +typedef struct regnode tregnode_REG_ANY; +typedef struct regnode_1 tregnode_RENUM; +typedef struct regnode tregnode_SANY; +typedef struct regnode tregnode_SBOL; +typedef struct regnode tregnode_SEOL; +typedef struct regnode_1 tregnode_SKIP; +typedef struct regnode tregnode_SRCLOSE; +typedef struct regnode tregnode_SROPEN; +typedef struct regnode tregnode_STAR; +typedef struct regnode tregnode_SUCCEED; +typedef struct regnode_1 tregnode_SUSPEND; +typedef struct regnode tregnode_TAIL; +typedef struct regnode_1 tregnode_TRIE; +typedef struct regnode_charclass tregnode_TRIEC; +typedef struct regnode_1 tregnode_UNLESSM; +typedef struct regnode_1 tregnode_VERB; +typedef struct regnode tregnode_WHILEM; + +/* end typedefs */ + /* Regops and State definitions */ #define REGNODE_MAX 111 |