编译原理题库.docVIP

  • 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

3

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)

1亿VIP精品文档

相关文档