dfa.cpp

来自「这是一个编译原理中」· C++ 代码 · 共 45 行

CPP
45
字号

#include "DFA.h"

int  RULE_NUM = 13;
STATE_CHANGE StateChangeTable[] =
{
	Q0, SIGN,  Q1,
	Q0, DIGIT, Q2,
	Q1, DIGIT, Q2,

	Q2, DIGIT, Q2,
	Q2, DOT, Q3,
	Q2, EXP,   Q5,

	Q3, DIGIT, Q4,
	Q4, DIGIT, Q4,
	Q4, EXP,   Q5,

	Q5, SIGN,  Q6,
	Q5, DIGIT, Q7,
	Q6, DIGIT, Q7,
	Q7, DIGIT, Q7
};

int DFA::Input(SYMBOL input)
{
	int   i,num;
	STATE newstate;

	num = -1;
	if (state == MISTAKE) return num;

	newstate = MISTAKE;
	for(i = 0; i < RULE_NUM ; i++)	
		if (StateChangeTable[i].oldstate == state && 
			input == StateChangeTable[i].input)
		{
			newstate = StateChangeTable[i].newstate;			
			num = i;
			break;
		}
	state = newstate;
	return num;
}

⌨️ 快捷键说明

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