使用golang+antlr4构建一个自己的语言解析器(一)

2023-11-20

Antlr4 简介


ANTLR(全名:ANother Tool for Language Recognition)是基于LL(*)算法实现的语法解析器生成器(parser generator),用Java语言编写,使用自上而下(top-down)的递归下降LL剖析器方法。由旧金山大学的Terence Parr博士等人于1989年开始发展。

antlr4 是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。它被广泛的应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。Twitter 搜索使用 antlr 进行语法分析,hadoop 生态系统中的 Hive、Pig、数据仓库和分析系统所使用的语言都用到了 antlr,Lex Machina 将 antlr 用于分析法律文本,oracle 公司在 sql 开发者 IDE 和迁移工具中使用了 antlr,NetBeans 公司的 IDE 使用 antlr 来解析 c++,Hibernate 对象-关系映射框架 ORM 使用 antlr 来处理 HQL 语言。

Antlr4 使用


1. 下载最新版Antlr4

https://www.antlr.org/download/antlr-4-12.0-complete.jar (这里下载得是12版本的Antlr4)

2. 下载JDK11

因为Antlr4版本4.12使用的JDK最低使用11版本的,所以这里我们下载JDK11,下载链接:Java Archive Downloads - Java SE 11

3. 将下载的antlr4 jar包移动到JDK目录中

JDK一般安装在C:\Program Files\Java,新建文件夹:antlr,将antlr-4.12.0-complete.jar放入该文件夹中,如下图:


4. 设置antlr4命令:

新建antlr4.bat
输入
@ECHO OFF
"C:\Program Files\Java\jdk-11.0.17\bin\java" -jar "%~dp0antlr-4.12.0-complete.jar"

保存使用CMD执行下脚本,查看到如下图则证明antlr可以正常工作

新建grun.bat,这个是Antlr4自带的用来检查自定义的语法树是否正确的工具
输入
@ECHO OFF
"C:\Program Files\Java\jdk-11.0.17\bin\java" -cp "%~dp0antlr-4.12.0-complete.jar" org.antlr.v4.gui.TestRig %*

保存使用CMD执行下脚本,查看到如下图则证明antlr工具可以正常工作

上述操作做完文件目录如下图

5. 设置环境变量

  1. 设置系统变量CLASSPATH:.C:\Program Files\Java\jdk-11.0.17\bin(注意开头有个点)
  2. 设置系统变量JAVA_HOME:C:\Program Files\Java\jdk-11.0.17
  3. 在PATH中添加:%JAVA_HOME%\bin

设置好之后打开CMD,输入Java-version和Javac-version,验证Java环境是否正确


 

这里有的小伙伴输入java-version可以执行,输入javac-version不能执行,可以看下环境变量设置的是否正确,环境变量正确,可以重启电脑,有时候环境变量重启之后才会生效

到此,使用antlr4的环境就配置好了。接下来,就是学习使用antlr4。距离成功已经打开了大门!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用golang+antlr4构建一个自己的语言解析器(一) 的相关文章

