编译原理 实验3 递归下降语法分析程序设计
来源:互联网 发布:n个球放入m个盒子C语言 编辑:程序博客网 时间:2024/05/19 02:23
实验目的】
练习构造递归下降语法分析程序的方法,熟悉上下文无关文法的使用,加深对课堂教学的理解;提高语法分析方法的实践能力
【实验要求】
利用某一高级程序设计语言构造语法分析程序
【具体要求】对于给定的文法G[E]
E->TE’
E’->+TE’ | ε
T->FT’
T’->*F T’| ε
F->(E) | i
采用递归下降语法分析法编写语法分析程序,该语法分析程序判断输入的字符串是否符合上述文法,并能够输出相应的结果(是语法成分或不是语法成分)。
#include<stdio.h>/* 实验名称:实验3 递归下降语法分析程序设计 学号: 姓名:niu91(859222829) 班级: */#include<string>char str[10];int index=0;void E();//E->TX;void X();//X->+TX | evoid T();//T->FYvoid Y();//Y->*FY | evoid F();//F->(E) | iint main(){int len;int m;printf("请输入要测试的次数:");scanf("%d",&m);while(m--){printf("请输入算数表达式:");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();} }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("\n分析失败!\n");exit (0);}} else{printf("分析失败!\n"); exit(0);} }
- 编译原理 实验3 递归下降语法分析程序设计
- 递归下降语法分析程序设计
- 递归下降语法分析实验
- 递归下降语法分析实验
- 编译原理实验三——语法分析(递归下降法)
- 编译原理 实验3 语法分析
- 编译原理--递归下降语法分析源代码(C Language)
- 编译原理实验3——递归下降分析
- 语法分析:算术表达式递归下降分析程序设计
- 语法分析:算术表达式递归下降分析程序设计
- 【编译原理】自顶向下的语法分析之递归下降分析法
- 编译原理实验2-递归下降分析法
- 编译原理实验2-递归下降分析–表达式求值
- 递归下降语法分析
- 递归下降的语法分析
- 递归下降的语法分析
- 编译原理,自上而下非递归语法分析自上而下的语法分析
- 编译原理语法分析实验(Java实现)
- Code::Blocks 中文乱码问题原因分析和解决方法
- Strtus2的ValueStack、ActionContext及Stack Context
- XML简介
- linux中的_init应用,含有__attribute__ 和section的意义和作用
- Column count doesn't match value count at row 1
- 编译原理 实验3 递归下降语法分析程序设计
- 使用Spring TestContext 测试框架,完美测试基于Spring的应用程序
- Linux网络编程必看书籍推荐
- 14.android向web提交参数的4种方式案例
- SQL存储过程分页若干方法
- AS3精辟代码若干--random
- 黑马程序员——java学习7(小日历制作)
- csdn apache+php+mysql在windows下的安装和配置
- 数据保存时,出现‘record not found or changed by another user’错误信息的解决办法