编译原理复习(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章引论
1.编译过程的阶段
由词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段
2.编译程序的概念
3.编译程序的结构
例:(B)不是编译程序的组成部分。
A. 词法分析器;
B. 设备管理程序
C. 语法分析程序;
D. 代码生成程序
4.遍的概念
对源程序(或其中间形式)从头至尾扫描一次并进行有关加工处理,生成新的中间形式或最终目标程序,称为一遍。
5.编译程序与解释程序的区别
例:解释程序和编译程序是两类程序语言处理程序,它们的主要区别在于(D)。
A. 单用户与多用户的差别
B. 对用户程序的差错能力
C. 机器执行效率
D. 是否生成目标代码
第三章文法和语言
文法的概念
字母表、符号串和集合的概念及运算
例:(ab|b)*c 与下面的那些串匹配?(ACD)
A. ababbc;
B. abab;
C. c;
D. babc;
E. aaabc 例:ab*c*(a|b)c 与后面的那些串匹配?(BC)
A.acbbc
B.abbcac
C.abc
D.acc
例:(a|b)a+(ba)*与后面的那些串匹配? (ADE)A.ba B.bba C.ababa D.aa E.baa
文法的定义(四元组表示)
文法G定义为四元组(V N,V T,P,S)
V N:非终结符集
V T:终结符集
P:产生式(规则)集合
S:开始符号(或识别符号)
例:给定文法,A::= bA | cc,下面哪些符号串可由其推导出(①② ⑤)。
①cc ②b*cc ③b*cbcc ④bccbcc ⑤bbbcc
什么是推导
例:已知文法G:
E->E+T|E-T|T
T->T*F|T/F|F
F->(E)|i
试给出下述表达式的推导:i*i+i
推导过程:E->E+T
->T+T
->T*F+T
->F*F+T
->i*F+T
->i*i+T
->i*i+F
->i*i+i
●句型、句子的概念
例:假设G一个文法,S是文法的开始符
号,如果S=>*x,则称x是句型。
例:对于文法G,仅含终结符号的句型称
为句子。
●语言的形式定义
例:设r=(a|b|c)(x|y|z),则L(r)中元素为
9个。
例:文法G产生式为S→AB,A→aAb|ε,
B→cBd|cd,则B∈L(G)。
A. ababcd;
B. ccdd;
C. ab;
D. aabb
●等价文法
例:如果两个文法描述了同一个语言,则这两个文法是等价文法。
●文法的类型
0型:左边至少有一个非终结符
1型:右边长度>=左边长度
2型:左边有且仅有一个非终结符
3型:形如:A->aB,A->a
各类型文法都是逐级包含关系,
例:文法S→abC|c,bC→d是几型文法?0
型
例:文法S→abC,bC→ad是几型文法?1
型
例:文法G[A]:A→ε,A→aB,B→Ab,B→a
是几型文法?2型
例:文法S→a|bC,C→d是几型文法?
3
型
●最左(右)推导
规范推导:最右推导被称为规范推导
规范句型:由规范推导所得的句型称为规范句型规范归约:左归约为规范归约
●二义性
例:如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。
例:已知文法G1:P->PaP|PbP|cP|Pe|f,G1是(A)。 A 二义文法;B 无二义的
例:证明下述文法G[<表达式>]是二义的。
<表达式>→a|(<表达式>)|<表达式><运算符><表达式>
<运算符>→+|-|*|/
答:可为句子a+a*a构造两个不同的最右推导:
最右推导1 〈表达式〉
〈表达式〉〈运算符〉〈表达式〉
〈表达式〉〈运算符〉a
〈表达式〉* a
〈表达式〉〈运算符〉〈表达式〉* a
〈表达式〉〈运算符〉a * a
〈表达式〉+ a * a
a + a * a
最右推导2 〈表达式〉
〈表达式〉〈运算符〉〈表达式〉
〈表达式〉〈运算符〉〈表达式〉〈运算符〉〈表达式〉
〈表达式〉〈运算符〉〈表达式〉〈运算符〉 a
〈表达式〉〈运算符〉〈表达式〉* a
〈表达式〉〈运算符〉a * a
〈表达式〉+ a * a
a + a * a
●短语、句柄、直接短语
例:令文法G[E]为:
E->E+T|E-T
T->T*F|T/F|F
F->(E)|i
证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。
例:已知文法G[S]
S→aB|bA
A→a|aS|bAA
B→aBB|bS|b
句型aabbAb的句柄是(D)
A.a
B.ab
C.b
D.bA
第四章词法分析
●词法输出的token表示法
●词法记号、模式、词法单元的概念
●词法输出的token表示:二元式表
示(单词种别,单词自身的值)
例:扫描器的任务是从源程序中识别出一个个单词。
●正规式的概念及其代数性质
词法分析中的单词符号的描述工具
正规式代表的集合
例:请描述下面正规式定义的串,字母表S = {0, 1}。1(0|1)*0
答:必须以1开头0结尾的串
例:为下边所描述的串写正规式,字母表是{0, 1}。以01 结尾的所有串
答:(0|1)*01
●正规文法和正规式相互转换
正规文法到正规式的转换规则:
正规文法正规式
A→xB, B→y 转换成:A=xy
A→xA∣y 转换成:A=x*y
A→x, A→y 转换成:A=x∣y
例:给出下述文法所对应的正规式:
S→0A|1B
A→1S|1
B→0S|0
答:S->0A | 1B
->01S | 01 | 10S | 10
->(01|10)S | (01|10)
-> (01|10) (01|10)* 即:r= (01|10) (01|10)*
●NFA和DFA
●NFA和DFA 的组成
例:指出哪些串是自动机可接受的(②④)xy ②xyxxy ③yyyx
④