JFLex和JavaCUP简单使用

2023-11-14

由于需要使用到doris中的sql parser功能,所以决定使用其定义好的flex文件和cup文件,生成自己sqlscanner和parser类。步骤如下:

1、下载JFlex和JavaCUP程序,路径分别为

https://www.jflex.de/

http://www2.cs.tum.edu/projects/cup/docs.php#running

当前使用版本为jflex1.7.0,cup版本为0.11b版本。

下载之后配置jflex中bin路径下的bat文件,添加JAVA_HOME路径,并且修改JFLEX_HOME路径。同时,将jflex的bin目录加入到环境变量。

解压cup的压缩包。

2、使用JFlex生成scanner文件

在命令行下输入jflex -v,然后会调出jflex的图形化界面。选好文件,可以直接生成.java文件。

3、使用cup生成parser文件

切换路径到cup目录,输入命令:

其中-expect 1000为允许有1000个expect。

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

JFLex和JavaCUP简单使用 的相关文章

  • Golang 程序测试框架

    注意事项 测试用例文件名必须以 test go结尾 如 person test go 测试用例函数必须以Test开头 比如person test go文件中的TestReStore 测试函数的形参必须是t testing T 一个测试用例文
  • stm32(SCCB)+ov7670摄像头输出图像程序

    一 简介 OV7670一般模块指低成本数字输出CMOS摄像头 其摄像头包含30w像素的CMOS图像感光芯片 3 6mm焦距的镜头和镜头座 板载CMOS芯片所需要的各种不同电源 电源要求详见芯片的数据文件 板子同时引出控制管脚和数据管脚 方便
  • 版本号比较 [java]

    原文地址 java版本号比较 思路 将版本号按点分割 并转成数字类型 放入list 取两个版本位数的最大数 如 1 0 1为3位 1 0 0 1为4位 将位数不够的版本进行补全 不够部分补成0 从第一位开始比较 出现大于情况返回1 出现小于

