#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+CiAKY2hhciBzdGFja1sxMDBdWzEwXTsKaW50IHRvcCA9IC0xOwppbnQgY3Vyc29yID0gMDsKY2hhciBidWZmZXJbMTAwXTsKIAp2b2lkIHB1c2goY29uc3QgY2hhciAqc3ltYm9sKSB7CiAgICBzdHJjcHkoc3RhY2tbKyt0b3BdLCBzeW1ib2wpOwp9CiAKdm9pZCBwb3AoKSB7CiAgICBpZiAodG9wID49IDApIHRvcC0tOwp9CiAKdm9pZCBzaG93X3N0YWNrKCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gdG9wOyBpKyspIHsKICAgICAgICBwcmludGYoIiVzIiwgc3RhY2tbaV0pOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwp9CiAKaW50IHRyeV9yZWR1Y2UoKSB7CiAgICBpZiAodG9wID49IDIgJiYgc3RyY21wKHN0YWNrW3RvcCAtIDJdLCAiKCIpID09IDAgJiYgc3RyY21wKHN0YWNrW3RvcCAtIDFdLCAiRSIpID09IDAgJiYgc3RyY21wKHN0YWNrW3RvcF0sICIpIikgPT0gMCkgewogICAgICAgIHBvcCgpOyBwb3AoKTsgcG9wKCk7CiAgICAgICAgcHVzaCgiRSIpOwogICAgICAgIHJldHVybiAxOwogICAgfQogCiAgICBpZiAodG9wID49IDIgJiYgc3RyY21wKHN0YWNrW3RvcCAtIDJdLCAiRSIpID09IDAgJiYgKHN0cmNtcChzdGFja1t0b3AgLSAxXSwgIisiKSA9PSAwIHx8IHN0cmNtcChzdGFja1t0b3AgLSAxXSwgIioiKSA9PSAwKSAmJiBzdHJjbXAoc3RhY2tbdG9wXSwgIkUiKSA9PSAwKSB7CiAgICAgICAgcG9wKCk7IHBvcCgpOyBwb3AoKTsKICAgICAgICBwdXNoKCJFIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAKICAgIGlmICh0b3AgIT0gLTEgJiYgaXNsb3dlcihzdGFja1t0b3BdWzBdKSAmJiBzdHJsZW4oc3RhY2tbdG9wXSkgPT0gMSkgewogICAgICAgIHBvcCgpOwogICAgICAgIHB1c2goIkUiKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KIAogICAgcmV0dXJuIDA7Cn0KIAppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgYW4gRXhwcmVzc2lvbjogIik7CiAgICBmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBzdGRpbik7CiAgICBidWZmZXJbc3RyY3NwbihidWZmZXIsICJcbiIpXSA9IDA7CiAKICAgIHdoaWxlIChidWZmZXJbY3Vyc29yXSAhPSAnXDAnKSB7CiAgICAgICAgaWYgKGlzc3BhY2UoYnVmZmVyW2N1cnNvcl0pKSB7CiAgICAgICAgICAgIGN1cnNvcisrOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAKICAgICAgICBjaGFyIGN1cnJlbnRbMl0gPSB7YnVmZmVyW2N1cnNvcl0sICdcMCd9OwogICAgICAgIHB1c2goY3VycmVudCk7CiAgICAgICAgY3Vyc29yKys7CiAKICAgICAgICBwcmludGYoIlNoaWZ0OiAiKTsKICAgICAgICBzaG93X3N0YWNrKCk7CiAKICAgICAgICB3aGlsZSAodHJ5X3JlZHVjZSgpKSB7CiAgICAgICAgICAgIHByaW50ZigiUmVkdWNlOiAiKTsKICAgICAgICAgICAgc2hvd19zdGFjaygpOwogICAgICAgIH0KICAgIH0KIAogICAgaWYgKHRvcCA9PSAwICYmIHN0cmNtcChzdGFja1swXSwgIkUiKSA9PSAwKSB7CiAgICAgICAgcHJpbnRmKCJTdHJpbmcgQWNjZXB0ZWRcbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBwcmludGYoIlN0cmluZyBSZWplY3RlZFxuIik7CiAgICB9CiAKICAgIHJldHVybiAwOwp9