91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-08-16
  • 語言: C/C++
  • 標簽: C++??LL1??

資源簡介

編譯原理實驗:非遞歸預測分析;對LL1文法進行預測分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、////////////////////////////////////////////////////////////////

資源截圖

代碼片段和文件信息

#include?
#include
#include?
#include?
using?namespace?std;
char?termin[7]={‘#‘‘;‘‘+‘‘*‘‘(‘‘)‘‘i‘};??????????/*終結符號*/
char?non_ter[8]={‘p‘‘P‘‘e‘‘t‘‘E‘‘f‘‘T‘‘S‘};?????????/*非終結符號*/

char?Yy_pushtab[13][3]=???????????????????????????????????/*逆序存放產生式右部內容*/
{
{‘P‘‘;‘‘E‘}
{‘p‘}
{‘\0‘}
{‘E‘‘t‘}
{‘\0‘}
{‘E‘‘t‘‘+‘}
{‘\0‘}
{‘T‘‘f‘}
{‘T‘‘f‘‘*‘}
{‘\0‘}
{‘)‘‘e‘‘(‘}
{‘i‘}
{‘p‘}
};??????

int?Yy_d[8][7]=????????????????????????????//LL1分析表
{
{-10-1-10-10}
{21-1-11-11}
{-14-1-1343}
{-1-1-1-17-17}
{-165-1-16-1}
{-1-1-1-110-111}
{-1998-19-1}
{-112-1-112-112}
};


bool?is_Vt(char?xchar?y[])//判斷是否為終結符
{
int?i;
for(i=0;i {
if(y[i]==x)
return(1);???????//若是,返回1 ??????
}
?????return(0);????//若不是,返回0
}



/*******************************************
?主函數
********************************************/
void?main()
{ int?ijkpqwhat_to_do;
????char?chre;
char?W[20]=“S“S[20]=“S“str[20]st[20];
????printf(“\n?請輸入該文法的句型:“);
scanf(“%s“st);
for(int?a=0;a<=strlen(st);a++)
{
r=st[a];
if(isdigit(r))
str[a]=‘i‘;
else?str[a]=st[a];

}
????st[strlen(st)]=‘#‘;
i=strlen(str);
// str[i]=‘#‘;
// str[i+1]=‘\0‘;

j=0;
ch=str[j];
cout<????while(S[0]!=‘\0‘)//分析棧非空則繼續
{for(q=0;S[q]!=‘\0‘;q++)
??W[q]=S[q];?
??? ?W[q]=‘\0‘;
if(is_Vt(S[strlen(S)-1]termin))//棧頂為終結符
{
what_to_do=-1;
if(S[strlen(S)-1]!=ch)//棧頂與輸入符號不等
{
printf(“\n分析結果:該符號串不是文法的句型!\n“);
????????????????return;
}

else
{
????????????????S[strlen(S)-1]=‘\0‘;
j++;
ch=str[j];
}
}
else?//棧頂為非終結符
{???
????????????for(i=0;;i++)//獲得Yy_d[][]的第一個下標
if(non_ter[i]==S[strlen(S)-1])
break;
for(k=0;;k++)//獲得Yy_d[][]的第二個下標
{
if(termin[k]==ch)
break;
if(k==strlen(termin))//輸入符號不是終結符
{
printf(“詞法錯誤!“);
return;
}
}
what_to_do=Yy_d[i][k];
if(what_to_do==-1)
{
printf(“語法錯誤!“);
return;
}
????????????????????????????????????????????
else???????????????????????????????????//把棧頂元素彈出???再把右部壓棧
{
??????????????????????????????
????????????????if(Yy_pushtab[what_to_do][0]==‘\0‘)
S[strlen(S)-1]=‘\0‘;
else
{int?mn;
????n=strlen(S)-1;
????m=n;
????for(int?h=0;h S[n++]=Yy_pushtab[what_to_do][h];
????S[m+strlen(Yy_pushtab[what_to_do])]=‘\0‘;
}
}
}

???printf(“?%s????????????“W);
?????for(p=j;p ???printf(“%c“st[p]);
?if(what_to_do>=0)
??????printf(“????????????????%d“what_to_do);
??
printf(“?\n“);
}

????????printf(“\n分析結果:該符號串是文法的句型.\n“);
????????return;

}


?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????127??2009-06-08?19:59??LL1文法.txt

?????文件???????3110??2009-04-27?21:36??LL1.cpp

-----------?---------??----------?-----??----

?????????????????3237????????????????????2


評論

共有 條評論