文法G定义为四元组(VN,VT,P,S ),其中 VN为非终结符号(或语法实体,或变量)集; VT为终结符号集; P为产生式(也称规则)的集合; S称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。 VN,VT和P是非空有穷集。 VN和VT不含公共的元素,即VN ∩ VT = φ 用V表示VN ∪ VT ,称为文法G的字母表或字汇表
规则(重写规则、产生式或生成式)是形如α→β或α∷=β的(α,β)有序对,其中α是字母表V的正闭包V+中的一个符号,β是V*中的一个符号。α称为规则的左部,β称作规则的右部。 例如 文法G=(VN,VT,P,S) VN = { S }, VT ={ 0, 1 } P={ S→0S1, S→01 }, S为开始符号 再如: 文法G=(VN,VT,P,S) VN ={<标识符>,<字母>,<数字>} VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S=<标识符>
最通俗的例子:
G=(Vt,Vn,S,P)
其中:
Vt={张三,李四,愉快地,高兴的,吃饭,游泳}
Vn={句子,主语,谓语,状语}
S={句子}
P:
句子-->主语谓语
句子-->主语状语谓语
主语-->张三|李四
谓语-->吃饭|游泳
状语-->愉快地|高兴地
那么:
"张三吃饭" 是正确的句子
"张三李四游泳" 不是正确的句子
本例子引自confu的博客
推荐一个网上的学习地址:http://www.xinx.sdnu.edu.cn/sfzx/jpsykc/lfa/Chap03.html#(1)
补充多一个:http://www.cnblogs.com/6DAN_HUST/archive/2008/12/24/1361553.html(本人觉得第二个讲得比较易懂,不过最好结合起来看)