兰州大学《编译原理》15秋在线作业1满分答案
编译原理作业标准答案

编译原理作业标准答案第一章引言一、解释下列各词源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。
源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。
目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。
目标程序(结果程序)一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。
如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目标语言程序),后者与前者在逻辑上是等价的。
其中包括:编译程序,解释程序,汇编程序。
编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序: 以该语言写的源程序作为输入,但不产生目标程序。
按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。
二、什么叫“遍”?指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。
三、简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。
词法分析:输入源程序,进行词法分析,输出单词符号。
语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。
中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。
优化:对中间代码进行优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
四、编译程序与解释程序的区别?编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
兰州大学《编译原理》15秋在线作业3满分答案

兰州大学《编译原理》15秋在线作业3满分答案一、单选题(共 15 道试题,共 60 分。
)1. 最适合动态建立数据实体的内存分配方式是( )A. 栈式分配B. 堆式分配C. 编译时预先分配D. 以上三种均可正确答案:B2. 正则表达式R1和R2等价是指()A. R1和R2都是定义在一个字母表上的正则表达式B. R1和R2中使用的运算符相同C. R1和R2代表同一正则集D. R1和R2代表不同正则集正确答案:C3. LR分析法是一种()的分析技术。
A. 自顶向下B. 自底向上C. 由左到右D. 由右向左:A4. 采用自上而下分析,必须()。
A. 消除左递归B. 消除右递归C. 消除回溯D. 提取公共左因子正确答案:C5. 在目标代码生成阶段,符号表用于()。
A. 目标代码生成B. 语义检查C. 语法检查D. 地址分配正确答案:D6. 文法G[N]=({b},{N,B},N,{N→b│bB,B→bN}),该文法所描述的语言是()A. L(G[N])={bi│i≥0}B. L(G[N])={b2i│i≥0}C. L(G[N])={b2i+1│i≥0}D. L(G[N])={b2i+1│i≥1}:C7. 若a为终结符,则A->α ? aβ为_____项目。
A. 归约B. 移进C. 接受D. 待约正确答案:B8. Chomsky定义的四种形式语言文法中,0型文法又称为()A. 短语结构文法B. 前后文无关文法C. 前后文有关文法D. 正规文法正确答案:A9. 文法G[A]:A→bHH→BAB→AbH→a不是()A. 2型文法B. 正规文法C. 0型文法D. 1型文法正确答案:B10. 编译程序必须完成的工作有 ____. (1) 词法分析 (2) 语法分析 (3) 语义分析 (4) 代码生成 (5) 之间代码生成(6) 代码代码优化A. (1)(2)(3)(4)B. (1)(2)(3)(4)(5)C. (1)(2)(3)(4)(5)(6)D. (1)(2)(3)(4)(6)正确答案:A11. 设G是一个给定的文法,S是文法的开始符号,如果S->x(其中x∈V*),则称x是文法G的一个()。
《编译原理》作业参考答案

《编译原理》作业参考答案一、填空1.图二图一。
2.文法是无ε产生式,且任意两个终结符之间至多有一种优先关系的算符文法。
3.最右推导最右推导。
4.对于循环中的有些代码,如果它产生的结果在循环中是不变的,就把它提到循环外来。
把程序中执行时间较长的运算替换为执行时间较短的运算。
5.对于文法中的每个非终结符A的各个产生式的候选首符集两两不相交;对文法中的每个非终结符A,若它存在某个候选首符集包含ε,则FIRST(A)∩FOLLOW(A)= ø6.控制。
7.语义分析和中间代码产生8.自上而下自下而上自上而下9.自下而上表达式10.自下而上11.源程序单词符号12. DFA初态唯一,NFA初态不唯一;DFA弧标记为Σ上的元素,NFA弧标记为Σ*上的元素;DFA的函数为单射,NFA函数不是单射13.词法,词法分析器,子程序,语法14.ε,a,ab,ab15.终结符号,非终结符号,产生式16.L(G)={a n | n≥1}17.1型,2型,3型18.二义的19.快20.终态,输入字21.单词符号,终结符22.归约23.必须24.直接25.终结符,更快26.E→E+∙T, E→E∙+T, E→∙E+T, E→E+T∙27.归约—归约28.类型检查,一致性检查29.词法分析、词法30.语法分析程序、语法31。
终结符号、产生式、开始符号、非终结符32.2、2、333.不需要避开34.符合、不符合35.推导36.包括37.Ass38.一定没有、一定没有、至多只有一个39.SLR(1)40.移进——归约41.a.控制流检查、b.一致性检查、c.相关名字检查二、判断下面语法是否正确1 ×2 ×3 √4 ×5 √6 ×三、简答题1.词法分析的任务是对输入的源程序进行单词及其属性的识别,为下一步的语法分析进行铺垫;有两种方法可以实现词法分析器:一,手工编写词法分析程序。
二,由词法分析器自动生成程序生成。
编译原理 作业答案

