没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
实验一 词法分析程序设计与实现
一、实验目的
加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够
采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对
简单的程序段进行词法分析。
二、实验内容
自定义一种程序设计语言,或者选择已有的一种高级语言,编制它的词法
分析程序。词法分析程序的实现可以采用任何一种编程语言和编程工具。
从输入的源程序中,识别出各个具有独立意义的单词,即关键字、标识符、
常数、运算符、界符。并依次输出各个单词的内部编码及单词符号自身值。(遇
到错误时可显示“Error”,然后跳过错误部分继续显示)
三、实验要求:
1. 对单词的构词规则有明确的定义;
2. 编写的分析程序能够正确识别源程序中的单词符号;
3. 识别出的单词以<种别码,值>的形式保存在符号表中,正确设计和维
护符号表;
4. 对于源程序中的词法错误,能够做出简单的错误处理,给出简单的错
误提示,保证顺利完成整个源程序的词法分析;
四、实验步骤
1. 定义目标语言的可用符号表和构词规则;
2. 依次读入源程序符号,对源程序进行单词切分和识别,直到源程序结
csu
束;
3. 对正确的单词,按照它的种别以<种别码,值>的形式保存在符号表中;
4. 对不正确的单词,做出错误处理。
五、实验报告要求
详细说明你的程序的设计思路和实现过程。用有限自动机或者文法的形式
对词法定义做出详细说明,说明词法分析程序的工作过程,说明错误处理的实
现。
参考资料
一、程序要求
1、以下面一段程序为例
main()
{
int a,b;
a = 10;
b = a + 20;
}
2、需要识别的词
1. 关键字:if、int、for、while、do、return、break、continue;单
词种别码为 1。
2. 标识符;单词种别码为 2。
3. 常数为无符号整形数;单词种别码为 3。
csu
4. 运算符包括:+、-、*、/、=、 、<、 =、<=、!= ;单词种别码为 4。
5. 分隔符包括:,、;、{、}、(、); 单词种别码为 5。
3、程序输出形式
要求输出下面的形式:
(2,” main”)
(5,”(“)
(5,”)“)
(5,” {“)
(1,” int”)
(2,” a”)
(5,” ,”)
(2,” b”)
(5,” ;”)
(2,” a”)
(4,” =”)
(3,” 10”)
(5,” ;”)
(2,” b”)
(4,” =”)
(2,” a”)
csu
(4,” +”)
(3,” 20”)
(5,” ;”)
(5,” }“)
二、程序设计思路
这里以开始定义的 C 语言子集的源程序作为词法分析程序的输入数据。在
词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源
程序字符串时,将它翻译成固定长度的单词内部表示,并查、填适当的信息表。
经过词法分析后,源程序字符串(源程序的外部表示)被翻译成具有等长信息
的单词串(源程序的内部表示),并产生两个表格:常数表和标识符表,它们分
别包含了源程序中的所有常数和所有标识符。
1. 定义部分:定义常量、变量、数据结构。
2. 初始化:从文件将源程序全部输入到字符缓冲区中。
3. 取单词前:去掉多余空白。
4. 取单词:利用实验一的成果读出单词的每一个字符,组成单词,分析
类型。
5. 显示结果。
剩余16页未读,继续阅读
资源评论
ljiabin
- 粉丝: 283
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功