理论计算机科学电子笔记110(2004)177-180www.elsevier.com/locate/entcs行动环境- 工具演示-马克·范登·布兰德软件工程系,CWIKruislaan 413,NL-1098 SJAmsterdam,荷兰和Instituut voor Informatica en Electrotechniek,Hogeschool vanAmsterdamWeesperzijde 190,NL-1097 DZ Amsterdam,荷兰约根·艾弗森,Peter D. 苔藓计算机科学系1地址:Aarhus,Aabogade 34,DK-8200 Aarhus N,Denmark介绍在编写编程语言的语义描述时,非常希望重用以前语言描述中的构造描述。由于所使用的形式主义在[3]中,Doh和Mosses提出了组织语言描述,使得每个构造都在单独的模块中描述,这促进了重用。他们使用Action Semantics [5]和ASF+SDF [4]作为描述语言,但经验表明,这种表示法过于繁琐,因此我们开发了ASDF语言,该语言专为编写单一语言结构的动作语义描述(ASD)而设计在这里,我们将演示一个支持ASDF模块的环境。1计算机科学基础研究(www.brics.dk),由丹麦国家研究基金会资助。1571-0661 © 2004 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2004.06.002178海里van den Brand等理论计算机科学电子笔记110(2004)177ASDF使用ASF+SDF编写ASD是乏味的,因为必须显式导入明显需要的模块并编写许多超级复杂的关键字。此外,描述中逻辑上属于一起的一些部分没有被分组在一起。新的形式主义ASDF解决了这些问题。一个ASDF模块由一个名称、可能是其他模块的一些显式导入和一系列部分组成。通常,一个模块有三个部分:定义语言结构的抽象语法的部分,定义用于语义功能的辅助符号的部分,以及定义将语言结构映射到动作的语义功能的部分。图1显示了ASDF模块的两个示例。环境Action Environment有一个GUI(见图1),其重点是向用户提供开放ASDF模块的概览。这是通过可视化导入图和在可折叠的树结构中列出分层模块名称来完成的使用Emacs和允许结构编辑的扩展来处理模块文本。当模块文本包含排序符号时,声明该排序的唯一模块被导入,允许大多数导入保持隐式,参见。Fig.1. 由模块导入的模块的传递闭包定义了语言的抽象语法,并且可以在模块上解析该语言的术语。此外,从抽象语法到动作的映射,由语义函数定义,可以执行,使得环境成为语言到动作的编译器。一个完整的ASDF描述一个完整的编程语言涉及许多小模块,演示将显示用户可以找到和使用感兴趣的模块。执行动作环境建立在ASF+SDF Meta- Environment之上[2]。由于ASF+SDF元环境的可配置性和分层架构,这是可能的;我们只需在其上添加ASDF层并重新配置环境的菜单。ASDF层由用于解析ASDF模块、从ASDF模块生成ASF+SDF模块以及从ASDF模块检索模块名称等信息的组件组成图2显示了环境的体系结构是如何划分成层的。不同层和层中组件之间的所有通信都由ToolBus [1]处理。文本编辑结构编辑器GUI可解析SDF发电机操作ASF ASF解释器编译器解析器Term商店按钮解释器关系SDF计算器可解析ASF+SDFASFhowever,外部工具ASDF转ASF+SDFASDFASFSDF内核Meta-环境ASDF解析器ASDF支持M. van den Brand等 /理论计算机科学电子笔记110(2004)177-180179Fig. 1. 行动环境图二.动作环境语言的具体语法及其到抽象语法的映射直接定义为ASF+SDF。我们计划在Action Environment中实现对ASF+SDF和ASDF模块同时工作的支持,以便支持完整的语言描述。今后工作该工具已被用于支持标准ML描述的开发我们的下一个目标是使用Action Environment作为编译器生成器的前端。行动环境支持的定义180米van den Brand等理论计算机科学电子笔记110(2004)177语言的抽象语法以及从抽象语法到动作的映射,所以我们需要连接一个动作到目标语言的编译器。一个现有的动作类型检查器目前正在与动作环境集成。引用[1] J. A. Bergstra和P.克林特离散时间工具总线-一种Sci. Comput. Programming,31(2-3):205 -229,1998.[2] M. G. J. van den Brand,P. Moreau,and J. J. Vinju.免费的术语重写引擎环境!2003年RTA,LNCS第2706卷,第424-435页。Springer,2003年。[3] K.- G. Doh和P.D. 苔藓通过组合动作语义模块来组合编程语言Sci. Comput. Programming,47(1):3 -3 6 , 20 0 3 .[4] J. Heering,P. R. H. Hendriks,P. Klint,and J. Rekers. SDF:语法定义形式主义:参考手册。SIGPLAN Notices,24(11):43[5] P. D.苔藓动作语义学剑桥理论计算机科学丛书26.剑桥大学出版社,1992年。