开发生成语言的上下文相关语法
Develop a context-sensitive grammar that generates the language
谁能解释一下如何创建生成语言的上下文相关语法
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)我都觉得自己完全不知道怎么解决这些问题了。
谢谢。
语言定义L={i^n j^n k^m l^m | n,m ≥ 1}
表示非零数量的i
后跟与i
数量相同的j
后跟一个不同的非零数量的 k
后跟与 k
相同数量的 l
。
因此,从生成语言的两个独立部分的起始规则开始:
1. S → XY
添加生成 1 ij
和 1 kl
的规则:
2. iXj → ij
3. kYl → kl
添加生成多个 'nested' 集合的规则:
4. X → iXj
5. Y → kYl
例如iijjkkklll
的生成链是:
→1 XY
→4 iXjY
→4 iiXjjY
→2 iijjY
→5 iijjkYl
→5 iijjkkYll
→5 iijjkkkYlll
→3 iijjkkklll
谁能解释一下如何创建生成语言的上下文相关语法
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)我都觉得自己完全不知道怎么解决这些问题了。
谢谢。
语言定义L={i^n j^n k^m l^m | n,m ≥ 1}
表示非零数量的i
后跟与i
数量相同的j
后跟一个不同的非零数量的 k
后跟与 k
相同数量的 l
。
因此,从生成语言的两个独立部分的起始规则开始:
1. S → XY
添加生成 1 ij
和 1 kl
的规则:
2. iXj → ij
3. kYl → kl
添加生成多个 'nested' 集合的规则:
4. X → iXj
5. Y → kYl
例如iijjkkklll
的生成链是:
→1 XY
→4 iXjY
→4 iiXjjY
→2 iijjY
→5 iijjkYl
→5 iijjkkYll
→5 iijjkkkYlll
→3 iijjkkklll