编译原理陈意云-课后答案2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S
( L S a L , ( L S a
2017/8/23 luanj@mail.ustc.edu.cn 3
) S L , ) S a
3.1 (续) - (a,((a,a),(a,a)))
S =>(L) =>(L,S) =>(S,S) =>(a,S) =>(a,(L)) =>(a,(L,S)) =>(a,(S,S)) =>(a,((L),S)) =>(a,((L,S),S)) =>(a,((S,S),S)) =>(a,((a,S),S)) =>(a,((a,a),S)) =>(a,((a,a),(L))) =>(a,((a,a),(L,S))) =>(a,((a,a),(S,S))) =>(a,((a,a),(a,S))) =>(a,((a,a),(a,a))) S =>(L) =>(L,S) =>(L,(L)) =>(L,(L,S)) =>(L,(L,(L))) =>(L,(L,(L,S))) =>(L,(L,(L,a))) =>(L,(L,(S,a))) =>(L,(L,(a,a))) =>(L,(S,(a,a))) =>(L,((L),(a,a))) =>(L,((L,S),(a,a))) =>(L,((L,a),(a,a))) =>(L,((S,a),(a,a))) =>(L,((a,a),(a,a))) =>(S,((a,a),(a,a))) =>(a,((a,a),(a,a)))
5
3.2
• 考虑文法 S -> aSbS|bSaS|ε (a) 为句子abab构造两个不同的最左推导, 以说明此文法二义 (b) 为abab构造对应的最右推导 (c) 为abab构造对应的分析树 (d) 这个文法产生的语言是什么
2017/8/23
luanj@mail.ustc.edu.cn
6
3.2 (续)
a S
b S ε (2) a
b
S ε
S
ε
2017/8/23
luanj@mail.ustc.edu.cn
7
3.4
• 文法 R->R’|’R | RR | R* | (R) | a | b 产生字母表(a, b)上所有不含ε的正规式 该文法是二义的 (a) 证明该文法产生字母表{a,b}上的所有正 规式 (b) 为该文法写一个等价的非二义文法。 (c) 按照上面的两个文法构造ab|b*a的分析 树
E=>E|T=>E|F=>E|F*=>E|b* =>T|b*=>F|b*=>a|b*
2017/8/23 luanj@mail.ustc.edu.cn 10
3.4 (续) - ab|b*a
• 二义的
R R R a R bR b | R * R R a R a R R b R | R * R b R R a E
3.1 (续) - (a,(a,a))
S =>(L) S =>(L) =>(L,S) =>(L,S) =>(S,S) =>(L,(L)) =>(a,S) =>(L,(L,S)) =>(a,(L)) =>(L,(L,a)) =>(a,(L,S)) =>(L,(S,a)) =>(a,(S,S)) =>(L,(a,a)) =>(a,(a,S)) =>(S,(a,a)) =>(a,(a,a)) =>(a,(a,a))
luanj@mail.ustc.edu.cn 9
2017/8/23
3.4 (续)
• 该文法没有体现运算符 |、*、() 、并置的优 先级,因而是二义的。
R=>R|R=> a|R =>a|R*=>a|b* R=>R*=>R|R*=>a|R*=>a|b*
• E -> E’|’T | T T -> TF | F F -> F* | (E) | a | b
• (1) S=>aSbS=>abS=>abaSbS=>ababS=>abab (2) S=>aSbS=>abSaSbS=>abaSbS=>ababS=>abab • S=>aSbS=>aSb=>abSaSb=> abSab =>abab (2)
S a S ε b a S ε (1) 描述的语言是a,b数目相等的串 S b S ε S
编译原理习题课(2)
3.1
• 考虑文法 S -> (L)|a L -> L,S|S (a) 建立句子(a,(a,a))和(a,((a,a),(a,a)))的分 析树 (b) 为(a)的两个句子构造最左推导 (c) 为(a)的两个句子构造最右推导 (d) 这个文法产生的语言是什么
2017/8/23 luanj@mail.ustc.edu.cn 2
非二义的
E | T F bF b F * T F a
…
T F a
T
2017/8/23
luanj@mail.ustc.edu.cn
11
3.5
• 下面的条件语句文法
stmt->if expr then stmt | matched_stmt matched_stmt -> if expr then matched_stmt else stmt | other 试图消除悬空else的二义性。请证明此文法仍 是二义的。
2017/8/23 luanj@mail.ustc.edu.cn 8
3.4 (续)
• 证明该文法产生字母表{a,b}上的所有正规式 证明: 1)该文法产生的串是字母表{a,b}上的正规式 R->a和R->b产生a,b,而a,b是{a,b}上的符号,因此是正规式。 若R1,R2产生正规式α,β 则: R->R1R2产生正规式αβ R->R1|R2产生正规式α|β R->R1* 产生正规式α* R->(R1)产生正规式 (α) 2)字母表{a,b}上的所有正规式都可由此文法产生 字母表{a,b}上的任一正规式(其中α,β 为正规式)必为以下形式之一: αβ ,可由R->RR产生 α|β ,可由R->R|R产生 α*,可由R->R*产生 (α),可由R->(R)产生 a,可由R->a产生 b,可由R->b产生 因而,该文法产生字母表{a,b}上的所有正规式
S ( L S a L S L , ) S
(
L
, (
)
S L , ) S
(
L S
L
,
)
S a
Βιβλιοθήκη Baidu
L S a
a
2017/8/23
luanj@mail.ustc.edu.cn
4
a
3.1 (续)
• 描述的语言: 括号匹配的串,串中的各项由”,”隔开, 项可以是括号匹配的子串或a
2017/8/23
luanj@mail.ustc.edu.cn
( L S a L , ( L S a
2017/8/23 luanj@mail.ustc.edu.cn 3
) S L , ) S a
3.1 (续) - (a,((a,a),(a,a)))
S =>(L) =>(L,S) =>(S,S) =>(a,S) =>(a,(L)) =>(a,(L,S)) =>(a,(S,S)) =>(a,((L),S)) =>(a,((L,S),S)) =>(a,((S,S),S)) =>(a,((a,S),S)) =>(a,((a,a),S)) =>(a,((a,a),(L))) =>(a,((a,a),(L,S))) =>(a,((a,a),(S,S))) =>(a,((a,a),(a,S))) =>(a,((a,a),(a,a))) S =>(L) =>(L,S) =>(L,(L)) =>(L,(L,S)) =>(L,(L,(L))) =>(L,(L,(L,S))) =>(L,(L,(L,a))) =>(L,(L,(S,a))) =>(L,(L,(a,a))) =>(L,(S,(a,a))) =>(L,((L),(a,a))) =>(L,((L,S),(a,a))) =>(L,((L,a),(a,a))) =>(L,((S,a),(a,a))) =>(L,((a,a),(a,a))) =>(S,((a,a),(a,a))) =>(a,((a,a),(a,a)))
5
3.2
• 考虑文法 S -> aSbS|bSaS|ε (a) 为句子abab构造两个不同的最左推导, 以说明此文法二义 (b) 为abab构造对应的最右推导 (c) 为abab构造对应的分析树 (d) 这个文法产生的语言是什么
2017/8/23
luanj@mail.ustc.edu.cn
6
3.2 (续)
a S
b S ε (2) a
b
S ε
S
ε
2017/8/23
luanj@mail.ustc.edu.cn
7
3.4
• 文法 R->R’|’R | RR | R* | (R) | a | b 产生字母表(a, b)上所有不含ε的正规式 该文法是二义的 (a) 证明该文法产生字母表{a,b}上的所有正 规式 (b) 为该文法写一个等价的非二义文法。 (c) 按照上面的两个文法构造ab|b*a的分析 树
E=>E|T=>E|F=>E|F*=>E|b* =>T|b*=>F|b*=>a|b*
2017/8/23 luanj@mail.ustc.edu.cn 10
3.4 (续) - ab|b*a
• 二义的
R R R a R bR b | R * R R a R a R R b R | R * R b R R a E
3.1 (续) - (a,(a,a))
S =>(L) S =>(L) =>(L,S) =>(L,S) =>(S,S) =>(L,(L)) =>(a,S) =>(L,(L,S)) =>(a,(L)) =>(L,(L,a)) =>(a,(L,S)) =>(L,(S,a)) =>(a,(S,S)) =>(L,(a,a)) =>(a,(a,S)) =>(S,(a,a)) =>(a,(a,a)) =>(a,(a,a))
luanj@mail.ustc.edu.cn 9
2017/8/23
3.4 (续)
• 该文法没有体现运算符 |、*、() 、并置的优 先级,因而是二义的。
R=>R|R=> a|R =>a|R*=>a|b* R=>R*=>R|R*=>a|R*=>a|b*
• E -> E’|’T | T T -> TF | F F -> F* | (E) | a | b
• (1) S=>aSbS=>abS=>abaSbS=>ababS=>abab (2) S=>aSbS=>abSaSbS=>abaSbS=>ababS=>abab • S=>aSbS=>aSb=>abSaSb=> abSab =>abab (2)
S a S ε b a S ε (1) 描述的语言是a,b数目相等的串 S b S ε S
编译原理习题课(2)
3.1
• 考虑文法 S -> (L)|a L -> L,S|S (a) 建立句子(a,(a,a))和(a,((a,a),(a,a)))的分 析树 (b) 为(a)的两个句子构造最左推导 (c) 为(a)的两个句子构造最右推导 (d) 这个文法产生的语言是什么
2017/8/23 luanj@mail.ustc.edu.cn 2
非二义的
E | T F bF b F * T F a
…
T F a
T
2017/8/23
luanj@mail.ustc.edu.cn
11
3.5
• 下面的条件语句文法
stmt->if expr then stmt | matched_stmt matched_stmt -> if expr then matched_stmt else stmt | other 试图消除悬空else的二义性。请证明此文法仍 是二义的。
2017/8/23 luanj@mail.ustc.edu.cn 8
3.4 (续)
• 证明该文法产生字母表{a,b}上的所有正规式 证明: 1)该文法产生的串是字母表{a,b}上的正规式 R->a和R->b产生a,b,而a,b是{a,b}上的符号,因此是正规式。 若R1,R2产生正规式α,β 则: R->R1R2产生正规式αβ R->R1|R2产生正规式α|β R->R1* 产生正规式α* R->(R1)产生正规式 (α) 2)字母表{a,b}上的所有正规式都可由此文法产生 字母表{a,b}上的任一正规式(其中α,β 为正规式)必为以下形式之一: αβ ,可由R->RR产生 α|β ,可由R->R|R产生 α*,可由R->R*产生 (α),可由R->(R)产生 a,可由R->a产生 b,可由R->b产生 因而,该文法产生字母表{a,b}上的所有正规式
S ( L S a L S L , ) S
(
L
, (
)
S L , ) S
(
L S
L
,
)
S a
Βιβλιοθήκη Baidu
L S a
a
2017/8/23
luanj@mail.ustc.edu.cn
4
a
3.1 (续)
• 描述的语言: 括号匹配的串,串中的各项由”,”隔开, 项可以是括号匹配的子串或a
2017/8/23
luanj@mail.ustc.edu.cn