RegExp DEMO version --[4][regexp.h]核心数据类型(3)

/*输出StateTable,测试用*/void showStateTable(pStateTable pst) { pState tmp; pStateCollectionEle pscele; printf("debug: ################### there is the NFA table basic info: #######################\n"); printf("debug: StateCount = %d\n", pst->stateCount); printf("head->%x\tcur...
2007-06-03 06:44 | 阅读 2084 次 | 评论 0 条

RegExp DEMO version --[4][regexp.h]核心数据类型(2)

/*##############################################*//*####### *函数实现* ######################*//*##############################################*//*状态*/pState newState() { pState pS = NULL; pS = (pState)malloc(sizeof(State)); if (pS != NULL) { pS->destStateCollection =...
2007-06-03 06:43 | 阅读 2038 次 | 评论 0 条

RegExp DEMO version --[4][regexp.h]核心数据类型(1)

这里是[regexp.h]的全部代码,所有的数据结构和针对他们的操作函数都在这里了,总揽一下哈: 终结符类型 状态 新建,销毁,置目标状态,克隆 状态集合的元素(相当于一条弧线:输入元素和目标状态) 新建,销毁,克隆 状态集合 新建,销毁,克隆,追加一个状态元素 状态表格 新建,销毁,克隆,追加一个状态,用于调试的showStateTable() 状态机 新建,销毁 ...
2007-06-03 06:39 | 阅读 2523 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(7)dealState()

case REPEAT_RANGE_M_MORE: /*(A{m,})*/ pst_needed = repeatMachine_needed(g_repeat_m-1, pmnew); if (pst_needed != NULL) { g_st = joinStateTable(g_st, pst_needed); ...
2007-06-03 06:34 | 阅读 1977 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(6)dealState()

case END_REGEXP: while_notfinish = 0; /*一会儿退出循环*/ printf("debug: end scan the regexp:\n\t\"%s\"\n", g_strRegExp); /*做一次状态机结束操作*/ case OR_MACHINE_END: if (symboltype == OR_MACHINE_END) { ...
2007-06-03 06:33 | 阅读 1505 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(6)dealState()

case END_REGEXP: while_notfinish = 0; /*一会儿退出循环*/ printf("debug: end scan the regexp:\n\t\"%s\"\n", g_strRegExp); /*做一次状态机结束操作*/ case OR_MACHINE_END: if (symboltype == OR_MACHINE_END) { ...
2007-06-02 21:49 | 阅读 1737 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(5)dealState()

case DOT: for (OR_MACHINE_i=0; OR_MACHINE_i<(int)'\n'; OR_MACHINE_i++) { g_ele_ary[OR_MACHINE_i] = 1; } for (OR_MACHINE_i=(int)'\n' + 1; OR_MACHINE_i<=sizeo...
2007-06-02 21:45 | 阅读 1373 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(4)dealState()

case OR_MACHINE_BEGIN: /*开始一个或运算子状态机(字母表),左括号: '['*/ pmnew = newMachine(NULL, NULL, g_scan_pos, -1, '|', NULL); pmnew->state_start = newState(); /*状态机开始状态*/ ...
2007-06-02 21:43 | 阅读 1656 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(3)dealState()

case START_REGEXP: printf("debug: start scan the regexp:\n\t\"%s\"\n", g_strRegExp); /*做一次状态机开始操作*/ case AND_MACHINE_BEGIN: /*开始一个子状态机,左括号: '('*/ pmnew = newMachine(NULL, NULL, g_s...
2007-06-02 21:41 | 阅读 1649 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(2)dealState()

case BACKTRACE: /*将当前状态与子状态机的结束状态连接*/ setdestState(g_st->curState, (int)g_st->eleCount, g_mstk->topM->state_end); /*将当前状态回退到子状态机的头部,开始一个新的分支*/ g_st->curState = g_mstk->topM->state_start; break; ...
2007-06-02 21:36 | 阅读 1200 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(1)dealState()

这个函数是状态机的执行部分,他根据getSymbol()函数返回的一个词,来决定正则状态机的行为。下面我来对这其中的一些细节做一下解释:====================================== [1] 在这个DEMO版本中,输入被看作是字节流,像一个汉字会被解析成两个INPUT_ELE, 例如:"王"会被解析为 "\xCD\xF5"。[2] 我的一个比较重要的概念是“子状态机”,被“()”和“[]”包围的都是“子状态机”, 将括号以这种方式独立出来处理,可以很方便的进行各种运算(重复,或,连接)[3] 在[regexp.h]中定义的Machi...
2007-06-02 21:33 | 阅读 1253 次 | 评论 0 条

RegExp DEMO version -- [2]词法分析代码

[regexp.c]中主要函数声明和源代码下面是主要的函数声明:======================================SymbolType getSymbol(); /*词法分析函数,返回一个符号的类型和它的值*/int dealState(SymbolType symboltype); /*处理输入状态*/void repeat_needed(int m, int eleindex); /*{m,n}生成必选的m次循环状态表*/void repeat_optional(int n, int eleindex); /*{m,n}生成可选的n次循...
2007-06-02 21:06 | 阅读 1116 次 | 评论 0 条

RegExp DEMO version -- [1]正则表达式 TO NFA表格

最近想做一个正则表达式的解析工具,目前已经完成了正则表达式向NFA(不确定有穷自动机)表格的转换代码。源代码包在这里下载:====================================== 源代码zip包:regexp.zip======================================我再跟几个帖子把核心代码贴出来一部分:供各位赏玩 。。。readME文件如下:===================================作者:王旭华泰山学院E-MAIL:qfhuazi@163.comQQ: 471600163文件:regexp-win.ex...
2007-06-02 21:04 | 阅读 1337 次 | 评论 0 条

正则表达式解析 -- 词法分析部分[这个是老版本了]

最近一直努力的学习编译原理,对于里面提到的“自动机”好好理解了一下, 还感受了一下lex和yacc的强大功能,真是厉害啊 。。。 我的兄弟伦子小朋友想写一个8086的编译解释工具(类似一个虚拟机)。 我对于CPU的理解很简单,它首先可以看成一个数字电路,可以用数字逻辑的方式 来理解,而数字逻辑便是状态机了,状态机会动了,也就是“自动机”了, “确定的有穷自动机(DFA)”模型与真实的CPU应该是一码子事情了, 而(DFA)对应了一条“正规文法”, “正规文法”对应了一个“正则表达式”, “正则表达式”可以转化为一个“不确定的有穷自动机(NFA)”, (NFA)可以转化为...
2007-05-19 09:24 | 阅读 1549 次 | 评论 0 条

[原创]学生信息管理C语言DOS环境运行[源代码]

这是我的一个帖子,最近我有看了一遍这份代码,感觉还是比较不错,至少是我自己当时的真实水平啊 。。。 纪念一下下 。。。 帖子链接如下:[原创]学生信息管理C语言DOS环境运行[源代码] 替同学写了作业,如下,我同学说看不懂啊 。。。 就添加了很详细的注释,大家有兴趣的就看看吧 。。。==================================================== 代码在第二个,三个帖子中贴出来了,太长了,一个帖子不够用====================================================题目分...
2006-11-25 11:22 | 阅读 2044 次 | 评论 0 条