编译原理总复习

上传人:txadgkn****dgknqu... 文档编号:59317013 上传时间:2022-03-02 格式:DOC 页数:6 大小:98.50KB
返回 下载 相关 举报
编译原理总复习_第1页
第1页 / 共6页
编译原理总复习_第2页
第2页 / 共6页
编译原理总复习_第3页
第3页 / 共6页
点击查看更多>>
资源描述
精选优质文档-倾情为你奉上 alphabet字母表 symbol符号 string串 length长度 catenation连接power方幂 gather集合 product乘积 empty set空集 closure 闭包program程序 logic structure逻辑结构 generating产生 executing执行machine language机器语言 instruction指令 function函数 assembler汇编程序interpreter解释程序 translator翻译程序 source language源语言 finite有穷的source program源程序 target language目标语言 attribute属性 possess占有preprocess预处理 compiler编译程序 break中断 Intermediate language中间语言definition定义 reconstructed重构 normal正规 character sequences 符号序列programming language程序设计语言 operand操作数 instead替换 memory内存element元素 high-level language高级语言 object program目标程序address地址 input输入 output输出 terminal终结符 compilation编辑equivalence等价 nonterminal非终结符 recursion递归 deterministic确定的nondeterministic非确定的 Backus-Normal Form巴科斯范式 syntax语法tree树 expression表达式 grammar文法 automata自动机 prefix前缀suffix后缀 infix中缀 identify识别 identifier标识符 analyses分析predigest化简 symbol set符号集 performed执行 forecast预测 state状态formula产生式 conversion变换 precedence优先 simple简单 handle句柄operator算符 terminal state终态 first state初态 optimizer优化程序concatenation连接 word单词 alphabet字母表 lexical词法 scanner扫描器analyzer分析器 syntax tree语法树 symbol table符号表 pass趟,遍regular expression正规表达式 code generator代码生成器 backdate回溯derivation推导 educe推导 derivation tree推导树 path路径 ambiguous二义性simple phrase简单短语 context-sensitive上下文有关 context-free上下文无关right-linear 右线形 phrase-structured短语结构 regular grammar文法direct derivation直接推导 sentence句子 sentential form句型 root node根结点subtree子树 semantic语义的 terminal node端末结点 attribute grammar属性文法canonical derivation规范推导 top-down自上而下 bottom-up自下而上viable prefix活前缀 nondeterminate finite automata非确定的有穷自动机总复习一、基本概念: 1、请简单解释编译程序的概念。答:编译程序是现代计算机系统的基本组成部分之一。简而言之, 编译程序就是一种语言翻译程序。所谓翻译程序,是指这样一个程序,它能将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言) 程序。编译程序一般由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、目标代码生成程序、代码优化程序、表格管理程序和出错处理程序等成分构成。2、请解释编译程序的前端和后端的概念,试问前端通常包括那些阶段,后端包括那些阶段? (10分)答:编译程序的前端只依赖于源语言,由几乎独立于目标机器的阶段或阶段的一部分组成。编译程序的前端通常包括词法分析程序、语法分析程序、语义分析程序、中间代码生成程序及相关的表格管理程序和出错处理程序。编译程序的后端是指编译器中依赖于目标机器的部分,它们一般独立于源语言,而与中间代码有关。通常包括目标代码生成程序、代码优化程序以及相关的表格管理程序和出错处理程序。3、语言的语法描述方法有其三,请列举出来。答:用自然语言描述语言的语法,用语法图描述语言的语法和用巴科斯-瑙尔范式及扩充的巴科斯-瑙尔范式 (EBNF)两种形式给出语言的语法描述。答:根据 Chomcky文法的定义,该文法是2类文法,即上下文无关文法。4、请写出Chomcky关于文法的定义。答: Chomcky文法的定义:文法G定义为四元组,记为: G=(VN,VT,P,S)其中:VN 非空有限的非终结符号集 VT 非空有限的终结符号集 P 产生式集 S 开始符号/识别符号5、已知文法:(20分) EX|E+X XY|X*Y Y(E)|i请判定该文法是那类文法?5、简单说明词法分析程序的主要任务。答:词法分析程序是编译程序的一个构成成分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。6、请简单介绍确定的有穷自动机。答:确定的有穷自动机也称有限自动机,它是作为一种识别装置,它能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合。具体而言,一个确定的有穷自动机可以用一个五元组表示,即M=(K,f, S,Z)。K是一个有穷状态集,是一个有穷字母表,f是转换函数,S是初态,Z是一个终态集。7、简单说明语法分析程序。答:语法分析程序是编译程序的核心部分。语法分析的作用是识别由词法分析给出的单词符号序列是否是给定文法的正确句子(程序),目前语法分析常用的方法有自顶向下(自上而下)分析和自底向上(自下而上)分析两大类。8、请说明有关句型、句子、句柄概念?(10分) 答:设GS是一文法,如果符号串x是从文法的识别符号推导出来的,则称符号串x是文法GS的句型。若符号串x还满足仅由终结符号组成的条件,则称x为GS的句子。一个句型的最左直接短语称为该句型的句柄。9、请说明有关规范句型的概念?答:最右推导,即推导的每一步都是替换当前句型最右边的非终结符,被称为规范推导,由规范推导得到的句型称为规范句型。10、请说明有关预测符号集的概念?答:产生式A预测符号集表示:在确定的自上而下的语法分析过程中,当需要替换的非终结符是A时,而当前需要匹配的终结符属于产生式A预测符号集中的符号,则能够采用该产生式进行推导。当不能推出时,产生式A预测符号集是的首符号集;当能推出时,产生式A预测符号集是的首符号集与A的后跟符号集的并集,但是不包括。11、简单说明LR分析器由那几部分组成?答:简单而言LR分析器由3部分组成,它们是:总控程序、分析表(ACTION表和GOTO表)和分析栈(符号栈和状态栈)。12、简单说明拓广文法、活前缀和可归前缀的概念?答:拓广文法:在原文法中增加一个产生式,得到的新文法称之为原文法的拓广文法;活前缀:在规范句型中,不包括该句型句柄右边符号的前缀称之为活前缀;可归前缀:活前缀与句柄有3种关系,:活前缀不含句柄的任何符号;:活前缀含有句柄的部分符号;:活前缀包含句柄的全部符号。包含句柄的全部符号的活前缀称之为可归前缀。13、请简单说明编译中的语义处理。答:编译中的语义处理是指两个功能:第一,审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义。有时把这个工作称为静态语义分析或静态审查。第二,如果静态语义正确,语义处理则要执行真正的翻译,即,或者将源程序翻译成程序的一种中间表示形式(中间代码),或者将源程序翻译成目标代码。14、编译程序所使用的中间代码经常见的有那几种形式?答:编译程序所使用的中间代码常见的有逆波兰记号、三元式、四元式和树形表示。15、简单说明代码优化的概念。答:所谓代码优化,实质上是对代码进行等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行速度加大或占用存储空间少,或两者都有。16、简单说明代码生成器的概念。答;代码生成器是把某种高级程序设计语言编写的程序经过语法、语义分析,或再经过优化后的中间代码作为输入,将其转换成特定机器的机器语言或汇编语言作为输出,这样的转换程序称为代码生成器。二、应用题(每题10分,共40分)1、文法G(S)的产生式为:SaAS,ASbA,AaA,Ab,Sa,请写出该文法的非终结符号集、终结符号集及文法的开始符号,根据文法画出句型aSbSbaAa的语法树,并且指出该句型的短语、直接短语和句柄?答:该文法的非终结符号集是S,A、终结符号集是a,b及文法的开始符号是S 句型aSbSbaAa的语法树为: 该句型的短语为:aA,SbaA, SbSbaAa, aSbSbaAa,a直接短语为:aA, a句柄为:aA2、正规式为:b(ab)*|bb)ba,请根据所列正规式,画出对应的NFA的状态转换图,并且将NFA确定化,画出对应的DFA的状态转换图。答: (1)正规式为:b(ab)*|bb)ba 对应的NFA的状态转换图如下: (2)利用转换矩阵将以上NFA确定化,转换矩阵如下: I IaIb12,3,4,72,3,4,756,854,76,8974,75878899 (3)将状态重新编号,NFA确定化后,生成DFA状态转换矩阵如下: ab011232437542656677 (4)DFA状态转换图如下: 3、请根据文法G写出所有产生式的预测符号集,并且判定该文法是否是LL(1)文法,如果是,请画出对应的预测符号表。文法G(S):SaBA ABa| BbB|a答:(1)求出各个产生式的预测符号集: Select(SaBA)=a Select(ABa)=b,a Select(A)=# Select(BbB)=b Select(Ba)=a (2) 由于Select(ABa) Select(A)= Select(BbB) Select(Ba)= 所以该文法是LL(1)文法。(3) 该文法对应的LL(1) 预测符号表如下: ab#SaBAABaBaBabB4、写出下面所列的文法的拓广文法,并且找出该拓广文法所有的项目,请构造识别该文法所有活前缀的NFA。 文法G(S):SSbBa|B Ba| 答:(1)该文法的拓广文法是: SS SSbBa|B Ba| (2) 该拓广文法所有的项目为: (0) S.S SS. S.SbBa SS.bBaSSb.Ba SSbB.aSSbBa. S.BSB. B.aBa. B. (3) 识别该文法所有活前缀的NFA如下: 5、根据以下文法,直接写出该文法的拓广文法和所有项目,构造项目集规范族及识别该文法所有活前缀的DFA,由识别该文法所有活前缀的DFA,判定该文法是否是LR(0)文法,如果是请构造相应的LR(0)分析表,通过查找 LR(0)分析表写出对于输入串ade#的分析过程。文法G(S):SABC Aa Bb Bd Ce答:(1)该文法的拓广文法是:SS SABC Aa Bb Bd Ce 该文法的所有项目:共计14个 S.S SS. S.ABC SA.BC SAB.C SABC. A.a Aa. B.b Bb. B.d Bd. C.e Ce. (2)直接构造项目集规范族及识别该文法所有活前缀的DFA,如下图所示: 从DFA可以看出项目集规范族中不存在移进与归约的冲突,也不存在归约与归约的冲突,所以可以判定该文法属于LR(0)文法 (3)由DFA直接构造相应的LR(0)分析表如下: 状态ACTIONGOTOabde#SABC0S5121ACC2S6S733S844r1r1r1r1r15r2r2r2r2r26r3r3r3r3r37r4r4r4r4r48r5r5r5r5r5 (4)通过查找LR(0)分析表,对于输入串ade#的分析过程如下:步骤状态栈符号栈输入串ACTION表GOTO表10#ade#S5205#ade#r22302#Ade#S74027#Ade#r435023#ABe#S860238#ABe#r5470234#ABC#r11801#S#acc专心-专注-专业
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!