实验三 递归下降分析法
实验三递归下降分析程序实验
专业 商软2班 姓名 李文辉 学号 201506110168
一、 实验目的
编制一个使用递归下降分析法实现的语法分析程序。
二、 实验内容和要求
输入:正规式
输出:判断该正规式是否正确。
三、 实验方法、步骤及结果测试
- 1. 源程序名:168-李文辉.c
可执行程序名:168李文辉.exe
- 2. 原理分析及流程图
- 3. 主要程序段:
1 #include<stdio.h> 2 #include<string.h> 3 char Token[30];//存储输入的字符 4 char sym;//记录下一个字符 5 char s;//输入字符的传递 6 static int p=0 ;//下一个字符的下标 7 void S(); 8 void T(); 9 void U(); 10 void scaner();//下一个字符 11 void error();//错误结束 12 main() 13 { 14 int i=-1; 15 printf("Please input :\n"); 16 do 17 { 18 scanf("%c",&s);i++; 19 20 Token[i]=s; 21 }while(Token[i]!=‘#‘); 22 scaner(); 23 S(); 24 if(sym==‘#‘) 25 printf("Success!\n"); 26 else 27 printf("fail!\n"); 28 } 29 30 void scaner() 31 { 32 sym=Token[p]; 33 p++; 34 } 35 void error() 36 { 37 printf("error!"); 38 } 39 void S() 40 { 41 if(sym==‘a‘||sym==‘^‘)//如果是a或者是^ 42 scaner(); 43 else if(sym==‘(‘) 44 { 45 scaner(); 46 T(); 47 if(sym==‘)‘) 48 scaner(); 49 else 50 error(); 51 } 52 } 53 void T() 54 { 55 S(); 56 U(); 57 } 58 59 void U() 60 { 61 if(sym==‘,‘) 62 { 63 scaner(); 64 S(); 65 U(); 66 } 67 else if(sym!=‘)‘) 68 error(); 69 }
- 4. 运行结果及分析
四、 实验总结
通过这个递归下降分析程序,使我懂得了编译器在编译时候的过程。虽然我做出来了这个程序,但是C语言文法的递归下降分析程序有点难度,需要我在以后的时间去慢慢完成。我会在接下来的时间里慢慢去完成C语言文法的递归下降分析程序的。
时间: 2024-10-18 11:02:00