编译设计课留的题,专业采用全英教学,因此题是英文的,但是正常人都可以看懂,求个专家来帮忙
1条回答 默认 最新
- 社区专家-Monster-XH 2023-04-06 21:09关注
基于Monster 组和GPT的调写:
- A) 一个a可以直接推导成S,然后(S)可以推导成S-(L),L可以推导成a,(a,a)可以推导成L,所以可以得到以下左推导过程:
G => S => (L) => (L,S) => (L,a,S) => (a,a,S) => (a,(L),S) => (a,(L,S)) => (a,(a,S)) => (a,(a,(L))) => (a,(a,a))
- B) 一个a可以直接推导成S,然后(S)可以推导成S-(L),L可以推导成a,(a,a)可以推导成L,所以可以得到以下右推导过程:
G => S => (L) => (a,L) => (a,L,S) => (a,(L),S) => (a,(L,S)) => (a,(a,S)) => (a,(a,(L))) => (a,(a,a))
C) 由于某个非终结符的一个产生式的FIRST集合与另一个产生式的FIRST集合有交集,所以这个文法不是LL(1)的。具体来说,L的两个产生式的FIRST集合都包含a,而S的产生式的FIRST集合包含s,这就导致了S的产生式和L的产生式存在冲突,无法进行预测性分析。
D) 对文法进行改写如下:
G -> S
S -> aS' | sS'
S' -> ,SaS' | ε首先计算FIRST集合和FOLLOW集合:
FIRST(S) = {a, s}
FIRST(S') = {,, ε}
FIRST(G) = FIRST(S) = {a, s}
FOLLOW(S) = {), ,}
FOLLOW(S') = {), ,}
FOLLOW(G) = {$, )}- 然后可以构造LL(1)分析表:
这个分析表没有任何冲突,所以这个文法是LL(1)的。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 - A) 一个a可以直接推导成S,然后(S)可以推导成S-(L),L可以推导成a,(a,a)可以推导成L,所以可以得到以下左推导过程:
悬赏问题
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?