码迷,mamicode.com
首页 >  
搜索关键字:dfa    ( 703个结果
简单词法分析器实现
编写分析器有两种方法,一种是通过DFA对单词进行识别,二是通过直接编写程序进行识别。本程序采用DFA对单词进行识别。 DFA的实现方法,大概思想和书上一致,在程序中,则是用二维数组代表状态转换矩阵,用一维数组表示终态。 一个词法编辑要实现的功能主要包括以下几点: 能够识别标识符、关键字、数字和运算符,对注释进行过滤,同时还能识别出程序错误。 使用说明: 本程序的输入由当前目录下的in.t...
分类:其他好文   时间:2015-06-23 21:37:13    阅读次数:112
构造Half(L)的NFA
?? 构造Half(L)的NFA 搬运自我的百度空间 原创文章,转贴请贴出处 偶尔来点纯理论问题。这是一道高级算法作业题,L是正则语言,语言B是L中所有字符串对半开的前一半,证明B也是正则的。 目的明确,构造B的一台NFA,非确定型有限状态机。 要用到“平行NFA”的概念。比如举例另外一个问题:如何判断一个字符串既是正则语言A又是正则语言B?可以...
分类:其他好文   时间:2015-06-14 09:28:44    阅读次数:1306
DFA 算法实现关键词匹配
起因: 从网页中爬去的页面,需要判断是否跟预设的关键词匹配(是否包含预设的关键词),并返回所有匹配到的关键词 。 目前pypi 上两个实现ahocorasick https://pypi.python.org/pypi/ahocorasick/0.9 esmre https://pypi.python.org/pypi/esmre/0.3.1但是其实包都是基于DFA 实现的 这里提供源码如...
分类:编程语言   时间:2015-06-12 11:42:06    阅读次数:199
敏感词过滤
三步工作 一:敏感词过滤核心算法,参考这篇文章的DFA算法,http://blog.csdn.net/chenssy/article/details/26961957 实现两个类 1. SensitiveWordInit 负责加载初始化敏感词 private String ENCODING = "GBK"; // 字符编码 @SuppressWarnings("rawtypes") ...
分类:其他好文   时间:2015-06-03 21:42:05    阅读次数:140
后缀自动机总结
后缀自动机是一种确定性有限自动机(DFA),它可以且仅可以匹配一个给定串的任意后缀。构造一个可以接受一个给定串的所有后缀的不确定性有限自动机(NFA)是很容易的,我们发现我们用通用的将NFA转换成对应DFA的算法转换出来的DFA的状态数都很小(O(n)级别的,远远达不到指数级别)。于是,人们就开始研...
分类:其他好文   时间:2015-05-22 00:01:39    阅读次数:182
实现一个 DFA 正则表达式引擎 - 3. NFA 的确定化
(正则引擎已完成,Github)我们上一节已经将 NFA 构建出来了,我们的 NFAState 对象的结构实际上是这样的:NFAState { private Set directTable; private Map> transitionMap; private int id;}...
分类:其他好文   时间:2015-05-17 12:05:13    阅读次数:138
实现一个 DFA 正则表达式引擎 - 4. DFA 的最小化
(正则引擎已完成,Github)最小化 DFA 是引擎中另外一个略繁琐的点(第一个是构建语法树)。基本思路是,先对 DFA 进行重命名,然后引入一个拒绝态 0,定义所有状态经过非接受字符转到状态 0,0 接受所有字符转换为自身。也就是说我们先建立一个转换表,然后把第一行填写为:stateabcdef...
分类:其他好文   时间:2015-05-17 12:04:41    阅读次数:220
实现一个 DFA 正则表达式引擎 - 2. NFA 的构建
语法树如何实现对于之后步骤的繁琐程度有着举足轻重的影响。因为我们已经有了一棵简单优雅的语法树,所以我们的 NFA 很容易就可以构建出来。下面来回顾一下我们拥有的节点种类:分支节点:Concat, Or, Many叶子节点:Closure, Char以下是转换的核心代码: public void...
分类:其他好文   时间:2015-05-17 10:41:38    阅读次数:203
实现一个 DFA 正则表达式引擎 - 3. NFA 的确定化
我们上一节已经将 NFA 构建出来了,我们的 NFAState 对象的结构实际上是这样的:NFAState { private Set directTable; private Map> transitionMap; private int id;}其中 transitionMap...
分类:其他好文   时间:2015-05-17 10:37:30    阅读次数:161
实现一个 DFA 正则表达式引擎 - 1. 语法树的构建
语法树的构建这里分为三步:1. 补全正则表达式的省略部分(主要是省略的 concat 和 or 连接符)并翻译七个集合字 '\w', '\W', '\s', '\S', '\d', '\D' 和 '.';2. 转换为逆波兰表达式;3. 转换为语法树;这里以正则表达式 (a*b|ab*) 为例,逐步解...
分类:其他好文   时间:2015-05-17 09:16:31    阅读次数:195
703条   上一页 1 ... 64 65 66 67 68 ... 71 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!