summaryrefslogtreecommitdiff
path: root/regcomp.pl
diff options
context:
space:
mode:
Diffstat (limited to 'regcomp.pl')
-rw-r--r--regcomp.pl31
1 files changed, 30 insertions, 1 deletions
diff --git a/regcomp.pl b/regcomp.pl
index 3ba699b0b6..17472cc811 100644
--- a/regcomp.pl
+++ b/regcomp.pl
@@ -187,9 +187,38 @@ print OUT <<EOP;
};
#endif /* DOINIT */
-/* ex: set ro: */
+/* 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[] = {
EOP
+open my $fh,"<","regexp.h" or die "Can't read regexp.h: $!";
+my %rxfv;
+my $val;
+while (<$fh>) {
+ if (/#define\s+(RXf_\w+)\s+(0x[A-F\d]+)/i) {
+ $rxfv{$1}= eval $2;
+ $val|=$rxfv{$1};
+ }
+}
+my %vrxf=reverse %rxfv;
+printf OUT "\t/* Bits in extflags defined: %032b */\n",$val;
+for (0..31) {
+ my $n=$vrxf{2**$_}||"UNUSED_BIT_$_";
+ $n=~s/^RXf_(PMf_)?//;
+ printf OUT qq(\t%-20s/* 0x%08x */\n),
+ qq("$n",),2**$_;
+}
+
+print OUT <<EOP;
+};
+#endif /* DOINIT */
+
+/* ex: set ro: */
+EOP
close OUT or die "close $tmp_h: $!";
safer_rename $tmp_h, 'regnodes.h';