上传者: xqs251769745
|
上传时间: 2021-05-26 10:54:16
|
文件大小: 3KB
|
文件类型: CPP
编译原理作业。
实验:词法分析
一、实验目的:编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)
二、估计实验时间:1.课余准备15小时;2.上机二次4小时;3.完成实验报告5小时。
三、实验过程和指导:
(一)准备:1.阅读课本有关章节,花一周时间明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。2.初步编制好程序。3.准备好多组测试数据。
(二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。第二次上机调试通过。
(三)程序要求:
程序输入/输出示例:
如源程序为C语言。输入如下一段:
main()
{
int a,b;
a = 10;
b = a + 20;
}
要求输出如右图。
要求:
识别保留字:if、int、for、while、do、return、break、continue
其他的都识别为标识符;
常数为无符号整形数;
运算符包括:+、-、*、/、=、>、=、<=、!=
分隔符包括:,、;、{、}、(、)
以上为参考,具体可自行增删。
保留字为1 标识符为2 数字为3 运算符为4 分割府为5
程序思路(仅供参考):
0.定义部分:定义常量、变量、数据结构。
1.初始化:从文件将源程序全部输入到字符缓冲区中。
2.取单词前:去掉多余空白。
3.取单词后:去掉多余空白(可选,看着办)。
4.取单词:读出单词的每一个字符,组成单词,分析类型。(关键是如何判断取单词结束?取到的单词是什么类型的单词?)
5.显示结果。
(四)练习该实验的目的和思路:
程序开始变得复杂起来,可能是大家以前编过的程序中最复杂的,但相对于以后的程序来说还是简单的。因此要认真把握这个过渡期的练习。程序规模大概为200行。本实验和以后的实验相关。通过练习,掌握对字符进行灵活处理的方法。