The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/perl
($progname = $0) =~ s,.*/,,;
print "/* This file is autogenerated by $progname */\n";
print "typedef char*(*PFUNC)(PSTATE*, char *beg, char *end, U32 utf8, SV* self);\n";
print "static PFUNC parsefunc[] = {\n";
for my $c (0..255) {
local $_ = chr($c);
my $func = "null";
if (/^[A-Za-z]$/) {
$func = "start";
}
elsif ($_ eq "/") {
$func = "end";
}
elsif ($_ eq "!") {
$func = "decl";
}
elsif ($_ eq "?") {
$func = "process";
}
printf " %-15s /* %3d */\n", "parse_$func,", $c;
}
print "};\n";