《编译原理》课程习题.docxVIP

  • 6
  • 0
  • 约5.28千字
  • 约 11页
  • 2021-02-03 发布于天津
  • 举报
第一章编译程序概述 1.1什么是编译程序 编译程序是现代计算机系统的基本组成部分之一, 而且多数计算机系统都含有不止一个 高级语言的编译程序。对有些高级语言甚至配置了几个不同性能的编译程序。 1.2编译过程概述和编译程序的结构 编译程序完成从源程序到目标程序的翻译工作, 是一个复杂的整体的过程。从概念上来 讲,一个编译程序的整个工作过程是划分成阶段进行的, 每个阶段将源程序的一种表示形式 转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。 一般一个编译 过程划分成词法分析、 语法分析、语义分析、中间代码生成,代码优化和目标代码生成六个 阶段,这是一种典型的划分方法。事实上,某些阶段可能组合在一起,这些阶段间的源程序 的中间表示形式就没必要构造出来了。 我们将分别介绍各阶段的任务。 另外两个重要的工作: 表格管理和出错处理与上述六个阶段都有联系。 编译过程中源程序的各种信息被保留在种种 不同的表格里,编译各阶段的工作都涉及到构造、 查找或更新有关的表格,因此需要有表格 管理的工作;如果编译过程中发现源程序有错误, 编译程序应报告错误的性质和错误发生的 地点,并且将错误所造成的影响限制在尽可能小的范围内, 使得源程序的其余部分能继续被 编译下去,有些编译程序还能自动校正错误, 这些工作称之为出错处理。 图1.1表示了编译 的各个阶段。 中冋代旧主咸目斬弋罔t蚯 中冋代旧主咸 目斬弋罔t蚯 图1.1编译的各个阶段 1.3高级语言解释系统 为了实现在一个计算机上运行高级语言的程序 ,主要有两个途径:第一个途径是把该程 一个程序,它解释所遇到的高级语言程序中的语句并且完成这些语句的动作, 这样的程序就 叫解释程序。从功能上说,一个解释程序能让计算机执行高级语言。 它与编译程序的主要不 同是它不生成目标代码,它每遇到一个语句,就要对这个语句进行分析以决定语句的含义, 执行相应的动作。 第二章:高级语言及其语法描述 问答第1题 写一文法,使其语言是偶正整数的集合。要求: ⑴允许0打头; (2)不允许0打头。 答:(1)允许0开头的偶正整数集合的文法 i NT|D NT|D NR D|1|3|5|7|9 D^ 0|2|4|6|8 不允许0开头的偶正整数集合的文法 Er NT|D Tr FT|G NR D|1|3|5|7|9 DR 2|4|6|8 Fr N|0 3 D|0 问答第2题 证明下述文法 G[〈表达式〉]是二义的。 〈表达式〉? ? =a|(〈表达式〉)| 〈表达式〉 〈运算符〉〈表达式〉 〈运算符〉 ::=+卜|*|/ 答:可为句子 a+a*a 构造两个不同的最右推导 最右推导1 〈表达式〉 —〈表达式〉 〈运算符〉 〈表达式〉 —〈表达式〉 〈运算符〉 a —.〈表达式〉 * a —〈表达式〉 〈运算符〉 〈表达式〉* a ―〈表达式〉 〈运算符〉 a * a 一〈表达式〉 + a * a —a + a * a 取右推导2 〈表达式〉 -〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 a * a + a * a 一:〈表达式〉 —〈表达式〉 _:〈表达式〉 —〈表达式〉 —〈表达式〉 〈运算符〉〈表达式〉 〈运算符〉a 问答第3题 令文法G[E]为: i T|E+T|E-T F|T*F|T/F i(E)|i 证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。 答 : 因为存在推导序列:E te+T — E + —* F所以E+T*F是文法G[E]的一个句型 句型E+T*F的 短语有:E+T*F,T*F 直接短语有:T*F 句柄为:T*F 问答第4题 给出生成下述语言的上下文无关文法: / 、 n n m m { a b a b | n , m=0} n m m^ n . { 1 0 1 0 | n , m=0} 答:(1) St AA A t aAb| e (2) S t 1S0|A A t 0A1| e 问答第5题 给出生成下述语言的三型文法: { a nb[ n, m=1 } {a nbmck|n,m,k=0 } 答:(1) St aA A t aA|B B t bB|b At aA|B Bt bB|C C t cC| e 问答第6题 给出下述文法所对应的正规式: St 0A|1B At 1S|1 Bt 0S|0 答: R = (01 | 10) ( 01 | 10 ) 第三章:词法分析 问答第1题 构造正规式1(0|1) *101相应的DFA. 答:先构造NFA 用子集法将NFA 用子集法将 NFA确定化 0 1 X A A A AB AB AC ab AC A aby aby AC ab 除X,A外,重新命名其他

文档评论(0)

1亿VIP精品文档

相关文档