S -> N V N (名词 动词 名词)
N -> s // 羊| t // 老虎| g // 草| w // 水
V -> e // 吃| d // 喝
上下文无关文法
上下文无关文法G是一个四元组:G = (T, N, S, P)
T–终结符集合
N–非终结符集合
S–唯一的开始符号
P–一组产生式规则
每条规则的形式:X -> ß1 ß2 … ßn,其中X属于N,ßi属于T和N的集合
S -> N V N // (名词 动词 名词)
N -> s // 羊 G = (N, T, S, P)| t // 老虎 非终结符:N = {S, N, V}| g // 草 终结符:T = {s, t, g, w, e, d}| w // 水 开始符:S
V -> e // 吃 产生式规则集合:{左边所示}| d // 喝
上下文无关文法的例子
E -> num // G = (N, T, P, S)
| id // 非终结符:N = {E}
| E + E // 终结符:T = {num, id, +, *}
| E * E // 开始符:E
// 产生式规则集合:{左边所示}
推导
给定文法G,从G的开始符号S开始,用产生式的右部替换左侧的非终结符
此过程不断重复,直到不出现非终结符为止
最终的串称为句子
最左推导和最右推导
最左推导:每次总是选择最左侧的符号进行替换
S -> N V N
N -> s // t替换N| t| g| w
V -> e // e替换V| d
N -> s // s替换N| t| g| w