编译原理讲义文法与语言-seg-南京大学.ppt

编译原理讲义文法与语言-seg-南京大学.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理讲义文法与语言-seg-南京大学

编译原理讲义 (第二章:文法与语言) 南京大学计算机系 赵建华 文法与语言 文法被用来精确而无歧义地描述语言的句子的构成方式. 文法描述语言的时候不考虑语言的含义。 字母表 定义:字母表是有穷非空集合。 字母表包含了语言中所允许出现的一切符号。 符号串 定义:符号串是由字母表中的符号所组成的有穷序列。 一个语言的句子总是它的字母表的符号串。这个符号串的组成必须是按照文法规则组合而成的。 语法分析的一个重要任务就是:判断一个符号串的组成是否满足某个文法的规定,并且分析出是如何按照规则组成的。 关于符号串的概念和操作 运算: 联结(并置):x=123, y=45那么xy=12345 方幂:x的n次方幂即将n个x联结。 子符号串:v是xvy的子符号串。v非空 头,尾:x是xy的头,y是xy的尾。 符号串集合 定义:若集合A中的一切元素都是同一个字母表上的集合,那么A被称为该字母表上的符号串集合。 在本课程中,语言被认为是句子的集合。(外延定义?)所以,一个语言就是对应于它的字母表上的一个符号串集合。 符号串集合的运算 乘积:AB = {xy | x?A且y ?B} 方幂:A的n次方幂就是将n个A相乘。 字母表的闭包与正闭包: 字母表A的闭包是A上的所有符号串(包括空字符串)的集合。 字母表A的正闭包是A上的所有的非空符号串的集合。 文法和语言的定义(重写规则) 重写规则:一个重写规则是一个有序对(U,u),通常写作 U ::= u。其中U是一个符号,称为左部;u是一个符号串称为右部。有时也说这个规则是U的一个规则。 重写规则总是基于某个字汇表的。U和u中的符号必须都在这个字汇表内。这个字汇表中有些符号不能作为左部。 存在更加复杂的规则,但是这样的规则足够描述程序设计语言的文法。 文法和语言的定义(重写规则) 例如: 〈标识符〉::= 〈字母〉 〈标识符〉::= 〈字母〉|〈标识符〉〈字母〉 第二个规则实际使用了BNF的表示方法。BNF表示方法的还包括: 花括号表示重复: {〈字母〉} 方括号表示可选: [〈参数〉] 文法和语言的定义(文法) 文法:文法G[Z]是一组有穷非空的重写规则的集合。其中Z称为识别符号。G为文法名字 文法例子:P22, 例子2.10。 所有的规则都是基于同一个符号表V。符号表又可分划非终结符号集合VN和终结符号结合VT。 〈句子〉::= 主语谓语状语 主语::=名词 名词::=Peter | Berry | River 谓语::=动词 动词::=Swims 介词::= in 状语::= 介词 名词 文法和语言的定义(推导) 文法的作用是描述某种语言的句子的构成方式。使用文法我们可以产生对应语言的句子。 从识别符号开始,不断将当前符号串中的非终结符号替换为该符号的某个规则的右部。直到当前的符号串中所有的符号都是终结符号为止。 文法和语言的定义(推导) 例子: 〈句子〉=〈主语〉〈谓语〉〈状语〉 =〈名词〉〈谓语〉〈状语〉 = …… = Peter swims in river 文法和语言的定义(推导) 直接推导:v=xUy,w=xuy,并且U::=u是文法中的一个重写规则,那么我们说v可以直接推导到w,或者w可以直接规约到v。记作 v = w。 例如: 〈主语〉〈谓语〉〈状语〉 =〈名词〉〈谓语〉〈状语〉 文法和语言的定义(推导) 推导:对于符号串v和w,如果存在一个直接推导序列u0=u1=…=un,并且u0=v,un=w,那么我们说v可以推导到w,或者w规约到v。记作v =+ w。 这个推导长度为n,且称w为对应于v的一个字。 v=* w 表示v=w或者v =+ w。 文法和语言的定义(推导) 推导的例子:P25页例2.12。 文法: 标号::=数字序列 数字序列::=数字序列数字 | 数字 数字::= 0 | 1 | 2 | 3 | … | 9 VT{0,1,2,3,4,5,6,7,8,9}, VN = {} 推导的例子 标号 = 数字序列 = 数字序列数字 =数字序列数字数字 = 数字数字数字 = 数字23 = 123 语言的定义(句型,句子) 对于文法G[Z],x称为G的一个句型如果: Z =* x 识别符号是最简单的句型。 G[Z]的一个句型x被称为句子,如果: x?VT* 也就是说句子是全部由终结符号组成的句型。 语言的定义(短语,简单短语) 短语:对于文法G[Z],如果Z =* xUy,U=+ u。显然,w=xuy是一个句型。我们称u是句型w中相对于U的短语。 简单短语:在上面的定义中,如果U ::= u是G的一个规则,那么,u是句型w中相对于U的简单短语。 例子:P22页例2.13。 语言的定义(短语,句柄)

您可能关注的文档

文档评论(0)

zhaoxiaoj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档