【问题标题】:Which Wiki Parser?哪个维基解析器?
【发布时间】:2010-10-07 16:27:47
【问题描述】:

有没有人知道可以将 Wiki 格式的文本作为输入并生成实体树的解析器,就像 XML 解析器生成实体树一样?澄清一下,我正在寻找类似以下文字的内容:

 -Intro-
 Textual stuff in ''italics''
 --Subhead--
 Yet more text

并生成一个以 Intro 为根的树,该树具有三个子节点,其中一个(子标题)本身有一个子节点。我正在寻找可以理解http://meta.wikimedia.org/wiki/Help:Wikitext 中描述的“简单”wiki 格式的东西。

我知道有几个用于 Wiki 文本的词法分析器,但没有树解析器。我正在寻找开源并用 C 或 C++ 编写的东西。

【问题讨论】:

    标签: c++ c wiki mediawiki parsing


    【解决方案1】:

    您不能直接从 wiki 格式的页面执行此操作,因为 wiki 格式没有完整的信息。相反,wiki 格式的文本基本上由一堆正则表达式规则翻译,并插入到 HTML 或 XHTML 的预定义页面框架中。

    最简单的方法是为一些轻量级文本格式(如纺织品或克里奥尔语)找到合适的格式化程序,将其传递给生成 XHTML,然后使用任何常规解析器解析 XHTML。

    【讨论】:

      【解决方案2】:

      我会做的是

      1. 为该 Wiki 语言编写 BNF 语法。因为它很简单,所以 BNF 也很简单。
      2. 使用The Spirit Framework 为其创建解析器。它真的很简单(对于那些简单的事情),BNF 语法被翻译成 C++ 很自然。

      【讨论】:

        【解决方案3】:

        我编写了一个解析器,它在 Java 内部创建了这样一个树: Java Wikipedia API

        也许您可以为您的 C 或 C++ 实现获得一些想法?

        HTMLConverter class 采用内部节点树将其转换为 HTML 标记。

        【讨论】:

          【解决方案4】:

          您可能想看看Mylyn WikiText,它是一个使用Builder 设计模式将wiki 标记转换为各种XML 格式的解析器。它附带了用于 HTML、Eclipse 帮助、DITA 和 DocBook 的构建器。您可以使用自己的构建器来自定义输出。

          解析器可以处理 Textile、MediaWiki、TracWiki、TWiki 和 Confluence 标记。它是可扩展的,因此您可以根据需要添加新的语言。

          库是Java

          【讨论】:

            【解决方案5】:

            您可能会从这个 Perl 模块中得到一些想法:

            http://search.cpan.org/dist/HTML-WikiConverter-MediaWiki/

            我知道您正在寻找 C/C++,但是,嘿,您可能会得到一些好处。

            【讨论】:

              猜你喜欢
              • 2011-08-22
              • 2011-04-22
              • 1970-01-01
              • 1970-01-01
              • 2011-12-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-06-14
              相关资源
              最近更新 更多