Antlr代码生成及命令行验证

什么是Antlr

Antlr广泛应用于编程语言解析,但并不限于程序语言,实际上只要定义好语法规则,几乎无所不能,twitter的查询串解析就使用Antlr。Antlr使用很简单,第一步:定义语法文件,*.g4; 第二步:使用Antlr工具包生成解析代码,目前支持生成java, python, c#…

当然对于解析程序语言来说,自己定义语法,那就太费劲了,实际上已经有人做好了,我们就不要重复造轮子了。各种程序语言的语法文件,在github上已经有了,详见:grammars-v4

本文主要讲Antlr-4.5.3,Antlr-v4相比v3有较大改动。


生成解析代码

从*.g4语法文件自动生成解析代码,有两种方式,一种是IDE插件,一种是命令行。以c语言语法文件C.g4为例

  1. IDE基于IntelliJ Idea

    安装Antlr v4 grammar plugin

    Antlr v4 grammer plugin

    在ide中右键C.g4,配置相关选项

    配置

    触发

    触发

    代码

    生成代码

  2. 命令行方式
    将C.g4 与 antlr-4.5.3-complete.jar放于同一个文件夹

    java -jar antlr-4.5.3-complete.jar C.g4
    

使用解析代码,high起来

利用命令行(请在cmd下操作)可以进行解析验证操作,不必写代码就能玩得转

配置环境:

windows 7下,将antlr-4.5.3-complete.jar路径添加到CLASSPATH
为了操作方便,制作两个bat文件
antlr4.bat

java org.antlr.v4.Tool %*

grun.bat

java org.antlr.v4.runtime.misc.TestRig %*

准备工作
生成代码可以简单如下:

antlr4 C.g4

编译生成代码

javac *.java

测试
org.antlr.v4.runtime.misc.TestRig是antlr4 runtime内置的测试工具,它可以查看解析的tokens和AST结构。

下面以C.g4定义的”functionDefinition”规则,即函数定义规则为例

1)查看tokens,具体函数定义自行输入:

grun C functionDefinition  -tokens

输入代码函数定义f:

void f(){
 int a=0;
}

结果:
-tokens

2)查看树形输出:

grun C functionDefinition  -tree

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

3)AST图形化输出:

grun C functionDefinition  -gui

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值