dfa.h

来自「本程序包括详细的词法分析」· C头文件 代码 · 共 51 行

H
51
字号
// DFA.h: interface for the CDFA class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DFA_H__C1CB6C21_53E2_441B_96B6_3AD1E102CD99__INCLUDED_)
#define AFX_DFA_H__C1CB6C21_53E2_441B_96B6_3AD1E102CD99__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

typedef   int   STATUS;
typedef   bool TESTFUN(char ch);

typedef struct _CONVERT_STATUS
{
	TESTFUN  * Test;
	STATUS  nDstStauts;
} CONVERT_STATUS,*PCONVERT_STATUS;

typedef struct _STATUS_ENTRY
{
	STATUS nStatus;    //状态
	PCONVERT_STATUS pConvert;
} STATUS_ENTRY, * PSTATUS_ENTRY;

typedef struct _STATUS_CONVERT_TABLE
{
	int nEntry;    //表项数
    PSTATUS_ENTRY	pEntry;//表项指针
}STATUS_CONVERT_TABLE, *PSTATUS_CONVERT_TABLE;

class CDFA  
{
private:
	PSTATUS_CONVERT_TABLE m_pTable;//状态转换表
    STATUS m_nCurrentStatus;  //当前状态
    char  *m_pNextCase;   //下一个将要读入的字符
	STATUS m_nElseStatus;

public:
	CDFA();
	virtual ~CDFA();
    void Initial(PSTATUS_CONVERT_TABLE pt, STATUS sElse);  //初始化DFA,设置状态转换表
	bool PrepareDFA(char * pCaseStr, STATUS nInitStatus);   //准备DFA运行
	char * GetNextCasePoint();   //获得DFA下一个将要读入字符的指针
	STATUS StepForward();  //DFA进行一次状态转换,返回转换后的状态,并指向下一个字符。
};

#endif // !defined(AFX_DFA_H__C1CB6C21_53E2_441B_96B6_3AD1E102CD99__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?