我需要为 Java 中类似 html 的标记语言的非常简化版本快速构建解析器。在 python 中,我会使用 pyparsing 库来做到这一点。Java有类似的东西吗?请不要建议已经存在用于 html 解析的库,我的应用程序是一项学校作业,它将演示如何使用访问者模式遍历对象树并序列化为文本,所以我在这里没有考虑现实世界的术语。基本上我需要的只是标签、属性和文本节点。
5 回答
另一个好的解析器生成器是ANTLR,这可能是您正在寻找的。
对您的使用来说可能有点过分,但javacc是一个出色的工业级解析器生成器。我已经多次使用这个程序/库,它可靠且值得学习,特别是如果您要使用语言和编译器。以下是来自上述网站的程序描述:
Java Compiler Compiler [tm] (JavaCC [tm]) 是用于 Java [tm] 应用程序的最流行的解析器生成器。解析器生成器是一种读取语法规范并将其转换为可以识别与语法匹配的 Java 程序的工具。除了解析器生成器本身之外,JavaCC 还提供与解析器生成相关的其他标准功能,例如树构建(通过 JavaCC 附带的名为 JJTree 的工具)、操作、调试等。
在 Java 中快速搜索解析器生成器会产生JParsec。我从未使用过它——但它的灵感来自 Haskell 库,所以根据定义它一定很好:-)
我喜欢 JParsec(感谢 Torsten,我刚刚发现它),因为它不会生成代码... :-) 也许效率较低,但对于小型任务来说已经足够了。
我找到了一个类似的库JTopas。
Java Source中有一个很好的解析器列表(无论是否生成器)。
java中的字符串处理有很多选择。也许非常基础的java.util.Scanner
课程java.util.StringTokenizer
对您有帮助?
另一个不错的选择可能是the org.apache.commons.lang.text
图书馆。
http://commons.apache.org/lang/apidocs/org/apache/commons/lang/text/package-summary.html