《antlr4 权威指南》笔记--第1章 初识ANTLR

SPARKSQL3.0-Antlr4由浅入深&SparkSQL语法解析 阅读详情

前言

ANTLR是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。它被广泛应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了ANTLR; Lex Machinal山)将 ANTLR用于分析法律文本;Orade公司在SQL开发者1DE和迁移工具中使用了 ANTLR;NetBeans 公司的IDE使用ANTLR来解析C++;Hibernate对 象-关系映射框架 (ORM)使用ANTLR来处理HQL语言。
除了这些鼎鼎大名的项目之外,还可以利用ANTLR构建各种各样的实用工具,如配置文件读取器、遗留代码转换器、维基文本渲染器,以及JSON解析器。我编写了一些工具,用于创建数据库的对象-关系映射、描述三维可视化以及在Java源代码中插入性能监控代码。

一门语言的正式描述称为语法 (grammar),ANTLR能够为该语[言生成一个语法分析器,并自动建立语法分析树-一种描述语法与输入文本匹配关系的数据结构。ANTLR也能够自动生成树的遍历器,这样你就可以访问树中的节点,执行自定义的业务還辑代码。本书既是ANTLR 4的参考手册,也是解决语言识别问题的指南。

除了上述两项与语法相关的改进,ANTLR 4还使得编写语言类应用程序更加容易。ANTLR生成的语法分析器能够自动建立名为语法分析树 (parse tree)的视图,其他程序可以遍历此树,井在所需处理的结构处触发回调函数。在先前的ANTLR 3中,用户需要补充语法来创建树。除了自动建立树结构之外,ANTLR 4还能自动生成语法分析树遍历器的实现:监听器 (listener) 或者访问器 (visitor)。监听器与在XML文档的解析过程中响应SAX事件的处理器相似。

note: 使用软件设计的访问者模式就可以实现对语法树的访问。

第1章 初识ANTLR

小demo

在这里插入图片描述

针对hello parrt 用语法Hello 和规则r来识别
在这里插入图片描述

**每行输出代表了一个词法符号,其中包含了该词法符号的全部信息。**例如,[@1, 6: 10='parrt',<2>,1:6]表明,这个词法符号位于第二个位置(从0开始计数),由输入文本的第6个到第10个位置之间的字符组成(包含第6个和第10个,同样人0开始计数),;包含的文本内容是parrt;词法符号类型是2 (即1D);位于输入文本的第一行、第6个位置处 (从0开始计数,tab符号被看作一个字符)。

【Antlr】Antlr生成调用图 1.概述 参考:Antlr权威指南 8.3 章 g4文件如下 /** Simple statically-typed programming language with functions and variables * taken from "Language Implementation Patterns" book. */ grammar Cymbol; file: (functionDecl | varDecl)+ ; varDecl : type ID ('=' exp. 阅读详情

相关推荐

【Antlr】Antlr 在语法中嵌入任意动作

1.概述 参考Antlr4 权威指南 4.4 章节 g4 文件如下 grammar Rows; @parser::members { // add members to generated RowsParser int col; public RowsParser(TokenStream input, int col) { // custom constructor this(input); this.col = col; } } file: (.

九师兄 925

antlr4权威指南(中文版)资料分享

ANTLR4的基础教程中文文档

weixin_45747396的博客 5908

基于CPCC_S_TASK_LIST_MAINTAIN的工艺路线组件批量分配实战与避坑指南

本文详细解析了SAP PP模块中基于CPCC_S_TASK_LIST_MAINTAIN函数实现工艺路线组件批量分配的实战技巧与避坑指南。针对批量分配的核心挑战,提供了参数配置、BAPI协同使用、Excel导入等解决方案,并分享了大容量数据处理优化经验,帮助用户高效完成工艺路线组件分配任务。

weixin_33563728的博客 306

Antlr4学习笔记

本文介绍Antlr4实现/语法规则以及sharding-jdbc的解析sql流程

(づ ̄ 3 ̄)づxl 1360

从零开始学DAG:用dagitty软件快速构建因果图的5个步骤

本文为初学者提供了使用dagitty软件快速构建因果图的5个实用步骤。通过一个公共卫生研究实例,详细演示了如何从定义核心变量开始,逐步引入混杂、中介和碰撞变量,最终利用dagitty的自动分析功能识别最小充分调整集,从而科学指导研究设计与统计分析,有效提升因果推断的严谨性。

ii567的博客 800

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64)

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64) MCU型号为STM32F103RCT6,OLED屏为中景园电子1.3寸屏,驱动芯片为sh1106,分辨率为128x64,MDK版本为V5.34。

Master_0_的博客 6272

解析器生成器 ANTLR的详细介绍

ANTLR诞生的背景是,当时的语言工具包大多数都是基于YACC和LEX等老旧技术,无法支持新的编程语言和复杂的语法规则,同时,它们的性能和可扩展性也受到一定的限制。根据SQL语句的各个部分和解析结果,我们可以记录和分析SQL执行情况,包括执行的时间、执行的参数、执行的结果等信息。解析输入的SQL语句。另外,在自然语言处理领域中,还有许多其他的类似ANTLR的语言工具,例如Stanford Parser、NLTK、SpaCy等,它们都能够用于自然语言文本的处理和分析,提高自然语言处理的效率和准确性。

G探险者的博客 4998

MicroPython ubluetooth 库详细介绍

MicroPython的ubluetooth库为蓝牙通信提供了强大的支持,使得开发者能够在MicroPython环境下轻松实现蓝牙设备之间的通信。其中ubluetooth库为MicroPython提供了强大的蓝牙通信功能,使得开发者能够轻松地在各种支持MicroPython的硬件平台上实现蓝牙设备之间的通信。它提供了一系列的函数和类,用于实现蓝牙设备的扫描、连接、数据传输等功能。- 上述代码中,首先创建了一个蓝牙服务和一个特征,然后可以通过read和write函数读取和写入特征值。# 处理连接成功事件。

m0_46311182的博客 1762

ANTLR4权威指南 - 第7章 通过特定应用程序代码解耦语法

到目前为止,我们已经知道了怎么用ANTLR的语法来定义语言了,接下来我们要给我们的语法注入一些新的元素了。就语法本身而言,其用处并不大,因为它只能告诉我们一个用户输入的句子是否符合语言程序的语法规范。要建立一个完整的语言程序,我们就需要语法解析器在遇到特定的输入的时候能够产生对应的动作。“语法->动作”的映射对集合就是连接我们的语言程序(或者,至少是语言接口)的语法到大型实际相关应用之间的桥梁。

NullPointerException 4267

71、CAN总线双绞线绞距与抗共模干扰的定量关系

摘要:本文探讨了CAN总线双绞线绞距与抗共模干扰的定量关系。通过理论推导得出共模电压与绞距平方成正比,绞距越小抑制效果越好。工程实践表明,工业现场推荐绞距不超过30mm,高频干扰场景需优先优化绞距。实测数据验证了绞距均匀性的重要性,建议控制在15-25mm范围,安装时保持绞合结构完整。案例显示,将绞距从50mm改为15mm后,共模干扰从12V降至1.8V,有效解决了CAN通信问题。绞距选择需兼顾理论计算与现场实测,同时注意与屏蔽层的协同设计。

2401_88858637的博客 188

海思图像质量之HiPQTool调试

文章目录一. HiPQTool 界面二. 图像调试三. 将调试参数写入程序中 一. HiPQTool 界面 二. 图像调试 三. 将调试参数写入程序中

lzg2011的博客 2382

ANTLR4权威指南 - 第5章 设计语法

第5章 设计语法 在第I部分,我们熟悉了ANTLR,并在一个比较高的层次上了解了语法以及语言程序。现在,我们将要放慢速度来学习下实现更实用任务的一些细节上的技巧,例如建立内部数据结构,提取信息,生成输入对应的翻译内容等。在我们开始的第一步,首先,就是需要学习怎样建立语法。在这一章,我们会着眼于语言学结构中最通用的词法和句法,并且学习怎样用ANTLR来描述这些词法和句法。以这些ANTLR建立的结

NullPointerException 1万+

基于VisionMaster实现数据实时存储至MySQL (二)

摘要:之前的分享主要聚焦于简单的一维数据实时存储。但在做缺陷检测项目时,情况往往更加复杂:一张检测图像中可能同时存在多个缺陷,每个缺陷都有一组独立的核心参数(如质心、长短轴、面积等)。如何在 MySQL 中记录这些成组出现的缺陷数据,而不只是简单的单条记录?

haier123888的博客 226

《ANTLR 4权威指南》——第1章初识ANTLR

本节书摘来自华章社区《ANTLR 4权威指南》一书中的第1章初识ANTLR,作者[美] 特恩斯·帕尔(Terence Parr),更多章节内容可以访问云栖社区“华章社区”公众号查看 第1章初识ANTLR在本书的第一部分中,我们的目标是大体上知道ANTLR能做什么。除此之外,我们还希望探究语言类应用程序的架构。在概览之后的第2章中,我们将会通过许多真实的例...

weixin_34211761的博客 1265

动力学约束下的运动规划算法——Hybrid A*算法(附程序实现及详细解释)

本文主要介绍动力学约束下的运动规划算法中非常经典的Hybrid A*算法,大致分为三部分,第一部分是在传统A * 算法的基础上,对Hybrid A * 算法的原理、流程进行理论介绍。第二部分是详细分析 MotionPlanning运动规划库中Hybrid A * 算法的源码,进一步深入对Hybrid A * 算法的具体细节 进行理解。 第三部分是结合前面第一部分的理论和第二部分的详细源码,对Hybrid A * 算法的流程进行综合的概括总结。

慕羽★的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ANTLR4权威指南 - 第6章 尝试一些实际中的语法

第6章 尝试一些实际中的语法 在前一章,我们学习了通用词法结构和语法结构,并学习了如何用ANTLR的语法来表述这些结构。现在,是时候把我们学到的这些用来构建一些现实世界中的语法了。我们的主要目标是,怎样通过筛选引用手册,样例输入文件和现有的非ANTLR语法来构建一个完整语法。这一章,我们要实现五种语言,难度依次递增。现在,你不需要将它们全部都实现了,挑一个你最喜欢的实现,当你在实践过程中遇到问

NullPointerException 8325

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

初学ANTLR4(一)

初次接触ANTLR,我是根据 《antlr4权威指南》这本书进行了解,并将自己所学,所感总结与此。

qq_45686333的博客 976

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

antlr4生成c_ANTLR4权威指南 - 第6章 尝试一些实际中的语法

第6章尝试一些实际中的语法在前一章,我们学习了通用词法结构和语法结构,并学习了如何用ANTLR的语法来表述这些结构。现在,是时候把我们学到的这些用来构建一些现实世界中的语法了。我们的主要目标是,怎样通过筛选引用手册,样例输入文件和现有的非ANTLR语法来构建一个完整语法。这一章,我们要实现五种语言,难度依次递增。现在,你不需要将它们全部都实现了,挑一个你最喜欢的实现,当你在实践过程中遇到问题了再回...

weixin_29549747的博客 944

ANTLR4入门(一):Windows安装antlr4命令行环境

最近开始学习ANTLR4,《ANTLR 4权威指南》这本书是看完了,现在开始实践,本系列文记录实践过程中的遇到的问题解决过程及心得体会。

10km的专栏 4376

《ANTLR 4权威指南》——第1章 初识ANTLR 1.1 安装ANTLR

本节书摘来自华章计算机《ANTLR 4权威指南》一书中的第1章,第1.1节,作者[美] 特恩斯·帕尔(Terence Parr),张博 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 第1章 初识ANTLR 在本书的第一部分中,我们的目标是大体上知道ANTLR能做什么。除此之外,我们还希望探究语言类应用程序的架构。在概览之后的第2章中,我们将...

weixin_33725272的博客 326

Hive-技术补充-初识ANTLR

要清晰的理解一条Hql是如何编译成MapReduce任务的,就必须要学习ANTLR。下面是ANTLR的官方网址,下面让我们一起来跟着官网学习吧,在学习的过程中我参考了《antlr4权威指南》,你也可以读下这本书,一定会对你有所帮助。

lu070828的博客 1487

《ANTLR 4权威指南》——3.1节ANTLR工具、运行库以及自动生成的代码

本节书摘来自华章社区《ANTLR 4权威指南》一书中的第3章,第3.1节ANTLR工具、运行库以及自动生成的代码,作者[美] 特恩斯·帕尔(Terence Parr),更多章节内容可以访问云栖社区“华章社区”公众号查看 3.1 ANTLR工具、运行库以及自动生成的代码在开始前,我们先浏览一下ANTLR的jar包中的内容。在ANTLR的jar包中存在两个关...

weixin_34342207的博客 380

antlr4安装、环境配置和使用(python3)

这是一个利用ANTLR解析JSON转XML的案例// JSON.g4json: obj| array;obj;array;value;| '-'?| '-'?;INT;import sysbuf = "\n"buf = "\n"# listenercase.json为本例待解析处理的输入文件,文件语言为JSONJSON.g4为本例对应的ANTLR4语言描述文件为本例对应的python语言描述文件。

bgape002的博客 4421

《ANTLR 4权威指南》——1.1节安装ANTLR

本节书摘来自华章社区《ANTLR 4权威指南》一书中的第1章,第1.1节安装ANTLR,作者[美] 特恩斯·帕尔(Terence Parr),更多章节内容可以访问云栖社区“华章社区”公众号查看 1.1 安装ANTLRANTLR是用Java编写的,因此你需要首先安装Java,哪怕你的目标是使用ANTLR来生成其他语言(如C#和C++)的解析器。(我希望在不...

weixin_34319999的博客 462

《ANTLR 4权威指南 》一第3章 入门的ANTLR项目

本节书摘来自华章出版社《ANTLR 4权威指南 》一书中的第3章,第3.1节,[美] 特恩斯·帕尔(Terence Parr) 著张 博 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 第3章 入门的ANTLR项目 作为我们的第一个ANTLR项目,我们会构造一个语法,它是C语言或其继承者Java语法的一个很小的子集。具体来说,我们将识别包裹在...

weixin_34066347的博客 373
上一篇: EdSketch: Execution-Driven Sketching for Java ( ISSTA ‘17) 论文笔记
下一篇: pip包冲突-两个包依赖同一包的不同版本
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值