自下而上语法分析

Posted q1uj1e

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自下而上语法分析相关的知识,希望对你有一定的参考价值。

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

 

 

 

^

 

 

 

(

=

)

 

 

 

,

#

=

 

以上是关于自下而上语法分析的主要内容,如果未能解决你的问题,请参考以下文章

语法分析:自下而上分析

编译原理随笔4(自下而上的语法分析-递归法)

语法分析:自下而上分析

语法分析:自下而上分析

编译原理之语法分析-自下而上分析

编译原理之语法分析-自下而上分析