递归下降分析实验报告

您所在的位置:网站首页 递归实验心得体会 递归下降分析实验报告

递归下降分析实验报告

2024-07-10 17:51| 来源: 网络整理| 查看: 265

                                                                      实验三:语法分析实验

 

 

一、        实验目的

 

编写递归下降分析语法分析程序。

 

二、        实验内容和要求

输入:输入算术表达式以“#”结束

输出:是否分析成功

 

三、        实验方法、步骤及结果测试

 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