第十三次作业——自下而上语法分析
1.已知文法:
E→E+T | T
T→T*F | F
F→(E) | i
以句柄作为可归约串,写出符号串‘i+i*i#’的"移进-归约"分析过程。
知识点:
Firstvt
找Firstvt的三条规则:如果要找A的Firstvt,A的候选式中出现:
A->a.......,即以终结符开头,该终结符入Firstvt
A->B.......,即以非终结符开头,该非终结符的Firstvt入A的Firstvt
A->Ba.....,即先以非终结符开头,紧跟终结符,则终结符入Firstvt
Lastvt
找Lastvt的三条规则:如果要找A的Lastvt,A的候选式中出现:
A->.......a,即以终结符结尾,该终结符入Lastvt
A->.......B,即以非终结符结尾,该非终结符的Lastvt入A的Lastvt
A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt
1)求FIRSTVT和LASTVT
FIRSTVT(E) = {+,*,(,i}
FIRSTVT(T) = {*,(,i}
FIRSTVT(F) = {(,i}
LASTVT(E) = {+,*,),i}
LASTVT(T) = {*,),i}
LASTVT(F) = {),i}
2)符号对:
=
(E)
<
+T
*F
(E
>
E+
T*
E)
3)优先关系表的构造
|
+ |
* |
( |
) |
i |
+ |
> |
< |
< |
> |
< |
* |
> |
> |
< |
> |
< |
( |
< |
< |
< |
= |
< |
) |
> |
> |
|
> |
|
i |
> |
> |
|
> |
|
2.P121练习1的(1)(2)。
E→#S#
S→a|^|(T)
T→T,S|S
1)计算FIRSTVT和 LASTVT。
FIRSTVT(S) = {a,^,(}
FIRSTVT(T) = {逗号,a,^,(}
LASTVT(S) = {a,^,)}
LASTVT(T) = {逗号,a,^,)}
2)找三种关系对。
=
#S#
(T)
<
#S
(T
,S
>
S#
T)
T,
3)构造算符优先关系表。
|
^ |
, |
( |
) |
a |
# |
^ |
|
> |
|
> |
|
> |
, |
< |
> |
< |
> |
< |
|
( |
< |
< |
< |
= |
< |
|
) |
|
> |
|
> |
|
> |
a |
|
> |
|
> |
|
> |
# |
< |
|
< |
|
< |
= |