编译原理.docx
- 文档编号:23884614
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:20
- 大小:176.14KB
编译原理.docx
《编译原理.docx》由会员分享,可在线阅读,更多相关《编译原理.docx(20页珍藏版)》请在冰豆网上搜索。
编译原理
1、编译阶段按前后端组合,可分为编译前端和编译后端,其中与目标机有关的阶段一般属于分析阶段,而与源语言相关的阶段一般属于综合阶段。
2、设文法G=(VN,VT,P,S),若P中的每一个规则A→β满足:
A∈VN,β∈(VN∪VT)*,则称此文法为0型文法。
3、已知M为一个确定的有穷自动机,M=(Q,∑,q0,F,δ),则Q表示一个有穷的状态集合;∑表示字母表,δ表示状态转换函数,q0是唯一的初始状态。
4、规范推导是指最右推导,每步推导只变换符号串中最右边的非终结符,其逆过程即最左规约,称为规范归约。
5、LR(0)项目集规范族中的项目可分为四类,即移进项目、待约项目、归约项目和接受项目,其中归约项目和归约项目或移进项目共存于一个项目集中会引起冲突。
6、表达式s:
=a+b*c/d+(b-d)的逆波兰式表示为sabc*d/bd-++:
=。
1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理.
2.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序.
3.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。
4.所谓最右推导是指:
任何一步αβ都是对α中最右非终结符进行替换的。
5..一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式
6.产生式是用于定义语法成分的一种书写规则。
7.设G是一个给定的文法,S是文法的开始符号,如果S
x(其中x∈V*),称x是文法的一个句型。
设G是一个给定的文法,S是文法的开始符号,如果S
x(其中x∈VT*),则称x是文法的一个句子。
8.语法分析最常用的两类方法是自上而下和自下而上分析法。
9.语法分析的任务是识别给定的终极符串是否为给定文法的句子。
10.自顶向下的语法分析方法的基本思想是:
从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。
11.自底向上的语法分析方法的基本思想是:
从给定的终极符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。
12.自底向上的语法分析方法的基本思想是:
从输入串入手,利用文法的产生式一步一步地向上进行直接归约,力求归约到文法的开始符号。
13.简单优先方法每次归约当前句型的句柄,算符优先方法每次归约当前句型的最左素短语,二者都是不断移进输入符号,直到符号栈顶出现可归约串的尾,再向前找到可归约串的头,然后归约。
14.在LR(0)分析法的名称中,L的含义是自左向右的扫描输入串,R的含义是最左归约,0的含义是向貌似句柄的符号串后查看0个输入符号。
15.在SLR
(1)分析法的名称中,S的含义是简单的
16.终结符只有综合属性,它们由词法分析器提供。
17.一个过程相应的DISPLAY表的内容为现行活动记录地址和所有外层最新活动记录的地址
18.常用的两种动态存贮分配办法是栈式动态分配和堆式动态分配。
19..常用的参数传递方式有传地址,传值和传名
20.局部优化是局限于一个基本块范围内的一种优化。
21.代码优化的主要目标是如何提高目标程序的运行速度和如何减少目标程序运行时所需的空间
1.词法分析基于__正则___文法进行,即识别的单词是该类文法的句子。
2.语法分析基于__上下文无关___文法进行,即识别的是该类文法的句子。
语法分析的有效工具是__语法树___。
3.分析句型时,应用算符优先分析技术时,每步被直接归约的是__最左素短语___,而应用LR分析技术时,每步被直接归约的是___句柄__。
4.语义分析阶段所生成的与源程序等价的中间表示形式可以有__逆波兰___、___四无式表示__与___三元式表示__等。
6.一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有___递归__定义的规则。
1.编译方式与解释方式的根本区别在于__是否生成目标代码___。
2对于一个文法G而言,如果L(G)中存在某个句子对应两棵不同的语法树,那么该文法就称为是二义的。
判断题:
1、从功能上看,一个编译程序就是一个语言翻译程序。
T
2、LEX是一个语法分析程序的生成系统。
Fyacc才是
3、一个句型的最左(直接)简单短语称为句柄。
T
4、已证明文法的二义性是可判定的。
F
5、一个NFA一定能转换为DFA。
T
6、递归下降分析法是一种不确定的自顶向下分析法。
F
1、LR(0)方法是规范规约。
()
2、一张状态转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。
()
3、文法的二义性问题是可以通过某一种特殊的算法就可以判定。
()
4、在算符优先分析法中提到的算符优先关系表与优先函数是等价的,没有任何区别。
()
5、编译器与解释器的最主要区别是编译过程将产生目标程序,而解释过程则不会。
()
1、算符优先分析法不是规范规约。
()
2、任何LR
(1)或LL
(1)文法都是无二义性的。
()
3、文法规则的左部就是非终结符号。
()
4、一个文法对应一种语言,反之,一种语言也唯一的对应一个文法。
()
5、非终结符既有综合属性和继承属性,但文法开始符号没有继承属性。
()
1、一个文法的句型确定了,则它的句柄也就随之确定了。
()
2、文法规则的左部就是非终结符号。
()
3、文法的二义性问题是可以通过某一种特殊的算法就可以判定。
()
4、在算符优先分析法中提到的算符优先关系表与优先函数是等价的,没有任何区别。
()
5、非终结符既有综合属性和继承属性,但文法开始符号没有继承属性。
()
1、对给定文法G[E],由推导序列E=>E+T=>T+T=>i+T=>i+i可知:
该推导为(最左)推导,从该推导序列可得到(5)个句型,其中的(i+i)同时也是句子。
2、用四元组G=(VN,VT,P,S)表示文法,则其元素VN表示(非终结符)集;元素VT表示(终结符)集;元素P表示规则集;元素S表示开始符号,它必须是一个(至少在某个产生式的左部出现一次的非终结符)符号。
3、YACC是一种(语法)分析程序的自动构造工具;而LEX是一种(词法)分析程序的自动构造工具。
4、对一个文法G,在其LR(0)项目集规范族DFA中,当有归约项目和(规约)项目或(移进)项目共存于同一个状态中时,该文法就不是LR(0)文法。
5、编译程序是一种语言翻译程序,它将源语言程序翻译成功能等价的(目标语言程序)。
6、所谓规则或产生式是指形如α→β或α:
:
=β的(α,β)有序对,其中α是字母表V的(正闭包元素),而β是字母表V的(闭包元素)。
7、设文法G=(VN,VT,P,S),若P中的每一个规则都是A→aB或A→a,其中A和B是非终结符,而a是终结符,则称此文法G为正规文法或(3)型文法。
8、实用文法中不得含有形如U→U的(有害规则),也不得含有由不可达或不可终止的非终结符所构成的(多余规则)。
9、对任意给定的一个正则表达式R,都可以将它转换为与之功能等价的(正则)文法,或与之功能等价的(有穷自动机)。
判断题:
1、在语法分析过程中,随着分析的步步进展,根据每个规则所对应的语义子程序或语义动作进行翻译的办法,称为语法制导翻译,它被现代很多编译程序所采用。
T
2、可归前缀本身就是活前缀,它是包含句柄在内的活前缀。
T
1、在语法分析过程中,随着分析的步步进展,根据每个规则所对应的语义子程序或语义动作进行翻译的办法,称为(语法制导)翻译方法,它被现代很多编译程序所采用。
2、(YACC)是一种语法分析程序的自动构造工具,用它可以直接构造各种语言的语法分析器;而(LEX)是一种(词法分析)程序的自动构造工具,用它可以直接构造各种语言的词法分析器。
3、所谓2型文法就是指(上下文无关)文法,若用G=(VN,VT,P,S)表示它,则它要求G中的所有规则α→β都满足:
α是(Vn),而β属于(VNUVT)*。
4、文法中形如U→U的规则称为(有害)规则;由不可达的非终结符或不可终止的非终结符作为左部的规则称为(无用)规则。
在实用文法中一般不允许含有这两类规则。
6、语法分析方法分为自上而下与自下而上两类,自上而下的分析方法方要有递归子程序分析法和(ll
(1));而自下而上的分析方法主要有(算符优先方法)和(LR分析方法)。
7、LR(0)项目集规范族中的项目可分为四类,它们是移进项目、(待约)、归约项目和接受项目。
其中,接受项目是(规约)的一种特例。
8、将非LL
(1)文法转换为等价的LL
(1)文法所采用的两种方法是(左递归转换为有递归)和(提取公因子解决分析表多重定义)。
但这两种方法并不能保证所有的非LL
(1)文法都能转换为等价的LL
(1)文法。
9、编译阶段按前后端组合,可分为编译前端和编译后端,其中与目标机有关的阶段一般属于分析阶段,而与源语言相关的阶段一般属于综合阶段
1、
(2)型文法又称为(上下文无关)文法,是描述程序设计语言语法部分的主要文法;高级程序设计语言的单词符号,如标识符、无符号整数常用(3)型文法来描述。
2、从0型文法到3型文法对规则的限制逐渐(增加),产生的语言类却逐步(缩小)。
1、设∑为{a,b},则a,ba,{∑},Ø都是∑上的正规式。
()
2、对于上下文无关文法G[S],若S
αAB
αβγ则A
一定是一条产生式规则,其中α,β,γ∈(VT∨VN)*()
3、对于逆波兰后缀式,无论从哪头开始分析均可得到唯一正确的分解。
()
4、LR(0)分析法是一种规范归约法。
()
5、算符优先分析法只能用来分析算符优先文法。
()
1.计算机高级语言翻译成低级语言只有解释一种方式。
(×)
2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(×)
3..正则文法其产生式为Aa,ABb,A,B∈VN,a、b∈VT。
(√)
4..每个文法都能改写为LL
(1)文法。
(×)
5..算符优先关系表不一定存在对应的优先函数。
(√)
6.自底而上语法分析方法的主要问题是候选式的选择。
(×)
7.LR法是自顶向下语法分析方法。
(×)
8.简单优先文法允许任意两个产生式具有相同右部。
(×)
9.若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。
(×)
10.一个句型的句柄一定是文法某产生式的右部。
(√)
11.数组元素的地址计算与数组的存储方式有关。
(√)
12.在程序中标识符的出现仅为使用性的。
(×)
13.仅考虑一个基本块,不能确定一个赋值是否真是无用的。
(√)
14.削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。
(×)
15.在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。
(√)
1.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。
(×)
2.确定的自动机以及不确定的自动机都能正确地识别正规集。
(√)
3.词法分析作为单独的一遍来处理较好。
(×)
4.构造LR分析器的任务就是产生LR分析表。
(√)
5.规范归约和规范推导是互逆的两个过程。
(×)
6.同心集的合并有可能产生新的“移进”/“归约”冲突。
(×)
7.LR分析技术无法适用二义文法。
(×)
8.树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。
(×)
9.程序中的表达式语句在语义翻译时不需要回填技术。
(√)
10.对中间代码的优化依赖于具体的计算机。
(×)
1.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法。
(×)
8.算符优先关系表不一定存在对应的优先函数。
(×)
9.数组元素的地址计算与数组的存储方式有关。
(×)
10.编译程序与具体的机器有关,与具体的语言无关。
(×)
l、一个LL(l)文法一定是无二义的。
( )
2、逆波兰法表示的表达式亦称前缀式。
()
3、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )
4、正规文法产生的语言都可以用上下文无关文法来描述。
( )
5、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。
()
6、因名字都是用标识符表示的,故名字与标识符没有区别()
7、一个句型的真接短语语是唯一的。
()
8、已经说明文法的二义性是可判定的。
()
9、每个基本块可用一个DAG表示。
()
10、每个过程的活动记录的体积在编译时可静态确定。
()
11、并不是每个文法都能改写成LL
(1)文法。
()
12、如果一个文法存在某个句子对应两棵不同的语法树,则该文法是二义的。
()
13、一个上下文无关文法的开始符号可以是终结符或非终结符。
()
14、孤立地考虑一个基本块常常不能确定一个赋值是否真是无用的。
()
15、含有优化部分的编译程序的执行效率高。
()
16、凡是具有某种特殊性质的客体的聚合,都可称为集合。
()
17、设有符号串x和y,把y的符号写在x的符号之后所得的符号串,叫做x与y的联结,记为xy。
()
18、符号表由词法分析程序建立,由语法分析程序使用。
()
19、编译程序中的语法分析器接受以语句为单位的输入,并产生有关信息供以后各阶段使用。
()
20、若一个句型中出现了某一产生式的右部,则此右部一定是该句型的句柄。
()
一、选择题(每空2分,共20分)
1.一个正规语言只能对应( B )?
A一个正规文法;
B一个最小有限状态自动机;
2.文法G[A]:
A→εA→aBB→AbB→a是( B ):
A正规文法
B二型文法
3.下面说法正确的是( A ):
A一个SLR
(1)文法一定也是LALR
(1)文法
B一个LR
(1)文法一定也是LALR
(1)文法
4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL
(1)文法的( A ):
A必要条件
B充分必要条件
5.(D)不是NFA的成分。
A由穷字母表B初始状态集合C终止状态集合D有限状态集合
6.(C)不是编译程序的组成部分
A词法分析程序B代码生成程序C设备管理程序D语法分析程序
7.有文法G=({S},{a},{S→SaS,S→ε},S),该文法是(B)。
A.LL
(1)文法B.二义性文法C算符优先文法DSLR
(1)文法
8给定文法A→bA|cc,则符号串①cc②bcbc③bcbcc④bccbcc⑤bbbcc中,是该文法句子的是(D)
A①B③④⑤C②④D①⑤
9表达式A*(B-C*(C/D))的逆波兰表示为(B)
A.ABC-CD/**B.ABCCD/*-*C.ABC-*CD/*D.前三个选项都不对
10LR
(1)文法都是(A)
A无二义性且无左递归B可能有二义性但无左递归
C无二义性但可能有无左递归D可以既有二义性又有左递归
二、单选题:
1.2.词法分析器用于识别___c__。
A.字符串 B.语句C.单词 D标识符
3.语法分析器则可以发现源程序中的_d____。
A.语义错误 B.语法和语义错误C.错误并校正 D.语法错误
4.文法分为四种类型,即0型、1型、2型、3型。
其中3型文法是__b___。
A.短语文法 B.正则文法 C.上下文有关文法 D.上下文无关文法
5.编译程序是对_d____。
A.汇编程序的翻译 B.高级语言程序的解释执行 C.机器语言的执行 D.高级语言的翻译
4.在规范归约中,用___B__来刻画可归约串。
A.()直接短语 B.()句柄 C.()最左素短语 D.()素短语
5.若a为终结符,则A->α·aβ为__B___项目。
A.()归约 B.()移进 C.()接受 D.()待约
6.间接三元式表示法的优点为____A_。
A.()采用间接码表,便于优化处理 B.()节省存储空间,不便于表的修改
C.()便于优化处理,节省存储空间 D.()节省存储空间,不便于优化处理
7.基本块内的优化为__B___。
A.代码外提,删除归纳变量 B.删除多余运算,删除无用赋值
C.强度削弱,代码外提 D.循环展开,循环合并
8.在目标代码生成阶段,符号表用___D__。
A.()目标代码生成 B.()语义检查 C.()语法检查D.()地址分配
1.词法分析器用于识别c,语法分析器则可以发现源程序中的d.
(1) a.字符串 b.语句 c.单词 d.标识符
(2) a.语义错误 b.语法和语义错误 c.错误并校正 d.语法错误
2.程序语言的语言处理程序是一种
(1)a.
(2)b是两类程序语言处理程序,他们的主要区别在于(3)d.
(1) a.系统软件 b.应用软件 c.实时系统 d.分布式系统
(2) a.高级语言程序和低级语言程序 b.解释程序和编译程序
c.编译程序和操作系统 d.系统程序和应用程序
(3) a.单用户与多用户的差别 b.对用户程序的查错能力
c.机器执行效率 d.是否生成目标代码
3.编译过程中,语法分析器的任务就是b.
(1)分析单词是怎样构成的
(2) 分析单词串是如何构成语句和说明的
(3)分析语句和说明是如何构成程序的 (4)分析程序的结构
a.
(2)(3) b.
(2)(3)(4) c.
(1)
(2)(3) d.
(1)
(2)(3)(4)
4.编译程序必须完成的工作有a.
(1)词法分析
(2)语法分析 (3)语义分析
(4)代码生成 (5)之间代码生成 (6)代码优化
a.
(1)
(2)(3)(4) b.
(1)
(2)(3)(4)(5) c.
(1)
(2)(3)(4)(5)(6)
d.
(1)
(2)(3)(4)(6) e.
(1)
(2)(3)(5)(6)
5.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法a.
a.不正确 b.正确
6..文法G所描述的语言是C的集合。
A.文法G的字母表V中所有符号组成的符号串
B.文法G的字母表V的闭包V*中的所有符号串
C.由文法的开始符号推出的所有终极符串
D.由文法的开始符号推出的所有符号串
7.法G[N]=({b},{N,B},N,{N→b│bB,B→bN}),该文法所描述的语言是
C。
A.L(G[N])={bi│i≥0}B.L(G[N])={b2i│i≥0}C.L(G[N])={b2i+1│i≥0}D.L(G[N])={b2i+1│i≥1}
8.一个句型中的最左B称为该句型的句柄。
可选项有:
A.短语B.简单短语C.素短语D.终结符号
9.设G是一个给定的文法,S是文法的开始符号,如果S
x(其中x∈V*),则称x是文法G的一个B。
A.候选式B.句型C.单词D.产生式
10.若一个文法是递归的,则它所产生的语言的句子A。
A.是无穷多个B.是有穷多个C.是可枚举的D.个数是常量
11.在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是B。
A.非终极符集B.终极符集C.字母表D.状态集
12.在LR分析法中,分析栈中存放的状态是识别规范句型C的DFA状态。
A.句柄B.前缀C.活前缀D.LR(0)项目
⏹作业:
P36-6,7,8,9,10,11
⏹P81—1,2
⏹P82—3(选作2个)
P64-7,8,12,14
二、
三、编译程序的工作一般分为五个阶段:
a)词法分析描述工具:
有限自动机
b)语法分析描述工具:
上下文无关文法
c)中间代码产生依循的原则:
语义规则
d)优化
e)目标代码产生
语法:
一组语法单位的形成规则
语义:
一组规则,用它可以定义一个程序的意义
V*是V的闭包;记V+=VV*,称V+是V的正规闭包
句子的全体是一个语言,将它记为L(G)
消除二义性
表达式项|表达式+项
项因子|项*因子
因子(表达式)|i
♦0型(短语文法,图灵机):
产生式形如:
其中:
(VTVN)*且至少含有一个非终结符;(VTVN)*
♦1型(上下文有关文法,线性界限自动机):
产生式形如:
其中:
||||,仅S例外。
♦2型(上下文无关文法,非确定下推自动机):
产生式形如:
A
其中:
AVN;(VTVN)*。
♦3型(正规文法,有限自动机):
产生式形如:
AB或A
其中:
VT*;A,BVN
产生式形如:
AB或A
其中:
VT*;A,BVN
程序设计语言不是上下文无关语言,甚至不是上下文有关语言
一个字集合是正规集当且仅当它能用正规式表示。
自动机M是一个五元式M=(S,,f,S0,F),其中:
1.S:
有穷状态集,
2.:
输入字母表(有穷),
3.f:
状态转换函数,为SS的单值部分映射,f(s,a)=s’表示:
当现行状态为s,输入字符为a时,将状态转换到下一状态s’。
我们把s’称为s的一个后继状态。
4.S0S是唯一的一个初态;
5FS:
终态集(可空)。
⏹从状态图中看NFA和DFA的区别:
1弧上的标记可以是*中的一个字,而不一定是单个字符;
2同一个字可能出现在同状态射出的多条弧上。
⏹DFA是NFA的特例。
自动机理论中一个重要的结论:
判定两个自动机等价性的算法是存在的。
二义性问题是不可判定问题,即不存在一个算法,它能在有限步骤内,确切地判定一个文法是否是二义的。
·含有左递归的文法将使自上而下的分析陷入无限循环。
一个文法消除左递归的条件:
☞不含以为右部的产生式
☞不含回路。
采用“移进-归约”思想进行自下而上分析
S属性定义属于L属性定义
S属性定义:
仅仅使用综合属性的语法制导定义
L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理