上下文无关语言(CFL)是一种由上下文无关文法或类型 2 文法(根据乔姆斯基分类)生成并被下推自动机接受的语言。
上下文无关语言的一些非常重要的特性是:
正则无上下文语言是非正则 PDA 语言。
闭合属性:
上下文无关语言在某些特定操作下是封闭的,封闭意味着在对上下文无关语言执行该操作后,生成的语言也将是上下文无关语言。一些这样的操作是:
- 联合行动
- 级联
- Kleene 闭合
- 反转操作
- 同态
- 逆同态
- 代换
- 初始化或前缀操作
- 普通语言的商数
- 循环操作
- 与常规语言结合
- 与常规语言的交集
- 与常规语言的区别
上下文无关语言在某些特定操作下不是封闭的,非封闭意味着在对上下文无关语言执行该操作后,生成的语言不再是上下文无关语言。
一些这样的操作是:
- 路口
- 补充
- 子集
- 超集
- 无限联合
- 差、对称差(异或、与非或任何其他简化为交和补的运算
决策属性:
- 成员资格测试:可决定。
- 空虚检验:可判定
- 测试有限性:可判定
其余的决策属性在上下文无关语言中是不可判定的。
确定性属性:
上下文无关语言可以是:
- DCFL-Deterministic(可以被确定性下推自动机识别)上下文无关语言
- NDCFL-非确定性(DPDA 无法识别,但 NPDA 无法识别)上下文无关语言。