《编译原理课程教案》第2节:文法基础.ppt

《编译原理课程教案》第2节:文法基础.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Sample语言词法定义(续) (5) 常数 ::= 整数|布尔常数|字符常数|常数标识符|实数 (6) 整数 ::= 数字|整数数字 (7) 布尔常数 ::= true|false (8) 字符常数 ::= 除以外的任意字符串 (9) 常数标识符 ::= 标识符 (10) 实数 ::= 整数.整数 2.5.3、 Sample语言数据类型的定义 (1) 简单类型 ::= integer|bool|char|real 2.5.4 Sample语言表达式的定义 (1) 表达式 ::= 算术表达式|逻辑表达式 (2) 算术表达式 ::= 项±算术表达式|±项|项 (3) 项 ::= 因子*项|因子/项|因子 (4) 因子 ::= 算术量 (5) 算术量 ::= 标识符|整数 (6) 逻辑表达式 ::= 布尔项 or 逻辑表达式 |布尔项 Sample语言表达式的定义(续) (7) 布尔项 ::= 布尔因子 and 布尔项 |布尔因子 (8) 布尔因子 ::= 布尔量 | not布尔因子 (9) 布尔量 ::= 逻辑表达式 | 布尔常数|标识符 |算术表达式关系符算术表达式 (10) 关系符 ::= |||=| =| = 2.5.5 Sample语言语句的定义 (1) 语句 ::= 说明语句|执行语句 (2) 说明语句 ::= 常量说明变量说明 (3) 常量说明 ::= const 常数定义|ε (4) 常数定义 ::= 标识符=常数,常数 定义 |标识符=常数; (5) 变量说明 ::= var 变量定义|ε (6) 变量定义 ::= 标识符表:类型; |标识符表:类型;变量定义 (7) 标识符表 ::= 标识符, 标识符表|标识符 (8) 执行语句 ::= 简单句|结构句 (9) 简单句 ::= 赋值句 (10) 赋值句 ::= 变量:=表达式 (11) 变量 ::= 标识符 (12) 结构语句 ::= 复合句|if语句|while语句 |for语句|repeat语句 (13) 复合句 ::= begin 语句表 end (14) 语句表 ::= 执行语句;语句表|执行语句 Sample语言语句的定义(续) Sample语言语句的定义(续) (15) if语句 ::= if 布尔表达式 then 执行语句 (16) if语句 ::= if 布尔表达式 then 执行语句 else 执行语句 (17) while语句 ::= while 布尔表达式 do 执行语句 (18) for语句 ::= for 标识符:=算术表达式 to 算术表达式 do 执行语句 (19) repeat语句 ::= repeat 执行语句 until 布尔表达式 2.5.6 Sample语言程序定义 (1) 程序 ::= program 标识符;分程序 (2) 分程序 ::= 常量说明变量说明复合句 2.5.7 sample语言源程序举例 程序文件名:Example.src program example1; var a,b,c:integer; x:char; begin if (a+c*3 b) and (b3) then c:=3; x:=2+(3*a)-b*c*8; for x := 1+2 to 3 do b:=100; while ab do c:=5; repeat a:=10; until ab; end. * * * 最左推导在语法树中的表现主要是:总是沿最左分支替换到底,再是次左边…… 通常,用 表示:从?1出发,经过一步或若干步,可以推出?n。 用 表示:从?1出发,经过0步或若干步,可以推出?n。 所以 : 即 或 定义:假定G是一个文法,S 是它的开始符号。如果 ,则?称是一个句型。仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为 L(G)。 文法G所产生的语言定义为: L(G)={x|S=x,其中S为文法的开始符号,x∈Vt*} 。即: 一个文法G可以推导出的所有句子构成的一个集合, 就确定了一个语言。 * 例2.1 (P30) 考虑文法G1: 它定义了什么语言。 S ? bA A ? aA|a 推导过程 :S=bA =ba S=bA =baA=baa …………….. S=bA =baA=… =ba…a 归纳得: L(G1) = {ban | n≥1} 例2.2(P3

文档评论(0)

187****5045 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档