一种面向领域语言的模块系统
A Module System for Domain-Specific Languages
摘要:
领域特定语言(DSL)通常用于简化困难或专业的编程任务。它们以语言构造的形式公开有用的抽象和设计模式,提供静态语义来急切地检测这些构造的误用,并提供动态语义来完全定义语言构造如何交互。然而,实现和组合DSL是一项重要的任务,并且缺乏工具和技术。我们解决这个问题,提出了一个完整的模块系统在LP的DSL建设,重用和组合。LP对于DSL设计已经很有用了,因为它支持使用语言设计者熟悉的符号的可执行语言规范。我们扩展LP的模块系统是简单的(有几个概念),简洁(关键DSL规范的情况下),和组合(在语言,编译器和程序的水平)。这些设计选择反映了我们将LP用于工业DSL设计。我们的模块系统已经在FORMULA语言中实现,并用于通过DSL构建关键的Windows 8设备驱动程序。虽然我们提出我们的模块系统,因为它实际上出现在我们的FORMULA语言,我们的重点是适应其他LP语言的概念。
英文摘要:
Domain-specific languages (DSLs) are routinely created to simplify difficult or specialized programming tasks. They expose useful abstractions and design patterns in the form of language constructs, provide static semantics to eagerly detect misuse of these constructs, and dynamic semantics to completely define how language constructs interact. However, implementing and composing DSLs is a non-trivial task, and there is a lack of tools and techniques. We address this problem by presenting a complete module system over LP for DSL construction, reuse, and composition. LP is already useful for DSL design, because it supports executable language specifications using notations familiar to language designers. We extend LP with a module system that is simple (with a few concepts), succinct (for key DSL specification scenarios), and composable (on the level of languages, compilers, and programs). These design choices reflect our use of LP for industrial DSL design. Our module system has been implemented in the FORMULA language, and was used to build key Windows 8 device drivers via DSLs. Though we present our module system as it actually appears in our FORMULA language, our emphasis is on concepts adaptable to other LP languages.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。