码迷,mamicode.com
首页 > 其他好文 > 详细

自下而上语法分析

时间:2019-12-06 15:09:18      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:rar   center   val   p12   tab   padding   句柄   aci   ali   

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

 

 

 

^

 

 

 

(

=

)

 

 

 

,

#

=

 

自下而上语法分析

标签:rar   center   val   p12   tab   padding   句柄   aci   ali   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!