ANTLR4

配置开发环境

下载antlr4 jar包

https://github.com/antlr/antlr4/blob/master/doc/getting-started.md

#安装jdk11和antlr4.13
# wget https://github.com/antlr/antlr4/archive/refs/tags/4.13.1.tar.gz
# wget https://repo.huaweicloud.com/java/jdk/11.0.2+9/jdk-11.0.2_linux-x64_bin.tar.gz
#设置环境变量
export JAVA_HOME=/data0/huozai/software/installed/jdk-11.0.2/
export PATH=/opt/installed/jdk-11.0.2/bin:$PATH
cur=`pwd`
export CLASSPATH=$cur/antlr-4.13.1-complete.jar:.
#javac -version
#antlr4
#antlr4 Expr.g4
#antlr4-parse Expr.g4 prog -gui
#antlr4-parse Expr.g4 prog -tree
#antlr4-parse Expr.g4 prog -tokens -trace
#1+2*3
#antlr4 Expr.g4
#antlr4 -Dlanguage=Cpp Expr.g4#设置工具
alias antlr4='java -Xmx500M -cp "$cur/antlr-4.13.1-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
alias grun='java -Xmx500M -cp "$cur/antlr-4.13.1-complete.jar:$CLASSPATH" org.antlr.v4.gui.TestRig'# 生成代码
# antlr4 Hello.g4
# antlr4 Hello.g4 -visitor # 编译运行代码
# javac Hello*.java
# grun Hello r -tree# 生成树结构
# yum install ghostscript
# grun Hello r -ps hello_tree.ps
# ps2pdf hello_tree.ps test.pdf 生成树

Hello

// Define a grammar called Hello
grammar Hello;
r  : 'hello' ID ;         // match keyword hello followed by an identifier
ID : [a-z]+ ;             // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines

已经写好的grammar,可以直接拿来用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.5C语言 双曲正弦函数(*) 优化麦克劳林公式

一.传统算法 #include<stdio.h> #include<math.h> int jc(int x); int main(){double x,eps,y0.0;scanf("%lf%lf",&x,&eps);int de1,i1;double item1.0;while(fabs(item)>eps){itempow(x,i)/jc(de);i2;yitem;}printf("%.6f\n",y); …

力扣122. 买卖股票的最佳时机 II

动态规划 思路&#xff1a; 假设 dp[i][0] 是第 i 天手上没有股票时的最大利润&#xff0c; dp[i][1] 是第 i 天手上有 1 支股票的最大利润&#xff1b;dp[i][0] 的迁移状态为&#xff1a; dp[i - 1][0]&#xff0c;前一天手上已经没有股票&#xff0c;没有发生交易&#xff1…

buildroot 编译错误【001】

在GitHub 查找错误,也挺好用 解决办法 fakeroot 错误

linux 安装vscode后打开,报错 undefined symbol:gbm_bo_get_modifier

更换低版本安装 教程如下&#xff1a; Jetson AGX 安装 VScode 教程&#xff0c;适用于所有系统安装旧版本 VScode_vscode 低版本-CSDN博客

UE相关杂项笔记

1.PAK包解析 UE4如何反向查找Pak里面包含哪些文件 - 哔哩哔哩 CMD控制台命令输入 D:&quot;Epic Games&quot;\UE_5.1\Engine\Binaries\Win64\UnrealPak.exe 包路径 -list *文件夹带空格时 添加“ ”包裹住文件夹名 解包工具路径 UE引擎安装路径\UE_5.1\Engine\Binarie…

从Spring Cloud Alibaba开始聊架构

作为SpringCloudAlibaba微服务架构实战派上下册和RocketMQ消息中间件实战派上下册的作者胡弦。 另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.htmlhttps://item.jd…

服务端如何防止订单重复支付

概述 如图是一个简化的下单流程&#xff0c;首先是提交订单&#xff0c;然后是支付。 支付的话&#xff0c;一般是走支付网关&#xff08;支付中心&#xff09;&#xff0c;然后支付中心与第三方支付渠道&#xff08;微信、支付宝、银联&#xff09;交互。 支付成功以后&…

C语言——指针

一、定义 指针也就是内存地址&#xff0c;指针变量是用来存放内存地址的变量。 将内存以一个字节分为一个个内存单元&#xff0c;每个内存单元都进行编号&#xff0c;这个编号就是地址&#xff0c;也就是指针。 int b 1;int *pb &b;//这里的pb变量是一个整型指针变量&a…

某音关键词搜索商品接口,某音关键词搜索商品列表接口,宝贝详情页接口,某音商品比价接口接入方案

