当前位置:文档之家› 编译原理知识点总结哈工程

编译原理知识点总结哈工程

编译原理知识点总结哈工程
编译原理知识点总结哈工程

.

第一章概论

1.什么是编译器?输入输出?

编译器是将一种语言翻译为另一种语言的计算机程序。

输入:源语言( source language) 编写的程序

输出:目标语言( target language ) 编写的程序。

2.汇编语言的优缺点

优点:汇编语言大大提高了编程的速度和准确度

缺点:编写起来也不容易,阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写。

3.什么是解释器?与编译器的区别?

解释程序是如同编译器的一种语言翻译程序。

与编译器的区别:它立即执行源程序而不是生成在翻译完成之后才执行的目标代码。

4.乔姆斯基分类结构有几种文法?名称?相互关系?

4种

名称:

0型无限制文法

1型上下文相关文法

2型上下文无关文法

3型正则文法

相互关系:其中的每一个都是其前者的专门化。

5.什么是扫描器?扫描器的功能是什么?

扫描器就是语法分析程序。

功能:依据词法规则,分析由字符组成的源程序,把它分割为一个一个专业资料word

.

具有独立意义的最小语法单位,即单词。

6.什么是编辑器?IDE中编辑器的新功能

编译器通常接受由任何生成标准文件(例如ASCII 文件)的编辑器编写的源程序。

IDE 中编辑器的新功能:尽管编辑器仍然生成标准文件,但会转向正被讨论的程序设计语言的格式或结构。这样的编辑器称为基于结构的,且它早已包括了编译器的某些操作;因此,程序员就会在程序的编写时而不是在编译时就得知错误了。从编辑器中也可调用编译器以及

与它共用的程序,这样程序员无需离开编辑器就可执行程序。

7.什么是调试器,与编译器的关系

调试程序是可在被编译了的程序中判定执行错误的程序。

运行一个带有调试程序的程序与直接执行不同,这是因为调试程序保存着所有的或大多数源代码信息(诸如行数、变量名和过程)。它还可以在预先指定的位置(称为断点)暂停执行,并提供有关已调用的函数以及变量的当前值的信息。为了执行这些函数,编译器必须为调试程序提供恰当的符号信息。

8.编译器有哪几个功能模块?各模块的功能及输入输出

源代码

扫描程序记号

语法分析程序

语法树

语义分析程序常量表注释树中间代码生成符号表word 专业资料中间代码错误处理器.

.

9.编译器有哪几个辅助部件?功能?

(1)常量表:

存放在程序中用到的常量和字符串

(2)符号表:

与标识符有关:函数、变量、常量以及数据类型。

与编译器的所有阶段交互:扫描程序、分析程序或将标识符输入到表格中专业资料word

.

的语义分析程序。

(3)错误处理器

对源程序中错误的反应。

10.分析,综合

已将分析源程序以计算其特性的编译器操作归为编译器的分析部分,而将生成翻译代码时所涉及到的操作称作编译器的综合部分。当然,词法分析、语法分析和语义分析均属于分析部分,而代码生成却是综合部分。在优化步骤中,分析和综合都有。分析正趋向于易懂和更具有数学性,而综合则要求更深的专业技术。因此,将分析步骤和综合步骤两者区分开来以便发生变化时互不影响是很有用的。

11.前段,后端

将编译器分成了只依赖于源语言(前端)的操作和只依赖于目标语言(后端)的操作两部分。

12.遍

编译器发现,在生成代码之前多次处理整个源程序很方便。这些重复就是遍。

13.静态语义?哪几类?

程序的语义确定程序的运行,但是大多数的程序设计语言都具有在执行之前被确定而不易由语法表示和由分析程序分析的特征。这些特征被称作静态语义。

一般的程序设计语言的典型静态语义包括声明和类型检查。由语义分析程序计算的额外信息(诸如数据类型)被称为属性,它们通常是作为注释或“装专业资料word

.

。(”增加到树中还可将属性添加到符号表中)饰

代码生成器14.编译器中第一个考虑目标机的物理特性的模块是:

______

型图中|S T|S,T,H分别代表什么?15.T

|H|

翻译为语言S(编写的编译器将语言代表源语言)代表宿主语言语言H()) 代表目标语言T(

.T型图描述自举及移植的过程16

第二章词法分析

正则表达式三种基本操作选择,连结,重复(闭包)有穷自动机的组成元素专业资料word

.

开始状态,结束状态,状态转换函数

正则表达式

a.十六进制数字串

([0-9]|[A-F])+(x|X)

b.包含奇数个a或奇数个b

(b*ab*a)*ab*|(a*ba*b)*ba*

c.包含偶数个a或偶数个b

(a*ba*b)*a*|(b*ab*a)*b*

d.a或b必须成对出现

(aa|b)*(a|bb)*

从正则表达式到NFA (Thompson结构) (1)并置

(2)选择

重复(3)

专业资料word

.

DFA:

构成, A} ∑, T, S{S, 0 S:状态集合:字母表∑T:转换函数初始状态S:0接受状态A:

:NFA

NFA构成相同,且Σ可以有ε,转入状态可以是多个状态。∑={a, b, c} T=f SS={x, y, z} 例:=x A={y, z}

0f(y, b) = {y, z}

f(x, a) = {x, y} f(x, c) = {z}

a*ab*=a+b*

a*ab*b=a+b+

a*c

a+b*|a+b+|a*c

专业资料word

.

=a*(ab|c)

第三章上下文无关文法及分析

语法分析两类:自顶向下,自底向上。

自顶向下两类:递归下降,LL(1)分析。

文法的表示用BNF(巴克斯范式)形式表示。

二义性文法:

每一个字符串产生不同的分析树错

只要有一个字符串产生不同的分析树对

引起二义性的原因算的优先级:把具有相同优先权的算符归纳在一组中,并为每一种运(1)

优先权规定不同的规则。算的结合行:用基本情况代替递归,强制重复算符匹配一边的递运(2) 归。的悬挂问题:最近嵌套规则。lse (3)e 出现这三种情况就是二义性文法

不是二义性说明原因,是二义性举反例,画出两个不同的分析树。字符串最左推导,不要少步骤(每次只能对一个非终结符进行替换)。专业资料word

.

最左推导最右推导形成的分析树的特点:最左推导是前序遍历,最右推导是后序遍历的倒序??。

最左推导:是指它的每一步中最左的非终结符都要被替换的推导。最右推导:是指它的每一步中最右的非终结符都要被替换的推导。最左推导和与其相关的分析树的内部节点的前序编号相对应;而最右推导则和后序编号相对应。

句柄:一个句型的最左直接短语。(第五章,不考)

分析程序的功能及输入输出

功能:确定程序的语法

输入:由扫描程序生成的记号序列

输出:语法树

二义性文法及解决办法

可生成带有两个不同分析树的串的文法称作二义性文法。

解决方法:

(1)设置一个规则,该规则可在每个二义性情况下指出哪一个分析树(或语法树)是正确的。这样的规则称作消除二义性规则。

(2)将文法改变成一个强制正确分析树的构造的格式。

编译过程中,语法分析器的任务是

(1)分析单词串是如何构成语句和说明的

专业资料word

.

(2)分析语句和说明是如何构成程序的

(3)分析程序的结构

1) 终结符集合T。

