开发生成语言的上下文敏感语法

时间:2015-10-29 00:15:14

标签: programming-languages computer-science

有人可以解释如何创建生成语言的上下文敏感语法

L={i^n j^n k^m l^m | n,m ≥ 1}

这是我到目前为止所得到的:(我不确定它是对的)

S → IJ
I → iIX | iX; 
J → jJl | jYl; 
Xj → jX;
XY → Yk;
Y→ε.

如果您将逐步解释,如何正确地执行或任何路径如何检查答案,我将不胜感激。因为即使在阅读了书中的CFG(CSG)之后,我也完全失去了解决这些问题的方法。

谢谢。

1 个答案:

答案 0 :(得分:-1)

语言定义L={i^n j^n k^m l^m | n,m ≥ 1}表示非{0}个i s,后跟ji s,与k s相同,后跟不同数量为l的非零数字后跟与k s相同的1. S → XY 个数。

因此,从一个起始规则开始,生成语言的两个独立部分:

ij

添加生成1 kl和1 2. iXj → ij 3. kYl → kl 的规则:

4. X → iXj
5. Y → kYl

添加用于生成多个“嵌套”集的规则:

iijjkkklll

例如,→1 XY →4 iXjY →4 iiXjjY →2 iijjY →5 iijjkYl →5 iijjkkYll →5 iijjkkkYlll →3 iijjkkklll 的代链是:

indexDict[str]!.append