在锻炼期间,我应该为以下语言编写上下文无关的语法:
我不确定我是否完全理解这种方法,但这就是我所得到的。
由于我们至少需要1个c,并用任意数量的a和b(可以为零)包围,所以我想到了以下CFG:
T --> aCb | aTb | C
C --> cS | cC
S --> empty
例如,从上面开始,如果没有至少1 c,我将永远无法创建字符串。但是我可以只用c而不用a或b创建一个字符串。类似地,我可以使用aa ... c ... bb创建字符串(任意数量的a和b仅1之间的c)以及任何与前一个相似的字符串,但也具有任意数量的c。
但是,我觉得这个CTF比需要的要复杂一些。谁能告诉我如何改进,或者在错误的情况下-我所缺少的是什么?
编辑:在从[[rici得到一些好的输入之后,现在是:
T --> aTb | cC
C --> cC | empty
通过除去任何冗余(例如可以通过aCb
和aTb
实现的冗余C
)以及非终端S
。>在锻炼过程中,我应该为以下语言编写无上下文语法:我不确定我是否完全理解该方法,但这就是我所得到的。由于我们至少需要1 c ...
S
。除了收款支票,它什么也没做。