随笔分类 -  Java.Compiler

摘要:输出如下: 看看和这张图是不是很像呢? 以下是各个节点类的代码: Node抽象基类 Compare类: KeywordNode类: SetNode类: ValueNode类: --END--2019年9月6日15点44分 阅读全文
posted @ 2019-09-06 15:44 逆火狂飙 阅读(2343) 评论(1) 推荐(0)
摘要:Entry类: 输出如下,当然还有可以调整的地方: Lexer类: Tree类: Node类: NodeType枚举: --END-- 2019年9月4日15点42分 阅读全文
posted @ 2019-09-04 15:43 逆火狂飙 阅读(845) 评论(1) 推荐(0)
摘要:Entry类 这个类对表达式的合法性进行了粗筛: 执行结果 以下测试用例都通过了: Lexer类 这个类起词法分析器的作用,其核心利器是正则表达式,分词完毕后得到一个含有中序表达式的列表,如 ”1.2,+,3,*,4“: Tree类 输入一个中序表达式列表,得到构建好的树,这棵树就是算术表达式的语法 阅读全文
posted @ 2019-09-04 11:09 逆火狂飙 阅读(700) 评论(1) 推荐(0)
摘要:Inlet类,这颗二叉树是”人力运维“的: 运行结果如下: Node类 这个类用来表示二叉树节点: NodeType枚举 用来定义二叉树类型: 好了,到此,又把Long long ago学的数据结构又复习了一遍。 --END--2019年9月3日18点42分 阅读全文
posted @ 2019-09-03 18:45 逆火狂飙 阅读(438) 评论(0) 推荐(0)
摘要:Inlet类,入口类,这个类的主要用途是验证用户输入的算术表达式: Lexer类,主要起一个词法分析器的作用,注意这里采用正则表达式简化了代码,比https://www.cnblogs.com/xiandedanteng/p/11445994.html 中Parser类的处理方式简洁些: Trans 阅读全文
posted @ 2019-09-03 10:08 逆火狂飙 阅读(562) 评论(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 逆火狂飙 阅读(985) 评论(0) 推荐(0)
摘要:第二版请见:https://www.cnblogs.com/xiandedanteng/p/11451359.html 入口类,这个类的主要用途是粗筛用户输入的算术表达式: 算术表达式解析器类,它主要起一个词法分析器的作用,由于算术表达式词法较简单,因此逐字读入处理也能完成任务,他的输入是如23+4 阅读全文
posted @ 2019-09-02 13:35 逆火狂飙 阅读(1110) 评论(3) 推荐(0)
摘要:Inlet类: Parser类: Trans类: 执行结果: 喝水不忘挖井人,参考资料如下: 1.Java数据结构与算法(第二版) [美]Robert Lafore著 2.栈的应用--中序表达式转后序表达式 https://www.cnblogs.com/bgmind/p/3989808.html 阅读全文
posted @ 2019-09-02 12:21 逆火狂飙 阅读(303) 评论(0) 推荐(0)
摘要:源码: Parser类: 测试: --End--2019年9月2日08点38分 阅读全文
posted @ 2019-09-02 08:38 逆火狂飙 阅读(359) 评论(0) 推荐(0)
摘要:源码: 运行结果: --End--2019年9月2日08点18分 阅读全文
posted @ 2019-09-02 08:19 逆火狂飙 阅读(568) 评论(0) 推荐(0)

生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东