Synthesizing DSLs for Few-Shot Learning
针对符号领域小样本学习的DSL合成问题,证明了基础语言语义可由树自动机评估、表达式大小对应解析树深度时该问题的可判定性,还证明了DSL仅需表达解和用宏语法定义的变体的可判定性。
2025-08-25 cs.FL cs.PL
Implementing Explicit and Finding Implicit Sharing in Embedded DSLs
别名或共享在许多领域都很突出,表示两个不同名称的对象实际上是相同的:一个对象(存储单元,电路端子,磁盘块)的变化会立即反映在另一个对象中。用于建模这些域的语言应该让程序员显式地定义对象或表达式之间的共享。DSL编译器可以找到其他相同的表达式并隐式地共享它们。这种公共子表达式的消除对于DSL的有效实现是至关重要的。共享在嵌入式DSL中是很棘手的,因为主机别名可能对应于底层对象的复制,而不是它们的共享。本教程总结了在汽车嵌入式系统和硬件描述语言的Haskell DSL中实现共享的讨论。该技术已被用于Haskell SAT求解器和DSL音乐合成。我们展示了一个简单的DSL的纯Haskell嵌入与显式共享的语言形式。DSL也有隐式共享,通过散列consing实现。显式共享大大加快了散列consing。散列consing看似命令式的本质隐藏在一个简单的组合子语言之下。整个实现仍然是纯功能的,易于推理。
2011-09-05 cs.DS cs.PL
From a Natural to a Formal Language with DSL Assistant
本研究针对领域特定语言(DSL)开发繁琐迭代的问题,设计了集成GPT-4o的DSL Assistant工具,支持多交互模式与自动纠错,实验证实其可辅助DSL开发,但生成质量受领域和交互模式影响。
2024-08-19 cs.PL cs.SE
Customizing Host IDE for Non-programming Users of Pure Embedded DSLs: A Case Study
纯嵌入作为领域特定语言(DSL)的一种实现策略,具有实现成本低的优点。另一方面,它引入了不希望的语法噪声,阻碍了非编程领域专家的参与。因此,纯嵌入式DSL通常不适用于非程序员,也不被非程序员使用。在这项工作中,我们试图挑战这种状态,通过试验廉价的定制主机IDE(集成开发环境),以减少句法噪音的负面影响。我们根据标准IDE功能(例如,文件模板、代码折叠等)其目的是减少语法噪声,并且总体上改善纯嵌入式DSL的用户体验。这些技术将使用NetBeans IDE案例研究进行介绍。所提出的技术的目标是改善纯嵌入式DSL的用户体验,重点是非编程领域专家(或一般非程序员)的参与。所提出的技术进行了评估,使用一个控制实验。实验比较了使用Ruby和未修改的RubyMine IDE的一组与使用Java和NetBeans IDE定制以使用所提出的技术的一组。实验结果表明,即使是廉价的主机IDE定制可以显着减轻语法噪音所造成的问题:Java的不灵活的语法比Ruby的简洁的语法表现更好。
2020-12-01 cs.PL cs.SE
A Module System for Domain-Specific Languages
领域特定语言(DSL)通常用于简化困难或专业的编程任务。它们以语言构造的形式公开有用的抽象和设计模式,提供静态语义来急切地检测这些构造的误用,并提供动态语义来完全定义语言构造如何交互。然而,实现和组合DSL是一项重要的任务,并且缺乏工具和技术。我们解决这个问题,提出了一个完整的模块系统在LP的DSL建设,重用和组合。LP对于DSL设计已经很有用了,因为它支持使用语言设计者熟悉的符号的可执行语言规范。我们扩展LP的模块系统是简单的(有几个概念),简洁(关键DSL规范的情况下),和组合(在语言,编译器和程序的水平)。这些设计选择反映了我们将LP用于工业DSL设计。我们的模块系统已经在FORMULA语言中实现,并用于通过DSL构建关键的Windows 8设备驱动程序。虽然我们提出我们的模块系统,因为它实际上出现在我们的FORMULA语言,我们的重点是适应其他LP语言的概念。
2014-05-16 cs.PL
Application Software, Domain-Specific Languages, and Language Design Assistants
虽然应用软件完成了真正的工作,但特定领域语言(DSL)是帮助有效地生成DSL的工具,而语言设计助理则是帮助快速生成DSL的元工具。DSL已经被广泛使用(用于网页的HTML,用于电子表格应用程序的Excel宏,用于硬件设计的VHDL等),但对于新的和现有的应用领域,将需要更多的技术。帮助开发它们的语言设计助手目前只存在于基本形式的语言开发系统中。在快速浏览了特定领域的语言,特别是它们与应用程序库的关系之后,我们调查了现有的语言开发系统,并概述了未来的语言设计助手。
2000-05-03 cs.PL
Everything old is new again: Quoted Domain Specific Languages
我们描述了一种新的方法,域特定语言(DSL),称为引用DSL(QDSL),复活了两个旧的想法:报价,从麦卡锡的Lisp的1960年,和子公式属性,从根森的自然演绎1935年。引用的术语允许DSL共享宿主语言的语法和类型系统。规范化引用项确保了子公式属性,这保证了可以在源中使用高阶类型,同时保证目标中的一阶类型,并允许使用类型来指导融合。我们通过将最初作为嵌入式DSL(EDSL)实现的Feldspar重新实现为QDSL来测试我们的想法;并且我们比较了QDSL和EDSL变体。
2015-08-04 cs.PL
A Comparative Case Study of Code Reuse With Language Oriented Programming
在软件设计中重用高级概念的能力和重用实现它们的代码的能力之间存在着差距。面向语言编程(LOP)是一种软件开发范式,旨在通过广泛使用领域特定语言(DSL)来缩小这一差距。使用LOP,高级可重用概念成为可重用DSL构造,并在DSL实现中完成它们到代码级概念的转换。特定的产品是使用DSL代码实现的,因此只重用高级概念。在本文中,我们提供了两种实现方法之间的比较:(a)使用外部DSL与投影语言工作台(MPS);和(b)使用内部DSL与LOP语言(Cedarian)。为了演示如何在每种方法中实现重用,我们提出了一个小的案例研究,LOP是用来建立一个软件产品线(SPL)的计算器软件。
2011-03-30 cs.PL cs.SE
Multiparty Session Typing, Embedded (Technical Report)
本文提出mpst.embedded库,利用Scala的match types将多方会话类型(MPST)作为内部DSL直接嵌入,从而避免了外部DSL方法的编程阻力与抽象泄漏问题。
2025-01-29 cs.PL
Metamorphic Domain-Specific Languages: A Journey Into the Shapes of a Language
外部或内部特定领域语言(DSL)或(流畅)API?无论您是DSL的开发人员还是用户,您通常都必须选择自己的立场;您不应该这样做!根据您的需要改变形状的变形DSL怎么样?我们报告了我们4年来提供“正确”支持(在特征建模领域)的旅程,引导我们开发外部DSL,不同形状的内部API,并维护所有这些语言。一个关键的见解是,没有一个放之四海而皆准的解决方案,或者一个解决方案与另一个解决方案相比没有明显的优越性。相反,我们发现继续维护外部和内部DSL是有意义的。我们对软件语言未来的展望是它们能够根据特定的用途或任务自适应到最合适的形状(包括相应的集成开发环境)。我们称之为变形DSL这样一种语言,能够从一种形状变成另一种形状。
2014-04-27 cs.PL
Demonstrating a Future for MLIR-native DSL Compilers on a NumPy-like Example
TU Dresden(德累斯顿工业大学)
本文介绍了一个面向NumPy的DSL,完全基于MLIR构建,通过新的MLIR类型检查器实现前端动作和语义分析,展示了其在天气建模和计算流体动力学领域的应用效果。
2026-04-27 cs.PL
Application Embedding: A Language Approach to Declarative Web Programming
从Web的早期开始,Web应用程序开发人员就渴望以声明方式开发他们的大部分应用程序。然而,应用程序的一个方面,即它的业务逻辑,总是保持必要性。在这项工作中,我们提出了应用程序嵌入,一种新的方法,应用程序开发,允许应用程序的各个方面,包括其业务逻辑,以声明方式编程。我们在两个步骤中开发这种方法。首先,我们在Web应用程序和特定领域语言(DSL)之间绘制一个映射。其次,我们注意到,在实现DSL的两种方法中,即内部或外部,大多数传统的Web应用程序对应于外部DSL,而对应于DSL嵌入(实现内部DSL)的技术大多未被探索。通过将DSL嵌入技术投射到Web应用中,我们得到了一种新的技术--应用嵌入。应用程序嵌入提供了代码资产的分离,鼓励重用命令式代码,同时保持所有特定于应用程序的资产,包括那些指定其业务逻辑的声明性资产。作为验证,我们使用所提出的资产分离实现了一个简单但不平凡的Web应用程序。此实现包括一个名为FishTank的应用程序不可知的命令式主机应用程序,旨在适用于各种Web应用程序,以及旨在加载到该主机上的特定应用程序的不同方面的声明性定义。与传统方法相比,我们的代码资产分离方法有助于更好地分离工作。通过这种分离,主机应用程序开发人员可以主要关注web应用程序的功能外方面,即提高性能、可伸缩性和可用性,而嵌入式应用程序的开发人员可以关注其应用程序的功能方面,而无需担心功能外的问题。…
2017-01-27 cs.PL
Leveraging LLMs to support co-evolution between definitions and instances of textual DSLs
Chalmers University of Technology(查尔姆斯理工大学);University of Gothenburg(哥德堡大学);Radboud University(拉德博德大学)
本研究利用大型语言模型支持文本DSL定义与实例的共进化,通过实验验证了LLM在迁移文本实例方面的有效性及可扩展性挑战。
2025-12-07 cs.AI cs.PL cs.SE
A Domain-Specific Language and Editor for Parallel Particle Methods
领域特定语言(DSL)在科学高性能计算中越来越重要,以降低开发成本,提高抽象水平,从而简化科学编程。然而,设计和实现DSL并不是一件容易的事情,因为它需要应用领域的知识以及语言工程和编译器方面的经验。因此,许多DSL使用宏或文本生成器来遵循一种弱的方法,这些方法缺乏使DSL对程序员来说更舒适的许多功能。其中一些功能-例如,语法突出显示、类型推断、错误报告和代码完成-都可以由语言工作台轻松提供,它将语言工程技术和工具结合在一个公共的生态系统中。在本文中,我们提出了并行粒子网格环境(PPME),一个DSL和开发环境的基础上的粒子方法和混合粒子网格方法的数值模拟。PPME使用Meta编程系统(MPS),一种投影语言工作台。PPME是并行粒子网格语言(PPML)的继承者,PPML是一种使用传统实现策略的基于Fortran的DSL。我们分析和比较这两种语言,并演示如何使用静态分析和投影编辑程序员的经验可以得到改善。此外,我们提出了一个明确的领域模型的粒子抽象和粒子方法的第一个形式类型系统。
2017-09-17 cs.MS cs.PL cs.SE
ManyDSL: A Host for Many Languages
领域特定语言变得越来越重要。几乎每个应用程序都涉及多个领域。但是,如何在同一个应用程序中定义、使用和组合多个DSL呢?最常见的方法是沿着域边界将项目拆分为多个部分和文件。然后,每个文件被单独编译。或者,多种语言可以嵌入到灵活的宿主语言中:在相同的语法中提供新的域语义。在本文中,我们遵循较少探索的变形语言的路线。这些语言能够动态地修改自己的语法和语义,从而成为DSL的更灵活的宿主。我们的语言允许动态创建语法,并在需要时切换语言。我们通过一个新的概念,语法指导执行。语言语法包括语义动作,这些动作是在解析期间立即执行的功能代码片段。通过避免额外的中间表示,连接来自不同语言和领域的动作被大大简化。尽管如此,动作仍然可以通过lambda封装和动态分段生成高度专业化的代码。
2016-12-11 cs.PL
Program Synthesis using Natural Language
与计算机交互是数百万人的一项无处不在的活动。重复性或专门的任务通常需要创建小型的,通常是一次性的程序。最终用户努力学习和使用大量的领域特定语言(DSL)来有效地完成这些任务。我们提出了一个一般的框架,用于构建程序合成器,采取自然语言(NL)的输入和产生的目标DSL的表达式。该框架将DSL定义和由NL/DSL对组成的训练数据作为输入。通过学习最佳权重和分类器(使用NLP特征),它构建了一个合成器,这些分类器对基于关键字编程的翻译的输出进行排名。我们将我们的框架应用于三个领域:重复的文本编辑,智能辅导系统,和航班信息查询。在1200多个英文描述中,各自的合成器分别将80%和90%的描述列为前1名和前3名。
2015-09-01 cs.PL
Organizing the Aggregate: Languages for Spatial Computing
随着嵌入到工程系统中的计算设备的数量持续增加,在用户控制设备集合的需求与单个设备的复杂技术之间存在越来越大的差距。空间计算试图通过利用物理位置和设备连接之间的联系来弥合具有本地通信的系统的这一差距。大量的空间计算领域特定语言(DSL)已经出现在不同的领域,从生物学和可重构计算,传感器网络和基于代理的系统。在这一章中,我们开发了一个框架,分析和比较空间计算DSL,调查目前的最先进的,并提供了未来的空间计算DSL调查的路线图。
2012-04-03 cs.DC cs.MA cs.PL
EasyTime++: A case study of incremental domain-specific language development
EasyTime是一种用于在体育比赛中测量时间的领域特定语言(DSL)。DSL的一个显著特点是它们更容易更改,EasyTime在这方面也不例外。本文介绍了两个新的EasyTime功能:将竞争对手分类,并包含必须动态确定圈数的比赛。它展示了如何将这样的扩展增量地添加到基本语言中,重用大多数语言规范。两个案例研究表明这种方法的适用性。
2013-03-04 cs.PL
Learning Context-Free Grammars for Grammar-Constrained Decoding via Declarative Agentic Programming with Guarantees
Amazon Web Services(亚马逊云科技);Purdue University(普渡大学)
本研究提出名为Autogrammar的声明式智能体,可从文档和执行数据自动学习上下文无关文法,用于语法约束解码,在三种DSLs上的实验显示其生成的文法性能优于现有基线,能显著提升端到端LM的真实任务表现。
2026-08-07 cs.AI cs.CL cs.PL
MELT - a Translated Domain Specific Language Embedded in the GCC Compiler
GCC免费编译器是一个非常大的软件,可以为各种系统上的许多目标编译多种语言的源代码。它可以通过插件进行扩展,插件可以利用其强大的功能,通过处理各种GCC内部表示(Gimple,Tree等)来提供额外的特定功能(警告,优化,源代码重构或导航)。用C语言编写插件是一项复杂而耗时的任务,但是使用现有的脚本语言来定制GCC是不切实际的。我们描述MELT,一个特定的Lisp类DSL,适合现有的GCC技术,并提供高层次的功能(功能,对象或自反编程,模式匹配)。MELT被翻译成适合GCC内部构件的C,并提供各种功能来促进这一点。这项工作表明,即使是庞大的遗留软件也可以通过专门定制和翻译的高级DSL进行后验扩展。
2011-09-05 cs.PL cs.SE
A Formal Algebraic Framework for DSL Composition
Two Six Technologies(图六科技公司)
我们讨论了一个正式的框架,使用代数结构建模的元语言,可以写,组成,并提供DSL的抽象之间的互操作性。这个形式化框架的目的是提供元语言的组合属性的验证。在我们的整个文件中,我们讨论了这个正式的框架的建设,以及它的关系,我们的团队的工作DARPA的V-SPELLS程序通过管道,我们已经开发完成我们的验证任务的V-SPELLS。我们的目标是在我们的论文中对这一核查管道进行广泛的概述。流水线可以分为四个主要部分:第一是在Coq中提供元语言的形式化模型;第二是在Coq中给出我们选择的代数结构的规范;第三,我们需要在Coq中实现我们的代数结构的特定实例,以及在Coq中证明这个实现是根据我们在第二步中的规范的代数结构;最后,我们需要在Coq中证明第一步中的元语言的形式模型是第三步中的实现的实例。
2023-02-01 cs.CL cs.LO cs.PL
Towards Python-based Domain-specific Languages for Self-reconfigurable Modular Robotics Research
Technical University of Denmark(丹麦技术大学);University of Southern Denmark(南丹麦大学)
本文探讨了操作系统和高级语言在自重构机器人软件和领域专用语言(DSL)开发中的作用。我们回顾了一些自重构机器人技术的当前趋势,并描述了ATRON II软件系统的开发,该软件系统利用Linux和Python显着提高软件的抽象性和可移植性,同时提供了一些基本功能,可以证明使用Python时,无论是独立的或通过DSL,在自重构机器人系统上是有用的。这些特性包括透明套接字通信、模块识别、轻松的软件传输和可靠的模块间通信。最终的结果是模块化机器人的软件平台,在适当的地方建立在操作系统,虚拟机,中间件和高级语言的现有工作。
2013-02-22 cs.OS cs.PL cs.RO
Synthesizing Programmatic Reinforcement Learning Policies with Large Language Model Guided Search
National Taiwan University(台湾大学);Microsoft(微软公司)
本文提出LLM-GS框架,通过Pythonic-DSL策略和Scheduled Hill Climbing算法,利用大语言模型引导搜索高效合成程序化强化学习策略,显著提升样本效率并降低使用门槛。
2025-03-11 cs.AI cs.LG cs.PL
A Domain Specific Language for kinematic models and fast implementations of robot dynamics algorithms
Istituto Italiano di Tecnologia(意大利理工学院)
刚体动力学算法在机器人控制器和仿真的几个组件中起着至关重要的作用。高频控制回路中的实时的限制和特定应用的时间要求要求这些功能非常高效。尽管已建立的算法的可用性,他们的有效实施,为特定的机器人仍然是一个繁琐和容易出错的任务。然而,这些组件是获得高性能控制器所必需的。为了实现有效的,但很好的maintenance实现动力学算法,我们建议使用一个特定领域的语言来描述机器人的运动学/动力学模型。由于算法在此模型上被参数化,因此可以生成针对特定机器人定制的可执行代码,这要归功于\dsls可用的设施。这种方法允许用户只处理他们的机器人的高级描述,并将他们从有问题的手工开发中解脱出来;然后可以将资源和精力集中在开放的研究问题上。关于逆动力学的有效代码的生成的初步结果将作为这种方法的概念证明。
2013-01-30 cs.PL cs.RO