社区
数据结构与算法
帖子详情
编译原理构造LR分析表
cdsn09
2009-06-27 04:48:47
给一个文法,如何求它的LR分析表?
表中的状态、action(动作)、goto(转换)分别怎么填??就是那些r1,r2…,s1,s2等等。请高手给详细解答。有解决问题的追加100分。
...全文
175
1
打赏
收藏
编译原理构造LR分析表
给一个文法,如何求它的LR分析表? 表中的状态、action(动作)、goto(转换)分别怎么填??就是那些r1,r2…,s1,s2等等。请高手给详细解答。有解决问题的追加100分。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oyzdz1988
2009-06-27
打赏
举报
回复
这个看教材啊,教材说得够详细的了。。。
说下r1,r2...和s1,s2...
ri 表示按文法的第i个产生式进行归约
si 表示移进并转至第i个状态
具体做的流程是先将文法进行扩展,构造识别活前缀的DFA,然后就可以进行填表了,
先填goto表吧,那可以根据DFA来,一行一行的填,就是看从此状态经非终结符所转向的状态
然后再填si,同上类似,不过这是看从此状态经终结符转向的状态
最后比较麻烦的一点是填rk,这就要先看DFA的所有项目集,看那此项目集中有可归约的项目,比如是A->a. 是文法的第k个产生式,
则对每个FOLLOW(A)如a, action[i,a] = rk。
编译原理
实验
LR
分析
表
构造
LR
分析
器
LR
分析
器工作过程算法描述: 一个
LR
分析
器的工作过程可看成是栈里的状态序列,已规约串和输入串所构成的三元式的变化过程。
分析
开始时的初始三元式为 (s0, #, a1a2……an#) 其中,s0为
分析
器的初态;#为句子的左括号;a1a2……an为输入串;其后的#为结束符(句子右括号)。
分析
过程每步的结果可
表
示为 (s0s1……sm, #X1X2……Xm ai, ai+1……an#)
分析
器的下一步动作是由栈顶状态sm和现行输入符号ai所唯一决定的。即,执行ACTION(sm,ai)所规定的动作。经执行每种可能的动作之后,三元式的变化情形是: (1) 若ACTION(sm,ai)为移进,且s = GOTO(sm,ai),则三元式变成: (s0s1……sm s, #X1X2……Xm ai, ai+1……an#) (2) 若ACTION(sm,ai)= {A→β},则按照产生式A→β进行规约。此时三元式变为 (s0s1……sm s, #X1X2……Xm A, ai ai+1……an#) 此处s = GOTO(Sm-r,A),r为β的长度,β = Xm-r+1……Xm。 (3) 若ACTION(sm,ai)为“接受”,则三元式不再变化,变化过程终止,宣布
分析
成功。 (4) 若ACTION(sm,ai)为“报错”,则三元式的变化过程终止,报告错误。 一个
LR
分析
器的工作过程就是一步一步的变换三元式,直至执行“接受”或“报错”为止。
编译原理
规范
LR
分析
表
的
构造
PPT学习教案.pptx
编译原理
规范
LR
分析
表
的
构造
PPT学习教案.pptx
编译原理
课程设计
LR
(0)
分析
器自动
构造
程序.doc
编译原理
课程设计
LR
(0)
分析
器自动
构造
程序
编译原理
LR
(1)
分析
表
自动
构造
程序的实现
编译原理
LR
(1)
分析
表
自动
构造
程序的实现 代码源程序
编译原理
课程设计:根据
LR
分析
表
构造
LR
分析
器
1. 根据给定文法和
LR
分析
表
,
构造
LR
分析
器,并要求输出
LR
工作过程。2. 根据
LR
分析
器
分析
过程算法,程序能够准确输出
LR
分析
器工作过程。通过action()和goto_char()两个函数即可实现算法的功能。另外,还需开辟三个堆栈区,一个状态栈,一个符号栈,一个输入串栈。用于存放工作过程中移进――规约信息。
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章