递归下降分析实验报告 |
您所在的位置:网站首页 › 递归实验心得体会 › 递归下降分析实验报告 |
实验三:语法分析实验
一、 实验目的
编写递归下降分析语法分析程序。
二、 实验内容和要求 输入:输入算术表达式以“#”结束 输出:是否分析成功
三、 实验方法、步骤及结果测试 1. 源程序名:压缩包文件(rar或zip)中源程序名 语法分析.c 可执行程序名:语法分析.exe 2. 原理分析及流程图 主要总体设计问题。 (包括存储结构,主要算法,关键函数的实现等) E→TX X→(+T|-T)X|ε T→FY Y→(*F|/F)Y|ε F→(E)|i
3. 主要程序段及其解释: #include #include char str[10]; int index=0; void E(); //E->TX; void X(); //X->+TX|-TX|ε void T(); //T->FY void Y(); //Y->*FY |/FY|ε void F(); //F->(E) | i int i(); //i int main() { int len; int m; printf("请输入要测试的次数:"); scanf("%d",&m); printf("输入表达式以#结束\n"); while(m--) { printf("\n请输入算数表达式:"); scanf("%s",str); len=strlen(str); str[len]='#'; str[len+1]='\0'; E(); printf("分析成功!\n"); strcpy(str,""); index=0; } return 0; } void E() { T(); X(); } void X() { if(str[index]=='+') { index++; T(); X(); } else if(str[index]=='-') { index++; T(); X(); } } void T() { F(); Y(); } void Y() { if(str[index]=='*') { index++; F(); Y(); } else if(str[index]=='/') { index++; F(); Y(); } } void F() { if(i()) { index++; } else if (str[index]=='(') { index++; E(); if(str[index]==')') { index++; }else{ printf("分析失败!\n"); exit (0); } } else{ printf("分析失败!\n"); exit(0); } } int i() { if(str[index]>='0'&&str[index]='0'&&str[index+1]='a'&&str[index+1]='a'&&str[index] |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |