理论计算机科学电子笔记141(2005)137-142www.elsevier.com/locate/entcsCOCOVILA -Pavel Grigorenko、Ando Saabas和EnnTyugu塔林理工大学控制论研究所Akadeemia tee2112618塔林爱沙尼亚摘要本文提出了一种面向可视化语言的编译器-编译器。它被设计为一个框架,用于构建可视化编程环境,将模式转换为文本表示以及表示模式深层含义的程序。深层语义通过将属性文法应用于模式语言来实现;属性依赖作为Java类的方法来与文本语言的编译器-编译器不同,框架的很大一部分需要支持可视化语言的交互式使用关键词:编译器-编译器,扩充属性文法,视觉语言。1视觉语言的浅层语义和深层语义我们的想法是为可视化语言开发一个编译器-编译器,类似于编程语言的编译器编译器,用作快速开发特定领域可视化语言的工具。为了能够描述所考虑的语言的语法和语义,我们将语言的类别限制为具有良好定义的抽象语法的模式语言。在语义方面,我们能够精确地指定产生模式的文本表示而不丢失模式中包含的基本信息此外,我们给出了一个一般的方法来实现1电子邮件:{pavelg,Ando,tyugu}@ cs.ioc.ee1571-0661 © 2005 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2005.05.009138P. Grigorenko等人理论计算机科学电子笔记141(2005)137Fig. 1.可视化编程模式的深层语义,即从模式生成可执行代码,本质上使用属性语法到模式语言的扩展自动生成视觉环境的尝试已经在早期进行,一个很好的代表是[1]。我们的框架从早期的不同之处在于它的能力,翻译一个视觉句子的原则上成为一个任意的代码使用语义程序运行的属性依赖关系的实现。图1描述了我们开发可视化语言并将其用于编程的方法。编译器-编译器COCOVILA支持语言设计者定义可视化语言,包括图形对象的指定、语言的语法和语义,并为用户提供可视化编程环境,该环境是根据可视化语言定义自动生成的。当一个方案是由用户组成的,以下步骤-解析,规划和代码生成-是完全自动的。然后,编译的程序为方案中指定的问题提供解决方案,并且它提供的结果可以反馈到方案中,从而提供交互特性。在某些方面,COCOVILA类似于MetaEdit[2]或AToM3 [3]等元建模工具。然而,我们对模式语义的处理是相当不同的。与后者不同的是,我们使用的是一种动态评估的语法图的基础计划的属性的P. Grigorenko等人理论计算机科学电子笔记141(2005)1371392类编辑器图二.“类编辑器”窗口从用户的角度来看,COCOVILA由两个组件组成:类编辑器和方案编辑器。可视化语言开发人员的工具是类编辑器,它支持语言设计人员定义类的视觉方面,以及它们的一些逻辑和交互方面。可视化类的功能属性由带注释的Java类实现。类编辑器用于将域概念映射到所述的可视类在图1中其主窗口如图2所示。用于定义端口属性和开发类的对象窗口的弹出窗口也在那里可见。 视觉语言开发的结果存储在方案编辑器可使用的包。在方案编辑器中使用可视化语言的用户界面是根据类编辑器中给出的语言定义自动生成的3方案编辑器Scheme Editor是语言用户的工具。它的目的是开发计划和编译(合成)计划根据特定领域的指定语义的程序。方案编辑器是用Java Swing库实现的。它提供了一个可视化编程的接口,使人们能够从类的形状组成一个方案。为特定的视觉语言生成的环境允许用户通过语言特定的菜单和图形绘制,编辑和编译视觉句子(方案)。图3显示了当一个包140P. Grigorenko等人理论计算机科学电子笔记141(2005)137图三.方案编辑器用于计算齿轮箱的载荷和运动学。齿轮通过上下排列相互连接;线连接其他物体(电机和监控设备)。 方案顶部的工具栏一个弹出窗口用于实例化对象属性,另一个弹出窗口用于操作方案-删除和排列对象等。方案编辑器是完全语法指导的,在编辑过程中强制方案的正确性:绘制语法不正确的图是不可能的。在方案编辑器中处理大型方案的方法是在构建方案时使用层次组合。scheme的任何部分都可以封装为单独的类,因此大型scheme可以由scheme的层次结构组成,其中每个scheme对象都可以包含子scheme。这意味着可以在几个不同的抽象级别中查看方案,以便封装和操作与特定问题相关的方案部分4编译器方案的深层语义已经在我们的框架中实现,在Java平台上,这样一种方式,一个合成的程序成为一个新的Java类中对象属性之间的函数依赖关系P. Grigorenko等人理论计算机科学电子笔记141(2005)137141一个模式的方法或者是表示对象的类的方法,或者是方程。方程和方法作为函数依赖项的使用在添加到每个类的文本规范中指定,这些类可以表示方案中的对象。实现的一个要点是,方案的对象的属性不是对象的类的组件。它们成为合成类的组件,并作为参数传递给方法。属性评估所需的程序综合逻辑在文献[4]中已经得到了充分的解释5演示包在这个框架中开发了几个软件包:一个用于计算齿轮箱中的载荷和运动学的软件包(如图3所示),一个用于分析逻辑方案的软件包,一个用于设计机械驱动器的软件包等。此外,在框架中还实现了几个UML建模工具,例如类图、用例图和状态图工具。实验表明,在该框架下,可视化语言的快速原型化是非常有效的。例如,类图编辑器的功能方面(生成Java类文件模板)的实现不到100行Java代码,图形和交互方面(这也是语言定义的一部分)的指定可以在类编辑器中直观地完成(图2)。原型实现与逻辑电路和机械驱动器分析的演示包以及UML建模包一起可从http://www.cs.ioc.ee/cocovila/访问。确认这项工作得到了爱沙尼亚科学基金会第5400号赠款的支持。Ando Saabas和Pavel Grigorenko参加2005年ETAPS会议得到了欧盟eVikings II项目(IST-2001-37592)的支助引用[1] G. Costagliola,A. De Lucia,S.奥雷菲斯湾托尔托拉可视化编程环境的自动生成。IEEEComputer,28(3):56-66,1995.[2] J-P Tolvanen,M.罗西Metaedit+:定义和使用特定领域的建模语言和代码生成器。In:OOPSLA 2003 demonstration,2003.[3] de Lara和H.万格鲁威通过元建模和图形转换定义视觉符号及其操作。Journal of VisualLanguages and Computing,15(3)- 4):309-330,2004.142P. Grigorenko等人理论计算机科学电子笔记141(2005)137[4] M. Matskin和E.秋古程序的结构综合策略及其扩展。计算机与信息学,20:1-25,2001年。