好久没到这里写文章了,这里的博客系统关了挺可惜的 。。昨天有兄弟给我发邮件,说找不到论坛帖子中的一份代码,看来代码还是要放在一个不会被删除的地方好啊 。。前些日到baidu上开了个博客,这里不会说关就关哈 。。。 新地址是:http://hi.baidu.com/rabbit5455不过,百度不能上传文件压缩包,但还好,我们有个小小的交流主页,需要代码的朋友可以到那里找一下: http://www.qingfeng.com.ru不过这里我还是会经常来的,把一些新的代码与朋友们一起交流和学习,祝各位看官天天高兴,生活舒心 。。。
/*输出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...
/*##############################################*//*####### *函数实现* ######################*//*##############################################*//*状态*/pState newState() { pState pS = NULL; pS = (pState)malloc(sizeof(State)); if (pS != NULL) { pS->destStateCollection =...
这里是[regexp.h]的全部代码,所有的数据结构和针对他们的操作函数都在这里了,总揽一下哈: 终结符类型 状态 新建,销毁,置目标状态,克隆 状态集合的元素(相当于一条弧线:输入元素和目标状态) 新建,销毁,克隆 状态集合 新建,销毁,克隆,追加一个状态元素 状态表格 新建,销毁,克隆,追加一个状态,用于调试的showStateTable() 状态机 新建,销毁 ...
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); ...
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) { ...
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) { ...
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...
case OR_MACHINE_BEGIN: /*开始一个或运算子状态机(字母表),左括号: '['*/ pmnew = newMachine(NULL, NULL, g_scan_pos, -1, '|', NULL); pmnew->state_start = newState(); /*状态机开始状态*/ ...
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...
case BACKTRACE: /*将当前状态与子状态机的结束状态连接*/ setdestState(g_st->curState, (int)g_st->eleCount, g_mstk->topM->state_end); /*将当前状态回退到子状态机的头部,开始一个新的分支*/ g_st->curState = g_mstk->topM->state_start; break; ...
这个函数是状态机的执行部分,他根据getSymbol()函数返回的一个词,来决定正则状态机的行为。下面我来对这其中的一些细节做一下解释:======================================
[1] 在这个DEMO版本中,输入被看作是字节流,像一个汉字会被解析成两个INPUT_ELE, 例如:"王"会被解析为 "\xCD\xF5"。[2] 我的一个比较重要的概念是“子状态机”,被“()”和“[]”包围的都是“子状态机”, 将括号以这种方式独立出来处理,可以很方便的进行各种运算(重复,或,连接)[3] 在[regexp.h]中定义的Machi...
[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次循...
最近想做一个正则表达式的解析工具,目前已经完成了正则表达式向NFA(不确定有穷自动机)表格的转换代码。源代码包在这里下载:====================================== 源代码zip包:regexp.zip======================================我再跟几个帖子把核心代码贴出来一部分:供各位赏玩 。。。readME文件如下:===================================作者:王旭华泰山学院E-MAIL:qfhuazi@163.comQQ: 471600163文件:regexp-win.ex...
最近一直努力的学习编译原理,对于里面提到的“自动机”好好理解了一下,
还感受了一下lex和yacc的强大功能,真是厉害啊 。。。
我的兄弟伦子小朋友想写一个8086的编译解释工具(类似一个虚拟机)。
我对于CPU的理解很简单,它首先可以看成一个数字电路,可以用数字逻辑的方式
来理解,而数字逻辑便是状态机了,状态机会动了,也就是“自动机”了,
“确定的有穷自动机(DFA)”模型与真实的CPU应该是一码子事情了,
而(DFA)对应了一条“正规文法”,
“正规文法”对应了一个“正则表达式”,
“正则表达式”可以转化为一个“不确定的有穷自动机(NFA)”,
(NFA)可以转化为...
请大家互相转帖,谢谢我是泰山学院学生,和闫晶波在通一个城市求学刚刚和闫晶波通了电话
---------------------------------------
关注生命 关爱健康 ——援助闫晶波生命行动倡议 闫晶波,男,23周岁,1984年出生在农民家庭,系山东农业大学林学院2003级蚕学专业1班本科学生,将于2007年7月在山东农业大学正式毕业。 山东卫视《新闻60分》栏目、山东公共频道晚间新闻、泰安电视台《新闻零距离》栏目、肥城电视台新闻特写节目、肥城广播电视台等媒体分别于5月2日和5月3日对此进行了特别报道。 2007年1月3日,闫晶波...
五一快过完喽 。。。开学就不再使劲用windows了,感觉linux确实是好,适合学习计算机,更加开放,敢于把自己暴露在世人面前,接受考验,用linux的感觉也不一样,很有成就感。 浏览器用wget下载的,firefox,先改一下配置: 在地址栏中输入about:config,进入之后,修改以下 network.http.proxy.pipelining 的值由FALSE改为TRUE; network.http.pipelining.maxrequests 的值由10改为30; network.http.pipelining 的值由FA...
tftp协议原版txt和pdf文档,可以到ftp://ftp.rfc-editor.org/in-notes/去下载。
ftp://ftp.rfc-editor.org/in-notes/rfc1350.txt ftp://ftp.rfc-editor.org/in-notes/pdfrfc/rfc1350.txt.pdf=============================================
1. 目的
TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。...
tftpClientAgent.java===================================== public void WRQ() { int ntimeout = this.m_MAX_nTimeOut; try { short nblock = 0; //send the #0 block ACK to start the transfer this.SendACK(nblock++); //wait for the d...
tftpClientAgent.java===================================== public void RRQ() { int ntimeout = this.m_MAX_nTimeOut; try { short nblock = 1; //send the #0 block ACK to start the transfer if (!this.SendFile(nblock, this.m_filename, this.m_mode)) { ...