全球旧事资料 分类
实验一词法扫描器设计
一实验目的
通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。
二实验内容
设计一个简单的类C语言的词法扫描器。
三实验要求
1、根据附录给定的文法,从输入的类C语言源程序中,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分隔符五大类;文法见最后附录。
2、提供源程序输入界面;3、词法分析后可查看符号表和TOKEN串表;4、保存符号表和TOKEN串表(如:文本文件);5、遇到错误时可显示提示信息,然后跳过错误部分继续进行分析。
四实验报告
(一)系统功能(包括各个子功能模块的功能说明)
程序主要实现的功能:通过词法分析程序,在源程序中识别并分别出数字、标识符和保留字,并分别将记录到指定的文本文档中,过程中不符合符号表要求的字符视为错误处理。
子功能模块:关键字处理;数字处理;字母的处理(标识符和保留字);运算符处理;主程序。
(二)开发平台(操作系统、设计语言)Wi
dows7,MicrosoftVisualC。
(三)设计方案(1)主数据流图
f开始
读入文件内容
调用caculate函数进行词法
分析
关闭文件
结束
(2)主要子程序的流程框图
子流程开始
打开或者创建分析结果输入文件
读取文件内容
文件读完
N判断是否是空格,缩进,换

N
Y不做处理
字符,无法识别类型写入结

是否是字符N
是否数字
N
是否运算符
Y
Y
Y
结束子流程
将字符临时赋值给字符串变量
将数值赋给变量
Y
将变量类型1和关
键字输入到界面并
Y
写入文件
读取下一个字符
是否是字符或者数字
N判断所获得的字符串变量是否是关键字
读取下一字符
Y
输入数字或者指数或者小数

N将变量类型3和数
字写入结果
将变量类型2和标N识符输入到界面并
写如文件
对每一运算符去相应的判断措施
(省略)
f(3)主要数据结构:idLettertempi
t10Numi
t10NumOP‘Keywordifthe
elsewhiledoLetterabcdefgijklm
opqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZNum0123456789εtempLettertempNumtempε
(四)具体设计过程(包括主控程序、各个功能模块的具体实现)
主模块:
judgeFILEchar用词法分析过程的判断
子功能模块:Keywordstri
g用于判断字符串是否是关键词
Lettercharc用于判断c是否是字母
Numcharc用于判断c是否是数字
(五)源代码
defi
eMAX50
umfgetcfpi
fgetcfpi
echer
好听全球资料 返回顶部