1 / 18
文档名称:

编译原理-词法分析.doc

格式:doc   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理-词法分析.doc

上传人:799474576 2013/7/29 文件大小:0 KB

下载得到文件列表

编译原理-词法分析.doc

文档介绍

文档介绍:《编译原理》实验
《编译原理》是国内外各高等院校计算机科学技术类专业,特别是计算机软件专业的一门重要专业课程。该课程系统地向学生介绍编译程序的结构、工作流程及编译程序各组成部分的设计原理和实现技术。由于该课程理论性和实践性都比较强,内容较为抽象复杂,涉及到大量的软件设计算法,因此,一直是一门比较难学的课程。为了使学生更好地理解和掌握编译技术的基本概念、基本原理和实现方法,实践环节非常重要,只有通过上机进行程序设计,才能使学生对比较抽象的教学内容产生具体的感性认识,增强学生综合分析问题、解决问题的能力,并对提高学生软件设计水平大有益处。
本实验内容可在《编译原理》课程教学的同时,安排学生进行相关的实验。实验平台可选择在MS-DOS或Windows操作系统环境,使用C/C++的任何版本作为开发工具。学生在做完试验后,应认真撰写实验报告,内容应包括实验名称、实验目的、实验要求、实验内容、测试或运行结果等。
实验一词法分析

利用该词法分析器完成对源程序字符串的词法分析。输出形式是源程序的单词符号二元式的代码,并保存到文件中。
实验目的
对C语言的一个子集设计并实现一个简单的词法分析器,掌握利用状态转换图设计词法分析器的基本方法。

(1) 假设该语言中的单词符号及种别编码如下表所示。
单词符号及种别编码
单词符号
种别编码
单词符号
种别编码
main
1
[
28
int
2
]
29
char
3
{
30
if
4
}
31
else
5
,
32
for
6
:
33
while
7
;
34
标识符ID
10
>
35
整型常数NUM
20
<
36
=
21
>=
37
+
22
<=
38
-
23
==
39
*
24
!=
40
/
25
&
41
(
26
&&
42
)
27
||
43
(2) 关键字main int char if else for while都是小写并都是保留字。
算符和界符= + - * / & < <= > >= == != && || , : ; { } [ ] ( )
ID和NUM的正规定义式为:
ID→letter(letter | didit)*
NUM→digit digit*
letter→a | …| z | A | …| Z
digit→ 0 | …| 9
如果关键字、标识符和常数之间没有确定的算符或界符作间隔,则至少用一个空格作间隔。空格由空白、制表符和换行符组成。
(3) 设计词法分析器的步骤:
首先根据上面单词符号表及ID和NUM的正规定义式,构造出状态转换图;
定义相关的变量和数据结构。关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:
char *KEY_WORDS[7]={″main″,″int″,″char″,″if″,″else″,″for″,″while″};
用以存放单词符号二元式的数据结构可如下定义:
#define MAXLENGTH 255 /* 一行允许的字符个数*/
union WORDCONTENT { /* 存放单词符号的内容*/
char T1[MAXLENGTH];/* 存放标识符及由两个(以上)字符组成的符号*/
int T2; /* 存放整型常数的拼数*/
char T3; /* 存放其他符号*/
};
typedef struct WORD { /* 单词符号二元式*/
int code; /* 存放种别编码*/
union WORDCONTENT value;
} WORD;
按照编译程序一遍扫描的要求,把词法分析器Scaner作为一个独立的子程序来设计,通过对Scaner的反复调用识别出所有的单词符号;
当Scaner识别出一个单词符号时,则将该单词符号的二元式写入到输出文件中。若Scaner无法识别出一个单词符号时,则调用错误处理程序PrintError,显示当前扫描到的字符及其所在行、列位置,并跳过该字符重新开始识别单词符号。
(4) 测试该设计词法分析器,可对下面的源程序进行词法分析:输出如下二元式代码序列:
main()
{
int i = 10;
while(i) i = i - 1;
}
输出如下二元式代码序列:
(1,main) (26,() (27,)) (30,{) (2,int) (1

最近更新

2021年考研《英语(二)》考试真题及答案解析【.. 24页

2022年二建建筑工程管理与实务真题答案及解析.. 16页

2022年河南省专升本考试公共英语真题及解析 27页

2023年一级建造师考试水利工程章节模拟题:水.. 4页

gmp缺陷分类 14页

《童年》读书笔记好词好句摘抄及感悟赏析 4页

上海牛津版三年级下英语单词(默写含答案) 24页

二建《机电实务》重要知识点归纳 5页

信息技术环境下高中语文课堂有效教学策略和方.. 13页

关于家风家训的活动策划方案【10篇】 24页

初中作文题目及分析 9页

全国2024年4月自学考试 94页

卢梭自然主义教育思想对现代教育的启示 8页

基于MRI医学图像的脑肿瘤分级 31页

大学生创新基础尔雅满分答案 21页

高考生物二轮复习 第二篇 保分2 重温解题模型.. 22页

安全目标责任落实及考核办法 5页

屋面夹芯板施工方案 - 副本 10页

工程量清单模式下的投标报价 11页

幼儿园语言特色方案(通用10篇) 18页

建筑施工技术形考作业2答案 6页

志愿者活动心得体会5篇 12页

技术服务保证书10篇 17页

教师个人师德建设计划 19页

新标准大学英语-视听说教程第一册(听力原文)-.. 26页

明德大学英语unit7课后答案 10页

机电传动控制 5套期末试题及答案 7页

民办职业培训学校年检及办学能力和诚信评估报.. 21页

河北省职业技能鉴定考核职业分类介绍 9页

清除小广告作文 4页