antlr 4.7.1_新ANTLR 4.6的重要更改

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商系统下单时商品库存和销售状态如何处理

文章目录查看购物车时商品库存问题商品被下架了如何处理价格变动了如何处理促销活动到期了如何处理提交订单时库存问题商品被下架了如何处理价格变动了如何处理促销活动到期了如何处理使用的优惠券到期了如何处理选择商品时库存问题商品被下架了如何处理价格变动了如何处理促销…

json怎么读取数据库_如何:使用Json插入数据库并从中读取

json怎么读取数据库在本文中,我们将为Speedment创建一个插件,该插件使用Gson生成序列化和反序列化逻辑,从而使其在数据库实体和JSON字符串之间进行映射非常容易。 这将有助于展示Speedment代码生成的可扩展性,同时探索Gson库的一些…

django连接mysql步骤_使用Django连接Mysql数据库步骤

链接mysql步骤第一步:在终端下载pymysql文件–pip install pymysql第二步:在gjango项目的__init__文件中添加代码import pymysqlpymysql .install_as_MySQLdb()第三步:找到mysql的连接源,然后填信息,如果没有mysql驱动…

HH SaaS电商系统的商品发货策略设计

什么是发货策略 用来指定商品的发货仓库的策略方案,我们在实际的业务开展过程中,同种商品不同的销售渠道也许发货仓库不同,同种商品同个销售渠道在不同的业务开展阶段中也许发货仓库不同,所以需要通过灵活配置发货策略来满足此需…

mysql 上一篇_mysql取上一篇和下一篇的查询

$id 为当前文章 ID获取文章上一篇文章:SELECT id FROM table WHERE id>$id ORDER BY id ASC LIMIT 1获取文章下一篇文章:SELECT id FROM table WHERE id查询思路:获取与该文章同表相连的文章,如果根据分类获取相应的关联文章&a…

jhipster_JHipster入门,第3部分

jhipster欢迎回到本JHipster教程系列! 在第一部分中,我们介绍了如何创建整体应用程序。 在第二部分中 ,我们逐步创建了一个微服务应用程序(这有点复杂)。 对于那些正在努力使JHipster正常运转的人,我想着重…

什么是UID、UED、UXD、IXD、UCD、IAD,看这篇就足够了

文章目录UID: User Interface Design 用户界面设计UI:User Interface(用户界面)UID(用户界面设计师)UID认知现状UED: User Experience Design 用户体验设计UE or UX: User Experienc…

jhipster_JHipster入门,第2部分

jhipster所以你回来了! 在本系列的最后一部分中 ,我们采用了单片路线创建了一个JHipster应用程序。 这是红色药丸路线; 生活几乎与您习惯的一样。 但是也许您喜欢挑战。 也许您想超越红色药丸并尝试蓝色药丸。 在这种情况下,Blue…

HH SaaS电商系统的虚拟资金账户(钱包余额)设计

文章目录方案一,将资金账户抽象出来虚拟资金账户余额流水记录实体方案二,用户表直接保存资金余额余额流水记录实体方案一,将资金账户抽象出来 虚拟资金账户 P.S. 如果机构代码和消费代码有区分类型,那么资金账户表中就不必保存“…

jhipster_jHipster入门,第1部分

jhipster因此,您想保持技术的领先地位,但对所有活动部件感到不知所措。 你真幸运! 这就是jHipster发光的地方。 如果您喜欢Ruby on Rails或Grails的方法来快速启动和运行应用程序,那么这可能是适合您的选择。 jHipster旨在使设置…

mysql中show属于_mysql show的常见用法

a. show tables或show tables from database_name; // 显示当前数据库中所有表的名称b. show databases; // 显示mysql中所有数据库的名称c. show columns from table_name from database_name; 或show columns from database_name.table_name; // 显示表中列名称d. show gra…

java基准测试_微基准测试进入Java 9

java基准测试我已经几个月没有在这里写文章了,这种例外还会继续。 我计划在明年三月左右恢复写作。 本文末尾的说明。 等待! 不完全是最后,因为您可以向下滚动。 它在文章结尾处。 继续阅读! 三年前,我在写有关Java编…

python周天为一周的开始_从两个月减肥四十斤说起,不懈坚持,才是一个人最核心的竞争力。...

大学毕业了十年,我的身材失控了十年。我对我的胖身材已经习以为常了十年了,我从来没想过改变,因为我也没有毅力改变。有一句话说的,人越胖,就越懒。因为我胖,所以我不跑步,我也不爱外出。只要你…

MySQL之命令mysql -- MySQL服务器的客户端工具

文章目录命令介绍选项说明-A--executestatement, -e statement参考示例登录数据库执行指定的脚本文件将指定脚本文件的内容导入(或者重载)到指定数据库中命令介绍 mysql 命令是 MySQL 数据库服务器的客户端工具,它工作在命令行终端中&#x…

eclipse中ast_JavaParser中AST节点的观察者

eclipse中ast我们离JavaParser 3.0的第一个候选发布版本越来越近。 我们添加的最后一项功能是支持观察抽象语法树的所有节点的更改。 当我为此功能编写代码时,我收到了Danny van Bruggen(又名Matozoid)和Cruz Maximilien的宝贵反馈。 因此&am…

java模拟登陆_java-模拟登陆练习(示例代码)

package com.day5.test;import java.util.Scanner;public class Test1 {/*** param args* 需求:模拟登陆,给三次机会,并提示还有几次* 用户名和密码都是admin* 分析:* 1,模拟登陆,需要键盘录入,…

电商系统的积分(即金币)的设计方案

积分其实就是金币 有些平台把积分和金币拆开独立设计,把金币设计成虚拟货币,而积分可以抵现或者兑换金币,金币可以提现。但是很多平台又将金币和积分的功能合并一起,既可以抵现,又可以提现,而且金币和现金的…

java实现线程的方式_java多线程实现的四种方式

java多线程实现的四种方式1、继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口)2、实现Runnable接口,重写run方法3、实现Callable接口,重写call方法(有返回值)4、使用线程池(有返回值)1、继承Thread类,重写run方法…

产品经理是如何管理需求

文章目录一、怎么发现需求二、如何判断需求三、定义用户需求四、定义产品需求五、评估产品需求六、管理产品需求一、怎么发现需求 1、什么是需求 特定的人在特定的情况下产生了特定的问题,并且这种问题是可以被解决的,我们就可以把它叫做需求 2、需求从…