编译原理第2版陈意云+张昱编著课后答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(a) 请指出此文法的终结符号, 非终结符号和开始符号. 终结符号: or, and, not, (, ), true, false 非终结符号: bexpr, bterm, bfactor 开始符号: bexpr
10
(b) 试对于句子 not ( true or false) 构造一棵分析树.
bexpr bterm bfactor not bfactor
( bexpr ) bexpr or bterm bterm bfactor bfactor false
11
true
(c) 试说明此文法产生的语言是全体布尔表达式.
12
练习: 长度为n的字符串, 分别有多少个 前缀, 后缀, 子串, 真前缀, 子序列 ? 前缀: n+1 后缀: n+1 子串: 1+ n+(n-1)+...+1 = 1+n(n+1)/2 真前缀: n 子序列: 1+Cn1+Cn2+Cn3+...+Cnn = 2n
(a, (a,a)) S
(
L)
L,S
S( L )
a
S
a
4
(c) 给出句子的最左推导 给出每次推导后得到的句型的短语, 直接短语
最左推导 : 推导中任何一步 都是对中的最左非终结
lm 符号进行替换的推导.
短语
是文法的句型(S * ) S * A且A + 则是关于A的句型的短语.
直接短语
是文法的句型(S * ) S * A且A 则是关于A的句型的直接短语.
句柄: 一个句型的最左直接短语称为句柄.
5
S ( L ) ( L, S ) ( S, S ) ( a, S ) ( a, ( L ))
短语 ( L ) L, S S
a
a
( L, S ) S,S
a, S
a, ( L )
( S, S ) (a, S) ( a, ( L ))
(L)
直接 ( L ) L, S S
a
a
短语
(L)
( a, ( L, S )) ( a, ( S, S)) ( a, (a, S)) ( a, (a, a))
短语 a
a
a
a
a, ( L, S ) a, ( S, S)
a, (a, S) a, (a, a)
( a, ( L, S )) ( a, ( S, S)) ( a, (a, S)) ( a, (a, a))
15
(d) 0*10*10*10* 有且只有3个1的0、1字符串全体.
(e) ( 00 | 11)* ( ( 01 | 10 ) ( 00 | 11)* ( 01 | 10 ) ( 00 | 11)* )* 带有偶数个0和偶数个1的由0和1组成的符号串全体.
带有偶数个a和偶数个b的符号串全体. ( (aa|bb) | (ab|ba) (aa|bb)* (ab|ba) )*
L, S
S
a
a
(L, S)
S, S
a, S
a, a
( S, S)
( a, S)
( a, a)
直接 a
a
a
a
短语 L, S
S
a
a
6
a
(d) 构造各个句子的最右推导. 最右推导(规范推导)
(e) 这个文法产生的语言是什么? a (a) (a,a) ((a,a),a) ...... a和数据元素为a的广义表全体
lm
lm
lm
lm
lm
S aSbS abSaSbS abaSbS ababS abab
lm
lm
lm
lm
lm
句子abab有两个不同的最左推导, 该句子是二义性的 .
所以此文法是二义性的.
8
(b) 对于句子abab构造两个相应的最右推导.
S aSbS aSb abSaSb abSab abab
7
1.2 考虑文法
S aSbS | bSaS | (a) 试说明此文法是二义性的. (定义1.5) 如果一文法的句子存在两棵分析树, 则该句子是二义性的 . 如果一文法包含二义性的句子,则这个文法是二义性的.
可以从句子abab有两个不同的最左推导来说明.
S aSbS abS abaSbS ababS abab
编译原理习题
2003.4
1
目录
• chap 1 基本知识 • chap 3 词法分析 • chap 4 语法分析 • chap 5 语法制导翻译 • chap 6 运行时刻环境 • chap 7 中间代码生成 • chap 8 代码生成
2
第一章 练习
1.1 文法 S ( L ) | a
LL,S|S (a) 指出文法的终结符号, 非终结符号, 开始符号.
13
E E +T
T* F i
E
E +T
F
T* F
给出句型E+T*i的短语, 直接短语和句柄
短语: i, T*i, E+T*i 直接短语: i 句柄: i
给出句型F+T*F的短语, 直接短语和句柄
短语: F, T*F, F+T*F 直接短语: F, T*F 句柄: F
14
第三章 练习
3.3 试描述下列正规表达式所表示的语言:
rm
rm
rm
rm
rm
S aSbS aSbaSbS aSbaSb aSbab abab
rm
rm
rm
rm
rm
(c)对于句子abab构造两个相应的分析树.
S
S源自文库
aSbS
aSbS
bS aS
a S b S
(d) 此文法产生的语言是什么?
由相同个数的a和b组成的字符串.
9
1.3 考虑文法 bexpr bexpr or bterm | bterm bterm bterm and bfactor | bfactor bfactor not bfactor | ( bfactor ) | true | false
(a) 0 ( 0 | 1)* 0 由0和1组成且以0开始和结束的符号串全体.
(b) ( ( | 0 ) 1* ) * 由0和1组成的符号串全体.
(c) ( 0 | 1 )* 0 ( 0 | 1) ( 0 | 1) 由0和1组成且以000,001,010或011结束的符号串全体. 长度大于等于3且倒数第3个字符为0的01符号串全体.
文法的四个组成部分:
终结符号 VT : 语言不可再分的基本符号 非终结符号VN : 语法范畴(语法概念) 开始符号 S : 最终感兴趣的语法范畴
产生式 P :
定义语法范畴的一种书写形式
终结符号: ( , ) a 非终结符号: S L 开始符号: S
元语言符号: 表示“定义为” | 表示“或”
3
(b) 给出句子的分析树 分析树: (推导树) 表示一个句型的推导
相关文档
最新文档