📄 data.txt
字号:
#include "DoFunHead.h"
typedef struct
{
int state;
boolean isEnd;
void (*pDoFun)();
SonTableItem *pNextTable;
int nextTableSize;
}MainTableItem;
typedef struct
{
boolean (*pJudgeFun)();
int nextState;
}SonTableItem;
MainTableItem mainTable[14];
SonTableItem sonTable1[3];
SonTableItem sonTable2[3];
SonTableItem sonTable3[2];
SonTableItem sonTable4[3];
void intializeMainTable()
{
//0
mainTable[0].state = 0;
mainTable[0].isEnd = false;
mainTable[0].pDoFun = NULL;
mainTable[0].pNextTable = sonTable1;
mainTable[0].nextTableSize = 3;
//1
mainTable[0].state = 1;
mainTable[0].isEnd = false;
mainTable[0].pDoFun = NULL;
mainTable[0].pNextTable = sonTable2;
mainTable[0].nextTableSize = 3;
//2
mainTable[0].state = 2;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doSymbol;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//3
mainTable[0].state = 3;
mainTable[0].isEnd = false;
mainTable[0].pDoFun = NULL;
mainTable[0].pNextTable = sonTable3;
mainTable[0].nextTableSize = 2;
//4
mainTable[0].state = 4;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doConst;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//5
mainTable[0].state = 5;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doOperation;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//6
mainTable[0].state = 6;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doOperation;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//7
mainTable[0].state = 7;
mainTable[0].isEnd = false;
mainTable[0].pDoFun = NULL;
mainTable[0].pNextTable = sonTable4;
mainTable[0].nextTableSize = 3;
//8
mainTable[0].state = 8;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doOperation;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//9
mainTable[0].state = 9;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doOperation;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//10
mainTable[0].state = 10;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doOperation;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//11
mainTable[0].state = 11;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doBoundary;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//12
mainTable[0].state = 12;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doBoundary;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
//13
mainTable[0].state = 13;
mainTable[0].isEnd = true;
mainTable[0].pDoFun = doError;
mainTable[0].pNextTable = NULL;
mainTable[0].nextTableSize = 0;
}
intializeSonTable()
{
//sonTable1
sonTable1[0].pJudgeFun = isLetter;
sonTable1[0].nextState = 9;
sonTable1[1].pJudgeFun = isNumber;
sonTable1[1].nextState = 10;
sonTable1[2].pJudgeFun = isNotEqualAdd;
sonTable1[2].nextState = 8;
//sonTable2
sonTable2[0].pJudgeFun = isLetter;
sonTable2[0].nextState = 9;
sonTable2[1].pJudgeFun = isNumber;
sonTable2[1].nextState = 10;
sonTable2[2].pJudgeFun = isNotLetterNumber;
sonTable2[2].nextState = 8;
//sonTable3
sonTable3[0].pJudgeFun = isNumber;
sonTable3[0].nextState = 3;
sonTable3[1].pJudgeFun = isNotNumber;
sonTable3[1].nextState = 4;
//sonTable4
sonTable4[0].pJudgeFun = isAdd;
sonTable4[0].nextState = 9;
sonTable4[1].pJudgeFun = isEqual;
sonTable4[1].nextState = 10;
sonTable4[2].pJudgeFun = isNotEqualAdd;
sonTable4[2].nextState = 8;
}
void changeState(int &state)
{
if(mainTable[state].isEnd == true)
{
mainTable[state].pDoFun();
}
else
{
state = searchSonTable(mainTable[state].pNextTable, mainTable[state].nextTableSize, state, inputChar);
}
}
int searchSonTable(SonTableItem pSonTable, int tableSize, int state, char inputChar)
{
for(i=0; i<tableSize; i++)
{
if(pSonTable[i].inputChar == inputChar)
{
return pSonTable[i].state;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -