论文部分内容阅读
监控组态软件在工业控制中应用越来越广泛,对用户编程接口的支持显得日益重要。目前,这一领域的技术还不很成熟,一般组态软件只提供脚本语言,并直接对源程序解释执行,在执行效率、稳定性和可靠性等方面存在问题,需要解决。 论文对组态软件中的用户编程接口进行了研究,在充分考虑了监控组态软件的行业应用特点的基础上,设计了一种组态语言——C2000语言,对其编译器及开发环境的实现方案进行了详细论述;并对语言设计、语法分析、语义分析,以及中间代码生成和用来对中间代码解释执行的虚拟机等进行了深入的讨论,详细论述了各语法成分的实现,总结了对源程序中错误处理的方法。论文在最后还对语言开发环境的调试功能进行了分析,并给出了其实现方案。 在对语言编译器即语言实现方面的研究中,论文总结了编译器的一般模型,并针对其前端和后端分别选择了合适的实现方案:前端没有采用语法制导的语义分析,而是通过对源程序等价表述的引入将语法分析和语义分析安排到不同阶段进行;后端选择了用虚拟机对中间代码解释执行的实现方案。在具体实现过程中,充分利用了面向对象技术与编译技术相结合的思想。 在信息表管理方面,没有采用多级的表组织方式,而采用了线性的表组织方式,简单高效地实现了对作用域多层嵌套的支持;在表的查找算法的实现中,通过辅助表的引入,解决了符号表和常量表的顺序填写法与Hash算法中表项记录的Hash函数定位法之间的矛盾这一难点。 在虚拟机实现方面,将所有P-指令封装为类来实现;并用虚拟机维护由代码区、数据区、函数调用栈、操作数栈和指令计数器等共同构成的运行时环境,控制程序的执行,有利于实现调试功能。 在语法分析、语义分析及中间代码生成方面,先经过语法分析建立抽象语法树,然后对抽象语法树进行三次遍历完成语义分析并生成中间代码。通过对C2000语言各语法成分类及其类层次的设计,简化了整个实现过程,并通过引入辅助链表,解决了语法分析中空间管理的问题。 实际应用表明,C2000编译器能够生成结构紧凑的中间代码,其虚拟机对中间代码解释执行时,效率高,运行稳定、可靠、安全,解决了一般组态软件中在对用户编程接口支持方面的问题,很好地满足了监控组态软件的需求。