欢迎来到天天文库
浏览记录
ID:60838478
大小:78.00 KB
页数:7页
时间:2020-12-21
《编译原理语法分析实验报告(含有源代码).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《编译原理》实验报告2008年11月20日姓名孙丽君班级06行知计算机网络技术学号课程名称编译原理实验项目名称语法分析指导教师郑豪一、实验目的:编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。利用C语言编制递归下降分析程序,并对简单语言进行语法分析。二、实验原理(可以流程图的形式出现,加以文字说明)1.待分析的简单语言的语法2.用扩充的BNF表示如下:(1)<程序>::=begin<语句串>end(2)<语句串>::=<语句>{;<语句>}(3)<语句>::=<赋值语句>(4)<赋值语句>::=ID:=<表达式>(5)<表达式>::=<项>{
2、+<项>
3、—项>}(6)<项>::=<因子>{*<因子>
4、/<因子>}(7)<因子>::=ID
5、NUM
6、(<表达式>)3.实验要求说明输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。例如:图c.3语法分析主程序示意图输入begina:=9;x:=2*3;b:=a+xend#输出success输入x:=a+b*cend#输出error4.语法分析程序的算法思想(1)主程序示意图如图C.3所示。(2)递归下降分析程序示意图如图C.4所示。(3)语句串分析过程示意图如图C.5所示。(4)statement语句分析函数流
7、程如图C.6.C.7.C.8C.9所示。图c.4递归下降分析程序示意图图c.5语句串分析示意图是否是调用scaner是否:=?调用scaner是否标识?出错处理调用expression函数图c.6statement语句分析函数示意图否出错处理调用term函数调用scaner是否+,-?调用term函数是图c.7expression表达式分析函数示意图否是调用factor函数调用scaner是否*,/?调用factor函数出错处理图c.8term分析函数示意图图c.9factor分析过程示意图三、实验步骤(介绍关键的步骤,至少10步,并简要说明其工作原理)1.语法分析的主程序v
8、oidmain(){p=0;printf("********************语法分析程序***************");printf("请输入源程序:");do{scanf("%c",&ch);prog[p++]=ch;}while(ch!='#');p=0;scaner();lrparser();printf("语法分析结束!");}1.编写扫描子程序voidlrparser(){if(syn==1)//begin{scaner();yucu();if(syn==6)//end{scaner();if(syn==0&&kk==0)printf("su
9、ccess");}else{if(kk!=1)printf("error,lose'end'!");kk=1;}}else{printf("error,lose'begin'!");kk=1;}return;}voidyucu(){statement();while(syn==26)//;{scaner();statement();}return;}voidstatement(){if(syn==10){scaner();if(syn==18){scaner();expression();}else{printf("error!");kk=1;}}else{pri
10、ntf("error!");kk=1;}return;}voidexpression(){term();while(syn==13
11、
12、syn==14){scaner();term();}return;}voidterm(){factor();while(syn==15
13、
14、syn==16){scaner();factor();}return;}voidfactor(){if(syn==10
15、
16、syn==11)scaner();//为标识符或整常数时,读下一个单词符号elseif(syn==27){scaner();expression();if(syn==28)scaner()
17、;else{printf("')'错误");kk=1;}}else{printf("表达式错误");kk=1;}return;}3.调试程序,验证实验结果。四、实验过程原始记录(数据、图表、计算等)输入begina:=9;x:=2*3;b:=a+xend#输出success输入x:=a+b*cend#输出error五、实验结果及分析,以及心得体会通过学习了语法分析,再经过实验,让我对语法分析有了深刻的认识和了解。递归下降分析法,是一种确定的自顶向下分析技术,它的实现思想是,对文法中分别代表一种语
此文档下载收益归作者所有