左递归文法中能否默认存在ε产生式?文法等价性疑问
文法等价性问题解答
这两个文法不等价,核心区别很明确:
- 对于文法
S->Sa|Sb,每次推导都必须给S追加a或b,根本无法推导出空串ε,它能生成的语言是所有由a、b组成的非空有限串(比如a、b、aa、ab等)。 - 而文法
S->Sa|Sb|ε可以直接推导出ε,同时也能生成所有由a、b组成的任意长度(包括0)的有限串。
在左递归消除的学习过程中要注意:原文法没有写S->ε,就不能默认它存在。左递归消除的常规方法不会自动给文法添加空串产生式,除非原文法本身就包含这类产生式,否则消除后的文法也不会涵盖空串的情况。
内容的提问来源于stack exchange,提问作者Vedant Jumle
相关产品推荐
相关产品推荐

