我几年前在本科学习期间曾在Flex,Bison工作过。但是,我现在不记得了。最近,我听说过ANTLR。
答案 0 :(得分:7)
ANTLRv3是LL(k),可以配置为LL(*)。后者特别容易编写解析器,因为您基本上可以使用EBNF。
此外,ANTLR生成的代码非常类似于您从头开始编写的递归下降解析器。它非常易读且易于调试,以查看解析无法正常工作或工作错误的原因。
Flex / Bison(或任何其他LALR解析器)的优势在于它更快。
答案 1 :(得分:2)
ANTLR有一个运行时库JAR,您必须将其包含在项目中。
ANTLR的递归下降解析器比Flex / Bison生成的“自下而上”解析器更容易调试,但语法规则略有不同。
如果您想要Java的Flex / Bison风格(LALR)解析器生成器,请查看JavaCC。
答案 2 :(得分:0)
我们决定将ANTLR用于我们的一些信息处理要求 - 解析遗留文件和自然语言。学习曲线非常陡峭,我们正在学习它,我觉得这是一种更现代化,更通用的方法,可以满足我们的需求。缺点 - 因为你问 - 主要是学习曲线似乎是不可避免的。