具有某些不等式的上下文无关文法

context free grammar with certain inequalities

语言 L= {a^i b^j a^k | 的正确上下文无关语法是什么? j< i + k} ?

我想知道下面这个CFG的正确性-

S-> aaSbA | A | ^
A-> bAa | a

是否有任何标准规则来获取满足 j < i + k 的字符串?

请帮忙

通常的方法是将其分解为更简单的语言。从简单的重复语言开始:

La = { ai } -> ε | Laa
Lab = { aibi } - > ε | aLabb

现在您可以使用这些来构建您的语言。你语言的核心是LabLba .这给你相同的模式,但 j = i + k。所以要得到 <,你需要在之前或之后至少添加一个 a。所以你最终得到

S -> aLaLabLbaLa | LaLabL baLaa

现在这个语法有歧义,所以如果你关心这类事情,你可以重构它以消除(或至少减少)歧义,但这是另一个问题。