#include <stdio.h>
#include <string.h>
#include <ctype.h>
char stack[100][10];
int top = -1;
int cursor = 0;
char buffer[100];
void push(const char *symbol) {
}
void pop() {
if (top >= 0) top--;
}
void show_stack() {
for (int i = 0; i <= top; i++) {
}
}
int try_reduce() {
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;
}
if (top
>= 2 && strcmp(stack
[top
- 2], "E") == 0 && (strcmp(stack
[top
- 1], "+") == 0 || strcmp(stack
[top
- 1], "*") == 0) && strcmp(stack
[top
], "E") == 0) { pop(); pop(); pop();
push("E");
return 1;
}
if (top
!= -1 && islower(stack
[top
][0]) && strlen(stack
[top
]) == 1) { pop();
push("E");
return 1;
}
return 0;
}
int main() {
printf("Enter an Expression: "); fgets(buffer
, sizeof(buffer
), stdin
);
while (buffer[cursor] != '\0') {
cursor++;
continue;
}
char current[2] = {buffer[cursor], '\0'};
push(current);
cursor++;
show_stack();
while (try_reduce()) {
show_stack();
}
}
if (top
== 0 && strcmp(stack
[0], "E") == 0) { } else {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpjaGFyIHN0YWNrWzEwMF1bMTBdOwppbnQgdG9wID0gLTE7CmludCBjdXJzb3IgPSAwOwpjaGFyIGJ1ZmZlclsxMDBdOwoKdm9pZCBwdXNoKGNvbnN0IGNoYXIgKnN5bWJvbCkgewogICAgc3RyY3B5KHN0YWNrWysrdG9wXSwgc3ltYm9sKTsKfQoKdm9pZCBwb3AoKSB7CiAgICBpZiAodG9wID49IDApIHRvcC0tOwp9Cgp2b2lkIHNob3dfc3RhY2soKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSB0b3A7IGkrKykgewogICAgICAgIHByaW50ZigiJXMiLCBzdGFja1tpXSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7Cn0KCmludCB0cnlfcmVkdWNlKCkgewogICAgaWYgKHRvcCA+PSAyICYmIHN0cmNtcChzdGFja1t0b3AgLSAyXSwgIigiKSA9PSAwICYmIHN0cmNtcChzdGFja1t0b3AgLSAxXSwgIkUiKSA9PSAwICYmIHN0cmNtcChzdGFja1t0b3BdLCAiKSIpID09IDApIHsKICAgICAgICBwb3AoKTsgcG9wKCk7IHBvcCgpOwogICAgICAgIHB1c2goIkUiKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAodG9wID49IDIgJiYgc3RyY21wKHN0YWNrW3RvcCAtIDJdLCAiRSIpID09IDAgJiYgKHN0cmNtcChzdGFja1t0b3AgLSAxXSwgIisiKSA9PSAwIHx8IHN0cmNtcChzdGFja1t0b3AgLSAxXSwgIioiKSA9PSAwKSAmJiBzdHJjbXAoc3RhY2tbdG9wXSwgIkUiKSA9PSAwKSB7CiAgICAgICAgcG9wKCk7IHBvcCgpOyBwb3AoKTsKICAgICAgICBwdXNoKCJFIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKHRvcCAhPSAtMSAmJiBpc2xvd2VyKHN0YWNrW3RvcF1bMF0pICYmIHN0cmxlbihzdGFja1t0b3BdKSA9PSAxKSB7CiAgICAgICAgcG9wKCk7CiAgICAgICAgcHVzaCgiRSIpOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAwOwp9CgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgYW4gRXhwcmVzc2lvbjogIik7CiAgICBmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBzdGRpbik7CiAgICBidWZmZXJbc3RyY3NwbihidWZmZXIsICJcbiIpXSA9IDA7CgogICAgd2hpbGUgKGJ1ZmZlcltjdXJzb3JdICE9ICdcMCcpIHsKICAgICAgICBpZiAoaXNzcGFjZShidWZmZXJbY3Vyc29yXSkpIHsKICAgICAgICAgICAgY3Vyc29yKys7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgY2hhciBjdXJyZW50WzJdID0ge2J1ZmZlcltjdXJzb3JdLCAnXDAnfTsKICAgICAgICBwdXNoKGN1cnJlbnQpOwogICAgICAgIGN1cnNvcisrOwoKICAgICAgICBwcmludGYoIlNoaWZ0OiAiKTsKICAgICAgICBzaG93X3N0YWNrKCk7CgogICAgICAgIHdoaWxlICh0cnlfcmVkdWNlKCkpIHsKICAgICAgICAgICAgcHJpbnRmKCJSZWR1Y2U6ICIpOwogICAgICAgICAgICBzaG93X3N0YWNrKCk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICh0b3AgPT0gMCAmJiBzdHJjbXAoc3RhY2tbMF0sICJFIikgPT0gMCkgewogICAgICAgIHByaW50ZigiU3RyaW5nIEFjY2VwdGVkXG4iKTsKICAgIH0gZWxzZSB7CiAgICAgICAgcHJpbnRmKCJTdHJpbmcgUmVqZWN0ZWRcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9