?? globals.h
字號:
#ifndef _GLOBALS_H_
#define _GLOBALS_H_
#include "stdafx.h"
#include "AutoMakeView1.h"
#include "AutoMakeView2.h"
#include "AutoMakeView3.h"
#include <iostream.h>
#include <math.h>
#include <list>
#include <stack>
#include <queue>
using namespace std;
#pragma comment(lib,"winmm.lib")
#include<mmsystem.h>
typedef int State;//定義狀態的類型
typedef char Symbol;//定義元字符類型
typedef struct
{
State start;
State end;
}NFA;//定義NFA始態和終態
typedef struct
{
State state;
Symbol symbol;
}Node;//NFA鄰接表元素類型
/////////////////////////////
typedef struct
{
int x;//某一狀態的x坐標
int y;//某一狀態的y坐標
}CNode;//coordinate node用來表示結點的位置
///////////////////////////////
typedef struct
{
State start;
State end;
Symbol symbol;
}ARC;//邊
/*NFA的數據結構*/
typedef list<Node> NODE_LIST;//節點鏈表
typedef list<NODE_LIST> NFA_LIST;//NFA列表
typedef list<char> LETTER_LIST;//字母表
/*NFA的數據結構*/
//////////////////////////以下是用來處理畫圖的結構
typedef list<CNode> CNODE_LIST;//坐標節點鏈表
typedef list<State> STATE_CHAIN;//狀態鏈表,用來保存與運算相關聯的狀態組
typedef list<STATE_CHAIN> STATE_STACK;//狀態鏈表棧
/////////////////////////////////////////////
/*DFA數據結構*/
typedef list<State> STATE_LIST;//狀態集
typedef struct
{
STATE_LIST statelist;
Symbol symbol;
}StateListNode;//狀態集節點
typedef list<StateListNode> STATELISTNODE_LIST;//狀態集節點列表
typedef struct
{
STATE_LIST dstate;
STATELISTNODE_LIST slnList;
}TransListNode;//保存一個狀態集經過所有元字符所到達的狀態集
typedef list<TransListNode> TRANS_LIST;//DFA轉換表
/*DFA數據結構*/
extern CString rExp;//正則表達式
extern NODE_LIST* NFA_List;//保存NFA圖
extern LETTER_LIST letterlist;//保存NFA字母表
extern NFA objNFA;//保存NFA的初始狀態和終止狀態
extern int StateSum;//記錄NFA的總狀態數
extern STATE_LIST* DFAStateArray;//DFA狀態集查詢表
extern NODE_LIST* DFAtransArray;//DFA狀態轉換表
extern int DFAStateNum;//DFA狀態總數
extern STATE_LIST startlist;//DFA開始狀態集
extern STATE_LIST acceptlist;//DFA接受狀態集
extern STATE_LIST* MinDFAStateArray;//最小化DFA狀態集查詢表
extern NODE_LIST* MinDFAtransArray;//最小化DFA狀態轉換表
extern int MinDFAStateNum;//DFA狀態總數
/*對外接口函數*/
extern bool BuildNFA(CString& r);//創建NFA
extern void BuildDFA();//創建DFA
extern void MinDFA();//最小化DFA
extern void ClearNFA();//清空數據結構里保存的東西
extern void ClearDFA();//清空數據結構里保存的東西
extern void ClearMinDFA();//清空數據結構里保存的東西
/*顯示函數*/
extern void DrawArrow(CDC* pDC,CPoint& start,CPoint& end);
extern void DrawArc(CDC* pDC,CPoint& start,CPoint& end,int r,CString str);//畫曲線箭頭
extern void DrawArc(CDC* pDC,CPoint& point,int r,int n,CString str);//重載畫曲線箭頭,處理只有一個結點的情況
extern void AutoShowNFA(CDC* pDC,CAutoMakeView1*pView);//演示NFA生成過程
extern void PaintNFA(CDC* pDC,list<int>::iterator curiter);//顯示NFA
extern void PaintDFA(CDC* pDC,CAutoMakeView2*pView);//顯示DFA和轉換表
extern void PaintMinDFA(CDC* pDC,CAutoMakeView3*pView);//顯示最小化DFA
extern list<int>::iterator CurrentIter;//用于保存當前演示生成的NFA,以便重畫NFA
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -