⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dfa.cpp

📁 本程序包括详细的词法分析
💻 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 + -