网站大量收购独家精品文档,联系QQ:2885784924

自顶向下的语法分析(实验报告一).doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

武汉轻工大学

编译原理实验报告

姓名朱春桃

院〔系〕数学与计算机学院

班级软件工程1203

学号1205110605

指导教师李禹生

2014年11月10日

一、实验目的

完成自顶向下语法分析算法的程序设计。

二、实验内容

设计、调试并测试自顶向下语法分析算法程序。

三、设计思路

根据课堂讲授的自顶向下语法分析方法,可以根据递归下降子程序方法设计语法分析程序,也可以根据LL〔1〕算法设计语法分析程序,针对文法:

G[E]

E→E+T|T

T→T*F|F

F→(E)|i

〔1〕由于文法G[E]不满足LL〔1〕文法条件,需要进行必要的等价文法变换。变换后的等价文法为:

H[E]

E→TA

A→+TA|ε

T→FB

B→*FB|ε

F→(E)|i

〔2〕等价文法H[E]不含左递归,可以证明文法H[E]满足LL〔1〕文法条件

〔3〕根据递归下降子程序方法设计语法分析程序

①递归程序清单

②调试过程说明

③测试语句设计

④测试结果列表

⑤测试结论分析

〔4〕根据LL〔1〕算法设计语法分析程序

①预测分析表

②预测分析程序清单

③调试过程说明

④测试语句设计

⑤测试结果列表

⑥测试结论分析

程序清单

/*

E-TA,

A-+TA|ε,

T-FB,

B-*FB|ε,

F-i|(E).

*/

#includestdio.h

voidE(charstr[80],inti,interror);

voidA(charstr[80],inti,interror);

voidT(charstr[80],inti,interror);

voidB(charstr[80],inti,interror);

voidF(charstr[80],inti,interror);

voidmain()

{

inti=0,j=0,error=0;

charstr[80];

printf(请输入字符串〔#为结束字符〕:);

while((str[j]=getchar())!=#)

j++;

str[j]=#;

E(str,i,error);

if(error)

printf(error\n);

else

printf(right\n);

}

voidE(charstr[80],inti,interror)

{

printf(E-TA\n);

T(str,i,error);

A(str,i,error);

}

voidA(charstr[80],inti,interror)

{

if(str[i]==+)

{

printf(A-+TA|ε\n);

i++;

T(str,i,error);

A(str,i,error);

}

elseif(str[i]==#||str[i]==)){}

else

error++;

}

voidT(charstr[80],inti,interror)

{

printf(T-FB\n);

F(str,i,error);

B(str,i,error);

}

voidB(charstr[80],inti,interror)

{

if(str[i]==*)

{

printf(B-*FB|ε\n);

i++;

F(str,i,error);

B(str,i,error);

}

}

voidF(charstr[80],inti,interror)

{

if(str[i]==()

{

printf(F-i|(E)\n);

i++;

E(str,i,error);

if(str[i]==))

{

i++;

}

else

error++;

}

else

{

if(str[i]==i)

{

printf(F-i|(E)\n);

i++;

}

else

error++;

}

}

测试结果

实验总结

实验在老师提前给出的算法指导下,完成自顶向下语法分析的程序实际上是不困难的。但是老师的目的应该不在程序,而是让我们通过此次实验对课堂的理论知识有个深层次的理解。所以通过本次实验,我对自顶向下的语法分析过程有了更深的了解,结合课堂知识打下了学习其他语法分析方法的根底。

文档评论(0)

寒傲似冰 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8071104010000026

1亿VIP精品文档

相关文档