编译原理 实验3 递归下降语法分析程序设计
2013-06-23 16:05
1001 查看
实验目的】
练习构造递归下降语法分析程序的方法,熟悉上下文无关文法的使用,加深对课堂教学的理解;提高语法分析方法的实践能力
【实验要求】
利用某一高级程序设计语言构造语法分析程序
【具体要求】对于给定的文法G[E]
E->TE’
E’->+TE’ | ε
T->FT’
T’->*F T’| ε
F->(E) | i
采用递归下降语法分析法编写语法分析程序,该语法分析程序判断输入的字符串是否符合上述文法,并能够输出相应的结果(是语法成分或不是语法成分)。
练习构造递归下降语法分析程序的方法,熟悉上下文无关文法的使用,加深对课堂教学的理解;提高语法分析方法的实践能力
【实验要求】
利用某一高级程序设计语言构造语法分析程序
【具体要求】对于给定的文法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 | 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("请输入算数表达式:"); 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); } }
相关文章推荐
- 12.16_实验四 递归下降语法分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- 实验四递归下降语法分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- 1231 实验四 递归下降语法分析程序设计
- 实验四递归下降语法分析程序设计
- 1217实验四 递归下降语法分析程序设计
- 1231实验四 递归下降语法分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- 12-16 实验四 递归下降语法分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- 1217 实验四 递归下降语法分析程序设计
- 1231 实验四 递归下降语法分析程序设计
- 实验四 递归下降语法分析程序设计
- 实验四 递归下降语法分析程序设计
- 1225-实验四-递归下降语法分析程序设计
- 1231 实验四 递归下降语法分析程序设计
- 编译原理:递归向下分析程序建立语法分析树的Java实现(一)
- 递归下降语法分析程序设计