欢迎来到天天文库
浏览记录
ID:57747146
大小:235.43 KB
页数:5页
时间:2020-03-27
《语言解释器的面向对象构造模式.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第23卷计算机应用VOl.232003年12月COmputerApplicatiOnsDec.,2003文章编号1001-9081200312Z-0254-04语言解释器的面向对象构造模式高勇9吴健(西北工业大学计算机科学与工程系9陕西西安710072)摘要!把编译器的实现分为若干相对独立的阶段已成软件模式的经典示例9但各阶段缺少具体的设计模式9需要进一步丰富O文中借鉴JVM和.NETCLR的原理9利用面向对象方法给出了一个工业监控组态语言C2000的解释器的设计9并以此为基础探讨了语言解释器的设计
2、模式9同时说明了面向对象构造模式在虚拟机解决方案中的可行性和优势O关键词!编译器S虚拟机S语言解释器S设计模式中图分类号!TP391.2文献标识码!A原理1解释执行InterpretatiOn首先对中间代码进行载1编译器的一般架构入每次只执行一条指令然后执行与该指令相关的机器码编译器的设计最典型的特点是其相对独立的构造阶段如此不断循环直到停机早期的JVM采用的就是这种方式1本文中的C2000语言也采用的这种实现方式2即符号表是整个编译阶段的交互中心但是随着软件体系结构的发展和程序设计语言对可靠性有效
3、性可用性以及可移植时编译JustintimeJIT对于要执行的中间代码首先编译性的要求现代编译器的体系结构通常划分为前端和后端为本地的目标代码JIT只在应用程序第一次执行时把编译前端包括词法分析程序语法分析程序语义分析程序后端的机器码存于内存中下次执行时重新编译从而减省调用的是代码生成器中间代码或者是中间表示作为其间的交互时间和存储空间同时JIT不再是一次执行一条指令因此媒介这种体系框图如图1所示可以进行代码优化当前JVM和.NETCLR的设计体系采用的就是这种思想3解释执行与JIT结合通过运行信息
4、寻找应用程序的关键部分80的代码执行时间往往花在20的代码上通过动态编译把这些关键代码内置同时在程序的两次执行期间不保存编译结果而保证可移植性当前的2JVM正朝着这种虚拟机技术方向发展3C2000的构造模式在一个电力监控组态与运行系统的设计开发过程中为图1基于中间代码技术的编译架构使用户能充分描述需要的监控功能比如对现场设备的遥控这样的架构具备有a良好的可移植性可以通过方便的遥调对自动控制电器联锁的设置等我们设计了一个组态改变后端模块来实现在不同目标环境中的执行b良好的可语言C2000考虑到C语言的
5、普及采用了标准C的语法子扩展性可以通过方便的改变前端模块来支持不同文法的源集去掉了应用领域需求所不必要的语法成分例如指针添语言这种架构也顺应了面向对象设计中的开闭原则当加了一些满足监控的特有的语法成分例如对设备变量的访前常见的中间代码技术包括三元式四元式DAG字节码问一些特定的系统函数等等从而体现组态语言C2000的6等字节码bytecOde使用基于栈的计算模型具有特有语用C2000编译器运用的是基于中间代码的虚拟机原MSIL简单易读的特点每个指令的长度都是一个字节例如理借鉴JVM和.NETCLR的
6、设计理念采用面向对象的软JVM5采用的是字节码组态语言C2000采用的也是这种中件开发技术间代码形式MSILMicrOsOftIntermediateLanguage是一种不依赖于CPU的机器语言IL的级别要比大多数CPU的机器语言高IL支持对象类型并具可以创建初始化对象调用对象虚拟方法直接操作数组元素支持错误处理和异常指令62虚拟机原理针对这种基于中间码的编译体系思想对于虚拟机有以下常见的设计图2C2000总体设计模式收稿日期!2003-03-13"修订日期!2003-06-09作者简介!高勇19
7、78-男硕士主要研究方向软件工程面向对象吴健1961-男教授博士主要研究方向嵌入式系统形式化语言编译技术软件工程.12月高勇等!语言解释器的面向对象构造模式2553.1C2000总体架构后一遍扫描描采用先根遍历的方式递归调用各节点的由于C2000作为组态语言的语用功能9在整个组态软件中相GenCOde函数产生字节码0其中通过CC2000_VM的接口当于一个部件9因此C2000是内嵌型的一个解释引擎9因此AddCOde函数添加字节码到C2000虚拟机的字节码缓冲区对于全局而言用到单例SingletOn
8、4和简单工厂Simple中0在C2000中虚拟机是通过解释器的工作原理来进行执factOry的设计模式9整个C2000以一个类CC2000的成员函数GetInstance作为唯一的全局访问点0同时类CC2000提供函数Create创建词法语法分析总控程序CC2000_SYNSEM9符号表常量表总控程序CC2000_TAB9虚拟机总控程序CC2000_VM的建立0其UML静态关系如图2所示03.2C2000前端模式从前一节知道CC2000_SYNSEM为词法语法
此文档下载收益归作者所有