首页 > 其他 > 详细

读龙书学编译原理 语法分析(12)...

时间:2016-05-23 00:32:37      阅读:239      评论:0      收藏:0      [点我收藏+]

那么最后我就来看看这个所谓的lr(0)分析表生成算法 :

技术分享

这个算法乍一看好像又和前面脱节了, 但是如果仔细看之前的讲解, 比如下图, 仔细比较, 感受一下 ...

技术分享

你会发现 : 每次产生的D其实就相当于是一个新的状态, 那么再看一下closure 和 goto的具体实现 :

技术分享

不难发现closure其实就是把所有原推导式左侧点的右侧的非终结符(也就是即将探索的第一个非终结符)的推导式全部加入这个集合, 那么为什么要这样做呢 ? 因为这个算法是并行的, 比如上图, 在执行推导式0的时候, 他需要先完成推导式1, 完成之后再完成推导式0, 那么其实他真正需要的其实是1, 只有1完成之后才能完成0, 也就是说它真正需要的是一个终结符, 这个过程就是不断地化简非终结符得到终结符的过程... 这就是所谓的closure ... 至于goto, 其实就是把集合中所有得到x能够进行的转化求出来, 作为新的状态.

差不多就是这样, 其实这一波lr(0)确实有点卒, 但是仔细看看还是勉强能够理解的, 还是要看具体撸代码, 不撸代码也只是看看作为课外知识了解一下...

读龙书学编译原理 语法分析(12)...

原文:http://www.cnblogs.com/nzhl/p/5518206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!