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