首页 > 代码库 > 实验三、语法分析程序实验
实验三、语法分析程序实验
实验三、语法分析程序实验
专业:商业软件 姓名:邹汉辉 学号:201508030045
一、 实验目的
1.通过设计,编制,调试一个递归下降语法分析程序
2.实现对词法分析程序所提供的单词序列进行语法检查和结构的分析。
二、 实验内容和要求
输入:正规式
输出:判断该正规式是否正确。
三、 实验方法、步骤及结果测试
-
源程序名:递归下降分析程序.c
可执行程序名:递归下降分析程序.exe
- 原理分析及流程图
- 主要程序段及其解释:
1 #include<stdio.h> 2 #include<string> 3 char str[50]; 4 int index=0; 5 void E(); //E->TX; 6 void X(); //X->+TX | e 7 void T(); //T->FY 8 void Y(); //Y->*FY | e 9 void F(); //F->(E) | i 10 11 int main() /*递归分析*/ 12 { 13 int len; 14 int m; 15 printf("请输入要测试的次数:"); 16 scanf("%d",&m); 17 while(m--) 18 { 19 printf("请输入字符串(长度<50>):\n"); 20 scanf("%s",str); 21 len=strlen(str); 22 //str[len]=‘#‘; 23 str[len+1]=‘\0‘; 24 E(); 25 printf("%s为合法符号串!\n",str); 26 strcpy(str,""); 27 index=0; 28 } return 0; 29 } 30 31 void E() 32 { T(); X();} 33 void X() 34 { 35 if(str[index]==‘+‘) 36 { index++; 37 T(); 38 X(); 39 } } 40 void T() 41 { F(); Y(); } 42 void Y() 43 { if(str[index]==‘*‘) { 44 index++; 45 F(); 46 Y(); 47 } } 48 void F() 49 { 50 if(str[index]==‘i‘) 51 { index++; } 52 else if (str[index]==‘(‘) 53 { 54 index++; 55 E(); 56 if(str[index]==‘)‘) 57 { index++; }else 58 { 59 printf("\n非法的符号串!\n"); 60 exit (0); 61 } } 62 else 63 { 64 printf("非法的符号串!\n"); 65 exit(0); 66 } 67 }
4.运行结果及分析
四、 实验总结
通过这次的实验,对于递归又有了新的认识。
实验三、语法分析程序实验
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。