语言{a ^ i b ^ j c ^ i}的上下文无关语法

问题描述 投票:1回答:1

在锻炼期间,我应该为以下语言编写上下文无关的语法:

enter image description here

我不确定我是否完全理解这种方法,但这就是我所得到的。

由于我们至少需要1个c,并用任意数量的ab(可以为零)包围,所以我想到了以下CFG:

T --> aCb | aTb | C
C --> cS | cC
S --> empty

例如,从上面开始,如果没有至少1 c,我将永远无法创建字符串。但是我可以只用c而不用ab创建一个字符串。类似地,我可以使用aa ... c ... bb创建字符串(任意数量的ab仅1之间的c)以及任何与前一个相似的字符串,但也具有任意数量的c

但是,我觉得这个CTF比需要的要复杂一些。谁能告诉我如何改进,或者在错误的情况下-我所缺少的是什么?

编辑:在从[[rici得到一些好的输入之后,现在是:

T --> aTb | cC C --> cC | empty
通过除去任何冗余(例如可以通过aCbaTb实现的冗余C)以及非终端S。>

在锻炼过程中,我应该为以下语言编写无上下文语法:我不确定我是否完全理解该方法,但这就是我所得到的。由于我们至少需要1 c ...

compiler-construction context-free-grammar context-free-language
1个回答
1
投票
  1. 消除S。除了收款支票,它什么也没做。
© www.soinside.com 2019 - 2024. All rights reserved.