要接入API接口以采集电商平台上的商品数据&#xff0c;可以按照以下步骤进行&#xff1a; 1、找到可用的API接口&#xff1a;首先&#xff0c;需要找到支持查询商品信息的API接口。这些信息通常可以在电商平台的官方文档或开发者门户网站上找到。 2、注册并获取API密钥&#x…

前端深拷贝

深拷贝&#xff1a;是指源对象与拷贝对象指针指向的内存空间不是同一块空间&#xff0c;相互独立&#xff0c;其中任何一个对象的改动都不会对另外一个对象造成影响。 在项目中我们往往要使用到深拷贝 &#xff0c;下面是实现深拷贝的方法 一.JSON.parse(JSON.stringify(obj)…

计算机网络期末复习

计算机网络复习 1.第一章 1.2.2计算机啊网络的分类(认识) 按网络的覆盖范围进行分类&#xff1a; 局域网城域网广域网个人区域网 按网络的使用者进行分类&#xff1a; 公用网专用网 1.3互联网的组成(掌握) 从功能上可以划分为以下两大部分&#xff1a; 边缘部分&#x…

MySQL-DML

DML是数据操纵语言&#xff0c;用来对表中数据进行增删改操纵。 添加数据&#xff1a;INSERT 1.给指定字段添加数据&#xff1a;INSERT INTO 表名(字段名1,字段名2,...)VALUES(值1,值2); 2.给全部字段添加数据&#xff1a;INSERT INTO 表名VALUES(值1,值2) 3.给指定字段批量添…

坐标经纬度的基本运算(2个坐标经纬度的距离、中心点坐标经纬度范围内的坐标计算)

现在的应用大都居于LBS服务&#xff0c;用户地理位置的获取&#xff08;经纬度坐标、所属行政区域&#xff09;&#xff0c;提供服务场所的地理位置也有行政区域信息和坐标信息。 用户与服务场所的联系&#xff0c;就近服务原则的设计&#xff0c;服务场所相对于用户的排序。 …

这些流行的K8S工具,你都用上了吗

关注【云原生百宝箱】公众号&#xff0c;获取更多云原生消息 本文介绍了一些流行的 Kubernetes 工具和常见的集群组件。例如 Helm 作为 Kubernetes 应用的包管理器&#xff0c;以及本地开发所需的 Kubernetes 发行版。另外提及了一些常见的集群组件&#xff0c;如集群自动缩放器…

Linux 磁盘 I/O 工具

iostat iostat 为用于查看磁盘输入输出的性能监控工具 iostat [ options ] [ <interval> [ <count> ] ]参数说明&#xff1a; options 取值如下&#xff1a;-C&#xff1a;显示 CPU 使用情况。 -d&#xff1a;显示磁盘使用情况。 -k&#xff1a;以 KB 为单位显示…

【每日论文阅读】图像修复模型

bad case https://huggingface.co/runwayml/stable-diffusion-inpainting/discussions/31论文 MAT 论文&#xff1a;MAT: Mask-Aware Transformer for Large Hole Image Inpainting 代码&#xff1a; 摘要&#xff1a; RePaint 论文&#xff1a;RePaint: Inpainting usi…

软件测试|一篇文章带你深入理解SQL约束

深入理解SQL约束&#xff1a;保障数据完整性和一致性的重要工具 SQL约束是在关系型数据库中用于保障数据完整性和一致性的重要工具。本文将深入探讨SQL约束的概念、类型以及应用&#xff0c;以帮助读者更好地理解和使用SQL约束来确保数据库中的数据质量。 SQL约束 约束&…

“巴渝工匠杯”2022年重庆市职业院校技能大赛(高职组)云计算样题

“巴渝工匠杯”2022年重庆市职业院校技能大赛&#xff08;高职组&#xff09;云计算样题 需要软件包环境可私信博主 【赛程名称】云计算赛项第一场次-私有云 某企业拟使用OpenStack搭建一个企业云平台&#xff0c;以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授…

2024年【北京市安全员-A证】考试试卷及北京市安全员-A证试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-A证考试试卷根据新北京市安全员-A证考试大纲要求&#xff0c;安全生产模拟考试一点通将北京市安全员-A证模拟考试试题进行汇编&#xff0c;组成一套北京市安全员-A证全真模拟考试试题&#xff0c;学员可…

python-查漏补缺笔记-更新中

包导入时__init__.py中命令的执行顺序和sys.modules变化 ref: https://edu.csdn.net/skill/practice/python-3-6/164 在有父包和子包的情况下&#xff0c;父包中的“ __ init__.py”语句会在子包的“ __ init__.py”语句之前执行&#xff0c;然后按下列顺序执行导入子包和模块…