Loop Transformations using Clang's Abstract Syntax Tree
OpenMP 5.1引入了第一个循环嵌套转换指令unroll和tile,并且预计在OpenMP 6.0中会包含更多。我们讨论了Clang的实现所使用的两个抽象树(AST)表示,目前正在开发中。第一种表示是为了与现有实现兼容而设计的,并将转换后的循环嵌套存储在语法AST旁边的影子AST中。第二种表示引入了一个新的Meta AST节点OMPCanonicalLoop,它保证了OpenMP循环的语义要求得到满足,以及一个CanonicalLoopInfo类型,OpenMPIRBuilder使用它来表示文字和转换的循环。第二种方法提供了更好的循环语义抽象,消除了只与代码生成相关的影子AST节点的需要,允许与其他前端(如flang)共享实现,但依赖于当前正在开发的OpenMPIRBuilder。
2021-07-16 cs.PL
Extended Abstract: Towards a Performance Comparison of Syntax and Type-Directed NbE
本文旨在开发一个平台,直接比较依赖类型检查器中语法指导与类型指导的相等性检查方法,量化后者的性能开销并分析改进途径。
2025-09-16 cs.PL
Abstract clones for abstract syntax
本文提出用带额外代数结构的 abstract clones 公理化简单类型理论的二阶变量绑定算子,构造自由代数并导出归纳原理,从而支持独立于语法的可靠性与规范化证明。
2021-05-03 cs.LO cs.PL
Syntax and Semantics of Abstract Binding Trees
本文的贡献是多排序名义抽象绑定树(abts)的语法和语义的发展,二阶泛代数的扩展,以支持符号索引家庭的运营商。名词性abts对于正确处理具有生成现象的语言的句法,包括异常和可变状态是必不可少的。此外,我们已经开发了抽象绑定树的分类语义,正式在建设性类型论使用Agda证明助手。多排序的名词性abt也形成了即将到来的JonPRL证明助手版本的句法基础,JonPRL是Nuprl传统中扩展的构造性类型论的实现。
2016-01-23 cs.LO cs.PL
Success and failure of programming environments - report on the design and use of a graphic abstract syntax tree editor
STAPLE项目(在80年代末)研究了一种用于函数式编程的持久化架构。工作已经完成了两个方向:一个持久的系统内的功能性语言的编程环境的发展和实验转移到行业的功能原型的专业知识。本文是关于第一次活动的报告。第一部分给出了Absynte的一般描述--该项目内开发的抽象语法树编辑器。下面的部分将尝试衡量这种编辑器的有效性,并讨论结构化语法编辑(特别是基于抽象语法树的环境)所带来的问题。
2007-10-11 cs.HC cs.PL
TRANX: A Transition-based Neural Abstract Syntax Parser for Semantic Parsing and Code Generation
Carnegie Mellon University(卡内基梅隆大学)
我们提出TRANX,一个基于转换的神经语义解析器,映射到正式的意义表示(MR)的自然语言(NL)的话语。TRANX使用基于目标MR的抽象语法描述语言的转换系统,这给它带来了两个主要优点:(1)它是高度精确的,使用来自目标MR的语法的信息来约束输出空间并对信息流建模,以及(2)它是高度可概括的,并且可以很容易地应用于新类型的MR,只需编写与MR中允许的结构相对应的新的抽象语法描述。在四个不同的语义解析和代码生成任务上的实验表明,我们的系统是可推广的,可扩展的,有效的,与现有的神经语义解析器相比,注册强大的结果。
2018-10-05 cs.CL cs.PL
Free Foil: Generating Efficient and Scope-Safe Abstract Syntax
本文提出两种方法使 foil 更易用:结合自由作用域单子生成高效类型安全的抽象语法,并提供 Template Haskell 函数从朴素表示自动生成作用域安全表示,以 $λΠ$ 为例验证并给出基准测试。
2024-05-26 cs.PL
Extended Initiality for Typed Abstract Syntax
初始语义学的目标是将与签名相关联的语法解释为某类“模型”的初始对象,为抽象语法产生归纳和递归原则。Zavió证明了一个简单类型语法的初始性结果:给定一个签名S,与S相关联的抽象语法构成了单子中S的模型范畴中的初始对象。然而,她的定理提供的迭代原则只考虑了在一组固定的对象类型上的两种语言之间的翻译。我们推广Zavió的模型概念,使对象类型可以变化,产生一个更大的类别,同时保持其中语法的初始性。因此,我们得到了一个扩展的初始性定理的类型化抽象语法,在不同类型的条款之间的翻译可以指定通过相关的范畴理论的迭代算子作为一个初始态射。我们的定义确保通过初始化指定的翻译是类型安全的,即在明显的意义上与源语言和目标语言中的类型兼容。我们的主要例子是通过命题作为类型的范例:我们指定命题和推理规则的经典和直觉命题逻辑通过各自的类型签名。然后,我们使用范畴论的迭代算子指定一个双重否定翻译从前者到后者。第二个例子是PCF的签名。对于这种特殊情况,我们在证明助手Coq中将定理形式化。然后,我们指定,通过范畴理论的迭代运算符,从PCF的无类型的λ演算的翻译。
2012-04-05 cs.LO cs.PL
Towards Cumulative Abstract Semantics via Handlers
University of Colorado Boulder(科罗拉多大学博尔德分校);Amazon(亚马逊)
本文提出通过作用域效应实现累积抽象语义,以构建模块化且优雅的抽象解释框架。
2026-02-17 cs.PL
A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille
Cedille是一个相对较新的工具,基于Curry风格的纯类型论,没有原始的数据类型系统。使用新技术的基础上依赖的交叉类型,归纳数据集及其归纳原则。这种方法的一个好处是它允许探索新的或高级形式的归纳数据类型。本文报告的工作进展中的一个这样的形式,即高阶抽象语法(HOAS)。我们在纯类型论的背景下考虑HOAS的性质,与传统的λ演算的环境模型的概念进行比较。我们看到了一种替代方案,基于我们所称的Kripke函数空间,我们可以在Cedille中推导出弱初始代数。使用编码给出了几个例子。
2019-10-24 cs.LO cs.PL
Functional programming with lambda-tree syntax
我们提出了一个新的功能性程序设计语言,MLTS,使用的数据树语法的方法来编码绑定出现在数据结构的设计。在这种方法中,绑定永远不会成为自由的,也不会脱离它们的范围:相反,数据结构中的绑定被允许移动到程序中的绑定。MLTS的设计在程序中包含了额外的站点,这些站点直接支持绑定的移动。为了正式定义语言的操作语义,我们提出了一个抽象的语法MLTS和一个自然的语义评估。我们将把这样的自然语义看作是一个丰富逻辑中的逻辑理论,这个逻辑包括 * 名义抽象 * 和 *nabla-quantifier*:因此,MLTS的自然语义规范可以给出一个简洁而优雅的表示。我们提出了一个类型化的原则,自然地扩展了核心ML程序的类型化,我们通过几个例子来说明MLTS的功能。本文简要介绍了一个MLTS的联机解释器。
2019-08-09 cs.PL
A Higher-Order Abstract Syntax Approach to Verified Transformations on Functional Programs
我们描述了一种方法来验证实现的转换功能的程序,利用高阶表示的语法。在这种方法中,使用遗传Harrop公式的逻辑指定变换。一方面,这些规范直接作为实现,是Lambda Prolog语言中的程序。另一方面,它们可以用作Abella系统的输入,该系统允许我们证明关于它们的属性,从而证明关于实现的属性。我们认为,这种方法是特别有效的实现转换,分析绑定结构。我们通过在Lambda Prolog中描述对这种结构敏感的类型化闭包转换和代码提升等转换的简洁编码,并通过展示如何使用Abella证明其正确性来做到这一点。
2016-01-23 cs.LO cs.PL
Contextual MetaML: Syntax and Full Abstraction
University of Oxford(牛津大学);Nanyang Technological University(南洋理工大学)
本文提出Contextual MetaML,一种支持在强类型保证下存储和运行开放代码的元编程语言,通过上下文模态类型追踪和推理自由变量,实现了元编程语言的首次完全抽象结果。
2026-05-18 cs.PL
Abstract Representation of Binders in OCaml using the Bindlib Library
OCaml的Bindlib库提供了一组工具,用于通过变量绑定操作数据结构。它非常适合抽象语法树的表示,并且已经被用于六种语言和证明助手(包括逻辑框架Dedukti的新版本)的实现。Bindlib针对快速替换进行了优化,并支持变量重命名。由于绑定的表示是基于高阶抽象语法的,因此在替换过程中不会发生变量捕获。因此,变量名在替换时不会更新。然而,它们可以被显式地重新计算以避免“视觉捕获”(即,具有相同外观名称的不同变量)。
2018-07-05 cs.PL
Tree Notation: an antifragile program notation
本文提出了一种新的简单、通用的语法--树记法。语言设计者可以在树表示法的基础上发明新的程序设计语言,称为树语言。与传统的程序设计语言相比,树语言有许多优点。我们包括一个可视化摘要,以简洁地显示问题和发现。然后,我们描述了问题-BNF抽象语法树(AST)解析步骤-并介绍了我们发现的新解决方案:一个新的2D程序设计语言家族,直接编写为几何树。
2017-10-23 cs.PL
Abstracting an operational semantics to finite automata
命令式程序的小步操作语义的描述与有限自动机的语义有明显的相似性,因此定义一个从语义到自动机的抽象映射并证明一个模拟性质似乎是容易的。本文的目的是确定原因简单的证明打破,其中工件的语义,导致口吃的模拟步骤。然后,我们提出了一个语义的基础上的拉链数据结构,与直接解释的评价导航的语法树。然后通过等价类构造来定义抽象函数。
2014-09-27 cs.PL
Revisiting Code Similarity Evaluation with Abstract Syntax Tree Edit Distance
University of Luxembourg(卢森堡大学);Luxembourg Institute of Science and Technology(卢森堡科学技术研究所)
本文重新审视代码相似度评估,重点研究AST编辑距离在多种语言中的表现,并提出并发布了一种增强版TSED自适应指标,实验证明其在所有测试语言中均有效。
2024-06-03 cs.CL cs.PL cs.SE
Compositional Semantics for the Procedural Interpretation of Logic
逻辑程序的语义由证明论、模型论和直接后果算子的不动点给出。如果子句逻辑是一种程序设计语言,那么它也应该具有组合语义。程序设计语言的组合语义遵循程序的抽象语法,通过对其组成单元的含义进行数学运算来组成单元的含义。逻辑的过程解释只产生了逻辑程序的不完整的抽象语法。我们完成它,并使用的结果作为基础的组合语义。我们提出比较塔斯基的代数化的一阶谓词逻辑,这是在实质上的组合语义为他选择的语法。我们的特点是我们的语义等价的直接后果运营商。
2006-05-07 cs.PL
Reasoning with Higher-Order Abstract Syntax in a Logical Framework
基于具有更高类型量化的直觉或线性逻辑的逻辑框架已成功地用于对程序设计语言和推理系统领域中的许多重要判断给出高级、模块化和形式化的规范。给定这样的规范,考虑证明框架中指定系统的属性是很自然的:例如,给定函数式程序设计语言的求值规范,证明该语言是确定性的或求值保留类型。开发这种推理框架的一个挑战是高阶抽象语法(HOAS),一种优雅的和声明性的对象级抽象和替换处理,很难在涉及归纳的证明中处理。在本文中,我们提出了一个元逻辑,可用于推理使用HOAS编码的判断,这个元逻辑是一个简单的直觉主义逻辑,承认高阶量化简单类型的非线性项(HOAS的关键成分),以及归纳和定义的概念的扩展。我们通过考虑直觉和线性逻辑的编码,探讨了HOAS编码的形式元理论分析的困难,并正式推导出这些逻辑的重要子集的割的容许性。然后,我们提出了一种方法,以避免高阶抽象语法的好处和分析所产生的编码的能力之间的明显的权衡。我们通过涉及简单函数式和命令式程序设计语言PCF和PCF:=的示例来说明这种方法。我们正式推导出这样的属性,作为唯一性的类型,主题减少,确定性的评价,和等价的过渡语义和自然语义表示的评价。
2001-01-15 cs.LO cs.PL
Implementing a Category-Theoretic Framework for Typed Abstract Syntax
在以前的工作(“从签名到单子在UniMath”)中,我们描述了一个抽象语法的范畴理论建设的签名,机械化的UniMath库的基础上Coq证明助手。在目前的工作中,我们描述了什么是必要的推广工作,占简单类型的语言。首先,必须推广某些定义,以解释简单类型情况下非内函子的自然外观。事实证明,在许多情况下,我们的机械化结果在没有任何代码更改的情况下延续到广义定义。第二,现有的机械化图书馆$ω$ -cocontinuous函子必须扩展的建设和必要的多排序语法定理。第三,语义签名的理论框架必须从monoidal推广到bicategorical设置,再次说明在类型化情况下出现的非内函子。这使用了具有给定源的函子上的内函子的动作,以及动作之间强函子的相应概念,所有这些都使用最近开发的双范畴理论库在UniMath中形式化。我们解释了需要做什么来将所有这些成分模块化地连接在一起。我们的工作的主要结果是一个一般的建设,当美联储与一个简单类型的语言的签名,返回该语言的实现与适当的样板代码,特别是,一个认证的一元替换操作。
2021-12-13 cs.PL math.CT
Formal Metatheory of Second-Order Abstract Syntax
尽管在理论和实践方面都进行了广泛的研究,但形式化,推理和实现具有变量绑定的语言仍然是一项艰巨的工作-重复的样板文件和过于复杂的捕获避免替换元理论经常阻碍语言的实际有趣属性。现有的发展提供了一些缓解,但代价是不方便和容易出错的术语编码和缺乏正式的基础。我们提出了一个启发性的语言形式化框架中实现的Agda。该系统将具有变量绑定运算符的语法签名的描述转换为内部编码的归纳数据类型,该数据类型配备有语法操作,例如弱化和替换,以及它们的正确性属性。所生成的元理论进一步结合了元变量及其相关的元替换操作,这使得二阶方程/重写推理。该框架的基础数学基础-初始代数语义-通过构造将语言的组合解释导出到满足语义替换引理的模型中。
2022-01-10 cs.DM cs.LO cs.PL
Beyond Notations: Hygienic Macro Expansion for Theorem Proving Languages
针对定理证明器中语法扩展不足与名称捕获问题,借鉴Scheme提出卫生宏系统,统一支持多级抽象,已集成于Lean 4且易于移植。
2022-04-12 cs.PL
The While language
本文给出了一种简单的命令式程序设计语言的形式化。目标是研究和开发“动手”的程序设计语言的形式规范,即它的语法,操作语义和类型系统。为了获得该语言的可执行版本,我们在Racket中实现了它的操作语义和类型系统。
2016-04-12 cs.PL
Full Abstraction for Free
结构化递归模式,如折叠和展开已被广泛用于结构函数式程序和程序语义。在此上下文中,通常将指称语义实现为归纳数据类型上的折叠,以确保终止性和组合性。单独地,操作模型可以由展开给出,并且自然地不是所有操作模型都以有意义的方式与给定的指称语义一致。为了确保这些语义是一致的,重要的是要考虑与指称和操作模型相关的完全抽象的属性。在本文中,我们将展示如何设计一个组合语义,使完整的抽象免费。我们这样做,通过使用分配律,我们生成的操作和指称模型。分布律确保语义在类型级别上是完全抽象的,从而减轻了程序员的证明负担。
2023-03-16 cs.PL
A Higher-Order Abstract Syntax Approach to the Verified Compilation of Functional Programs
我们认为,功能性程序设计语言的编译器的实现和验证大大简化了采用高阶表示的语法称为高阶抽象语法或HOAS。HOAS的基本思想是使用一种元语言,它为绑定相关概念提供内置的逻辑处理。通过将元语言嵌入到更大的编程或推理框架中,可以将对象语言中的绑定结构的处理吸收到系统的元理论中,从而大大简化整体实现和推理过程。我们在这篇论文中提出并证明了上述论点的有效性的方法来验证执行的编译器转换的函数程序,利用HOAS。在这种方法中,函数程序的转换首先以基于规则的关系规范的形式表达。这些规范被渲染成语言lambda Prolog的程序。一方面,这些程序直接作为实现。另一方面,它们可以用作Abella系统的输入,该系统允许我们证明关于它们的属性,从而证明关于实现的属性。lambda Prolog和Abella都支持使用HOAS方法。因此,它们构成了一个框架,可用于在验证编译中测试HOAS方法的好处。我们用它们来实现和验证一个编译器的代表性的功能程序设计语言,体现了许多编译器的核心,这些语言的转换。在这两个编程和推理阶段,我们展示了如何使用的HOAS方法显着简化了绑定结构的表示,操作,分析和推理。
2017-02-11 cs.LO cs.PL
Concrete Syntax with Black Box Parsers
上下文:Meta编程的很大一部分是匹配、分析和转换语法树。许多Meta编程系统处理抽象语法树,但这需要对描述抽象语法的数据类型的结构有深入的了解。因此,Meta编程是容易出错的,并且Meta程序对这样的AST的结构的演变没有弹性,需要对这些程序进行侵入性的、容易出错的改变。询价:具体的语法模式通过允许Meta程序员使用对象语言的实际语法来匹配和创建语法树来缓解这个问题。然而,支持具体语法模式的系统需要对象语言的具体语法以它们自己的形式体系。创建这样的语法是一个代价高昂且容易出错的过程,特别是对于Java和C++这样的现实语言。方法:在本文中,我们提出了具体的,一种技术来扩展Meta编程系统与可插拔的具体语法模式,基于外部,黑盒解析器。我们在Rascal(一个开源Meta编程系统和语言工作台)的上下文中具体说明了这一点,并展示了如何重用Java、JavaScript和C++的现有解析器。此外,我们提出了Tympanic,一个DSL声明性地将外部AST结构映射到Rascal的内部数据结构。Tympanic允许Concretely的实现者解决Java中面向对象的类层次结构和Rascal的代数数据类型之间的阻抗不匹配。代数数据类型和AST编组代码都是自动生成的。知识:Concretely和Tympanic的概念架构支持重用预先存在的外部解析器及其在元编程系统中的AST表示,这些元编程系统具…
2019-02-01 cs.PL
Abstract Gringo
本文定义了ASP Grounter GRINGO的输入语言的语法和语义。该定义涵盖了在早期关于该语言语义的工作中没有讨论的几个构造,包括间隔、池、整数除法、非数值聚合和lparse风格的聚合表达式。这个定义是抽象的,因为它忽略了用ASCII字符串表示程序的一些细节。它作为GRINGO 4.5版以上的规范。
2018-02-14 cs.PL
Abstracting Denotational Interpreters
本研究提出参数化的指称解释器,可通过改变语义域得到不同动态语义与静态分析,还给出首个强组合恰当的按需调用指称语义,简化了抽象解释的可靠性证明。
2024-07-12 cs.PL
Lolisa: Formal syntax and semantics for a subset of the solidity programming language in Mathematical Tool Coq
本文介绍了为Etheruem区块链平台开发的Solidity程序设计语言的一个大子集的形式语法和语义,基于我们最近开发的一个通用的,可扩展的,可重用的形式内存(GERM)框架和Curry-Howard同构的扩展,表示为执行-验证同构(EVI)。这个子集被表示为Lolisa,据我们所知,它是为Solidity开发的第一个机械化和验证的正式语法和语义。Lolisa的形式语法采用了比Solidity更强大的静态类型系统,以增强类型安全性。此外,Lolisa不仅包含Solidity的几乎所有语法组件,如映射、修饰符、合约和地址类型,而且还包含通用程序设计语言功能,如多个返回值、指针算术、结构和字段访问。因此,Lolisa固有的兼容性允许Solidity程序直接翻译成Lolisa,而无需重建或抽象,并且Lolisa固有的通用性允许它扩展到表达其他程序设计语言。为此,我们还提出了一个初步的计划,系统地扩展到其他语言。
2021-01-04 cs.PL
DSL development based on target meta-models. Using AST transformations for automating semantic analysis in a textual DSL framework
本文描述了一种为领域特定语言(DSL)创建文本语法的方法。我们认为目标元模型是主要的工件,因此要首先开发。其核心思想是将文本语法分析表示为一系列转换。这是由显式操作抽象语法树(ATS),提出了一种简单的语言。文本到模型的转换分为两个部分:文本到AST(由openArchitectureWare [1]开发)和AST到模型(本文提出)。我们的方法简化了语义分析,并有助于生成尽可能多的。
2008-01-08 cs.PL
Parametric Compositional Data Types
在以前的工作中,我们已经说明了组合数据类型(CDTs)为实现语言和处理抽象语法树(AST)提供的好处。基于Swierstra的数据类型la carte,CDT被实现为一个Haskell库,该库以模块化和可扩展的方式定义递归数据类型和函数。虽然CDTs提供了一个强大的工具来分析和操纵AST,他们缺乏一个方便的表示变量绑定。在本文中,我们弥补这一不足,结合框架的CDTs与Chlipala的参数高阶抽象语法(PHEAS)。我们展示了如何从函子到反函子的概括使我们能够捕获PHOAS,同时仍然保持CDTs的原始实现的功能,特别是其模块化。与以前的方法不同,我们避免了所谓的外来术语,而不诉诸抽象类型:当我们想要在CDT上执行检查递归计算的CDT的转换时,这是至关重要的,例如常数折叠。
2012-02-14 cs.PL
The ModelCC Model-Driven Parser Generator
语法导向的翻译工具需要通过形式语法来规范语言。该语法必须符合要使用的解析器生成器的特定要求。然后,该语法被标注有语义动作,以使结果系统执行其期望的功能。在本文中,我们介绍了ModelCC,基于模型的解析器生成器,从语言处理的语言规范,避免了语法驱动的解析器生成器所造成的一些问题。ModelCC接收一个概念模型作为输入,以及注释它的约束。然后它能够为所需的文本语法创建一个解析器,生成的解析器完全自动化语言概念模型的实例化。ModelCC还包括一个引用解析机制,因此ModelCC能够实例化抽象语法图,而不仅仅是抽象语法树。
2015-01-09 cs.FL cs.PL
An instance of FreeCHR with refined operational semantics
本文为FreeCHR框架引入了基于CHR精化操作语义推导出的执行算法,证明了其相对于非常抽象语义的健全性,为新的CHR实现提供了统一且易于实现的指南和算法定义。
2025-05-28 cs.PL
AoA: Theorem Proving Agent over Abstract Syntax Tree of Redesigned Language
Nanyang Technological University Singapore(南洋理工大学新加坡分校);Imperial College London London, UK(伦敦帝国理工学院伦敦分校);University of Edinburgh Edinburgh, UK(爱丁堡大学爱丁堡分校)
研究针对交互式定理证明中人工操作限制可扩展性及基于LLM的证明智能体成本高的问题,提出将智能体从源文本提升到抽象语法树的方法,实现了AoA,在多个方面有显著提升且解决更多难题。
2026-07-21 cs.AI cs.LG cs.PL
Variable binding, symmetric monoidal closed theories, and bigraphs
本文研究了使用对称monoidal封闭(SMC)结构表示语法变量绑定,特别是线性方面的语言。在我们的设置中,首先指定一个SMC理论T,它可以表达绑定操作,在某种程度上让人想起高阶抽象语法。这个理论产生了一个SMC范畴S(T),它的态射在某种意义上是所需语法中的项。我们将我们的方法应用到詹森和米尔纳的(抽象绑定)二图,这是线性w.r.t.流程.这导致了另一类的双图,我们比较原始。
2009-05-26 cs.LO cs.PL math.CT
Automatically Deriving Control-Flow Graph Generators from Operational Semantics
我们开发的第一理论的控制流图的第一原则,并使用它来创建一个算法,自动合成的控制流图生成器的许多变种从语言的操作语义。我们的方法首先介绍了一个新的算法转换一个大类的小步操作语义的抽象机器。接下来,它使用一种称为“抽象重写”的技术来自动抽象语言的语义,该技术用于直接从程序生成CFG(“解释模式”),并为任何语言中的程序生成独立代码,类似于人类编写的CFG生成器。我们展示了如何选择两个抽象和投影参数,使我们的方法来合成几个家庭的CFG发电机有用的不同种类的工具。我们证明了生成的图和原始语义之间的对应关系。我们提供并证明了一个自动证明解释模式生成器终止的算法。除了我们的理论结果,我们已经实现了这个算法的一个工具,称为任务,并表明它产生人类可读的代码在两个中等大小的语言与60-80条规则,具有几乎所有的过程内控制结构常见于现代语言。然后,我们展示了这些CFG发生器足以在其上构建两个静态分析仪。我们的工作是一个有前途的一步,能够综合所有所需的工具,从语义的程序设计语言的宏伟愿景。
2022-07-22 cs.PL
AST-Probe: Recovering abstract syntax trees from hidden representations of pre-trained language models
University of Murcia(穆尔西亚大学);University of Montreal(蒙特利尔大学);Institute for Clarity in Documentation(文档清晰化研究所);Inria Paris-Rocquencourt(法国国家信息与自动化研究所巴黎-罗克库尔中心);Rajiv Gandhi University(拉吉夫·甘地大学);Tsinghua University(清华大学);Palmer Research Laboratories(帕尔默研究实验室)
预先训练的语言模型的目标是学习文本数据的上下文表示。预训练的语言模型已经成为自然语言处理和代码建模的主流。使用探针,一种研究隐藏向量空间的语言属性的技术,以前的工作表明,这些预先训练的语言模型在其隐藏表示中编码简单的语言属性。然而,以前的工作没有评估这些模型是否编码的整个语法结构的程序设计语言。在本文中,我们证明了一个语法子空间的存在,躺在隐藏的表示预先训练的语言模型,其中包含的语法信息的程序设计语言。我们表明,这个子空间可以从模型的表示中提取,并定义了一种新的探测方法,AST-Probe,使整个抽象语法树(AST)的输入代码片段恢复。在我们的实验中,我们表明,这个句法子空间存在于五个国家的最先进的预训练语言模型。此外,我们强调模型的中间层是编码大多数AST信息的层。最后,我们估计了该句法子空间的最佳大小,并表明其维度远低于模型表示空间的维度。这表明预先训练的语言模型使用其表示空间的一小部分来编码程序设计语言的语法信息。
2022-09-10 cs.AI cs.CL cs.LG
A Refined Operational Semantics for FreeCHR
Ulm University(乌尔姆大学)
本文提出FreeCHR的精细化操作语义,证明其等价于经典CHR的精细化语义,从而建立与现有CHR实现等效的实现框架。
2026-01-07 cs.PL
Verification of High-Level Transformations with Inductive Refinement Types
像Rascal这样的高级转换语言包括用于操作大型抽象语法树的表达功能:第一类遍历,表达模式匹配,回溯和广义迭代器。我们提出了一个抽象的解释工具,Rabit的设计和实现,用于验证归纳类型和形状属性的转换写在这样的语言。我们描述了如何执行抽象解释的基础上操作语义,特别是集中在分析时所产生的挑战的表达遍历和模式匹配。最后,我们对Rabit进行了一系列转换(规范化、去糖、重构、代码生成器、类型推断等)。这表明我们可以有效地验证所述属性。
2018-09-17 cs.PL
Fast and Extensible Hybrid Embeddings with Micros
本文提出基于 micros 的混合嵌入方法,通过将语法转换为 IR 并支持扩展,实现静态类型语言的可扩展嵌入,显著提升编译时性能。
2025-09-09 cs.PL
Operational Semantics for Crystality: A Smart Contract Language for Parallel EVMs
本文为面向并行EVM的智能合约语言Crystality提出首个形式化结构操作语义,并在Coq中机械化验证,通过代币转账案例展示其确保合约正确性的能力。
2025-04-24 cs.PL
The Mob core language and abstract machine (rev 0.2)
目前大多数移动Agent系统都是基于程序设计语言的,由于缺乏足够的形式化理论,其语义很难被证明是正确的。近年来,并发系统理论的发展,即进程演算的发展,首次允许了移动Agent系统的建模,然而直接基于进程演算的语言是非常低级的,希望在保持基本演算语义的同时,为程序员提供更高层次的抽象。在这份技术报告中,我们提出的语法和语义的脚本语言编程移动代理称为暴民。我们描述了语言的语法和语义。Mob是面向服务的,这意味着代理既充当服务器又充当服务的客户端,并且这种耦合在运行时动态完成。该语言是在一个进程演算之上实现的,它允许我们通过将其语义编码到底层演算中来证明框架是合理的。这提供了一种语言安全性,而其他使用ah-doc方法开发的移动代理语言则无法提供这种安全性。
2008-10-24 cs.DC cs.PL
An experiment with denotational semantics
本文介绍了如何按“逆序”,即从表示到语法,系统地设计一门程序设计语言。这种结构是在一个代数框架中开发的,该框架由三个多排序代数组成:表示法,抽象语法和具体语法。这些代数是以这样一种方式构造的,即从具体语法到指称存在唯一的同态,这构成了语言的指称语义。除了它的代数框架,该模型是集合论的,即指称域只是集合,而不是斯科特的自反域。该方法说明了一个虚拟语言Lingua的逐层开发:一个应用层,一个命令层(递归过程)和一个SQL层,其中Lingua被视为一个API(应用程序编程接口)的SQL引擎。后者也被赋予了指称语义。该语言配备了强大的打字机制,涵盖了基本类型(数字,布尔等),列表、数组、记录及其任意组合,以及类似SQL的类型:行、表和数据库。类型模型包括SQL完整性约束。
2019-05-04 cs.PL
The ModelCC Model-Based Parser Generator
形式语言让我们精确地定义数据的文本表示。形式语法,通常以BNF的形式产生,描述语言语法,然后注释语法导向的翻译,并完成语义动作。除了数据的文本表示之外,当需要相应的数据结构的显式表示时,语言设计者必须设计合适的数据模型与其适当的语言规范之间的映射,然后开发从解析树到数据模型实例的转换过程。不幸的是,无论何时必须修改文本表示的格式,更改都必须在整个语言处理器工具链中传播。这些更新非常耗时、乏味且容易出错。此外,如果不同的应用程序使用相同的语言,则必须维护相同语言规范的多个副本。在本文中,我们介绍了ModelCC,基于模型的解析器生成器,从语言处理的语言规范,从而避免了语法驱动的解析器和解析器生成器所造成的许多问题。ModelCC在解析过程中引入了引用解析。因此,ModelCC能够从输入字符串中获取抽象语法图,而不是返回抽象语法树。
2015-01-11 cs.FL cs.PL
Syntax Monads for the Working Formal Metatheorist
针对原始一阶语法表示缺乏范畴论支撑导致基础引理难复用的问题,本文提出Coq框架Tealeaves的核心抽象装饰可遍历单子的弦图解释,证明其表示定理并得到有穷树状数据类型递归组合子。
2023-12-14 cs.LO cs.PL
Abstract Syntax Tree for Programming Language Understanding and Representation: How Far Are We?
Nanjing University(南京大学);Nanyang Technological University(南洋理工大学)
本文通过实证研究系统评估了基于AST与基于Token的代码表示在多项代码任务上的效果,发现AST整体表现较弱但在特定子集上有优势,并分析了AST各处理阶段的影响,为后续研究提供指导。
2023-12-01 cs.AI cs.CL cs.PL
String Diagrams for $λ$-calculi and Functional Computation
本教程以系统方式介绍高阶计算的字符串图与图语言,从范畴论概念的二维语法逐步深入到笛卡尔闭范畴,通过从范畴模型重构分层超图语法并探讨其在编程语言领域的应用。
2024-12-04 cs.LO cs.PL math.CT
Dynamic Neural Program Embedding for Program Repair
University of California(加利福尼亚大学);Microsoft Research(微软研究院)
神经程序嵌入已经显示出了很大的希望,最近的各种程序分析任务,包括程序合成,程序修复,故障定位等,然而,大多数现有的程序嵌入是基于程序的语法特征,如原始令牌序列或抽象语法树。与图像和文本不同,程序具有明确的语义含义,仅考虑其语法可能难以捕获(即,语法相似的程序可能表现出截然不同的运行时行为),这使得基于语法的程序嵌入从根本上受到限制。本文提出了一种新颖的语义程序嵌入,它是从程序执行轨迹中学习的。我们的关键见解是,表示为实时变量值的顺序元组的程序状态不仅更精确地捕获程序语义,而且还为递归神经网络建模提供了更自然的拟合。我们评估不同的语法和语义程序嵌入预测的错误类型,学生在提交给一个入门编程类和两个练习CodeHunt教育平台。评估结果表明,我们的新的语义程序嵌入显着优于基于令牌序列和抽象语法树的语法程序嵌入。此外,我们增加了基于搜索的程序修复系统,从我们的se-mantic嵌入获得的预测,并显示搜索效率也显着提高。
2018-06-30 cs.AI cs.PL
Case Studies in Formal Reasoning About Lambda-Calculus: Semantics, Church-Rosser, Standardization and HOAS
我们以前已经出版了Isabelle/HOL形式化的一般理论的语法绑定。在这篇配套文件中,我们实例化的一般理论,以语法的λ演算和形式化的发展,导致几个基本的结构和结果:健全的语义解释,教会罗瑟和标准化定理,高阶抽象语法(HOAS)编码。对于Church-Rosser和标准化,我们的工作涵盖了微积分的按名称调用和按值调用版本,遵循Takahashi和Plotkin的经典论文。在形式化过程中,我们能够专注于开发的高级思想-感谢我们的一般理论提供的武器库:关于替换,交换和新鲜度操作符的丰富基本事实,以及递归定义和推理原则,包括语法语义解释的专业化。
2021-07-24 cs.LO cs.PL
Abstract Continuation Semantics for Multiparty Interactions in Process Calculi based on CCS
针对支持多方交互的扩展CCS进程演算,构建基于延续的指称与操作语义,验证该延续语义的抽象性,证明指称模型相对操作模型具有弱抽象性。
2024-10-31 cs.DC cs.MA cs.PL
Reasoning in Abella about Structural Operational Semantics Specifications
讨论了Abella系统支持的结构化操作语义风格规范的推理方法。该方法使用lambda树语法来处理对象语言绑定,并在泛型判断中编码绑定相关属性。此外,对象语言规范通过递归定义直接嵌入到推理框架中。通过泛型判断来处理绑定隐含地在用于绑定变量的名称中强制执行独特性和原子性。然而,这些属性必须在推理任务中明确。这个目标可以通过允许递归定义也指定原子谓词的通用属性来实现。这些不同的逻辑功能在阿贝拉系统的效用是通过实际的推理任务证明。与其他几个基于逻辑的方法进行了简要的比较。
2008-06-03 cs.LO cs.PL
An Operational Foundation for Delimited Continuations in the CPS Hierarchy
本文为扩展了 shift/reset 控制算子的 lambda-calculus 提出抽象机和归约语义,以支持 CPS 层次中的定界续延,并展示其在列表前缀查找和求值归一化中的新应用。
2005-12-08 cs.LO cs.PL
Operational methods in semantics
本文以编程语言操作语义为核心,从抽象计算步骤出发构建语义等价、规范语言与静态分析,展示了该方法在语言实现与程序验证中的有效性与可扩展性。
2025-10-14 cs.LO cs.PL
Abstract Compilation as Abstraction of Operator Semantics, applied to Cost Analysis
Universidad Politécnica de Madrid(马德里理工大学);IMDEA Software Institute(IMDEA软件研究所);Spanish Council for Scientific Research (CSIC)(西班牙国家研究委员会);Computer Science Laboratory of Sorbonne University (LIP6)(索邦大学计算机科学实验室);STMicroelectronics(意法半导体)
该研究提出算子语义与抽象编译框架,将其应用于静态代价分析,开发出支持通用函数未知量等的最优递归提取技术,提升了代价分析的可靠性与精确性。
2026-08-11 cs.LO cs.PL