summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--regen/regcomp.pl34
-rw-r--r--regnodes.h118
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