diff options
| author | rsc <devnull@localhost> | 2005-10-29 16:26:32 +0000 |
|---|---|---|
| committer | rsc <devnull@localhost> | 2005-10-29 16:26:32 +0000 |
| commit | d1f529f46f957c78a3db73b42c2fcd2d3c9f8a34 (patch) | |
| tree | a4d6f28106cca984926b9dd5ecddd6053b654617 /src/cmd/upas/bayes/dump.c | |
| parent | 9f1fdc128738b2ed76258ac22a8574c681f3df3a (diff) | |
| download | plan9port-d1f529f46f957c78a3db73b42c2fcd2d3c9f8a34.tar.gz plan9port-d1f529f46f957c78a3db73b42c2fcd2d3c9f8a34.zip | |
Thanks to John Cummings.
Diffstat (limited to 'src/cmd/upas/bayes/dump.c')
| -rw-r--r-- | src/cmd/upas/bayes/dump.c | 67 |
1 files changed, 67 insertions, 0 deletions
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 <u.h> +#include <libc.h> +#include <bio.h> +#include <regexp.h> +#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; i<pp->ninst; i++){ + l = &pp->inst[i]; + print("%d:", i); + for(j=0; j<l->nc; j++){ + print(" ["); + if(j == 0) + if(l->c[j].start > 1) + print("<bad start %d>\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<argc; i++) + print("match %d\n", dregexec(dp, argv[i], 1)); + exits(0); +} |
