#解析器

2021-4-6 23:8
解析器组合器是解析的最有用工具之一。与正则表达式相比,它们更具可读性和可维护性,使其成为更复杂任务的绝佳选择。 本文有两部分。首先,我解释了解析器组合者如何工作以及它们所做的。之后,我将通过在Elixir编写的解析器组合库库中使用nimbleparsec进行CSV解析器来指导您完成CSV解析器。 在这一部分中......
2021-3-11 6:10
在本文中,我们将探索解析器组合器是什么,运行时解析器生成是 - 为什么它们有用,然后通过Zig实现。 解析器组合器是一个高阶函数,它将解析器作为输入,并生成一个新的解析器作为输出: 假设我们想解析描述正则表达式的语法:[bc]。* abc 我们可以定义一些解析器,以帮助我们解析此语法(例如,进入令牌......
Applicative Parsing(jobjo.github.io)
2021-3-2 2:12
解析器组合器是用于以可组合方式构建解析器的功能集。 Haskell的Parsec库和OCaml的Angstrom是两个示例。这两个库都公开了用于描述上下文相关语法的monadic接口。这篇文章着眼于实现一个更受限制的解析库,该解析库是围绕applicativefunctors而不是monads构造的。 有什么理由可......
2020-12-4 20:35
已经满足的要求:/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages中的google-auth< 2.0dev,> = 1.21.1(来自google-api-core [grpc] < 2.0.0dev,> = 1......
2020-11-26 6:52
自从我开始处理样式化组件以来,我一直对解析器着迷。第一次为Webpack或Babel编写插件感觉就像是纯粹的魔术,尤其是如果该插件不只是出于兼容性原因而传递一些可移植的代码或添加一些元数据,而是生成了全新的编码器或启用了无法在运行时实现的功能时,仅代码。 这些天来,JavaScript开发人员解析器无处不在。当我们......
The Lezer Parser System(lezer.codemirror.net)
2020-10-22 3:37
60多年来,结构化文本的解析问题一直在抵制“一刀切”的解决方案。Lezer也不是这样的解决方案,但它是一个非常不错的解析器生成器,特别适合在代码编辑器中使用。 Lezer(荷兰语中的读取器,发音类似于“LASSER”)提供了一个解析器生成器,该生成器输出JavaScript模块,可以加载这些模块将代码解析到非抽象语法......
How the CPython compiler works(tenthousandmeters.com)
2020-9-24 17:31
在本系列的第一篇文章中,我们介绍了CPython VM。我们已经了解到它是通过执行一系列称为字节码的指令来工作的。我们还看到,Python字节码不足以完全描述一段代码的功能。这就是存在代码对象概念的原因。执行诸如模块或函数的代码块意味着执行相应的代码对象。代码对象包含块的字节码、常量和块中使用的变量名称以及块的各种属......
Making a Pratt Parser Generator(www.robertjacobson.dev)
2020-9-19 5:59
编程语言解析器的历史主要是解析表达式的棘手挑战,特别是数学表达式,考虑到表达式中运算符的优先顺序。现代形式语言理论始于20世纪50年代诺姆·乔姆斯基(Noam Chomsky)的工作,乔姆斯基在其中为语言学建立了一个数学框架。在这个数学框架下,语言存在于根据语言的难解析性定义的语言世系中。但是计算机程序员需要实用、高......
2020-9-2 11:27
Lex Match Number/[0-9]+(?:\.[0-9]+)?/Match plus';+';Match减去';--';Match Time';*';Match DIV';/';Match POPEN';(';Match PCLOSE';)&......
2020-8-17 3:1
随着新冠肺炎疫情继续肆虐全球,许多人都呆在家里,要么远程工作,要么无所事事地坐着。前一天下午,我无意中看到一则在线公告,称ACM数字图书馆已向所有人免费开放,供所有人阅读和下载,以帮助在这一危机时期促进研究、发现和学习。我感到好奇,而且之前曾想阅读ACM DL的某些研究论文,于是利用这个机会仔细阅读了它的图书馆,并尽......
2020-7-16 4:33
抽象语法错误对于人类来说通常很容易修复,但不适用于一般的解析器,也不适用于特定的LR解析器。传统的“恐慌模式”错误恢复,虽然易于实现且适用于任何语法,但通常会导致一系列错误,从而淹没了原始错误。更先进的错误恢复技术受到这个问题的影响较小,但几乎没有实际用途,因为它们的典型性能被认为很差,其最坏情况是无界的,并且它们报......
2020-7-5 20:54
PermalLink GitHub是5000多万开发人员的家园,他们一起工作,共同托管和审查代码、管理项目和构建软件。 报名。 我做了一个梦。我将编写一个快速的JSON解析器、泛型数据和JSONPath实现,它将非常漂亮、组织良好,并且值得钦佩。嗯,现实开始发挥作用,嘲笑那些流言蜚语。Go JSON解析器和工具可能具......
2020-5-29 10:51
作为我在Haskell取得进展的持续努力的一部分(这是我2016年的目标之一!),我在edX上关注Erik Meijer的函数式编程MOOC。 第一堂课是非常基础的东西,我很快就学完了。第7课是关于函数解析器和M*(可怕的)。这就是我第一次遇到困难的地方,我想这会是一篇有趣的文章。我以前已经在Haskell中使用过解......
Replacing CPython’s Parser(pyfound.blogspot.com)
2020-5-10 13:41
从一开始,Python的语法就是LL(1):它只需要一个从左到右的解析器,向前看一个标记来解决歧义。标准CPython解析器是由一个简单的自定义解析器生成器生成的。然而,这种简单性是有代价的。首先,官方的Python语法文件没有准确捕获语言。语法允许无效的构造,例如,这个赋值表达式(使用new walrus运算符):......