编译原理-期末

第一章

编译原理的基础问答

  1. 设 A机器 上有 语言L 的编译程序,可以用它来编制B机器上的语言'的编译程序,试用 T形图 进行表示。
  2. 通过自展完成C语言的编写,试描述这个过程。
  3. 画出编译程序的总体结构图,简要说明每个模块的功能
  4. 如何理解“单词是程序设计语言中具有独立意义的最小语法单位”这句话?
  5. ∑={aa,ab,bb,ba},求字符串 aaaaabbbba 的所有前缀的集合、后缀的集合、真前缀的集合、真后缀的
    集合。

部分答案

  • 画出编译程序的总体结构图,简要说明每个模块的功能
    alt text
  • 如何理解“单词是程序设计语言中具有独立意义的最小语法单位”这句话?
    单词是由字母所组成的,而字母往往是有限的,难以表达更加复杂和高级的含义;
    所以由字母依照一定的文法所组成的单词就承担了语义表达的作用,而在单词之上则是句子,能够表达更加复杂的语义。
    所以相较之下,单词就是具有独立意义的最小语法单位了。

第二章

  1. 设文法G有如下产生式:
G:A → B=E
  B → C|D
  C → a|b|c
  D → m[1]|m[2]lm[3]
  E → COC|COD|DOC|DOD
  O → +|-

现有句子b=a+b,m[2]=b+m[1],试完成下列题目。
(1)分别给出每个句子的3个不同推导,要求有最左推导和最右推导。
(2)给出上面6个不同推导各自对应的归约。
(3)试画出相应的语法树。
(4)指出每个句子中的短语、简单短语和句柄。

第三章

  1. 在文法中,终结符号和非终结符号各起什么作用?各用来表示什么类型的对象?有什么不同的特点?
  2. 什么是语法制导定义?什么是属性文法?什么是翻译模式?它们之间的关系是什么?
  3. 画出有穷状态自动机的状态转换图,分别识别下列文法生成的语言。

\[\begin{align} &(1)G_1:\\ &S → +R|-R|0R|1R|2R|3R|4R\\ &R → 0R|1R|2R|3R|4R|0|1|2|3|4|0D|1D|2D|3D|4D\\ &D → .B\\ &B → 0B|1B|2B|3B|4B|0|1|2|3|4\\ &(2)G_2:\\ &S → as|aB|bB|bS\\ &B → -C|.C\\ &C → cC|dC|eC|fC|e|0E|1E|2E|3E|4E\\ &E → -A|+A\\ &A → 0A|1A|2A|3A|4A|0|1|2|3|4\\ &(3)G_3:\\ &S → Sa|Aa|Bb\\ &A → Ba|a\\ &B → Abb\\ &(4)G_4:\\ &S → aAa\\ &A → aA bB a\\ &B → bB|b\\ \end{align} \]

第四章

  1. 考虑简化了的C声明的以下文法:
<declaration><type><var_list>
<pe>→int float
<var_list>id,<var_list>id

(1)在该文法中提取左因子。
(2)为改造后文法的语法变量构造 FIRST 集和 FOLL0OW 集。
(3)说明改造后的文法是 LL(1) 文法。
(4)为改造后的文法构造 LL(1) 分析表。
(5)给出输入串 intx,y,z 所对应的 LL(1) 分析动作。

第五章

  1. 在自顶向下的分析方法中,既不允许文法中出现直接左递归,又不允许出现间接左递归,为什么在自底向上的分析方法中没有这一要求?
  2. 设有如下文法G:

\[S\rightarrow a|^|(T) T\rightarrow T,S|S \]

(1)给出 (a,(a,a))(((a,a),,(a)),a) 的最左推导和最右推导。
(2)指出 (((a,a),^,(a)),a) 的规范归约及每一步的句柄。根据该规范归约,给出“移进-归约”的过程,
并给出自底向上构造其语法树的过程。
(3)求其 FIRSTOPLASTOP
(4)计算其优先关系,并判断其是否为算符优先文法。
(5)计算其优先函数。

  1. 设有如下文法G:

\[<S>\rightarrow<S>(<S>) <S>\rightarrow a \]

(1)计算该文法的 LR(0) 项目集规范族,构造识别其所有规范句型活前缀的DFA。
(2)该文法是 LR(0) 文法吗?请说明理由。
(3)构造该文法的 SLR(1) 分析表。
(4)给出识别句子 a(a(a)) 的自底向上语法分析的过程。

  1. 设有如下文法G:

\[<S>\rightarrow <A> <A>\rightarrow <B><A>|\epsilon <B>\rightarrow a<B>|b \]

(1)试用识别活前缀的方式给出文法G的 LR(1) 项目集。
(2)构造 GLR(1) 分析表。
(3)给出输入符号串w=abab的自底向上语法分析过程。

第六章

  1. 给定如下翻译模式:
A→aB {print"0";}
A→c {print"1";}
B→Ab {print"2";}

假设在按某一产生式进行归约时将立即执行括号中的动作,试问当输人为aabb时,打印出的字符串是什么?

  1. 综合属性和继承属性有什么区别?为什么将固有属性归入综合属性,这样归类的依据是什么?
posted @ 2025-01-08 17:52  ZZQ323  阅读(121)  评论(0)    收藏  举报