18
北北北北北北 北北北北北北北北北北北北北 北北 北北 0601~0605 0601~0605 北北北北 北北北北

北京化工大学 信息科学与技术学院计算机系

  • Upload
    feo

  • View
    1.430

  • Download
    0

Embed Size (px)

DESCRIPTION

计科 0601~0605 编译原理. 编译原理复习. 北京化工大学 信息科学与技术学院计算机系. ● 内容简介. 参考书籍 考试时间 考试题型 考试范围 内容概述 例题解答. Compilers:Principles, Techniques,and tools 编译原理 Compiler Construction Principle and Pratice 编译原理及实践. 2007 年 12 月 31 日 8:00~10:00 计科 0501 教 102 计科 0502 教 102 计科 0503 教 103 - PowerPoint PPT Presentation

Citation preview

北京化工大学信息科学与技术学院计算机系

计科计科 0601~0605 0601~0605 编译原理编译原理

内容简介

参考书参考书籍籍

考试时间考试时间 考试题型考试题型 考试范围考试范围 内容概述内容概述 例题解答例题解答

Compilers:PrincipleCompilers:Principles, Techniques,and s, Techniques,and

toolstools编译原理编译原理

Compiler Construction Compiler Construction Principle and PraticePrinciple and Pratice

编译原理及实践编译原理及实践

考试时间2007 年 12 月 31 日

8:00~10:00计科 0501 教 102计科 0502 教 102计科 0503 教 103计科 0504 教 103计科 0505 教 201

内容概述例题解答

考试题型卷面题型:

证明题计算题

平时成绩:上机考勤

考试范围词法分析词法分析上下文无关文法及分析上下文无关文法及分析自顶向下的分析方法自顶向下的分析方法自底向上的分析方法自底向上的分析方法语义分析语义分析中间代码生成中间代码生成代码优化代码优化

●● 内容简介内容简介

●● 内容概述内容概述

内容概述内容概述

编译简介编译简介

词法分析词法分析语法分析语法分析语法制导翻译语法制导翻译中间代码生成中间代码生成代码优化代码优化

上机 上机 Flex,BisonFlex,Bison 分析器分析器

词词法法分分析析

源源程程序序

目目标标程程序序

语语法法分分析析

语语义义分分析析

符 号 处 理 符 号 处 理

错 误 处 理 错 误 处 理

中中间间代代码码优优化化

中中间间代代码码生生成成

前 前 端端

后 后 端端

●● 内容概述内容概述

● ● 编译器的功能组织结构图编译器的功能组织结构图

目目标标代代码码生生成成

例题解答例题解答

1.1. 编译程序的功能组织结构图编译程序的功能组织结构图2.2. 词法分析(正则表达式→词法分析(正则表达式→ NFA → DFA → DFA NFA → DFA → DFA 最小最小

化)化)3.3. 句型→推导的语法树句型→推导的语法树4.4. 文法←→语言←→句子文法←→语言←→句子5.5. 自顶向下语法分析 自顶向下语法分析 (LL(1))(LL(1))

6.6. 自底向上语法分析 自底向上语法分析 (LR(0)(LR(0) 、、 SLR(1)SLR(1) 、、 LR(1)LR(1) 、、 LALR(1))LALR(1))

7.7. 语义分析语义分析8.8. 中间代码中间代码9.9. 中间代码优化中间代码优化

1 . 1 . 编译程序的功能和组织结构编译程序的功能和组织结构

词词法法分分析析

源源程程序序

目目标标程程序序

语语法法分分析析

语语义义分分析析

符 号 处 理 符 号 处 理

错 误 处 理 错 误 处 理

中中间间代代码码优优化化

中中间间代代码码生生成成

前 前 端端

后 后 端端

目目标标代代码码生生成成

2.2. 请构造与正则式请构造与正则式 R=(a*b)*ba(a|b)* R=(a*b)*ba(a|b)* 等价的状态最少的等价的状态最少的 DFADFA(确定有限自动机)。(确定有限自动机)。

解:解:(1) NFA(1) NFA

(2) NFA → DFA(2) NFA → DFA

(3) DFA (3) DFA 最小化最小化

3.3. 有文法有文法 G[E]G[E] :: EET | E+T| E-TT | E+T| E-T T TF | T*F | T/FF | T*F | T/F F Fi | (E)i | (E)

