形式文法
在计算机科学中,形式语言是某个字母表上一些有限长字串的集合,而形式文法是描述这个集合的一种方法。形式文法之所以这样命名,是因为它与人类自然语言中的文法相似的缘故。
形式文法描述形式语言的基本想法是,从一个特殊的初始符合出发,不断的应用一些产生式规则,从而生成出一个字串的集合。产生式规则指定了某些符号组合如何被另外一些符号组合替换。举例来说,假设字母表只包含 'a' 和 'b' 两个字符,初始符号是 'S' ,我们应用下述规则:
1. S -> aSb
2. S -> ba
于是我们可以通过把 "S" 重写为 "aSb"(规则1),我们还可以继续应用这条规则把 "aSb" 重写为 "aaSbb"。这个重写的过程不断重复,直到结果中只包含字母表中的字母为止。在例子中,我们可以得到 S -> aSb -> aaSbb -> aababb 这样的结果。由文法刻画的语言包含了所有可以这样产生的字串,比如 ba, abab, aababb, aaababbb 等等。
形式定义
一个形式文法 G 是下述元素构成的一个元组(N, Σ, P, S):----有些书上也写成(V,T,S,P)
非终结符号集合 N。
终结符号集合 Σ ,Σ 与 N 无交。
取如下形式的一组产生式规则 P,
(Σ ∪ N)*中