问题标签 [pyparsing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1537 浏览

java - Java中是否有类似于pyparsing的库?

我需要为 Java 中类似 html 的标记语言的非常简化版本快速构建解析器。在 python 中,我会使用 pyparsing 库来做到这一点。Java有类似的东西吗?请不要建议已经存在用于 html 解析的库,我的应用程序是一项学校作业,它将演示如何使用访问者模式遍历对象树并序列化为文本,所以我在这里没有考虑现实世界的术语。基本上我需要的只是标签、属性和文本节点。

0 投票
3 回答
1719 浏览

python - 在使用 pyparsing 制作递归解析器时需要帮助

我正在尝试使用 python pyparsing 进行解析。我在制作递归解析器时遇到了困难。

让我解释一下问题

我想制作元素的笛卡尔积。语法是

我以更具体的方式

所以一般形式是第一组将有n个元素(a,b,c,d)。第二组将有一个元素,因此最终输出将是笛卡尔积。

语法是递归的,因为它可以像

这意味着将 a、b 与 c1 交叉。让我们说结果我们y。我们再次将它与 c2 交叉

这可以直到 n 级 cross(cross(cross(cross......

我想要的是使用 setparseAction 初始化对象

所以我会有2节课

我需要帮助,我无法制作递归解析器。

0 投票
2 回答
380 浏览

python - 如何在 Google App Engine 上设置 PyParsing?

我在 Google App Engine 文档上看到http://www.antlr.org/ Antlr3 被用作解析第三方库。

但据我所知,Pyparsing 似乎更容易使用,我的目标只是解析一些简单的语法。

有替代方案吗?我可以在 App Engine 上使用 pyparsing 吗?

0 投票
4 回答
9987 浏览

python - PyParsing 中的简单递归下降

我已经尝试使用此代码并将其转换为我正在从事的用于编程语言处理的项目,但我遇到了简化版本的问题:

我已经对这个简单的设置进行了许多不同的修改。通常,尝试类似:

将返回['1']。当我陷入深度递归时,例如:

关于我无法解析任意算术表达式的简单递归,我缺少什么,例如1+(2 * 3-(4*(5+6)-(7))...

0 投票
2 回答
1294 浏览

python - PyParsing 简单的语言表达式

我正在尝试编写一些可以解析一些代码的东西。我能够成功解析foo(spam)and spam+eggs,但是foo(spam+eggs)(递归下降?我的编译器术语有点生疏)失败了。

我有以下代码:

0 投票
5 回答
53620 浏览

python - 用 Python 解析 SQL

我想在非关系数据存储之上创建一个 SQL 接口。非关系数据存储,但以关系方式访问数据是有意义的。

我正在研究使用ANTLR来生成将 SQL 表示为关系代数表达式的 AST。然后通过评估/遍历树返回数据。

我以前从未实现过解析器,因此我想要一些关于如何最好地实现 SQL 解析器和求值器的建议。

  • 上面描述的方法听起来对吗?
  • 还有其他我应该研究的工具/库吗?像PLYPyparsing
  • 对我有帮助的文章、书籍或源代码的指针表示赞赏。

更新:

我使用 pyparsing 实现了一个简单的 SQL 解析器。结合对我的数据存储实现关系操作的 Python 代码,这相当简单。

正如我在其中一条评论中所说,练习的重点是让数据可供报告引擎使用。为此,我可能需要实现一个 ODBC 驱动程序。这可能是很多工作。

0 投票
3 回答
664 浏览

.net - .NET 中最接近 pyparsing 的东西是什么?

我特别感兴趣的是能够将代码中的语法定义为普通代码而没有任何不必要的麻烦。

我知道我可以使用 IronPython。我不想。

更新:

为了进一步解释我在寻找什么,我包含了一些示例 pyparsing 代码。这是一个不完整的解析器,用于将 emacs 快捷键转换为更传统的符号。当然,这个例子足够小,字符串函数就足够了,但这只是为了展示 pyparsing 的简洁性。

我希望能够在 .NET 中轻松地用几行代码编写语法。

0 投票
2 回答
2242 浏览

python - pyparsing - 加载 ABNF?

pyparsing 可以从文件中读取 ABNF 而不必根据 python 对象来定义它吗?

如果没有,是否有类似的方法(将 ABNF 文件加载到解析器对象中)

0 投票
1 回答
3677 浏览

python - 如何使用 pyparsing 解析缩进和缩进?

这是 Python 语法的一个子集:

(您可以在 Python SVN 存储库中阅读完整的语法:http: //svn.python.org/.../Grammar

我正在尝试使用此语法在 Python 中为 Python 生成解析器。我遇到的麻烦是如何将INDENTandDEDENT标记表示为 pyparsing 对象。

这是我实现其他终端的方式:

terminal_action是一个根据其参数返回相应解析操作的函数。

我知道pyparsing.indentedBlock辅助函数,但我不知道如何在没有PEER令牌的情况下将其应用于语法。

(查看pyparsing 源代码,看看我在说什么)

你可以在这里看到我的完整源代码:http: //pastebin.ca/1609860

0 投票
2 回答
2800 浏览

python - 使用 pyparsing 解析多行的单词转义拆分

我正在尝试使用pyparsing解析可以使用反斜杠换行符组合(“ \\n”)分成多行的单词。这是我所做的:

我得到的输出是['super'],而预期的输出是['super', 'cali', fragi', 'listic']。更好的是它们都作为一个词加入(我想我可以用multi_line_word.parseAction(lambda t: ''.join(t)).

我尝试在pyparsing helper中查看此代码,但它给了我一个错误,maximum recursion depth exceeded.

编辑 2009-11-15:我后来意识到 pyparsing 在空白方面有点慷慨,这导致了一些糟糕的假设,即我认为我正在解析的内容要宽松得多。也就是说,我们希望在单词、转义符和 EOL 字符的任何部分之间没有空格。

我意识到上面的小示例字符串作为测试用例是不够的,所以我编写了以下单元测试。通过这些测试的代码应该能够匹配我直觉上认为的转义拆分词——而且只是一个转义拆分词。它们不会匹配没有转义拆分的基本单词。我们可以——我相信应该——为此使用不同的语法结构。这使两者分开时保持整洁。