没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记224(2009)3-14www.elsevier.com/locate/entcsAnimalScript-一个Eclipse插件GuidoRüoßling1达姆施塔特工业大学德国达姆施塔特彼得·施罗德2达姆施塔特工业大学德国达姆施塔特摘要算法动画语言A numberS脚本虽然具有高度的表达性和通用性,但在没有编辑器支持的情况下不容易编辑。我们已经开发了一个Eclipse插件,用于编辑numberS脚本,其中包括文本编辑器,大纲和代码辅助。我们希望这个插件将使编辑过程更容易和更快。本文介绍了两个技术方面的发展和由此产生的插件。保留字:AnimalScript,Animal,Eclipse,插件,动画1介绍NEXTURE[5]是一个多功能的系统,用于创建,修改和呈现算法动画和可视化(AV内容)。据我们所知,它是唯一一个允许用户使用以下所有方法创建AV内容的• 在一个新手友好的图形用户界面中直观地使用拖放[8],• 文本地 使用高度表达性的ANUMS脚本语言[7,9],• 采用新的基于Java的生成API,• 使用一组外部应用程序为树[10]以及图形和图形算法[3,11]生成特定于上下文的动画,1电子邮件:roessling@acm.org2电子邮件:sevenclev@gmx.net1571-0661/© 2008 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2008.12.0444G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)3--• 以及使用内置生成器框架[6]的当前200多个动画生成器中的一个。请注意,生成器的数量并不一定表示所涵盖的算法数量,而是表示给定算法的不同除了第一种之外,所有的生成方法都直接或间接地基于使用ASCII脚本,它正在从内置的ASCII符号中接管AV内容的首选表示的角色。 这种发展的原因是人类可读的ANUMERS脚本符号,它可以从程序中生成和手动编辑的容易性,以及语言的表达能力。自2008年以来,ANUMBERS还包括一个基于BNF的ANUMBERS脚本符号定义的集成显示,以及(自2006年以来)一个小型文本编辑器,用于直接输入或修改ANUMBERS脚本输入并可视化结果。一个脚本文件每行包含一个命令,例如定义一个新的图形对象或转换一些对象。 动画按步骤组织,每个步骤可以包含一个或多个命令。如果在一个步骤中使用了多个命令,则该步骤用大括号括起来。请参阅[9,7]了解更多关于A numberS脚本的信息。许多其他已建立的AV系统也涵盖了一代上面列出的方法例如,JAWAA2 [1]和GAIGS和JSamba [12]由JHAVE′[4]使用的可视化引擎也使用脚本语言。 JAWAA2在其当前版本中还提供了一个可视化编辑器。 JHAVE'o提供了一组类似于在ANNIX的生成器框架中使用的方法的常量生成器,并且可以在Web上运行。然而,它们专注于指定算法参数,因此不允许定义颜色等视觉属性。虽然可以很容易地使用一个NUMERIC的内置编辑器或任何任意的文本编辑器来编辑NUMERIC的脚本内部编辑器仅提供基本的编辑功能;剪切、复制和粘贴功能仅通过使用底层操作系统支持来支持。编辑器不提供搜索功能、行号显示、已识别的语法或语义错误指示或语法突出显示。因此,编辑一个较长的A numberS脚本文件是很尴尬的,如果系统在“第117行”中指出解析问题,就会变得令人沮丧。 尽管(通常)有关于错误性质的精确信息, 缺少行号、搜索或我们认为他不满意的状态需要解决。从本质上讲,我们看到了三种不同的方法来提供更好的用户支持:改进内置编辑器,使其在舒适度上与用户首选的文本编辑器相当 仅仅投入大量的人力物力似乎没有什么用处。改进内置编辑器,使其与给定用户首选的文本编辑器相当,但仍然不同。这同样适用于创建新的自定义编辑器。因此,我们选择为至少G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)35一个常用的文本编辑器。我们现在必须决定使用哪种文本编辑器ANOUNCEMENT和ANOUNCEMENTSCRIPT的主要目标受众是计算机科学的学生和教师。 我们决定使用Eclipse IDE,因为这个IDE在许多计算机科学课程中使用。因此,我们的目标用户可能已经熟悉文本编辑器的基本功能本文其余部分的结构如下。在第2节中,我们将简要总结Eclipse IDE提供的功能,重点是插件和文本编辑器。第3节概述了使用EclipseIDE特性编辑JavaScript脚本第4节展示了使用示例,以说明ANIMMENSE插件提供的对A NIMMENSE 最后,第5节评估了插件,并提出了进一步研究的领域2Eclipse IDEEclipse [2]由IBM于2001年提出,并于2004年成为开源软件。由于有大量的开发人员,该平台提供了大量的插件和扩展来满足不同的需求,包括大量支持的编程语言,CVS和Subversion的版本控制系统前端,工作流程和设计组件。也许最著名的插件是Java开发工具,被世界各地的许多学生、研究人员、开发人员和教师用来编写基于Java的程序。Eclipse平台的主要组件是负责图形用户界面(包括Eclipse窗口的维护)的工作台和工作区。工作空间是一个独立的文件系统,处理文件(包括文件、目录和项目)的创建、存储和编辑Eclipse的图形化前端包含常用的菜单和对话框以及编辑器和视图。编辑器用于修改资源-最著名的是用于编辑Java类源的Java编辑器。视图负责呈现内容。 Eclipse已经提供了许多不同的视图,如Problems、Progress或Console视图。 图1显示了Eclipse主要组件的带注释的屏幕截图,下面的段落将对此进行描述Outline视图提供编辑器内容的类似于目录的视图。 对于Java类,这个视图列出了所有的方法和导入语句;单击一行直接将文本编辑器定位到相关的内容行。文本编辑器中较长的组件也可以折叠,以减少视觉混乱,并使其更容易专注于当前工作区域Eclipse插件是由Eclipse运行时环境加载并添加到平台的Java程序。它们使用Eclipse提供的“扩展点”连接到Eclipse所使用的扩展点的定义在基于XML的“插件清单”中声明,必须一起提供 每个pluginEclipse编辑器的优势之一是集成了有用的特性。这包括语法突出显示(使用颜色或字体更改,或者使用6G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)3Fig. 1. Eclipse主要组件的带注释的屏幕截图bination),直接跳转到编辑器中给定行的能力,以及标记(已识别)问题。Eclipse中称为“annotations”的标记工具可以包括在文本编辑器的左边距或右边距中靠近被删除行的标记。左边的红色圆圈标记中的X形十字用于指示语法(或其他)错误,以及右侧滚动条中的红色标记。此外,注释的文本通常由红色波浪线表示,并在Problems视图中放置适当的描述。最后,Eclipse编辑器还可以通过内容辅助(通常也称为代码辅助或代码完成)来支持用户。 此功能允许用户从弹出窗口中选择-在当前文本插入符号位置可能的结构或完成列表。 它可以用于插入单个关键字或完整的结构,例如 如果...其他.. 语句,以及选择要调用的给定方法,包括所需的调用参数。 这种支持只有在如果插件分别知道底层语言的语法或类及其方法的集合,内容辅助的这两个方面都非常有帮助,可以节省时间,特别是对于新的目标语言用户3AnimalScript的Eclipse插件预计ANIMALSE插件将提供以下功能:• 支持创建和编辑 一个作为Eclipse插件的nextOS脚本;• 允许使用Eclipse插件安装支持轻松安装• 提供剪切、复制和粘贴功能,以及撤消和重做;• 允许显示行号,动画步骤折叠(在同一动画步骤中,一组命令只显示一行),代码自动缩进G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)37行和语法突出显示;• 找出并标记文件中的错误;• 在EclipseOutline视图中显示有用的概述• 并最终为ANUMS脚本命令表示法提供内容辅助。在插件中编辑的A numberS脚本文件也应该可以直接从插件中运行,这样用户就不必从外部启动所需的ANUMBERS系统。ANIMARSE插件基于Eclipse文本编辑器,因此直接继承了一些请求的功能,例如对剪切,复制和粘贴的支持,以及Eclipse插件典型的简单安装图2显示了一个插件的屏幕截图,注释与图1相似。 插件的各个元素将在以下各小节。此外,子元素将在第4节的较大屏幕截图中显示。图二. 带注释的Eclipse插件概述3.1解析numberS脚本内容上面列出的一些功能,特别是标记错误,语法突出显示和内容辅助,需要编辑器由于编辑者也可能需要多次请求同一条信息,我们决定实现一个文档对象模型(DOM),一个仙女的手稿(AS-DOM),以允许更快、更有表现力地访问有关当前选定元素或当前编辑位置的信息。 文档脚本DOM的基本结构由根元素、一份手稿内容, 和一组 动画的步骤。的 步骤被放置在8G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)3|||升序排列,就像动画一样。 每个步骤可以包含一个或多个动画命令。创建一个ArnoldS脚本-DOM需要从文本编辑器中解析UTF-8编码的ARNOLDS脚本内容。 通过在Eclipse编辑器类提供的IDoclave中注册为观察者,解析器可以自动获得有关代码更改的通知,从而更新其DOM。但是,每次按键都会触发一个更新事件,这将迫使系统(再次)解析整个脚本。因此,我们决定在两次解析迭代之间强制执行至少2.5秒的等待间隔,以防止对编辑器内容进行不必要的连续解析。当然,该间隔可以由最终用户调整。NIMMENSE不直接使用抽象语法树来支持解析过程,而是在行基础上解析元素。这是有可能的,因为一个脚本要求每个命令只占用一行(如果忽略注释或用于指示步骤的花括号,则每个输入行只包含一个命令命令由一系列语言元素组成,这些元素之间由任意数量的空格分隔。例如,每个元素可以是数字、文字或关键字。解析后的元素的内部表示类似于抽象语法树,称为ASASTforAnumberSCRIPT(抽象语法树)。树的定义是在插件启动时通过解析一个类似BNF的定义文件创建的,这使得以后对ANUMS脚本语言的适应变得容易。清单1显示了用于定义多边形对象(尤其是正方形)的BNF类定义的摘录非终结符放置在<>中。非终结符后面的因此,非终结符可以被定义为正方形、矩形、三角形或多边形非终结符的实例。“ID”字段后面的$idDescr标记为下一小节中描述的内容辅助提供元信息。根据BNF,正方形的定义包括关键字square,后跟双引号中的正方形ID,节点定义和描述正方形左上角及其大小的自然数。其他元素放在括号中表示它们是可选的:正方形轮廓的颜色,它的深度,填充选项-是否填充正方形,如果是,用哪种颜色填充-以及显示选项-选项是隐藏还是延迟后才可见。请注意,每个可选元素都以空格开头,将其与前一个元素分隔开。此空间也用于内容辅助,如下一小节所述清单1:定义夜光藻的正方形和矩形的BNF1<产品类型>:2<正方形>矩形>三角形e><多边形n>3:4平方“ID”$ idDescr[colorcolor>]五、[深度][][<显示选项>]G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)39|6 :7<绝对矩形e><相对矩形>8<绝对矩形e>:9矩形ID $ id描述10日[颜色<颜色>] [深度][]11[<显示选项>]3.2内容辅助ANIMMENSE的内容辅助特性使用Eclipse编辑器提供的内容辅助组件。基于脚本的内部表示和当前位置,插件创建一个内容推荐列表,可用于完成当前选择。与许多其他语言(包括Java)相比,这个过程对于JAVASCRIPT内容来说是困难的:JAVASCRIPT使用的符号包含许多可选的关键字或元素,使得在任何给定点上可能完成的数量相对较高。 后列表被填充后,它将呈现给用户,然后提示用户选择其中一个元素。同样地, 在给定的一个仙女的手稿输入文件也由于可选元素的丰富性而变得困难。 在这种情况下,在解析过程中的(几乎)任何给定点都可能出现的分支的错误会导致许多 或者,换句话说,如果有一种在没有语法错误的情况下解析给定行的方法,该行在语法上是正确的,并且当尝试可选元素的不同组合时, 被忽视此外,解析器必须能够检测到中的几个节点一个仙女的手稿抽象语法树可以被注释包含上下文信息,如清单2所示。上下文定义提供了关于A numerS脚本抽象语法树中给定叶子的上下文的附加细节。第1行显示了上下文元素的唯一标识符(tupleOfTwoNaturalNumbers),用于定义绝对坐标。美元符号表示这是要定义的元素每个定义行以“at”字符@开头@info元素提供了描述元素的用户可读文本@display在编辑器中提供用户可读的终端输出例如,这对于指示空白的位置是必要的@cursorhint指定在将@display中显示的定义插入编辑器后,光标必须向左移动多少个字符。在本例中,选择元素将导致包含文本(X, Y),包括所有空间cursorhint的值7将光标放置在插入后其位置的左侧七个位置,因此将其放置在第一个坐标上10G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)3→→在括号里。清单2: 上下文定义示例1$tupleOfTwoNaturalNumbers2@info=两个自然数3@display=(X,Y)4 @cursorhint=7所呈现的特性的组合使得ANIMMENSE插件的解析和内容辅助组件的实现比 我们原本预期的。然而,我们设法克服了所有的障碍,现在有了一个完整的Eclipse插件。3.3集成到Eclipse在Eclipse中集成ANIMPLUSSE插件使用了五个不同的Eclipse扩展点,如表1所示。插件组件Eclipse扩展点一个numberS脚本编辑器org.eclipse.ui.editors错误标记org.eclipse.core.resources.markers启动动画org.eclipse.debug.ui.launchShortcuts新建动画创建向导org.eclipse.ui.newWizards插件首选项org.eclipse.ui.preferencesPage表1Eclipse扩展点用于ANIMPLUSSE插件ANSYS脚本编辑器基于org. eclipse.ui.IEditorPart接口并扩展了EclipseTextEditor类。它处理带有扩展名.asu的numberS脚本文件。每当用户打开或创建带有此扩展名的文件时,插件的其他组件,如代码折叠或概述的创建,类似地实现了提供的接口并扩展了现有的Eclipse类。3.4安装插件要安装插件,用户选择帮助软件更新查找和安 装 . 菜 单项 。 选 择 “newfeaturestoinstall”(要安装的新功能)后http://www.algoanim.info/Animal/download/,必须创建一个新的远程站点,地址为www.example.com Animalise/,并通过OK进行确认。完成设置后,应该会出现一个更新列表,其中包括ANIMMENSE。确认所有后续对话框后,插件将被安装,并可以在Eclipse重启后使用。G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)3114Animalise Eclipse插件通过使用内置的创建向导,可以在ANIMMENSE中生成新的A nimmense脚本文件。用户首先使用“文件”菜单、工具栏或菜单项创建一个新的ANUMERIC脚本类型的文件。在下面的对话框中,可以指定动画的标题、宽度和高度以及动画作者和标题。然后,此信息用于创建适当的A numberS脚本头,并在A numberS脚本编辑器中打开生成的文件。图三. 带有语法高亮显示的ANIMMENSE图3显示了一个ANIMAGRASSE文本编辑器的示例。用于定义图形对象的关键字以绿色突出显示,操作关键字以橙色显示。所有其他关键字都显示为紫色。文字值(如对象名称和字符串)以蓝色显示。颜色定义被放置在所选颜色的背景之前。 原文用补色着色是可读的。字体定义(不包括在示例中)以斜体显示。最后,注释(由散列标记#引入)以深绿色显示。所有的颜色设置都可以在ANIMALSE插件偏好设置中进行调整见图4。 通过ANIMALSE插件图4显示了一个带有语法错误的小代码片段的视图-清单1中提到的可选fillOptions中缺少关键字语法分析必须通过选择搜索错误手动触发. 编辑器上下文菜单中的条目。错误放置的关键字fillColor以红色波浪下划线显示。此外,左边距中的标记和滚动条中的行标记, 右边表示错误,而右上角填充的红色方块表示存在(至少)一个错误。此外,在EclipseProblems视图中还会出现一个简短的错误描述,但图412G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)3→→图3所示的相当简单的动画的轮廓如图3所示五、每一步都可以折叠或展开以显示更多细节。如果在同一动画步骤中发生多个操作,则它们将显示在单独的行上。 单击条目可将光标定位在文本编辑器中相应的行图五. 一个灵气的轮廓,显示动画只要用户通过同时按下CTRL键和空格键明确请求内容帮助,就会提供内容帮助。此外,如果输入空格字符,则显示内容辅助。为此,清单1所示的BNF中使用的空格字符非常重要,因为前导空格被认为是其中一个组件的可能开始。 弹出一个小窗口, 此时会显示合法完成的列表,允许用户选择一个或关闭窗口并手动继续。可以直接使用上下文菜单项Run Load inA NUMEROUS运行NUMEROUS脚本内容。这需要用户首先告诉插件在哪里可以通过进入Window Preferences找到Anumberjar文件。. ,选择插件从列表中,并进入或浏览的位置的一个numberjar。5总结和今后的工作在本文中,我们介绍了一个敏捷的Eclipse插件,用于创建,编辑和调试基于敏捷脚本的AV内容。该插件很容易集成到现有的Eclipse安装中,并且行为类似于其他已建立的插件,例如Eclipse的Java开发工具插件。用户应该在那里-fornd它很容易使用插件变得更加有利与A numberS脚本。G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)313抽象语法树模型被用于脚本语言,允许通过修改基于BNF的符号来扩展语言的定义,而不需要接触插件代码。但是,在编辑文件时必须采取一定的谨慎措施,以防止引入解析错误。同时,底层的符号可以通过另一种语言(如JAWAA2 [1])进行交换,方法是相应地编辑符号文件,或者导入不同的BNF文件,另一个选择的符号。底层抽象语法树的实现使用了一组对许多其他语言都有帮助的元素,例如对整数和自然数的支持,复合步骤,关键字,文字和标识符。如果用于这些元素的非终结符也用于另一种语言的BNF定义,那么插件应该可以直接支持其他语言。请注意,我们无法在第二作者可以花在他的学士论文的有限时间内测试这一本文中描述的其他特性,如语法突出显示、错误搜索和内容辅助,也应该是有用的。由于底层语言符号的原因,其中一些组件存在一些小问题。例如,如果用户在命令开始时请求帮助,则代码帮助的选择列表可能会变得很长。 这是由于大量的可选的关键字和组件在整个脚本中使用。虽然这使得在A numerS脚本中编程很方便(错误检测并不完全准确;发现的错误将导致ANOUNCLE中的解析错误,但插件并不能检测到ANOUNCLE中动画加载过程中的所有错误。例如,用户可以请求某个变换子类型,诸如在不支持的结构上移动节点4和5。 这个操作,例如一个正方形。 从语法上讲,这个命令是正确的,但是当尝试执行时,它会导致语义错误。因此,该插件无法检测到这种类型的错误,除非它与ANUMBERS可能的扩展包括突出显示当前所选标识符的使用,或将有关元素的上下文信息显示为工具提示。与Java编辑器所提供的功能类似,自动匹配脚本文件最后,将集群然而,这些方面需要另一个全日制学生在他们作为学士论文工作如果您有兴趣尝试一个NIMARSE,请按照第3.4节中描述的步骤。建设性的反馈是赞赏!我们也想与其他人谁希望实现Eclipse插件的“他们的”AV符号合作引用[1] Akingbade,A.,T. Finley,D. Jackson,P. Patel and S. H. Rodger,JAWAA:基于Web的简易动画从CS 0到高级CS课程,见:第34届ACM SIGCSE计算机科学教育技术(2003),162比166[2] Beck,K.和E.Gamma,原则、模式和插件”,14G. 罗斯林山口Schroeder/Electronic Notes in Theoretical Computer Science 224(2009)3朗文,2003年。[3] 纳普斯,T。L., J. Lucas和G. R?oßling,VisualGraph-AGraphClassDesignedforBothUndergraduate学生和教育工作者,在:第34届ACM SIGCSE计算机科学教育技术研讨会(SIGCSE 2003),里诺,内华达州(2003年),页。167-171。[4] 纳普斯,T。L. 和G. R?oßling,JH AVE?-moreeVisualizers(andVisualizations)N eed ed,in:G. Rüoßling,editor,Proceedings of the Fourth Program Visualization Workshop,Florence,Italy,2006,pp. 112比117[5] R?oßling,G.,“A number-F arm:An Extensible Frame Work for AlgorithmVisualization,”VDM V erlag Dr. Müller,2008.[6] R?oßling,G. 和T. A ckermann,一种用于基因工程中AV含量的方法,在:G. Rüoßling,editor,Proceedings of the Fourth Program Visualization Workshop,Florence,Italy,2006,pp. 106-111[7] R?oßling,G. 和B. Freisleben,AnumerSCRIPT:AnEextensibleScriptingLlanguageforAltain m动画,第32届计算机科学教育技术研讨会论文集(SIGCSE 2001),夏洛特,北卡罗来纳州(2001),页.70比74[8] R?oßling,G. 和B. Freisleben,ANIMAL:一个支持多角色租赁的系统动画,视觉语言和计算杂志13(2002),pp。341-354.[9] R ? oßling , G. , F.Gliesche , T.Jajeh 和 T.Widjaja , EnhancedExpresivenessinScriptingUsingAnumerSCRIPTV2 , in : ProceedingsoftheThirdProgramVisualization Workshop,University of Warwick,UK,2004,pp. 15比19[10] R?oßling,G. 和S. Schneider,AnIntegratedandG. R?oßling,编辑,《F?p?og ram可视化研讨会论文集》,Flo ren c e,意大利,2006年,pp. 23比28[11] R?oßling,G.,S. S. chneider和S. Kulessa,Easy,Fast,andFlexibleAltaxAnimationGene ratio n,in:Proceedings of the13thACM SIGCSE/SIGCUE International Conference on Innovation andTechnology in Computer Science Education(ITiCSE 2007),Dundee,Scotland(2007),p.357.[12] Stasko,J.,通过直接操作和演示构建软件可视化,在:J. Stasko,J. Domingue,M. H. Brown和B. A. Price,editors,Software Visualization,MITPress,1998 pp. 187-203.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功