Hive源码系列(七)编译模块之词法、语法解析 (中)

本文通过实例演示如何使用ANTLR工具,首先在antlrworks中创建Calculator语法文件,进行词法和语法分析,然后在Eclipse环境中配置ANTLR插件并生成解析器代码,最后通过Java测试类获取ASTTree。文章适合初学者理解ANTLR的工作流程和Hive的ASTTree解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇主要举实际案例说明怎么使用antlr工具、利用antlr生成的Lexer、Parser、TreeParser代码,获取asttree。这些都是hive获取asttree的过程,理解了这些,再理解hive的asttree就很容易了

程序设计语言入门小案例一般都用“Hello World”,在编译领域的入门往往选择计算器。而我们这次的小案例就更简单:一个只能计算【两】个【整数】相【加】的计算器,比如:计算1+1...

先来考虑一下如果何下手,在我们的计算器中,只接受输入整数和加号,其它的一概不理。这里说的是整数,如果输入了一个字母,我们一定是要拒绝的...对于这一块要写对应的词法规则,这个阶段的过程就叫做词法分析

输入满足词法的规则,并不代表我们就能接受,如果是【加号】【整数】【整数】或者【整数】【整数】【加号】这样的排列,我们是不能接受的,这里接受的合法语法是【整数】【加号】【整数】,因此我们需要在词法规则的基础上再定义语法规则,规则定输入满足这样句式的才算是合法... 我们把这个阶段叫做语法分析

弄清楚了我们的词法、语法规则后,我们需要以antlr的语言把这些写出来。

antlr语法博大精深,我觉得没必要钻的太深,实现这个案例,用不到antlr太多复杂的语法,只用看懂就行

1、使用antlrworks

双击antlrworks-1.5.1.jar启动antlrworks

File-->New

选择ANTLR 3 Grammer  (*.g)  新建Calculator语法文件

输入规则:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小萝卜算子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值