【文件属性】:
文件名称:编译原理 词法分析 源代码
文件大小:7KB
文件格式:C
更新时间:2012-06-07 16:07:20
词法分析 源代码
实验一:词法分析程序
一、实验目的
通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的类型码及单词符号的自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)
二、实验要求
用C或C++写一个简单的词法分析程序,程序可以满足下列要求:
1、能分析如下几种简单的语言词法
(1) 标识符: ID=letter(letter|digit)*
(2) 关键字(全部小写)
main int float double char if then else switch case break continue while do for
(3)整型常量:NUM=digit digit*
(4)运算符
= + - * / < <= == != > >= ; ( )? :
(5)空格由空白、制表符和换行符组成,用以分隔ID、NUM、运算符等,字符分析时被忽略。
2、单词符号和相应的类别码
假定单词符号和相应的类别码如下:
单词符号 种别码
int 1
= 17
float 2
< 20
if 3
<= 21
switch 4
== 22
while 5
!= 23
Do 6
> 24
标识符 10
>= 25
整型常量 11
; 26
+ 13
( 27
- 14
) 28
* 15
? 29
/ 16
: 30
3、词法分析程序实现的功能
输入:单词序列(以文件形式提供),输出识别的单词的二元组序列到文件和屏幕
输出:二元组构成: (syn,token或sum)
其中: syn 为单词的种别码
token 为存放的单词自身符号串
sum 为整型常数
例:
源程序: int ab; float ef=20;
ab=10+ef;
输出:
(保留字--1,int)
(标识符--10,ab)
(分号--26,;)
(保留字--2,float)
(标识符--10,ef)
(等号--17,=)
(整数--11,20)
(分号--26,;)
(标识符--10,ab)
(等号--17,=)
(整数--11,10)
(加号--13,+)
(标识符--10,ef)
(分号--26,;)
4、自己准备测试数据存放于TestData.txt文件中,测试数据中应覆盖有以上5种数据,测试结果要求以原数据与结果对照的形式输出并保存在Result.txt中,同时要把结果输出到屏幕。
5、提前准备
① 实验前,先编制好程序,上机时输入并调试程序。
准备好多组测试数据(存放于文件TestData.txt中)。
6、写出实验报告
报告格式:要求有实验名称、实验目的、实验要求、实验内容、实验小结。
其中实验内容包括算法分析、程序流程图及程序代码。
网友评论
- 不值啊啊啊,心疼我的积分:(
- 得改改才能够使用呢
- 比较不错!跟我的想法有点不同,但还是要感谢楼主!
- 不值10分,代码还有错误,得改改才能用
- 不值10分,需要调试,并且功能也不是很好
- 比较不错!跟我的想法有点不同,但还是要感谢楼主!
- 很好用,做的很好,只得信赖。
- 代码不错,但是10分不值。
- 非常实用;包含文件的输入与输出!赞一个
- 谢谢楼主,代码给了我很大启发。。。
- 很有用,给了我不少启发
- 代码需要调试才好用觉得不值10分
- 感觉用起来有点障碍,用起来不太方便的。作者应当修改的更有亲和力。
- 确实有点贵。。
- 不是特别好,但还是感谢楼主,给我了一些思路,谢谢。
- 这东西10分确实有点贵啊,哎
- 资源对我的帮助挺大的
- 代码还算好,但是不值10分,
- 资源挺有用。
- 代码需要调试才好用觉得不值10分