Skip to main content
CenXiv.org
此网站处于试运行阶段,支持我们!
我们衷心感谢所有贡献者的支持。
贡献
赞助
cenxiv logo > cs > arXiv:2507.03629

帮助 | 高级搜索

计算机科学 > 编程语言

arXiv:2507.03629 (cs)
[提交于 2025年7月4日 ]

标题: 面向解析表达式的自动错误恢复

标题: Towards Automatic Error Recovery in Parsing Expression

Authors:Sérgio Queiroz de Medeiros, Fabio Mascarenhas
摘要: 错误恢复是解析器的一个关键功能,应嵌入集成开发环境(IDEs),这些环境必须即使对于语法无效的程序也要构建抽象语法树(ASTs),以提供诸如自动重构和代码补全等功能。解析表达式文法(PEGs)是一种形式化方法,它使用一种限制性的回溯形式自然地描述递归的自顶向下解析器。标记失败是对PEGs的保守扩展,它为PEG解析器添加了一个错误报告机制,这些标签也可以与恢复表达式相关联,从而也成为一种错误恢复机制。这些表达式可以利用PEGs的全部表达能力来从语法错误中恢复。手动为大型语法添加标签和恢复表达式可能很困难。在本工作中,我们提出了一种算法,该算法可以自动为PEG添加标签,并构建其对应的恢复表达式。我们通过将错误恢复添加到Titan编程语言的解析器来评估该算法。结果表明,通过少量的人工干预,我们的算法可以用于生成错误恢复解析器,其中大部分替代项是不相交的。
摘要: Error recovery is an essential feature for a parser that should be plugged in Integrated Development Environments (IDEs), which must build Abstract Syntax Trees (ASTs) even for syntactically invalid programs in order to offer features such as automated refactoring and code completion. Parsing Expressions Grammars (PEGs) are a formalism that naturally describes recursive top-down parsers using a restricted form of backtracking. Labeled failures are a conservative extension of PEGs that adds an error reporting mechanism for PEG parsers, and these labels can also be associated with recovery expressions to also be an error recovery mechanism. These expressions can use the full expressivity of PEGs to recover from syntactic errors. Manually annotating a large grammar with labels and recovery expressions can be difficult. In this work, we present an algorithm that automatically annotates a PEG with labels, and builds their corresponding recovery expressions. We evaluate this algorithm by adding error recovery to the parser of the Titan programming language. The results shown that with a small amount of manual intervention our algorithm can be used to produce error recovering parsers for PEGs where most of the alternatives are disjoint.
评论: arXiv管理员注释:与arXiv:1905.02145存在大量文本重叠
主题: 编程语言 (cs.PL) ; 形式语言与自动机理论 (cs.FL)
ACM 类: F.4.3; D.3.1; D.3.4
引用方式: arXiv:2507.03629 [cs.PL]
  (或者 arXiv:2507.03629v1 [cs.PL] 对于此版本)
  https://doi.org/10.48550/arXiv.2507.03629
通过 DataCite 发表的 arXiv DOI(待注册)
相关 DOI: https://doi.org/10.1145/3264637.3264638
链接到相关资源的 DOI

提交历史

来自: Sérgio Medeiros [查看电子邮件]
[v1] 星期五, 2025 年 7 月 4 日 14:53:00 UTC (26 KB)
全文链接:

获取论文:

    查看标题为《》的 PDF
  • 查看中文 PDF
  • 查看 PDF
  • HTML(实验性)
  • TeX 源代码
  • 其他格式
许可图标 查看许可
当前浏览上下文:
cs.PL
< 上一篇   |   下一篇 >
新的 | 最近的 | 2025-07
切换浏览方式为:
cs
cs.FL

参考文献与引用

  • NASA ADS
  • 谷歌学术搜索
  • 语义学者
a 导出 BibTeX 引用 加载中...

BibTeX 格式的引用

×
数据由提供:

收藏

BibSonomy logo Reddit logo

文献和引用工具

文献资源探索 (什么是资源探索?)
连接的论文 (什么是连接的论文?)
Litmaps (什么是 Litmaps?)
scite 智能引用 (什么是智能引用?)

与本文相关的代码,数据和媒体

alphaXiv (什么是 alphaXiv?)
CatalyzeX 代码查找器 (什么是 CatalyzeX?)
DagsHub (什么是 DagsHub?)
Gotit.pub (什么是 GotitPub?)
Hugging Face (什么是 Huggingface?)
带有代码的论文 (什么是带有代码的论文?)
ScienceCast (什么是 ScienceCast?)

演示

复制 (什么是复制?)
Hugging Face Spaces (什么是 Spaces?)
TXYZ.AI (什么是 TXYZ.AI?)

推荐器和搜索工具

影响之花 (什么是影响之花?)
核心推荐器 (什么是核心?)
IArxiv 推荐器 (什么是 IArxiv?)
  • 作者
  • 地点
  • 机构
  • 主题

arXivLabs:与社区合作伙伴的实验项目

arXivLabs 是一个框架,允许合作伙伴直接在我们的网站上开发和分享新的 arXiv 特性。

与 arXivLabs 合作的个人和组织都接受了我们的价值观,即开放、社区、卓越和用户数据隐私。arXiv 承诺这些价值观,并且只与遵守这些价值观的合作伙伴合作。

有一个为 arXiv 社区增加价值的项目想法吗? 了解更多关于 arXivLabs 的信息.

这篇论文的哪些作者是支持者? | 禁用 MathJax (什么是 MathJax?)
  • 关于
  • 帮助
  • contact arXivClick here to contact arXiv 联系
  • 订阅 arXiv 邮件列表点击这里订阅 订阅
  • 版权
  • 隐私政策
  • 网络无障碍帮助
  • arXiv 运营状态
    通过...获取状态通知 email 或者 slack

京ICP备2025123034号