LL(1)文法的预测分析表以及对某输入串的分析过程

举例说明LL(1)文法的预测分析,以及对(a,a)#的分析过程

文法G[S]

S->a

S->^

S->(T)

T->SN

N->,SN

N->#



 

是否=>#

First

Follow

S

{a,^,(}

{#,  ’,’ ,  ) }

T

{a,^,(}

{ ) }

N

{‘,’ , #}

{ ) }

 

Select(S->a) = {a}

Select(S->^) ={^}

Select(S->(T)) ={ ( }

Select(T->SN) = {a,^,(}

Select(N->,SN)={ , }

Select(N->#) ={ ) }



以上first,follow,select以及LL(1)文法的判断,推导过程可以在博主的另外一篇博客看见:点击打开链接


预测分析表为:

 

 

a

^

#

S

a

^

(T)

 

 

 

T

SN

SN

SN

 

 

 

N

 

 

 

N->#

,SN

 

 

 

 

以下是对输入串(a,a)#的分析过程:

 

步骤

分析栈

剩余输入串

推导所用产生式

1

#S

(a,a)#

S->(T)

2

#)T(

(a,a)#

( 匹配

3

#)T

a,a)#

T->SN

4

#NS

a,a)#

S->a

5

#Na

a,a)#

a匹配

6

#N

,a)#

N->,SN

7

#NS,

,a)#

,匹配

8

#NS

a)#

S->a

9

#Na

a)#

a匹配

10

#N

)#

N->#

11

#)

)#

)匹配

12

#

#

接受


你可能感兴趣的:(编译原理)