随机推荐

  • DNS欺骗原理及工作工程分析

    DNS欺骗 DNS欺骗是这样一种中间人攻击形式 它是攻击者冒充域名服务器的一种欺骗行为 它主要用于向主机提供错误DNS信息 当用户尝试浏览网页 例如IP地址为XXX XX XX XX 网址为www bankofamerica com 而实际
  • 工作与身体健康之间的平衡

    大厂裁员 称35岁以后体能下滑 无法继续高效率地完成工作 体重上涨 因为35岁以后新陈代谢开始变慢 甚至坐久了会腰疼 睡眠困扰开始加重 在众多的归因中 仿佛35岁的到来 会为一切的焦虑埋下伏笔 实际上 生理年龄不代表全部 体能素质的下降更与
  • 各种汇编器masm masm32 fasm nasm yasm gas的区别

    原文地址 http www verydemo com demo c269 i661 html masm MASM是微软公司开发的汇编开发环境 拥有可视化的开发界面 使开发人员不必再使用DOS环境进行汇编的开发 编译速度快 支持80x86汇编
  • Debug of AMBA AXI Outstanding Transactions

    Verifying today s complex designs is time consuming as simulations run for long time and millions of transaction are exe
  • Win7(WinDbg) + VMware(Win7) 双机调试环境搭建之三

    更多精彩内容 请见 http www 16boke com 环境 主机 Win7 虚拟机 VMware 11 1 0 build 2496824 虚拟机内操作系统 又称GuestOS Win7 WinDbg 适合调试机的相应位数的版本就可以
  • springboot使用Mybatis-Plus实现分页查询

    1 导入依赖 MyBatis Plus opens new window 简称 MP 是一个 MyBatis opens new window 的增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率而生 我个人感觉使
  • JAVA--GUI(2)--布局

    布局 为了更好适应不同平台而引入的概念 Java的布局管理器是一个实现了LayoutManager接口的实例 用户无法设置setLocation 这些方法 如果想自己设置则需要取消布局管理器 采用布局管理器 边界布局 顺序布局 网格布局 卡
  • BMVC 2022 (东京大学)仅需90K参数!实时完成低光增强, 曝光矫正的超轻量级Transformer网络IAT,已开源

    本文由 52CV 粉丝投稿 作者 信息门下奶狗 知乎地址 https zhuanlan zhihu com p 535695807 我们提出Illumination Adaptive Transformer IAT 网络 用来探索实时的暗光
  • CPU体系架构-ARM/MIPS/X86

    转自 http nieyong github io wiki cpu CPU体系架构 ARM MIPS X86 第一部分 从寄存器 寻址方式 汇编指令等方面总结了ARM MIPS X86的异同 CPU体系架构 RISC和CISC CPU体系
  • efi分区隐藏_win10如何隐藏efi分区

    windows10系统升级最新1703版本后发现制作pe系统的u盘插上电脑后会同时显示可见分区和efi分区 以前的efi隐藏手段统统失效了 目前没找到完美的方法 本文的方法是在自己电脑隐藏efi分区 换别的1703版本win10电脑无效 解
  • 利用OpenCV实现人眼的检测与跟踪

    图像处理开发需求 图像处理接私活挣零花钱 请加微信 QQ 2487872782 图像处理开发资料 图像处理技术交流请加QQ群 群号 271891601 本篇博文的基础是 利用OpenCV的级联分类器类CascadeClassifier和Ha
  • 【电机学】直流电机

    直流电机 什么是直流电机 直流电机的工作原理 直流发电机的工作原理 直流电动机的工作原理 可逆性原理 直流电机的主要结构部件 直流电机的电枢绕组 基本特点 并联支路对数 电刷的放置 一些概念 直流电机的磁场 直流电机的空载磁场 电枢电流Ia
  • Win10 自带【屏幕录制】功能(win + G)----(附带:录屏时没有声音,声音不清楚 问题解决;---提取视频中的音频)

    目录 前言 各种工具的快捷键 以及使用 1 Win V 笔记 2 Win G 进入游戏模式 即 运行Xbox Game Bar 3 Win Tab 虚拟桌面 4 Win Shift S 截屏工具 录制视频时 声音超级不清楚 问题解决 1 w
  • SpringBoot:多数据源配置——注解+AOP

    maven依赖
  • Redis系列之发布订阅

    前言 通过Redis可以实现简单的消息 Redis为我们提供了一个发布订阅的功能 下面我们来认识下Redis的发布订阅 发布订阅模型 发布者将消息发布发布到channel频道上 所有订阅了channel频道的客户端都会接收到消息 如下图 相
  • 把思科端口速率改为不协商_端口汇聚—TRUNK技术介绍

    一 概述 随着网络技术的不断发展和应用 网络的速度越来越快 网络的应用也越来越复杂 因此在很多实际应用中网络速度就成为各种网络应用的瓶颈所在 通过升级来提高网络速度是解决问题的一个有效的手段 比如从10M以太网到100M以太网以至于1000
  • Tic-Tac-Toe(三子连)(总结规律)

    Time Limit 1000 mSec Memory Limit 262144 KB Problem Description Kim likes to play Tic Tac Toe Given a current state and
  • 基于灰度的模板匹配(带旋转角度)

    原图 选择模板 旋转180度进行识别 继续旋转 依然可以识别 代码 Searching the best matching of a template in an image with rotation dev close window r
  • STM32使用各传感器demo

    先挖个坑 待整理 语音播报部分 1 VS1053语音模块 2 JQ8400语音模块 智能小车部分 3 寻迹模块 4 避障模块 5 舵机驱动 6 超声波模块 7 L298N模块 8 蓝牙JD31模块 兼容HC 05 9 红外模块 10 MPU
  • 使用golang+antlr4构建一个自己的语言解析器(一)

    Antlr4 简介 ANTLR 全名 ANother Tool for Language Recognition 是基于LL 算法实现的语法解析器生成器 parser generator 用Java语言编写 使用自上而下 top down