2) 非终结符集合N(与T不相交)。

3) 产生式或文法规则A→α的集合P,其中A是N的一个元素,α

(T∪N)?中的一个元素(是终结符和非终结符的一个可为空的序列)。

4) 来自集合N的开始符号。

第四章自顶向下的分析

LL(1)的命名

第1个“L”指的是由左向右地处理输入

第2个“L”指的是它为输入串描绘出一个最左推导。

括号中的数字1意味着它仅使用输入中的一个符号来预测分析的方向。(先行一个符号)

递归下降分析:将一个非终结符A的文法规则看作将识别A的一个过程的定义。

消除左递归:

(1)简单直接左递归

普遍的直接左递归(2)

提取左因子:专业资料word

.

集定义:First由(X) X为一个文法符号(一个终结符或非终结符)或ε,则集合First 令终结符组成,此外可能还有ε,它的定义如下:。ε,则First (X) = {X}1. 若X是终结符或都包First (X)→X1 X2 . . . Xn ,2. 若X是非终结符,则对于每个产生式X, ), . . . First (X1 。若对于某个i < n,所有的集合含了First (X1 ) - {ε}。若所有集}) - {ε都包括了ε,则First (X) 也包括了First (XFirst (Xi ) i + 1ε。包括了ε,则First (X)也包括合First (X1 ), . . . , First (Xn )

Follow集定义:则是由终结符组成,此外可能,那么集合Follow(A)给出一个非终结符A $。还有Follow (A)的定义如下:集合Follow (A)中。是开始符号,则$就在1. 若A 中。}在Follow (A)Aγ,则First (γ) - {ε2. 若存在产生式B→αFollow 包括Follow (A)First (γ)中,则3. 若存在产生式B→αAγ,且在。(B)

LL(1)证明定理:i,≤n≤:1i,j和αA1. 在每个产生式→α| | . . . |α中,对于所有的i j n12为空。First (∩α)α≠j,First ( ) j i Follow ∩First (A)A若对于每个非终结符都有First (A) 包含了ε,那么2.

为空。(A)

自顶向下的基本原理:在最左推导中描述出各个步骤来分析记号串输入。专业资料word

.

自顶向下的关键问题:(which rules to use Ch4_2 P6)

(P114)

语义分析第六章

语义分析:计算编译过程所需的附加信息。

语义分析的分类(1)程序的分析,要求根据编程语言的规则建立其正确性,并保证其正确执行。

(2)由编译程序执行的分析,用以提高翻译程序执行的效率。

静态语义分析包括

(1)执行分析的描述

(2)使用合适的算法对分析的实现

属性:属性是编程语言结构的任意特性。属性在其包含的信息和复杂性等方面变化很大,特别是当它们能确定时翻译/执行过程的时间。属性的典型例子有:

? 变量的数据类型。

专业资料word

.

? 表达式的值。

? 存储器中变量的位置。

? 程序的目标代码。

? 数的有效位数。

联编:属性的计算及将计算值与正在讨论的语言结构联系的过程称作属性的联编。

联编时间:联编属性发生时编译/执行过程的时间称作联编时间。

执行之前联编的属性是静态的,

执行期间联编的属性是动态的。

在如C或Pascal这样的静态类型的语言中,变量或表达式的数据类型是一个重要的编译时属性。

表达式的值通常是动态的,编译程序要在执行时生成代码来计算这些值。

变量的分配可以是静态的也可以是动态的,这依赖于语言和变量自身的特性

FORTRAN77中所有的变量都是静态分配。

LISP中所有的变量是动态分配的。

C和Pascal语言混合了静态和动态的两种变量分配。

程序的目标代码无疑是一个静态属性。

数的有效位数在编译期间是一个不被明确探讨的属性。

属性文法:确定语言实体的属性或特性,它们必须进行计算并写成属性等式或语义规则,并描述这些属性的计算如何与语言的文法规则相关。这样专业资料word

.

的一组属性和等式称作属性文法。

符号表的主要操作:插入,查找,删除。

符号表的功能:

(1)建立存储信息

(2)类型检查

(3)数据地址

第七章运行时环境

运行时环境:目标计算机的寄存器以及存储器的结构,用来管理存储器并保存指导执行过程所需的信息。

几乎所有的程序设计语言都使用运行时环境的3个类型中的某一个,它的主要结构并不依赖于目标机器的特定细节。环境的这3个类型分别是:

FORTRAN77的完全静态环境。

像C、C++、Pascal以及Ada这些语言的基于栈的环境。

像LISP这样的函数语言的完全动态环境。

调用序列设计的重要方面有:

1)如何在调用程序和被调用程序之间分开调用序列操作(也就是有多少调用序列的代码放在调用点上,多少放在每个过程的代码开头);

2)在多大程度上依赖处理器对调用支持而不是为调用序列的每一步生成显式代码。

完全静态运行时环境:最简单的运行时环境类型是所有数据都是静态的,且执行程序期间在存储器中保持固定。这样的环境可用来实现没有指针或动态分配,且过程不可递归调用的语言。此类语言的标准例

编译原理期末复习

