假设我使用下面的语法编译器
S -> a | aB
如果我对它进行左分解,那就像(e是epsilon)
S -> aC
C -> B | e
然后我想删除最终像
的epsilon S -> a | aC
C -> B
注意看起来我再次需要执行左分解,这样做无限左分解并来回移除epsilon。难道我做错了什么 ??
是否需要为编译器删除左分解和epsilon语法?
答案 0 :(得分:0)
在大多数情况下,您不需要进行任何转换。实际上,对于某些语法,左因子分解会为LALR(1)解析器生成器创建移位减少冲突。