没有合适的资源?快使用搜索试试~ 我知道了~
首页编译实验 C++编写的词法分析器
编译实验 C++编写的词法分析器

通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解成各类单词的词法分析方法。 词法分析器工作的第一步是输入源程序文本。输入串一般是放在第一个缓冲区中。词法分析的工作可以直接在这个缓冲区中进行。但在许多情况下,把输入串预处理一下,对单词符号的识别工作将比较方便。在设计过程中,使用状态转换图是设计词法分析程序的一种好途径。一个状态转换图可以用于识别一定的字符串。在输入时用户不得使用系统的保留字,并且把关键字作为保留字,成为一类特殊标识符来处理。 转换图容易用程序实现,让每一个状态结点对应一小段程序。
资源详情
资源评论
资源推荐

词法分析程序实现
摘要:
通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序
进行扫描的过程中,将其分解成各类单词的词法分析方法。
词法分析器工作的第一步是输入源程序文本。输入串一般是放在第一个缓
冲区中。词法分析的工作可以直接在这个缓冲区中进行。但在许多情况下,把
输入串预处理一下,对单词符号的识别工作将比较方便。在设计过程中,使用
状态转换图是设计词法分析程序的一种好途径。一个状态转换图可以用于识别
一定的字符串。在输入时用户不得使用系统的保留字,并且把关键字作为保留
字,成为一类特殊标识符来处理。
转换图容易用程序实现,让每一个状态结点对应一小段程序。
关键字:
计算机,词法分析,c++,编译原理
问题描述:
据教学要求和学生具体情况,从具有代表性的高级程序设计语言中,选取
一个适当大小的子集,例如可以选取一类典型单词,也可以尽可能使各种类型
的单词都能兼顾到。
输入:由符合规定单词类别结构的各类单词组成的源程序。
输 出 : 单 词 串 的 输 出 形 式 , 所 输 出 的 每 一 单 词 均 按 形 如
(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS 字段为相应的
类别码,为便于查看由词法分析程序所输出的单词串,要求在 CLASS 字段上直
接放置单词类别助记符。VALUE 字段则是该标识符、常数在其符号表中登记项
的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则
存放该常数的二进制形式)。对于关键字和分隔符,采用一词一类的编码形式;
由于采用一词一类的编码方式,所以仅需在二元式的 CLASS 字段上放置相应的
单词的类别码,VALUE 字段则为“空”。
程序设计与实现:
1. 实现方法:
根据加入语义过程的状态转换图直接编写词法分析程序。根据每一组状态转换关
系(标识符)组织程序结构,并将所有公共处理过程分别实现即可。在扫描源程序字
符串时,一旦识别出关键字、运算符、标识符、无符号常数中之一,即以二元式形式
(类别编码,值)输出单词。每次调用词法分析程序,它均能自动继续扫描下去,形
成下一个单词,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序。
语言中的各类单词符号及其分类码表如下:

单词符号 类别编码 助记符 单词值
begin 1 BEGIN
end 2 END
if 3 IF
then 4 THEN
else 5 ELSE
标识符
6 ID
字母打头的字母数字
串
实数
7 FLOAT
数字值
< 8 LT
<= 9 LE
== 10 EQ
<> 11 NE
> 12 GT
>= 13 GE
:= 14 IS
+ 15 PL
- 16 MI
* 17 MU
/ 18 DI
描述词法的状态转换图如下:

描述无符号实型常数的状态转换图如下:
剩余12页未读,继续阅读
















nannass
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论5