有没有人知道可以将Wiki格式的文本作为输入并生成实体树的解析器,就像XML解析器生成实体树一样?为了澄清,我正在寻找能够采用以下文字的内容:
-Intro-
Textual stuff in ''italics''
--Subhead--
Yet more text
并生成一个以Intro为根的树,其中包含三个子节点,其中一个子节点(Subhead)本身有一个子节点。我正在寻找能够理解http://meta.wikimedia.org/wiki/Help:Wikitext中描述的“简单”wiki格式的东西。
我知道Wiki文本的几个词法分析器,但没有树解析器。我正在寻找开源的东西,用C或C ++编写。
答案 0 :(得分:2)
您不能直接从wiki格式的页面执行此操作,因为Wiki格式没有完整的信息。相反,维基格式文本基本上由一堆正则表达式规则翻译,并插入到HTML或XHTML中的预定义页面框架中。
执行所需操作的最简单方法是为某些轻量级文本格式(如纺织品或克里奥尔语)找到合适的格式化程序,将其传递给生成XHTML,然后使用任何常规解析器解析XHTML。
答案 1 :(得分:2)
我会做的是
答案 2 :(得分:2)
我编写了一个解析器,它在Java内部创建了这样一个树: Java Wikipedia API
也许你可以为你的C或C ++实现提供一些想法?
HTMLConverter class将内部节点树转换为HTML标记。
答案 3 :(得分:2)
您可能需要查看Mylyn WikiText,它是一个使用Builder设计模式将wiki标记转换为各种XML格式的解析器。它附带了HTML,Eclipse Help,DITA和DocBook的构建器。您可以使用自己的构建器来自定义输出。
解析器可以处理Textile,MediaWiki,TracWiki,TWiki和Confluence标记。它是可扩展的,因此您可以根据需要添加新语言。
libary是Java
答案 4 :(得分:1)
您可以从Perl模块中获得一些想法:
http://search.cpan.org/dist/HTML-WikiConverter-MediaWiki/
我知道你在寻找C / C ++,但是嘿,你可能会得到一些善意。
答案 5 :(得分:0)
Wiki Parser完全满足您的需求:它将媒体wiki语法转换为常规XML。它保留了几乎所有页面结构并处理模板,图像库,重定向等。
它比其他解析器快了几个数量级,花了大约2-3个小时来解析当前英语维基百科的所有55 GB。