第二章 一个微小的编译器.ppt

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

第二章 一个微小的编译器 小语言Micro的定义 Micro程序的编译过程 表达式的处理 小语言Micro的定义 P ? begin VDL;SL end. VDL ? VD | VD ; VDL VD ? var id : T SL ? S | S ; SL S ? id:= E | write(E) | read(id) T ? integer | real E ? id | num | E + E | E * E |(E) 程序例: begin var x1:real ; var z1:real ; x1 := 0.5 ; z1 := x1 + 55 ; write( z1 +5.5 ); read( x1 ) ; z1 :=z1 + x1 end. Micro的词法分析 单词的种类 Token定义 词法分析过程 Micro的词法分析 Micro语言中单词的分类: 标识符:字母开头的字母/数字串 整常数:数字开头的数字串 实常数:整数.整数 保留字:begin end var read write integer real 符号词:+ * ( ) : := ; . 控制词:? (换行符) Micro的词法分析 TOKEN定义: 二元组(单词种类,单词自身值) 标识符的Token: ($id,标识符)如($id,x) 整常数的Token: ($intC,整常数)如($intC,5) 实常数的Token: ($realC,实常数)如($realC,0.5) 保留字的Token: ($begin,-),($end,-),($var,-) … 符号词的Token: ($plus,-),($mult,-),($LParen,-)… 换行符的Token: ($line,-) Micro的词法分析 词法分析过程: 读当前字符流,直至文件结束。如果是: (1)标识符时判断是保留字还是变量标识 符,构造Token表示 (2)数字时判断是整型还是实型,构造 Token表示 (3)构造其它合法的符号的Token表示 (4)遇到非法符号则报错。 Micro的词法分析 Micro的词法分析 Micro的语法分析 输入:是词法分析后所得的Token序列。 功能:进行语法检查。构造语法短语的 表示形式(语法树) 说明:语法分析只用到单词的Token表 示,并不改变单词的Token表示。 Micro程序结构语法图 Micro的语义分析 功能: 检查语义错误: 没有声明;重复声明;类型不相容 构造符号表;修改Token表示 符号表 (标识符名,地址,类型) 过程:读入Token 遇到标识符声明时,检查是否已声明,是则报错,否则构造标识符的符号表; 遇到标识符定义和使用时,检查是否声明过。 将变量的Token改为($id,entry)形式,entry表示标识符在符号表中的地址。 Micro的目标代码 生成语句的目标代码 表达式的处理 检查赋值语句左右类型是否相容 表达式的处理 表达式的求值 表达式的目标代码生成 表达式(中缀)到后缀式的转换 表达式处理涉及的主要数据结构 和符号约定 DS : 数据栈 OS : 运算符栈 RE : 剩余表达式 Push(s,a) : 将a压入栈s Pop(s,i) : 从栈s中弹出i个元素 算符的优先关系 单目算符 +a , -a 指数算符 a?n 乘法算符 a * b , a/b 加法算符 a + b , a - b 关系算符 a b , a ?b , a =b , a ?b , ab, a?b 6. 逻辑非 ~b 7. 逻辑与 a ? b 8. 逻辑或 a ? b 关于优先关系的几点说明 优先关系是相对同层算符而言的 按括弧层次,里层算符优先 编号越大,优先级越低 无括号表达式求值算法思想 运算分量N/I : p

文档评论(0)

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

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

1亿VIP精品文档

相关文档