- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
西北师范大学计算机科学与工程学院学生实验报告
学号
111111
专业
计算机科学与技术
班级
技师(1)班
姓名
111
课程名称
编译原理
课程类型
   实验
实验名称
            有穷状态自动机
实验目的:
准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合,为词法分析程序的自动构造寻找特殊的方法和工具;
掌握了有穷状态自动转换机的概念;
掌握DFA的存储表示;
掌握DFA与正则文法的联系
实验原理:
一个确定的有穷状态自动机DFA是五元组(K,∑,M,S,F,),其中,
K是有穷非空的状态集合;
∑是有穷非空的输入字母表;
M是从K×∑到K的映象。如果M(R,T)=Q,则输入字符为T时,当前状态R将转换到状态Q,Q成为下一当前状态;
S是开始状态;
F是非空的终止状态集合。
输入任意的正则文法,输出相应的有穷状态自动机
要求:识别有穷状态自动转换机是非确定的还是确定的,以相应的五元组形式输出。
实验代码如下:
实验源代码:
#include iostream
using namespace std;
const int maxsize=10;
class DFA
{
      private:
              int M[maxsize][maxsize];
              char Vn[maxsize],Vt[maxsize];
              int VnNum,VtNum;
              
      public:
             DFA();
             ~DFA(){}
             void print();
             int move(char start,char s[]);
};
int DFA::move(char start,char s[])
{
    char t[10];char next=start;
    int left=0,right=0,i=0,j=0;
    while(s[i]!=\0){t[i]=s[i++];}
    t[i]=\0;
    while(t[0]!=\0)
    {
     left=0;right=0;
     while(next!=Vn[left]){left++;}
     while(t[0]!=Vt[right]){right++;}
    if(M[left][right]!=-1leftVnNumrightVtNum)
    {
     next=Vn[M[left][right]];
     coutM(Vn[left],Vt[right])=nextendl;
    }
    else return 0;
    i=1;
     while(t[i]!=\0){t[i-1]=t[i++];}
     t[i-1]=\0;
    } 
    return 1;
     
}
DFA::DFA()
{
  char grammar[maxsize],n[maxsize],t[maxsize];
  int rule,left,right,final;
  int i=0,j=0,k=0;
  coutrule=;cinrule;
  coutVn ;cinn;
  coutVt ;cint;
  coutgrammar;
  Vn[0]=S;
  j=0;
  while(n[j]!=\0)Vn[j+1]=n[j++];VnNum=j+1;
  while(t[i]!=\0)Vt[i]=t[i++];VtNum=i;
  for(i=0;iVnNum;i++)
    for(j=0;j=VtNum;j++)M[i][j]=-1;
    i=0;
  while(i!=rule)
  {
    j=0;k=0;
    cingrammar;
    while(Vn[k]!=grammar[0])k++;
    final=k;
    while(grammar[j]!=\0)j++;
    if(j==2)
    { 
      k=0;
      while(Vt[k]!=grammar[1])k++;
      left=0;
      right=k;
    }
    else
      {
        k=0;while(Vn[k]!=grammar[1])k++;left=k;
        k=0;while(Vt[k]!=grammar[2])k++;right=k;
      }
    M[left][righ
                您可能关注的文档
最近下载
- EHS体系程序文件-信息沟通、协商和决议管理程序.docx VIP
 - 高中政治课堂教学应用时事政治策略探究.doc VIP
 - (GBT7588 1—2020)电梯制造与安装安全规范.pdf VIP
 - 设施农业智能化与现代农业装备产业发展趋势报告.docx
 - “十四五”公路养护发展规划.docx VIP
 - 健康评估(第二版)全套教学课件.pptx
 - 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
 - 2024年贵州省六盘水市中考语文试卷真题(含答案逐题解析).docx
 - CQI-27铸造系统评估表 第二版(2023).xls VIP
 - 银行大堂服务实训(第2版) 课件 项目4 营业中引导营销服务.pdf VIP
 
原创力文档
                        

文档评论(0)