CFL 闭包属性

上下文无关语言在以下情况下封闭

  • Union
  • Concatenation
  • Kleene Star 操作

Union

假设 L1 和 L2 是两个上下文无关语言。那么 L1 ∪ L2 也是上下文无关的。

示例

假设 L1 = { anbn , n > 0}。相应的语法 G1 将具有 P:S1 → aAb|ab

假设 L2 = { cmdm , m ≥ 0}。相应的语法 G2 将具有 P: S2 → cBb| ε

L1 和 L2 的并集,L = L1 ∪ L2 = { anbn } ∪ { cmdm >

相应的语法 G 将具有附加生成 S → S1 | S2

连接

如果 L1 和 L2 是上下文无关语言,则 L1L2 也是上下文无关的。

示例

语言 L1 和 L2 的并集,L = L1L2 = { anbncmdm

相应的语法 G 将具有附加生成式 S → S1 S2

Kleene Star

如果 L 是上下文无关语言,则 L* 也是上下文无关的。

示例

设 L = { anbn , n ≥ 0}。相应的语法 G 将具有 P:S → aAb| ε

Kleene Star L1 = { anbn }*

相应的语法 G1 将具有附加产生式 S1 → SS1 | ε

上下文无关语言在 − 下不封闭

  • 交集 − 如果 L1 和 L2 是上下文无关语言,则 L1 ∩ L2 不一定是上下文无关的。

  • 与常规语言的交集 − 如果 L1 是常规语言,而 L2 是上下文无关语言,则 L1 ∩ L2 是上下文无关语言。

  • 补充 − 如果 L1 是上下文无关语言,则 L1' 可能不是上下文无关的。