#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