喝冰可乐不喝可乐 2023-04-06 21:04 采纳率: 100%
浏览 21
已结题

编译设计习题(英文题)

img


编译设计课留的题,专业采用全英教学,因此题是英文的,但是正常人都可以看懂,求个专家来帮忙

  • 写回答

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)分析表:

    img


    这个分析表没有任何冲突,所以这个文法是LL(1)的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?