// Sten M. Andersen, www.stenmorten.com, 2003
// Prefix-to-Infix (fully parent.)

char ch;
char tr['K'];

void error();

void get_char() {
	do ch = getch(); while ( ch <= ' ' );
}

void prefix() {
	char c;
	do ch = getchar(); while ( ch <= ' ' );

	switch ( ch ) {
		case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i':
		case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
		case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': 
			printf( "%c", ch );
			break;
		case 'N':
			printf("-" );
			prefix();
			break;
		case 'A': case 'C': case 'E': case 'K':
			c = ch;
			printf("("); 
			prefix(); 
			printf( "%c", tr[ c ] ); 
			prefix(); 
			printf(")");
			break;
		default: 
			error();	
	}
}

void error() {
	printf("Seen %c when A, C, E, K, N or a, b, .., z expected.\n", ch );
}


int main() {
	tr['A'] = 'v'; tr['C'] = '>'; tr['E'] = '='; tr['K'] = '&'; tr['N'] = '-';
	do { prefix(); printf("\n"); } while ( 1 );
}

