#include <stdio.h>
#include <string.h>
#include <ctype.h>
char stack[50], input[50];
int top = -1;
int pos = 0;
void push(char c) {
stack[++top] = c;
}
void pop() {
if (top >= 0) top--;
}
void printStack() {
for (int i = 0; i <= top; i++) {
}
}
void shiftReduce() {
while (input[pos] != '\0') {
pos++;
continue;
}
push(input[pos]);
printStack();
pop();
push('E');
printStack();
}
else if (input[pos] == ')') {
if (top >= 2 && stack[top-2] == '(' && stack[top-1] == 'E') {
pop();
pop();
pop();
push('E');
printStack();
}
}
pos++;
}
while (top >= 2) {
if (stack[top] == 'E' && (stack[top-1] == '+' || stack[top-1] == '*') && stack[top-2] == 'E') {
pop();
pop();
pop();
push('E');
printStack();
} else {
break;
}
}
if (top == 0 && stack[0] == 'E') {
} else {
}
}
int main() {
printf("Enter an Expression: "); fgets(input
, sizeof(input
), stdin
); input
[strcspn(input
, "\n")] = '\0'; shiftReduce();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpjaGFyIHN0YWNrWzUwXSwgaW5wdXRbNTBdOwppbnQgdG9wID0gLTE7CmludCBwb3MgPSAwOwoKdm9pZCBwdXNoKGNoYXIgYykgewogICAgc3RhY2tbKyt0b3BdID0gYzsKfQoKdm9pZCBwb3AoKSB7CiAgICBpZiAodG9wID49IDApIHRvcC0tOwp9Cgp2b2lkIHByaW50U3RhY2soKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSB0b3A7IGkrKykgewogICAgICAgIHByaW50ZigiJWMiLCBzdGFja1tpXSk7CiAgICB9Cn0KCnZvaWQgc2hpZnRSZWR1Y2UoKSB7CiAgICB3aGlsZSAoaW5wdXRbcG9zXSAhPSAnXDAnKSB7CiAgICAgICAgaWYgKGlzc3BhY2UoaW5wdXRbcG9zXSkpIHsKICAgICAgICAgICAgcG9zKys7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgcHVzaChpbnB1dFtwb3NdKTsKICAgICAgICBwcmludGYoIlNoaWZ0OiAiKTsKICAgICAgICBwcmludFN0YWNrKCk7CiAgICAgICAgcHJpbnRmKCJcbiIpOwoKICAgICAgICBpZiAoaXNhbHBoYShpbnB1dFtwb3NdKSkgewogICAgICAgICAgICBwb3AoKTsKICAgICAgICAgICAgcHVzaCgnRScpOwogICAgICAgICAgICBwcmludGYoIlJlZHVjZTogIik7CiAgICAgICAgICAgIHByaW50U3RhY2soKTsKICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpbnB1dFtwb3NdID09ICcpJykgewogICAgICAgICAgICBpZiAodG9wID49IDIgJiYgc3RhY2tbdG9wLTJdID09ICcoJyAmJiBzdGFja1t0b3AtMV0gPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICBwb3AoKTsKICAgICAgICAgICAgICAgIHBvcCgpOwogICAgICAgICAgICAgICAgcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKCdFJyk7CiAgICAgICAgICAgICAgICBwcmludGYoIlJlZHVjZTogIik7CiAgICAgICAgICAgICAgICBwcmludFN0YWNrKCk7CiAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcG9zKys7CiAgICB9CgogICAgd2hpbGUgKHRvcCA+PSAyKSB7CiAgICAgICAgaWYgKHN0YWNrW3RvcF0gPT0gJ0UnICYmIChzdGFja1t0b3AtMV0gPT0gJysnIHx8IHN0YWNrW3RvcC0xXSA9PSAnKicpICYmIHN0YWNrW3RvcC0yXSA9PSAnRScpIHsKICAgICAgICAgICAgcG9wKCk7CiAgICAgICAgICAgIHBvcCgpOwogICAgICAgICAgICBwb3AoKTsKICAgICAgICAgICAgcHVzaCgnRScpOwogICAgICAgICAgICBwcmludGYoIlJlZHVjZTogIik7CiAgICAgICAgICAgIHByaW50U3RhY2soKTsKICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAodG9wID09IDAgJiYgc3RhY2tbMF0gPT0gJ0UnKSB7CiAgICAgICAgcHJpbnRmKCJTdHJpbmcgQWNjZXB0ZWRcbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBwcmludGYoIlN0cmluZyBSZWplY3RlZFxuIik7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgcHJpbnRmKCJFbnRlciBhbiBFeHByZXNzaW9uOiAiKTsKICAgIGZnZXRzKGlucHV0LCBzaXplb2YoaW5wdXQpLCBzdGRpbik7CiAgICBpbnB1dFtzdHJjc3BuKGlucHV0LCAiXG4iKV0gPSAnXDAnOwogICAgc2hpZnRSZWR1Y2UoKTsKICAgIHJldHVybiAwOwp9