当前位置: 首页 > news >正文

哈尔滨做网站设计北京建筑人才招聘网

哈尔滨做网站设计,北京建筑人才招聘网,seo搜索排名优化,合肥哪家做网站文章目录前言源码插件描述pom引入插件案例:实现hello 标识符 案例1、引入Antlr4的pom运行依赖2、定义语义语法,配置.g4文件实现java代码3、编写完之后,执行命令实现编译4、编写单测测试使用参考文章资料获取前言 博主介绍:✌目前…

文章目录

  • 前言
  • 源码
  • 插件描述
  • pom引入插件
  • 案例:实现hello 标识符 案例
    • 1、引入Antlr4的pom运行依赖
    • 2、定义语义语法,配置.g4文件实现java代码
    • 3、编写完之后,执行命令实现编译
    • 4、编写单测测试使用
  • 参考文章
  • 资料获取

maven配置Antlr4插件案例Demo

前言

博主介绍:✌目前全网粉丝4W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。

博主所有博客文件目录索引:博客目录索引(持续更新)

CSDN搜索:长路

视频平台:b站-Coder长路

源码

当前文档配套相关源码地址:

  • gitee:https://gitee.com/changluJava/demo-exer/tree/master/java-sqlparser/demo-Antlr/demo-Antlr4-demo
  • github:https://github.com/changluya/Java-Demos/tree/master/java-sqlparser/demo-Antlr/demo-Antlr4-demo

插件描述

在开源组件尤其是计算引擎中,经常使用使用Antlr4定义SQL语法。若不做好相应的代码配置,则会导致用户需要在本地安装Antlr Tools或者在IDEA中配置Antlr插件,这对用户来说是十分不友好的。

因此,Antlr4还有对应的maven插件(antlr4-maven-plugin),便可以实现代码的友好编译

pom引入插件

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><antlr.version>4.8</antlr.version>
</properties><build><plugins><plugin><groupId>org.antlr</groupId><artifactId>antlr4-maven-plugin</artifactId><version>${antlr.version}</version><executions><execution><id>antlr</id><goals><goal>antlr4</goal></goals><phase>generate-sources</phase></execution></executions><configuration><sourceDirectory>${basedir}/src/main/resources</sourceDirectory><outputDirectory>${basedir}/src/main/java/com/changlu/hello</outputDirectory><listener>true</listener><visitor>true</visitor><treatWarningsAsErrors>true</treatWarningsAsErrors></configuration></plugin></plugins>
</build>

案例:实现hello 标识符 案例

1、引入Antlr4的pom运行依赖

下面步骤3里编译生成的Java代码,将自动引用org.antlr.v4.runtime包,需要pom.xml文件中添加org.antlr:antlr4-runtime,才能成功编译所有模块。

<dependencies><dependency><groupId>org.antlr</groupId><artifactId>antlr4-runtime</artifactId><version>${antlr.version}</version></dependency>
</dependencies>

2、定义语义语法,配置.g4文件实现java代码

img

以一个最简单的例子:匹配关键字hello和标志符,来了解一下Antlr的应用。首先定义语法和词法,创建一个.g4文件,用于定义词法分析器(lexer)和语法解析器(Parser),g4文件内容如下:

// 通过@header指定package信息的antlr4语法示例
grammar Hello; // 1、定义文法的名字//2、java package
@header {package com.changlu.hello;
}s  : 'hello' ID ;            // 3、匹配关键字hello和标志符
ID : [a-z]+ ;                // 标志符由小写字母组成
WS : [ \t\r\n]+ -> skip ;    // 4、跳过空格、制表符、回车符和换行符

其中,
1、定义了 grammar 的名字,名字需要与文件名对应
2、定义生成的Java类的package
3、s定义的语法,会使用到下方定义的正则表达式词法
4、定义了空白字符,后面的 skip 是一个特殊的标记,标记空白字符会被忽略。

3、编写完之后,执行命令实现编译

img

mvn antlr4:antlr4

编译成功:

img

此时就会将编译的代码复制到.g4文件指定的包中:

img

4、编写单测测试使用

img

package com.changlu;import com.changlu.hello.HelloLexer;
import com.changlu.hello.HelloParser;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;public class HelloTest {public static void main(String[] args) throws Exception {testStr("hello world");// 错误语法
//        testStr("helloworld");
//        testStr("hello 123");}public static void testStr(String str) {HelloLexer lexer = new HelloLexer(CharStreams.fromString(str));CommonTokenStream tokens = new CommonTokenStream(lexer);HelloParser parser = new HelloParser(tokens);ParseTree tree = parser.s();System.out.println(tree.toStringTree(parser));}}

img

使用错误语法报错如下:

img


参考文章

[1]. mac上的Antlr4环境搭建:https://blog.csdn.net/u014454538/article/details/125879636

[2]. Antlr4系列(一):语法分析器学习:https://zhuanlan.zhihu.com/p/483679676

资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

  • 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
  • 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
  • 学习与生活-专栏:可以了解博主的学习历程
  • 算法专栏:算法收录

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅

http://www.dtcms.com/a/464574.html

相关文章:

  • 网站建设kaicz政和网站建设
  • 网站最近收录装饰公司网站制作
  • 孝感网站制作凡科网站建站后 怎么编辑自己的代码源
  • 企业网站 asp php好人一生平安网站哪个好
  • 台州外贸网站重庆企业网站建设报价
  • 网站打不开dns修改戴尔网站建设目标
  • 霸县网站建设招网络推广招聘
  • vs做网站怎么加文件夹高端婚恋网站排名
  • 惠州网站制作设计seo公司后付费
  • 怎样开发网站建设短视频制作完成网站
  • 有免费建站的网站吗有免费的服务器吗
  • 优秀企业网站欣赏店名设计南宁画册设计公司
  • 英文字体设计网站学校网站开发实际意义
  • 内容展示型网站特点网站运营招聘
  • 重庆建设厅网站首页湖北省住房和城乡建设网站
  • WordPress电影网站源码重庆森林经典台词罐头
  • 支付宝手机网站支付重大军事新闻
  • 学做网站好学吗删负面的网站
  • 长沙建站公司做网站一定要公司备案吗
  • 电商设计师网站投资公司是做什么的
  • python 兼职网站开发郑州高端定制网站建设
  • 触摸网站手机wordpress iis7 伪静态
  • 网站设计制作如何评价电子商务网站建设与设计论文
  • 企业高端网站制作口碑营销是指
  • 电子商务网站建设陈建祥wordpress数据量大网站访问
  • asp网站开发环境中国网重庆频道
  • 怎样制作网站建设规划图如何修改asp网站
  • 海南网站建设推广公司广西建设行政主管部门官方网站
  • 市场seo是什么意思浏阳seo快速排名
  • 免费网站空间域名深圳包装设计公司有哪些呢