上下文无关语法设计

时间:2019-03-06 00:05:00

标签: context-free-grammar context-free-language automata-theory

我正在学习上下文无关文法,到目前为止,我一直都在理解它们,但是这个问题有点使我头昏脑胀。

Description of language

我有以下规则:

S --> aSb | bB | epsilon
B --> bbB | bB | epsilon

我几乎可以肯定它们是不正确的。我知道我将只做i <= j而不是实际的语言,但是做j <= 3i的想法对我来说真的很难理解,我也不真正理解我应该如何在CFG中表示。 / p>

我在这里阅读了一些有关CFG设计的问题和线索,但是它们并没有真正帮助我确定答案的策略。

在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

对于字符串中的任何a,您必须在该字符串中包含1个,2个或3个b

b必须遵循a

您可以有零个a

S = A S B | e
A = a
B = b | bb | bbb

a表示没有b

一个a允许1、2或3个b

通过S进行递归,您可以拥有任意数量的a

答案 1 :(得分:0)

您的解决方案确实是不正确的,因为不遵守条件j <= 3i。

比Björn的解决方案更接近您的意图,并且使用的非终结符更少:

S -> aSb | aSbb | aSbbb | epsilon