编译原理:算符优先分析
1. 已知算符优先关系矩阵如下表:
+ |
* |
i |
( |
) |
# |
|
+ |
> |
< |
< |
< |
> |
> |
* |
> |
> |
< |
< |
> |
> |
i |
> |
> |
> |
> |
||
( |
< |
< |
< |
< |
= |
|
) |
> |
> |
> |
> |
||
# |
< |
< |
< |
< |
= |
写出符号串(i+i)*i#的算符优先分析过程。
- <=移进
- >归约
分析过程如下:
栈
关系
输入串
动作
1
#
<
(i+i)*i#
移进
2
#(
<
i+i)*i#
移进
3
#(i
>
+i)*i#
归约
4
#(N
<
+i)*i#
移进
5
#(N+
<
i)*i#
移进
6
#(N+i
>
)*i#
归约
7
#(N+N
>
)*i#
归约
8
#(N
=
)*i#
移进
9
#(N)
>
*i#
归约
10
#N
<
*i#
移进
11
#N*
<
i#
移进
12
#N*i
>
#
归约
13
#N*N
>
#
归约
14
#N
#
接受
2.接上个作业(P121练习1),完成4),5)两个步骤。
1)计算FIRSTVT和 LASTVT。
2)找三种关系对。
3)构造算符优先关系表。
4)是否算符优先文法?
5)给出输入串(a,(a,a))#的算符优先分析过程。
优先关系:
|
a |
^ |
( |
) |
, |
# |
a |
|
|
|
> |
> |
> |
^ |
|
|
|
> |
> |
> |
( |
< |
< |
< |
= |
< |
|
) |
|
|
|
> |
> |
> |
, |
< |
< |
< |
> |
> |
|
# |
< |
< |
< |
|
|
= |
4)是。
5)算符优先分析过程如下:
- <=移进
- >归约
栈
关系
输入串
动作
1
#
<
(a,(a,a))#
移进
2
#(
<
a,(a,a))#
移进
3
#(a
>
,(a,a))#
归约
4
#(N
<
,(a,a))#
移进
5
#(N,
<
(a,a))#
移进
6
#(N,(
<
a,a))#
移进
7
#(N,(a
>
,a))#
归约
8
#(N,(N
<
,a))#
移进
9
#(N,(N,
<
a))#
移进
10
#(N,(N,a
>
))#
归约
11
#(N,(N,N
>
))#
归约
12
#(N,(N
=
))#
移进
13
#(N,(N)
>
)#
归约
14
#(N,N
>
)#
归约
15
#(N
=
)#
移进
16
#(N)
>
#
归约
17
#N
#
接受