下载此文档

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


文档分类:行业资料 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
《编译原理》

实验报告
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中的常数插入常数表,返回常数表指针。

int k=0,i=0,code;
char strToken[20]=””; /*置strToken为空串*/
while (a[i]!=’\0’)
{ GetChar();GetBC();
if (IsLetter())
{
k=0;
while (IsLetter() or IsDigit())
{
Concat();GetChar();
}
Retract();
code : =

(需打印的)编译原理实验报告 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xunlai783
  • 文件大小139 KB
  • 时间2017-12-29