码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-23 00:35:22      阅读:154      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!