从正则文法构造有穷状态自动机.docx_第1页
从正则文法构造有穷状态自动机.docx_第2页
从正则文法构造有穷状态自动机.docx_第3页
从正则文法构造有穷状态自动机.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include using namespace std;const int maxsize=10;class DFA /定义 DFA类 private: int Mmaxsizemaxsize; /定义整形数组 char Vnmaxsize,Vtmaxsize; /分别用数组装终结符号与非终结符号 int VnNum,VtNum; /定义两个整形变量分别存放终结符号与非终结符号的个数 public: DFA(); /构造函数 DFA() /析出函数 void print(); /输出函数 int move(char start,char s); /判断字符函数;int DFA:move(char start,char s) char t10; char next=start; int left=0,right=0,i=0,j=0; while(si!=0) ti=si+; ti=0; while(t0!=0) left=0;right=0; while(next!=Vnleft) left+; while(t0!=Vtright) right+; if(Mleftright!=-1&leftVnNum&rightVtNum) next=VnMleftright; coutM(Vnleft,Vtright)=nextendl; else return 0; i=1; while(ti!=0)ti-1=ti+; ti-1=0; return 1; DFA:DFA() char grammarmaxsize,nmaxsize,tmaxsize; int rule,left,right,final; int i=0,j=0,k=0; coutrule; coutn; coutt; coutgrammar; Vn0=S; j=0; while(nj!=0) Vnj+1=nj+; VnNum=j+1; while(ti!=0) Vti=ti+; VtNum=i; for(i=0;iVnNum;i+) for(j=0;jgrammar; while(Vnk!=grammar0) k+; final=k; while(grammarj!=0) j+; if(j=5) k=0; while(Vtk!=grammar4)k+; left=0; right=k; else k=0; while(Vnk!=grammar4) k+; left=k; k=0; while(Vtk!=grammar5) k+; right=k; Mleftright=final; i+; void DFA:print() /打印五元组 int i=0,j=0; coutDFA (; while(i!=VnNum) coutVni+,; cout,; while(j!=VtNum) coutVtj+,; cout,Mendl; coutendl; i=0; while(i!=VnNum) j=0; while(j!=VtNum) if(Mij!=-1) coutM(Vni; cout,Vtj)=VnMijendl; j+; i+; cout,Vn0,Vn1;int main() char t10; /定义字符型数组 int i; /定义变量i cout-endl; couti; /输入 DFA s; while(i=3) /判断输入数字 if(i=2)s.print(); /如果是2,打印 if(i=3) coutt;if(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论