Programming languages 开发生成语言的上下文敏感语法
有人能解释一下如何创建一个上下文敏感的语法来生成这种语言吗Programming languages 开发生成语言的上下文敏感语法,programming-languages,computer-science,Programming Languages,Computer Science,有人能解释一下如何创建一个上下文敏感的语法来生成这种语言吗 L={i^n j^n k^m L^m|n,m≥ 1} 这就是我目前得到的:(我不确定这是否正确) 如果您能一步一步地解释,如何正确地做,或者如何检查答案,我将不胜感激。因为即使在阅读了这本书中关于CFG(CSG)的内容后,我也完全不知道如何解决这些问题 谢谢。语言定义L={i^n j^n k^m L^m | n,m≥ 1} 是指非零数量的is,后面是与is相同数量的js,后面是不同的非零数量的ks,后面是与ks相同数量的ls 因此,从
L={i^n j^n k^m L^m|n,m≥ 1}
这就是我目前得到的:(我不确定这是否正确)
如果您能一步一步地解释,如何正确地做,或者如何检查答案,我将不胜感激。因为即使在阅读了这本书中关于CFG(CSG)的内容后,我也完全不知道如何解决这些问题
谢谢。语言定义
L={i^n j^n k^m L^m | n,m≥ 1}
是指非零数量的i
s,后面是与i
s相同数量的j
s,后面是不同的非零数量的k
s,后面是与k
s相同数量的l
s
因此,从一个起始规则开始生成语言的两个独立部分:
1. S → XY
添加用于生成1ij
和1kl
的规则:
2. iXj → ij
3. kYl → kl
添加用于生成多个“嵌套”集的规则:
4. X → iXj
5. Y → kYl
例如,iijjkklll
的生成链是:
→1 XY
→4 iXjY
→4 iiXjjY
→2 iijjY
→5 iijjkYl
→5 iijjkkYll
→5 iijjkkkYlll
→3 iijjkkklll
首先,它不可能是正确的,因为语言的描述是关于
i
,j
,k
和l
,而你的语法使用a
,b
,c
和d
。非常感谢你的解释。我想说清楚:比如说,如果我有L={i^n j^n k^m L^m p^o q^o | m,n,o>=1},那么会有1.S->XYZ和pZq?如果在您指定的语言中有,m,n,o
值是终端符号的重复次数,该怎么办。因此,是的,S
开始规则将具有Z
非终端符号,允许您为p
和q
终端符号提供规则
→1 XY
→4 iXjY
→4 iiXjjY
→2 iijjY
→5 iijjkYl
→5 iijjkkYll
→5 iijjkkkYlll
→3 iijjkkklll