为啥自底向上的parser很难手写
因为不像prolog,几乎所有其他语言都不支持回溯,所以你写parser自然就只能人肉回溯,变成自底向上的样子。
■网友
泻药,我处理过ASMParser ? D38029 Override ParseDirective 动机是为了GCC兼容 如何让LLVM更GCC compatible? 回到该问题,我并不知道如何bottom up来parse(例如)这个测试用例:llvm-mirror/llvm 我对寄存器分配 xiangzhai/llvm 更感兴趣 :)
■网友
首先CFG的parsing是一个pushdown automaton的模拟过程。为什么自顶向下的parser很好写是因为syntax tree的构建过程和函数的调用树的结构非常的一致,函数的调用栈和实际自动机的状态栈有一对一的关系,每一次状态转移的时候栈深度的变化不超过1(函数调用或函数返回)。而自底向上的parser在做reduction时涉及到撤销并替换多个符号,怎么确定边界就是轮子哥提到的回溯了。如果也通过一对一的符号映射的话,你可以想象一下如果你函数的调用链里经常会出现返回N次是多么的反人类。
■网友
【为啥自底向上的parser很难手写】 可能写着写着就发现实现了一个新的LR parser generator。
■网友
如果文法设计得当,还是可以写自顶向下的。但是,这就意味着可能要像课上讲的那样,消除左递归什么的
推荐阅读
- “花果经济”展现出贵州乡村繁荣向上新画卷
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?
