#include<stdio.h> #include<string> char str[10]; int index=0; void E(); //E->TX; void X(); //X->+TX | e void T(); //T->FY void Y(); //Y->*FY | e void F(); //F->(E) | i int main() { int len; printf("请输入表达式:"); scanf("%s",str); len=strlen(str); str[len]='#'; str[len+1]=' '; E(); printf("正确语句! "); strcpy(str,""); index=0; return 0; } void E() { T(); X(); } void X() { if(str[index]=='+') { index++; T(); X(); } } void T() { F(); Y(); } void Y() { if(str[index]=='*') { index++; F(); Y(); } } void F() { if(str[index]=='i') { index++; } else if (str[index]=='(') { index++; E(); if(str[index]==')') { index++; }else{ printf(" 分析失败! "); exit (0); } } else{ printf("分析失败! "); exit(0); } }