• 大小: 65KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-14
  • 语言: C/C++
  • 标签: MFC  

资源简介

初次上传自己写的程序,算法是构造有穷自动机来识别,有点粗糙~

资源截图

代码片段和文件信息

// 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  词法分析器\baseInfo.txt
     目录           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个文件信息

评论

共有 条评论