[英]How to remove left recursion from a grammar with beta missing?
这是问题所在:
A -> A*B | 一个+ CDE | 阿布
所有作品都以A开头。我想这满足规则吗? 如您所见,它缺少测试版。 如何对其执行左递归? 甚至可以对其执行左递归吗?
到目前为止我学到的是,如果它是这样的: A -> A*B | 一个+ CDE | 阿布 | b
然后我会将 b 视为 beta 并解决为:
A -> bA'
A' -> *BA' | +CDEA' | abA' | ε
没有测试版,我很困惑。 我认为什么是测试版?
在尝试删除右递归之前,您需要通过删除所有无用和非生产性非终端来减少语法。 由于A
是非生产性的(它没有非递归生产性),因此它将与使用它的任何生产性一起被淘汰。 这当然摆脱了右递归:-)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.