随笔分类 -  Java.Compiler

摘要:本例代码下载:https://files.cnblogs.com/files/heyang78/MathAnalyzer2-20200524-1.zip 较原有版本,是多了Node类和TreeBuilder类,二者用于构建表达式树: Node类: package com.heyang; public 阅读全文
posted @ 2020-05-24 11:32 逆火狂飙 阅读(178) 评论(1) 推荐(0) 编辑
摘要:本文代码下载:https://files.cnblogs.com/files/heyang78/MathAnalyzer2-20200523-1.zip 新版代码出炉了: Token类: package com.heyang; public class Token { public static f 阅读全文
posted @ 2020-05-23 14:33 逆火狂飙 阅读(162) 评论(1) 推荐(0) 编辑
摘要:parse_expression,parse_term,parse_primary_exp三函数间的递归调用是核心所在. 标记类: package com.heyang; public class Token { public static final int TYPE_PLUS=1; public 阅读全文
posted @ 2020-05-22 14:25 逆火狂飙 阅读(248) 评论(1) 推荐(0) 编辑
摘要:下载地址:https://files.cnblogs.com/files/heyang78/JsonAnalyzer20200518-01.zip 测试用例:https://www.cnblogs.com/heyang78/p/12911174.html 为什么创建此工程? 笔者在开发中曾遇到一个R 阅读全文
posted @ 2020-05-18 16:32 逆火狂飙 阅读(248) 评论(1) 推荐(0) 编辑
摘要:目测以下测试用例都是通过的. 01. 原文={"status":"0000","message":"success","data":{"title":{"id":"001","name":"白菜"},"content":[{"id":"001","value":"你好白菜"},{"id&q 阅读全文
posted @ 2020-05-18 16:08 逆火狂飙 阅读(680) 评论(1) 推荐(0) 编辑
摘要:解析效果: select id,code,name,utime,src,ctime from stock where id<20 and code like '%6%' order by id,code Index Type No Text Type Desc 0 1 select KW:selec 阅读全文
posted @ 2020-05-15 10:25 逆火狂飙 阅读(201) 评论(0) 推荐(0) 编辑
摘要:输出: select a.f1, b.f2 from table01 a, ( select a from tb ) b where a.f1=1 and b.f2=2 or b.f3=3 order by a.f1, b.f2 Text Depth Parent Prev Next Child C 阅读全文
posted @ 2020-05-14 20:04 逆火狂飙 阅读(158) 评论(0) 推荐(0) 编辑
摘要:处理SQL及分词效果: select * from ( select rownum as rn,tb1.stuid,tb1.summary from ( select stuid,sum(score) as summary from gk_score group by stuid order by 阅读全文
posted @ 2020-05-13 13:06 逆火狂飙 阅读(508) 评论(0) 推荐(0) 编辑
摘要:伸手党的福音 代码下载:https://files.cnblogs.com/files/xiandedanteng/JsonLexerBuilder20191202.rar 互联网上成型的对Json进行解析的工具包不少,可用来用去就觉得没意思了,哪怕它是大厂出品,可作为一个API的使用者,用得再爽也 阅读全文
posted @ 2019-12-02 20:37 逆火狂飙 阅读(318) 评论(2) 推荐(0) 编辑
摘要:输出: --END-- 2019年12月1日12:29:00 阅读全文
posted @ 2019-12-01 12:29 逆火狂飙 阅读(392) 评论(0) 推荐(0) 编辑
摘要:本文后续:https://www.cnblogs.com/xiandedanteng/p/11973129.html 编译第一步:将文本解析成Java对象构成的语法树 第二步:将语法树输出整形好的Json新文本。 下面完成的是第二步: 输出: 可以看到,子对象都是按字母序排列的,这也是制作此类的最终 阅读全文
posted @ 2019-12-01 11:25 逆火狂飙 阅读(552) 评论(0) 推荐(0) 编辑
摘要:Entry入口 main中自顶向下手动创建了sql语法树 先把输出秀一下: 再看诸节点类写法: Node类: KeywordNode类: ValueNode类: SetNode类: CompareNode类: 与前作相比加了异常,这在一定程度上能爆出构建时错误。 --END--2019年9月6日18 阅读全文
posted @ 2019-09-06 18:47 逆火狂飙 阅读(549) 评论(0) 推荐(0) 编辑
摘要:输出如下: 看看和这张图是不是很像呢? 以下是各个节点类的代码: Node抽象基类 Compare类: KeywordNode类: SetNode类: ValueNode类: --END--2019年9月6日15点44分 阅读全文
posted @ 2019-09-06 15:44 逆火狂飙 阅读(2320) 评论(1) 推荐(0) 编辑
摘要:select username, ismale from userinfo where age > 20 and level > 5 and 1 = 1 --END-2019年9月5日17点47分 阅读全文
posted @ 2019-09-05 17:47 逆火狂飙 阅读(364) 评论(0) 推荐(0) 编辑
摘要:Entry类: 输出如下,当然还有可以调整的地方: Lexer类: Tree类: Node类: NodeType枚举: --END-- 2019年9月4日15点42分 阅读全文
posted @ 2019-09-04 15:43 逆火狂飙 阅读(839) 评论(1) 推荐(0) 编辑
摘要:Entry类 这个类对表达式的合法性进行了粗筛: 执行结果 以下测试用例都通过了: Lexer类 这个类起词法分析器的作用,其核心利器是正则表达式,分词完毕后得到一个含有中序表达式的列表,如 ”1.2,+,3,*,4“: Tree类 输入一个中序表达式列表,得到构建好的树,这棵树就是算术表达式的语法 阅读全文
posted @ 2019-09-04 11:09 逆火狂飙 阅读(686) 评论(1) 推荐(0) 编辑
摘要:Inlet类,这颗二叉树是”人力运维“的: 运行结果如下: Node类 这个类用来表示二叉树节点: NodeType枚举 用来定义二叉树类型: 好了,到此,又把Long long ago学的数据结构又复习了一遍。 --END--2019年9月3日18点42分 阅读全文
posted @ 2019-09-03 18:45 逆火狂飙 阅读(434) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/ZiFung_Yip/article/details/84646991 阅读全文
posted @ 2019-09-03 12:13 逆火狂飙 阅读(434) 评论(2) 推荐(0) 编辑
摘要:Inlet类,入口类,这个类的主要用途是验证用户输入的算术表达式: Lexer类,主要起一个词法分析器的作用,注意这里采用正则表达式简化了代码,比https://www.cnblogs.com/xiandedanteng/p/11445994.html 中Parser类的处理方式简洁些: Trans 阅读全文
posted @ 2019-09-03 10:08 逆火狂飙 阅读(556) 评论(0) 推荐(0) 编辑
摘要:手工分词稍嫌麻烦,不好维护,而利用正则表达式就利索多了。Java提供了java.util.regex.Matcher,java.util.regex.Pattern类来帮助我们实现此功能。 例一:以下程序将把"This is a farm that that raises dairy cattle. 阅读全文
posted @ 2019-09-03 08:36 逆火狂飙 阅读(970) 评论(0) 推荐(0) 编辑

生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示