第四章自顶向下的语法分析|利用LL(1)预测分析表进行语法分析

直接上题目。

例题1:给定文法G[S]

E ---> TE'

E' ---> +TE' | ε

T ---> FT'

T' ---> *FT' | ε

F ---> (E) | id

画出LL(1)预测分析表,并对输入串id1*id2+id3进行语法分析。

这里我直接给出LL(1)预测分析表

下面对输入串id1*id2+id3进行语法分析。

首行符号栈压入 # 和 开始字符 E。

输入串放入 id1*id2+id3 和 # 。

看符号栈的栈顶元素 和 输入串的首元素,找对应LL(1)分析表中的哪一个产生式。

例如:

STEP 0 中, 符号栈栈顶为E,输入串首元素为id。

到LL(1)分析表中,找第 E 行 第 id 列 对应的产生式 E ---> TE',即紧随其后的STEP 1要用的产生式就是 E ---> TE'。把该产生式填入STEP 1的所用产生式列。

把 E 弹出栈, 把 TE' 逆向压入栈中。得到 STEP 1符号栈为 #E'T

此时输入串未移进,原样抄回来。(只有在符号栈栈顶和输入串首字符刚好对应时,才同时弹出符号栈和输入串的元素

STEP符号栈输入串所用产生式
0#Eid1*id2+id3#
1#E'Tid1*id2+id3#E ---> TE'
2#E'T'Fid1*id2+id3#T ---> FT'
3#E'T'idid1*id2+id3#F ---> id
4#E'T'*id2+id3#
5#E'T'F**id2+id3#T' ---> *FT'
6#E'T'Fid2+id3#
7#E'T'idid2+id3#F ---> id
8#E'T'+id3#
9#E'+id3#T' ---> ε
10#E'T++id3#E' ---> +TE'
11#E'Tid3#
12#E'T'Fid3#T ---> FT'
13#E'T'idid3#F ---> id
14#E'T'#
15#E'#T' ---> ε
16##E' ---> ε

语法分析完毕!

下面给出预测分析法的实现步骤和算法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

访问宇宙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值