编译原理作业题整理.docVIP

  • 563
  • 0
  • 约8.28千字
  • 约 19页
  • 2017-01-06 发布于重庆
  • 举报
编译原理作业题整理

第一章 习题一 解释名词:源语言、目标语言、翻译器、编译器和解释器。 答:源语言:被翻译器翻译的语言,用于书写源程序的语言。 目标语言:被翻译器翻译之后得到的语言,用于书写目标程序的语言。 翻译器:能够完成从一种语言到另一种语言的变换的软件。 编译器:一种特殊的翻译器,要求目标语言比源语言低级。 解释器:解释器是不同于编译器的另一种语言处理器。解释器不像编译器那样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。 第二章 词法分析 作业: 假设∑={0,1},求 写出包含010的所有串的正规式 写出不包含010的所有串的正规式 答: 1. (0|1)*(010)(0|1)* 2.(10*1)*|((11|00)*|0111*0)* . 2. (0|1)*010(0|1)* 解:(1)RE的分解树如下: (2)由分解树及基本的Thompson构造算法逐步构造等价的NFA过程如下: (3)由子集法构造等价的DFA过程如下: 0 1 A B C B B D C B C D E C E F G F F G G H I H F G I F I 其中含有r.初态的是A作为新的DFA的初态,含有原r17终态的是E、F、G和H作为新的DFA的终态。做出对应DFA的状态转换图如下: (4)直接由分割算法处理该DFA,如得到的DFAmin与原DFA一致说明原DFA本身就是最简的: 由于导致{A,B,C}和D落入的状态集是不等价的,说明{A,B,C}和D是不等价的,故{A,B,C,D}应该分裂为{A,B,C}和{D},故: 由于落入不同的状态集(相对来说是两个不等价的状态集),说明{A,C}和B是不等价的,故{A,B,C,D}应该分裂为{A,C}和{B},故: 由于落入同一个状态集,故{E,F,G,H,I}暂不分裂。 由于落入同一个状态集},故{E,F,G,H,I}暂不分裂。故最终划分为: 说明A和C是等价的,E、F、G、H和I是等价的。合并等价状态(A和C中保留A,E、F、G、H和I中保留E)并处理对应弧线得最小化DFA如下: 0 1 0 1 0 1 0 2 2 3 0 3 3 3 1. 0 1 0 0 1 1 2 3 2 4 0 3 1 2 4 3 4 3.1考虑文法 S ( ( L ) | a L ( L , S | S (a)建立句子(a,(a,a))和(a,((a,a),(a,a)))的分析树。 (b)为(a)的两个句子构造最左推导。 (c)为(a)的两个句子构造最右推导。 (d)这个文法产生的语言是什么。 (a,(a,a))的分析树 S ( L ) L , S S ( L ) a L , S S a a (a,((a,a),(a,a)))的分析树 S ( L ) L , S a ( L ) L , S a ( L ) L , S a ( L ) L , S S a a (a,(a,a))的最左推导 S=>lm (L) =>lm (L,S) =>lm (S,S) =>lm(a,S) =>lm (a,(L)) =>lm (a,(L,S)) =>lm (a,(S,S)) =>lm (a,(a,S)) =>lm (a,(a,a)) (a,((a,a),(a,a)))的最左推导 S=>lm (L) =>lm (L,S) =>lm (S,S) =>lm (a,S) =>lm (a,(L)) =>lm (a,(L,S)) =>lm (a,(S,S)) =>lm (a,((L),S)) =>lm (a,((L,S),S)) =>lm (a,((S,S),S)) =>lm (a,((a,S),S)) =>lm (a,((a,a),S)) =>lm (a,((a,a),(L))) =>lm (a,((a,a),(L)))

文档评论(0)

1亿VIP精品文档

相关文档