在目录中,什么是上下文相关语言?
产生形式为
αAβ → αγβ
其中 α, β ∈ (N ∪ T)*, A ∈ N; γ ∈ (N ∪ T)+,并且允许 S → λ 形式的规则,如果开始符号 S 未出现在任何规则的右侧。
这种语法生成的语言称为上下文相关语言。
每个上下文无关语法也是上下文相关的 =⇒ 上下文无关语言是上下文相关语言的子集(请参见乔姆斯基范式)。
但是,并非每个上下文相关语言都是上下文无关的。
示例
语言 {anbncn, n > 1} 是上下文相关的,但不是上下文无关的。
A grammar for this language is given by: S → aSBC | aBC, CB → HB, HB → HC, HC → BC, aB → ab, bB → bb, bC → bc, cC → cc A derivation e.g. aabbcc, using this grammar is: S ⇒ aSBC ⇒ aaBCBC (using S → aBC) ⇒ aabCBC (using aB → ab) ⇒ aabHBC (using CB → HB) ⇒ aabHCC (using HB → HC) ⇒ aabBCC (using HC → BC) ⇒ aabbCC (using bB → bb) ⇒ aabbcC (using bC → bc) ⇒ aabbcc (using cC → cc)
上下文相关语言也可以由单调语法生成,允许任何产生形式,只要没有规则用于使字符串变短(除了一个 S → ∧)!
广告