コンパイラの理論第九仕事

1. DFAの最小化:教科書P65質問9

ソリューション:

{1,2,3,4,5}

{6,7}

 

{1,2} B - > {2}

{3,4} B - > {6,7}

{5} B-> ε

 

{6,7}

II

{1,2} {3,4} {5}

{6,7}

 

{3} C - > {3}、{4} C - > {3}

{3} D - > {5}、{4} D - > {5}

{3} B - > {6}、{4} B - > {7}

従って区別できない{3,4}

 

{1} B - > {2}、{2} B - > {2}

{1} - > {3} {2} - > {4}

従って区別できない{1,2}

{6,7}区別できません

 

したがって、変換行列が最小化されます

 

 

A

B

C

D

1

{1,2}

{3,4}

{1,2}

 

 

2

{3,4}

 

{6,7}

{3,4}

{5}

3

{5}

{3,4}

 

 

 

4

{6,7}

 

{6,7}

 

 

 

そのため、DFAの最小化

 

 

 

 

 

 

2. DFA対応する文法の最小構成

S→0A | 1B

A→1S | 1

B→0S | 0

 

ソリューション:

S-> 0(1S | 1)| 1(0S | 0)

S-> 01S | 01 | 10S | 10

S-> 01S | 10S | 01 | 10

S - >(01 | 10)S |(01 | 10)

S - >(01 | 10)*(01 | 10)

これは、NFAです

 

 

 

 

 

変換行列でDFAに変換します。

 

 

0

1

1

ε {S} = {} SAD

{} EC

{BG}

2

{} EC

 

ε{によって} = {} ADF

3

{BG}

ε{によって} = {} ADF

 

4

{ADF}

{} EC

{BG}

DFAグラフを変換して得られる行列

 

 

 

 

 

 

 

 

 

{1,2,3}

{4}

 

{1} 0 - > {2}

{2} 0-> ε

{3} 0 - > {4}

 

{4}

II

{1} {2} {3}

{4}

 

一番最初に見つけたので、DFAを最小にするよう、DFAのほとんどされています

 

 

 

 

 

 

3.与えられる以下の文法  G [ S ]:

AB

→  を1aA  | ɛ 

→  B |  bBで

给出句子aaab 的一个自顶向下语法分析过程,并说明回溯产生的原因是什么?

 

解:

S -> AB

S -> aAB

S -> aaAB

S -> aaaAB

S -> aaaɛB

S -> aaaɛb

S -> aaab

回溯产生的原因:反复提取公共左因子

 

4.P100 练习4,反复提取公共左因子,对文法进行改写

解:

A->a( ɛ |C) | bAA

A->aA' | bAA

B->b( ɛ |C) | aBB

B->bB' | aBB

C->bA | aB

C->baA' | aB

C->a(bA' | B)

C->bAA | bB'

 

おすすめ

転載: www.cnblogs.com/renshenbenzuig/p/11815617.html