编译原理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章

1.编译程序的地位:系统软件。

2.编译程序生成目标代码。解释程序不生成。

3.源程序的执行过程:两种形式:直接生成机器代码程序:编译、运行;目标程序是汇编语言程序:编译

—汇编—运行。

4.编译程序的6个工作:词法分析、语法分析、语义分析、代码生成(4个必须完成)、中间代码生成、代

码优化。

5.编译程序的每个工作阶段的主要任务:(1)词法分析(扫描器):输入源程序,对构成源程序的字符串进

行扫描和分解,识别出一个个的单词及其有关属性,并转换成属性字。(2)语法分析(分析器):在词法分

析的基础上,根据语言的语法规则,逐一分析词法分析时得到的属性字,检查语法错误,若没有错误,则

给出正确的语法结构(如短语、子句、句子、程序段、程序等)。(3)语义分析(语义处理):语法分析识别

出的各类语法范畴,分析其含义,进行和初步翻译,产生介于源代码和目标代码之间的一种代码“中间代码”。

或者直接生成目标代码。(4)优化:对前面产生的中间代码进行加工变换,用于在最后阶段能产生更为高

效的目标代码。(5)目标代码生成:把经过优化的中间代码转化成特定机器上的低级语言代码。(6)中间

代码生成。

6.目标代码的形式:绝对指令代码、汇编指令代码、可重定位指令代码。

7.判断:(1)用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行(⨯)

(2)编译程序的五个组成部分缺一不可.。(⨯ )

(3)编译程序生成的目标代码一定是机器语言的程序(⨯)

(4)多趟扫描的编译程序是高质量的编译程序,优于单趟扫描的编译程序。(⨯)

第二章

1.文法和语言:构造句子的规则,用于产生或推导句子。BNF表示法:用“|”表示“或”,用以合并左部

相同的规则,规则的左部只有单个非终结符。推导:使用产生式的右部取代左部的过程,用于从开始符号

生成符号串的一步步推导过程。归约:将左部取代右部的过程,用于由符号串反过来归约到开始符号的过

程。推导的分类:直接推导、推导、广义推导、最左推导、最右推导(规范推导:最右推导、最左归约)。

2.设G[Z]是字汇表V上的一个文法:Z x,x∈V*。则称x是G的一个句型,x是由Z推导出来的符号

串。如果Z x,x∈Vt*,即仅含有终结符的句型是一个句子。文法G[Z]产生的所有句子的集合称为文法

G[Z]所定义的语言L( G[Z] )。

3.可推出符号:在某句型中出现的符号称为可推出符号,其中包含非终结符和终结符。活的非终结符号:

Z xUy,U∈Vn ,x, y∈Vt*,则称U为活的非终结符号,一定会出现在句型中。活的非终结符号亦为可

推出符号。

4.等价变换。文法的六种假定:文法的开始符号不出现在规则的右部;每个非终结符号均能导出终结符号

串;每个非终结符号都出现在任意句型中;没有特殊规则,形如A::=B,A,B属于Vn;没有空规则,形如

A::=ε;没有直接左递归规则,形如A::=Ay。

5.文法和语言的分类:4种,了解包含关系L3⊂L2⊂L1⊂L0,1型文法不允许空规则,是上下有关文法,左右

部前后缀对应相同。2型(上下文无关文法,左部必为非终结端符号,由下推自动机识别)和3型(正则文法)

文法的产生式的基本规则。2,3型可有空规则,此时不属于1型。2描述语法,3描述词法。

0型:α::=β。1型:xUy::=xuy。2型:A::=β。3型:A::=αB(右线性),A::=Bα(左线性),A::=α。

6.例题:(1)写出由G[S] S::=aSb|P ,P::=bPc|bQc ,Q::=Qa|a 生成的语言

解:L(G[S])={a i b j a k c j b i∣i≥0,j ≥1,k ≥1}

(2)已知语言L={a n bb n|n≥1},则下述文法中,( D )可以产生语言L。

A、Z::=aZb|aAb|b,A:=aAb|b

B、A::=aAb,A::=b

C、Z::=AbB ,A::=aA|a ,B::=bB|b

D、Z::=aAb,A::=aAb|b

(3)写出由文法G[S] S::=Aa|ε ,A::=Aa|Sb|a 。转换成的正则表达式。 解:A::=Aa|Aab|b|a=A(a|ab)|(b|a)=(b|a) (a|ab)* 代回(1)得:S=[(b|a) (a|ab)*]a|ε

(4)文法G[A]:A→aB|ε B→Ab|a 按乔姆斯基(Chomsky )分类是 2型 文法 第三章

1.状态转换图的概念:描述有限自动机的工作状态,用于识别一定的符号串。

2.有限自动机的分类:DFA 和NFA 。

3.DFA :初始状态仅有一个,单值映射。NFA :初始状态可以有多个,多值映射。

4.用子集法将NFA 转换为DFA :改造(如果需要的话)使其仅有一个初态和一个终态,构造状态集的转换表,重新为状态编号,得到DFA

5.自动机的简化:分割法。化简等价状态、无关状态、死状态。

6.转换图:允许边上有ε。自动机:不允许边上有ε。

7.例题:

1. DFA 的初态和终态都只能有一个,且其函数转换关系为单值映射。(⨯) 2. 对任何正则表达式e ,都存在一个DFA M 满足L (M )= L (e )。( √) 3. 给出与正规式R =((ab)*|b )*(a|(ba)*)a 等价的NFA

4. 构造一个DFA M ,它接受字母表∑={a,b,c}上,以a 或b 开始的字符串,或以c 开始但所含的a 不多

于一个的字符串。

第五、六章

1.常用的终结符号集:首符号集First 、向前看集Follow 、可选集Select 。

2.语法分析方法分类:自顶向下分析和自底向上分析。

3.自顶向下分析法:回溯问题和左递归带来的无限循环问题。

4.消除文法的左递归的方法:若A::=Ay|x ,可用A::=xA',A'::=yA'|ε替换。

5.LL(1)分析法:含义:第一个“L ”:从左到右扫描源程序,第二个“L ”:最左推导,“1”:向前看1个符

1 b

c

c b

a

c

b 0 ⇒

2

3

b a

c

a

c a

相关文档
最新文档