From d1f529f46f957c78a3db73b42c2fcd2d3c9f8a34 Mon Sep 17 00:00:00 2001 From: rsc Date: Sat, 29 Oct 2005 16:26:32 +0000 Subject: Thanks to John Cummings. --- src/cmd/upas/bayes/dump.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/cmd/upas/bayes/dump.c (limited to 'src/cmd/upas/bayes/dump.c') diff --git a/src/cmd/upas/bayes/dump.c b/src/cmd/upas/bayes/dump.c new file mode 100644 index 00000000..9c7babd3 --- /dev/null +++ b/src/cmd/upas/bayes/dump.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include +#include "/sys/src/libregexp/regcomp.h" +#include "dfa.h" + +#define DUMP + +void +dump(Dreprog *pp) +{ + int i, j; + Dreinst *l; + + print("start %ld %ld %ld %ld\n", + pp->start[0]-pp->inst, + pp->start[1]-pp->inst, + pp->start[2]-pp->inst, + pp->start[3]-pp->inst); + + for(i=0; ininst; i++){ + l = &pp->inst[i]; + print("%d:", i); + for(j=0; jnc; j++){ + print(" ["); + if(j == 0) + if(l->c[j].start > 1) + print("\n", l->c[j].start); + if(j != 0) + print("%C%s", l->c[j].start&0xFFFF, (l->c[j].start&0x10000) ? "$" : ""); + print("-"); + if(j != l->nc-1) + print("%C%s", (l->c[j+1].start&0xFFFF)-1, (l->c[j+1].start&0x10000) ? "$" : ""); + print("] %ld", l->c[j].next - pp->inst); + } + if(l->isfinal) + print(" final"); + if(l->isloop) + print(" loop"); + print("\n"); + } +} + + +void +main(int argc, char **argv) +{ + int i; + Reprog *p; + Dreprog *dp; + + i = 1; + p = regcomp(argv[i]); + if(p == 0){ + print("=== %s: bad regexp\n", argv[i]); + } + // print("=== %s\n", argv[i]); + // rdump(p); + dp = dregcvt(p); + print("=== dfa\n"); + dump(dp); + + for(i=2; i