词法分析器的设计与实现(我自己做的课程设计,得到老师的认可).doc
文本预览下载声明
第 14 期 总第 168 期
2008 年 7 月
内 蒙 古 科 技 与 经 济
Inner Mongolia Science Technology Economy
No. 14 , t he 168t h issue
J ul. 2008
词法分析器的设计与实现
张 岚 ,王 鑫
(内蒙古财经学院 计算机信息管理学院 ,内蒙古 呼和浩特 010051)
摘 要 :介绍了词法分析器的概念 ,并指出词法分析器设计时 ,输入的源程序以文件的形式存储在
外部 。主控程序通过打开文件调用待分析的源程度 。
关键词 :词法分析器 ;正规式 ;自动机
中图分类号 : TP391 文献标识码 :A 文章编号 :1007 —6921 ( 2008) 14 —0223 —02
词法分析是编译程序进行翻译的第一个阶段 , 数只给出具体的值即可 。根据以上的分析可以相应
他对程序进行线性分析 ,从字符串中分出单词 ,并检 的设计如下的存储结构 。
查所分出的单词是否为合法的词类 。编译中的分词 关键字可以设计为一个预先存储好的表格 。
思想在“文本格式化” “公式排版” 应用的比较广 标志符和常数的逻辑结构设计如下 :
泛 ,是一种实用性很强的分析方法 。 st ruct Token
词法分析顾名思义就是分词 。它以程序设计语 {
-
分词过程可以通过编制程序自动完成 ,我们通常称
};
程序可以是现有的各类程序设计语言源程序也可以
st ruct Token
{
Token Type t
词法分析在教学上的主要应用是对源程序进行
double value ;
};
每个类型中的单词都有它的构成规则 。符合构
看成是一个字符串序列 ,通过把源程序看作字符串
序列就可以采用形式语言的一些现有理论处理相关
出部分词类的正规式描述 。
的编译问题 。分词的输出为单词序列 ,单词是一个
有共同含义的字符集 。由于程序设计语言中通常使
用空格来分割不同的词 ,因此初学者在理解这一概
念时可以简单的把空格分隔开的字符串认为是一个
单词 。
赋值运算符 = : =
正规式 是 一 种 常 用 的 描 述 单 词 的 手 段 。它 简
式存储在外部 。主控程序通过打开文件调用待分析
单 、 晰 。能清楚地描述出单词的构成 。并且可以
的源程序 。
方便的转化为单词的识别装置 ———自动机 。根据给
定的正规式得到的自动机如图 。
它涉及的内容较为简单 ,只包括几个较为常用的词
类 ,词类的构成上也适当的作了一些简化 。对词进
行分析时 ,我们是按类型进行分析的 。不同类型的
词在后续的分析中所起的作用不同 ,相应的操作也
各有不同 ,但同种类型中的词虽然单词的构成不同
但从宏观上看它们的操作大体一致 。模型语言中的
单词可以分为“关 键 字 ”、标 识 符 ”、常 数 ”、分 隔
符”“运算符”几类 。一般 ,关键字在程序设计语言
中人为 给 定 。程 序 设 计 时 采 用 一 字 一 码 的 形 式 处
图 1 标识符的自动机
理 。标志符为一类 ,不同的标志符通过值区别 。常
收稿日期 :2008 - 01 - 22
作者简介 :张岚 (1979 —) ,女 ,硕士 ,讲师 ,编译技术 ,内蒙古呼和浩特市人 ,内蒙古财经学院讲师 。
王鑫 (1979 —) ,女 ,本科 ,助教 ,网络技术 ,内蒙古呼和浩特市人 ,内蒙古财经学院讲师 。
223 ?
总第 168 期
自动机是从识别的角度来看待单词 。通过人为
的在自动机 (本质上是一个有向图) 上找一条从起点
到终点的路径就可以确定某个单词是否为合法的单
词 。自动机的另一个特点是可以非常方便的转化为
程序 。我们可以将每类单词连接成为只有一个入口
一个出口的自动机 。连接后的自动机如下图 4 。
图 4 模型语言单词的自动机
该图已经确定化 。为了提高效率 ,还可以将图
最小化 ,即合并等价状态 ,减少状态总数 。最小化后
的状态图可以很方便的翻译为程序代码 ,而且效率
较高 。最后用直接转向法实现有限自动机 ,生成词
法分析程序 。
词法分析程序识别某类单词的部分代码如下 。
token. ch = Buffer ;
for ( ; ; )
{
Char = Get Char () ;
if ( Char = = ’ n’ LineNo + + ;
if ( ! isspace ( Char ) ) break ; / / 如 果 字 符 不 为 空
结束取一个字符
}
AddChar TokenSt rin
显示全部