#include<Stdio.h> #include<Stdlib.h> #include<ctype.h> char token; void error(void) { printf("stderr:FALSE\n"); exit(1); } void match(char expectedToken) { if(token==expectedToken) token=getchar(); else error(); } int exp(void) {
int temp=term(); while ((token=='+')||(token=='-')) switch(token){ case'+': match('+'); temp +=term(); break; case '-': match('-'); temp -=term(); break; } return temp; } int term() { int div; int temp=factor(); while ((token=='*')||(token=='/')) switch(token) { case'*': match('*'); temp*=factor(); break; case'/':match('/'); div=factor(); if(div==0) { printf(stderr,"shuchuwei 0.\n"); exit(1); } temp /=div; break; } return temp; } int factor(vodi) { int temp; if (token=='(') { match('('); temp=exp(); match(')'); } else if (isdigit(token)) { ungetc (token,stdin); scanf("%d",&temp); token=getchar(); } else error(); return temp; } main() { int result; printf("play a bey: "); token= getchar(); result=exp(); if(token=='\n') printf("jueku%d\n",result); else error(); puts("play any key for ending ..."); getch(); return 0; }