本篇将使用非递归的预测分析来构建LL(1) Parser,下面就让我们开始吧:-)
1 目录
本系列旨在学习各种parser思路及技巧,分为以下几个部分
- 清晨入古寺—-论世间parser为何物
- 初日照高林—-初探First集,Follow集
- 曲径通幽处—-预测分析表的构建
- 禅房花木深—-实现LL(1) parser [本篇]
- 山光悦鸟性—-递归下降的两种实现
- 潭影空人心—-浅谈recursive ascent parser(SLR,LALR(1))
- 万籁此俱寂—-parser combinator(从ohm.js源码说起)
- 但余钟磬音—-反思与总结
2 非递归的预测分析
所谓的非递归预测分析就是使用之前构建的parsing table+stack来解析input buffer。
算法可以描述如下:
1 | stack=['S','$']; // S代表Start,表示起始符号,$表示栈为空 |
3 非递归的预测分析实现
1 | /** |