请判断请判断 (E+T)*i+F(E+T)*i+F 是是 GG 的一句型吗?的一句型吗?如果是,请画出它的推导的语法树。如果是,请画出它的推导的语法树。

))EE((

++EE TT

EE

++EE TT

TT FF

FF**TT

iiFF

4.4. (( 11 )设有文法)设有文法 G[S]=({b},{S,B},S, {S →b|G[S]=({b},{S,B},S, {S →b|

bB,B→bS}),bB,B→bS}), 该文法所描述的语言是该文法所描述的语言是 __________________ 。。

(( 22 )已知语言)已知语言 L={aL={annbbbbnn|n ≥1}|n ≥1} ,则,则 ______________ 文法可文法可以产生语言以产生语言 LL 。。

(( 33 )设有文法)设有文法 G[I]G[I] :: I→I1 | I0 | Ic | a | b | c I→I1 | I0 | Ic | a | b | c 该文法的句子有该文法的句子有 ________________

ab0 a0c01 aaa bc10① ② ③ ④ ab0 a0c01 aaa bc10① ② ③ ④

4.4.(( 11 )设有文法)设有文法 G[S]=({b},{S,B},S, {S →b|G[S]=({b},{S,B},S, {S →b|bB,B→bS}),bB,B→bS}), 该文法所描述的语言是该文法所描述的语言是 LL (( G[S]={bG[S]={b2i+12i+1|i |i ≥0} ≥0}

(( 22 )已知语言)已知语言 L={aL={annbbbbnn|n ≥1}|n ≥1} ,则,则 Z → aAbZ → aAb

A → aAb | bA → aAb | b

上述文法可以产生语言上述文法可以产生语言 LL 。。(( 33 )设有文法)设有文法 G[I]G[I] ::

I→I1 | I0 | Ic | a | b | c I→I1 | I0 | Ic | a | b | c 该文法的句子有 该文法的句子有 ②④ ②④ 。。 ① ① ab0 a0c01 aaa bc10② ③ ④ab0 a0c01 aaa bc10② ③ ④

5.5.            设有文法设有文法 G[S]G[S] ::S→ES→EE→Aa | bBE→Aa | bBA→cA|dA→cA|dB→cB|dB→cB|d构造其构造其 LR(0)LR(0) 分析表并利用分析表判断分析表并利用分析表判断 bccdbccd 是否为文法是否为文法G[S]G[S] 的句子。 的句子。

6.6. (( 11 )设有文法)设有文法 exp → exp + term | exp - term | termexp → exp + term | exp - term | term 该文法消除左递归后为 该文法消除左递归后为 __________________ 。。

(( 22 )) LALR(1)LALR(1) 文法均为文法均为 LR(1)LR(1) 文法(文法( T/FT/F ?)?)

7. 7. 对于文法对于文法lexp→atom|listatom→number|identifierlist→(lexp-seq)lexp-seq→lexp-seq lexp | lexp1) 消除左递归。2) 为得出的文法的非终结符构造 First 集合和 Follow 集合。解:解: lexp-seq->lexp lexp-seq’ lexp-seq’->lexp lexp-seq’| εlexp-seq->lexp lexp-seq’ lexp-seq’->lexp lexp-seq’| ε

First(lexp) = { n, i, ( }First(lexp) = { n, i, ( } ,Follow = { $,n,i,(,) },Follow = { $,n,i,(,) }

First(atom) = { n, i }First(atom) = { n, i } ,Follow = { $,n,i,(,) },Follow = { $,n,i,(,) }

First(list) = {(}First(list) = {(} ,Follow = { $,n,i,(,) },Follow = { $,n,i,(,) }

First(lexp-seq) = { n,i,( }First(lexp-seq) = { n,i,( } ,Follow = { ) },Follow = { ) }

First(lexp-seq’) = {ε,n,i,( }First(lexp-seq’) = {ε,n,i,( } ,Follow = { ) },Follow = { ) }

8.8. 说明以下的文法是说明以下的文法是 LR(1)LR(1) 文法但不是文法但不是 LALR(1)LALR(1) 文法:文法:S → a A d | b B d | a B e | b A eS → a A d | b B d | a B e | b A eA→ cA→ cB→ cB→ c

9.9. 在一个移入在一个移入 -- 规约的分析中采用以下的语法制导的翻译规约的分析中采用以下的语法制导的翻译模式,在按一产生式规约时,立即执行括号中的动作。模式,在按一产生式规约时,立即执行括号中的动作。A A → aB {print “0”}A A → c {print “1”}B → Ab {print “2”}当分析器的输入为 aacbb 时,打印的字符串是什么?

分析器分析器输入为 aacbb ,打印的字符为打印的字符为1202012020

bb

BB

cc

AA

AA

aa BB

AA

aa

bb

⑤⑤

④④

③③

②②

①①

A A → aB {print “0”}A A → c {print “1”}B → Ab {print “2”}

10. 10. 请写出请写出 TINY programTINY program 三地址码及其四元式表示。三地址码及其四元式表示。read x ; { input an integer }read x ; { input an integer }if 0 < x then { don’t compute if x <= 0 }if 0 < x then { don’t compute if x <= 0 } fact:=1;fact:=1; repeat repeat fact:=fact*x;fact:=fact*x; x:=x-1x:=x-1 until x=0;until x=0; write fact { output factorial of x }write fact { output factorial of x }endsends

read xread xt1=x>0t1=x>0if_false t1 goto L1if_false t1 goto L1fact=1fact=1label L2label L2t2=fact*xt2=fact*xfact=t2fact=t2

t3=x-1t3=x-1x=t3x=t3t4= x= =0t4= x= =0if_false t4 goto L2if_false t4 goto L2

write factwrite factlabel L1label L1halthalt

四元式四元式(sub, x, 1, t3 )(sub, x, 1, t3 )(asn, t3, x, _ )(asn, t3, x, _ )(eq, x, 0, t4 )(eq, x, 0, t4 )(if_f, t4, L2, _)(if_f, t4, L2, _)(wri, fact, _, _ )(wri, fact, _, _ )(lab, L1, _ , _ )(lab, L1, _ , _ )halt, _, _, _ )halt, _, _, _ )

(rd, x , _ , _ )(rd, x , _ , _ )(gt, x, 0, t1 )(gt, x, 0, t1 )(if_f, t1, L1, _ )(if_f, t1, L1, _ )(asn, 1,fact, _ )(asn, 1,fact, _ )(lab, L2, _ , _ )(lab, L2, _ , _ )(mul, fact, x, t2 )(mul, fact, x, t2 )(asn, t2, fact, _ )(asn, t2, fact, _ )

三地址码三地址码