编译原理总复习
- 格式:doc
- 大小:310.00 KB
- 文档页数:11
编译原理复习题有答案编译原理复习题及答案一、选择题1. 编译器的主要功能是什么?A. 代码格式化B. 代码优化C. 将源代码转换为机器码D. 错误检测和修复答案:C2. 词法分析阶段的主要任务是什么?A. 语法分析B. 语义分析C. 识别源程序中的词法单元D. 代码生成答案:C3. 下列哪个不是编译原理中的常见数据结构?A. 栈B. 队列C. 哈希表D. 链表答案:D4. 语法分析通常采用哪种方法?A. 递归下降分析B. 动态规划C. 贪心算法D. 深度优先搜索答案:A5. 代码优化的目的是什么?A. 增加程序长度B. 减少程序运行时间C. 提高程序的可读性D. 增加程序的复杂性答案:B二、简答题1. 简述编译过程的主要阶段。
答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。
词法分析负责将源代码分解成词法单元;语法分析构建语法树,检查源代码的语法结构;语义分析检查程序的语义正确性;代码生成将源代码转换成目标代码或机器码。
2. 什么是自底向上的语法分析方法?答案:自底向上的语法分析方法是一种从叶子节点开始,逐步向上构建语法树的方法。
它通常使用移进-归约分析技术,通过将输入符号与栈顶符号进行匹配,不断地将它们归约成非终结符,直到整个输入被归约为起始符号。
3. 请解释什么是中间代码,并说明其作用。
答案:中间代码是一种介于源代码和目标代码之间的代码形式,通常用于代码优化和目标代码生成。
它具有高级语言的可读性,同时又能表达程序的控制流和数据流信息。
中间代码使得编译器可以在不同的阶段对程序进行优化,提高程序的执行效率。
三、论述题1. 论述编译原理中的错误处理机制。
答案:编译原理中的错误处理机制主要包括错误检测、错误恢复和错误报告。
错误检测是指在编译过程中识别出源代码中的语法或语义错误;错误恢复是指在检测到错误后,编译器采取的措施以继续编译过程,避免因单个错误而中断整个编译;错误报告则是向程序员提供错误信息,帮助其定位和修复错误。
编译原理期末总结复习(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如公文写作、报告体会、演讲致辞、党团资料、合同协议、条据文书、诗词歌赋、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, this shop provides you with various types of classic sample essays, such as official document writing, report experience, speeches, party and group materials, contracts and agreements, articles and documents, poems and songs, teaching materials, essay collections, other sample essays, etc. Learn about the different formats and writing styles of sample essays, so stay tuned!编译原理期末总结复习编译原理期末总结复习(精选3篇)编译原理期末总结复习篇1一、简答题1.什么是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。
编译原理总复习总复习■第1章1、编译程序是⼀种翻译程序,它将⾼级语⾔所写的源程序翻译成等价的机器语⾔或者汇编语⾔的⽬标程序。
2、编译程序是计算机系统中重要的系统软件!3、解释程序与编译程序的主要区别是解释程序在执⾏过程中不产⽣⽬标程序。
4、编译的各个阶段。
答:整个编译过程可以分为5个阶段:词法分析,语法分析,语义分析及中间代码⽣成,代码优化和⽬标代码⽣成。
5、编译程序的结构框图或步骤。
6、遍(趟):是对源程序或源程序的中间结果从头到尾扫描⼀遍,并作有关加⼯处理,⽣成新的中间结果或⽬标程序的过程。
■第2章1、符号串的基本运算。
2、简单的说⽂法由产⽣式组成;产⽣式中的符号分为两类:终结符号和⾮终结符号。
3、推导(最左、最右)、句型、句⼦、短语、句柄4、乔姆斯基层次中:L3 ? L2 ? L1 ? L0■第2章例题已知⽂法G[E]:E→T|E+T|E-TT→F|T*F|T/FF→(E)|i(1)该⽂法的开始符号是什么?(2)请给出该⽂法的终结符号集合VT和⾮终结符号集合VN。
(3)找出句型T+T*F+i的所有短语、直接(简单)短语、句柄。
■第3章1、词法分析程序的输出是单词符号序列。
2、DFA的三种表⽰形式——状态转移图、状态转换表和五元组表⽰(Q, ∑, f, S, Z );3、正规式向DFA的转换:(1)正规式——NFA;(转换原则见下页)(2)NFA——DFA;(3)DFA的最⼩化。
4、DFA向正规式的转换。
正则式向NFA转换的原则:例:构造与正则表达式R=ba(a|b)*等价的状态最少的DFA,并写出该DFA的五元组形式或状态转换表。
■第4章1、语法分析⽅法的各种分类;2、LL(1)分析⽅法。
提⽰:在此算法中注意First集和Follow集的求法。
并且⼀定要注意分析过程中步骤要完整。
(分析步骤见下页总结)例:⽂法:S?a|^|(T) T?T,S|S试判断该⽂法是否是LL(1)⽂法。
习题4:P100 4.3 4.7 4.9■LL(1)分析⽅法相关知识总结1、消除⽂法中的左递归或提取左因⼦;(1)简单直接左递归的消除A →βA’A →Aα| β→A’ →αA’| ε(2)将⽂法G:A→αβ|αγ提取左因⼦。
1》编译程序的框架图与功能块:(1)画出编译程序的总体结构,并简述各部分的主要功能:七个部分(2)编译程序的结构分为几个阶段,各阶段的任务是什么?答编译程序总框架(1)词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。
(2)语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。
(3)语义分析与中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。
(4)优化器,对中间代码进行优化处理。
(5)目标代码生成器,把中间代码翻译成目标程序。
(6)表格管理,登记源程序的各类信息,编译各阶段的进展状况。
(7)出错管理,把错误信息报告给用户。
编译程序的结构分为五个阶段:(1)词法分析.任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字,标识符,常熟,算符和界符。
(2)。
语法分析,任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)。
(3)语义分析与中间代码产生。
任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
(4)优化。
任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
(5)目标代码生成。
任务是:把中间代码(或优化出理之后)变换成特定机械上的低级语言代码。
2》.重要概念:a. 编译程序:是指能够把源语言程序转换成逻辑上等价的目标语言程序的一个程序。
b. 单词符号:是语言的基本组成成分,是人们理解和编写程序的基本要素,是语言中具有独立意义的最基本结构,它一般包括:基本字、标识符、常数、运算符和界符等c. 中间代码:是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。
编译原理复习最终版第⼀章⼀.单项选择1.将编译程序分成若⼲“遍”,是为了()A.提⾼程序的执⾏效率B.使程序的结构更为清晰C.利⽤有限的机器内存并提⾼机器的执⾏效率D.利⽤有限的机器内存但降低了机器的执⾏效率2.⼀个编译程序在编译时,⼤多数时间花在()上A.出错处理B.词法分析C.⽬标代码⽣成D.表格管理及处理3. 下⾯代码不可能是⽬标代码的是()A. 汇编指令代码B. 可重定位指令代码C. 中间代码D. 绝对指令代码4. 解释程序和翻译程序的根本区别A. 是否⽣成中间代码B. 是否有语义分析阶段C. 是否⽣成⽬标代码D. 是否有语法分析阶段5. 下⾯编译阶段既可以作为编译器的前端,也可以作为编译器的后端的是:()A. 语法分析阶段B. 语义分析阶段C. 中间代码⽣成阶段D. 中间代码优化阶段⼆.多项选择1. ⼀个编译器可能有的阶段为()A. 词法分析B. 语法分析C. 语义分析2. 编译器的各个阶段的⼯作都涉及到()A. 表格处理B. 词法分析C. 语法分析D. 语义分析E. 出错处理3. ⼀般来说,编译器可分为前端和后端,下列编译阶段可被划分为编译的前端的有:()A. 词法分析B. 语法分析C. 语义分析D. 中间代码⽣成E. 中间代码优化三.判断题1.⼀个编译器就是⼀个程序,该程序的输⼊是源程序,输出是与之等价的⽬标程序。
2.编译与解释程序的根本区别是:是否⽣成⽬标代码。
3.解释程序和编译程序的前端是相同的,其实现技术基本上也是相通的。
4.⼀般⽽⾔,中间代码是⼀种独⽴于具体硬件的记号系统。
四.综合题1.请画出编译程序的总体框图。
2.源程序的解释和和编译执⾏的主要区别是什么?第三章⼀.单项选择题1.词法分析器的输出是:()A.单词在符号表中的位置B.单词的⾃⾝值C.单词的⾃⾝值和单词的种类码D.单词的种类码2.词法分析的依据是:()A.语义规则B.构词规则C.语法规则D.等价变换规则3. 两个DFA等价是指:()A. 这两个DFA的状态数相同B. 这两个DFA的状态数和有向弧条数都相等C. 这两个DFA的有向弧条数相等D. 这两个DFA接受的语⾔相同4. 词法分析器的输⼊是:()A. Token序列B. 源程序C. ⽬标程序D. 符号表5.下列符号串不可以由符号集∑={a,b}上的正闭包运算产⽣的是:()A. εB. aD.ab⼆.多项选择1. 令∑={a,b},则∑上的符号串的全体可⽤下⾯的正规式表⽰。
复习汇总一、第一章概述1.文法与自动机的等价1)0型文法—图灵机2)1型文法—线性有界非确定图灵机3)2型文法—非确定下推自动机4)3型文法—有限状态自动机2.编译技术的应用1)语法制导的结构化编辑器2)程序格式化工具3)软件测试工具4)程序理解工具5)高级语言的翻译工具6)等等3.从面向机器的语言到面向人类的语言(结合第二章第9小点理解)1)面向机器的语言:机器指令,汇编语言2)面向人类的语言:通用程序设计语言,数据查询语言,形式化描述语言(正规式,产生式)等等。
4.各语言的分类(结合第二章第9小点理解)1)过程式语言,面向对象语言:通用程序设计语言。
2)函数语言:面向特点领域的,递归特性。
例如LISP语言3)说明性,非算法式语言:LEX/YACC,SQL。
4)脚本式语言:Shell语言5.语言之间的转换(李静PPT41)1)高级语言之间的转换一般称为预处理或转换。
2)高级语言翻译成汇编语言或机器语言称之为编译。
3)把汇编语言翻译成机器语言称之为汇编。
4)将一个汇编语言程序汇编为可在另一台机器上运行的机器指令称之为交叉汇编。
5)把机器语言翻译成汇编语言称之为反汇编。
6)把汇编语言翻译成高级语言称之为反编译。
6.编译器和解释器1)编译器●源程序的翻译和翻译后的程序的运行是两个不同的阶段。
◆编译阶段:用户输入源程序,经过编译器的处理,生成目标程序。
◆目标程序的运行阶段:根据要求输入数据,得出结果。
2)解释器(凡是可以采用编译器的地方均可以采用解释器)●解释器把翻译和运行结合到一起,编译一段源程序,紧接着就执行它。
这种方式称为解释。
7.解释器的优点(对比与编译器)1)具有较好的动态特性。
2)具有较好的移植特性。
8.解释器的缺点(对比于编译器)1)相比于编译器需花费大量的时间。
2)占用更多的内存空间。
9.编译器的工作阶段(结合第二章6小点红色部分理解)1)源程序->词法分析器->语法分析器->语义分析器->中间代码生成器->代码优化器->目标代码生成器->目标代码2)工作过程中的每个阶段均采用了符号表管理器,出错处理器。
1、编译程序:能够把用各种高级语言书写的源程序翻译成某种等价的目标程序的翻译程序。
2、遍:指编译程序对源程序或中间代码程序从头到尾扫描一次。
3、静态分配:在编译时就能够安排好目标程序运行时的全部数据空间。
4、编译程序包括词法分析、语法分析、中间代码生成、优化,目标代码产生五个阶段,上述各阶段中还要进行表格处理和出错处理的工作。
5、编译程序可分为五个阶段:词法分析、语法分析、中间代码生成、优化、目标代码生成。
上述五个阶段之间每个阶段输出为作下一阶段的输入,第一阶段的输入是源程序,最后阶段的输出是目标代码。
6、程序语言是由语法和语义两方面定义的。
语法指可以形成和产生一个合式的程序的一组规则,语义是定义一个程序的意义的一组规则。
7、一个名字的属性包括类型和作用域。
8、目标代码一般有三种形式:能够立即执行的机器语言代码,待装配的机器语言模块和汇编语言代码。
9、2型文法又称为(上下文无关文法),3型文法又为(正规文法)。
10、虽然名字都是用标识符表示的,但名字和标识符有着本质的区别。
11、词法分析器的任务是从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成单词符号串的中间程序。
12、执行词法分析的程序称为词法分析器或扫描器。
13、词法分析器所输出的单词符号常常表示成如下二元关系:(单词种别,单词自身值)。
14、词法分析器:是一种程序,它能将字符串形式的源程序改造成单词符号串形式的中间程序。
15、程序语言的单词符号包括:(标识符)、(运算符)、(常数)、(基本字)、界符等。
16、超前搜索:在词法分析过程中,有时为了确定词性,需要超前扫描若干个字符,这个动作为超前搜索。
17、状态转换图是一张有限方向图,其中结点代表状态,状态之间用箭弧连接,箭弧上的标记代表在射出结点状态下可能出现的输入字符或字符类,状态中有一个初态,至少有一个终态。
18、自上而下分析的主旨是,对任何输入串,试图用一切可能的办法,从文法开始符号(根结)出发,自上而下地为输入串建立一颗语法树。
编译原理总复习总复习⼀、基本概念:1、请简单解释编译程序的概念。
答:编译程序是现代计算机系统的基本组成部分之⼀。
简⽽⾔之, 编译程序就是⼀种语⾔翻译程序。
所谓翻译程序,是指这样⼀个程序,它能将⾼级程序设计语⾔程序翻译成逻辑上等价的低级语⾔(汇编语⾔,机器语⾔) 程序。
编译程序⼀般由词法分析程序、语法分析程序、语义分析程序、中间代码⽣成程序、⽬标代码⽣成程序、代码优化程序、表格管理程序和出错处理程序等成分构成。
2、请解释编译程序的前端和后端的概念,试问前端通常包括那些阶段,后端包括那些阶段?(10分)答:编译程序的前端只依赖于源语⾔,由⼏乎独⽴于⽬标机器的阶段或阶段的⼀部分组成。
编译程序的前端通常包括词法分析程序、语法分析程序、语义分析程序、中间代码⽣成程序及相关的表格管理程序和出错处理程序。
编译程序的后端是指编译器中依赖于⽬标机器的部分,它们⼀般独⽴于源语⾔,⽽与中间代码有关。
通常包括⽬标代码⽣成程序、代码优化程序以及相关的表格管理程序和出错处理程序。
3、语⾔的语法描述⽅法有其三,请列举出来。
答:⽤⾃然语⾔描述语⾔的语法,⽤语法图描述语⾔的语法和⽤巴科斯-瑙尔范式及扩充的巴科斯-瑙尔范式(EBNF)两种形式给出语⾔的语法描述。
答:根据Chomcky⽂法的定义,该⽂法是2类⽂法,即上下⽂⽆关⽂法。
4、请写出Chomcky关于⽂法的定义。
答:Chomcky⽂法的定义:⽂法G定义为四元组,记为:G=(V N,V T,P,S)其中:V N—⾮空有限的⾮终结符号集V T—⾮空有限的终结符号集P —产⽣式集S —开始符号/识别符号5、已知⽂法:(20分)E→X|E+XX→Y|X*YY→(E)|i请判定该⽂法是那类⽂法?5、简单说明词法分析程序的主要任务。
答:词法分析程序是编译程序的⼀个构成成分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。
6、请简单介绍确定的有穷⾃动机。
答:确定的有穷⾃动机也称有限⾃动机,它是作为⼀种识别装置,它能准确地识别正规集,即识别正规⽂法所定义的语⾔和正规式所表⽰的集合。
编译原理总复习部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑alphabet字母表 symbol符号 string串 length长度 catenation连接power方幂 gather集合 product乘积 empty set空集 closure 闭包program程序 logic structure逻辑结构 generating产生 executing执行b5E2RGbCAPmachine language机器语言 instruction指令 function函数 assembler汇编程序p1EanqFDPwinterpreter解释程序 translator翻译程序 source language源语言 finite 有穷的DXDiTa9E3dsource program源程序 target language目标语言attribute属性 possess占有RTCrpUDGiTpreprocess预处理 compiler编译程序 break中断 Intermediate language中间语言5PCzVD7HxAdefinition定义 reconstructed重构 normal正规 character sequences 符号序列jLBHrnAILgprogramming language程序设计语言 operand操作数 instead替换 memory内存xHAQX74J0Xelement元素 high-level language高级语言 object program目标程序LDAYtRyKfEaddress地址 input输入 output输出 terminal终结符 compilation编辑Zzz6ZB2Ltkequivalence等价 nonterminal非终结符 recursion递归 deterministic确定的dvzfvkwMI1nondeterministic非确定的 Backus-Normal Form巴科斯范式 syntax语法rqyn14ZNXItree树 expression表达式 grammar文法 automata自动机 prefix前缀EmxvxOtOcosuffix后缀 infix中缀 identify识别 identifier标识符 analyses分析SixE2yXPq5predigest化简 symbol set符号集 performed执行 forecast预测 state 状态6ewMyirQFLformula产生式 conversion变换 precedence优先 simple简单 handle句柄kavU42VRUsoperator算符 terminal state终态 first state初态 optimizer优化程序y6v3ALoS89concatenation连接 word单词 alphabet字母表 lexical词法 scanner扫描器M2ub6vSTnPanalyzer分析器 syntax tree语法树 symbol table符号表 pass趟,遍0YujCfmUCwregular expression正规表达式 code generator代码生成器 backdate回溯eUts8ZQVRdderivation推导 educe推导 derivation tree推导树 path路径 ambiguous 二义性sQsAEJkW5Tsimple phrase简单短语 context-sensitive上下文有关 context-free上下文无关GMsIasNXkAright-linear 右线形phrase-structured短语结构regular grammar文法TIrRGchYzgdirect derivation直接推导 sentence句子 sentential form句型 root node根结点7EqZcWLZNXsubtree子树 semantic语义的 terminal node端末结点attribute grammar属性文法canonical derivation规范推导 top-down自上而下 bottom-up自下而上lzq7IGf02Eviable prefix活前缀nondeterminate finite automata非确定的有穷自动机zvpgeqJ1hk总复习一、基本概念:1、请简单解释编译程序的概念。
答:编译程序是现代计算机系统的基本组成部分之一。
简而言之, 编译程序就是一种语言翻译程序。
所谓翻译程序,是指这样一个程序,它能将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言> 程序。
编译程序一般由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、目标代码生成程序、代码优化程序、表格管理程序和出错处理程序等成分构成。
NrpoJac3v12、请解释编译程序的前端和后端的概念,试问前端通常包括那些阶段,后端包括那些阶段? (10分>答:编译程序的前端只依赖于源语言,由几乎独立于目标机器的阶段或阶段的一部分组成。
编译程序的前端通常包括词法分析程序、语法分析程序、语义分析程序、中间代码生成程序及相关的表格管理程序和出错处理程序。
编译程序的后端是指编译器中依赖于目标机器的部分,它们一般独立于源语言,而与中间代码有关。
通常包括目标代码生成程序、代码优化程序以及相关的表格管理程序和出错处理程序。
1nowfTG4KI3、语言的语法描述方法有其三,请列举出来。
答:用自然语言描述语言的语法,用语法图描述语言的语法和用巴科斯-瑙尔范式及扩充的巴科斯-瑙尔范式 (EBNF>两种形式给出语言的语法描述。
fjnFLDa5Zo 答:根据 Chomcky文法的定义,该文法是2类文法,即上下文无关文法。
4、请写出Chomcky关于文法的定义。
答: Chomcky文法的定义:文法G定义为四元组,记为:G=(VN,VT,P,S>其中:VN—非空有限的非终结符号集VT—非空有限的终结符号集P —产生式集S —开始符号/识别符号5、已知文法:<20分)E→X|E+XX→Y|X*YY→<E)|i请判定该文法是那类文法?5、简单说明词法分析程序的主要任务。
答:词法分析程序是编译程序的一个构成成分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。
tfnNhnE6e56、请简单介绍确定的有穷自动机。
答:确定的有穷自动机也称有限自动机,它是作为一种识别装置,它能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合。
具体而言,一个确定的有穷自动机可以用一个五元组表示,即M=(K,Σ,f, S,Z>。
K是一个有穷状态集,Σ是一个有穷字母表,f是转换函数,S是初态,Z是一个终态集。
HbmVN777sL7、简单说明语法分析程序。
答:语法分析程序是编译程序的核心部分。
语法分析的作用是识别由词法分析给出的单词符号序列是否是给定文法的正确句子(程序>,目前语法分析常用的方法有自顶向下<自上而下)分析和自底向上<自下而上)分析两大类。
V7l4jRB8Hs8、请说明有关句型、句子、句柄概念?<10分)答:设G[S]是一文法,如果符号串x是从文法的识别符号推导出来的,则称符号串x是文法G[S]的句型。
若符号串x还满足仅由终结符号组成的条件,则称x为G[S]的句子。
一个句型的最左直接短语称为该句型的句柄。
83lcPA59W99、请说明有关规范句型的概念?答:最右推导,即推导的每一步都是替换当前句型最右边的非终结符,被称为规范推导,由规范推导得到的句型称为规范句型。
mZkklkzaaP10、请说明有关预测符号集的概念?答:产生式A→α预测符号集表示:在确定的自上而下的语法分析过程中,当需要替换的非终结符是A时,而当前需要匹配的终结符属于产生式A→α预测符号集中的符号,则能够采用该产生式进行推导。
当α不能推出ε时,产生式A→α预测符号集是α的首符号集;当α能推出ε时,产生式A→α预测符号集是α的首符号集与A的后跟符号集的并集,但是不包括ε。
AVktR43bpw11、简单说明LR分析器由那几部分组成?答:简单而言LR分析器由3部分组成,它们是:总控程序、分析表<ACTION表和GOTO表)和分析栈<符号栈和状态栈)。
ORjBnOwcEd12、简单说明拓广文法、活前缀和可归前缀的概念?答:拓广文法:在原文法中增加一个产生式,S′→S,得到的新文法称之为原文法的拓广文法;活前缀:在规范句型中,不包括该句型句柄右边符号的前缀称之为活前缀;可归前缀:活前缀与句柄有3种关系,:活前缀不含句柄的任何符号;:活前缀含有句柄的部分符号;:活前缀包含句柄的全部符号。
包含句柄的全部符号的活前缀称之为可归前缀。
2MiJTy0dTT13、请简单说明编译中的语义处理。
答:编译中的语义处理是指两个功能:第一,审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义。
有时把这个工作称为静态语义分析或静态审查。
第二,如果静态语义正确,语义处理则要执行真正的翻译,即,或者将源程序翻译成程序的一种中间表示形式<中间代码),或者将源程序翻译成目标代码。
gIiSpiue7A14、编译程序所使用的中间代码经常见的有那几种形式?答:编译程序所使用的中间代码常见的有逆波兰记号、三元式、四元式和树形表示。
15、简单说明代码优化的概念。
答:所谓代码优化,实质上是对代码进行等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行速度加大或占用存储空间少,或两者都有。
uEh0U1Yfmh16、简单说明代码生成器的概念。
答;代码生成器是把某种高级程序设计语言编写的程序经过语法、语义分析,或再经过优化后的中间代码作为输入,将其转换成特定机器的机器语言或汇编语言作为输出,这样的转换程序称为代码生成器。
IAg9qLsgBX二、应用题<每题10分,共40分)1、文法G<S)的产生式为:S→aAS,A→SbA,A→aA,A→b,S→a,请写出该文法的非终结符号集、终结符号集及文法的开始符号,根据文法画出句型aSbSbaAa的语法树,并且指出该句型的短语、直接短语和句柄?WwghWvVhPE答:该文法的非终结符号集是{S,A}、终结符号集是{a,b}及文法的开始符号是{S}句型aSbSbaAa的语法树为:该句型的短语为:aA,SbaA, SbSbaAa, aSbSbaAa,a直接短语为:aA, a句柄为:aA2、正规式为:b((ab>*|bb>ba,请根据所列正规式,画出对应的NFA的状态转换图,并且将NFA确定化,画出对应的DFA的状态转换图。