编译原理3:文法

文法:描述语言的语法结构形式规则

   

 基本概念

 上下无关文法

终结符不可再分解,非终结符可以,非终结符可以由终结符和非终结符构成。

S:特殊的非终结符。所定义的语言最终感兴趣的语法单位。对于程序语言来说:句法单位

 

 巴克斯范式BNF

  

 

文法生成语言


 

句型和句子练习


文法与语言

例题1

例题2 

例题3 

例题4


推导与语法树


语法树与二义性

二义性: 

1、文法的某一个句子存在两棵或两棵以上的语法树
2、对于文法的某一个句子, 存在两种或两种以上的最左 (最右) 推导
3、对于文法的某一个句子, 存在两种或两种以上的最左 (最右) 归约
4、在进行归约时,文法的某些规范句柄不唯一

 注意判断:

 

  


形式语言鸟瞰

 

 

 

 

 

 

 小结

补充:

·对于文法G[Z],已知u是句型,则
1、只要使用规范推导,无论如何一定可以从Z推导出u
2、只要依据产生式进行规范归约,则u一定可以归约成Z

都是的。为什么?太绝对,还要语法分析

 · 由“非终结符-->符号串”这种产生式构成的文法是2型文法

·文法G[Z]和语言L(G[Z])存在如下关系:一个文法对应唯一的语言,反之则不然

·关于短语和句柄,直接短语才可能是句柄

句柄:任意句型的最左简单短语,成为句柄,一个句型只有一个句柄

句型:终端节点的组成的串

层次结构如下 

短语 {   简单短语   {句柄}   }   }

子树:由该树的某个节点,连同向下生长出的部分组成

子树与短语的联系:若句型中某些符号按照从左到右的顺序组成某棵子树的末端节点,那么有这些末端节点组成的字符串,既是相对于树根的短语

例子:如以下这棵树

1.短语

我们从深度为1开始,找出父节点为S,他的短语为子节点(无法产生叶子结点的节点)的集合 即是{a1b1b2a3a2}

从深度为2的节点开始找,节点为A,B,S,它的短语为a1,b1b2,a3a2

从深度为3的节点开始找,节点为S,B,B,A,它们的的短语分别为 空,b1,b2,a3

类推.......

直到叶子结点结束

综上可知短语有  { a1b1b2a3a2,a1,b1b2,a3a2,b1,b2,a3}

2.简单短语

就是找可以一次性推导出来的叶子结点,有图可知A->a1,B->b1,B->b2,A->b3

所以简单短语为 a1,b1,b2,a3

3.句柄

为最左直接短语,右图可知句柄为a1


· 文法识别符号经过任意步推导得到的结果是 句型

· 正则文法可以是二义性的,又被称为线性文法,多数程序设计语言的单词可用它描述

·某个语言,它能用正规表达式表示,则必须可以使用正规文法表示

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值