第3章 语法分析_文法与推导
- 格式:ppt
- 大小:213.00 KB
- 文档页数:32
第三章语法分析典型例题 :单项选择题3.1.1. 文法 G: S-xSxly 所识别的语言是 _____ (陕西省 1997 年自考题)a. xyxb. (xyx)*c. xnyxn(n ≥ 0)d. x*yx*3.1.2. 文法 G 描述的语言 L(G) 是指 _____ 。
a. L(G)= {α |S=α,α ∈ VT* }b. L(G)={ α |SA=α , α ∈ VT* }c .L(G)={ α |S=α,α∈ (VT ∪ VN)* } d. L(G)= {α |S=α , α∈ (VT ∪ VN)* }3.1.3. 有限状态自动机能识别_。
a. 上下文无关文法b. 上下文有关文法c. 正规文法d. 短语文法3.1.4. 设 G 为算符优先文法, G 的任意终结符对 a, b 有以下关系成立 ____ 。
a. 若 f(a)g(b) ,则 a bb. 若 f(a)<g(b) ,则 a<bc.a~b 都不一定成立d. a~b 一定成立3.1.5 .茹果文法 G 是无二义的,则它的任何句子α _ _。
(西电 1999 年研究生试题)a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同3.1. 6. 由文法的开始符经。
步或多步推导产生的文法符号序列是 ____ 。
(陕西省 2000 年自考题)a .短语 b. 句柄 c. 句型 d. 句子3.1.7 .文法 G : E-E+TITT-T*P|PP-(E)|I则句型 P+T+i 的句柄和最左素短语分别为 __ _。
a. P+T 和 ib. P 和 P+Tc. i 和 P+T+id. P 和 P3.1.8 .设文法为: S--SA|AA→a|b则对句子 aba ,下面 ____ 是规范推导.a. S=SA=SAA=AAA=aAA=abA=abab. S=SA=SAA=AAA=AAa= Aba =abac. S=SA=SAA=SAa=Sba= Aba =abad. S=SA=Sa=Sba= Aba =aba3.1.9. 文法G: S → b| ∧ |(T)T-T,SIS则 FIRSTVT(T)=____ 。
Lw.《编译原理》课后习题答案第一章第1章引论第1题解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍答案:(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。
(2)源程序:源语言编写的程序称为源程序。
(3)目标程序:目标语言书写的程序称为目标程序。
(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。
通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。
(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。
(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。
第2题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。
答案:一个典型的编译程序通常包含8个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。
其各部分的主要功能简述如下。
词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。
语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。
语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。
中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。
中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。
盛威网()专业的计算机学习网站1《编译原理》课后习题答案第一章目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。
表格管理程序:负责建立、填写和查找等一系列表格工作。
编译原理答案(前三章)第 1 章引论第 1 题解释下列术语:答案:(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。
(2)源程序:源语言编写的程序称为源程序。
(3)目标程序:目标语言书写的程序称为目标程序。
(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。
通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。
(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。
(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。
第 2 题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。
答案:一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。
其各部分的主要功能简述如下。
词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。
语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。
语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。
中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。
中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。
目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。
表格管理程序:负责建立、填写和查找等一系列表格工作。
表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。
2-3 习题(含解答)目录第1章编译原理概述 (1)第2章PL/O编译程序的实现 (4)第3章文法和语言 (4)第4章词法分析 (13)第5章自顶向下语法分析方法 (28)第6章自底向上优先分析 (39)第7章LR分析 (42)第8章语法制导翻译和中间代码生成 (60)第9章符号表 (67)第10章目标程序运行时的存储组织 (70)第11章代码优化 (73)第12章代码生成 (76)综合练习一 (79)综合练习二 (84)综合练习三 (90)综合练习四 (95)综合练习五 (101)综合练习六 (107)第1章编译原理概述一、选择题1.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 (1) 。
其中, (2) 和代码优化部分不是每个编译程序都必需的。
词法分析器用于识别 (3) ,语法分析器则可以发现源程序中的 (4) 。
(1) A.模拟执行器 B.解释器 C.表格处理和出错处理 D.符号执行器(2) A.语法分析 B.中间代码生成 C.词法分析 D.目标代码生成(3) A.字符串 B.语句 C.单词 D.标识符(4) A.语义错误 B.语法和语义错误 C.错误并校正 D.语法错误2.程序语言的语言处理程序是一种 (1) 。
(2) 是两类程序语言处理程序,他们的主要区别在于 (3) 。
(1) A.系统软件 B.应用软件 C.实时系统 D.分布式系统(2) A.高级语言程序和低级语言程序 B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序(3) A.单用户与多用户的差别 B.对用户程序的查错能力C.机器执行效率D.是否生成目标代码3.汇编程序是将翻译成,编译程序是将翻译成。
A.汇编语言程序B.机器语言程序C.高级语言程序D. A 或者BE. A 或者CF. B或者C4.下面关于解释程序的描述正确的是。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. (1)(2)B. (1)C. (1)(2)(3)D.(2)(3)5.高级语言的语言处理程序分为解释程序和编译程序两种。
复习汇总一、第一章概述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) 编译程序可以将用高级语言编写的源程序转换成与之在逻辑上等价的目标程序,而目标程序可以是汇编语言程序或机器语言程序。
故选A。
(2) 分多遍完成编译过程可使整个编译程序的逻辑结构更加清晰。
故选B。
(3) 构造编译程序应掌握源程序、目标语言和编译方法这三方面内容。
故选D。
(4) 编译各阶段的工作都涉及到构造、查找或更新有关表格,即编译过程的绝大部分时间都用在造表、查表和更新表格的事务上。
故选D。
(5) 由(1)可知,编译程序实际上实现了对高级语言程序的翻译。
故选D。
第二章词法分析【解答】(1) 由教材第一章1.3节中的词法分析,可知词法分析所遵循的是语言的构词规则。
故选B。
(2) 词法分析器的功能是输入源程序,输出单词符号。
故选B。
(3) 词法分析器输出的单词符号通常表示为二元式:(单词种别,单词自身的值)。
故选B。
(4) 由S→xSx | y可知该文法所识别的语言一定是:y左边出现的x与y 右边出现的x相等。
故选C。
(5) 虽然选项A、B、D都满足题意,但选项D更准确。
故选D。
(6) 3型文法即正规文法,它的识别系统是有限状态自动机。
故选C。
(7) NFA可以有DFA与之等价,即两者描述能力相同;也即,对于任一给定的NFA M,一定存在一个DFA M',使L(M)=L(M′)。
故选B。
(8) DFA便于识别,易于计算机实现,而NFA便于定理的证明。
故选C。
(9) 本题虽然是第二章的题,但答案参见第三章3.1.3节。
即选C。
第三章语法分析【解答】(1) 参见第四章4.1.1节,语义分析不像词法分析和语法分析那样可以分别用正规文法和上下文无关文法描述,由于语义是上下文有关的,因此语义分析须用上下文有关文法描述。
即选B。
(2) 2型文法对应下推自动机。
故选C。
(3) 由于不存在:3型语言 2型语言 1型语言 0型语言。
故选D。
(4) 最左简单子树的末端结点组成的符号串为句柄。