43 lines
838 B
C
43 lines
838 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
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 '+': ++(char)state; break;
|
|
case '-': --(char)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;
|
|
}
|