(需打印的)编译原理实验报告.docVIP

  • 1
  • 0
  • 约5.53千字
  • 约 8页
  • 2018-01-02 发布于河南
  • 举报
(需打印的)编译原理实验报告

《编译原理》 实验报告 2012~2013学年第一学期 班 级 姓 名 学 号 指导教师 张春梅 实验一 词法分析器的设计(4学时) 一、实验目的和要求 加深对状态转换图的实现及词法分析器的理解。熟悉词法分析器的主要算法及实现过程。要求学生掌握词法分析器的设计过程,并实现词法分析。 二、实验基本内容 给出一个简单语言的词法规则,画出状态转换图,并依据状态转换图编制出词法分析程序,该程序的数据输入是一段C代码,输出数据为单词的二元式。现给出词法规则如下: 单词符号 种别码 内码 auto 1 break 2 case 3 char 4 const 5 continue 6 default 7 do 8 float 9 for 10 if 11 int 12 long 13 return 14 struct 15 switch 16 void 17 while 18 30 = 31 32 = 33 == 34 != 35 ( 36 ) 37 + 38 - 39 * 40 / 41 ** 42 = 43 , 44 ; 45 ! 46 ~ 47 48 || 49 { 50 } 51 标识符 60 常数 70 二进制形式 三、问题描述及基本算法提示 状态转换图的实现 让每个结点对应一小段程序。 需引进一组全局变量和过程、函数 (1)ch 字符变量,存放最新读进的源程序字符。 (2)strToken 字符数组,存放构成单词符号的字符串。 (3)GetChar 子程序过程,将下一个输入字符读到ch中,搜索指示器前移一个字符位置。 (4)GetBC 子程序过程,检查ch中字符是否为空白。若是,则调用GetChar直至ch中进入一个非空白字符。 (5)Concat 子程序过程,将ch中的字符连接到strToken之后。例如, 假定strToken 原来的值为“AB”,而ch中存放着’C’,经调用Concat后,strToken的值就变为”ABC”。 (6)IsLetter和IsDigit 布尔函数过程,它们分别判断ch中的字符是否为字母和数字。 (7)Reserve 整型函数过程,对strToken中的字符找保留字表,若它是一个保留字,则返回它的编码,否则返回0值。 (8)Retract 子程序过程,将搜索指示器回调一个字符位置,将ch置为空白字符。 (9)InsertId 整型函数过程,将strToken中的标识符插入符号表,返回符号表指针。 (10)InsertConst 整型函数过程,将strToken中的常数插入常数表,返回常数表指针。

文档评论(0)

1亿VIP精品文档

相关文档