




已阅读5页,还剩86页未读, 继续免费阅读
(计算机软件与理论专业论文)一种组态语言及其开发环境的设计及实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
堕! ! 三些盔兰堡主兰堡笙苎! ! 三 摘要 监控组态软件在工业控制中应用越来越广泛,对用户编程接口的支持显得曰 益重要。目前,这一领域的技术还不很成熟,一般组态软件只提供脚本语言,并 直接对源程序解释执行,在执行效率、稳定性和可靠性等方面存在问题,需要解 决。 论文对组态软件中的用户编程接口进行了研究,在充分考虑了监控组态软件 的行业应用特点的基础上,设计了一种组态语言c 2 0 0 0 语言,对其编译器及 开发环境的实现方案迸行了详细论述;并对语言设计、语法分析、语义分析,以 及中间代码生成和用来对中间代码解释执行的虚拟机等进行了深入的讨论,详细 论述了各语法成分的实现,总结了对源程序中错误处理的方法。论文在最后还对 语言开发环境的调试功能进行了分析,并给出了其实现方案。 在对语言编译器即语言实现方面的研究中,论文总结了编译器的一般模型, 并针对其前端和后端分别选择了合适的实现方案:前端没有采用语法制导的语义 分析,而是通过对源程序等价表述的引入将语法分析和语义分析安排到不同阶段 进行;后端选择了用虚拟机对中间代码解释执行的实现方案。在具体实现过程中, 充分利用了面向对象技术与编译技术相结合的思想。 在信息表管理方面,没有采用多级的表组织方式,而采用了线性的表组织方 式,简单高效地实现了对作用域多层嵌套的支持;在表的查找算法的实现中,通 过辅助表的引入,解决了符号表和常量表的顺序填写法与h a s h 算法中表项记录 的h a s h 函数定位法之间的矛盾这一难点。 在虚拟机实现方面,将所有p 一指令封装为类来实现;并用虚拟机维护由代 码区、数据区、函数调用栈、操作数栈和指令计数器等共同构成的运行时环境, 控制程序的执行,有利于实现调试功能。 在语法分析、语义分析及中间代码生成方面,先经过语法分析建立抽象语法 树,然后对抽象语法树进行三次遍历完成语义分析并生成中间代码。通过对 c 2 0 0 0 语言各语法成分类及其类层次的设计,简化了整个实现过程,并通过引入 辅助链表,解决了语法分析中空间管理的问题。 实际应用表明,c 2 0 0 0 编译器能够生成结构紧凑的中间代码,其虚拟机对中 间代码解释执行时,效率高,运行稳定、可靠、安全,解决了一般组态软件中在 对用户编程接口支持方面的问题,很好地满足了监控组态软件的需求。 关键词:组态;抽象语法树:中间代码;虚拟机;运行时环境 堕! ! 三些奎兰塑主堂垡笙苎 一笪! ! ! 翌 a b s t r a c t w i t ht h ei n c r e a s i n gp o p u l a r i t yo fm o n i t o r i n gc o n f i g u r a t i o ns o f t w a r e sa p p l i c a t i o ni n i n d u s t r yc o n t r o l l i n g ,i tb e c o m e sm o r ea n dm o r ei m p o r t a n tt os u p p o r tp r o g r a m r n m g i n t e r f a c e h o w e v e r ,t e c h n i q u e s i nt h i sf i e l d g r o ws l o w l y m o s t o ft h e p r e v a l e n t c o n f i g u r a t i o ns o f t w a r e so n l yp r o v i d es c r i p tl a n g u a g e s ,w h i c ha r ed i r e c t l y e x e c u t e d t h r o u g hi n t e r p r e t i n g ,a n dh a v et h ed i s a d v a n t a g eo fl o we f f i c i e n c y , l o ws t a b i l i t ya n d l o w r e l i a b i l i t y t h i st h e s i ss t u d i e st h ep r o g r a m m i n gi n t e r f a c ei nc o n f i g u r a t i o ns o f t w a r e b a s e do n c o m p r e h e n s i v e l yc o n s i d e r i n g t h e s p e c i f i c f e a t u r e so f m o n i t o r i n gc o n f i g u r a t i o n s o f t w a r e sa p p l y i n g ,ac o n f i g u r a t i o nl a n g u a g e - - c 2 0 0 0l a n g u a g ei sd e s i g n e d ,w h o s e c o m p i l e r a n dd e v e l o p m e n te n v i r o n m e n ta r et h e nf u l f i l l e d t h e d e s i g n i n g ,s y n t a x a n a l y s i s ,s e m a n t i ca n a l y s i sa n di n t e r m e d i a t ec o d eg e n e r a t i n go fc 2 0 0 0a r ed e e p l y d i s c u s s e d av i r t u a lm a c h i n ei sa l s o p r e s e n t e da n di m p l e m e n t e dt os u p p o r t t h e e x e c u t i n g o ft h ei n t e r m e d i a t ec o d et h i st h e s i sd e s c r i b e st h ef u l f i l l m e n to ft h e g r a m m a r e l e m e n t sa tl e n g t h t h ed e b u g g i n gf u n c t i o no ft h ed e v e l o p m e n te n v i r o n m e n t i sa l s od e v j s e d ac o m m o nf r a m e w o r ko fc o m p i l e ri sa b s t r a c t e dd u r i n gt h es t u d yo ft h ec o m p i l e ro f c 2 0 0 0l a n g u a g e a f t e rt h a t ,t h ei m p l e m e n t a t i o ns c h e m e so ft h ef r o n te n da n db a c k e n da r ep r e s e n t e d a st ot h ef r o n te n d ,t h i st h e s i sd o e s n tu s et h em e t h o do fs y n t a x d i r e c t e ds e m a n t i ca n a l y s i s i n s t e a d ,i ta r r a n g e ss y n t a xa n a l y s i sa n ds e m a n t i ca n a l y s i s i n t od i f f e r e n ts t a g e si nv i r t u eo ft h ee q u a ld e s c r i p t i o no fs o u r c ep r o g r a m a st ot h e b a c ke n d ,i ts e l e c t st h es c h e m et h a tav i r t u a lm a c h i n ee x e c u t e st h ei n t e r m e d i a t ec o d e t h r o u g hi n t e r p r e t i n g t h et h o u g h to fc o m b i n a t i o no fo b j e c to r i e n t e dt e c h n i q u ea n d c o m p l i e rc o n s t r u c t i o nt e c h n i q u ei sd e e p l yu s e d i nt h ep r o c e d u r eo f i m p l e m e n t i n g f o r s u p p o r t i n gm u l t i l e v e le m b e d d i n gd o m a i n s ,l i n e a rt a b l ei n s t e a do f m u l t i l e v e lt a b l e i su s e dt om a k et h ei m p l e m e n t i n go fi n f o r m a t i o nt a b l e sm a n a g e m e n t ( s u c ha ss y m b o l t a b l ea n dc o n s t a n tt a b l em a n a g e m e n t ) s i m p l ea n de f f e c t i v e t of u l f i l lt h es e a r c h i n g a l g o r i t h mo fs y m b o lt a b l ea n dc o n s t a n tt a b l e ,a l la s s i s t a n tt a b l ei si n t r o d u c e dt os o l v e t h e p r o b l e m c a u s e d b yt h e u s eo f h a s h a l g o r i t h m 堕j ! 三些查堂堡主堂垡堡塞竺! ! 坚 i nt h ei m p l e m e n t i n go f v i r t u a lm a c h i n e ,a l lp - i n s t r u c t i o n sa r ee n c a p s u l a t e da sc l a s s e s t h ev i r t u a lm a c h i n em a i n t a i n st h er u n - t i m ee n v i r o n m e n t ,w h i c hi sc o m p o s e d o f c o d e s e c t i o n ,d a t as e c t i o n ,f u n c t i o nc a l l i n gs t a c k ,o p e r a n ds t a c k ,i n s t r u c t i o np o i n t e r , e t c a l l t h a ti sg o o dt ot h ee x e c u t i n ga n dt h ed e b u g g i n go f p r o g r a m a na b s t r a c ts y n t a xt r e ei sb u i l ta f t e rs y n t a xa n a l y s i sa n dt r a v e r s e dt h r e et i m e st od o s e m a n t i ca n a l y s i st og e n e r a t et h ei n t e r m e d i a t ec o d e t h ed e s i g no ft h ec l a s s e so f c 2 0 0 0l a n g u a g eg r a m m a re l e m e n t si so fg r e a tb e n e f i tt o t h es i m p l i f i c a t i o no ft h e w h o l ep r o c e d u r e t h ep r o b l e mo fm e m o r ym a n a g e m e n ti ns y n t a xa n a l y s i si ss o l v e d w i t ha na s s i s t a n tl i s t a sar e s u l t ,c 2 0 0 0c o m p i l e rc a r lg e n e r a t eac o m p a c t l ys t r u c t u r e di n t e r m e d i a t ec o d e e f f e c t i v e l y ,w h i c hc a nb ee x e c u t e db yc 2 0 0 0 v i r t u a lm a c h i n ee f f i c i e n t l y ,s a f e l y ,a n d s t a b l y t h u st h ep r o b l e mp u tf o r w a r d e d a tt h eb e g i n n i n go ft h i sp a p e ri ss o l v e d ,a n d t h er e q u i r e m e n to fm o n i t o r i n gc o n f i g u r a t i o ns o f t w a r ei nt h es u p p o r to f p r o g r a m m i n g i n t e r f a c ei ss a t i s f i e dw e l l k e y w o r d s :c o n f i g u r a t i o n ;a b s t r a c ts y n t a xt r e e ;i n t e r m e d i a t ec o d e ;v i r t u a lm a c h i n e ; r u n t i m ee n v i r o n m e n t i i i 堕! ! 三些查兰堡主堂焦堡苎j 卫立! ! 苎堕 1 1 项目背景 第1 章绪论 y s s 2 0 0 0 电力监控组态和运行系统项目从1 9 9 9 年下半年开始,历经多个版 本,不断地升级、走向成熟,曾于2 0 0 0 年通过国家电力部鉴定,至今还在进行 中。c 2 0 0 0 组态语言是其中的一个重要组成部分,用来对用户编程接口提供支持。 1 1 1y s s 2 0 0 0 电力监控组态和运行系统的背景 随着工业的不断发展以及电力基础设施的建设,我国的供、用电体系正在发 生巨大的变化,对电器设备本身和控制保护设备的要求更为严格而且复杂。电力 市场的进一步形成,也对测量、监测、控制系统提出新的要求。这些要求表现为: 要求测量控制设备能进行远程测量、累计、计算、存储各个时段负荷,同时满足 不同单位的各项要求而不至于相互影响;要求检测设备能及时发现危及电网稳定 运行的隐患;要求保护能够自诊断和监视报警,实现信息的共享与保护的集成, 能够进行波形的识别与定值的动态修改等。很显然,传统的保护测量监控设备已 难以满足电力工业及广大用户的要求。迫切希望有一种更加灵活的、方便的、实 时性更高的、多功能的监控系统。 各种各样的新型智能电子装置不断出现并在供用电系统中大量运用,初步形 成了低压智能配电中心、智能马达控制中心、电子脱扣器、变电站综合自动化系 统、馈线自动化系统、数据采集与监控系统等一系列的产品,也建立起来信息收 集与处理的通讯系统,对于提高电力系统的自动化水平和运行的可靠性起到很大 的作用。 被誉为自动化领域的计算机局域网的现场总线( f i e l d - b u s ) 技术,具有:一对 n 结构,双向传输多个信号;可靠性高,精度高:互换性和互操作性好;开放性 等优点。克服了传统的布线方法难以实现智能化电器之间的信息交换,智能化电 器能处理多个信息和复杂计算难以充分发挥等缺点。它把单个分散的测量控制设 备变成网络节点,以现场总线为纽带,把它们连接成可以相互沟通信息、共同完 成自控任务的网络系统与控制系统。它给自动化领域带来的变化,正如众多分散 的计算机被网络连接在一起,使计算机的功能、作用发生的变化。 上述这些技术以及其他硬件方面的技术的发展,使构造一种实时性、操作便 西北工业大学硕士学位论文 第1 章绪论 捷性、可靠性、内容丰富性等更好的监控系统成为可能。 在软件方面,随着计算机控制系统的发展,工业控制系统的复杂性的增加、 数量的增大,工业控制系统已经开始走向标准化,构成工业控制系统的可组合化 的硬设备已经成型,这使得工业控制系统的兼容性、可靠性、互换性都大大增加, 并且使得系统易于升级和替换。而工业测控系统软件的开发就显得相对落后,这 使得大多数用户和项目承包商还需自行开发相应的应用软件,这既延长了开发周 期,又由于开发水平参差不齐,使得应用软件水平不高,质量不好,造成了大量 低水平的不必要的重复。人们认识到,得力的工业控制系统软件开发工具在工业 控制系统软件的开发过程中是必不可少的。从而出现了一种新型的系统软件开发 工具工业控制组态软件。用户可以通过工业控制组态软件,自行经过组态过 程构成其所需要的工业控制系统软件。 组态一词源于英文c o n f i g u r a t i o n ,含义是使用软件工具对计算机及软件的 各种资源进行配置,达到使计算机或软件按照预先设置,自动执行特定任务,满 足使用者要求的目的。组态概念随着分布式控制系统( d i s t r i b u t e dc o n t r o l s y s t e m ) 的出现爿开始被广大的生产过程自动化技术人员所熟知。组态软件作为 用户可定制功能的软件平台工具,正是随着d c s 及计算机控制技术的日趋成熟而 发展起来的,其应用领域已经拓展到了社会生活的各个方面。监控组态软件是面 向监控与数据采集( s u p e r v i s o r yc o n t r o la n dd a t aa c q u i s i t i o n ) 的软件平台 工具,具有丰富的设置项目,使用方式灵活,功能强大。监控组态软件最早出现 时,h m i ( h u m a nm a c h i n ei n t e r f a c e ) 或m m i ( m a nm a e h i n ei n t e r f a c e ) 是其主要 内涵,即主要解决人机图形界面问题。随着它的快速发展,实施数据库、实施控 制、s c a d a 、通信及联网、开放数据接口、对i o 设备的广泛支持已经成为它的 主要内容。随着技术的发展,监控组态软件将会不断被赋予新的内容“1 。这就使 得开发一种灵活、高效、丰富、便捷的监控系统的周期大为缩短,使用起来也会 很方便。 在工业控制组态软件的帮助下,控制系统的设计工程师们通过分析工业被控 对象,根据该对象的系统需求,制定出控制系统的组成结构与控制策略,并据此 对工业控制组态软件进行“组态”,从而将工业控制组态软件“升级”为一个专 用的、面向具体对象的工业控制系统软件。在使用过程中,该软件将通过人机界 面与最终用户( 生产操作人员) 进行实时交互,通过i o 设备对工业对象进行 实时监控。因此工业控制组态软件实际上是种能由用户根据自己的需要进行 二次开发的软件开发平台。 智能化电器、现场总线和工业控制组态软件三者的紧密结合为具备通信功能 的、传输信号全数字化的智能化监控系统的出现提供了强大的推动力。 智能化电器的功能实现是通过软件对设备的控制而完成的软件系统的特性 堕! ! 三、业查兰堡主堂竺堡兰一蔓二里:j ! 堕 直接决定整个系统的性能。为了适应智能电器发展的要求,方便用户的控制和检 修,软件系统应具备以下的特征: 多任务实时系统,它可以保证满足不同功能对实时性、可靠性的要求, 也有利于实现软件的组态; 用户的可编程支持,程序开发人员不可能完全了解用户的实际需要,也 不可能对各种情况完全考虑的周到,提供给用户简单可行的编程支持十 分必要,实际上,通过多任务内核和相应的编程支持完全可以实现; 系统的自检和监视,它是提高智能化电器可靠性的重要保障,对于一般 设备、器件的软件算法比较成熟,多处理器系统才能真正实现完全的自 检和诊断; 网络通讯的多协议支持,为保证不同系统的兼容,支持多种协议是软件 系统的重要特性。 目前,国内外许多电子公司都推出了自己的电力监控组态软件,其中国外较 著名的有w o n d w a r e 公司的i n t o u c h 、西门予公司w i n c c 、澳大利亚c i t 公司的 c i v e t 等,国内有北京赛诺义公司的s y n a l l 系统、北京亚控公司的组态王等。这 些系统较好的解决了传统s c a d a 上位机系统的功能,主要方面有: 数据采集与控制信息发送,提供基于进程间通讯的数据采集方法。 报警处理,具有多点同时报警处理功能,提供报警信息的显示、登录, 部分提供用户应答功能。 历史趋势显示与记录,提供基于专用实时数据库的监控点数据的记录、 查询和图形曲线显示。 网络通讯管理,提供非透明网络通讯机制,可以构筑上位机的分布式监 控处理功能。 双机冗余,能够在主机瘫痪时,启动备份机进行监控工作。 这些监控组态系统基本上达到了组态系统的各种要求,但某些方面还待进一 步完善,举例如下: 监控界面定制的通用性。 对各种不同型号的设备、不同协议的总线的兼容性。 双机热备功能的加强。 提供给用户的编程接口的开放性、完备性,及用户程序执行时的稳定性、 可靠性。 与企业m i s 系统的结合性能。 网络通讯的透明性。 数据采集速度。 堕! ! 三些查鲎堡主堂垡堡壅一兰上兰! 童鱼 系统事故追忆能力。 数据管理和数据分析能力。 为此我们进行了y s s 2 0 0 0 电力监控组态与运行系统( 以下简称y s s 系统) 的开发,y s s 系统是在原有的单片机系统的基础上重新开发的远距离集中监控保 护低压电路系统可组态软件,保留了原有系统的必要功能,同时为了和国际标准 接口,改造了原系统的网络模型,应用p r o f i b u s 总线系统,保证了系统的工 业可靠性和实时性。 本软件系统分为设备版、工程版和运行版三部分。其中设备版对设备信息、 图标信息、图形信息、变量单位信息等进行组态,其结果提供给工程版用;工程 版利用设备版组态的结果进行项目组态,其结果提供给运行版用,从而达到电力 监控的目的;运行版根据工程版的组态结果产生监控运行系统,实现实时监控。 本系统的一个很大的优点,就是具有很大的开发性,允许用户通过组态而产生一 个与实际情况相符的电力监控系统。 1 1 20 2 0 0 0 语言产生的背景 c 2 0 0 0 用户组态语言是该系统中的一个重要组成部分,在设备版、工程版中, 提供给用户一个c 2 0 0 0 程序开发平台,让用户编写、开发各种控制程序( 这些 控制程序所完成的功能通过其他组态方式是定制不了的,这样就进一步加强了组 态灵活性) 。在运行版中由系统事件或用户界面操作事件触发这些控制程序,达 到监控、设备参数调整等目的。可以说,组态软件使定制监控软件系统变得快捷、 方便,而组态语言进一步增强了组态软件的灵活性,组态用户可以根据实际系统 的具体情况,编制合适的c 2 0 0 0 程序,来灵活地实现对现场设备的监控。c 2 0 0 0 语言具有c 语言的风格,故得此名。 c 2 0 0 0 组态语言的提出及其实现中,一个重要目的是:提高组态用户编写的 程序在执行时的可靠性、稳定性、安全性和实时性,从而解决一般组态软件中的 只提供脚本语言并直接对源程序解释执行这一方案所存在的问题。 1 2 技术背景 1 2 1 编译原理及技术 编译原理及方法能很好地完成对一个语言的编译器的构造,已形成了一套系 统的理论和利于程序实现的较形式化的算法,目前还有自动生成工具一“l e x ”、 耍i ! 王些盔堂堡圭堂竺堡兰兰塑堂 “y a c c ”等可供使用。 一般的编译程序由以下几个模块组成:词法分析模块,语法分析模块,语义 分析模块,中间代码生成模块,代码优化模块,目标代码生成模块,错误检查和 处理模块,信息表管理模块。 词法分析( 1 e x i c a la n a l y s i s ) 将字符串形式的源程序扫描转换为单词串形 式的等价程序。用文法来描述语言中的各类单词,通常采用的是正规表达式 ( r e g u l a re x p r e s s i o n ) ,据此构造识别各类单词的有限自动机( f i n i t e a u t o m a t a ) 。词法分析的结果提供给语法分析使用。l e x 是一种自动生成词法分 析程序的工具,使开发者将精力集中于程序单词的正规表达式的构造上。 语法分析( s y n t a xa n a l y s i s ) 负责对源程序进行全面的分析,可以用于判 断源程序的合法性。用文法来描述整个程序的语法结构,通常由上下文无关文法 ( c o n t e x t f r e eg r a m m a r ) 来描述,其形式表现为产生式( p r o d u c t i o n ) 。对一 种语言的产生式集合的构造将是很关键的,其中要考虑二义性问题,同时还需要 与语法分析、语义分析等整个过程结合起来考虑,比如冲突的消除、语义子程序 的设计等。在数据结构上一种语言的程序可以表达为分析树( p a r s et r e e ) 或语 法树( s y n t a xt r e e ) 。因此对语言的语法分析也就有自顶向下( t o p d o w n p a r s i n g ) 、自底向上( b o t t o m u pp a r s i n g ) 分析两种。对于自顶向下分析有递 归下降分析( r e c u r s i v e d e s c e n tp a r s i n g ) 、l l ( 1 ) 分析( l l ( 1 ) p a r s i n g ) 以及 l l ( k ) 分析( l l ( k ) p a r s i n g ) 等技术,对于自底向上分析有l r ( 1 ) 分析( l r ( 1 ) p a r s i n g ) 、s l r ( 1 ) 分析( s l r ( 1 ) p a r s i n g ) 、s l r ( k ) 分析( sl r ( k ) p a r s i n g ) 、 l a l r ( 1 ) 分析( l a l r ( 1 ) p a r s i n g ) 等技术。y a c c 是一个l a l r ( 1 ) 分析程序的生 成器,只需编写y a c c 说明文件,就可自动生成l a l r ( 1 ) 分析程序。在具体使用 上,有两个难点:一是在构造产生式集时冲突及二义性的消除;二是对各产生式 的动作子程序的编写。 语义分析( s e m a n t i ca n a l y s i s ) 主要是计算编译过程所需的附加信息,它 包括与上下文无关文法和标准分析算法以外的信息,如符号表、表达式和语句中 的类型推断和检查以及在语言的类型规则作用域内判断它们的正确性。这一阶段 通常与代码生成,优化等过程结合起来进行。目前对于语义分析还没有形式化的 算法及成熟的通用工具,这方面大有研究发展的前景。属性文法( a t t r i b u t e g r a m m a r ) 提供了语义分析的一种很好的思想,它对语法制导的语义分析 ( s y n t a x d i r e c t e ds e m a n t i ca n a l y s i s ) 具有重要的指导意义。通过这种方法, 对源程序进行多遍扫描,产生合适的中间数据结构,为代码生成提供支持。 中间代码( i n t e r m e d i a t ec o d e ) 生成,即线性化前述分析过程中所得到的 反映源程序的数据结构,使之更有利于执行。目前常用的中间代码形式有:三元 式、四元式、p 一代码( p c o d e ) 、u - 代码等。中间代码的生成技术,与语义分析 堕! ! 王些查兰堕主兰垡堡兰一! 生j ! ! ! 监 技术密切联系。 代码优化( c o d eo p t i m i z a t i o n ) ,在不改变原有程序功能的前提下,通过对 中间代码的改进、调整,来提高执行的效率。优化的技术也有很多,如:利用流 图( f l o wg r a p h ) 、基本块的d a g 图( d a go fa b a s i cb l o c k ) 来进行优化的技 术就是其中一例。 目标代码( t a r g e tc o d e ) 生成,将中间代码转化为目标机器的代码,并再次 优化。 错误检查和处理,检查并报告程序的错误,并进行适当的处理。 信息表管理,这涉及到符号表、运行时动态信息的组织和管理等方面,所管 理的信息中要包含调试所需的信息。 上述各阶段都是相互联系和结合的,它们的设计必须站在整个过程的着眼点 e 。 1 2 2 面向对象的设计和开发技术 对于c 2 0 0 0 程序集成开发环境的界面部分,可以利用面向对象技术来实现: 在编译器中各种数据结构的维护和管理,也可利用面向对象技术。面向对象技术 是近些年来软件开发中采用的一项新技术。面向对象开发具有四个主要特点:封 装性,隐藏性,继承性和多态性。面向对象通过“类”来支持隐藏和封装性。定 义良好的类旦建立,就可以看成是完全封装的实体,可以作为一个整体单元使 用。类的实际内部工作应当隐藏起来:定义良好的类的用户不需要知道类是如何 工作的,只知道如何使用它就行。面向对象语言通过继承支持重用思想。通过这 一概念,程序可以在扩展现有类型的基础上声明新类型。新子类是从现有类型派 生出来的,也称为派生类。多态性指同一名字可以肴多种形式;面向对象语言通 过函数多态性和类的多态性来支持不同的对象进行各自正确的处理。c + + b u i l d e r 是i n p r i s e 公司推出的快速应用程序的开发工具,支持完整的c + + 语言 规则,是一个真正的可视化c + + 语言开发工具。利用它,开发c 2 0 0 0 程序集成开 发环境的界面将变得比较容易。 1 3 论文的主要研究工作及创新 1 3 1 工作总结 我从1 9 9 9 年9 月至今,参于了y s s 2 0 0 0 项目的整个开发与维护过程,先后 西北工业大学硕士学位论文 第1 章绪论 进行了多个子系统- 的设计和开发工作,其中包括:界面模块中各种控件、虚拟仪 表等的封装设计及其实现;界面组态中对象观察框( 即各种界面元素的属性配置 器) 的设计及实现:单位库的封装设计及其实现;界面信息文件的组织结构设计 及其实现;界面操作的撤销和恢复功能的设计及实现;故障录波功能的设计及实 现:;等等。本文对其中的c 2 0 0 0 子系统的研发过程中的主要工作及其成 果进行了总结。该模块负责对组态系统中用户编程接口功能进行设计与实现。 正如论文题目“一种组态语言及其开发环境的设计及实现”所述,论文的主 要研究内容可概括为: c 2 0 0 0 语言的设计,包括语言定义、语言的词法、文法: c 2 0 0 0 语言的词法分析、语法分析、语义分析及中间代码生成: 用来支持c 2 0 0 0 程序执行的c 2 0 0 0 虚拟机的设计和实现; c 2 0 0 0 语言集成开发环境的设计和实现。 其中,我的工作主要有:c 2 0 0 0 语言定义;语言的词法、文法的设计;整个 c 2 0 0 0 编译器的总体设计:以及其中的一个重要模块语法、语义分析模块的 设计及实现,主要完成:词法分析、语法分析、语义分析及中间代码生成。另外, 本人还对信息表管理模块和虚拟机模块进行了设计,并指导其他同学完成了对这 两个模块的具体实现。 1 3 2 主要创瓤点 1 在语言的设计工作中,本文充分考虑了监控组态行业的应用特点,设计出了 满足y s s 2 0 0 0 系统应用需求,具有特色的c 2 0 0 0 组态语言。 2 在语言的实现,即对其编译器的研究和开发工作中,针对编译器一般模型的 前端,本文提出了这样的设计语义子程序的原则:将y y p a r s e ( ) 年ny y l e x 0 完成 的分析工作量减少到最低限度,只用来产生源程序的等价表述。即,将语法 分析和语义分析安排到不同阶段进行。从而使y y l e x ( ) _ 乖 1y y p a r s e 0 的可读性比 较差这一点对编译器的软件结构清晰性、可维护性的影响降到了最低程度。 针对后端,选择了用虚拟机对中间代码解释执行的实现方案。 3 在对c 2 0 0 0 语言编译器的具体实现过程中,充分应用了将面向对象技术与编 译技术相结合的方法。对整个编译器、其各组成模块、各模块的子模块以及 其中各种功能成分的具体实现过程都进行了封装。 4 在对信息表的管理中,我们只用线性的表组织方式就简单高效地实现了对作 用域多层嵌套的支持;在表的查找算法的实现中,通过引入辅助表,解决了 符号表和常量表的顺序填写法与h a s h 算法中表项记录的哈希函数定位法之 间的矛盾这一难点。 西北工业大学硕士学位论文 第1 章绪论 5 6 7 在虚拟机的实现中,将所有p 一指令封装为类来实现。维护了由代码区、数据 区、函数调用栈、操作数栈和指令计数器等共同构成的运行时环境来控制程 序的执行:这有利于调试功能的实现。另外,这种虚拟机执行方式,将c 2 0 0 0 程序执行时的动态错误封装在虚拟机内部来处理,提高了系统的稳定性、安 全性和可靠性。 在进行语法、语义分析及中间代码生成的过程中,我们通过语法分析将源程 序转换为等价表述抽象语法树,然后对其进行多次遍历来完成语义分析 并生成中间代码。整个过程都大大得益于我们所设计的c 2 0 0 0 语言的各语法 成分类的封装实现。另外,在语法分析中,我们引入辅助链表,解决了空间 管理问题。 有了第5 点中所述的虚拟机的执行方式,特别是其运行时环境的组织,c 2 0 0 0 程序的调试功能也得到了很好的实现。另外,我们还为用户提供了调试函数 t r a c e ( ) 。 1 4 论文组织 论文共分7 章,分另介绍如下: 第1 章:绪论。介绍了组态软件及其中组态语言的研究背景,以及语言 编译器实现的技术背景,然后介绍了课题研究的内容及主要创新,并对 文中一些主要术语进行了定义。 第2 章:c 2 0 0 0 语言设计。介绍了c 2 0 0 0 语言的语法成分、功能,及其 特色。 第3 章:c 2 0 0 0 语言编译器总体设计。总结了编译器的一般模型,并选 择了其实现方案,据此对c 2 0 0 0 编译器的实现进行了总体设计,包括关 键数据结构设计和模块划分。 第4 章:各模块设计与实现。这是本论文的重点章节。介绍了c 2 0 0 0 编 译器各模块的具体设计、实现。 第5 章:错误处理。总结了c 2 0 0 0 编译器对c 2 0 0 0 程序中错误的处理方 法。 第6 章:c 2 0 0 0 程序i d e 的设计及特点。介绍了c 2 0 0 0 i d e 的功能及其 设计实现的方法,其中重点讨论了调试功能的实现。 第7 章:总结与展望。总结了本论文完成工作的优点以及可改进之处。 并展望了可进行的一些后续研究。 西北工业大学硕士学位论文 第1 章绪论 1 f i 主要术语定义 下面,将文中要用到的主要术语,定义在表1 1 中。 术语定义 普通变量在全局或函数的函数体中声明的非数组变量。 数组变量在全局或函数的函数体中声明的数组变量。 非数组形参函数原型中声明的非数组的形式参数。 数组形参函数原型中声明的数组形式参数。 分量界限与数组某一维对应的分量的个数。 对于函数。指为该函数的某次调用在数据区中分配的块空间的首地址相 绝对地址对于数据区首地址的偏移。对于变量,则指其在数据区中占用的空间的 首地址相对于数据区首地址的偏移。 只有局部变量和函数的非数组形参具有,全局变量和函数没有。指其在 相对地址 数据区中占用的空间的首地址相对于其所在的函数的当前调用在数据区 中分配的块空间的首地址的偏移。 p 指令p 机器的机器指令。 p 代码由p 指令组成的序列。 c 2 0 0 0 虚拟机用来对c 2 0 0 0 语言的中间代码进行解释执行的虚拟机。 表1 1 论文主要术语 9 西北工业大学硕士学位论文 第2 章c 2 0 0 0 语言设计 第2 章c 2 0 0 0 语言设计 考虑到组态用户都是工程师,而c 语言的规则大多数工程师都熟悉,因此 为了使用户能够较快地学会用组态语言编程,我们将c 2 0 0 0 组态语言设计成c 风格,许多语法成分都与c 语言的一样或者类似。在标准c 的基础上作适当简 化,去掉一些对组态软件来说不是十分必要的、比较难使用的语法成分,比如: 指针、结构等;并添加一些对y s s 系统来说特有的语法成分,如:对设备变量、 界面变量的访问,以及y s s 系统特有的一些系统函数等。这样,一方面,使我 们的组态语言更加适合于工业控制组态软件;另一方面,也使我们的组态语言易 学、易用,组态用户不用考虑那些在c 语言编程中比较复杂的问题( 如内存的 申请和释放,这留给c 2 0 0 0 虚拟机处理了) ,而可以专注于具体系统的特点,进 行监控逻辑的设计和组态。 以下是c 2 0 0 0 语言简介。 2 1 0 2 0 0 0 语言程序的结构 个用c 2 0 0 0 语言所编写的程序由外部变量声明和函数定义的序列组成( 程 序开头还可以加上关键字u s e _ t r a c e ) ,其中必须有且只能有一个m a i n ( ) 函数定义。 2 2 c 2 0 0 0 语言中的标识符 c 2 0 0 0 语言支持的标识符除了英文标识符外,还支持带中文字符的标识符 用于表示y s s 系统特有的量,如设备变量、界面变量等。 2 3 0 2 0 0 0 语言中的数据类型 c 2 0 0 0 语言支持强类型,提供十种数据类型:整型、无符号整型、长整型、 无符号长整型、浮点型、双精度型、字符型、无符号字符型、字符串型、布尔型。 其中字符串型s t r i n g 支持了变长数据类型。 o 西北工业大学硕士学位论文 第2 章c 2 0 0 0 语言设计 2 4c 2 0 0 0 语言中的变量 c 2 0 0 0 语言的变量分为程序变量和y s s 系统特有变量:前者如:一般程序 变量、数组变量等。后者如设备变量、界面变量等。它们均支持上述十种类型。 2 5 c 2 0 0 0 语言中的表达式 c 2 0 0 0 语言支持以下表达式: 算术运算表达式,它们由加、减、乘、除、取余、自加、自减等运算组成; 赋值运算表达式,它们由简单赋值、加法赋值、减法赋值、乘法赋值、除法 赋值、取余赋值、左移赋值、右移赋值、按位与赋值、按位异或赋值、按位 或赋值等运算组成; 逻辑运算表达式,它们由与、或、非等运算组成: 位运算表达式,它们由按位与、按位或、按位非、按位异或、左移、右移等 运算组成: 关系运算表达式,它们由小于、大于、小于或等于、大于或等于、等于、不 等于等运算组成: 条件表达式; 逗号表达式。 其中,算术运算表达式中还支持字符串型的加法。 2 6 c 2 0 0 0 语言中的语句 c 2 0 0 0 语言支持的语句有: 变量声明语句、空语句、表达式语句、函数调用: 流程控制语句: 顺序语句:语句序列,复合语句 分支语句:i fe l s e 语句、s w i t c h 语句 循环语句:w h i l e 语句、f o r 语句 跳转语句:b r e a k 语句、c o n t i n u e 语句、r e t u r n 语句 亘! ! 三些查兰堡主兰垡丝苎羔竺! l 丝塑生堕重堡生 2 7c 2 0 0 0 语言中的函数 c 2 0 0 0 语言支持用户定义函数,函数参数允许为数组,即支持传地址的变 参传递方式。 函数定义中的数组参数允许为多维,与c 语言不同的是:各维的大小都不 必指定,由函数调用时根据具体实参数组决定。因此以下函数定义在c 语言中 是不合法的,而在c 2 0 0 0 语言中是合法的: i n tf u n e ( i n ta 口口【 ) ) c 2 0 0 0 语言还提供组态系统中特有的系统函数,主要有以下几类: 条件取值函数 对话框函数 时间函数 数学函数 与y s s 系统进行信息交互的函数 值转换索引表检索函数 有关字符串操作的函数 有关数据类型间转换的函数 有关字节操作的函数 有关文件操作的函数 有关设备或设备变量的函数 有关故障录波数据的函数 在这些系统函数中,还支持参数个数不定、参数类型不定以及变参等功能。 另外还提供调试函数: v o i d t r a c e ( s t r i n gf o r m a t ,t y p ee x p r ) ; c 2 0 0 0 程序员利用该函数将类型为t y p e 的表达式e x p r 的计算结果,以f o r m a t 参数所指定的格式输出到c 2 0 0 0 编译器提供的全局输出界面上,供用户察看。 c 2 0 0 0 程序员可以根据需要,利用该函数观察c 2 0 0 0 程序的一次执行过程 中,各变量、表达式的值的变化序列( 只要在适当位置插入t r a c e o i 函数调用即可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养护安全培训做法与意义课件
- 商铺门面租赁合同解除协议书9篇
- 到山下去看树课件
- 化工企业机电安全培训课件
- 初级起重工安全知识培训课件
- 兴县安全生产专题培训班课件
- 国产无人机营销方案(3篇)
- 媒体营销项目营销方案(3篇)
- 2024-2025学年江苏省苏州市重点校九年级上学期数学期中试卷【附答案】
- 内蒙古银质针课件
- 《工程勘察设计收费标准》(2002年修订本)
- 医疗机构中药制剂临床前药效学与安全性研究技术指南
- 拆除工程施工安全培训
- 质量源于设计课件
- 2023年快递员职业技能理论考试题库(600题)
- 郭天祥51单片机教程
- GB 31644-2018食品安全国家标准复合调味料
- 第三单元名著导读《朝花夕拾之二十四孝图》-部编版语文七年级上册
- 最新人教版四年级英语上册课件(完美版)Review of Unit 5
- 掌骨骨折查房课件
- 大学食堂装饰装修方案
评论
0/150
提交评论