一、 实验目的
编制一个递归下降分析程序。
二、 实验内容和要求
输入:正规式
输出:判断该正规式是否正确。
三、 实验方法、步骤及结果测试
1. 源程序名:递归下降分析程序.c
可执行程序名:递归下降分析程序.exe
2.
3.主要程序段及其解释:
#include<stdio.h> #include<string> char str[50]; 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; int m; printf("请输入要测试的次数:"); scanf("%d",&m); while(m--) { printf("请输入字符串(长度<50>): "); scanf("%s",str); len=strlen(str); //str[len]='#'; str[len+1]=' '; E(); printf("%s为合法符号串! ",str); 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); } }
4. 运行结果及分析
四、 实验总结
通过这次的实验,对于递归又有了新的认识,对于工作原理也进一步的掌握了。本次实验对我帮助很大。