#include <stdio.h>
#include <string.h>
#include <ctype.h>
char stack[100][10];
int top = -1;
int pos = 0;
char input[100];
void push(const char *s)
{
}
void pop()
{
top--;
}
void printStack()
{
for (int i = 0; i <= top; i++)
}
int reduce(char lookahead)
{
if (top >= 0 &&
stack[top][0] >= 'a' &&
stack[top][0] <= 'z')
{
pop();
push("F");
return 1;
}
if (top >= 2 &&
strcmp(stack
[top
-2], "(") == 0 && strcmp(stack
[top
-1], "E") == 0 && {
pop(); pop(); pop();
push("F");
return 1;
}
if (top >= 2 &&
strcmp(stack
[top
-2], "T") == 0 && strcmp(stack
[top
-1], "*") == 0 && {
pop(); pop(); pop();
push("T");
return 1;
}
if (top >= 0 &&
{
if (lookahead == '*') return 0;
pop();
push("T");
return 1;
}
if (top >= 2 &&
strcmp(stack
[top
-2], "E") == 0 && strcmp(stack
[top
-1], "+") == 0 && {
if (lookahead == '*') return 0;
pop(); pop(); pop();
push("E");
return 1;
}
if (top >= 0 &&
{
if (lookahead == '+' || lookahead == '*') return 0;
pop();
push("E");
return 1;
}
return 0;
}
int main()
{
printf("Enter an Expression:\n"); fgets(input
, 100, stdin
);
while (input[pos])
{
{
pos++;
continue;
}
char temp[2] = {input[pos], '\0'};
push(temp);
pos++;
printStack();
while (reduce(input[pos]))
{
printStack();
}
}
while (reduce('\0'))
{
printStack();
}
if (top
== 0 && strcmp(stack
[0], "E") == 0) else
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpjaGFyIHN0YWNrWzEwMF1bMTBdOwppbnQgdG9wID0gLTE7CmludCBwb3MgPSAwOwpjaGFyIGlucHV0WzEwMF07Cgp2b2lkIHB1c2goY29uc3QgY2hhciAqcykKewogICAgc3RyY3B5KHN0YWNrWysrdG9wXSwgcyk7Cn0KCnZvaWQgcG9wKCkKewogICAgdG9wLS07Cn0KCnZvaWQgcHJpbnRTdGFjaygpCnsKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHRvcDsgaSsrKQogICAgICAgIHByaW50ZigiJXMiLCBzdGFja1tpXSk7CiAgICBwcmludGYoIlxuIik7Cn0KCmludCByZWR1Y2UoY2hhciBsb29rYWhlYWQpCnsKICAgIGlmICh0b3AgPj0gMCAmJgogICAgICAgIHN0YWNrW3RvcF1bMF0gPj0gJ2EnICYmCiAgICAgICAgc3RhY2tbdG9wXVswXSA8PSAneicpCiAgICB7CiAgICAgICAgcG9wKCk7CiAgICAgICAgcHVzaCgiRiIpOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGlmICh0b3AgPj0gMiAmJgogICAgICAgIHN0cmNtcChzdGFja1t0b3AtMl0sICIoIikgPT0gMCAmJgogICAgICAgIHN0cmNtcChzdGFja1t0b3AtMV0sICJFIikgPT0gMCAmJgogICAgICAgIHN0cmNtcChzdGFja1t0b3BdLCAiKSIpID09IDApCiAgICB7CiAgICAgICAgcG9wKCk7IHBvcCgpOyBwb3AoKTsKICAgICAgICBwdXNoKCJGIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKHRvcCA+PSAyICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcC0yXSwgIlQiKSA9PSAwICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcC0xXSwgIioiKSA9PSAwICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcF0sICJGIikgPT0gMCkKICAgIHsKICAgICAgICBwb3AoKTsgcG9wKCk7IHBvcCgpOwogICAgICAgIHB1c2goIlQiKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAodG9wID49IDAgJiYKICAgICAgICBzdHJjbXAoc3RhY2tbdG9wXSwgIkYiKSA9PSAwKQogICAgewogICAgICAgIGlmIChsb29rYWhlYWQgPT0gJyonKSByZXR1cm4gMDsKICAgICAgICBwb3AoKTsKICAgICAgICBwdXNoKCJUIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKHRvcCA+PSAyICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcC0yXSwgIkUiKSA9PSAwICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcC0xXSwgIisiKSA9PSAwICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcF0sICJUIikgPT0gMCkKICAgIHsKICAgICAgICBpZiAobG9va2FoZWFkID09ICcqJykgcmV0dXJuIDA7CiAgICAgICAgcG9wKCk7IHBvcCgpOyBwb3AoKTsKICAgICAgICBwdXNoKCJFIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKHRvcCA+PSAwICYmCiAgICAgICAgc3RyY21wKHN0YWNrW3RvcF0sICJUIikgPT0gMCkKICAgIHsKICAgICAgICBpZiAobG9va2FoZWFkID09ICcrJyB8fCBsb29rYWhlYWQgPT0gJyonKSByZXR1cm4gMDsKICAgICAgICBwb3AoKTsKICAgICAgICBwdXNoKCJFIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCmludCBtYWluKCkKewogICAgcHJpbnRmKCJFbnRlciBhbiBFeHByZXNzaW9uOlxuIik7CiAgICBmZ2V0cyhpbnB1dCwgMTAwLCBzdGRpbik7CgogICAgd2hpbGUgKGlucHV0W3Bvc10pCiAgICB7CiAgICAgICAgaWYgKGlzc3BhY2UoaW5wdXRbcG9zXSkpCiAgICAgICAgewogICAgICAgICAgICBwb3MrKzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICBjaGFyIHRlbXBbMl0gPSB7aW5wdXRbcG9zXSwgJ1wwJ307CiAgICAgICAgcHVzaCh0ZW1wKTsKICAgICAgICBwb3MrKzsKCiAgICAgICAgcHJpbnRmKCJTaGlmdDogIik7CiAgICAgICAgcHJpbnRTdGFjaygpOwoKICAgICAgICB3aGlsZSAocmVkdWNlKGlucHV0W3Bvc10pKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJSZWR1Y2U6ICIpOwogICAgICAgICAgICBwcmludFN0YWNrKCk7CiAgICAgICAgfQogICAgfQoKICAgIHdoaWxlIChyZWR1Y2UoJ1wwJykpCiAgICB7CiAgICAgICAgcHJpbnRmKCJSZWR1Y2U6ICIpOwogICAgICAgIHByaW50U3RhY2soKTsKICAgIH0KCiAgICBpZiAodG9wID09IDAgJiYgc3RyY21wKHN0YWNrWzBdLCAiRSIpID09IDApCiAgICAgICAgcHJpbnRmKCJTdHJpbmcgQWNjZXB0ZWRcbiIpOwogICAgZWxzZQogICAgICAgIHByaW50ZigiU3RyaW5nIFJlamVjdGVkXG4iKTsKCiAgICByZXR1cm4gMDsKfQ==