void putblock(int x, int t) { if (block[t][x] > 0) { int size = block[t][x]; int i; putblank(n - size); for (i = 0; i < size * 2 + 1; ++ i) putchar('@'); putblank(n - size); } else { putblank(n); putchar('|'); putblank(n); } }
void print_state() { int i; putblank(n + 1); putchar('|'); putblank(2 * n + 1); putchar('|'); putblank(2 * n + 1); puts("|"); for (i = n - 1; i >= 0; -- i) { putchar(' '); putblock(i, 0); putchar(' '); putblock(i, 1); putchar(' '); putblock(i, 2); puts(""); } puts(""); }
datas() { register int c, n; int n1; rewii(idfile); swii(idfile); for( ; ; ) { c = getic(&n1); n = n1; switch(c) { case ICEOF: return; case ICMARK: break; case ICBLANK: putblank(n); break; case ICNAME: if(*ftnames[n] == '\0') fatal1("no name for n=%d", n); p2stmt(0); p2key(FDATA); p2str( ftnames[n] ); break; case ICOP: p2str( ops[n] ); break; case ICCONST: p2str( getsii(n) ); break; default: fatal1("datas: invalid intermediate tag %d", c); } } }