04-第二章 一个微小编译器.ppt_第1页
04-第二章 一个微小编译器.ppt_第2页
04-第二章 一个微小编译器.ppt_第3页
04-第二章 一个微小编译器.ppt_第4页
04-第二章 一个微小编译器.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章一个微小编译器,任课教师 王养廷,主要内容,基础知识 ToyL语言 ToyL词法分析程序,1 基础知识,词法分析的基础知识 基本符号 程序设计语言中使用的符号。 程序文本 源程序 程序文件 ASCII序列的源文件 语义单位 单词:源程序中独立的语义单位,1 基础知识(续),词法分析的基础知识 单词的分类 标识符,如:x, y1, length 保留字,begin, end, case, if 常数,2,30 运算符,+,-,等 界限符,(,),; 编辑符,空格、回车、换行,制表符,1 基础知识(续),程序片断示例 if score60 then writeln(fialed!); 该片断

2、中的单词,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 基础知识(续),词法分析的基

3、础知识 常数翻译 读入字符串 语义表示 字符串 数值 实际语言中可能还有类型 程序分析,1 基础知识(续),词法分析的基础知识 程序 void recognize_number(void) char digits10; dsp = 0; next_char(); while(is_digit(ch) digitsdsp+ =ch; next_ch(); digitsdsp = 0 Token.class = NUMBER; Token.seman = digits; ,1 基础知识(续),词法分析的基础知识 程序 void recognize_number(void) int n = 0; n

4、ext_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 name10; np = 0; next_char(); if (is_letter(ch) namenp+ =ch; next_ch(); while(is_digit(ch) |(is_let

5、ter(ch) namenp+ =ch; next_ch(); namenp = 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; re

6、ad(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”),9 (CLOSE, “)”) 10 (SEMI, “;”) 11 (IDEN, “x”) 12 (ASS,”:=”) 13 (IDEN, “x”) 14 (PLUS, “+”) 15 (IDEN, “y“) 16 (END, “end”),3 ToyL语言词法分析(续),Token类型设计 保留字处理 词法分析器的设计 作用:分析源程序,列出Token 主要子程序 next_char() recongnize_number() recongnize_name(),3 ToyL语言词法分析(续),思考:词法分析程序的总体结构 以上面程序为例 分析词法分析程序的功能 分析程序执行过程,3 词法分析程序(续),思考 参考书中的算法自己设计一个词法分析程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论