随笔分类 - Java.Compiler
摘要:【代码下载】 https://files.cnblogs.com/files/heyang78/TableParser220825.rar?t=1661420885 【目标】 解析Oracle 建表语句文本,从中取出表名、表注释、字段名、字段注释、字段类型、是否主键等信息 【待解析文本示例】 cre
阅读全文
摘要:原文: select id,rank() over (order by id) as seq,sum(a) as sm,count(*) as cnt from emp 整理后: select id, rank() over order by id as seq, sum(a) as sm, cou
阅读全文
摘要:软件功能:解析查询语句,按编译原理分解出其中的字段、表、条件等,形成抽象语法树,并据此将sql整理成层次分明、排列清晰的形式。 界面截图: 1.06版下载地址(可执行包及源码):https://files.cnblogs.com/files/heyang78/sqlresolver106_barja
阅读全文
摘要:执行包和源码下载地址:https://files.cnblogs.com/files/heyang78/arithexp101_210814_src_final.rar 使用前提:安装JDK1.8,若不会请参考 https://www.cnblogs.com/heyang78/p/7429783.h
阅读全文
摘要:我在5.1-5.5做基于SpringBoot的web应用,后来感觉Web程序还是low,没多大意思,于是把去年八九月就想做的编译又捡起来了。 由于龙书虎书鲸书的存在,加上自己不是科班出生,编译原理在我心中有如一座高耸入云的高山,实话说以前被三本书虐过,再捡起来有些打怵。 好在现在互联网购书快捷方便,
阅读全文
摘要:源码下载:https://files.cnblogs.com/files/heyang78/BasicInterpreter2-20200601-2.rar 用编程语言打印九九乘法表不难,用自编解释器运行自编脚本打印九九乘法表难度就多了那么一丢丢。本例就是讲述我编的这个程序: 输入脚本: for x
阅读全文
摘要:此工程用途:将xml同级属性/子节点按字母序排列重新输出. 源码下载: https://files.cnblogs.com/files/heyang78/XmlAnalyzer-20200526-1.zip 核心类: Token,此类用于将XML文件中的文本分类: package com.heyan
阅读全文
摘要:下载地址:https://files.cnblogs.com/files/heyang78/JsonAnalyzer20200518-01.zip 测试用例:https://www.cnblogs.com/heyang78/p/12911174.html 为什么创建此工程? 笔者在开发中曾遇到一个R
阅读全文
摘要:目测以下测试用例都是通过的. 01. 原文={"status":"0000","message":"success","data":{"title":{"id":"001","name":"白菜"},"content":[{"id":"001","value":"你好白菜"},{"id&q
阅读全文
摘要:处理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
阅读全文
摘要:Entry入口 main中自顶向下手动创建了sql语法树 先把输出秀一下: 再看诸节点类写法: Node类: KeywordNode类: ValueNode类: SetNode类: CompareNode类: 与前作相比加了异常,这在一定程度上能爆出构建时错误。 --END--2019年9月6日18
阅读全文
摘要:输出如下: 看看和这张图是不是很像呢? 以下是各个节点类的代码: Node抽象基类 Compare类: KeywordNode类: SetNode类: ValueNode类: --END--2019年9月6日15点44分
阅读全文
摘要:Entry类: 输出如下,当然还有可以调整的地方: Lexer类: Tree类: Node类: NodeType枚举: --END-- 2019年9月4日15点42分
阅读全文
摘要:Entry类 这个类对表达式的合法性进行了粗筛: 执行结果 以下测试用例都通过了: Lexer类 这个类起词法分析器的作用,其核心利器是正则表达式,分词完毕后得到一个含有中序表达式的列表,如 ”1.2,+,3,*,4“: Tree类 输入一个中序表达式列表,得到构建好的树,这棵树就是算术表达式的语法
阅读全文
摘要:Inlet类,这颗二叉树是”人力运维“的: 运行结果如下: Node类 这个类用来表示二叉树节点: NodeType枚举 用来定义二叉树类型: 好了,到此,又把Long long ago学的数据结构又复习了一遍。 --END--2019年9月3日18点42分
阅读全文
摘要:Inlet类,入口类,这个类的主要用途是验证用户输入的算术表达式: Lexer类,主要起一个词法分析器的作用,注意这里采用正则表达式简化了代码,比https://www.cnblogs.com/xiandedanteng/p/11445994.html 中Parser类的处理方式简洁些: Trans
阅读全文
摘要:手工分词稍嫌麻烦,不好维护,而利用正则表达式就利索多了。Java提供了java.util.regex.Matcher,java.util.regex.Pattern类来帮助我们实现此功能。 例一:以下程序将把"This is a farm that that raises dairy cattle.
阅读全文
摘要:第二版请见:https://www.cnblogs.com/xiandedanteng/p/11451359.html 入口类,这个类的主要用途是粗筛用户输入的算术表达式: 算术表达式解析器类,它主要起一个词法分析器的作用,由于算术表达式词法较简单,因此逐字读入处理也能完成任务,他的输入是如23+4
阅读全文
摘要:Inlet类: Parser类: Trans类: 执行结果: 喝水不忘挖井人,参考资料如下: 1.Java数据结构与算法(第二版) [美]Robert Lafore著 2.栈的应用--中序表达式转后序表达式 https://www.cnblogs.com/bgmind/p/3989808.html
阅读全文
摘要:源码: Parser类: 测试: --End--2019年9月2日08点38分
阅读全文
浙公网安备 33010602011771号