《编译程序设计原理》练习题PPT教学课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/12/09
4
例2-1(2/2)
语义 year(年)、month(月)、day(日)
语义约束条件 0 < month.value < 13 0 < day.value < 32,31,30 0 < year.value < 10000
2020/12/09
5
习题
2-1 试分析一个简短的 C 程序,找出几 个属于语法、词法、语义的语言现象。 2-2 试分析例 2-1 的 date 输出数据的 处理中,应该做哪些词法分析、语法分 析、语义处理。 2-3 理解交叉编译和自展技术
4、编译程序的总体结构及各模块的功能;编译程序 的实现方法;如何根据FA实现扫描器?
2020/12/09
9
习题:
4-1 改写以下文法,消除左递归 M→MaH | H H→b(M) | (M) | b
4-2 求以下文法中各非终结符的FIRST集和 FOLLOW集 A→baB| B→Abb|a
4-3 构造如下给定文法的递归子程序 S → a|↑|( T ) T → T,S|S
1-1 参照文法, E→E+E|E*E|(E)|I 写出以下表达式的生成过程(最左派生、最 右派生):
i*(i+i)*i
2020/12/09
1
1-2 扩充文法
<电话号码> → <局代码><本机代码>
<电话号码> → <地区前缀><局代码><本机代码 >
<地区前缀> → <地区代码> -
<地区前缀> →(<地区代码>)
练习 P204:4.9~4.13
2020/12/09
13
4-9 给出布尔表达式的文法,构造其算符优先关系 表
bexpr → bexpr OR bexpr bexpr → bexpr AND bexpr bexpr → NOT bexpr bexpr →( bexpr ) bexpr → TRUE bexpr → FALSE 练习:P205 4.15~4.17
4-6 判断下述文法可否改写为 LL(1)文法
a. S→A|B
A→aA|a
B→bB|b
b. S→i|(E)
E→E+S|E-S|S
2020/12/09
12
思考题
4-7 能否直接用语法图描述 E→E+E|E-E|E*E |E/E|-E|(E)|id|const,并用递归子程序法实
现语法分析?为什么?
4-8 能否将各种单词的文法直接并入表达式语法 ,进行语法分析处理?试分析这样做会有哪些好的 影响和不好的影响。
4-13 证明下列文法不是 LR(0) 文法, 是 SLR(1) 文法。
3-4 上机题
合并例3-3和例3-4的状态图,设计并实现一个词法分 析函数,每次返回一个单词种别和属性;编制主程序 完成测试(输入和输出)。
2020/12/09
8
1~3章自测题
1、设 r=(1|0)*0((0|1|2)2|(0|1|2) 3)(0|1|2|3|4|5|6|7|8|9)8 求RG G 和FA M使得L(M)=L(G)=L(r)
பைடு நூலகம்
2
1-3 给定文法如下:
E →T | E + T | E - T T →F | T * F | T / F F →( F ) | i 画出表达式 i*(i+i)+i 的分析树
1-4 判断上题的文法属于哪个类型的文 法?为什么?
2020/12/09
3
例2-1(1/2)
DOS 命令 date 的输出格式
2020/12/09
14
4-10求给定文法的拓广文法的LR(0)项目 集规范族,及相应的LR(0)分析表:
S A
ABA|
BaB|b 4-11 说明为什么各种 LR 分析方法的分 析能力不同?
2020/12/09
15
4-12 已知文法 A a A d | a A b | ,判断该文法是否是 SLR(1) 文法,如果 是 SLR(1)文法,则构造分析表;并对输 入串 ab# 给出分析过程。
例:9-2-1993、09-03-1993、9-03-93
语法
date → month - day - year
词法
month → DIGIT DIGIT | DIGIT
day → DIGIT DIGIT | DIGIT
year → DIGIT DIGIT | DIGII DIGIT DIGIT DIGIT
2020/12/09
6
习题
P97 练习3.1~3.2;3.3,3.4选做
练习3.5~3.13——有能力者可以完成
3-1 构造下列正规式的状态图
a ( ( a | b )* | a b* a )* b
3-2 给出下述文法所对应的正规式
S→0A|1B
A→1S|1
(01|10)*
B→0S|0
2020/12/09
2020/12/09
10
上机题
4-4 给定下列文法: S→id=E; S→if C then S S→while C do S C→E>E C→E<=E
用递归子程序法设计并实现语法分析程序 ,按照生成顺序输出产生式
练习: P202~204 4.1~4.8
2020/12/09
11
4-5 构造如下给定文法的预测分析表 S→AB A → B a| B → D b|D D → d|
<地区代码> → DIGIT DIGIT
<地区代码> → DIGIT DIGIT DIGIT
<局代码> → DIGIT DIGIT DIGIT DIGIT
<本机代码> → DIGIT DIGIT DIGIT DIGIT
增加包括国际代码的电话号码描述
2020/12如/09 :86-010-6739-1742
2、构造算术表达式的文法G,并且 1) 指出各语法变量的意义 2) 求 x+log( |sin(y)| +b4) 最左推导、最右推导 3) 求 x+log( |sin(y)| +b4) 的语法树
3、叙述下列概念的定义和意义 前缀、文法、直接推导、规范归约、短语、句柄、
正规式、正规定义式、种别码与属性值、双缓冲
7
3-3 文法G[<单词>]为:
<单词> → <标识符> | <整数> <标识符> → <标识符> <字母> | <标识符> <数字> | <字母> <整数> → <整数> <数字> | <数字> <字母> → A | B | … | Y | Z <数字> → 1 | 2 | … | 8 | 9 | 0 将该文法改写为正规文法