文法四元组

文法 定义为一个四元组:

  • :非终结符集合(语法变量)
  • :终结符集合(单词符号)
  • :产生式集合,形如 且至少含一个非终结符,
  • :开始符号,

,记

BNF 表示法

Backus-Naur Form,描述文法产生式的标准形式:

<非终结符> ::= <候选式1> | <候选式2> | ... | <候选式n>
  • ::= 表示 ” 定义为 ”
  • | 表示 ” 或 ”
  • < > 括起非终结符

示例:

<表达式> ::= <项> | <表达式> + <项>

直接推导与推导序列

  • 直接推导,其中
  • 步推导,记作
  • 多步推导(至少一步),(零步或多步)

句型 vs 句子

  • 句型:从开始符号 出发,经过零步或多步推导得到的符号串
  • 句子:只含终结符的句型

定义的语言:

最左/最右推导

  • 最左推导:每步替换最左边的非终结符
  • 最右推导(规范推导):每步替换最右边的非终结符

递归文法

若存在 ,则 是递归文法。

  • 直接递归
  • 间接递归(经过多步)
  • 左递归(产生式左部在最左端出现)
  • 右递归

文法定义的语言

给定文法 ,语言 是所有从 推导出的句子集合。

文法等价

,则称 等价

同一语言可由多个不同文法描述。

EBNF 与语法图

EBNF(扩展 BNF)增加:

  • []:可选部分
  • {}:重复零次或多次
  • ():分组
  • `{}^n_mmn$ 次

语法图:用图形表示产生式规则,方框表示非终结符,圆框表示终结符。

重点 文法四元组定义、最左/最右推导区分、递归文法判定。