📄 dfa.cpp
字号:
// DFA.cpp: implementation of the CDFA class.
//
//////////////////////////////////////////////////////////////////////
#include "DFA.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDFA::CDFA()
{
}
CDFA::~CDFA()
{
}
void CDFA::Initial(PSTATUS_CONVERT_TABLE pt, STATUS sElse)
{
m_pTable=pt;
m_nCurrentStatus=0;
m_nElseStatus=sElse;
m_pNextCase=0;
}
bool CDFA::PrepareDFA(char * pStr,STATUS nInitStatus)
{
if(!m_pTable) return false;
m_pNextCase=pStr;
m_nCurrentStatus=nInitStatus;
return true;
}
STATUS CDFA::StepForward()
{
int i=0;
PCONVERT_STATUS pCS=0;
TESTFUN * Test;
if(!m_pTable) return 0;
while(i<m_pTable->nEntry) //用当前状态搜索状态转换表
{
if((m_pTable->pEntry+i)->nStatus==m_nCurrentStatus) pCS=(m_pTable->pEntry+i)->pConvert;
i++;
}
if(!pCS) return 0;
Test=pCS->Test;
while(Test)
{
if(Test(*m_pNextCase))
{
m_nCurrentStatus=pCS->nDstStauts;
m_pNextCase++;
return m_nCurrentStatus;
}
pCS++;
Test=pCS->Test;
}
return m_nElseStatus;
}
char *CDFA::GetNextCasePoint()
{
return m_pNextCase;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -