2019/12/11-作业14
1. 已知算符优先关系矩阵如下表:
+ |
* |
i |
( |
) |
# |
|
+ |
> |
< |
< |
< |
> |
> |
* |
> |
> |
< |
< |
> |
> |
i |
> |
> |
> |
> |
||
( |
< |
< |
< |
< |
= |
|
) |
> |
> |
> |
> |
||
# |
< |
< |
< |
< |
= |
写出符号串(i+i)*i#的算符优先分析过程。
Stack | String | Action |
# | (i+i)*i# | Move |
#( | i+i)*i# | Move |
#(i | +i)*i# | Reduct |
#(N | +i)*i# | Move |
#(N+ | i)*i# | Move |
#(N+i | )*i# | Reduct |
#(N+N | )*i# | Reduct |
#(N | )*i# | Mov |
#(N) | *i# | Reduct |
#N | *i# | Move |
#N* | i# | Move |
#N*i | # | Reduct |
#N*N | # | Reduct |
#N | # | Accept |
2.接上个作业(P121练习1),完成4),5)两个步骤。
1)计算FIRSTVT和 LASTVT。
2)找三种关系对。
3)构造算符优先关系表。
4)是否算符优先文法?
是
5)给出输入串(a,(a,a))#的算符优先分析过程。
Stack | String | Action |
# | (a,(a,a))# | Move |
#( | a,(a,a))# | Move |
#(a | ,(a,a))# | Reduct |
#(N | ,(a,a))# | Move |
#(N, | (a,a))# | Move |
#(N,( | a,a))# | Move |
#(N,(a | ,a))# | Reduct |
#(N,(N | ,a))# | Move |
#(N,(N, | a))# | Move |
#(N,(N,a | ))# | Reduct |
#(N,(N,N | ))# | Reduct |
#(N,(N | ))# | Move |
#(N,(N) | )# | Reduct |
#(N,N | )# | Reduct |
#(N | )# | Move |
#(N) | # | Reduct |
#N | # | Accept |
3.尝试编写自下而上的语法分析程序。
可以只写表达式部分。
4.写出a+b*(c-d)+e/(c-d)↑n 的逆波兰表达式,三元式,四元式。
逆波兰表达式:abcd-*ecd-n↑/++
三元式:
(1) ( - , c, d )
(2) ( *, b, (1) )
(3) ( ↑, (1), n )
(4) ( /, e, (3) )
(5) ( +, a, (2) )
(6) ( +, (5), (4) )
四元式:
( -, c, d, (1) )
( *, b, (1), (2) )
( ↑, (1), n, (3) )
( /, e, (3), (4) )
( +, a, (2), (5) )
( +, (5), (4), (6) )