【编译原理】第2章 文法和语言

2 文法和语言


一、基本概念

语言由句子组成的集合,是由一组记号所构成的集合。

语言研究三方面:语法、 语义、 语用
语法:表示构成语言句子的各个记号之间的组合规律 一套规则
语义:表示按照各种表示方法所表示的各个记号的特定含义(各个记号和记号所表示的对象之间的关系) 语法、语义有区别
语用:表示在各个记号所出现的行为中,它们的来源、使用和影响
eg: 客人来了和来了客人,语义同,1定指,2非定指,即语用不同

有关定义和记号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
语言的描述
描述一种语言:
👉语言有穷(只含有有穷多个句子):可以将句子逐一列出来表示
👉语言无穷:找出语言的有穷表示。

  • ①生成方式 (文法):语言中的每个句子可以用严格定义的规则来构造。

  • ②识别方式(自动机):用一个过程,当输入的一任意串属于语言时,该过程经有限次计算后就会停止并回答“是”,若不属于,要么能停止并回答“不是”,(要么永远继续下去)

二、文法和语言的形式定义

文法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
推导
在这里插入图片描述
句型、句子、语言
在这里插入图片描述
在这里插入图片描述
文法的等价
若L(G1)=L(G2),则称文法G1和G2是等价的。
如:文法G1[A]:A→0R 与G2[S]:S→0S1 等价
                        A→01                 S→01
                        R→A1

三、文法的类型

0型、1型、2型、3型共4种
在这里插入图片描述
在这里插入图片描述

  • 0型文法产生的语言称为0型语言
    0型文法短语文法)的能力相当于图灵机,可以表征任何递归可枚举集,而且任何0型语言都是递归可枚举的
  • 1型文法或上下文有关文法( CSG )产生的语言称为1型语言或上下文有关语言(CSL)
    1型文法(上下文有关文法):产生式的形式为α1Aα2→α1βα2,即只有A出现在α1和α2的上下文中时,才允许β取代A。其识别系统是线性界限自动机。
  • 2型文法或上下文无关文法( CFL )产生的语言称为2型语言或上下文无关语言( CF L )
    2型文法上下文无关文法、CFG):产生式的形式为A→β,β取代A时与A的上下文无关。其识别系统是不确定的下推自动机。
  • 3型文法或正则(正规)文法( RG )产生的语言称为3型语言正则(正规)语言( RL )
    3型文法正规文法、右线性文法):产生的语言是有穷自动机(FA)所接受的集合

四、上下文无关文法及其语法树

上下文无关文法的语法树用于描述上下文无关文法的句型推导的直观方法
在这里插入图片描述
给定文法G,对于G的任何句型都能构造与之关联的语法树(推导树)
这棵树满足下列4个条件:
①每个结点都有一个V中的符号作标记
②根的标记是开始符号S
③若一结点n至少有一个它自己除外的子孙,并且n有标记A,则A∈VN
④如果结点n的直接子孙,从左到右的次序是结点n1,n2,…,nk,其标记分别为A1,A2,…,Ak,那么A→A1A2,…,Ak一定是P中的一个产生式

在这里插入图片描述
二义文法
若一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。
或者,若一个文法存在某个句子有两个不同的最左(右)推导,则称这个文法是二义的。
产生某上下文无关语言的每一个文法都是二义的,则称此语言是先天二义的。
判定任给的一个上下文无关文法是否二义,或它是否产生一个先天二义的上下文无关语言,这两个问题是递归不可解的。但可以为无二义性寻找一组充分条件。

五、上下文无关文法的句型分析

句型分析就是识别一个符号串是否为某文法的句型,是某个推导的构造过程。
在语言的编译实现中,把完成句型分析的程序称为分析程序或识别程序。分析算法又称识别算法。
从左到右的分析算法,即总是从左到右地识别输入符号串,首先识别符号串中的最左符号,进而依次识别右边的一个符号。

在这里插入图片描述
在这里插入图片描述

句型分析
在这里插入图片描述
在这里插入图片描述

六、有关文法使用中的一些说明

有关文法的实用限制

文法中不得含有有害规则和多余规则
有害规则:形如U→U的产生式。会引起文法的二义性
多余规则:指文法中任何句子的推导都不会用到的规则
1)文法中某些非终结符不在任何规则的右部出现,该非终结符称为不可到达
2)文法中某些非终结符,由它不能推出终结符号串来,称为不可终止的
在这里插入图片描述
在这里插入图片描述

章节小练

在这里插入图片描述
在这里插入图片描述

bingo~   ✨ 人生没有白走的路,每一步都算数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值