diff options
author | Damien George <damien.p.george@gmail.com> | 2014-10-11 18:49:02 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-10-11 18:49:02 +0100 |
commit | 26fa3e30ec84b8ed0cb270d1eca86dcb97389a82 (patch) | |
tree | 9fc4bb3db2cc7beac7847b5caeeb7c966c2eccaa /extmod/re1.5/dumpcode.c | |
parent | 1ce916aefdaee7bca2bcf2bc4ee7e1eb75002f67 (diff) | |
parent | f7bcce05524783ab8b47171a8634a270ca68d040 (diff) | |
download | micropython-26fa3e30ec84b8ed0cb270d1eca86dcb97389a82.tar.gz micropython-26fa3e30ec84b8ed0cb270d1eca86dcb97389a82.zip |
Merge branch 'modure' of https://github.com/pfalcon/micropython into pfalcon-modure
Diffstat (limited to 'extmod/re1.5/dumpcode.c')
-rw-r--r-- | extmod/re1.5/dumpcode.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/extmod/re1.5/dumpcode.c b/extmod/re1.5/dumpcode.c new file mode 100644 index 0000000000..b91ded03a6 --- /dev/null +++ b/extmod/re1.5/dumpcode.c @@ -0,0 +1,50 @@ +// Copyright 2014 Paul Sokolovsky. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "regexp.h" + +void re1_5_dumpcode(ByteProg *prog) +{ + int pc = 0; + char *code = prog->insts; + while (pc < prog->bytelen) { + printf("%2d: ", pc); + switch(code[pc++]) { + default: + assert(0); +// re1_5_fatal("printprog"); + case Split: + printf("split %d (%d)\n", pc + (signed char)code[pc] + 1, (signed char)code[pc]); + pc++; + break; + case RSplit: + printf("rsplit %d (%d)\n", pc + (signed char)code[pc] + 1, (signed char)code[pc]); + pc++; + break; + case Jmp: + printf("jmp %d (%d)\n", pc + (signed char)code[pc] + 1, (signed char)code[pc]); + pc++; + break; + case Char: + printf("char %c\n", code[pc++]); + break; + case Any: + printf("any\n"); + break; + case Match: + printf("match\n"); + break; + case Save: + printf("save %d\n", (unsigned char)code[pc++]); + break; + case Bol: + printf("assert bol\n"); + break; + case Eol: + printf("assert eol\n"); + break; + } + } + printf("Bytes: %d, insts: %d\n", prog->bytelen, prog->len); +} |