编译原理期末复习 鉴于编译原理马上就要期末考试,我将手中集中的一些资料上的题目进行了整理归类,每种类型题目给出了所涉及到的基本知识,然后对每类题目中的第一道例题进行了做法进行了讲解,剩下的例题请给大家作为练习,答案也都给出,希望对大家复习有所帮助,最后由于时间很紧,整理的有些仓促,整理中难免有遗漏或错误,请大家见谅。 注:下面出现的字母中,若无特别说明,小写英文字母为终结符,大写英文字母为非终结符,希腊字母为终结符与非终结符的任意组合。 1、简答题(或者名词解释) 下面涉及到的概念中,加下划线的都是在以往一些试卷中出现的原题,务必掌握。 注:这类题目老师说答案不会超过一百个字,否则写的再多也不给分,有些点到即可,不要重复啰嗦。(1)简述编译程序的概念及其构成 答:1)编译程序:它特指把某种高级程序设计语言翻译成等价的低级程序设计语言的翻译程序。 2)构成: (2)简述词法分析阶段的主要任务(也有可能问语法分析阶段主要任务)答:词法分析的任务是输入源程序,对源程序进行扫描,识别其中的单词符号,把字符串形式的源程序转换成单词符号形式的源程序。 语法分析的主要任务是对输入的单词符号进行语法分析(根据语法规则进行推导或者归约),识别各类语法单位,判断输入是不是语法上正确的程序 (3) 简述编译程序的构造过程(这个大家看看,是对(1)和(2)的综合) 答:1)构造词法分析器:用于输入源程序进行词法分析,输出单词符号; 2)构造语法分析器:对输入的单词符号进行语法分析,识别各类语法单位,判断输入是不是语法上正确的程序 3)构造语义分析和中间代码产生器:按照语义规则对已归约出的语法单位进行语义分析并把它们翻译成中间代码。 4)构造优化器:对中间代码进行优化。 5) 构造目标代码生成器:把中间的代码翻译成目标程序。 6) 构造表格管理程序:登记源程序的各类信息和编译各阶段的进展情况。 7)构造错误处理程序:对出错进行处理。 (4) 说明编译和解释的区别: 1)编译要程序产生目标程序,解释程序是边解释边执行,不产生目标程序; 2)编译程序运行效率高而解释程序便于人机对话。 (5)文法:描述语言语法结构的形式规则,一般用一个四元式表示: G=(V T,V N,S,P),其中V T:终结符集合(非空) V N:非终结符集合(非空),且V T ?V N=? S:文法的开始符号,S?V N P:产生式集合(有限)。

四川大学编译原理期末复习总结

一、简答题 1.什么是编译程序 答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。 将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。 2.请写出文法的形式定义 答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S) –其中Vn表示非终结符号 –Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ –S是开始符号, –P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*) 3.语法分析阶段的功能是什么 答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。确定整个输入串是否构成语法上正确的程序。 4.局部优化有哪些常用的技术 答:优化技术1—删除公共子表达式 优化技术2—复写传播 优化技术3—删除无用代码 优化技术4—对程序进行代数恒等变换(降低运算强度) 优化技术5—代码外提 优化技术6—强度削弱 优化技术7—删除归纳变量 优化技术简介——对程序进行代数恒等变换(代数简化) 优化技术简介——对程序进行代数恒等变换(合并已知量) 5.编译过程分哪几个阶段 答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。每个阶段把源程序从一种表示变换成另一种表示。 6. 什么是文法 答:文法是描述语言的语法结构的形式规则。是一种工具,它可用于严格定义句子的结构; 用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。 7. 语义分析阶段的功能是什么 答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码); 并对静态语义进行审查。 8.代码优化须遵循哪些原则 答:等价原则:不改变运行结果 有效原则:优化后时间更短,占用空间更少 合算原则:应用较低的代价取得较好的优化效果 9.词法分析阶段的功能是什么 答:

哈尔滨工程大学 优秀个人简历

两年以上工作经验 30岁 上海 139********(手机) wangrui@https://www.doczj.com/doc/ae6336957.html, 王瑞景观工程师 最近工作 公司:X X房地产开发行业:房地产开发职位:景观工程师 最高学历 学校:哈尔滨工程大学 学历:本科专业:通信工程 工作经验 公司:X X房地产开发2010/1--2017/5 职位:景观工程师 行业:房地产开发 部门:设计部 工作内容: 1、负责配合优化参数的修改; 2、负责****模块相应功能的调试和增强 3、负责产品需求分析、可行性分析,单板的硬件框架设计; 4、负责项目管理、进度控制、系统设计以及模块的分发、管理工作; 5、负责为投标项目撰写投标技术方案; 6、负责****局域网的组建及维护。 公司:X X房地产开发有 限公司 2009/1--2010/1 职位:景观设计师 行业:房地产开发 部门:设计部 工作内容: 1、负责协助上级领导完成设计供方的筛选、委托工自我评价 具有丰富的无线通信经验,参加过数 十个国内外大中型项目,例如: ***、***。熟悉短波、VHF、UHF、 微波等无线频段的传播特性,具备很 强的解决突发问题的能力。对工作具 有热情和投入的精神、具有团队合作 意识和很强的事业心。沟通能力强, 编程习惯好,可以承受在较大压力下 工作。 求职意向 到岗时间:一周以内 工作性质:全职 希望行业:房地产开发 目标地点:上海 期望月薪:面议/月 目标职能:景观工程师 语言能力 英语:熟练 听说:熟练 读写:熟练 证书 大学英语六级2007/6大学英语四级2006/12

作;2、负责参与项目前期的调研工作,归纳和整理规划设计条件;3、负责景观设计书的编制;4、负责监督工程的质量,控制工程进度5、负责参与景观工程的初步验收和竣工验收,审核工程质量验收并做好相关记录。 教育经历 学校:哈尔滨工程大学2005/9--2009/6 专业:通信工程本科

数据结构课程设计哈夫曼编码-2

数据结构课程设计哈夫曼编码-2

《数据结构与算法》课程设计 目录 一、前言 1.摘要 2.《数据结构与算法》课程设计任务书 二、实验目的 三、题目--赫夫曼编码/译码器 1.问题描述 2.基本要求 3.测试要求 4.实现提示 四、需求分析--具体要求 五、概要设计 六、程序说明 七、详细设计 八、实验心得与体会

