1. 上下文无关文法(一)¶
1.1. 上下文无关语言¶
在前几章中,我们看到有些语言是正则语言, 这意味着我们可以定义一个能识别该语言的 DFA 或 NFA, 或者我们可以用正则表达式或正则文法来表示它。 这里有几个正则语言的例子:
编程语言中的关键字
标识符的名字
整数
一列有限的杂项符号,如 \(=\)。
我们还知道有些语言是非正则的, 并且学会了如何使用泵引理之类的工具来证明给定的语言是非正则的。 非正则语言的例子包括:
\(\{a^ncb^n\ |\ n > 0\}\)
数学表达式,如 \(((a + b) - c)\)
编程语言的块结构(Java/C++ 中的 \(\{\}\) 以及 Pascal 中的
begin...``end`` )括号匹配
现在我们将研究一类比正则语言类更大的语言类, 称为 上下文无关语言 或 CFG。 也许不足为奇,CFL 就是任何可以用 上下文无关文法 或 CFG 表示的语言。

