首页 > 其他 > 详细

状态机的一种实现方法

时间:2014-02-18 18:07:18      阅读:497      评论:0      收藏:0      [点我收藏+]
看到wiki上关于自动机编程的文章, 其中自动化技术和自动机一节只有伪码, 俺写了个C版本的, 如下
bubuko.com,布布扣
#include <stdio.h>
typedef struct
{
    int state;
    int changed;
    int c;
} state_mach;
enum states {
    before, inside, after
} e_states;
int hop2state(state_fsm *fsm, int state)
{
    fsm->state = state;
    fsm->changed = 1;
    return 1;
}
int setState(state_mach *fsm)
{
    if (fsm->c == \n)
        return hop2state(fsm, before);
 
    switch(fsm->state) {
    case before:
        if (fsm->c!= )
            return hop2state(fsm, inside);
        break;
    case inside:
        if (fsm->c ==  )
            return hop2state(fsm, after);
        else
            return hop2state(fsm, inside);
        break;
    case after:
        break;
    }
    return 0;
}
int doAction(state_mach *fsm)
{
    switch (fsm->state) {
    case before:
        putchar(\n);
        break;
    case inside:
        putchar(fsm->c);
        break;
    }
    return 0;
}
 
int main()
{
    state_mach fsm = {before, 0, 0};
    while((fsm.c = getchar())!= EOF) {
        if (setState(&fsm)) {
            fsm.changed = 0;
            doAction(&fsm);
        }
    }
}
bubuko.com,布布扣

 

状态机的一种实现方法

原文:http://www.cnblogs.com/jiangli/p/3554131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!