好文档 - 专业文书写作范文服务资料分享网站

编译原理-预测分析程序的设计与实现-实验报告(1)

天下 分享 时间: 加入收藏 我要投稿 点赞

精品资料

3.1目的和要求

1、掌握LL(1)语法分析的基本原理和方法。 2、掌握相应数据结构的设计方法。

3.2实验环境

Windows 7 + DEVC++6.0

3.3实验准备

首先将下列算术表达式文法 E-->E+T|T

T-->T*F|F F-->(E)|i

改写文法为LL(1)文法;构造LL(1)预测分析表。 解:1)该文法为左递归文法,设非终结符A,B;

E=〉TA

A=〉+TA|ε

T=>FB B=>*FB|ε F=>(E)|i

2)计算FIRST,FELLOW,SELECT集:

可编辑修改

精品资料 E=〉TA A=>+TA A=>ε T=>FB B=>*FB B=>ε F=>(E) F=i

FIRST {( , i) {+} {ε} { (, i } {* } {ε} {( } {i} FELLOW {#, ) } {# , ) } ESLECT {( , i) {+} {# , ) } {+ ,#, ) } {+ ,#, ) } { (, i } {* } {+ ,#, ) } {*, +, #, ), } {( } {i} 因为A,B,F的的两个产生式的选择集都没有交集,所以,该文法为LL(1)文法。、

3)构造预测分析表 E A T B F i TA FB i ( TA FB (E) ) ε ε + +TA ε * *FB # ε ε 4)给出i+i的预测分析过程。

可编辑修改

精品资料 步骤 1 2 3 4 5 6 7 8 9 10 11 12 13

分析栈 #E #AT #ABF #ABi #AB #A #AT+ #AT #ABF #ABi #AB #A #

输入串栈 下一步动作 i+i# TA逆序替换E i+i# FB逆序替换T i+i# i替换F i+i# i匹配成功,出栈 +i# B出栈 +i# +TA逆序替换A +i# +匹配成功,出栈 i# FB逆序替换T i# i替换F i# i匹配成功,出栈 # B出栈 # A出栈 # acc 3.4实验内容及步骤

1、根据预测分析表编写预测分析程序yuce。

2、编译成功后,提示输入符号串,用回车键查看输出的结果。

可编辑修改

精品资料

3、比较自己分析的结果和屏幕上的输出结果。

3.5实验小结

1、得到的经验。 2、遇到的主要问题。 3、改进方案。 自拟LL1文法G[A]: E=>aAE E=>b A=>bA A=>ε

1) 计算FIRST,FOLLOW,SELECT集。

可编辑修改

精品资料 E=>aAE E=>b A=>bAc A=>ε FIRST {a,} {b} {b} {ε} FOLLOW {#} SELECT {a,} {b} {#,c} {b} {#,c} 2) 构造预测分析表。 E A E=>aAE =>abAcE =>abcb

3) 给出abcb的预测分析过程。 步骤 1 2 3 4 5 分析栈 #E #EAa #EA #EcAb #EcA 输入串栈 下一步动作 abcb# aAE逆序替换E abcb# a匹配成功,出栈 bcb# bAc逆序替换A bcb# b匹配成功,出栈 cb# A出栈 a aAE b b bAc c ε ε # ε 可编辑修改

编译原理-预测分析程序的设计与实现-实验报告(1)

精品资料3.1目的和要求1、掌握LL(1)语法分析的基本原理和方法。2、掌握相应数据结构的设计方法。3.2实验环境Windows7+DEVC++6.03.3实验准备首先将下列算术表达式文法E-->E+T|TT-->T*F|FF
推荐度:
点击下载文档文档为doc格式
90l6o9n31q2p7v43zg0p6rgfk15t3500h95
领取福利

微信扫码领取福利

微信扫码分享