左分解语法与去除epsilon之间的关系

时间:2012-11-30 21:33:26

标签: grammar context-free-grammar

假设我使用下面的语法编译器

 S -> a | aB

如果我对它进行左分解,那就像(e是epsilon)

 S -> aC
 C -> B | e 

然后我想删除最终像

的epsilon
 S -> a | aC
 C -> B

注意看起来我再次需要执行左分解,这样做无限左分解并来回移除epsilon。难道我做错了什么 ??

是否需要为编译器删除左分解和epsilon语法?

1 个答案:

答案 0 :(得分:0)

在大多数情况下,您不需要进行任何转换。实际上,对于某些语法,左因子分解会为LALR(1)解析器生成器创建移位减少冲突。