[2018年必威体育精装版整理]02-第二章一个微小编译器.pptVIP

[2018年必威体育精装版整理]02-第二章一个微小编译器.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2018年必威体育精装版整理]02-第二章一个微小编译器

第二章 一个微小编译器 任课教师 王养廷 主要内容 基础知识 ToyL语言 ToyL词法分析程序 1 基础知识 词法分析的基础知识 基本符号 程序设计语言中使用的符号。 程序文本 源程序 程序文件 ASCII序列的源文件 语义单位 单词:源程序中独立的语义单位 1 基础知识(续) 词法分析的基础知识 单词的分类 标识符,如:x, y1, length 保留字,begin, end, case, if 常数,2,30 运算符,+,-,等 界限符,(,),; 编辑符,空格、回车、换行,制表符 1 基础知识(续) 程序片断示例 if score60 then writeln(‘fialed!’); 该片断中的单词 1 基础知识(续) 词法分析的基础知识 Token 为了处理方便,对单词进行的编码,P10图 语义信息 Token中保留两类信息 类别信息:Token.class 语义信息:Token.seman 1 基础知识(续) 词法分析的基础知识 Token程序实现 P10 typedef struct{ int class; char seman[]; position_in_File pos; }Token_type 1 基础知识(续) 词法分析的基础知识 读进字符 从源程序中读入的字符 用于得到单词 识别字符 判断字符是哪一类 使用函数 过滤格式 滤掉空格类字符 1 基础知识(续) 词法分析的基础知识 常数翻译 读入字符串 语义表示 字符串 数值 实际语言中可能还有类型 程序分析 1 基础知识(续) 词法分析的基础知识 程序 void recognize_number(void) { char digits[10]; dsp = 0; next_char(); while(is_digit(ch)){ digits[dsp++] =ch; next_ch(); } digits[dsp] = ‘\0’ Token.class = NUMBER; Token.seman = digits; } 1 基础知识(续) 词法分析的基础知识 程序 void recognize_number(void) { int n = 0; next_char(); while(is_digit(ch)){ n = n * 10 + ch = ‘0’; next_ch(); } Token.class = NUMBER; Token.seman = n; } 1 基础知识(续) 词法分析的基础知识 标识符 读入标识符 程序分析 保留字 1 基础知识(续) 词法分析的基础知识 程序 void recognize_identifier(void) { char name[10]; np = 0; next_char(); if (is_letter(ch)){ name[np++] =ch; next_ch(); } while((is_digit(ch) ||(is_letter(ch))){ name[np++] =ch; next_ch(); } name[np] = ‘\0’ Token.class = IDENTIFIER; Token.seman = name; } 2 ToyL语言 语言定义 简化的Pascal语言 程序用begin和end扩起来 类型有: integer 语句 赋值语句 输入语句 输出语句 语法图 P13 3 ToyL语言词法分析 词法分析 从源程序到Token序列的转换 Token设计 设计单词类别 ToyL语言共计13类,P13 C语言的定义,P14 对应的Token,P14 3 ToyL语言词法分析 Token例子 源程序 begin x:=10; read(y); x:=x+y end Token序列设计 找出单词 列出Token 3 ToyL语言词法分析 Token例子 Token序列 [1] (BEGIN, “begin”) [2] (IDEN, “x”) [3] (ASS, “:=”) [4] (NUMB,”10”) [5] (SEMI, “;”) [6] (READ, “read”) [7] (OPEN, “(“) [8] (IDEN, “y”) 3 ToyL语言词法分析(续) Token类型设计 保留字处理 词法分析器的设计 作用:分析源程序,列出Token 主要子程序 next_char() recongnize_number() recon

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档