一种上下文敏感的文法,其产生式为
α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 → ∧)!