全球旧事资料 分类
三张SLR分析表以及针对这三张SLR分析表进行语义加工的语义动作。编译程序中语法分析处理及四元式生成部分主要是以二元式作为输入,并通过SLR分析表对语法分析处理过程进行控制,使四元式翻译的工作有条不紊的进行,同时识别语法分析中的语法错误。在处理if和while语句时,需要进行真值或假值的拉链和返填工作,以便转移目标的正确填入。
1控制语句的SLR分析表1设计过程如下:将扩展文法G’0)S’S1)SifeSelseS2)SwhileeS3)SL4)Sa5)LS6)LSL用∈_CLOSURE方法构造LR0项目规范簇为:I0:S’S
SifeSelseSSwhileeSSLSa
fI1S’SI2SifeSelseSI3SwhileeSI4SL
LSLSLSifeSelseSSwhileeSSLSaI5SaI6SifeSelseSSifeSelseSSwhileeSSLSaI7SwhileeSSifeSelseSSwhileeSSLSaI8SLI9LSLSLLSLLSSifeSelseSSwhileeSSLSaI10SaI11SifeSelseSI12SwhileeSI13SLI14SSLI15SifeSelseSSifeSelseSSwhileeSSLSaI16SifeSelseS
构造文法G’中非终结符的FOLLOW集如下:1)FOLLOWS’
f2)SifeSelseS得FOLLOWSelseSL得FOLLOWL
3S’S得FOLLOWSelseLS因为FIRSTS,所以FOLLOWSelse
在LR(0)项目规范簇中,只有I9有“移进——归约”冲突,LSLSL因为FOLLOWL∩FIRSTL∮所以可以用SLR方法解决以上冲突,最后我们得到的SLR分析表如下:
ACTION
GOTO
ifElsewhile

a

e

S
L
0
S2
S3
S4
S5
1
1
ACC
2
S6
3
S7
4
S2
S3
S4
S5
9
8
5
S10
6
S2
S3
S4
S5
11
7
S2
S3
S4
S5
12
8
S13
9
S2
S3
S4
R5
S5
9
14
10
R4
R4
R4
11
15
12
R2
R2
R2
13
R3
R3
R3
14
R6
15
S2
S3
S4
S5
16
16
R1
R1
R1
statici
tactio
2011021341511111111111111ACC11211111116111311111117111421341511198511111110111162134151111117213415111121811111311111192134105511191410110411104111104111111511111111112110211102111102111311031110311110311141111106111111
r
好听全球资料 返回顶部