有人可以解释如何创建生成语言的上下文敏感语法
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)之后,我也完全失去了解决这些问题的方法。
谢谢。
答案 0 :(得分:-1)
语言定义L={i^n j^n k^m l^m | n,m ≥ 1}
表示非{0}个i
s,后跟j
个i
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