• 大小: 295KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签: CFG  PDA  转换  代码  

资源简介

代码是基于VC++开发的,结构清晰,简单易懂,能够根据自己的需求更改代码,且程序的实现较为简单,执行较快。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include“cfg_pda.h“
#include“pda_cfg.h“
#include“store.h“
void cfg_pda();
void pda_cfg();
int length(char temp[]);
void digui(int tempchar s[]int num);
Store st1st3;
void main()
{
int choice=0;
cout<<“******CFG与PDA之间的相互转换******“< cout<<“请选择相应的操作:“< cout<<“1.cfg转换为pda“< cout<<“2.pda转换为cfg“< cout<<“0:退出操作!“< cin>>choice;
switch(choice)
{
case 1:
cfg_pda();
break;
case 2:
pda_cfg();
break;
case 0:
break;
default:
cout<<“输入错误!“< break;
}
}
int length(char temp[])
{
int i=0;
while(temp[i]!=‘\0‘)
i++;
return i;
}
void cfg_pda()
{
Cfg cfg;
Elem q;
int num=0i=0;
int VlengthPronum;
cout<<“***************************************“< cout<<“操作1:-----cfg转换为pda------“< cout<<“G=(VTPS)请按顺序输入VTPS:“< cout<<“Variable:“;
cin>>cfg.Various;
cout<<“Terminal:“;
cin>>cfg.Terminal;
cout<<“Production:“< Vlength=length(cfg.Various);
while(Vlength!=0)
{
cfg.grammar[num].nextelem1=(Elem)malloc(sizeof(elem));
q=cfg.grammar[num].nextelem1;
cout<<“请输入第“< cin>>q->leftelem>>Pronum;
q->nextelem=NULL;
while(Pronum!=0)
{
Elem p=(Elem)malloc(sizeof(elem));
cin>>p->leftelem;
p->nextelem=NULL;
q->nextelem=p;
q=q->nextelem;

Pronum--;
}
num++;
Vlength--;
}
cout<<“Start_symble:“;
cin>>cfg.Start_symbol;
for(int j=0;j if(cfg.Terminal[j]==‘$‘)
cfg.Terminal[j]=‘\0‘;
cout<<“***********************“< cout<<“cfg---->pda的输出结果:“< cout<<“其中δ转移函数为:“< for(j=0;j {
q=cfg.grammar[j].nextelem1;
while(q->nextelem!=NULL)
{
q=q->nextelem;
cout<<“δ(q$“<leftelem<<“)“< }
}
for(j=0;j cout<<“δ(q“< cout<<“***********************“<}
void pda_cfg()
{
dailta dail;
stacksymbol=‘Z‘;
int sumnum=0k=0i=0;
int dailnum=0j=0;
int m=0n1=0n2=0n3=0n4=0n5=0;
int num=0size=0mnum=0;
cout<<“***************************************“< cout<<“操作2:-----pda转换为cfg------“< cout<<“P=(QΣΓδqZ)请按顺序输入QΣΓδqZ:“< cout<<“Q:“;
cin>>Q;
cout<<“Σ:“;
cin>>T;
cout<<“Γ:“;
cin>>V;
cout<<“δ的数目:“;
cin>>sumnum;
while(sumnum!=0)
{
cout<<“输入第“< cin>>dail[k].cha>>dail[k].chb>>dail[k].chc>>dail[k].chd>>dail[k].che;
k++;
sumnum--;
dailnum++;
}
cout<<“q:“;
cin>>startstate;
num=strlen(V)-1;
for(i=0;i<200;i++)
for(j=0;j<200;j++)
{
st1[i].str[j]=‘\0‘;
st3[i].str[j]=‘\0‘;
}
for(i=0;i {
st1[i].str[0]=Q[i];
size++;
}
digui(numQsize);
i=strlen(Q);
mnum=pow(inum);

cout<<“***********************“< cout<<“pda

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5958  2013-10-30 15:33  Translate\cfg_pda.cpp

     文件        327  2013-10-30 15:33  Translate\cfg_pda.h

     文件      26605  2013-10-30 15:34  Translate\Debug\cfg_pda.obj

     文件     254043  2013-10-30 15:34  Translate\Debug\Translate.exe

     文件     287420  2013-10-30 15:34  Translate\Debug\Translate.ilk

     文件     297680  2013-10-30 15:34  Translate\Debug\Translate.pch

     文件     566272  2013-10-30 15:34  Translate\Debug\Translate.pdb

     文件      74752  2013-10-30 15:34  Translate\Debug\vc60.idb

     文件      69632  2013-10-30 15:34  Translate\Debug\vc60.pdb

     文件        225  2013-10-30 15:33  Translate\pda_cfg.h

     文件         54  2013-10-30 15:33  Translate\store.h

     文件       4496  2013-10-30 15:33  Translate\Translate.dsp

     文件        526  2013-10-30 15:33  Translate\Translate.dsw

     文件      50176  2013-10-30 15:49  Translate\Translate.ncb

     文件      48640  2013-10-30 15:49  Translate\Translate.opt

     文件       1011  2013-10-30 15:34  Translate\Translate.plg

     目录          0  2013-10-30 15:34  Translate\Debug

     目录          0  2013-10-30 15:49  Translate

----------- ---------  ---------- -----  ----

              1687817                    18


评论

共有 条评论