新ANTLR 4.6的重要更改

自从上一个主要版本发布以来,已经过去了将近一年的时间,推出了新的ANTLR版本: 4.6 。 有很多新闻:新的目标,更好的性能,更好的错误处理以及ANTLR本身开发中的一些改进。

新目标

影响最大的新闻可能是新目标:C ++,Go和Swift。 当然,获得C ++支持非常重要。 讨厌它还是喜欢它,它仍然是那里的主要语言之一。 由于对并发的大力支持,Go在网络应用程序(例如Web服务器和API)中获得了关注。 这几乎使可用目标加倍,并加入了已经包含的Java,C#,Python和Javascript。

ANTLR 4中最大的新增功能之一是对左递归表达式的支持,也就是说,该表达式具有一个或多个引用自己的替代方法。 支持表达式所需的语法规则大大简化,但是对于非常大的表达式,存在不终止解析的情况。 这是由于两个选择之间的歧义导致解析引擎出现问题。 两者都导致有效的解析,但是一个比另一个慢得多。 该问题是由 ANTLR的主要贡献者之一Sam Harwell发现的

错误处理和消息

在某些情况下的错误处理方面已得到改进:与LL(1)决策有关,匹配的令牌集被错误地视为重新同步令牌以及偶尔不包含单个令牌的错误节点。 此外,还有更好的错误消息,例如在规则与指定目标语言的生成代码中的符号冲突的情况下。

改进ANTLR的发展

其他重要新闻是与ANTLR本身的开发有关的一些改进。 尽管这并不直接影响您,但作为用户,它们可能使您更容易为项目做出贡献,研究大型Java项目的工作方式,甚至激发您改进自己的开源项目。 这些范围包括从改进到构建系统,从Maven插件到完全重写的单元测试机制。 同样有用的是要知道,现在的构建环境需要ANTLR Java 7 / JDK 1.7,这是Swift目标的推动

结论

ANTLR是许多对语言感兴趣的人的宝贵工具。 此版本再次证明了ANTLR将继续存在并在不断发展。 由于大量有意义的更改,所以此发行版有点特殊。 我可以在ANTLR社区中看到这种更多的热情,并且我期待看到在这一领域中发生的更多伟大事情。

翻译自: https://www.javacodegeeks.com/2017/01/important-changes-new-antlr-4-6.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值