随机推荐

  • 为什么米聊干不过微信

    1 核心功能不稳定 2 广播太多用户体验差 3 取名太局限 4 发展新朋友能力有限 5 运营能力差
  • C++set容器set和multiset区别

    C set容器set和multiset区别 学习目标 掌握set和multiset的区别 区别 set不可以插入重复数据 而multiset可以 set插入数据的同时会返回插入结果 表示插入是否成功 multiset不会检测数据 因此可以插
  • QT 自定义信号和槽

    好久没有静下心来思考了 每天靠工作驱动 忙碌但不踏实 QT信号与槽机制一直在用 也会用 但只是知其然不知其所以然 今天临近下班给自己点清醒的时间 详细了解了下 总结如下 信号与槽机制是QT中不同对象相互通信的一种方法 有两种写法 第一种是S
  • Cassandra创建键空间(Keyspace)

    Cassandra查询语言 CQL 可帮助开发人员与Cassandra沟通交互 Cassandra查询语言的语法与SQL非常相似 什么是键空间 Keyspace 键空间 Keyspace 是用于保存列族 用户定义类型的对象 键空间 Keys
  • ios 超签签名服务器搭建(超签)

    为什么要搭建签名服务器吗 因为应用不能上架App Store 使用企业签名频繁掉签造成客户流失 用户体验不好 ios安装的app有几种方式吗 1 App Store 安装 符合法律法规的能走app Store的app 2 企业签名安装 灰色
  • Paxos算法细节详解(一)--通过现实世界描述算法

    Paxos算法细节详解 一 通过现实世界描述算法 Paxos分析 最近研究paxos算法 看了许多相关的文章 概念还是很模糊 觉得还是没有掌握paxos算法的精髓 所以花了3天时间分析了libpaxos3的所有代码 此代码可以从https
  • SpringBoot_5

    SpringBoot对静态资源的映射规则 如果我们需用给web项目中添加css js html文件的话 我们会发现此时没有webapp目录 由于springboot是以jar包的方式打包程序的因此是没有webapp目录的 那么我们的css
  • VMware虚拟机从一台电脑复制到另一台电脑

    在一台电脑上利用虚拟机创建了centos 如果想在家里的电脑虚拟机上也运行centos 不用再重新安装以及漫长的安装等待了 可以利用先前在虚拟机上安装centos生成的 vmx文件和 vmdk文件 拷贝到U盘 再重新导入到新电脑就可以了 省
  • DBMS_STATS分析表 (zt) dbms_stats.set_table_stats 手工设置统计信息

    作用 DBMS STATS GATHER TABLE STATS统计表 列 索引的统计信息 DBMS STATS GATHER TABLE STATS的语法如下 DBMS STATS GATHER TABLE STATS ownname V
  • 关于React + Antd 按需引入样式未生效问题

    第一步 npm install antd 安装antd 第二步 在根目录下创建 babelrc文件 配置按需引入需要用到的plugin npm install save dev import babel import presets bab
  • 跨服务器共享文件,不同服务器之间实现文件共享

    不同服务器之间实现文件共享 内容精选 换一换 表1列出了弹性文件服务的常用功能 在使用弹性文件服务之前 建议您先通过常用概念介绍了解NFS CIFS等基本概念 以便更好地理解弹性文件服务提供的功能 表示该类型的文件系统支持该功能 表示该类型
  • 自定义指令的说明和注册

    自定义指令说明 Vue3 除了核心功能默认内置的指令 v model 和 v show Vue 也允许注册自定义指令 v xxx 注意 代码复用和抽象的主要形式是组件 然而 有的情况下 你仍然需要对普通 DOM 元素进行底层操作 这时候就会
  • Linux/多线程的同步与互斥

    线程安全 多个执行流对资源进行争抢访问 但不会产生数据二义性 线程安全的实现 同步 互斥 同步 通过条件判断实现对临界资源访问的合理性 互斥 通过同一时间对临界资源的唯一访问 实现对临界资源访问的安全性 互斥锁 互斥的实现 互斥锁 在多任务
  • 第一次使用Eclipse:编写简单的Java小程序

    通过前部分的学习 了解了Java的安装和配置 那么从现在开始 要开始自己着手编写Java程序 学习一门编程语言 学会编写的第一个程序一般都是写一个输出 hello World 语句的小程序来表示自己开始学习这门语言 那么这篇教程也不例外 因
  • fsnotify 与 too many open files

    fsnotify fsnotify 是用来监听文件 目录变化的一个 golang 开源库 在 Linux 系统使用中 遇到了too many open files问题 首次尝试 通常 有 2 处配置太小 会触发too many open f
  • 最惊艳的sql

    select from girls where age between 18 and 20 and boyfriend is null order by cup desc
  • 不管人工智能发展如何 开发者都有必要了解 Linux 内核

    Linux内核在计算机世界的地位有目共睹 称它为计算机世界的基石也不为过 而且它还是全球最大的开源项目 几乎最知名的科技公司都参与其中 包括谷歌 Red Hat SUSE Intel Facebook 甲骨文和华为等 当然还包括Linux的
  • 将cmd中输出数据 保存为TXT文本

    原文 http blog sina com cn s blog 6d2d58cd0100x7zw html 在使用Windows XP中的cmd exe工具时 有时候我们想要把我们的输入命令及结果保存起来 但是用复制的方法过于麻烦 有时输出
  • LeetCode 热题 HOT 100:滑动窗口专题

    LeetCode 热题 HOT 100 https leetcode cn problem list 2cktkvj 文章目录 3 无重复字符的最长子串 128 最长连续序列 239 滑动窗口最大值 438 找到字符串中所有字母异位词 3
  • JFLex和JavaCUP简单使用

    由于需要使用到doris中的sql parser功能 所以决定使用其定义好的flex文件和cup文件 生成自己sqlscanner和parser类 步骤如下 1 下载JFlex和JavaCUP程序 路径分别为 https www jflex