antlr 4.7.1

自上一个主要版本发布以来,已经过去了将近一年的时间,推出了新的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

antlr 4.7.1

antlr 4.7.1_新ANTLR 4.6的重要更改相关推荐

  1. antlr 语言 库_关于ANTLR的通用库的需求:使用反射来构建元模型

    antlr 语言 库 我是一名语言工程师:我使用多种工具来定义和处理语言. 在其他工具中,我使用ANTLR:它简单,灵活,可以围绕它进行构建. 但是我发现自己围绕ANTLR为不同的项目重建了类似的工具 ...

  2. ANTLR学习(三)antlr的功能

    文章目录 算数表达式语言 匹配算数表达式的语言 语法 语法导入 处理错误输入 使用访问者模式构建一个计算器 利用监听器构建一个翻译器 如何将动作直接嵌入语法文件 在语法中嵌入任意动作 使用语义判定改变 ...

  3. sql server 快照_添加新文章,删除文章,更改快照文件夹路径和SQL Server复制中的数据筛选器行

    sql server 快照 In the last articles, we have learned Configuring Snapshot and Transactional SQL Serve ...

  4. 新ANTLR 4.6的重要更改

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

  5. ANTLR中文手册二(ANTLR 是什么)

    ANTLR 2.7.5版 2004年十二月22日 ANTLR是什么 ANTLR, 语言识别的另一个工具(ANother Tool for Language Recognition),( 前身是 PCC ...

  6. 如何在新的Excel工作簿中更改默认的工作表数

    By default, new workbooks created in Excel contain one worksheet. If you typically use more than one ...

  7. 计算机管理员账户不能创建新的用户名,win10为什么无法更改账户名称解决方法 win10系统管理员用户名更改...

    win10为什么无法更改账户名称解决方法 win10系统管理员用户名更改 我们在使用电脑的时候,总是会遇到很多的电脑难题.当我们在遇到了Win10系统如何更改用户登录名的时候,那么我们应该怎么办呢?今 ...

  8. 每次创建新项目都要去设置更改maven仓库位置? 如何解决

    随便打开一个项目,close project 退回到欢迎页面 打开全局配置 更改maven仓库位置

  9. ANTLR和Jetbrains MPS:解析文件并以树符号显示AST

    Itemis再次这样做:他们刚刚为Jetbrains MPS发布了一个非常酷的新插件. 这允许定义新的树编辑器. 他们看起来像这样: 在这篇文章中,我们将看到: 如何在MPS中使用ANTLR解析器 如 ...

最新文章

  1. Blender三维插图设计视频教程 3D Characters and Illustrations in Blender 2.9
  2. 物联网基石,五大领域对智能传感器的需求暴涨
  3. 服务器系统选择什么,服务器选择什么系统
  4. c++读二进制文件结束的时候总会异常_python专题文件操作
  5. 50个常用元器件图片_盘点2020年wordpress常用的50个插件合集
  6. bose耳机信号断续_最强真无线降噪耳机?BOSE QC Earbuds消噪耳塞上手评测
  7. python中的文件操作
  8. php mvc 参数传递数组,PHP MVC在帖子上添加到数组
  9. php 5.4 5.2区别,PHP5.5.2和php5.4.18发布
  10. php依据地理坐标获取国家、省份、城市,及周边数据类
  11. Java中foreach 的用法以及注意事项
  12. 利用 Global Mapper 软件下载 Google 影像(中英文对照)
  13. python3 scrapy中文文档_Python3爬虫入门:Scrapy 框架
  14. iOS微信分享提示“未验证应用”的解决,配置 Universal Link
  15. try的动词用法_try的用法_tries与try的用法,请分别举例说明。谢!
  16. python飞机大战加背景音乐_Python飞机大战实例有感——pygame如何实现“切歌”以及多曲重奏?...
  17. CNCC——多模态会议
  18. 迭代器 iter()
  19. numpy 学习汇总18 - 数学运算 (集合,复数)( 基础学习 tcy)
  20. git把master的代码覆盖dev

热门文章

  1. LOJ:蚂蚁之旅(欧拉回路)
  2. P7962-[NOIP2021]方差【dp,差分】
  3. P7323-[WC2021]括号路径【并查集,启发式合并】
  4. 2021牛客暑期多校训练营3 I-Kuriyama Mirai and Exclusive Or(异或+差分)
  5. Mail.Ru Cup 2018 Round 2
  6. 2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲
  7. Hadoop生态Zookeeper安装
  8. 汇编语言(五)之数组中正数和负数分离
  9. MySQL isnull()函数基本指南
  10. Java中CAS详解