#include #include static unsigned char get = 0; static unsigned char _stack[4]; static unsigned char *stack = _stack; static unsigned char *state; int main(){ int c; while((c = getchar()) != EOF){ if(stack == (unsigned char *)0) return (char)state; if(get){ state = (char *)c; get = 0; continue; } switch(c){ case ' ': case '\n': case '\r': case '\t': case '\v': break; case '!': state = stack; break; case '$': stack = state; state = (char *)*_stack; break; case '%': *stack = (char)state; break; case '^': state = (char *)0; break; case '+': ++state; break; case '-': --state; break; case '>': putchar((char)state); break; case '<': get = 1; break; case ':': while((c = getchar()) != '\n') if(c == EOF) goto fin; break; } } fin: return 1; }