前言 1.摘要 随着计算机的普遍应用与日益发展,其应用早已不局限于简单的数值运算,而涉及到问题的分析、数据结构框架的设计以及设计最短路线等复杂的非数值处理和操作。算法与数据结构的学习就是为以后利用计算机资源高效地开发非数值处理的计算机程序打下坚实的理论、方法和技术基础。 算法与数据结构旨在分析研究计算机加工的数据对象的特性,以便选择适当的数据结构和存储结构,从而使建立在其上的解决问题的算法达到最优。 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。 《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。 学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

编译原理知识点

1.解释程序:不生成目标代码 编译程序:生成目标代码 2.编译程序组成:8个 分析< 前端>:(词法分析程序、语法分析程序、语义分析程序、中间代码生成程序) 综合< 后端>:(代码优化程序、目标代码生成程序) 贯穿始末:表格管理程序、出错处理程序 3.文法四元组: 终结符号集合Vt 、非终结符号集合Vn、产生式集合P、识别符号(开始符号)S V T∩V N=Φ 文法-> 语言(推导、规约)唯一;语言-> 文法(凑规则)不唯一。 4.文法分类: 0型文法(短语结构文法):左侧至少含有一个非终结符 1型文法(上下文有关文法):左侧长度<= 右侧长度S->ε除外,S不能出现在右侧2型文法(上下文无关文法):左侧只能有一个非终结符( 语法分析) 3型文法(正规文法):A-> aB A->a 右线性;( 词法分析) A->Ba 或A->a 左线性(看非终结符位置) 5.A*=A0 ∪A+ A0 ={ε} !={ } =Φ空集 A+ =AA* =A*A 6.句型:符号串x是从识别符号S推导出来的,x称为一个句型 句子:x仅由终结符号组成,仅含终结符号的句型是一个句子 短语:子树的末端(叶子)从左至右连成的串(包括整棵语法树) 简单子树:只含有单层分枝的子树 直接短语( 简单短语):由简单子树的叶子组成 句柄:最左边的直接短语(不一定含终结符) 素短语:至少含有一个终结符的短语,并且除它自身之外不再含任何更小的素短语最左素短语:最左边的素短语 短语:P(相对于T、E)、P+T(相对于E)、i(相对于P、F)、P+T+i(相对于E)直接短语:P、i 句柄:P (最左边的直接短语) 素短语:P+T 、i (至少含有一个终结符的短语)最左素短语:P+T 7.二义性文法:有两个不同的最左推导或有两个不同的最右推导或能产生两棵语法树 8.文法产生式正规式 规则1 A→xB B→y A = xy

最新编译原理试题汇总+编译原理期末试题(8套含答案+大题集)

