#include <stdio.h>
#include <string.h>
#include <ctype.h>
char stack[100][10];
int top = -1;
int index = 0;
char input[100];
void push(const char *s) {
}
void pop() {
top--;
}
void printStack() {
for (int i
= 0; i
<= top
; i
++) printf("%s", stack
[i
]); }
int reduce() {
// E → E + E
if (top >= 2 &&
strcmp(stack
[top
- 2], "E") == 0 && strcmp(stack
[top
- 1], "+") == 0 && strcmp(stack
[top
], "E") == 0) { pop(); pop(); pop();
push("E");
return 1;
}
// E → E * E
if (top >= 2 &&
strcmp(stack
[top
- 2], "E") == 0 && strcmp(stack
[top
- 1], "*") == 0 && strcmp(stack
[top
], "E") == 0) { pop(); pop(); pop();
push("E");
return 1;
}
// E → ( E )
if (top >= 2 &&
strcmp(stack
[top
- 2], "(") == 0 && strcmp(stack
[top
- 1], "E") == 0 && strcmp(stack
[top
], ")") == 0) { pop(); pop(); pop();
push("E");
return 1;
}
// E → id
if (top!=-1 && stack[top][0]>='a'&&stack[top][0]<='z') {
pop();
push("E");
return 1;
}
return 0;
}
int main() {
scanf("%[^\n]%*c", input
); // Read the entire line including spaces
while (input[index]) {
index++;
continue;
}
// SHIFT
char temp[2] = {input[index], '\0'};
push(temp);
index++;
printStack();
// REDUCE
while (reduce()) {
printStack();
}
}
if (top
== 0 && strcmp(stack
[0], "E") == 0) else
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpjaGFyIHN0YWNrWzEwMF1bMTBdOwppbnQgdG9wID0gLTE7CmludCBpbmRleCA9IDA7CmNoYXIgaW5wdXRbMTAwXTsKCnZvaWQgcHVzaChjb25zdCBjaGFyICpzKSB7CiAgICBzdHJjcHkoc3RhY2tbKyt0b3BdLCBzKTsKfQoKdm9pZCBwb3AoKSB7CiAgICB0b3AtLTsKfQoKdm9pZCBwcmludFN0YWNrKCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gdG9wOyBpKyspIHByaW50ZigiJXMiLCBzdGFja1tpXSk7CiAgICBwcmludGYoIlxuIik7Cn0KCmludCByZWR1Y2UoKSB7CiAgICAvLyBFIOKGkiBFICsgRQogICAgaWYgKHRvcCA+PSAyICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcCAtIDJdLCAiRSIpID09IDAgJiYKICAgICAgICBzdHJjbXAoc3RhY2tbdG9wIC0gMV0sICIrIikgPT0gMCAmJgogICAgICAgIHN0cmNtcChzdGFja1t0b3BdLCAiRSIpID09IDApIHsKICAgICAgICBwb3AoKTsgcG9wKCk7IHBvcCgpOwogICAgICAgIHB1c2goIkUiKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBFIOKGkiBFICogRQogICAgaWYgKHRvcCA+PSAyICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcCAtIDJdLCAiRSIpID09IDAgJiYKICAgICAgICBzdHJjbXAoc3RhY2tbdG9wIC0gMV0sICIqIikgPT0gMCAmJgogICAgICAgIHN0cmNtcChzdGFja1t0b3BdLCAiRSIpID09IDApIHsKICAgICAgICBwb3AoKTsgcG9wKCk7IHBvcCgpOwogICAgICAgIHB1c2goIkUiKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBFIOKGkiAoIEUgKQogICAgaWYgKHRvcCA+PSAyICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcCAtIDJdLCAiKCIpID09IDAgJiYKICAgICAgICBzdHJjbXAoc3RhY2tbdG9wIC0gMV0sICJFIikgPT0gMCAmJgogICAgICAgIHN0cmNtcChzdGFja1t0b3BdLCAiKSIpID09IDApIHsKICAgICAgICBwb3AoKTsgcG9wKCk7IHBvcCgpOwogICAgICAgIHB1c2goIkUiKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBFIOKGkiBpZCAKICAgIGlmICh0b3AhPS0xICYmIHN0YWNrW3RvcF1bMF0+PSdhJyYmc3RhY2tbdG9wXVswXTw9J3onKSB7CiAgICAgICAgcG9wKCk7CiAgICAgICAgcHVzaCgiRSIpOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAwOwp9CgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgZXhwcmVzc2lvbjogIik7CiAgICBzY2FuZigiJVteXG5dJSpjIiwgaW5wdXQpOyAgLy8gUmVhZCB0aGUgZW50aXJlIGxpbmUgaW5jbHVkaW5nIHNwYWNlcwoKICAgIHdoaWxlIChpbnB1dFtpbmRleF0pIHsKICAgICAgICBpZiAoaXNzcGFjZShpbnB1dFtpbmRleF0pKSB7CiAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gU0hJRlQKICAgICAgICBjaGFyIHRlbXBbMl0gPSB7aW5wdXRbaW5kZXhdLCAnXDAnfTsKICAgICAgICBwdXNoKHRlbXApOwogICAgICAgIGluZGV4Kys7CgogICAgICAgIHByaW50ZigiU2hpZnQ6ICIpOwogICAgICAgIHByaW50U3RhY2soKTsKCiAgICAgICAgLy8gUkVEVUNFCiAgICAgICAgd2hpbGUgKHJlZHVjZSgpKSB7CiAgICAgICAgICAgIHByaW50ZigiUmVkdWNlOiAiKTsKICAgICAgICAgICAgcHJpbnRTdGFjaygpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAodG9wID09IDAgJiYgc3RyY21wKHN0YWNrWzBdLCAiRSIpID09IDApCiAgICAgICAgcHJpbnRmKCJTdHJpbmcgQWNjZXB0ZWRcbiIpOwogICAgZWxzZQogICAgICAgIHByaW50ZigiU3RyaW5nIFJlamVjdGVkXG4iKTsKCiAgICByZXR1cm4gMDsKfQo=