auto_machine.h

来自「很好用的词法分析器」· C头文件 代码 · 共 44 行

H
44
字号
#pragma once
#include "state.h"
#include "State.h"
#include "set"
using namespace std;
class auto_machine
{
private:
	list<State*>StateCollect;
public:
	auto_machine(void);
	~auto_machine(void);
	void insert_map(State* HeadState, char InputChar, State* TailState);
	void insert_state(State* StateNode);
	bool inserted(State* &StateNode);	//return 0:无此状态.
	friend void CheckProgram(const auto_machine DFA, ifstream &program, ofstream &result);
private:
	list<State*> EndState;
	State* BeginState;
	void _$closure(State* I, set<State*> &closure);
	// 状态I通过输入字符InputChar所到状态
	set<State*> _closure(State* I, char InputChar);
public:
	void insert_endstate(State* endstate);
	// 有穷自动机的确定化.
	void NFA_TO_DFA(auto_machine &DFA);
private:
	set<char> InCharColl;
public:
	void insert_char(char Input);
private:
	void CombineState(set<State*> StateCol, State* Combined);
	void Define(set<State*> GenState, auto_machine *DFA, State* Combined );
public:
	// DFA最小化
	void Minimize(void);
	void insert_beginstate(State* begin);
private:
	set<char> DFAInCharColl;
public:
	bool constinserted(State* state);
	void Destroy(void);
};

⌨️ 快捷键说明

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