哪种维基解析器最好?

6

有没有人知道一个解析器可以将维基格式的文本作为输入,并生成一个实体树,就像XML解析器生成实体树一样?为了澄清,我正在寻找的是可以处理以下文本的工具:

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

我希望能够创建一个以Intro为根的树,有三个子节点中的一个(Subhead)本身就有一个子节点。我正在寻找一些能够理解“简单”的wiki格式的工具,这个格式描述在http://meta.wikimedia.org/wiki/Help:Wikitext上。

我知道有几种用于Wiki文本的词法分析器,但没有树形分析器。我正在寻找一些开源的、用C或C++编写的工具。

5个回答

2

直接从维基格式的页面中进行翻译是不可能的,因为维基格式缺乏完整信息。相反,维基格式文本通过一系列正则表达式规则进行翻译,并插入到预定义的HTML或XHTML页面框架中。

想要实现您想要的操作最简单的方法是找到适合一些轻量级文本格式(如纺织品或Creole)的格式化程序,将其传递给生成XHTML,并使用任何常规解析器解析XHTML。


2

我的建议是

  1. 为该维基语言编写BNF语法。由于它很简单,所以BNF也将很简单。
  2. 使用Spirit框架创建一个解析器。对于这些简单的事情来说,它真的很简单,并且BNF语法自然地转换成C++。

2
我已经编写了一个解析器,它在Java中内部创建了这样一棵树: Java Wikipedia API 也许你可以从中得到一些关于C或C++实现的想法?
HTMLConverter类接受内部节点树以将其转换为HTML标记。 HTMLConverter类

2
您可能想要查看Mylyn WikiText,它是一个解析器,使用生成器设计模式将维基标记转换为各种XML格式。它附带了HTML、Eclipse Help、DITA和DocBook的生成器。您可以使用自己的生成器来自定义输出。
该解析器可以处理Textile、MediaWiki、TracWiki、TWiki和Confluence标记。它是可扩展的,因此您可以添加新的语言。
该库是Java编写的。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接