自下而上语法分析

1.已知文法:

E→E+T | T

T→T*F | F

F→(E) | i

以句柄作为可归约串,写出符号串‘i+i*i#’的"移进-归约"分析过程。

2.P121练习1的(1)(2)。

1)计算FIRSTVT和 LASTVT。

2)找三种关系对。

3)构造算符优先关系表。

I + i * i

 

符号栈

输入串

动作

 

#

i + i * i #

移进

 

# i

+ i * i #

归约

 

# F

+ i * i #

归约

 

# T

+ i * i #

归约

 

# E

+ i * i #

移进

 

# E +

i * i #

移进

 

# E + i

* i #

归约

 

# E + F

* i #

归约

 

# E + T

* i #

移进

 

# E + T *

i #

归约

 

# E + T * i

#

 

S -> #E#

E -> E+T | T

T -> T*F | F

F -> (E) |i

1.

FirstVT(E) = { + , * , ( , i }

FirstVT(T) = { * , ( , i }

FirstVT(F) = { ( , i }

LastVT(E) = { + , * , ) , i }

LastVT(T) = { * , ) , i }

LastVT(F) = { ) , i }

2.符号对

= :

(E)

#E#

< :

#E

+T

#F

(E

> :

E#

E+

T*

E)

 

+

*

i

(

)

#

+

*

i

 

 

(

=

 

)

 

 

#

 

=

2.已知文法:

S -> a | ^ | (T)

T -> T , S | S

1)计算FIRSTVT和 LASTVT。

2)找三种关系对。

3)构造算符优先关系表。

因为:

E -> #S#

S -> a | ^ | (T)

T -> T , S | S

(1) 计算FIRSTVT和 LASTVT。

FisrtVT(S) = { a , ^ , ( }

FirstVT(T) = { a , ^ , ( , , }

LastVT(S) = { a , ^ , ) }

LastVT(T) = { a , ^ , ) , , }

(2) 找三种关系对。

= :

#S#

(T)

< :

#S

(T

,S

> :

S#

T)

T,

(3) 构造算符优先关系表。

 

a

^

(

)

,

#

a

 

 

 

^

 

 

 

(

=

)

 

 

 

,

#

=

原文地址:https://www.cnblogs.com/q1uj1e/p/11995331.html