基于ALEX的ATLAS词法分析器设计与实现.pdf
《基于ALEX的ATLAS词法分析器设计与实现.pdf》由会员分享,可在线阅读,更多相关《基于ALEX的ATLAS词法分析器设计与实现.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、匿查鎏霾雯巫墅塑窭羽软件时空文章编号:l 8-0 5 7 0(2 0 0 8)0 6-3 _ 0 2 4 5 0 2基于A L E X 的A T L A S 词法分析器设计与实现D e s i g na n dh n p l e m e n t a t i O n0 fA T L A SL e x i c a|A n a I y z e rB a s e d0 nA L E X(海军航空工程学嘲孔祥芝王昌金刘鹏K O N GX i a n g-Z h iW A N GC h a n g-j j nL I UP e n g摘要:针对I E E ES t dA T L A S7 1 6 标准,利用
2、基于w i n d o w s 操作平台的集成开发工具P m e rG e n e r a t o r,设计并实现了A,1 1 A S 词法分析器,分析了该词法分析器进行A T L A s 词法分析的过程。实践证明,利用该方法编写词法分析器简单易行,且构造的词法分析器准确性高,易于扩展。中关键词:A T L A S;编译器;词法分析;A L E X;P a r 姥rG 蚰e r a t o r中图分类号:T P 3 1 2文献标识码:AA 蛔t r a c t:A c c o r d i n gt ot h eI E E ES t dA r L A S7 1 6,u s i n gt h eI
3、 D EP a r s e rG e n e r a t o r b a s e do nW i n d o w s,t h eA T L A Sl e】【i c a l 蛐a l y z e ri 8d e s j g n e d 肋dj m p l e m e n t e d n e】e x j c a la 1 1 a l y z i n gp r o c e s s0 ft h ec o m p l e t e d1 e x j c a l 卸a l y z e ri sa l s oe x p l j c a t e d T h ep m c t i c ep l _;D v e s
4、t b i sa p p I D a c hi ss i m p l ea J l dt h ea n a l y z e ri t s e l fi sh i g hv e r a c i o u sa n de a s yt oe x t e n d K e y 聊D r d s:A 1 1 L A S;c 哪p n e r 1 e x i c 砒a 舳l y s i s;A L E X;P a r 辩rG e 耻n t o r引言A I L A s(A b b r e v i a t e dT e s tL a n g l l a g ef o rA uS y s t e m s)是目前
5、自动测试领域广泛使用的一种专用测试语言,具有面向信号、面向被测对象等优点。利用A T L A s 编写测试程序是未来军用测试系统的一项关键技术。作为一种高级语言。要使其运行在某台具体的机器上,需为之配备专用的编译器。词法分析是编译过程的基础阶段。开发程序设计语言词法分析器的方法主要有两种:一种是手r 丁编写;另一种是借助于辅助生成工具L E x(k x i c a lA n a l y z e rG e n e r a t o r)。由于A T L A S 定义庞大,采用手T 编写词法分析程序,结构复杂,且不易修改和扩充;采用第二种方法对A T L A s 词法分析器的研究,已经取得了一定成果
6、,但它是借助于基于D 0 s 的F L E x 工具进行的,在w i n d o w s操作系统广泛使用的今天,实现起来有所不便。为此,本文在研究基于w i n d o w s 平台的P a r s e rG e n e r a t o r 基础上,利用其中集成的A L E x,设计并实现了A n A s 编译器的词法分析模块。1A L E X 特点分析L E x 有多个版本,常用的有U N I x 系统自带的L E x,G N U 发布的F L E x,B i s o n 和M K s 发布的L E x 等,这些工具的运行环境必须为u N I x、D 0 s 和0 s,2。A L E x 也
7、是其中的一个,但它基于w i n d o w s 操作平台,与F L E x 相比,有以下优点:(1)具有可视化操作特点不用记住复杂的M S-D O s 操作命令;(2)开发向导可自动生成L E x 源文件初始框架,节省大量开发工作:(3)利用内置的程序库构造工具,可以方便地构造L E x 静态或动态链接库;(4)通过适当设置P a r s e rG e n e r a t o r 的参数,可以将A L E x 集成到其他可视化集成开发环境中(如V i s u a lc+),方便图形界面设计与词法分析程序的集成。(5)不但能生成c 语言代码的词法分析程序,还能生成c+孔祥芝:在读硕士研究生和J
8、 a v a 代码描述的词法分析程序。2A T L A S 词法分析器的结构设计A T L A s 词法分析是A T L A s 编译过程的第一步,其功能在于:扫描A A s 源程序字符流,按照该语言的词法规则识别出各类单词符号(t o k e n)。A T L A S 编译器中,将A T L A S 词法分析程序作为语法分析的子程序来实现。每当语法分析需要一个新的单词符号时,就调用词法分析子程序识别出个单词符号。如图l 所示:墓叠霉嚣嚣程序主要完戚文件包音的齄理1 条件辅译蜜一控制瘴-最姑堆图lA 7 r L A S 词法分析器的结构设计这种结构设计方法避免了中间文件的产生,编译效率较高。3
9、A T L A S 词法分析器的设计与实现3 1A T L A S 词法分析程序的构造用A L E x 构造A T L A s 词法分析程序,首先要分析A 1 1 A s的各类单词,然后用L E x 语言写出各类单词的正规表达式,以及相应的执行动作。f 1)A,I L A s 程序的单词分析根据A 1 r I A s 单词在句子中所起作用的不同,可将它们大致分为以下五类:关键字、标识符、字面量、语句标号、特殊字符。另外,在A T L A s 源程序中有三种注释:以大写字母B 开头以$结束的注释、以大写字母c 开头以$结束的注释、m e s s a g e t e x t 注释。在词法分析中,应
10、把注释直接略过,不予以分析。A 7 I I A s 词法分析程序的输出为单词的内部编码。对于标识符、字面量、特殊符号,可直接给其内部编码。在A L E x 源程序的(多_ 自接_ 邮局订阅号:8 2 9 4 63 6 0 元,年一2 4 5 万方数据软件时空中文核心期刊(管控一体化)2 0 0 8 年第2 4 卷第6-3 期一般定义部分,它们的内码定义如下:f s t a t n o n a g=1;#d e f i n eI D E N 7 兀F I E Rl,标识符i f m o l a r s=删糊e f i n es T R I N G2,字符串常量I州胡眦B C O N S T3,二
11、进制常数d o l a 娼=1;A 7 I I A s 关键字具体可分为与信号相关和与信号无关的关键字两类。前者是A A s 语言所特有的,包括动词、名词、名词修饰词、量纲、引脚描述符。后者主要包括结构控制类单词、语言定义类单词、函数描述类单词、算术比较类单词。对于与信号无关的关键字以及A T L A s 动词和引脚描述符,由于其数量有限,可以直接给出它们的内码。为了满足A A s针对不同的测试领域,需不断扩展名词、名词修饰词的要求,若将它们直接固定在A A s 词法分析器中,会带来分析器效率低下、关键字难以扩充的问题。为此,针对名词和名词修饰词,在进行A T L A s 词法分析时,可为之构
12、造专门的符号表。其结如下:s t r u c tK e y w o r d s c h a r k e v w o r d:侗形l o n gv a l u e;,内码值)以A 7 I L A s 名词为例。应用该结构构造的符号表如下:s t m c tK e)哪o r d sN o u n 眺口=A CS I G N A L”,1 0 0 ,”D CS I G N A L”,1 0 1l,V O L T A G E”,1 0 2l,)(2)A L E x 源程序A I J E x 源程序由三部分构成:定义部分、识别规则部分及辅助函数部分。识别规则部分是A L E x 源程序的核心,主要是根据
13、A,1 1 A S 语言各类单词的构词形式,写出各自的正规定义以及识别出来后应执行的相应动作代码。由于篇幅限制,下面只列出部分单词的识别规则:标识符规则:I E E Es t d7 1 6 1 9 8 9 标准规定,A A s 标识符是由单引号括起来的字符串。其识别规则如下:I E E Es t d7 1 6 1 9 8 9 标准规定,A 1 I A s 标识符是由单引号括起来的字符串。其识别规则如下:(口木 l e t t e r)I d i g i t I”=”+”l f t I I f t#”|”I”&”I I:”;”I”I”?”I ”I ”|【I|】”I+”|I!”I”I I I 一”
14、I”一”I”,”l、I I)+口4、r e t u mI D E N r I I F I E R;关键字规则:直接将关键字列出,后面跟处理动作。如:”A P P L Y”r e t u mA P P L Y C O N;其中A P P L Y 为A T L A s 动词关键字,A P P L Y _ C O N 是要返回的单词符号,它是在定义部分预定义的常量。注释识别规则:以大写字母C 开头、$结尾的注释语句识别规则为例,如下:”$”(口)I 卜】I 词)+c r$】削$”lc h a r 木p=y y t e x t;w h i l e P p r=、0 7)i f(木p=7 n 7)y y
15、 p o s+;p+;y y t e x t【l】-、0;r;e t u m(7$);Jl其中的动作含义是:当某个单词与此规则匹配时,首先查看这条语句的前一条语句是否为注释语句,若不是,则规则中的第一个$是前一条语句的结束符,返回$的内码值;否则表示它是前一条注释语句的结束符不需返回。另外还要统计出其中的回车换行的个数,以便计算当前的行号,供错误定位时使用。3 2A T L A s 词法分析程序的实现把编辑好的A L E x 源程序a t l a s 1 在P a 瑙e rG e n e r a t o r 下进行编译,选择目标语言为c+,会生成a d a s h 和a n a s c p p
16、 文件,这就是A T L A s 词法分析器的源代码文件。利用L i b B u i l d e r 功能,可方便地构建A r l l A s 词法分析程序库文件,以方便编译器中其他模块的调用。其中a t l a s c p p 包含识别各类单词的D F A(由A L E x 根据各类单词的正则式构造而成)和该D F A 的驱动总控程序y y l e x O。3 3 利用生成的A I L A S 词法分析器进行词法分析以一条A T L A sM E A s u R E 语句为例说明词法分析过程。M E A S U R E,0 L T A G EI N T 0 S T O R E 7),D CS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ALEX ATLAS 词法 分析器 设计 实现
限制150内