第3章 自顶向下语法分析 复习思考题

1. 选择题
1 )语言是 ____A____
A .句子的集合
B. 产生式的集合
C. 符号串的集合
D. 句型的集合
(2)编译程序前三个阶段完成的工作是 ____C____
A .词法分析、语法分析和代码优化
B .代码生成、代码优化和词法分析
C .词法分析、语法分析、语义分析和中间代码生成
D .词法分析、语法分析和代码优化
(3)采用自顶向下分析,必须 ____C____
A .消除左递归
B .消除右递归
C .消除回溯
D .提取公共左因子
2. 简答题
1 )(a)消除下列文法的左递归;
E E + T | T
T T * F | F
F id | ( E )
(b)为(a)的文法构造预测分析器表。
答:消除左递归后为:
E TE'
E' + TE' | ε T FT'
T' * FT' | ε
F ( E ) | id

构造预测分析表

(1)对文法的每个产生式A →α,执行(2)和(3)
(2)对FIRST(α)的每个终结符a,把A一>α加入M[A, a]
(3)如果ε∈FIRST(a)中,对FOLLOW(A)的每个终结符b(包括$) ,把A →α加入M[A, b] (4)M中其它没有定义的条目都是error

 根据图 1 算法首先构造下表结构:

E TE'
First(E) = {(, id }
由于ε不属于 First(E) ,则:
E' + TE' | ε
First(E') = {+, ε }
由于ε∈ First(E') Follow(E') = {), $ } 。则:

 

T FT'
First(T) = {(, id }
由于ε不属于 First(T) ,则:

 

T' * FT' | ε
First(T') = {*, ε }
由于ε∈ First(T') Follow(T') = {+, ), $ } 。则:
F ( E ) | id
First(F) = {(, id }
由于ε不属于 First(F) ,则:

 因此,最终得到的预测分析表为:

 (3)构造下面文法的 LL1)分析表。

 DTL

Tintreal

L id R
R , id R | ε
答:根据图 1 算法首先构造下表结构:

 

 DTL

First(D) = {int, real}
由于ε不属于 First(D) ,则:
T int real
First(T) = {int, real}
由于ε不属于 First(T) ,则:

 

L id R
First(L) = {id}
由于ε不属于 First(L) ,则:
R , id R | ε
First(R) = {',', ε }
由于ε∈ First(R) ,求 Follow(R) 先锁定
L id R
R , id R
则需先求出 Follow(L) ,求 Follow(L) 先锁定
D TL
则需先求出 Follow(D) ,求 Follow(D) ,由于产生式集合中没有右边出
D 符号,且 D 为产生式集合的开始符号,所以 Follow(D)={$} 。 则:

  因此,最终得到的预测分析表为:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangkay88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值