编译原理考试题及答案汇总一、选择 1.将编译程序分成若干个“遍”是为了_B__。 A . 提高程序的执行效率 B.使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指__C__。 A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。 C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等 3.中间代码生成时所依据的是 _C_。 A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 4.后缀式 ab+cd+/可用表达式__B_来表示。 A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d 6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。 A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析 7.词法分析器用于识别__C___。 A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符 8.语法分析器则可以发现源程序中的___D__。 A.( ) 语义错误 B.( ) 语法和语义错误 C.( ) 错误并校正 D.( ) 语法错误 9.下面关于解释程序的描述正确的是__B___。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3) 10.解释程序处理语言时 , 大多数采用的是__B___方法。 A.( ) 源程序命令被逐个直接解释执行 B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行 D.( ) 以上方法都可以 11.编译过程中 , 语法分析器的任务就是__B___。 (1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构 A.( ) (2)(3) B.( ) (2)(3)(4)C.( ) (1)(2)(3) D.( ) (1)(2)(3)(4) 12.编译程序是一种___C__。 A. ( ) 汇编程序 B.( ) 翻译程序 C.( ) 解释程序 D.( ) 目标程序 13.文法 G 所描述的语言是_C____的集合。 A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串 14.文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 3 型文法是___B__。 A. ( ) 短语文法 B.( ) 正则文法 C.( ) 上下文有关文法 D.( ) 上下文无关文法15.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 __D___。 A.( ) 句子 B.( ) 句型 C.( ) 单词 D.( ) 产生式

编译原理知识点总结 哈工程

第一章概论 1.什么是编译器?输入输出? 编译器是将一种语言翻译为另一种语言的计算机程序。 输入:源语言( source language) 编写的程序 输出:目标语言( target language ) 编写的程序。 2.汇编语言的优缺点 优点:汇编语言大大提高了编程的速度和准确度 缺点:编写起来也不容易,阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写。 3.什么是解释器?与编译器的区别? 解释程序是如同编译器的一种语言翻译程序。 与编译器的区别:它立即执行源程序而不是生成在翻译完成之后才执行的目标代码。 4.乔姆斯基分类结构有几种文法?名称?相互关系? 4种 名称: 0型无限制文法 1型上下文相关文法 2型上下文无关文法 3型正则文法 相互关系:其中的每一个都是其前者的专门化。 5.什么是扫描器?扫描器的功能是什么? 扫描器就是语法分析程序。 功能:依据词法规则,分析由字符组成的源程序,把它分割为一个一个具有独立意义的最小语法单位,即单词。 6.什么是编辑器?IDE中编辑器的新功能 编译器通常接受由任何生成标准文件(例如ASCII 文件)的编辑器编写的源程序。 IDE 中编辑器的新功能:尽管编辑器仍然生成标准文件,但会转向正被讨论的程序设计语言的格式或结构。这样的编辑器称为基于结构的,且它早已包括了编译器的某些操作;因此,程序员就会在程序的编写时而不是在编译时就得知错误了。从编辑器中也可调用编译器以及与它共用的程序,这样程序员无需离开编辑器就可执行程序。

7.什么是调试器,与编译器的关系 调试程序是可在被编译了的程序中判定执行错误的程序。 运行一个带有调试程序的程序与直接执行不同,这是因为调试程序保存着所有的或大多数源代码信息(诸如行数、变量名和过程)。它还可以在预先指定的位置(称为断点)暂停执行,并提供有关已调用的函数以及变量的当前值的信息。为了执行这些函数,编译器必须为调试程序提供恰当的符号信息。 8.编译器有哪几个功能模块?各模块的功能及输入输出 目标代码

编译原理复习整理(重点含答案)

1、给出下面语言的相应文法。L1={a n b n c i|n≥1,i≥0} 从n,i的不同取值来把L1分成两部分:前半部分是anbn:A→aAb|ab后半部分是ci:B→Bc|ε所以整个文法G1[S]可以写为:G1(S):S→AB;A→aAb|ab;B→cB|ε 3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。 (要求:先将正规式转化为NFA,再将NFA确定化,最小化)

4、对下面的文法G: E →TE ’ E ’→+E|ε T →FT ’ T ’→T|ε F →PF ’ F ’ →*F ’|ε P →(E)|a|b|∧ (1)证明这个文法是LL(1)的。 (2)构造它的预测分析表。 (1)FIRST(E)={(,a,b,^}FIRST(E')={+, ε}FIRST(T)={(,a,b,^}FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^}FIRST(F')={*,ε}FIRST(P)={(,a,b,^}FOLLOW(E)={#,)} FOLLOW(E')={#,)}FOLLOW(T)={+,),#}FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#}FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式: '→+'→'→'→E E T T F F P E a b ||*|()|^||εεε FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ

编译原理概念期末总结复习

翻译程序:把一种语言程序转换成另一种语言程序,且在功能上是相同的这样的程序。 编译程序:把高级语言转换成低级语言,且在功能上是相同的这样的程序。 解释程序:边解释边执行源程序的程序。区别:编译程序有中间代码,而解释程序没有。编译过程的五个阶段: 1、词法分析任务:对构成源程序的字符串进行扫描和分解,识别出一个个单词。 2、语法分析任务:在词法分析的基础上,根据语言规则,把单词符号串分解成各类语法 单位。 3、语义分析和中间代码产生任务:对语法分析所识别出的各类语法范畴,分析其含义, 并进行初步翻译。 4、优化任务:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效 的目标代码。 5、目标代码生成任务:把中间代码变换成特定机器上的低级语言代码。 编译程序的七个部分词法分析器,语法分析器、语义分析与中间代码产生器、优化器、目标代码生成器、表格管理和出错处理。 编译程序生成的五个办法:机器语言、高级语言、移植、自编译方式和使用工具自动生成。词法规则:指单词符号的形成规则。(也就是正规式) 语法规则:规定了如何从单词符号形成更大的结构。就是语法单位的形成规则。 空字:不包含任何符号的序列。 闭包: 中所有的符号组成的集合。 上下文无关文法是指:所定义的语法范畴是完全独立于这种范畴可能出现的环境的文法。上下文无关文法的四个组成部分:一组终结符号、一组非终结符号、一个开始符号和一组产生式。 终结符号也就是不可再分的基本符号。 非终结符号是用来代表语法范畴,表示一定符号串的集合。 开始符号是语言中我们最感兴趣的语法范畴。 产生式是定义语法范畴的书写规则。 句子:文法中从开始符号推导的终结符号串。 句型:从开始符号推导的符号串。 语言:文法中所有句子的集合。 程序语言的单词符号分为五种:关键字、标识符、常数、运算符和界符。 二元式表示:(种类,属性) 正规式的运算符有三种:或,连接和闭包。优先顺序是:闭包,连接,或。 DFA怎么识别字:若存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字是a,则称a可为DFA所识别。 DFA怎么识别空字:若DFA的初态结点同时又是终态结点,则空字可为DFA所识别。NFA怎么识别字:若存在一条从某一初态结点到终态结点的通路,且这条通路上所有弧的标记字依序连接成的字等于a,则称a可为NFA识别。 NFA怎么识别空字:若M的某些结点即是初态又是终态结点,或者存在一条从某个初态结点到某个终态结点的空通路,那么,空字可为M所识别。 语言的语法结构是用上下文无关文法描述的。 语法分析分为两类:自上而下分析法,自下而上分析法。 自上而下分析法面临的问题:1.文法的左递归问题。2.回溯3.成功可能是暂时的,产生虚假匹配。4.难于知道输入串中出错的确切位置。5.效率低,代价高。

数据结构课程设计哈夫曼编码(DOC)

《数据结构与算法》课程设计(2009/2010学年第二学期第20周) 指导教师:王老师 班级:计算机科学与技术(3)班 学号: 姓名:

《数据结构与算法》课程设计 目录 一、前言 1.摘要 2.《数据结构与算法》课程设计任务书 二、实验目的 三、题目--赫夫曼编码/译码器 1.问题描述 2.基本要求 3.测试要求 4.实现提示 四、需求分析--具体要求 五、概要设计 六、程序说明 七、详细设计 八、实验心得与体会

前言 1.摘要 随着计算机的普遍应用与日益发展,其应用早已不局限于简单的数值运算,而涉及到问题的分析、数据结构框架的设计以及设计最短路线等复杂的非数值处理和操作。算法与数据结构的学习就是为以后利用计算机资源高效地开发非数值处理的计算机程序打下坚实的理论、方法和技术基础。 算法与数据结构旨在分析研究计算机加工的数据对象的特性,以便选择适当的数据结构和存储结构,从而使建立在其上的解决问题的算法达到最优。 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。 《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。 学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 2.《数据结构与算法》课程设计任务书 《数据结构与算法》是计算机专业重要的核心课程之一,在计算机专业的学习过程中占有非常重要的地位。《数据结构与算法课程设计》就是要运用本课程以及到目前为止的有关课程中的知识和技术来解决实际问题。特别是面临非数值计算类型的应用问题时,需要选择适当的数据结构,设计出满足一定时间和空间限制的有效算法。 本课程设计要求同学独立完成一个较为完整的应用需求分析。并在设计和编写具有一定规模程序的过程中,深化对《数据结构与算法》课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使自己的程序设计与调试水平有一个明显的提高。

编译原理知识点汇总

编译原理的复习提纲 1.编译原理=形式语言+编译技术 2.汇编程序: 把汇编语言程序翻译成等价的机器语言程序 3.编译程序: 把高级语言程序翻译成等价的低级语言程序 4.解释执行方式: 解释程序,逐个语句地模拟执行 翻译执行方式: 翻译程序,把程序设计语言程序翻译成等价的目标程序 5.计算机程序的编译过程类似,一般分为五个阶段: 词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成 词法分析的任务: 扫描源程序的字符串,识别出的最小的语法单位(标识符或无正负号数等) 语法分析是: 在词法分析的基础上的,语法分析不考虑语义。语法分析读入词法分析程序识别出的符号,根据给定的语法规则,识别出各个语法结构。 语义分析的任务是检查程序语义的正确性,解释程序结构的含义,语义分析包括检查变量是否有定义,变量在使用前是否具有值,数值是否溢出等。

语法分析完成之后,编译程序通常就依据语言的语义规则,利用语法制导技术把源程序翻译成某种中间代码。所谓中间代码是一种定义明确、便于处理、独立于计算机硬件的记号系统,可以认为是一种抽象机的程序 代码优化的主要任务是对前一阶段产生的中间代码进行等价变换,以便产生速度快、空间小的目标代码 编译的最后一个阶段是目标代码生成,其主要任务是把中间代码翻译成特定的机器指令或汇编程序 编译程序结构包括五个基本功能模块和两个辅助模块 6.编译划分成前端和后端。 编译前端的工作包括词法分析、语法分析、语义分析。编译前端只依赖于源程序,独立于目标计算机。前端进行分析 编译后端的工作主要是目标代码的生成和优化后端进行综合。独立于源程序,完全依赖于目标机器和中间代码。 把编译程序分为前端和后端的优点是: 可以优化配置不同的编译程序组合,实现编译重用,保持语言与机器的独立性。 7.汇编器把汇编语言代码翻译成一个特定的机器指令序列 第二章 1.符号,字母表,符号串,符号串的长度计算P18,子符号串的含义,符号串的简单运算XY,Xn, 2.符号串集合的概念,符号串集合的乘积运算,方幂运算,闭包与正闭包的概念P19,P20A0 ={ε} 3.重写规则,简称规则。非xx(V

哈工大钢结构设计原理08试题

哈工大2008 年 春 季学期 钢结构基本原理及设计 试 题 一、 填空题:(每空1分,共20分) 1、 计算结构或构件的强度、稳定性以及连接的强度时,应采用荷载的 设计值;计算疲劳时,应采用荷载的 标准 值。 2、 钢材Q235B 中,235代表 屈服点 ,按脱氧方法该钢材属于 镇静 钢。 3、 对于普通碳素钢,随含碳量的增加,钢材的屈服点和抗拉强度 增高 , 塑性和韧性 下降 ,焊接性能 变差 。 4、当采用三级质量受拉斜对接焊缝连接的板件,承受轴心力作用,当焊缝轴 线与轴心力方向间夹角满足 tan 1.5θ≤ ,焊缝强度可不计算 。 5、钢材的选用应根据结构的重要性 荷载特征、连接方法、工作环境、应力状态、钢材厚度 等因素综合考虑,选用合适的钢材。 6、钢材受三向同号拉应力作用,数值接近,即使单项应力值很大时,也不易 进入 塑性 状态,发生的破坏为 脆性 破坏。 7、 某梯形钢屋架,屋脊处应设 刚性 性系杆,该系杆按 受压 杆设计。 8、 轴心受压柱的柱脚底板厚度是按底板的 受弯 受力工作确定的。 9、 如下图突缘式支座加劲肋,应按承受支座反力的轴心受压构件计算梁平面外 (绕Z 轴)稳定,钢材Q235钢, 此受压构件截面面积值为 2960mm 2 , 其长细比为 21.07 10、 格构式轴心受压构件绕虚轴的稳定计算采用换算长细比是考虑剪切变形 的影响。 11、实腹式单向偏心受压构件的整体稳定,分为弯矩 作用平面内 的稳定和 弯矩 作用平面外 的稳定。 二、 单项选择题(每题2分,共16分) 1、对于Q235钢板,其厚度越大 D 。 1 1 10

编译原理中重点整理

1.翻译程序:将某一种语言(源语言)程序转换为与其逻辑上等价的另一种语言(目标语言) 程序。 编译程序:源语言为高级语言,目标语言为汇编语言或机器语言的翻译程序。 汇编程序:源语言为汇编语言,目标语言为机器语言的翻译程序。 解释程序:源语言程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。 2.解释器与编译器的主要区别在于:运行目标程序时的控制权在解释器而不在目标程序。 3.编译程序的工作过程可划分五个阶段: ①词法分析:从左到右一个字符一个字符的读入源程序,对构成源程序的字符串进行扫描 和分解,从而识别出一个个单词(也称单词符号或简称符号) ②语法分析:在词法分析的基础上将单词序列分解成各类语法短语,如“程序”,“语句”, “表达式”等等 ③语义分析和中间代码生成:语义分析是在语法分析程序确定出语法短语后,审查有无语义 错误,并为代码生成阶段收集类型信息。完成语法分析和语义 处理工作后,编译程序将源程序变成一种内部表示形式,这种 内部表示形式叫做中间语言或称中间代码,它是一种结构简单、 含义明确的记号系统。 ④代码优化:为了使生成的目标代码更为高效,可以对产生的中间代码进行变换或进行改造, 这就是代码的优化。 ⑤目标代码生成:目标代码生成阶段的任务就是是把中间代码变换成特定机器上的绝对指令 代码或可重定位的指令代码或汇编指令代码。 4.前端(Front-End)——与目标机无关的部分 后端(Back-End )——与目标机有关的部分 5.编译系统:编译程序与运行系统合称编译系统 6.遍:对源程序或源程序的中间结果从头到尾扫描一次,并做有关的加工处理,生成新的中 间结果或目标程序。 7.文法是一个四元组:G[S]=(VN, VT, P, S) VN:非终结符集合; VT :终结符集合; P :产生式集合(α→β或α∷=β); S :开始符号(或称根符号,识别符号)。 若S ->α,α∈V*,则称α为文法G的句型 若S ->α,α,α∈VT*,则称α为文法G的句子 语言是所有句子构成的集合,它是所有终结符号串所组成的集合VT*的子集,即L(G) VT* 8.0型文法又叫短语文法,它所确定的语言称为0型语言。 1型文法,上下文敏感文法或上下文有关文法。 2型文法,上下文无关文法 3型文法线性文法、正则文法或正规文法 规范(最右)推导即任何一步α->β都是对α中的最右非终结符进行替换的,规范(最左)归约文法可唯一地确定一个语言 子树与短语:在句型所对应的语法树中,若某些符号按从左到右的顺序组成某棵子树的末端结点,那么由这些末端结点所组成的符号串是相对于子树根结点的短语。 原则上语法树有多少棵子树,就有多少个短语。

编译原理学习心得

编译原理学习心得 编译原理学习心得1 编译程序在计算机科学与技术的发展历史中发挥了巨大作用,是计算机系统的核心支撑软件。而“编译原理”这门课程一直以来是国内外大学计算机相关专业的重要课程。因为它的知识结构贯穿程序设计语言、系统环境以及体系结构,能以相对的视角体现从软件到硬件以及软硬件协同的整机概念。其理论基础又涉及形式语言与自动机、数据结构与算法等计算机学科的许多重要方面,为联系计算机科学理论和计算机系统的典范。 虽然编译原理这门课程在大多数的人里认为枯燥无味,学起来就像看天书一样。然而学习这门课程还是有一定的好处的。比如可以更加容易的理解在一个语言种哪些写法是等价的,哪些是有差异的,可以更加客观的比较不同语言的差异,并且学习新的语言的效率也会更加高,语言转换也会更加游刃有余。 不学“编译原理”这门课程的话,自己的编程思想会很浅显。而且编程也只仅仅停留在编程上,无法深入理解其中的原理。 学习编译原理的话,从文法、正规式、NFA与DFA的定义,下手,要用心动脑去体会 编译原理学习心得2

从联系最紧密的操作系统来说吧,你写多线程/多进程的程序就得和操作系统的知识打交道。写多线程得加锁吧,临界区、死锁的四个条件之类的标准的操作系统的内容吧(不得不吐槽一下,某国内一线电商干了三年的程序猿,写多线程居然不知道加锁,也是醉了)。进程间通信的几种方式什么管道、socket、共享内存等,这也是操作系统的内容吧。文件系统,这也是经常要打交道的东西。还有内存什么的,你做Android 开发,这些里边有很多东西都在系统层面被封装好了,但是你要是不知道原理,一旦出了错根本无从调试,况且你该不会打算写一辈子写Android 就是填逻辑吧。 然后,是编译原理,普通的程序猿是接触不到编译器或者虚拟机的开发的。但是这并不意味着编译原理就用不到。说个最常见的读取配置文件,只要你的配置文件有自定义的语法,你就要用编译原理的东西。还有类似于自动生成代码啦、正则表达式啦这些都算是编译原理的内容。你既然是写Java 的不了解虚拟机怎么可以,最基本的字节码总是需要能看懂的吧,分析一些疑难杂症的时候字节码还是很有用的。 最后,是计算机原理,如果只是做应用开发的话计算机原理其实不必要掌握的多深入,但是一些基本的概念还是要清楚的。比如寄存器、缓存、中断什么的,关键的时候可以帮助你调试。在一些对性能要求非常高的场合,也是很有作用的。此外,学了

哈工程各个专业的详细介绍

各个专业的详细介绍: 1.船舶与海洋工程专业——专业简介 本专业始于中国人民解放军军事工程学院(简称“哈军工”)的海军工程系舰船设计专业。始终保持军工特色,设有船舶性能、船舶结构、船舶设计、潜器设计、海洋工程5个专业方向。本专业涉及面广,除数学、力学外,主要还有船舶与海洋工程水动力学、船舶与海洋工程结构力学、计算机科学、材料科学、机械制造学、焊接技术及管理工程等学科。 开设的主要课程:理论力学、材料力学、船舶与海洋工程流体力学、船舶与海洋工程结构力学、船舶与海洋工程静力学、船舶与海洋工程结构物阻力与推进、船体制造工艺、船舶设计与海洋工程结构物设计原理、船舶与海洋工程结构物强度与结构设计、计算机原理及应用、机械设计、电工电子技术等。 迄今为止,本专业已为我国船舶工业培养本科生5100余人。本专业具有世界先进水平的实验设备和测试手段,拥有大型实验室,其中“风、浪、流海洋环境模拟水池(50米×50米×30米)”拥有国内唯一的X—Y航车系统,“船模实验水池”长110米,配备有三维多板造波机、大型四自由度适航仪等先进设备,是ITTC成员单位;“工程结构实验室”为世界银行贷款建设;船舶CAD/CAM实验室拥有各类主流大型造船工程应用软件和结构分析软件,为广船国际等大型造船企业设立tribon软件培训中心。本专业是国内高校首家通过英国皇家造船师协会(RINA)的评估和认证的本科专业,每年提供20名免费学生会员名额,标志着本专业的教学和实验水平得到国际认同。挪威DNV船级社、法国BV船级社、日本NK船级社等国际主要的船级社和英国皇家造船师协会(RINA)在该专业设立奖学金。近年来,本专业与美国休斯敦“能源谷”紧密联系,共同创建了“深海工程技术研究中心”,目前该中心已入围我国“111工程”计划。2006年《科技时报》评选本专业全国综合排名第一。 本专业一些分支学科的研究水平和人才培养已达到国际先进水平。历年毕业生就业统计数据表明,本专业毕业生主要到与船舶和海洋工程有关的公司及国家各部委机关,以及沿海沿江各船舶设计院、研究所和造船骨干企业工作,部分取得留学资格,被选送到美国、加拿大、英国、挪威、德国、日本、希腊等国留学深造。本专业将为有志于我国船舶事业、海洋开发事业的青年提供一流的学习环境,完备的科学研究设施。 2.港口航道与海岸工程(暂无详细介绍) 3.土木工程专业介绍 培养掌握工程力学、流体力学、岩土力学和结构设计的基本理论和基本知识,具备从事土木工程项目的规划、设计、研究开发、施工及管理的能力,能在房屋建筑工程、公路与城市道路工程、桥梁工程、隧道与地下工程、机场工程等方面从事设计、研究、施工、教育、管理、投资和技术开发的高级工程技术人才。 开设的主要课程:理论力学、材料力学、结构力学、岩土力学、流体力学、混凝土结构、砌体结构、钢结构、房屋建筑学、土木工程施工技术、土木工程施工预算、工程

计算机题库编译原理试题汇总

编译原理考试题及答案汇总 一、选择 1.将编译程序分成若干个“遍”是为了_B__。 A . 提高程序的执行效率 B.使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指__C__。 A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。 C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等 3.中间代码生成时所依据的是 _C_。 A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 4.后缀式 ab+cd+/可用表达式__B_来表示。 A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d 6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。 A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析 7.词法分析器用于识别__C___。 A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符 8.语法分析器则可以发现源程序中的___D__。 A.( ) 语义错误 B.( ) 语法和语义错误 C.( ) 错误并校正 D.( ) 语法错误 9.下面关于解释程序的描述正确的是__B___。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3) 10.解释程序处理语言时 , 大多数采用的是__B___方法。 A.( ) 源程序命令被逐个直接解释执行 B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行 D.( ) 以上方法都可以 11.编译过程中 , 语法分析器的任务就是__B___。

编译原理习题及答案(整理后)

第一章 1、将编译程序分成若干个“遍”是为了。 b.使程序的结构更加清晰 2、构造编译程序应掌握。 a.源程序b.目标语言 c.编译方法 3、变量应当。 c.既持有左值又持有右值 4、编译程序绝大多数时间花在上。 d.管理表格 5、不可能是目标代码。 d.中间代码 6、使用可以定义一个程序的意义。 a.语义规则 7、词法分析器的输入是。 b.源程序 8、中间代码生成时所遵循的是- 。 c.语义规则 9、编译程序是对。 d.高级语言的翻译 10、语法分析应遵循。 c.构词规则 二、多项选择题 1、编译程序各阶段的工作都涉及到。 b.表格管理c.出错处理 2、编译程序工作时,通常有阶段。 a.词法分析b.语法分析c.中间代码生成e.目标代码生成 三、填空题 1、解释程序和编译程序的区别在于是否生成目标程序。 2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。 4、编译程序是指将源程序程序翻译成目标语言程序的程序。

一、单项选择题 1、文法G:S→xSx|y所识别的语言是。 a. xyx b. (xyx)* c. x n yx n(n≥0) d. x*yx* 2、文法G描述的语言L(G)是指。 a. L(G)={α|S+?α , α∈V T*} b. L(G)={α|S*?α, α∈V T*} c. L(G)={α|S*?α,α∈(V T∪V N*)} d. L(G)={α|S+?α, α∈(V T∪V N*)} 3、有限状态自动机能识别。 a. 上下文无关文法 b. 上下文有关文法 c.正规文法 d. 短语文法 4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立。 a. 若f(a)>g(b),则a>b b.若f(a)

编译原理复习要点

考试安排:7月13日(20周周三),15:00-17:00,20208 填空10X1分、选择10X2分、简答4X5分、大题5X10分 考试大题:循环优化 LL(1).定义之类的 算符优先算法 … 自下而上分析法(20分,选择、填空、大题) 第一章引论 一.编译程序(compiler): 把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序 二.编译程序的工作的五个阶段: 词法分析、语法分析、中间代码产生、优化、目标代码产生 1.词法分析 任务: 输入源程序, 符号。 依循的原则:构词规则 描述工具:有限自动机 保留字标识符等符整常数保留字整常数保留字 2.语法分析 任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。 依循的原则:语法规则 述工具:上下文无关文法 3.语义分析与中间代码产生 任务:对各类不同语法范畴按语言的语义进行初步翻译。(变量是否定义、类型是否正确等) 依循的原则:语义规则 中间代码:三元式,四元式,逆波兰记号,树形结构等。是一种独立于具体硬件的记号系统。 例:将Z:=X + 0.618 * Y 翻译成四元式为 (1) * 0.618 Y T1 (2) + X T1 T2 (3) := T2 _ Z 4. 优化 任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效 的目标代码。 依循的原则:程序的等价变换规则 FOR K:=1 TO 100 DO BEGIN M := I + 10 * K;

N := J + 10 * K; END 4.目标代码产生 任务: 把中间代码变换成特定机器上的目标代码。 依赖于硬件系统结构和机器指令的含义 目标代码三种形式: a)绝对指令代码: 可直接运行 b)可重新定位指令代码: 需要连接装配 c)汇编指令代码: 需要进行汇编 三. 编译程序结构 编译程序总框 (简答题5分) 第二章高级语言及其语法描述 2.1.1语法 词法规则:单词符号的形成规则。 a)单词符号是语言中具有独立意义的最基本结构。一般包括:常数、标识符、基 本字、算符、界符等。 b)描述工具:正规式和有限自动机 语法规则:语法单位的形成规则。 a) 语法单位通常包括:表达式、语句、分程序、过程、函数、程序等; c)描述工具:上下文无关文法 2.1.2语义 语义:一组规则,用它可以定义一个程序的意义。 描述方法: a)自然语言描述:隐藏错误、二义性和不完整性 b)形式描述: ?无二义性 ?完整性

