【问题标题】:parsing xpath expressions解析 xpath 表达式
【发布时间】:2011-06-28 21:02:07
【问题描述】:

我想解析 XPath 表达式 我正在寻找 C++ 或 Python 中的词法分析器/解析器实现

这是我设法收集的有关 XPath 解析器的所有信息:

有人知道其他实现吗?在 C++ 中?

PS : 我不想评估 XPath 表达式,而是将它们标记化

【问题讨论】:

  • 您想要一种能够对 XPath 表达式进行词法分析/解析的解决方案,还是一种针对特定 XML 文档评估它们的解决方案?
  • @robert :我不想评估 XPath 表达式,只是将它们标记化。所以是的,我想要一个 lexes/parses XPath 表达式的解决方案
  • 首先你说“只是标记化”,然后你立即说“lexes/parses”。这些是非常不同的要求。我不清楚您是否清楚地了解自己的要求。您究竟想对 XPath 信息做什么?为什么?
  • @IraBaxter :你是对的,我不太清楚。我不想评估 XML 文档上的 XPath 表达式。我想将 xpath 表达式表示为抽象语法树(就像我用于算术表达式的树表示)以便操作它们。我可以使用 XPath 语法并编写自己的解析器。但在重新发明轮子之前,我只想知道是否有人已经完成了这项工作:) 我正在研究 XPath 查询的重写和等效性。
  • @Patrick:如果你想做“重写”,你需要的不仅仅是标记化。您需要一个完整的解析器来构建 AST。理想情况下,您还可以使用其他机器来帮助您进行重写,否则您将花费​​大量工作来构建 。

标签: c++ python parsing xpath lexer


【解决方案1】:

根据 OP 的评论,

我正在研究 XPath 查询的重写和等效性

他需要的是一个构建抽象语法树的解析器,以及分析这些树并对其进行转换的方法。然后可以通过遍历/修改 AST 程序化地完成分析器和“重写”;这是传统的做法。

但似乎重点应该是 OP 的目标。为此,他需要分析和重写。但这不必完全以传统的程序方式完成。相反,如果分析/重写可以直接使用 XPath 表示法完成,那就太好了。

我建议他查看我们的DMS Software Reengineering Toolkit,它解析、构建 AST,但特别是能够使用表面语法在 AST 上“重写”。然后 XPath “重写”可以直接写为 XPath 表达式的等价。可以将其工作原理的一个激励示例视为Rewriting algebra equations using DMS。从该示例中可以明显看出,XPath 的语法很容易定义。

【讨论】:

  • 将 XPath 表达式转换为 XML 意味着首先解析 XPath 表达式...!
【解决方案2】:

【讨论】:

  • 我同意在 XQilla 这样的 xquery/xslt 引擎中有一个 xpath 解析器/词法分析器。但我只需要解析器,不需要整个引擎。
【解决方案3】:

Xerces 有一个分支 xalan-c 来执行此操作:

http://xml.apache.org/xalan-c/overview.html

【讨论】:

  • 我同意在像 Xerces 这样的 xquery/xslt 引擎中有一个 xpath 解析器/词法分析器。但我只需要解析器,而不是整个引擎。我想要一个简单的 API 来标记一系列位置步骤中的 XPath 查询
猜你喜欢
  • 2010-10-05
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多