#include <stdio.h>
#include <string.h>
#include <ctype.h>
char stack[100];
char input[100];
int top = -1;
void printStack()
{
int i;
for(i = 0; i <= top; i++)
}
void reduce()
{
int changed = 1;
while(changed)
{
changed = 0;
if(top >= 0 &&
stack[top] >= 'a' &&
stack[top] <= 'z')
{
stack[top] = 'E';
printStack();
changed = 1;
}
if(top >= 2 &&
stack[top-2] == '(' &&
stack[top-1] == 'E' &&
stack[top] == ')')
{
top -= 2;
stack[top] = 'E';
printStack();
changed = 1;
continue;
}
if(top >= 2 &&
stack[top-2] == 'E' &&
stack[top-1] == '+' &&
stack[top] == 'E')
{
top -= 2;
stack[top] = 'E';
printStack();
changed = 1;
continue;
}
if(top >= 2 &&
stack[top-2] == 'E' &&
stack[top-1] == '*' &&
stack[top] == 'E')
{
top -= 2;
stack[top] = 'E';
printStack();
changed = 1;
continue;
}
}
}
int main()
{
int ptr = 0;
int i, len;
printf("Enter an Expression: "); fgets(input
, sizeof(input
), stdin
);
int j = 0;
for(i = 0; input[i] != '\0'; i++)
{
if(input[i] != ' ' &&
input[i] != '\t' &&
input[i] != '\n')
{
}
}
while(ptr < len)
{
stack
[++top
] = exp[ptr
++]; printStack();
reduce();
}
reduce();
if(top == 0 && stack[0] == 'E')
else
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpjaGFyIHN0YWNrWzEwMF07CmNoYXIgaW5wdXRbMTAwXTsKaW50IHRvcCA9IC0xOwoKdm9pZCBwcmludFN0YWNrKCkKewogICAgaW50IGk7CiAgICBmb3IoaSA9IDA7IGkgPD0gdG9wOyBpKyspCiAgICAgICAgcHJpbnRmKCIlYyIsIHN0YWNrW2ldKTsKICAgIHByaW50ZigiXG4iKTsKfQoKdm9pZCByZWR1Y2UoKQp7CiAgICBpbnQgY2hhbmdlZCA9IDE7CgogICAgd2hpbGUoY2hhbmdlZCkKICAgIHsKICAgICAgICBjaGFuZ2VkID0gMDsKCiAgICAgICAgaWYodG9wID49IDAgJiYKICAgICAgICAgICBzdGFja1t0b3BdID49ICdhJyAmJgogICAgICAgICAgIHN0YWNrW3RvcF0gPD0gJ3onKQogICAgICAgIHsKICAgICAgICAgICAgc3RhY2tbdG9wXSA9ICdFJzsKICAgICAgICAgICAgcHJpbnRmKCJSZWR1Y2U6ICIpOwogICAgICAgICAgICBwcmludFN0YWNrKCk7CiAgICAgICAgICAgIGNoYW5nZWQgPSAxOwogICAgICAgIH0KCiAgICAgICAgaWYodG9wID49IDIgJiYKICAgICAgICAgICBzdGFja1t0b3AtMl0gPT0gJygnICYmCiAgICAgICAgICAgc3RhY2tbdG9wLTFdID09ICdFJyAmJgogICAgICAgICAgIHN0YWNrW3RvcF0gPT0gJyknKQogICAgICAgIHsKICAgICAgICAgICAgdG9wIC09IDI7CiAgICAgICAgICAgIHN0YWNrW3RvcF0gPSAnRSc7CiAgICAgICAgICAgIHByaW50ZigiUmVkdWNlOiAiKTsKICAgICAgICAgICAgcHJpbnRTdGFjaygpOwogICAgICAgICAgICBjaGFuZ2VkID0gMTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICBpZih0b3AgPj0gMiAmJgogICAgICAgICAgIHN0YWNrW3RvcC0yXSA9PSAnRScgJiYKICAgICAgICAgICBzdGFja1t0b3AtMV0gPT0gJysnICYmCiAgICAgICAgICAgc3RhY2tbdG9wXSA9PSAnRScpCiAgICAgICAgewogICAgICAgICAgICB0b3AgLT0gMjsKICAgICAgICAgICAgc3RhY2tbdG9wXSA9ICdFJzsKICAgICAgICAgICAgcHJpbnRmKCJSZWR1Y2U6ICIpOwogICAgICAgICAgICBwcmludFN0YWNrKCk7CiAgICAgICAgICAgIGNoYW5nZWQgPSAxOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGlmKHRvcCA+PSAyICYmCiAgICAgICAgICAgc3RhY2tbdG9wLTJdID09ICdFJyAmJgogICAgICAgICAgIHN0YWNrW3RvcC0xXSA9PSAnKicgJiYKICAgICAgICAgICBzdGFja1t0b3BdID09ICdFJykKICAgICAgICB7CiAgICAgICAgICAgIHRvcCAtPSAyOwogICAgICAgICAgICBzdGFja1t0b3BdID0gJ0UnOwogICAgICAgICAgICBwcmludGYoIlJlZHVjZTogIik7CiAgICAgICAgICAgIHByaW50U3RhY2soKTsKICAgICAgICAgICAgY2hhbmdlZCA9IDE7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgcHRyID0gMDsKICAgIGludCBpLCBsZW47CgogICAgcHJpbnRmKCJFbnRlciBhbiBFeHByZXNzaW9uOiAiKTsKICAgIGZnZXRzKGlucHV0LCBzaXplb2YoaW5wdXQpLCBzdGRpbik7CgogICAgY2hhciBleHBbMTAwXTsKICAgIGludCBqID0gMDsKCiAgICBmb3IoaSA9IDA7IGlucHV0W2ldICE9ICdcMCc7IGkrKykKICAgIHsKICAgICAgICBpZihpbnB1dFtpXSAhPSAnICcgJiYKICAgICAgICAgICBpbnB1dFtpXSAhPSAnXHQnICYmCiAgICAgICAgICAgaW5wdXRbaV0gIT0gJ1xuJykKICAgICAgICB7CiAgICAgICAgICAgIGV4cFtqKytdID0gaW5wdXRbaV07CiAgICAgICAgfQogICAgfQoKICAgIGV4cFtqXSA9ICdcMCc7CiAgICBsZW4gPSBzdHJsZW4oZXhwKTsKCiAgICB3aGlsZShwdHIgPCBsZW4pCiAgICB7CiAgICAgICAgc3RhY2tbKyt0b3BdID0gZXhwW3B0cisrXTsKICAgICAgICBwcmludGYoIlNoaWZ0OiAiKTsKICAgICAgICBwcmludFN0YWNrKCk7CgogICAgICAgIHJlZHVjZSgpOwogICAgfQoKICAgIHJlZHVjZSgpOwoKICAgIGlmKHRvcCA9PSAwICYmIHN0YWNrWzBdID09ICdFJykKICAgICAgICBwcmludGYoIlN0cmluZyBBY2NlcHRlZFxuIik7CiAgICBlbHNlCiAgICAgICAgcHJpbnRmKCJTdHJpbmcgUmVqZWN0ZWRcbiIpOwoKICAgIHJldHVybiAwOwp9