文档详情

词法分析器的设计与实现(我自己做的课程设计,得到老师的认可).doc

发布:2016-05-24约3.68千字共2页下载文档
文本预览下载声明
 第 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
显示全部
相似文档