下推自动机与上下文无关文法的等价性及转换
1. 规则替换与测试
在处理下推自动机(PDA)规则时,有几个关键的规则替换步骤。
- 替换弹出两个或更多元素的规则 :基于特定设计思想的函数会替换那些弹出两个或更多元素的规则。辅助函数 convert-beta=1 会应用于每个弹出两个或更多元素的规则,它会创建所需的新状态以及该规则弹出过程的第一条和最后一条规则。中间规则由 gen-intermediate-rules 生成,该函数会遍历给定的状态列表,直到其长度为 1,每一步都会生成一个规则来弹出下一个元素并移动到下一个状态。同时,使用基于属性的测试来验证生成的规则,实现了一个谓词来测试所有生成的规则是否最多弹出一个元素,并使用 check-pred 和 generate-beta<2-rules 对不同的 PDA 规则列表进行测试。
- 更彻底的属性测试 :对于图 68 中的 replace-beta>=2 ,需要实现更彻底的基于属性的测试。例如,对于给定规则 r = ((P a betaβ)(Q thetaθ)) ,第一条规则必须从 P 开始,最后一条规则必须结束于 Q ,除了 Q 规则外,所有规则必须不读取和推送任何内容, Q 规则必须读取 a 并推送 thetaθ
超级会员免费看
订阅专栏 解锁全文

2888

被折叠的 条评论
为什么被折叠?



