又一个lr(1)实现
yalr的Python项目详细描述
又一个lr实现
这是经典lr(1)解析的另一个实现 算法,以及knuth的lr(1)表生成算法。
而不是遵循yacc和require这样的工具模型 外部代码生成,此库是动态驱动的 来自python代码。
一个显而易见的问题是,“为什么?“
两个原因:
首先,尝试使用表面语法来表达 python中的语法以尽可能不受影响的方式编写。
包“ptk”采用了类似的方法。
第二,提供一个看别人的游乐场 “尖端”解析算法,作为改进的基础 我自己对他们的理解。
所谓“尖端”,我主要指的是20世纪70年代末。
当前的实现很大程度上受到yacc的启发, 包括yacc的各种缺陷:
- 有一个用于减少/减少冲突的线性化 分辨率;
- 有一个用于标记优先权的线性化。
实际上,很容易被这两样东西咬 默认的shift/reduce分辨率被屏蔽 错误。一个更灵活的偏序当然是可行的。
学分
测试中包含的一些示例语法是派生的 从16岁起我就有了《红龙记》; 这本书确实塑造了我的生活。
我不知道以后参考号是怎么排列的 增加。
Compilers: Principles, Techniques, and Tools (1986) by Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman