“编译原理”实验说明书2012.docVIP

  • 4
  • 0
  • 约5.33千字
  • 约 9页
  • 2017-06-09 发布于北京
  • 举报
“编译原理”实验说明书2012

PAGE  PAGE 9 《编译原理》 实验指导书 执笔人:王一宾 2012年2月 实验一 词法分析器的设计 一、实验目的和要求 加深对状态转换图的实现及词法分析器的理解。熟悉词法分析器设计的主要算法及实现过程。要求学生掌握词法分析器的设计过程,并实现词法分析。 二、实验基本内容 给出一个简单语言的词法规则,画出状态转换图,并依据状态转换图编制出词法分析程序,词法规则如下: 单词符号 种别码 内码 break 1 char 2 continue 3 do 4 double 5 else 6 extern 7 float 8 for 9 int 10 if 11 long 12 short 13 static 14 switch 15 void 16 while 17 < 30 <= 31 <> 32 > 33 >= 34 = 35 ( 36 ) 37 ** 38 * 39 := 40 + 41 - 42 ? 43 , 44 ; 45 标识符 70 常数 80 二进制形式 三、问题描述及基本算法提示 状态转换图的实现 让每个结点对应一小段程序。 需引进一组全局变量和过程 (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)DTB 把strToken中数字串译成标准二进制码,并作为函数值返回(十进制转换为二进制) (10)Ainput 输入源程序(键盘直接输入或以文件形式输入) 2.词法分析器构造基本算法 int code,value; strToken:=“”; 置strToken为空串*/ GetChar();GetBC(); if (IsLetter()) begin while (IsLetter() or IsDigit()) begin Concat();GetChar(); end Retract(); code : = Reserve(); if(code = 0) begin value : = InsertId(strToken); return($ID,value); en

文档评论(0)

1亿VIP精品文档

相关文档