编译原理
文章平均质量分 85
Love 6
腾讯WXG在职后台小鹅
展开
-
中科大 编译原理 从零开始的编译原理(第四单元:语法分析(Part I) 算术表达式的语法分析器)
文章目录前引第四单元:语法分析(Part I)1、任务介绍2、实现思路3、代码实现4、示例输入 + 实现效果前引刚刚才发现这个作业真的挺不错的如果对于想要自己实现正则引擎的hxd们 应该先来看一下这个十分简单的作业 对基本的递归下降分析有个初步的认识 再去实现个人认为这个任务有个地方老师给错了 就是第二个检查点 e = (3+4*5))应该改成e = (3+4*5) 后面多个括号我刚开始还以为里面让我们加个对多余括号的判断 在处理中 对于哪里出错的地方自然而然进行 \0的操作 从此处断开原创 2021-11-18 18:22:24 · 1055 阅读 · 0 评论 -
中科大 编译原理 从零开始的编译原理(第三单元:词法分析(Part II) 正则转NFA + NFA转DFA + DFA最小化)
文章目录前引第三单元:词法分析(Part II)1、任务介绍2、实现思路3、代码实现4、示例输入 + 实现效果结束语前引好久不见 自从上一篇写完了第二章作业后 我就没继续写了 哈哈哈 因为这一章的任务就是完成一个正则引擎要完成的所有的事情 如果之前看到过我完成的正则引擎的话 哈哈哈 这个作业还是挺难的 但是我把正则引擎搬过来处理这个实属有点犯规了 但是这些步骤如果都能一步步处理的话 连在一起就能完成一个正则引擎了这里再贴一个我的正则引擎全流程完成的链接吧从零开始自制实现正则引擎 全流程记录原创 2021-11-18 16:50:33 · 805 阅读 · 0 评论 -
从零开始自制实现正则引擎 全流程记录
文章目录前引Regex_Engine 1.01、全流程实现博客链接2、源码仓库链接前引笔者在完成 正则引擎初版 如果算上有效时间的话 大概是4-5天左右就完成了 只包括了 最基础的正则引擎的功能 连接/选择/闭包 当然也包括括号啦 我github上面的readme没写到这一点 我去更新一下拓展功能的话 有时间可能这两天就会做 包括的话 就是 [] {} . + ?这些符号的拓展了 这些功能我还要思考一下怎么实现 但初版已经写出来了 后面如果还有更新的话 我会更新这篇博客以及再把Regex_En原创 2021-11-18 14:46:11 · 1105 阅读 · 0 评论 -
从零开始自制实现正则引擎(最终篇)---- 正则引擎成功运行 自写源码汇总
文章目录前引1、自写源码实现1、main.cpp2、global.h3、ReTree.h4、DFA_node.h5、DFA.h6、NFA_node.h7、NFA.h8、ASTTree_node.h9、ASTTree.h2、正则引擎实现效果1、实现结果12、实现效果2前几篇都是我花了半个晚上 4个小时写的博客总览 今天起床了 待会还有不到一个小时就去上大物实验课了这一个小时我就在一篇里面把之前写到过的源码都放进来吧 最后再写一篇汇总篇 待会还得把源码上传到我的GitHub上面去 废话不多说了原创 2021-11-18 09:30:46 · 1004 阅读 · 0 评论 -
从零开始自制实现正则引擎(五)---- DFA状态到转移图生成 最长字串匹配优先
文章目录查阅相关链接前引从零开始自制实现正则引擎(五)1、DFA状态到转移图生成1、状态转移容器选择2、代码实现1、ReTree.h3、验证正则引擎实现正确1、验证结果1(验证正确)2、验证结果2(验证正确)3、验证结果3(验证正确)4、验证结果4(验证正确)查阅相关链接编译原理(网易云课堂 中科大 编译原理)前引最后的一篇讲解代码啦 最后就是汇总时刻了 但是还有些一点点尾巴没有讲 就是我们最后怎么处理匹配字串 但是现在我的代码还没有放到Github上面去 只能明天一早弄了 现在都十点钟了原创 2021-11-17 22:22:50 · 642 阅读 · 0 评论 -
从零开始自制实现正则引擎(四)---- 确定有限状态自动机DFA最小化 Hopcroft算法
文章目录查阅相关链接代码实现查阅相关链接代码实现这部分其实就是简化`DFA`状态的 我们不难看出 其实之前`DFA`还是有地方可以简化的 简化的话 不仅可以使我们后面的转移表内存消耗少一些 还会使整个子串匹配的时间匹配少一些 但是需要多做的工作就是 我们需要花时间去切割 - -原创 2021-11-17 21:59:27 · 1156 阅读 · 2 评论 -
从零开始自制实现正则引擎(三)---- 非确定有限状态自动机NFA转换为确定有限状态自动机DFA
文章目录相关算法博客链接相关算法博客链接编译原理(网易云课堂 中科大 编译原理)子集生成算法(对于判断子集是否重复存在于工作集启发)下面内容 对于没有学习过子集构造算法应该来说是看不懂的 所以建议先去仔细看看 视频中`词法分析`中的`NFA->DFA`那部分 还有实例讲解 看完再来看下面部分 下面不会对具体算法很详细的讲解 个人认为实现出这一部分还是挺不容易的原创 2021-11-17 21:20:38 · 925 阅读 · 0 评论 -
从零开始自制实现正则引擎(二)---- 抽象语法树AST转化为非确定有限状态自动机NFA
文章目录代码实现1、NFA.h2、NFA_node.h代码实现1、NFA.h#ifndef NFA_H#define NFA_H#include "NFA_node.h"class NFA{private: NFA_node* start; NFA_node* end;public: NFA() { start = new NFA_node(); end = new NFA_node(0,start->stat原创 2021-11-17 19:22:34 · 588 阅读 · 0 评论 -
从零开始自制实现正则引擎(一)---- Regex表达式转换为抽象语法树AST
查阅相关链接编译原理(网易云课堂 中科大 编译原理)如何从零写一个正则表达式引擎?(zhihu问答)词法分析中正则表达式转换成nfa的实现(zhihu问答)如何将正则表达式转换为NFA(博客园)简易正则表达式引擎的实现(博客园)#include <iostream>#include <string>#include <stack>#include <unordered_map>using namespace std;#define.原创 2021-11-17 18:40:42 · 1792 阅读 · 0 评论 -
中科大 编译原理 从零开始的编译原理(第一章 编译器介绍 任务:实现小型的从表达式语言Sum到栈计算机Stack的编译器)
文章目录前引第一章:编译器介绍1、任务介绍2、实现流程3、函数实现1、list_reverse_print2、compile4、代码实现5、实现效果结束语前引各位好 这篇是我开坑的第一篇编译原理的博客 也是第一篇关于我学习编译原理的博客 不得不说一下 在这段时间中 尤其是上一周 和 这一周 今天已经是大二上的第十周了 这段时间我的心情是比较的down的至于为什么down 是因为 可能这段时间对于数据库 和 计网想要在重新反复看的抵触情绪比较强烈 再加上自己这段时间学习效率相对大一没有那么高了原创 2021-11-11 19:51:01 · 2397 阅读 · 2 评论