与Flex / Bison相比,使用ANTLR有什么缺点?

问题描述 投票:8回答:3

几年前,我在本科学习期间一直在研究Flex,Bison。但是,我现在不记得了。最近,我听说过ANTLR。

  • 你会建议我学习ANTLR或者更好地刷一下Flex / Bison吗?
  • ANTLR的功能是否比Flex / Bison更多/更少?
antlr bison flex-lexer jflex
3个回答
7
投票

ANTLRv3是LL(k),可以配置为LL(*)。后者特别容易编写解析器,因为您基本上可以使用EBNF。

此外,ANTLR生成的代码非常类似于您从头开始编写的递归下降解析器。它非常易读且易于调试,以查看解析无法正常工作或工作错误的原因。

Flex / Bison(或任何其他LALR解析器)的优势在于它更快。


2
投票

ANTLR有一个运行时库JAR,您必须在项目中包含它。

ANTLR的递归下降解析器比Flex / Bison生成的“自下而上”解析器更容易调试,但语法规则略有不同。

如果你想要一个用于Java的Flex / Bison风格(LALR)解析器生成器,请查看JavaCC


0
投票

我们决定将ANTLR用于我们的一些信息处理要求 - 解析遗留文件和自然语言。学习曲线非常陡峭,我们正在学习它,我觉得这是一种更现代化,更通用的方法,可以满足我们的需求。缺点 - 因为你问 - 主要是学习曲线似乎是不可避免的。

© www.soinside.com 2019 - 2024. All rights reserved.