实验三递归下降分析程序实验
专业 商软2班 姓名 邝启彬 学号 201506110165
一、 实验目的
编制一个递归下降分析程序。
二、 实验内容和要求
输入:正规式
输出:判断该正规式是否正确。
三、 实验方法、步骤及结果测试
- 1. 源程序名:递归下降分析程序.c
可执行程序名:递归下降分析程序.exe
- 2. 原理分析及流程图
- 3. 主要程序段及其解释:
#include<stdio.h> #include<string.h> char Token[30];//存储输入的字符 char sym;//记录下一个字符 char s;//输入字符的传递 static int p=0 ;//下一个字符的下标 void S(); void T(); void U(); void scaner();//下一个字符 void error();//错误结束 //以此文法为基础作此程序 //S->a|^|(T) //T->SU //U->,SU|$ int main() { int i=-1; printf("Please input : "); do { scanf("%c",&s);i++; Token[i]=s; }while(Token[i]!='#'); scaner(); S(); if(sym=='#') printf("Success! "); else printf("fail! "); return 0 ; } void scaner() { sym=Token[p]; p++; } void error() { printf("error!"); } void S() { if(sym=='a'||sym=='^')//如果是a或者是^ scaner(); else if(sym=='(') { scaner(); T(); if(sym==')') scaner(); else error(); } } void T() { S(); U(); } void U() { if(sym==',') { scaner(); S(); U(); } else if(sym!=')') error(); }
- 4. 运行结果及分析
四、 实验总结
通过这个递归下降分析程序,使我懂得了编译器在编译时候的过程。虽然我做出来了这个程序,但是C语言文法的递归下降分析程序有点难度,需要我在以后的时间去慢慢完成。我会在接下来的时间里慢慢去完成C语言文法的递归下降分析程序的。