MCSYSTEM-一、实验任务二、实验介绍1、实验目的2、词.ppt

MCSYSTEM-一、实验任务二、实验介绍1、实验目的2、词.ppt

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

一、实验任务 1、实验流程: 2、任务分配 每一小组由5-6人组成,具体任务分配如下: 词法分析器部分由1-2个人完成,输入的根据TINY文法写的源程序,输出的是单词的TOKEN序列及单词具体属性值和所在行号,分别存放在数组中; 语法分析部分由2-3人完成,从数组中输入TOKEN序列,进行语法分析,并在内存中构造出一颗语法树,输出的是指向这颗语法树的根结点的指针; 语法树的遍历与打印由1个人完成,输入的是指向语法树的根结点指针,输出的是按一定格式缩排的语法树结构图; 最后写一个编译原理课程设计报告,总结一下实验过程中的体会。 二、实验介绍 1、实验目的 通过实现小型编译器TINY,了解并掌握编译器设计过程和实现方法,从而进一步了解编译的一般原理,并提高自己的编程能力。 2、词法分析器的设计 词法分析目的: 词法分析主要是把源程序的字符串序列序列逐个拚出单词,转换成所谓的TOKEN序列,其中TOKEN是单词的内部表示。这样以字符为但单位的源程序就变成了以单词为单位的内部表示。此后的语法分析和语义分析的扫描对象是词法分析器产生的TOKEN序列。 1)构造TINY语言的保留字表(共有8个) a、数据结构: define maxReservered=8/*保留字的数*/ static struct{ char *str; tokentype tok; }reservedWords[maxReservered]={{“if”,IF},{“then”,THEN},{“else”,ELSE},{“repeat”,REPEAT},{“until”,UNTIL},{“read”,READ},{“write”,WRITE},{“end”,END}; b、T I N Y对保留字的识别是通过首先将它们看作是标识符,之后再在保留字表中查找它们是否是保留字。 查找保留字的函数设计如下: static TokenType reservedLookUp(char *s) {int I; for (i=0;imaxReserved,i++) if (!strcmp(s,reservedWords[I].str) return reservedWords[I].tok; return ID;////如果不在集合中则返回ID表示它是标识符; } 2)构造标记集合 每一个保留字(如read,write…)特殊符号(如+,-…)都有其对应的标记 TOKEN的定义如下: Typedef enum{ /*保留字标记*/ IF,THEN,ELSE,REPEAT,UNTIL,READ,WRITE,END, /*数字及标识符*/ ID,NUM, /*特殊符号 */ +- * / = := ; ( ) ASSIGN,EQ,LT,PLUS,MINUS,TIMES,OVER,LPAREN,RPAREN,SEMI, /*文件结束标记,错误标记*/ ENDFILE,ERROR} tokentype; 记号ENDFILE(当达到文件的末尾时)和E R R O R(实际上,未列在特殊符号中的所有单个字符既不是空白格或注释,也不是数字或字母,它们应被作为错误而接受,我们将它们与单个字符符号混合在一起。) 3)构造DFA状态集合、实现取词操作 4)构造TOKEN的数据结构 由于扫描程序必须计算每一个记号的若干属性,所以将所有的属性收集到一个单独构造的数据类型中是很有用的,这种数据类型称作记号记录( token record)。可在C中将这样的记录说明为: typedef struct{ TokenType tokenval; char * stringval; int numval;} TokenRecord; 或可能作为一个联合 typedef struct{ TokenType tokenval; u n i o n{ char * stringval; int numval; } attribute; } TokenRecord; 5)词法分析的扫描过程的

文档评论(0)

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

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

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档