实验 递归下降分析程序实验
Posted 夕颜凝熙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验 递归下降分析程序实验相关的知识,希望对你有一定的参考价值。
一、 实验目的
练习构造递归下降语法分析程序的方法,熟悉上下文无关文法的使用,加深对课堂教学的理解;提高语法分析方法的实践能力
二、 实验内容和要求
对于给定的文法G[E]
E->TE’
E’->+TE’ | ε
T->FT’
T’->*F T’| ε
F->(E) | i
采用递归下降语法分析法编写语法分析程序,该语法分析程序判断输入的字符串是否符合上述文法,并能够输出相应的结果(是语法成分或不是语法成分)。
三、 实验方法、步骤及结果测试
1. 源程序名:递归下降语法分析程序设计.c
2. 原理分析及流程图
用字符串数组存储输入的字符串,再由相应的文法函数判定是否符合文法
#include<stdio.h> #include<string.h> 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); } }
运行效果:
以上是关于实验 递归下降分析程序实验的主要内容,如果未能解决你的问题,请参考以下文章