8 int main(int argc
, char *argv
[])
13 enum { Z
= 0, Z1
= 2, X
= 4, X0
= 6 };
16 x
= mp_readstring(MP_NEW
, argv
[1], 0, 0);
19 for (i
= 0, mp_scan(&sc
, x
); mp_step(&sc
); i
++) {
20 switch (st
| mp_bit(&sc
)) {
21 case Z
| 1: st
= Z1
; printf("\t-> Z1\n"); break;
22 case Z1
| 0: st
= Z
; printf("+ %lu\t-> Z\n", i
- 1); break;
23 case Z1
| 1: st
= X
; printf("- %lu\t-> X\n", i
- 1); break;
24 case X
| 0: st
= X0
; printf("\t-> X0\n"); break;
25 case X0
| 1: st
= X
; printf("- %lu\t-> X\n", i
- 1); break;
26 case X0
| 0: st
= Z
; printf("+ %lu\t-> Z\n", i
- 1); break;
30 case Z1
: case X0
: printf("+ %lu\n", i
- 1); break;
31 case X
: printf("+ %lu\n", i
); break;