- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理与技术 主要内容 文法和语言 文法的分类 文法的等价变换 语法分析概述 程序语言的语法描述 程序语言的定义 程序语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。它完整的定义包括语法、语义及语用三个方面。 一个程序语言的语法是指这样一组规则,使用它可以形成和产生一个合适的程序。这些规则一部分称为词法规则,另一部分称为语法规则(或产生规则)。 程序语言的语法描述 一个程序语言的语义是指这样一组规则,使用它可以定义一个程序的意义。静态语义是一系列限定规则,确定哪些合乎语法的程序是合适的;动态语义也称作运行语义或执行语义,表明程序要做些什么,要计算什么。 语用表示语言符号及其使用者之间的关系,涉及符号的来源、使用和影响。 3.1 文法和语言 文法的形式定义 定义3.1: 定义四元组G=(VN,VT,P,S)是一个文法。其中VN , VT和 P都是非空有限集合,分别称为非终结符号集合、终结符号集合及产生式集合。S称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。 VN和VT不含公共元素,即VN∩VT = ?。通常用V表示VN∪VT,称为文法G的字母表。 3.1 文法和语言 例3.1:文法G1=(VN, VT, P, S),其中VN ={S},VT ={0, 1},P={S→0S1, S→01}。 该文法只有一个非终结符S,有两个终结符0和1,有两条产生式,开始符号是S。 很多时候,不用将文法G的四元组显式地表示出来,而只将产生式写出。一般约定,第一条产生式的左部是开始符号,用尖括号括起来的是非终结符号,不用尖括号括起来的是终结符号,或者用大写字母表示非终结符号,小写字母表示终结符号。另外也有一种习惯写法,将G写成G[S],其中S是开始符号。因此,例3.1还可以写成: G:S→0S1 或 G[S]:S→0S1 S→01 S→01 3.1 文法和语言 有时,为书写简洁,常把相同左部的产生式,形如A→α1,A→α2,…,A→αn,缩写为:A→α1|α2|…|αn。这里的元符号 | 读做“或”。 如,例3.1的产生式可以写成S→ 0S1 | 01。 ★注意元符号和源符号的区别: 文法中使用的元符号→或 ∷=表示左部由右部定义,| 表示定义同一个左部的几个可选择的右部。而源符号是指文法定义的语言中的符号,全部由文法的终结符构成。 3.1 文法和语言 例3.2:文法G2=(VN, VT, P, S ),其中 VN ={标识符, 字母, 数字}, VT ={a, b, c, …, x, y, z, 0, 1, …, 9 }, P ={〈标识符〉→〈字母〉|〈标识符〉〈字母〉 |〈标识符〉〈数字〉 〈字母〉→a | b | … | z 〈数字〉→0 | 1 | … |9 } S =〈标识符〉,这里使用尖括号〈 和 〉括起非终结符。 3.1 文法和语言 例3.3:一个文法的几种写法: ① G=( {S, A}, {a, b}, P, S ) 其中P={ S→aAb, A→ab, A→aAb, A→ε } ② G: S→aAb A→ab A→aAb A→ε ③ G[S]: A→ab A→aAb A→ε S→aAb ④ G[S]: A→ab |aAb |ε S→aAb 3.1 文法和语言 推导与归约 定义3.2: 设α→β是文法G=(VN,VT,P,S)的产生式,γ和δ是V*中的任意符号。若有符号串v,w满足:v = γαδ,w = γβδ,则说v直接产生w,或者说,w是v的直接推导。记作v?w。也可以说w直接归约到v。归约是推导的逆过程。 3.1 文法和语言 对例3.1文法G,可以给出直接推导的一些例子如下: ① v = 0S1,w = 0011, 直接推导:0S10011, 使用的规则:S→01,这里γ =0,δ =1。 ② v = S,w = 0S1,
文档评论(0)