文法四元组
文法 定义为一个四元组:
- :非终结符集合(语法变量)
- :终结符集合(单词符号)
- :产生式集合,形如 , 且至少含一个非终结符,
- :开始符号,
,记 。
BNF 表示法
Backus-Naur Form,描述文法产生式的标准形式:
<非终结符> ::= <候选式1> | <候选式2> | ... | <候选式n>
::=表示 ” 定义为 ”|表示 ” 或 ”< >括起非终结符
示例:
<表达式> ::= <项> | <表达式> + <项>
直接推导与推导序列
- 直接推导:,其中 ,
- 步推导:,记作
- 多步推导:(至少一步),(零步或多步)
句型 vs 句子
- 句型:从开始符号 出发,经过零步或多步推导得到的符号串
- 句子:只含终结符的句型
定义的语言:
最左/最右推导
- 最左推导:每步替换最左边的非终结符
- 最右推导(规范推导):每步替换最右边的非终结符
递归文法
若存在 ,则 是递归文法。
- 直接递归:
- 间接递归:(经过多步)
- 左递归:(产生式左部在最左端出现)
- 右递归:
文法定义的语言
给定文法 ,语言 是所有从 推导出的句子集合。
文法等价
若 ,则称 与 等价。
同一语言可由多个不同文法描述。
EBNF 与语法图
EBNF(扩展 BNF)增加:
[]:可选部分{}:重复零次或多次():分组- `{}^n_mmn$ 次
语法图:用图形表示产生式规则,方框表示非终结符,圆框表示终结符。
重点 文法四元组定义、最左/最右推导区分、递归文法判定。