编译原理期末考试选择题汇总

一、单项选择题 1、将编译程序分成若干个“遍”是为了( B ) A.提高程序的执行效率 B. 使程序的结构更加清晰 C.利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2、不可能是目标代码的是( D ) A.汇编指令代码 B.可重定位指令代码 C.绝对指令代码 D.中间代码 3、词法分析器的输入是( B ) A.单词符号串 B.源程序 C.语法单位 D.目标程序 4、编译程序中的语法分析器接受以 c 为单位的输入,并产生有关信息供以后各阶段使用。 可选项有:a、表达式 b、产生式 c、单词 d、语句 5、高级语言编译程序常用的语法分析方法中,递归下降分析法属于 b 分析方法。 可选项有:a、自左至右 b、自顶向下 c、自底向上 d、自右向左 6、已知文法G[E]:E→TE’ E’ →+TE’∣ε T→FT’ T’ →*FT’∣ε F→(E)∣id 求:FOLLOW(F)=(1) d , FIRST(T’)=(2) b 可选项有: a、{*,+} b、{*,ε} c、{+,#,)} d、{*,+,#,)} e、{#,)} f、{*,+,#,id} 7、中间代码生成时所遵循的是( C ) A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 8、编译程序是对( D ) A.汇编程序的翻译 B.高级语言程序的解释执行 C.机器语言的执行 D.高级语言的翻译 9、词法分析应遵循( C ) A.语义规则 B.语法规则 C.构词规则 D.等价变换规则 10、词法分析器的输出结果是( C ) A.单词的种别编码 B.单词在符号表中的位置 C.单词的种别编码和属性值 D.单词属性值 11、正规式M1和M2等价是指( C ) A.M1和M2的状态数相等 B.M1和M2的有向弧条数相等

相关主题
文本预览
相关文档 最新文档