一、填空
1、预测分析方法LL(1)方法,它由一个栈,一个 和一个 组成。其中构造 是该分析方法的关键。
2、下面图 是一个DFA,而图 是一个NFA
3、词法分析器的任务是对 进行扫描,以 为依据识别出一个个单词符号。
4、使用算符优先法的先决条件是 。
5、词法分析方法分为两大类,算符优先分析法属于 的分析方法,LR分析法、方法属于 分析方法,而递归下降分析方法(LL(1)分析方法)属于 分析方法。
6、规范推导指的是 推导,规范规约是关于句型2的一个 推导的逆过程。
7、循环优化中的代码外提是指 ,强度削弱是指 。
8、∮生成一个无递归的预测分析器,其文法∮求一是 ,二是 。
9、控制流检查,其目的合格证 有合法的转向点;而一致性检查,则是检查 在相同的作用域内只能说明一次。
10、一个程序设计语言是由 和 两方面来定义的。
11.编译程序从执行的方式上讲,它可以分为编译方式和 方式,其中 方式要生成目标代码。
12.编译程序通常分为5个阶段,它们是词法分析阶段、语法分析阶段、 阶段、 阶段和目标代码生成阶段。
13.设文法G=(VT,NN,S,P)是一个四方式,其中P集合,它的每个元素的形式为 。
14.语法分析分为 的分析方法和 的分析方法,其中递归下降分析方法是一种 分析方法。
15.在递归下降分析方法中,试探分析方法中之所以要不断用一个产生式的多个候选进行逐个试探,最根本的原因是这些候选式 (备选:只有一个/ 可有多个)。
16.算符优先分析法是一种 的分析方法,它适合于分析各种程序设计语言中的 ,并宜于手工实现。
17.目前最广泛使用的无回溯的“移进一归约”方法是 分析方法。
18.词法分析器的输入是 ;其输出是 。
19.DFA和NFA的主要区别有三点,它们是(1) ;(2) ;(3) 。
20.循环优化中的代码外提是指 ;强度被削弱指 。
21、编译器是一种翻译程序,它用于将_______语言程序翻译为_______语言程序。后者通常以目标代码的形式出现,在windows操作系统平台下,这种代码文件的扩展名通常为.obj。通常还要经过进一步的连接,生成可执行文件。通常有两种方式进行这种翻译,一种是编译,另一种是__________。这种方式并不生成可执行文件。这两种方式相比_______(前者/后者)程序运行的速度更快。
22、在编译的五个阶段中,分析的任务是识别源程序中的单词符号,编译程序中实现这部分功能的部分一般称为,它通常在编译器中作为_________供语法分析程序在需要单词符号时调用。在这一编译阶段中发现的源程序错误,称为_________错误。
23、在计算机发展的早期阶段,内存较小的不能一次完成程序的编译。这时通常将编译过程分成若干______来完成。每一_______完成一部分功能。
24、一个语言的字母为{a,b},则字符串ab的前缀有__、、,其中____不是真前缀。
25、字符串的连接运算一般(满足/不满足)交换率。
26、文法是一个四元组,或者说由四个元素构成,即______、、开始符号、。
27、产生式S→Sa|a产生的语言为____________。
28、乔姆斯基(Chomsky)将文法分为四类,即0型文法、文法、文法、文法。
29、如果文法G的一个句子存在两棵不同的语法分析树,则这个文法是(二义的,非二义的,无法判断是否是二义的)。
30、A为非终结符,如果文法存在产生式,则称可以(推导出/归纳为),称可_______(推导出/归约为)。
31、为了方便语法分析程序的使用,词法分析过程中通常对所识别出的单词符号进行分类。以C语言为例,其中int、float等单词通常归入_______类,而‘+’、‘-’、‘’、‘/’等符号归入________类。
32、与采用高级程序设计语言写的词法分析器相比,用汇编语言写的词法分析通常分析速度要_________(快/慢)一些。
33、确定有限自动机_______(是/不是)非确定有限自动机的特例;对任一非确定有限自动机______(能/不能)找到一个与之等价的确定有限自动机。
34、有限自动机中两个状态S1和S2是等价的是指无论是从S1还是S2出发,停于_____时,所识别的_______的集合相同。
35、通常用正规文法或正规式来描述程序设计语言的词法规则,而使用______来描述程序设计语言的语法规则。
36、语法分析阶段的处理中,处理的输入数据是来自词法分析阶段的______。它们是语法分析阶段的_______(终结符/非终结符)。
37、自下而上的分析方法,是一个不断_______(推导/归约)的过程。
38、递归下降分析方法中,(不一定/必须)要消除所有的左递归。
39、这个产生式中含有的左递归是(直接/间接)左递归。
40、在表驱动的预测分析器中,读入了一个终结符a,若终结符与栈项的终结符相同,并且不是结束标志KaTeX parse error: Expected group after '_' at position 12: ,则此时应当将栈顶符号_̲______;若此时栈项符号是…,并且读入的这个终结符不是KaTeX parse error: Expected group after '_' at position 5: ,这说明_̲________(分析成功/源…,并且读入的这个终结符也是$,则说明______(分析成功/源程序有语法错误)。
41、算符优先分析方法由不存在使用形如这样的产生式进行归约,即只要求_________(非终结符/终结符)的位置与产生式结构一致,从而使得分析速度与LR分析法相比______(更快/更慢)。
42、产生式E→E+T对应的LR(0)项目中:待归约的项目是_______,移进项目是_________,还有两个项目为_________、。
43、当一个LR(0)项目集中含有两个归约项目时,称这个项目集中含有(移进-归约/归约-归约)冲突。
44、静态语义检查一般包括以下四个部分,即类型检查、控制流检查、名字匹配的检查、一致性检查,请写出C语言编译过程中以下这些错误都属于哪一种静态主义检查的检查范围:
a) 对将字符型指针的值赋给结构体类型的指针变量:___
b)switch语句中,有两个case语句中出现了相同的常量:________
45、C语言的程序必须经过________才能生成目标代码,再经过________才能运行。PASCAL语言、FORTRAN语言的源程序也要经过这样的过程。通常将C、PASCAL、FORTRAN这样的语言统称为______(高级/汇编/机器)语言。而将最终的可执行程序称为________(高级/汇编/机器)语言程序。
46、在编译C语言程序的过程中,发现源程序中的一个标识符过长,超过了编译程序允许的范围,这个错误是在编译五个阶段中的______阶段发现的,这种错误通常被称作_____错误。
47、语法分析阶段的目的是识别出源程序的语法结构与语法单位。编译程序中负责这一功能的程序称为________。在这一阶段中发现的错误称为________错误。
48、在计算机发展的早期阶段,内存较小的不能一次完成程序的编译。这时通常将编译过程分成若干______来完成。每一______完成一部分功能。
49、字符串的连接运算一般________(满足/不满足)结合率。
50、按照文法的定义,文法由4个元素组成;这4个元素中,是这个文法所规定的语言的字母表,代表这个文法所规定的语言的语法实体的集合。对一下文无关文法,通常我们只需要写出这个文法的产生式集合就可以确定这个文法的其他所有元素。其中,第一条产生式的左部符号为。所有产生式的左部符号构成的集合为该文法的______集合。
51、按照乔姆斯基对方法的分类,上下文无关文法是______型文法,型文法的描述能力最强,型文法又称为正规文法。
52、如果文法G的一个句子存在两棵不同的语法分析树,则这个文法是(二义的,非二义的,无法判断是否是二义的)。
53、A为非终结符,如果文法存在产生式,则称可以(推导出/归约为),称可____(推导出/归约为)。
54、为了方便语法分析程序的使用,词法分析过程中通常对所识别出的单词符号进行分类。以C语言为例,变量名、数组名、函数名等等符号通常归入_________类,而‘{’、‘}’归入___________类。
55、在对单词符号进行编码时,单词的编码_________(应当避开/不需要避开)普通字符的编码范围。
56、确定有限自动机_____(是/不是)非确定有限自动机的特例;对任一非确定有限自动机______(能/不能)找到一个与之等价的确定有限自动机。
57、对于正规式aab+,字符串_____(符合/不符合)其定义,字符串aa_____(符号/不符合)其定义。
58、语法分析方法通常分为自上而下与自下而上两大类,算符优先分析方法属于_______的方法,而递归下降分析方法属于________的方法。这种分类方法是以___________的生长方向依据的。
59、自上而下的分析方法则是一个不断_______(推导/归约)的过程。
60、递归下降分析方法中所消除的左递归______(不包括/包括)消除间接左递归。
61、产生式S→aSSb|aSSS|c中,前两个右部的左公共因子是_______。
62、LL(1)文法的产生式中_______(一定没有/可以含有)公共左因子。LL(1)文法中________(一定没有/可以含有)左递归。为了避免回溯,LL(1)文法的预测分析表中,一个表项中___________(至多只有一个/可以有多个)产生式。
63、(所有/并非所有)算符优先文法都存在算符优先函数。若一个方法存在一个算符优先函数。
64、LR分析表中:表项s5中s表示的是(归约/移进/接受)动作,表项r2中的r表求的是_______(归约/移进/接受),表项acc的动作是______(移进/归约/接受)。
65、LR(0)与SLR(1)两种分析方法相比,的能力更强。
66、当一个LR(0)项目集中既含有移进项目,又含有归约项目时,称这个项目集含有(移进-归约/归约-归约)冲突。
二、已知某文法的优先关系矩阵如下
(1)构造其优先关系图
(2)由(1)结果求出其优先出数(用列表表示)
三、试用下列形式的四元式
(J,A,B,P)表示 if A B then p
(j ,—,—, p)表示 GOTO P
将下列语句翻译为四元式序列
while (A ≥ B) DO
if (C = D) then x:=y + z
四、判断下面语法是否正确
五、简答题
1、词法分析的任务是什么,有哪些方法可以实现词法分析器。
2、语法分析器的任务是什么,写出三种以上的语法分析的名称。
3、简述DAG在代码优化中的用途。
六.构造一个DFA,它接受上所有满足如下条件的字符串:每个1都有0直接跟在右边。
要求:(1)写出其正规表达式
(2)画出表示该DFA的状态转换图(可以省略中间的步骤)
七.给定文法G为:
给出句子G的句子,0127的最左推导和最右推导
八.对下面给定的文法G
计算G的每个非终结符的FIRST集和FOLLOW集
(2)构造G的预测分析表
九.试写出下列语句或表达式的中间代码:
(1) 要求写出间接三元式
(2) 要求写出逆波兰表示
十.给定文法如第四题所给定的文法
(1)证明 是给定文法的一个句型
(2)指出上述句型的所有短语和句柄
十一、计算题
1、(10分)文法如下:
证明Abces是文法G的一个句型,并找出这个句型的短语、素短语、句柄。
2、写出算术表达式A+B*(C-D)+E/(C-D)*N的四元式序列
3、写出下面语句经翻译后的三地址语句序列:
if C>D then x:=f+g else x:=x+1
十二、计算题
1、文法如下:
A→aB|c
B→Ab
证明aacbb是文法G的一个句子,并找出这个句子的短语、句柄。
2、写出算术表达式A+B*(C-D)+E/(C-D)*N的三元式序列。
3、写出下面语句经翻译后的三地址语句序列:
if i>2 then a:=x+2 else x:=a+1