- 1
- 0
- 约1.76万字
- 约 21页
- 2026-02-27 发布于江苏
- 举报
第一章
什么就是编译器?
编译程序得结构分为几种阶段,各阶段得任务就是什么?
遍、编译前端及编译后端得含义?
编译程序得生成方式有哪些?
第二章
1、写一文法,使其语言就是偶正整数得集合。
规定:(1)允许0打头(2)?不允许0打头
解:(1)允许0开头得偶正整数集合得文法
E→NT|D
T→NT|D
N→D|1|3|5|7|9
D→0|2|4|6|8
(2)不允许0开头得偶正整数集合得文法
E→NT|D
T→FT|G
N→D|1|3|5|7|9
D→2|4|6|8
F→N|0
G→D|0
2、证实下述文法G[〈体现式〉]就是二义得。
〈体现式〉∷=a|(〈体现式〉)|〈体现式〉〈运算符〉〈体现式〉
〈运算符〉∷=+||*|/
解:可为句子a+a*a结构两个不一样得最右推导:
最右推导1〈体现式〉T〈体现式〉〈运算符〉〈体现式〉
T〈体现式〉〈运算符〉a
T〈体现式〉*a
T〈体现式〉〈运算符〉〈体现式〉*a
T〈体现式〉〈运算符〉a*a
T〈体现式〉+a*a
Ta+a*a
最右推导2〈体现式〉T〈体现式〉〈运算符〉〈体现式〉
T〈体现式〉〈运算符〉〈体现式〉〈运算符〉〈体现式〉
T〈体现式〉〈运算符〉〈体现式〉〈运算符〉a
T〈体现式〉〈运算符〉〈体现式〉*a
T〈体现式〉〈运算符〉a*a
T〈体现式〉+a*a
Ta+a*a
3、給出生成下述语言得上下文无关文法:
(1){anbnambm|n,m>=0}
(2){1n0m1m0n|n,m>=0}
解:(1){anbnambm|n,m=0}
S→AA
A→aAb|ε
(2){1n0m1m0n|n,m=0}
S→1S0|A
A→0A1|ε
第三章
1、结构一个DFA,它接受∑={a,b}上全部满足下述条件得字符串:字符串中得每个a都有至少一个b直接跟在其右边。
解:
已知∑={a,b},依照题意得出相应得得正规式为:(b*abb*)*
依照正规式画出相应得DFAM,如下列图所表达
用子集法将其拟定化
XY(b*abb*)*
X
Y
(b*abb*)*
X
Y
b*abb*
1
?
?
X
Y
b
1
2
3
4
5
6
b
b
a
?
?
?
?
?
?
I
Ia
Ib
{X,1,2,3,Y}
{4}
{2,3}
{4}
—
{5,6,1,2,3,Y}
{2,3}
{4}
{2,3}
{5,6,1,2,3,Y}
{4}
{6,1,2,3,Y}
{6,1,2,3,Y}
{4}
{6,1,2,3,Y}
I
Ia
Ib
0
1
2
1
—
3
2
1
2
3
1
4
4
1
4
由DFA得状态图用最小化方法化简得:{0},{1},{2},{3,4},按顺序重新命名DFAM’
102
1
0
2
4
3
a
a
a
a
b
b
b
b
b
0
3
1
2
a
a
a
b
b
b
第四章
练习1:文法G[V]:
V→N|N[E]E→V|V+EN→i
就是否为LL(1)文法,如不就是,如何将其改导致LL(1)文法。
解:
LL(1)文法得基本条件就是不含左递归与回溯(公共左因子),而G[V]中含有回溯,所以先消除回溯得到文法G’[V]:
G’[V]:V→NV’V’→ε|[E]
E→VE’E’→ε|+E
N→i
由LL(1)文法得充要条件可证G’[V]就是LL(1)文法
练习2:有文法G[s]:
S→BAA→BS|dB→aA|bS|c
(1)证实文法G就是LL(1)文法。
(2)结构LL(1)分析表。
(3)写出句子adccd得分析过程
解:(1)一个LL(1)文法得充要条件就是:对每一个非终结符A得任何两个不一样产生式A→α|β,有下面得条件成立:
①FIRST(α)∩FIRST(β)=Φ;
②若β*Tε,则有FIRST(α)∩FOLLOW(A)=Φ
对于文法G[s]:
S→BAA→BS|dB→aA|bS|c
其FIRST集如下:
FIRST(B)={a,b,c};FIRST(A)={a,b,c,d};FIRST(S)={a,b,c}。
其FO
原创力文档

文档评论(0)