java8 源码 sql parser 描述 1.基于 Java8,利用 Antlr4 实现对 sql 的解析并生成解析树 2.基于解析树生成执行计划 3.基于执行计划,对 Java 内存中数据进行操作,对用户透明,并实现部分 sql 执行 4.Java 内存数据为行式存储,数据均为 String 类型,使用时进行转换 运行环境 1.Java 8 2.Antlr4.9 功能 1.实现 where = xxx 的等值单条件筛选查询 2.支持嵌套子查询 3.实现 sum 聚合算子 方案设计 整体流程: Input(sql) --> Parser --> Execution --> Print 1.Input:即接收 input 的 sql 入参 2.Parser:接收 sql 后,经过 parser 解析生成语法树,并通过解析语法树,将关键的 sql 元素保存进入对象,形成执行计划 plan ;若包含嵌套查询则利用链表将父子 plan 关联 3.Execution:根据执行计划类型,选择不同的执行器 Execution,并对嵌套的父子查询进行拆解,根据 dfs 最底层的子查询需要优先执行,
2021-11-28 20:23:15 172KB 系统开源
1
实现的有瑕疵,望周知,上传资源赚点积分,希望你们独立完成。
2021-11-27 15:52:26 1.78MB 武大国软 解释器构造
1
基于antlr4语法开发的json解析器,支持json内容的基本解析,使用java语言开发,参考了jackson库的实现
2021-11-23 12:33:29 22KB antlr4 json java
1
antlr-4.7-complete.jar运行环境库(java版)
2021-09-23 11:48:29 1.95MB antlr4 Java
1
使用Antlr4 / C ++的C编译器(H4244) 这是里昂国际计算机学院(INSA Lyon)在计算机科学领域第4年的长期项目。 目的是为C编程语言的子集创建一个编译器。 grammar/包含C子集的Antlr4语法(.g4文件) src/包含源代码(.cpp和.h文件) tests/包含与测试相关的所有内容 先决条件 确保创建包含本地Antlr4路径的Makefile.local文件,例如: ANTLR4_BINDIR=/usr/bin ANTLR4_INCDIR=/usr/include/antlr4-runtime ANTLR4_LIBDIR=/usr/lib/x86_64-linux-gnu ANTLR4_RUNTIME=libantlr4-runtime.a 执行 用make编译项目。 运行./ifcc main.c来运行我们的编译器main.c 。 测验 使用mak
2021-09-19 20:32:18 1.89MB C++
1
解析java语法 grammar Java; // starting point for parsing a java file compilationUnit : packageDeclaration? importDeclaration* typeDeclaration* EOF ; packageDeclaration : annotation* 'package' qualifiedName ';' ; importDeclaration : 'import' 'static'? qualifiedName ('.' '*')? ';' ; typeDeclaration : classOrInterfaceModifier* classDeclaration | classOrInterfaceModifier* enumDeclaration | classOrInterfaceModifier* interfaceDeclaration | classOrInterfaceModifier* annotationTypeDeclaration | ';' ; .....
2021-08-18 10:29:34 21KB Antlr4 JAVA
1
Antlr4指南 权威介绍 学习教程
2021-07-23 16:26:10 161.56MB Antlr4 手册 指南
1
ANTLR4 g4 file for ClickHouse Select SQL. 用于ANTLR4生成针对ClickHouse Select SQL的AST代码。
2021-07-14 09:20:49 12KB ANTLR4 ClickHouse g4文件
1
基于python3的antlr4二进制安装包文件,支持windows和linux系统,安装步骤参考这篇文章:https://blog.csdn.net/qq_15969343/article/details/79055603
2021-07-04 19:10:11 141KB antlr4
ANTLR是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。它被广泛应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了ANTLR;Lex Machina将ANTLR用于分析法律文本;Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR;NetBeans公司的IDE使用ANTLR来解析C++;Hibernate对象-关系映射框架(ORM)使用ANTLR来处理HQL语言。   除了这些鼎鼎大名的项目之外,还可以利用ANTLR构建各种各样的实用工具,如配置文件读取器、遗留代码转换器、维基文本渲染器,以及JSON解析器。我编写了一些工具,用于创建数据库的对象-关系映射、描述三维可视化以及在Java源代码中插入性能监控代码。我甚至为一次演讲编写了一个简单的DNA模式匹配程序。   一门语言的正式描述称为语法(grammar),ANTLR能够为该语言生成一个语法分析器,并自动建立语法分析树——一种描述语法与输入文本匹配关系的数据结构。ANTLR也能够自动生成树的遍历器,这样你就可以访问树中的节点,执行自定义的业务逻辑代码。   本书既是ANTLR 4的参考手册,也是解决语言识别问题的指南。你会学到如下知识:   识别语言样例和参考手册中的语法模式,从而编写自定义的语法。   循序渐进地为从简单的JSON到复杂的R语言编写语法。同时还能学会解决XML和Python中棘手的识别问题。   基于语法,通过遍历自动生成的语法分析树,实现自己的语言类应用程序。   在特定的应用领域中,自定义识别过程的错误处理机制和错误报告机制。   通过在语法中嵌入Java动作(action),对语法分析过程进行完全的掌控。   本书并非教科书,所有的讨论都是基于实例的,旨在令你巩固所学的知识,并提供语言类应用程序的基本范例。   本书的读者对象本书尤其适用于对数据读取器、语言解释器和翻译器感兴趣的开发者。虽然本书主要利用ANTLR来完成这些工作,你仍然可以学到很多有关词法分析器和语法分析器的知识。初学者和专家都需要本书来高效地使用ANTLR 4。如果希望学习第三部分中的高级特性,你需要先了解之前章节中的ANTLR基础知识。此外,读者还需要具备一定的Java功底。   Honey Badger版本ANTLR 4的版本代号是“Honey Badger”,这个名字来源于一段著名的YouTube短片The Crazy Nastyass Honey Badger(网址为:http://www.youtube.com/watch?v=4r7wHMg5Yjg)中的勇敢无畏的主角——一只蜜獾。它敢吃你给它的任何东西,根本不在乎那是什么!   ANTLR 4有哪些神奇之处ANTLR 4引入了一些新功能,降低了入门门槛,使得语法和语言类应用程序的开发更加容易。最重要的新特性在于,ANTLR 4几乎能够处理任何语法(除了间接左递归,稍后会提到)。在ANTLR将你的语法转换成可执行的、人类可读的语法分析代码的过程中,语法冲突或者歧义性警告不会再出现。   无论多复杂的语法,只要你提供给ANTLR自动生成的语法分析器的输入是合法的,该语法分析器就能够自动识别之。当然,你需要自行保证该语法能够准确地描述目标语言。   ANTLR语法分析器使用了一种名为自适应LL(*)或者ALL(*)(读作“all star”)的新技术,它是由我和Sam Harwell一起开发的。ALL(*)是ANTLR 3中的LL(*)的扩展,在实际生成的语法分析器执行前,它能够在运行时以动态方式对语法执行分析,而非先前的静态方式。由于ALL(*)语法分析器能够访问实际的输入文本,通过反复分析语法的方式,它最终能够决定如何识别输入文本。相比之下,静态分析必须考虑所有可行的(无限长的)输入序列。   在实践中,拥有ALL(*)意味着你无须像在其他语法分析器生成工具(包括ANTLR 3)中那样,扭曲语法以适应底层的语法分析策略。如果你曾经为ANTLR 3的歧义性警告和yacc的归约/归约冲突(reduce/reduce conflict)而抓狂,ANTLR 4就是你的不二之选!   另外一个强大的新功能是ANTLR 4极大地简化了匹配某些句法结构(如编程语言中的算术表达式)所需的语法规则。长久以来,处理表达式都是ANTLR语法(以及手工编写的递归下降语法分析器)的难题。识别表达式最自然的语法对于传统的自顶向下的语法分析器生成器(如ANTLR 3)是无效的。现在,利用ANTLR 4,你可以通过如下规则匹配表达式:   类
2021-05-28 12:49:30 6.16MB antlr4
1