1 Star 0 Fork 0

fangxlmr/frex

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
nfa.h 974 Bytes
一键复制 编辑 原始数据 按行查看 历史
fangxlmr 提交于 2018-08-07 15:23 . rename start to beg
/**
* @file nfa.h
*
* @brief 非确定有限状态自动机
*/
#ifndef FREX_NFA_H
#define FREX_NFA_H
/**
* 定义NFA状态中,除了ASCII码之外的状态值
*/
enum {
EPSILON = -1, /* epsilon边 */
ACCEPT = -2 /* 接受状态 */
};
/**
* NFA的状态节点
*
* @note
* 1. 当只有一条向外的指向边时,使用out1,不使用out2
* 2. lid(list id),生成DFA状态时,用其来区分该NState是否
* 已经添加进List中,而不需要遍历List。
*/
typedef struct _NState NState;
struct _NState {
int c; /* 接收字符c */
NState *out1; /* 指向下一个NFA状态节点 */
NState *out2; /* 指向下一个NFA状态节点 */
int lid; /* list id */
};
/**
* NFA片段
*/
typedef struct _NFA NFA;
struct _NFA {
NState *beg; /* NFA片段开始状态 */
NState *end; /* NFA片段结束状态 */
};
#endif /* FREX_NFA_H */
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/fangxlmr/frex.git
git@gitee.com:fangxlmr/frex.git
fangxlmr
frex
frex
master

搜索帮助