【2017年整理】编译与原理(二版)3文法和语法.ppt

【2017年整理】编译与原理(二版)3文法和语法.ppt

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

第3章 文法和语言 教学要求:本章是编译原理课程的理论基础,要求理解文法、语言、规范推导、规范归约和短语、简单短语、句柄的基本概念;掌握语言的求解方法、文法的二义性的判断方法及句型的分析方法。 教学重点:上下文无关文法,语言定义 Mini_C 介 绍 Mini_C语言是在C语言的基础上定义的一种语言(C语言的子集),它的文法定义如下: 1 程序 ::= MAIN()语句块 2 语句块 ::= {变量声明列表语句串} | {语句串} 3 变量声明列表 ::= 变量声明列表变量声明|变量声明 4 变量声明 ::= 变量类型ID; 5 变量类型 ::= int | char | real 6 语句串 ::= 语句;|语句串语句; 7 语句 ::= 赋值语句 | 条件语句 | 循环语句 8 赋值语句 ::= ID=算术表达式 9 条件语句 ::= if (条件)语句块 | if (条件) 语句块else语句块 10循环语句 ::= while语句 | for 语句 11while语句 ::= while (条件)语句块 12for 语句 ::= for (赋值语句 ; 条件 ; 算术表达式)语句块 13条件 ::= 算术表达式关系运算符算术表达式 14关系运算符 ::= |=||=|==|!= 15算术表达式 ::= 算术表达式+项|算术表达式 - 项|项 3)语言 由文法G产生的所有句子组成的集合叫做文法G所成描述的语言,记为L(G)。 例3.3 文法G[S]: (1)S→dAB (2)A→aA (3)A→a (4)B→Bb (5)B→ε 例:构造生成语言L={ }的文法。 4)文法的等价 若L(G1)=L(G2),则称文法G1和G2是等价的。 五 文法的类型 (1)0型文法(短语文法):对任一产生式α→β,都有α∈(VN∪VT)+, β∈(VN∪VT)* (2)1型文法(上下文有关文法): 对任一产生式α→β,都有|β|≥|α|, 仅仅 S→ε除外。即α1Aα2→α1βα2(A在VN中,其他在V*中,β≠ε) (3)2型文法(上下文无关文法): 对任一产生式α→β,都有α∈VN , β∈(VN∪VT)* 即A→β(A在VN中,β在V*中,) (4)3型文法(正规文法):任一产生式α→β的形式都为A→aB或A→a,其中A∈VN ,B∈VN ,a∈VT 例:1型(上下文有关)文法 文法G[S]: S→aSBE S→aBE EB→BE aB→ab bB→bb bE→be eE→ee 例:2型(上下文无关)文法 文法G[S]: S→aB|bA A→a|aS|bAA B→b|bS|aBB 文法G[S]: S→0A|1B|0 A→0A|1B|0S B→1B|1|0 例:定义标识符的3型(正规)文法 文法G[I]: I → lT I → l T → lT T → dT T → l T → d 文法和语言 0型文法产生的语言称为0型语言 1型文法或上下文有关文法( CSG )产生的语言称为1型语言或上下文有关语言(CSL) 2型文法或上下文无关文法( CFG )产生的语言称为2型语言或上下文无关语言( CFL ) 3型文法或正则(正规)文法( RG )产生的语言称为3型语言或正则(正规)语言( RL ) 六 上下文无关文法及其语法树 上下文无关文法有足够的能力描述现今程序设计语言的语法结构。 算术表达式 语句 赋值语句 条件语句 循环语句 …… 1、语法树与推导 用于描述上下文无关文法的句型推导的直观方法 推导过程中施用产生式的顺序 2、最左(最右)推导: 在推导的任何一步α?β,其中α、β是句型,都是对α中的最左(右)非终结符进行替换。 最右推导被称为规范推导。 由规范推导所得的句型称为规范句型。 问题:一个句型是否对应唯一的一棵语法树? 例:G[E]: E → i E → E+E E → E*E E → (E) 3、二义文法 若一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。 或者,若一个文法存在某个句子有两个不同的最左(右)推导,则称这个文法是二义的。 产生某上下文无关语言的每一个文法都是二义的,则称此语言是先天二义的。 排除文法二义性的两种方法: (1)在语义上加些限制(如优先顺序和结合律)。 (2)重构无二义性的文法。 练习:有文法G[N]:

文档评论(0)

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

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

1亿VIP精品文档

相关文档