编译原理3

作业3—自顶向下分析方法
作业要求:
① 独立完成,谢绝抄袭
② 作业截止时间:2019-04-30(周二) 23:59:59
③ 提交方式两种自选:
a) 电子邮件发 huangxx@hdu.edu.cn ,主题格式要求:“编译作业3_学号_姓名”,文件名也标为“作业3_学号_姓名”,以pdf或doc格式
b) 作业本

  1. 试消除下列文法G[E]中存在的左递归
    E→ET+ | ET- | T
    T→TF* | TF/ | F
    F→(E) |i
  2. 文法G[S](o, a , d, e, f, b是终结符号):
    S→MH | a
    H→LSo |ε
    K→dML | ε
    L→eHf
    M→K | bLM
    求非终结符号的FIRST集与FOLLOW集。
  3. 文法G[S]:
    S→a | ^ | (T)
    T→T,S | S
    (1)改写文法(消除左递归或左公共因子)。
    (2)判断改写后文法是否是LL(1)的,如果是,构造预测分析表。
    (3)给出输入串(a, a)的分析过程。

  4. 文法G[A]:
    A→aABe | a
    B→Bb | d
    (1)改写文法。
    (2)判断改写后文法是否是LL(1)的,如果是,构造预测分析表。
  5. 考虑简化了的C语言声明语句的文法G[D],其他符号都是终结符号(注意:int,float,id均为终结符号)。
    D→T V
    T→int | float
    V→ id, V | id
    (1) 在该文法中提取左公共因子。
    (2) 为改造后文法的非终结符号构造FIRST集和FOLLOW集
    (3) 说明改造后的文法是LL(1)文法
    (4) 为改造后的文法构造LL(1)分析表
    (5) 给出输入串 float x, y所对应的LL(1)分析过程。

posted @ 2019-05-15 10:30  xuedaobian  阅读(2474)  评论(2编辑  收藏  举报