《编译原理》第一次作业参考答案一、下列正则表达式定义了什么语言(用尽可能简短的自然语言描述)?1.b*(ab*ab*)*所有含有偶数个a的由a和b组成的字符串.2.c*a(a|c)*b(a|b|c)* | c*b(b|c)*a(a|b|c)*答案一:所有至少含有1个a和1个b的由a,b和c组成的字符串.答案二:所有含有子序列ab或子序列ba的由a,b和c组成的字符串.说明:答案一要比答案二更好,因为用自然语言描述是为了便于和非专业的人员交流,而非专业人员很可能不知道什么是“子序列”,所以相比较而言,答案一要更“自然”.二、设字母表∑={a,b},用正则表达式(只使用a,b, ,|,*,+,?)描述下列语言:1.不包含子串ab的所有字符串.b*a*2.不包含子串abb的所有字符串.b*(ab?)*3.不包含子序列abb的所有字符串.b*a*b?a*注意:关于子串(substring)和子序列(subsequence)的区别可以参考课本第119页方框中的内容.~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第二次作业参考答案一、考虑以下NFA:1.这一NFA接受什么语言(用自然语言描述)?所有只含有字母a和b,并且a出现偶数次或b出现偶数次的字符串.2.构造接受同一语言的DFA.答案一(直接构造通常得到这一答案):答案二(由NFA构造DFA得到这一答案):二、正则语言补运算3.画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串.1.画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串.规律:构造语言L的补语言L’的DFA,可以先构造出接受L的DFA,再把这一DFA的接受状态改为非接受状态,非接受状态改为接受状态,就可以得到识别L’的DFA.说明:在上述两题中的D状态,无论输入什么符号,都不可能再到达接受状态,这样的状态称为“死状态”.在画DFA时,有时为了简明起见,“死状态”及其相应的弧(上图中的绿色部分)也可不画出.2.再证明:对任一正则表达式R,一定存在另一正则表达式R',使得L(R')是L(R)的补集.证明:根据正则表达式与DFA的等价性,一定存在识别语言L(R)的DFA. 设这一DFA为M,则将M的所有接受状态改为非接受状态,所有非接受状态改为接受状态,得到新的DFA M’. 易知M’识别语言L(R)的补集. 再由正则表达式与DFA的等价性知必存在正则表达式R’,使得L(R’)是L(R)的补集.三、设有一门小小语言仅含z、o、/(斜杠)3个符号,该语言中的一个注释由/o开始、以o/结束,并且注释禁止嵌套.1.请给出单个正则表达式,它仅与一个完整的注释匹配,除此之外不匹配任何其他串. 书写正则表达式时,要求仅使用最基本的正则表达式算子( ,|,*,+,?).参考答案一:/o(o*z|/)*o+/思路:基本思路是除了最后一个o/,在注释中不能出现o后面紧跟着/的情况;还有需要考虑的是最后一个o/之前也可以出现若干个o.参考答案二(梁晓聪、梁劲、梁伟斌等人提供):/o/*(z/*|o)*o/2.给出识别上述正则表达式所定义语言的确定有限自动机(DFA). 你可根据问题直接构造DFA,不必运用机械的算法从上一小题的正则表达式转换得到DFA.~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第三次作业参考答案一、考虑以下DFA的状态迁移表,其中0,1为输入符号,A~H代表状态:01A B AB A CC D BD D AE D FF G EG F GH G D其中A为初始状态,D为接受状态,请画出与此DFA等价的最小DFA,并在新的DFA状态中标明它对应的原DFA状态的子集.说明:有些同学没有画出状态H,因为无法从初始状态到达状态H. 从实用上讲,这是没有问题的. 不过,如果根据算法的步骤执行,最后是应该有状态H的.二、考虑所有含有3个状态(设为p,q,r)的DFA. 设只有r是接受状态. 至于哪一个状态是初始状态与本问题无关. 输入符号只有0和1. 这样的DFA总共有729种不同的状态迁移函数,因为对于每一状态和每一输入符号,可能迁移到3个状态中的一个,所以总共有3^6=729种可能. 在这729个DFA中,有多少个p和q是不可区分的(indistinguishable)?解释你的答案.解:考虑对于p和q,在输入符号为0时的情况,在这种情况下有5种可能使p和q无法区分:p和q在输入0时同时迁移到r(1种可能),或者p和q在输入0时,都迁移到p或q(4种可能).类似地,在输入符号为1时,也有5种可能使p和q无法区分.如果再考虑r的迁移,r的任何迁移对问题没有影响. 于是r在输入0和输入1时各有3种可能的迁移,总共有3*3=9种迁移.因此,总共有5*5*9=225个DFA,其中p和q是不可区分的.三、证明:所有仅含有字符a,且长度为素数的字符串组成的集合不是正则语言.证明:用反证法.假设含有素数个a的字符串组成的集合是正则语言,则必存在一个DFA接受这一语言,设此DFA为D. 由于D 的状态数有限,而素数有无限多个,所以必存在两个不同的素数p和q(设p<q),使得从D的初始状态出发,经过p个a和q个a后到达同一状态s,且s为接受状态. 由于DFA每一步的迁移都是确定的,所以从状态s 出发,经过(q-p)个a,只能到达状态s.考虑仅含有字母a,长度为p+p(q-p)的字符串T. T从初始状态出发,经过p个a到达状态s,再经过(q-p)个a仍然到达s;同样,经过p(q-p)个a后仍然到达s. 因此,从初始状态出发,经过p+p(q-p)个a后必然到达状态s. 由于p+p(q-p)=p(q-p+1)是合数,而s为接受状态,因而得出矛盾. 原命题得证.~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第四次作业参考答案一、用上下文无关文法描述下列语言:1.定义在字母表∑={a, b}上,所有首字符和尾字符相同的非空字符串.S → aTa | bTb | a | bT → aT | bT | є说明:1. 用T来产生定义在字母表∑={a, b}上的任意字符串;2. 注意不要漏了单个a和单个b的情况.2.L={0i1j|i≤j≤2i且i≥0}.S → 0S1 | 0S11 | є3.定义在字母表∑={0, 1}上,所有含有相同个数的0和1的字符串(包括空串).S → 0S1 | 1S0 | SS | є思路:分两种情况考虑.1)如果首尾字母不同,那么这一字符串去掉首尾字母仍应该属于我们要定义的语言,因此有S → 0S1 | 1S0;2)如果首尾字母相同,那么这一字符串必定可以分成两部分,每一部分都属于我们要定义的语言,因此有S → SS.二、考虑以下文法:S → aABeA → Abc|bB → d1.用最左推导(leftmost derivation)推导出句子abbcde.S ==> aABe ==> aAbcBe ==> abbcBe ==> abbcde2.用最右推导(rightmost derivation)推导出句子abbcde.S ==> aABe ==> aAde ==> aAbcde ==> abbcde3.画出句子abbcde对应的分析树(parse tree).三、考虑以下文法:S → aSbS → aSS →1.这一文法产生什么语言(用自然语言描述)?所有n个a后紧接m个b,且n>=m的字符串.2.证明这一文法是二义的.对于输入串aab,有如下两棵不同的分析树3.写出一个新的文法,要求新文法无二义且和上述文法产生相同的语言.答案一:S → aSb | TT → aT | ε答案二:S → TS’T → aT | εS’ → aS’b | ε~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第五次作业参考答案一、考虑以下文法:S → aTUV | bVT → U | UUU →ε | bVV →ε | cV写出每个非终端符号的FIRST集和FOLLOW集.FIRST(S)={a, b} FIRST(T)={є, b} FIRST(U)={ є, b} FIRST(V)={є, c}FOLLOW(S)={$} FOLLOW(T)={ b, c, $} FOLLOW(U)={ b, c, $} FOLLOW(V)={b, c , $}二、考虑以下文法:S → (L) | aL → L, S | S1.消除文法的左递归.S → (L) | aL → SL’L’ → ,SL’ | ε2.构造文法的LL(1)分析表.FIRST(S) = {‘(‘, ‘a’} FIRST(L) = {‘(‘, ‘a’} FIRST(L’) = {‘,’, ε}FOLLOW(S) = {‘$’, ‘,’, ‘)’} FOLLOW(L) = {‘)’ } FOLLOW(L’) = {‘)’}3.三、考虑以下文法:S → aSbS | bSaS | ε这一文法是否是LL(1)文法?给出理由.这一文法不是LL(1)文法,因为S有产生式S →ε,但FIRST(S) = {a, b, ε},FOLLOW(S) = {a, b},因而FIRST(S)∩FOLLOW(S)≠∅. 根据LL(1)文法的定义知这一文法不是LL(1)文法.~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第六次作业参考答案一、考虑以下文法:(0) E’ → E(1) E → E+T(2) E → T(3) T → TF(4) T → F(5) F → F*(6) F → a(7) F → b1.写出每个非终端符号的FIRST集和FOLLOW集.FIRST(E’)= FIRST(E)= FIRST(T)= FIRST(F)={a, b}FOLLOW(E’)={$} FOLLOW(E)={+, $} FOLLOW(T)={+, $, a, b} FOLLOW(F)= {+, *, $, a, b}2.构造识别这一文法所有活前缀(viable prefixes)的LR(0)自动机(参照课本4.6.2节图4.31).STATE ACTION GOTOa b+*$E T F0s4s5123 1s6accept2s4s5r2r27 3r4r4r4s8r44r6r6r6r6r65r7r7r7r7r76s4s593 7r3r3r3s8r38r5r5r5r5r59s4s5r1r17STACK SYMBOLS INPUT ACTION(1)0a+ab*$shift(2)04a+ab*$reduce by F→a(3)03F+ab*$reduce by T→F(4)02T+ab*$reduce by E→T(5)01E+ab*$shift(6)016E+ab*$shift~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第八次作业参考答案一、考虑以下语法制导定义(Syntax Directed Definition):对于输入串gbbabbccd构造带注释的分析树(annotated parse tree).最终答案:34二、以下文法定义了二进制浮点数常量的语法规则:S → L.L | LL → LB | BB → 0 | 1试给出一个S属性的语法制导定义,其作用是求出该二进制浮点数的十进制值,并存放在开始符号S相关联的一个综合属性value中。
兰大18秋《编译原理课程作业_B(满分)

编写一个计算机高级语言的源程序后,到正式上机运行一般要经过____这几步. (1) 编辑(2) 编译(3) 连接(4) 运行A: (1)(2)(3)(4)B: (1)(2)(3)C: (1)(3)D: (1)(4)单选题编译程序是对()。
A: 汇编程序的翻译B: 高级语言程序的解释执行C: 机器语言的执行D: 高级语言的翻译单选题编译程序生成的目标程序____ 是可执行的程序.A: 一定B: 不一定单选题一个句型中的最左_____称为该句型的句柄。
A: 短语B: 简单短语C: 素短语D: 终结符号单选题在规X归约中,用_____来刻画可归约串。
A: 直接短语B: 句柄C: 最左素短语D: 素短语单选题动态存储分配可采用的分配方案是()。
A: 队式存储分配B: 栈式存储分配C: 线性存储分配D: 链式存储分配单选题构造编译程序应掌握().A: 源程序B: 目标语言C: 编译方法D: 以上三项都是数组的内情向量中肯定不含有数组的_____的信息。
A: 维数B: 类型C: 维上下界D: 各维的界差单选题下列不属于字符串banana的字串是______。
A: bB: baaC: babnD: baan单选题一个句型中称为句柄的是该句型的最左( )A: 非终结符号B: 短语C: 句子D: 直接短语单选题如果活动记录中没有DISPLAY表,则说明()。
A: 程序中不允许有递归定义的过程B: 程序中不允许有嵌套定义的过程C: 程序中既不允许有嵌套定义的过程,也不允许有递归定义的过程D: 程序中允许有递归定义的过程,也允许有嵌套定义的过程单选题在下述的编译方法中,自底向上的方法有( ) ①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析⑥SLR(k)分析⑦LL(k)分析⑧LALR(K)分析A: ③④⑦B: ③④⑧C: ①②⑧D: ①②⑤⑥⑧单选题一个LR(1)文法合并同心集后若不是LALR(1)文法( )A: 则可能存在移进/归约冲突B: 则可能存在归约/归约冲突C: 则可能存在移进/归约冲突和归约/归约冲突单选题过程的DISPLAY表中记录了()。
兰州大学《编译原理》16秋平时作业1 免费答案

一、单选题(共 15 道试题,共 60 分。
)V 1. 设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈V*),则称x是文法G 的一个。
A. 候选式B. 句型C. 单词D. 产生式标准答案:B2. 堆式动态分配申请和释放存储空间遵守_____原则。
A. 先请先放B. 先请后放C. 后请先放D. 任意标准答案:D3. 文法分为四种类型,即0型、1型、2型、3型。
其中3型文法是()。
A. 短语文法B. 正则文法C. 上下文有关文法D. 上下文无关文法标准答案:B4. LR分析法是一种______的分析技术。
A. 自顶向下B. 自底向上C. 由左到右D. 由右向左标准答案:A5. 下面说法正确的是( )A. 一个正规式只能对应一个确定的有限状态自动机B. 一个正规语言可能对应多个正规文法标准答案:B6. 与编译系统相比,解释系统_____。
A. 比较简单 , 可移植性好 , 执行速度快B. 比较复杂 , 可移植性好 , 执行速度快C. 比较简单 , 可移植性差 , 执行速度慢D. 比较简单 , 可移植性好 , 执行速度慢标准答案:D7. 在目标代码生成阶段,符号表用_____。
A. 目标代码生成B. 语义检查C. 语法检查D. 地址分配标准答案:D8. 在LR分析法中,分析栈中存放的状态是识别规范句型()的DFA状态。
A. 句柄B. 前缀C. 活前缀D. LR(0)项目标准答案:C9. 下列不属于字符串banana的字串是______。
A. bB. baaC. babnD. baan标准答案:B10. 在程序流图中,我们称具有下述性质()的结点序列为一个循环。
A. 它们是非连通的且只有一个入口结点B. 它们是强连通的但有多个入口结点C. 它们是非连通的但有多个入口结点D. 它们是强连通的且只有一个入口结点标准答案:D11. 若文法G定义的语言是无限集,则文法必然是()。
A. 递归的B. 前后文无关的C. 二义性的D. 无二义性的标准答案:A12. 表达式(┐A∨B)∧(C∨D)的逆波兰表示为()。
北语15秋《编译原理》作业1 100分答案

15秋《编译原理》作业1
一、单选题(共6 道试题,共24 分。
)
1. 一个上下文无关文法G 包括四个组成部分,它们是标准答案:一组非终结符号,一组终结符号,一个开始符号,以及一组_____。
A. 句子
B. 句型
C. 单词
D. 产生式
标准答案:D
2. 一个上下文无关文法G 包括四个组成部分,它们是标准答案:一组_____,一组终结符号,一个开始符号,以及一组产生式。
A. 句子
B. 句型
C. 单词
D. 非终结符号
标准答案:D
3. 优化可生成_____的目标代码。
A. 运行时间较短
B. 占用存储空间较小
C. 运行时间短但占用内存空间大
D. 运行时间短且占用存储空间小
标准答案:D
4. 审查每个算符是否具有语言规范允许的运算对象是()的工作。
A. 语法分析
B. 语义分析
C. 中间代码生成
D. 代码优化
E. 目标代码生成。
编译原理

《编译原理》课后习题答案第 1 章引论第 1 题解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。
(2)源程序:源语言编写的程序称为源程序。
(3)目标程序:目标语言书写的程序称为目标程序。
(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。
通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。
(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。
(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。
第 2 题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。
一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。
其各部分的主要功能简述如下。
词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。
语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。
语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。
中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。
中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。
目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。
表格管理程序:负责建立、填写和查找等一系列表格工作。
表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理》15秋在线作业1
一、单选题(共15 道试题,共60 分。
)
1. 下面说法正确的是( )
A. Lex是一个词法分析器的生成器
B. Yacc是一个语法分析器
标准答案:A
2. 编译程序是一种常用的()软件。
A. 应用
B. 系统
标准答案:B
3. 通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码代码优化,目标代码生成等五个部分,还应包括_____。
A. 模拟执行器
B. 解释器
C. 表格处理和出错处理
D. 符号执行器
标准答案:C
4. 下列不属于字符串banana的字串是()。
A. b
B. baa
C. babn
D. baan
标准答案:B
5. 四种形式语言文法中,1型文法又称为_____文法。
A. 短语结构文法
B. 前后文无关文法
C. 前后文有关文法
D. 正规文法
标准答案:C
6. 间接三元式表示法的优点为()。
A. 采用间接码表,便于代码优化处理
B. 节省存储空间,不便于表的修改
C. 便于代码优化处理,节省存储空间
D. 节省存储空间,不便于代码优化处理
标准答案:A
7. 在语法制导翻译中不采用拉链回填技术的语句是()。
A. 跳转语句。