
编译原理
超然_烟火
超然于物外 烟火于一瞬
展开
-
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述
说明:本系列文章介绍的算法均来自编译原理(龙书)一书,如果读者对代码没有兴趣,只想了解算法思路,完全可以阅读龙书相关章节内容,比我讲得清晰透彻。序: 啃编译原理半年以来,任然徘徊在前4章,其间反反复复,时而不求甚解,时而略有所悟。后来接触到正则表达式,对其实现原理颇有兴趣,于是百度之、谷歌之,以求解惑。先是搜索到不少国内发表的学术论文和各位大侠博客上的文章,后又通原创 2013-06-09 14:00:32 · 5362 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——2 构造抽象语法树
简要介绍 构造抽象语法树是构造基于DFA的正则表达式引擎的第一步。目前在我实现的这个正则表达式的雏形中,正则表达式的运算符有3种,表示选择的|运算符,表示星号运算的*运算符,表示连接的运算符cat(在实际正则表达式中被省去)。例如对于正则表达式a*b|c,在a*和b之间省略了连接运算符cat。其中|、cat运算符是双目运算符,*运算符是单目运算符。下图来自编译原理一书:原创 2013-06-09 16:59:47 · 5866 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.gitnullable, firstpos, lastpos, followpos函数介绍接着上两篇文章《正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述》《正则表达式引擎的构建——基于编译原理DFA(龙原创 2013-06-24 13:32:01 · 3536 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——4 构造DFA
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git接上篇《正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数》本章将介绍如何使用followpos集合来构建DFA。相关算法和例子在龙书中文第二版的3.9.5节(根据正则表达式构建DFA),算法3.36和例3.原创 2013-06-26 20:40:43 · 2789 阅读 · 1 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——5 DFA最小化
完整引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.gitDFA最小化的算法原理“DFA状态最小化算法的工作原理是将一个DFA的状态集合分划成多个组,每个组中的各个状态之间相互不可区分。然后,将每个组中的状态合并成状态最少DFA的一个状态。算法在执行过程中维护了状态集合的一个分划原创 2013-07-18 23:39:23 · 3384 阅读 · 2 评论