⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autom.h

📁 NFA自动机的实验
💻 H
字号:
// Autom.h: interface for the Autom class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_Autom_H__38726481_2106_403D_A1DD_78EACE24E5D0__INCLUDED_)
#define AFX_Autom_H__38726481_2106_403D_A1DD_78EACE24E5D0__INCLUDED_

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

#include <string>
#include <fstream>
#include <iostream>
using namespace std;

#define	LINES	30						//最大行数
#define	COLUMNS	30						//最大列数
#define STATES	20						//最多状态数
	
#define CHRCOLUMNS	90					//自动机中状态转换表一行最大字符个数
#define	MAXLENGTH	500					//最大识别字符串长度


class Autom  
{
public:
	string GetPosInfo();
	bool InitFromRE(string strRE);		//由正则表达式构造自动机
	int GetColumn();					//获取状态转换表的列数
	int GetLine();						//获取状态转换表的行数
	int GetGraphic(int i,int j);		//获取图数组的第i行j列,即状态i-1转换为j-1的字符
	bool CreateGraphic();				//根据状态转换表构造状态转换图
	int GetValue(int i, int j, int k);	//得到状态转换表的i行j列k节的数据,即状态i-1通过第j个字符转换到的第k个状态
	string OutputTableStr();			//将状态转换表连接成字符串返回
	void Output(string fileName);		//输出状态转换表到文件filename
	string GetErrors();					//返回自动机创建,字符串搜索过程中的状态信息以及错误信息
	bool Proc(const char *chrs, int length);	//执行长度为length的字符串chrs搜索 操作
	bool search(char *chrs,int length,int startState);	//对字符串的递归搜索过程
	bool InitFormFile(string  str);		//从文件str初始化状态转换表
	Autom();							//初始化自动机
	virtual ~Autom();
	
private:
	bool Init();						//状态转换表的初始化

	int statesTable[ LINES ][ COLUMNS ][ STATES ];		//状态转换表
	int statesGraphic[ STATES+1 ][ STATES+1 ];			//状态转换图
	int lineTable;										//状态转换表的行数
	int columnTable;									//状态转换表的列数
	string strError;									//自动机创建,字符串搜索过程中的状态信息以及错误信息
	string strPosInfo;									//字符串搜索过程中的位置信息
};

#endif // !defined(AFX_Autom_H__38726481_2106_403D_A1DD_78EACE24E5D0__INCLUDED_)





















⌨️ 快捷键说明

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