📄 autom.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 + -