Python有没有标准的词法分析器/解析器工具?
有一个志愿者工作需要我们把很多LaTeX文档转换成ePub文件格式。这些文档是一些开源的小说,目前只通过按需印刷的方式制作成纸质书。我们希望能把这些书提供给使用电子书阅读器(比如Kindle)的用户,而这些设备最好使用ePub格式。
幸运的是,ePub格式非常简单,但LaTeX生成所需的XHTML输出并不是一件容易的事。
我们尝试了其他的LaTeX编译器(比如plastex),但最后我们觉得,自己写一个能理解LaTeX语言小部分的编译器,直接生成XHTML/ePub,可能会更简单。
之前我在Windows上用过一个叫GOLD的工具。这个工具让我可以直接从BNF语法生成一个简单的解析器,并且可以用我喜欢的任何语言来实现这个解析器(我会选择Python)。
这个项目需要在Linux上运行,所以我想知道在Ubuntu/Eclipse/Python下有没有类似的工具链。我们的想法是使用TeX的语法,只实现其中的一小部分,但我们不想花太多时间去担心语法和解析的问题。一个解析器生成器显然能为我们节省很多时间。
Sal
更新1:如果有带有优秀文档或教程的解决方案,会加分。
更新2:如果已经有TeX的语法文件,那就更好了,因为那样我只需要实现我们关心的功能。
3 个回答
我曾经使用过 tex4ht 这个工具,把LaTeX转换成XHTML和MathML。效果还不错。这样一来,你就可以把生成的HTML作为ePub的基础了。
不过,这样做会影响到Python的工具链,所以这可能不会成为你最喜欢的方法……
试试 PLY 这个工具。
试试pyparsing这个工具。
在这个链接上,搜索“TeX”。那里有一个项目,使用pyparsing来解析TeX语法的一部分。
关于文档,我推荐pyparsing的作者写的电子书“Getting started with pyparsing”。
编辑:根据PaulMcG的说法,Pyparsing现在不再在wikispaces.com上了。请访问新的GitHub网站。