文章目录
语言的结构
- 词法: 定义符号的排列方式
- 语句
- 语义:静态/动态
文法是语法的抽象,语句是文法的实例
文法
- =>
… =>
文法记号
::=意思是左式由右式组成的.
是可替换部件.
是or.
约定:抽象部件用大写标识,实例用小写标识
文法推导
• 语法规则的形式化
• 语法规则含有语法单位符号 抽象
• 语法规则含有构成语句的单词符号 实例
• 特殊的语法单位符号:开始符号
Charset/String
字母表(charset)
符号串是字母表的闭包( ).单词和源程序都是符号串
length
符号串集合
字符串运算
- 字符串的连接
- 符号串幂运算
- 符号串集的连接
- 符号串集的幂
- 闭包(包括Empty)/正闭包(不包括)
文法的形式定义
规则
是基于字符集的形如 的式子.也称重写规则,生成式.
该式规定了由抽象的形式部件向实例转化的规则.
文法的相关概念
文法G定义为一个四元组(VN,VT,P,S),记为 。其中,
- 是非空有穷集合,称为非终结符集,其元素称为非终结符;形式符号集合
- 是有穷集合,称为终结符集,其元素称为终结符;最后的实例
- P是非空有穷集合,称为规则集,其元素是字母表 上的规则, 称为文法的字母表V,且 ;
- ,称为开始符。
直接/多步推导/规约
按照规则对符号式进行一步/多部推导
eg.
0或0步以上推导:就是上式一步到最后结果
句型和句子
含有一定数量的抽象组建的称句型
全部是实例的称句子
语言
文法的最终形态,记作 .
定义为文法G产生的所有句子的集合.
文法的最终推导.
文法等价
称为G1G2等价.
文法类型
0型文法
所有的规则P中均含有非终结符(抽象部件 ).
也称短语文法.
特征:
1型文法
除了0型文法的规则,附加:
除空规则外 ,也就是每次代换符号串会变长.
也称上下有关文法.
2型文法
所有的规则P的左式均只有非终结符(大写的)
则称2型文法,也就是上下无关文法(因为这种规则下使用哪种规则和非终止符周围的终止符(单词实例)无关.
3型文法
所有的规则P形如 ,a为终结符(实例),B为非终结符.
这种称右线性3型文法.
还有左线性.
统称为3型正规文法.
这种文法的特点是有固定的推导范式有利于自动化处理.
以后的文法都指2/3型文法.这两种文法也是规范文法.
上下无关文法/语法树
- 特征:规则的左式只有非终结符
- 改写:G[S],S是开始符
- 只列规则.
最左/右推导
在推导的每一步都从最左/右的第一个非终止符开始.
一种范式.
语法树
- 以开始符S为root
- 以终结符或非终结符作为节点,子树根-子结点是规则的左-右式.
推出
二义性
如果对应文法规则,某句子存在两个语法树,称为二义性.
- 如果无二义性,一个语法树反映了全部的推导过程
- 此时最左/最右推导唯一.
- 对于一个二义性文法,可能存在等价的非二义性文法(?)
句型分析
判断符号串是否符合文法,等价转化为推导或者归约问题.
自下而上/自上而下
自上而下分析
- 使用最左推导
- 遍历每一个规则的可能推导
- 如果遍历到 ,确认是.
- 穷举全部的推导空间,如果没有一个符合则认为失败.
自下而上的分析
从符号串 开始逐步进行规约直到到达开始符号S.
检查规则的右部,如果有规则相同则进行规约.否则考虑检查子串.
通常使用句柄.
短语/句柄
对于G[S]和句型(含有抽象部件和实例的串),如果有S可通过若干步推导成符号串 ,并且 ,则称 是句型 相对于非终结符A的短语
如果A一步推到 ,则称为直接短语.
句型的最左直接短语称句柄.
- 是L(G)中的一个句型. 和 是包含终结符和非终结符的句型.
- 可以推出 .
- 直接短语当且仅当 .
- 句柄是最左的直接短语.
终结符A的短语
如果A一步推到 ,则称为直接短语.
句型的最左直接短语称句柄.
- 是L(G)中的一个句型. 和 是包含终结符和非终结符的句型.
- 可以推出 .
- 直接短语当且仅当 .
- 句柄是最左的直接短语.
To Be Continued…
利用句柄进行规约
- 找到句柄,规约为该句柄对应的形式化组件(非终止符)
- 去掉该部分(该部分已经规约完毕)
- Loop…
有害规则
- 不可达:不在任何右部出现的非终结符对应的规则
- 不可终止规则:不能推导出终结串
规则的优化
- 去除不可达规则
- 修改不可终止规则
代入法消除空规则
前提:
- 找到导致 的形式组件左式
- 将该左式带入为右式
- 消去左式