EFI: A Toolbox for Feature Importance Fusion and Interpretation in Python
The University of Nottingham(诺丁汉大学);B-Hive Innovations(B-Hive创新公司);Monash Institute for Pharmaceutical Sciences(莫纳什药物科学研究所)
本文介绍了一个名为Enclusion Feature Importance(Enclusion)的开源Python工具箱,旨在为机器学习(ML)研究人员、领域专家和决策者提供强大而准确的特征重要性量化,以及使用模糊集对预测问题的特征重要性进行更可靠的机械解释。开发该工具包是为了解决由于机器学习算法、特征重要性计算方法和数据集依赖性的多样性而导致的特征重要性量化和缺乏可信特征重要性解释的不确定性。该算法使用数据自举和决策融合技术(如均值、多数表决和模糊逻辑),将来自多个具有不同特征重要性计算方法的机器学习模型的结果进行合并。该工具箱的主要属性是:(i)ML算法的自动优化,(ii)从优化的ML算法和特征重要性计算技术中自动计算一组特征重要性系数,(iii)使用多个决策融合技术自动聚合重要性系数,以及(iv)显示每个特征对预测任务的重要性的模糊隶属函数。描述了工具箱的关键模块和功能,并使用流行的Iris数据集给出了一个简单的应用示例。
2022-08-08 cs.LG cs.LO
A declarative extension of parsing expression grammars for recognizing most programming languages
解析表达式语法是描述语法的流行基础。不幸的是,程序设计语言的一些语法仍然难以用纯PEG识别。一些臭名昭著的例子出现了:C/C ++中typedef定义的名称,Python中基于缩进的代码布局,以及许多脚本语言中的HERE文档。为了识别这样的PEG-硬语法,我们已经解决了PEG的声明性扩展。“声明性”扩展意味着没有传统上用于实现扩展解析行为的编程语义动作。Nez是我们扩展的PEG语言,包括符号表和条件解析。本文证明了使用Nez扩展可以实现许多实用的程序设计语言,如C,C\#,Ruby和Python,其中涉及PEG-硬语法。
2015-11-26 cs.PL
Toward Inferring Accurate Context-free Grammars for Big Languages in a Black-box Setting
University of Texas at Arlington(阿灵顿得克萨斯大学);Islamic University of Technology(伊斯兰理工大学);University of Texas at Austin(奥斯汀得克萨斯大学)
针对黑盒上下文无关语法推断在大型语言中存在的可扩展性、准确性和语法可读性问题,Xvada引入新技术,在实证比较中语法准确性和紧凑性优于对手,还发现Python Liquid引擎漏洞及多个新漏洞,且相关内容可免费获取。
2026-07-16 cs.PL cs.SE
GAP-Gen: Guided Automatic Python Code Generation
University of California, Irvine(加州大学欧文分校)
提出GAP-Gen方法,通过Syntax-Flow和Variable-Flow引入Python语法与语义约束,改进微调过程,在多个数据集上微调T5和CodeT5,显著提升自动Python代码生成性能。
2023-05-10 cs.CL cs.LG cs.PL
Guided Grammar Convergence
形式语法的关联是一个很难的问题,它需要在语言等价(已知是不可判定的)和语法同一(微不足道的)之间取得平衡。在本文中,我们调查这两个极端之间的几个里程碑,并提出了一种方法,在语法工程的不一致性管理。虽然传统的语法收敛是一种依赖于人类专家将差异编码为转换步骤的实用方法,但引导语法收敛是一种适用范围更窄的技术,其通过规范化语法并在它们之间建立结构等价关系来自动推断这种转换步骤。这使我们能够执行一个案例研究,自动推断11个语法(广义上)之间的双向转换相同的人工功能语言:解析器规范与不同的组合子库,定子句语法,具体的语法定义,代数数据类型,元模型,XML模式,对象模型。
2015-03-29 cs.FL cs.PL cs.SE
Proofs as Relational Invariants of Synthesized Execution Grammars
维护无界低层数据结构的程序的自动验证是一个关键和开放的问题。在以前的工作中开发的分析器和验证器可以合成只描述严格限制形式的数据结构的不变量,或者需要分析师提供用于合成正确性证明的程序数据和结构的谓词。在这项工作中,我们介绍了一种新的自动安全验证程序,维护低层次的数据结构,命名为LTTP。LTTP综合了程序安全性的证明,表示为给定程序的控制路径的语法,用不变量注释,这些不变量在其执行路径内的不同点处与程序状态相关。LTTP合成这样的证明完全自动,使用一种新的归纳合成算法。我们已经实现了LTTP作为JVM字节码的验证器,并应用它来验证一组验证基准的安全性。我们的研究结果表明,LTTP可以应用于自动验证超出先前开发的验证程序的范围的程序的安全性。
2017-10-10 cs.PL
Automatic Syntax Error Reporting and Recovery in Parsing Expression Grammars
错误恢复是解析器的一个基本功能,它应该插入集成开发环境(IDE)中,即使对于语法无效的程序,IDE也必须构建抽象树(AST),以便提供自动重构和代码完成等功能。解析表达式语法(Parsing Expressions Grammars,PEG)是一种形式主义,它自然地描述了使用受限形式的回溯的递归自顶向下解析器。标记的失败是PEG的保守扩展,它为PEG解析器添加了错误报告机制,这些标签也可以与恢复表达式相关联,以提供错误恢复机制。这些表达式可以使用PEG的完整表达性来从语法错误中恢复。使用标签和恢复表达式手动注释大型语法可能很困难。在这项工作中,我们提出了两种方法,标准和独特的,自动注释PEG标签,并建立相应的恢复表达式。标准方法以类似于手动注释的方式注释语法,但它可能会错误地插入标签,而唯一方法在注释语法时更加保守,并且不会错误地插入标签。我们评估这两种方法,使用它们来生成错误恢复解析器的四个程序设计语言:泰坦,C,Pascal和Java。在我们的评估中,使用标准方法生成的解析器,在手动干预以删除错误添加的标签后,对每种语言中至少70%的文件进行了可接受的恢复。反过来,通过Unique方法生成的解析器的可接受恢复率在41%到76%之间,而不需要人工干预。
2019-10-01 cs.FL cs.PL
SynCode: LLM Generation with Grammar Augmentation
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);VMware Research(威睿研究院)
SynCode框架通过DFA掩码存储实现基于CFG的语法解码,消除JSON语法错误并减少96.07%的Python/Go语法错误,提升LLM生成精度。
2024-11-06 cs.FL cs.LG cs.PL
Synthesis of Semantic Actions in Attribute Grammars
属性文法允许将语义动作与上下文无关文法中的产生式规则相关联,从而提供了一种简单而有效的形式主义来定义语言的语义。然而,起草语义动作可能很棘手,并且会消耗大量开发人员的时间。在这项工作中,我们提出了一个综合的方法来自动推断的语义动作,从一组的例子关联字符串的含义。我们还提出了一个新的覆盖度量,衍生覆盖。我们使用它来构建一个采样器,以有效地自动绘制字符串来驱动合成引擎。我们建立我们的想法到我们的工具,PANINI,并根据经验评估它的12个基准,包括一个前向差分引擎,一个解释器的Java字节码的一个子集,和一个迷你编译器的C语言到两个地址的代码。我们的研究结果表明,PANINI的规模以及要合成的动作的数量和上下文无关文法的大小,显着优于简单的基线。
2022-08-14 cs.PL
Supporting Meta-model-based Language Evolution and Rapid Prototyping with Automated Grammar Optimization
针对模型驱动工程中DSL演化时语法需反复手动优化的问题,提出GrammarOptimizer方法,通过可配置优化规则目录实现语法自动迭代优化,减少重复工作。
2024-01-30 cs.PL cs.SE
Ezhil: A Tamil Programming Language
University of Texas at Arlington(德克萨斯大学阿灵顿分校)
Ezhil是一种基于泰米尔语的解释过程程序设计语言。选择泰米尔语关键字和语法,使母语为泰米尔语的人在Ezhil系统中编写程序。Ezhil允许更接近泰米尔语言逻辑结构的计算机程序的简单表示,相当于现代英语程序设计语言中的条件,分支和循环语句。Ezhil是一种紧凑的程序设计语言,针对泰米尔语新手计算机用户。这里报告了Ezhil的语法和一些示例程序,这些程序来自使用Python编程语言1的初始概念验证实现。据我们所知,Ezhil语言是第一个免费提供的泰米尔程序设计语言。
2009-07-28 cs.CL cs.PL
Guided Grammar Convergence. Full Case Study Report. Generated by converge::Guided
这份报告是用来作为辅助材料的指导语法收敛技术提出了较早的问题,具体的改进,在收敛的语法的主题。它包含一个叙述的MegaL megamodel,以及在Factorial语言上进行的引导语法收敛实验的完整结果,以及以可读形式打包的每个语法源的详细信息。本文档中使用的所有公式都是由收敛基础设施自动生成的,以避免任何错误。生成器源代码和介绍文本的源代码可以在软件语言处理套件存储库中找到。
2012-07-27 cs.FL cs.PL
Data types as a more ergonomic frontend for Grammar-Guided Genetic Programming
Faculdade de Ciências da Universidade de Lisboa(里斯本大学理学院);Carnegie Mellon University(卡内基梅隆大学);Instituto de Medicina Molecular(分子医学研究所)
遗传编程(GP)是一种探试法,可以应用于许多机器学习、优化和工程问题。特别是在软件工程中,它被广泛用于测试用例生成、程序合成和软件改进。语法引导的遗传编程(GGGP)方法允许用户细化有效的程序解决方案的域。巴科斯范式是GGGP中描述上下文无关文法(CFG)的最流行的接口。BNF及其衍生物的缺点是使程序的语法语言和目标语言交错。我们建议将语法作为内部特定领域语言嵌入到框架的宿主语言中。这种方法具有与BNF和EBNF相同的表达能力,同时使用宿主语言类型系统来利用所有现有的工具:链接器,格式化程序,类型检查器,自动完成和遗留代码支持。这些工具在一般的软件设计中具有实用性,特别是GP系统。我们还提出了元处理程序,用户定义的树生成系统的覆盖。这种技术扩展了我们的面向对象的编码与更多的实用性和表达能力比现有的CFG方法,实现了相同的属性文法的表达能力,但没有语法与目标语言的二重性。此外,我们证明了这种方法是可行的,并展示了一个Python实现示例作为证明。我们还比较了我们的方法对文本BNF表示w.r.t.表现力和人体工程学。这些优势并不以性能为代价,正如我们对PonyGE 2示例实现的5个基准的经验评估所示。我们的结论是,我们的方法具有更好的人体工程学与相同的表达能力和性能的文本BNF为基础的语法编码。
2022-10-10 cs.LG cs.NE cs.PL
Constrained Decoding for Fill-in-the-Middle Code Language Models via Efficient Left and Right Quotienting of Context-Sensitive Grammars
Northeastern University(东北大学);MIT-IBM AI Lab(麻省理工学院-IBM人工智能实验室);AWS AI Labs(亚马逊云科技人工智能实验室)
本文提出一种基于 Earley 解析扩展的左商与右商解析方法,用于在填空式代码生成中尽早拒绝语法错误代码,并在 Python 3 上验证其可显著降低语法错误率。
2024-09-04 cs.LG cs.PL cs.SE
LIDA: A Tool for Automatic Generation of Grammar-Agnostic Visualizations and Infographics using Large Language Models
Microsoft Research(微软研究院)
本文提出 LIDA,将可视化生成建模为多阶段流程,结合 LLM 与 IGM,通过摘要、目标探索、代码生成和信息图模块实现语法无关的可视化及数据故事创作。
2023-06-06 cs.AI cs.HC cs.PL
Natlog: Embedding Logic Programming into the Python Deep-Learning Ecosystem
University of North Texas(北德克萨斯大学)
针对Python与逻辑语言Natlog的共性,设计高层交互模式,使逻辑结构接入Python生态,并应用于JAX/PyTorch编排及GPT3/DALL.E提示生成。
2023-08-30 cs.AI cs.PL
A Model-Driven Parser Generator, from Abstract Syntax Trees to Abstract Syntax Graphs
基于模型的解析器生成器将语言规范与语言处理解耦。模型驱动的方法避免了传统解析器生成器对语言设计者的限制。传统的工具要求所设计的语言语法符合特定解析器生成器(最常见的是LL和LR解析器生成器)所支持的特定类型的语法。模型驱动的解析器生成器,如ModelCC,不需要语法规范,因为语法可以自动从语言模型中导出,并且如果需要,可以进行调整以符合给定类型解析器的要求,所有这些都不会干扰语言及其相关应用程序的概念设计。此外,模型驱动工具(如ModelCC)能够自动解析语言元素之间的引用,因此作为解析过程的结果,生成抽象语法图而不是抽象语法树。这样的图并不局限于有向无环图,它们可以包含循环,因为ModelCC支持前指、后指和递归引用。
2012-02-29 cs.PL
Taming Context-Sensitive Languages with Principled Stateful Parsing
历史上,真正的上下文相关解析很少应用于程序设计语言,这是由于其固有的复杂性。然而,许多主流编程和置标语言(C、Haskell、Python、XML等)都具有上下文敏感特性。这些特征传统上用ad-hoc代码(例如,自定义词法分析器),超出了解析理论的范围。当前的语法形式主义努力表达上下文敏感的功能。大多数解决方案缺乏上下文透明性:它们通过将上下文硬连接到整个语法中,使语法难以编写、维护和组合。相反,我们的方法上下文敏感的解析通过这样的想法,解析器可能会召回以前匹配的输入(或从中派生的数据),以作出解析决策。我们利用可变的解析状态来实现这种形式的召回。我们引入了有原则的状态解析作为一个新的事务性的纪律,使状态变化透明的解析机制,如回溯和memoization。为了加强这一原则,用户使用正式指定的原始状态操作来指定解析器。我们的解决方案是一个名为Autumn的解析库。我们说明我们的解决方案,实现一些实用的上下文敏感的语法功能,如显着的空白处理和命名空间分类。
2016-09-17 cs.PL
AutoParallel: A Python module for automatic parallelization and distributed execution of affine loop nests
程序设计语言、编程模型和框架的最新改进集中在将用户从许多编程问题中抽象出来。其中,最近的编程框架包括更简单的语法,自动存储管理和垃圾回收,这通过库包和易于配置的部署工具简化了代码重用。例如,Python由于其语法的简单性而上升到程序设计语言列表的顶部,同时即使是解释语言也仍然实现了良好的性能。此外,社区还帮助开发了大量的库和模块,并对其进行了调整以获得更好的性能。然而,在阻止用户直接处理分布式和并行计算问题时,仍有改进的空间。本文提出并评估AutoParallel,一个Python模块,自动找到一个适当的基于任务的并行仿射循环嵌套并行执行它们在分布式计算基础设施。这种并行化还可以包括构建数据块以增加任务粒度,以便实现良好的执行性能。此外,AutoParallel基于顺序编程,只包含一个Python装饰器形式的小注释,因此任何编程技能不高的人都可以将应用程序扩展到数百个核心。
2018-10-26 cs.DC cs.PL
Bootstrapping Fuzzers for Compilers of Low-Resource Language Dialects Using Language Models
University of California San Diego(加州大学圣地亚哥分校);Max Planck Institute for Security and Privacy(马克斯·普朗克安全与隐私研究所)
通过语言模型构建编译器低资源语言方言的模糊测试器,利用语法和覆盖引导技术生成种子输入,提升测试效率和覆盖率。
2025-12-05 cs.LG cs.PL cs.SE
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
Inferring Input Grammars from Dynamic Control Flow
程序的特征在于其输入模型,并且形式化输入模型可以用于不同的领域,包括脆弱性分析、逆向工程、模糊和软件测试、克隆检测和重构。不幸的是,典型程序的输入模型通常不可用或过时。虽然存在可以挖掘程序输入的语法结构的算法,但它们要么产生笨拙和难以理解的语法,要么需要针对特定解析模式的语法分析。在本文中,我们提出了一个通用的算法,需要一个程序和一个小的样本输入,并自动推断出一个可读的上下文无关文法捕捉输入语言的程序。我们推断的句法输入结构,只有通过观察在不同位置的输入解析器的输入字符的访问。这适用于所有基于程序堆栈的递归下降输入解析器,包括PEG和解析器组合子,并且可以完全不使用程序特定的语法。我们的Mimid原型为各种评估主题生成了准确可读的语法,包括expr、URLparse和microJSON。
2019-12-12 cs.PL cs.SE
Grammatical Aspects for Language Descriptions
为了工具开发的目的,计算机语言通常使用上下文无关文法来描述,并带有诸如语义动作或漂亮打印指令之类的注释。这些描述由自动构建软件的生成器处理,例如,解析器,漂亮的打印机和编辑支持。在许多情况下,注释使得语法不可读,并且当为支持相同语言的多个工具生成代码时,通常需要复制语法以便为不同的生成器提供不同的注释。我们提出了一种方法来描述语言,提高可读性的语法和减少重复。为了实现这一点,我们使用面向对象的编程原则。这种方法已经在一个名为Grammatic的开源工具中实现。我们将展示如何使用它来生成漂亮的打印机和语法高亮。
2010-01-16 cs.PL cs.SE
Grammar-Aware Literate Generative Mathematical Programming with Compiler-in-the-Loop
Business School, University of Edinburgh(爱丁堡大学商学院);Insight Centre for Data Analytics, University College Cork(科克大学数据分析研究所)
提出 SyntAGM 系统,通过迭代生成-编译-评估-修正循环,利用编译器反馈和 LLM 对齐判断,生成可读的代数建模语言优化模型,实现成本与质量的更优权衡。
2026-05-28 cs.AI cs.PL
Efficient and Accurate Automatic Python Bindings with cppyy & Cling
本文提出基于C++解释器Cling和反射库InterOp的cppyy自动Python绑定方案,解决静态C++与动态Python间的阻抗失配问题,无需库作者支持即可在运行时延迟构建绑定,性能优于PyBind11,并探索了跨语言优化与上游LLVM组件重构路径。
2023-04-05 cs.PL
Towards an Automatic Consolidation of French Law
CRC, Mines Paris, PSL University(巴黎国立高等矿业学院CRC实验室,巴黎文理研究大学)
我们目前的初步结果约Legistix,我们正在开发的工具,以自动巩固法国和欧洲的法律。Legistix基于几种复合语法中使用的正则表达式,类似于编译器的连续传递,以及一种新的函数类型的专用语言,允许描述应用于文本的更改。Legistix不是在每个修改日期手动创建文本的完整合并版本,而是从以自然语言编写的法律文件自动生成程序,以自动创建合并版本。
2023-01-16 cs.CL cs.IR cs.PL
Doc2Spec: Synthesizing Formal Programming Specifications from Natural Language via Grammar Induction
The Pennsylvania State University(宾夕法尼亚州立大学);University of the Chinese Academy of Sciences(中国科学院大学);Institute of Computing Technology, Chinese Academy of Sciences(中国科学院计算技术研究所)
Doc2Spec通过语法归纳自动从自然语言生成形式化编程规范,提升了规范生成的可靠性和质量。
2026-10-08 cs.AI cs.PL cs.SE
Practical LR Parser Generation
解析是现代编译器中的一个基本构建块,对于工业程序设计语言来说,它是一个令人惊讶的复杂任务。存在自动生成解析器的已知方法,但是普遍的共识是自动解析器生成对于真正的程序设计语言是不实际的:LR/LALR解析器被认为在它们支持的语法方面限制太多,并且LR解析器在实践中通常被认为效率太低。因此,几乎所有现代语言都使用手工编写的递归下降解析器,这是一个冗长且容易出错的过程,大大增加了新程序设计语言开发的障碍。在这项工作中,我们证明,相反的普遍共识,我们可以有两全其美:一个非常普遍的,实用的类的语法-一个严格的超集克努特的规范LR -我们可以自动生成解析器,并由此产生的解析器代码,以及生成过程本身,是非常有效的。这一进展依赖于几个新的想法,包括新的自动机优化程序;一个新的语法转换(“CPS”);每符号属性;递归下降动作;和规范LR解析的扩展,我们称之为XLR,它赋予移位/归约解析器有界非确定性选择的能力。有了这些成分,我们可以为几乎所有的程序设计语言自动生成高效的解析器,这些语言直观上很容易解析--我们通过在一个名为langcc的新软件工具中实现新算法,并在Golang 1.17.8和Python 3.9.12的语法规范上运行它们来实验性地支持这一说法。该工具自动处理这两种语言,并且生成的代码在标准代码库上运行时,分别比Golang的相应手写解析器快1.2倍,比CPython解析器快4.3倍。
2022-09-17 cs.FL cs.PL
Syntax Repair as Language Intersection
研究语法修复问题,将其形式化为上下文无关语言与无环莱文斯坦自动机的交集,利用经典构造并专门针对无环自动机得到并行决策过程,通过布罗佐夫斯基导数支持增量枚举,实验证明该方法能提高Python语法修复准确性。
2026-07-14 cs.FL cs.PL
Does Python Smell Like Java? Tool Support for Design Defect Discovery in Python
这项工作的背景是规范,检测和最终删除源代码中与软件设计和实现中的缺陷相关的可检测有害模式。特别是,我们调查了五个代码气味和四个以前在论文和书籍中定义的反模式。我们的调查是关于检测那些在Python程序设计语言编写的源代码,这是从所有以前的研究,其中大部分涉及Java或C类语言有很大的不同。我们的方法是软件工程师的方法:我们处理了关于这个主题的现有研究文献,提取了九个设计缺陷的抽象定义及其具体的实现规范,在我们编写的工具中实现了它们,并将其释放在从数千个GitHub项目的开源代码中获得的巨大测试集上。当涉及到知识时,我们发现Python中被认为太长的方法是Java中的两倍多(从统计学上看,比同一项目中的相邻方法要长得多),但在Python代码中发现长参数列表的可能性是Java代码的七倍。我们还发现,函数分解(Functional Decomposition)在Java中的定义方式,在Python代码中根本找不到,意大利面条代码和上帝类也非常罕见。这些结果的基础和信心来自于我们在32'058'823行Python代码上进行的实验,这是迄今为止免费提供的Python解析器的最大测试集。我们还设计了这样一种方式,它与以前的研究在Java中的设计缺陷检测,以方便比较,如果我们把我们自己的行动作为一个复制对齐的实验。因此,这项工作的重要性在于它独特的、最高质量的开放式Python语法,经过数百…
2017-03-31 cs.PL cs.SE
Default Disambiguation for Online Parsers
由于组合语法通常是二义性的,语法组合需要一种处理二义性的机制:要么通过使用分隔符(这很难处理)来排除二义性,要么通过使用消歧运算符将解析森林过滤到单个解析树(通常,我们不能确保我们已经覆盖了所有可能的解析森林)。在本文中,我们表明,默认的消歧,这是不适当的批处理解析,以及在线解析,如果需要的话,它可以被用户覆盖。我们扩展语言框-基于定界符的算法之上增量解析-在这样一种方式,默认消歧可以自动插入,删除,或调整大小,语言框,导致自动语言框算法。问题的本质意味着默认消歧并不总是符合用户的意图。然而,我们的实验评估表明,自动语言框的行为可以接受的98.8%的测试,涉及现实世界的程序设计语言的组合物。
2020-07-02 cs.PL
Generating Inputs for Grammar Mining using Dynamic Symbolic Execution
本工作提出一种基于动态符号执行的全自动输入生成方法,用于语法挖掘,通过迭代扩展和三阶段生成,无需先验输入样本即可高精度提取语法并发现边界情况。
2025-08-05 cs.PL
Python Symbolic Execution with LLM-powered Code Generation
本文提出 LLM-Sym 智能体,通过类型推断、检索与自我精化流水线将 Python 复杂路径约束转换为 Z3 代码,使入门级符号执行引擎可处理含 list 和复杂控制流的程序。
2024-09-14 cs.PL cs.SE