编译原理:高级语言形式化
文法
描述语言的语法结构的形式规则
字母表(
- 集合
- 非空
- 有穷
符号:字母表中的元素
符号串(字):符号构成的一个有穷序列
空字
闭包
集合
设
- 正规闭包:
- 闭包:
如果
上下文无关文法
产生式
产生式表达的是从非终结符转化终结符
设 S 为开始符号,S 必须在某个产生式的左部出现一次
注意:上下文无关文法的产生式的左边为 单个 非终结符
BNF
推导
若存在产生式
则满足:
\Rigtarrow
如果
则称
基于文法 G 的语言 L(G)
最左推导:任何一步
最右推导:任何一步
句子、句型、短句、直接短句、句柄
若
仅含终结符号的句型为句子 (就是可以由开始符号推出,且只有终结符号)
若
若
句柄:一个句型的最左直接短语
归约
推导的逆过程
- 最左规约
- 最右规约
语法树与二义性
用一张图表示一个句型的推导,这张图称为语法树,也称为推导树
二义性:文法存在某个句子对应两棵不同的语法树
- 无法在有限时间内判断是否具有二义性
- 有判断无二义性的充分非必要条件
若一个文法无二义性,对一个句型的多种推导,采用的各种推导过程,画出来的语法树是一样的。语法树并没有描述具体的推导过程,是不同推导过程的抽象共性。
子树:语法树中的一个节点及其 全部 后裔
短语:子树末端形成的符号串
直接短语:简单子树(只有二级)末端形成的符号串
句柄:位于最左边的简单子树的所有叶节点自左向右排列
乔姆斯基对语言的分类
产生式形如:
0 型
且
1 型 (上下文有关)
2型(上下文无关)
3 型(正规文法、有限自动机)
右线性文法:
左线性文法:
总结
0 型只要求产生式左边包含非终结符
1 型还要求左边的长度要小于右边的长度
2 要求左边只能由一个非终结符组成
3 型要求右边如果有非终结符,只能出现在最左或最右