上下文無關語言是可以用上下文無關文法定義的形式語言。所有上下文無關語言的集合同一於下推自動機所接受的語言的集合。
一個原型上下文無關語言是
,它是所有非空、偶數長度字符串的語言,字符串的整個前半部分都是
,整個後半部分都是
。
由文法
生成,並被下推自動機
接受,這裡的
定義如下:





- 這裡的 z 是初始棧符號而 x 意味著彈出動作。
上下文無關語言在程式語言中有很多應用。大多數算術表達式可用上下文無關文法生成。
上下文無關語言閉合於下列運算下。就是說,如果 L 和 P 是上下文無關語言而 D 是正則語言,下列語言也是上下文無關語言:
- L 的 Kleene星號

- L 在字符串同態 φ 下的像 φ(L)
- L 和 P 的串接

- L 和 P 的併集

- L 和(正則語言)D 的交集

上下文無關語言不閉合於補集,交集或差集下。
上下文無關語言不閉合於交集下。其證明在 Sipser 97 中被作為習題給出。選用語言
和
,它們都是上下文無關的。它們的交集是
,它可以用上下文無關語言的泵引理證實為非上下文無關的。
上下文無關語言的下列問題是不可判定的:
- 等價:給定兩個上下文無關文法 A 和 B,
嗎?
嗎?
嗎?
嗎?
上下文無關語言的下列問題是可判定的:
嗎?
- L(A) 是有限的嗎?
- 成員關係:給定任何字 w,
嗎?(成員關係問題甚至是多項式可判定的 - 參見CYK算法)
|
---|
|
每個語言範疇都是其直接上面的範疇的真子集 每個語言範疇內的語言都可以用同一行的文法和自動機表示 |