语法分析
- 文法
- 定义
- 文法 ,其中:
- :非空有限非终结符号集合。
- :非空有限终结符号集合。
- :开始符号。
- :有限产生式集合。
- ,。
- 语言 :从 的 开始,不断用产生式替换非终结符号,得到的只有终结符号的串集合。
- 文法 ,其中:
- 推导和规约
- 直接推导:当且仅当 时,。 直接推导出 , 直接规约到 。
- 多步推导: 经过 , 个推导得到 ,则 。如果 或 ,则 。
- 最左/右推导:从 推导到 ,总是替换最左/右边的非终结符号。
- 规范推导:最右推导又称规范推导,逆序为规范规约。
- 句型与句子
- 句型: 为 的句型。
- 句子: 为 的句子。
- 规范句型/句子:仅用规范推导得到的句型/句子。
- 递归
- 直接递归: 存在产生式 时, 为直接递归文法。
- 间接递归: 可以有 和推导 时, 为间接递归文法。
- 递归文法:直接与间接递归文法统称递归文法。
- 左递归: 且 。
- 右递归: 且 。
- 表示
- BNF
- 产生式格式:。
- EBNF
- 与 BNF 类似,并包括扩展语法:
- : 到 个 。
- : 或 个 。
- :可以使用分配律。
- 与 BNF 类似,并包括扩展语法:
- 语法图
- 椭圆:非终结符。
- 矩形:终结符。
- 箭头:匹配字符串的路径。
- BNF
- 二义性
- 定义:存在一个字符串,一个文法可以推导得到两个不同的语法树,则文法是二义的。
- 常见原因:
- 运算符优先级不明确。
- 运算符结合性不明确。
- 定义