資源簡介
代碼是基于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
評論
共有 條評論