资源简介
初次上传自己写的程序,算法是构造有穷自动机来识别,有点粗糙~
代码片段和文件信息
// AnalyzeMachine.cpp: implementation of the AnalyzeMachine class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “paserWord.h“
#include “AnalyzeMachine.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define maxLength 20
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
typedef CMap map;//映射String为一个字时表示那个确定的字符,若是isLetter就是字母,若是isNum就是数字 若是everything就是任意字符,这是和终态一样的优先级最低的
typedef CMap tempRadio;
AnalyzeMachine::AnalyzeMachine()
{
}
AnalyzeMachine::~AnalyzeMachine()
{
}
SimpleAutomata::SimpleAutomata(KeyInfo* keyInfo)
{
this->keyInfo=keyInfo;
// bulidNew();
}
SimpleAutomata::SimpleAutomata()
{
// bulidNew();
}
SimpleAutomata::~SimpleAutomata()
{
clear();
}
void SimpleAutomata::clear()
{
stateSet.RemoveAll();
charList.RemoveAll();
function.RemoveAll();
finshState.RemoveAll();
start.state.RemoveAll();
now.state.RemoveAll();
}
CMap simpleStaSet;
CMap simpleTran;
void SimpleAutomata::bulidNew()
{
//自己原来的信息删除
clear();
CString szKey;
int num;
int type;//=3;//界符
POSITION ps;
for(int i=0;i<2;i++)//两次循环,界符和运算符
{
if(i==0)
{
type=3;
ps=keyInfo->Commchar.GetStartPosition();//界符
}
else
{
type=2;
ps=keyInfo->MathChar.GetStartPosition();
}
while(ps)
{
if(type==3)
keyInfo->Commchar.GetNextAssoc(psszKeynum);
else
keyInfo->MathChar.GetNextAssoc(psszKeynum);
//simpleStaSet添加长度个状态,和转换一起,期间还要加字符
//simplestart添加一个,结束符添加一个
//finshState也添加一个
int qi=simpleStaSet.GetCount();
qi++;
Identifer idr;
idr.type=type;
idr.location=num;
start.state[qi]=idr; //一个start状态
finshState[qi+szKey.GetLength()]=idr;//一个终态终态没有链接,只有终结,查询时可以以这个为界
for(int i=0;i {
int tt;
simpleStaSet[qi]=idr;
if(!charList.Lookup(szKey.GetAt(i)tt))
charList[szKey.GetAt(i)]=i;
map* mm;
if(!simpleTran.Lookup(qimm))//查找
mm=new map;
CString charKey=szKey.GetAt(i);
(*mm)[charKey]=qi+1;
simpleTran[qi]=mm;
qi++;
}
simpleStaSet[qi]=idr;//最后一个也加进去
}
}
//标识符
int flagChar=simpleStaSet.GetCount()+1;
int ableChar=flagChar+1;
Identifer idr;
idr.type=7;//标识符
idr.location=-1;//这个以后再改不已下划线开头
simpleStaSet[flagChar]=idr;
start.state[flagChar]=idr;
map* mm;
if(!simpleTran.Lookup(flagCharmm))//查找
mm=new map;
CString charKey=“Letter“;
(*mm)[charKey]=ableChar;
simpleTran[flagChar]=mm;
finshState[ableChar]=idr;//可以为终态
simpleStaSet[ableChar]=idr;
for(i=0;i<3;i++)
{
map* mm2;
if(!si
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 63 2010-05-13 00:11 词法分析器\ba
目录 0 2010-06-21 21:39 词法分析器\paserWord\
文件 22083 2010-06-04 22:31 词法分析器\paserWord\AnalyzeMachine.cpp
文件 4228 2010-05-14 18:51 词法分析器\paserWord\AnalyzeMachine.h
文件 10947 2010-05-13 00:10 词法分析器\paserWord\KeyInfo.cpp
文件 1977 2010-05-06 16:35 词法分析器\paserWord\KeyInfo.h
文件 5800 2010-05-14 21:22 词法分析器\paserWord\MainFrm.cpp
文件 1535 2010-05-14 21:18 词法分析器\paserWord\MainFrm.h
文件 27320 2010-06-21 21:39 词法分析器\paserWord\paserWord.aps
文件 2528 2010-06-21 21:39 词法分析器\paserWord\paserWord.clw
文件 4170 2010-05-06 23:00 词法分析器\paserWord\paserWord.cpp
文件 4813 2010-05-06 23:37 词法分析器\paserWord\paserWord.dsp
文件 543 2010-05-02 15:25 词法分析器\paserWord\paserWord.dsw
文件 1926 2010-05-14 21:14 词法分析器\paserWord\paserWord.h
文件 148480 2010-06-21 21:39 词法分析器\paserWord\paserWord.ncb
文件 51712 2010-06-21 21:39 词法分析器\paserWord\paserWord.opt
文件 2281 2010-06-21 21:39 词法分析器\paserWord\paserWord.plg
文件 10790 2010-05-14 21:21 词法分析器\paserWord\paserWord.rc
文件 1802 2010-05-02 15:25 词法分析器\paserWord\paserWordDoc.cpp
文件 1508 2010-05-02 15:25 词法分析器\paserWord\paserWordDoc.h
文件 2269 2010-05-02 16:06 词法分析器\paserWord\paserWordView.cpp
文件 2026 2010-05-02 16:06 词法分析器\paserWord\paserWordView.h
文件 4065 2010-05-02 15:25 词法分析器\paserWord\ReadMe.txt
目录 0 2010-06-21 21:37 词法分析器\paserWord\res\
文件 1078 2010-05-02 15:25 词法分析器\paserWord\res\paserWord.ico
文件 401 2010-05-02 15:25 词法分析器\paserWord\res\paserWord.rc2
文件 1078 2010-05-02 15:25 词法分析器\paserWord\res\paserWordDoc.ico
文件 1291 2010-05-14 21:21 词法分析器\paserWord\resource.h
文件 211 2010-05-02 15:25 词法分析器\paserWord\StdAfx.cpp
文件 1052 2010-05-06 23:00 词法分析器\paserWord\StdAfx.h
文件 360 2003-10-19 18:21 词法分析器\test.txt
............此处省略0个文件信息
相关资源
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
- MFC绘制Bezier曲线B样条曲线曲线拟合
- MFC坦克大战
- VC++ 中国象棋经典游戏源代码
- 课程设计: MFC 学生信息管理系统
- MFC对ACCESS数据库的增加、删除、查找
- vc.6.0 MFC 人事管理系统源码
- MFC 在线考试系统
评论
共有 条评论