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

  • 大小: 6KB
    文件類型: .cpp
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-09-06
  • 語言: C/C++
  • 標簽: 編譯??

資源簡介

對于給定的文法,根據(jù)first集以及follow集構(gòu)造LL(1)分析表。 輸入語句,進行分析

資源截圖

代碼片段和文件信息

//語法分析程序
#include?
#include?
#include?
int?find_first(int?achar?b);//判斷終結(jié)符是否存在于first集中
int?find_follow(int?achar?b);//判斷終結(jié)符是否存在于follow集中
void?construct();//創(chuàng)建預測分析表
void?print_table();//打印預測分析表
char?gra[12][20]?=?{“?““E->TE‘“?“E‘->+TE‘“?“E‘->-TE‘““E‘->^““T->FT‘“
“T‘->*FT‘““T‘->/FT‘““T‘->^““F->id““F->(E)““F->num“};
char?gra_p[12][10]?=?{“?““TA“?“+TA“?“-TA““^““FB“
“*FB““/FB““^““i““(E)““n“};//構(gòu)造預測分析程序?qū)S茫渲忻宽椗cgra數(shù)組對應
char?*first_right[12]?=?{“?““i(n\0““+\0““-\0““^\0““i(n\0““*\0““/\0““^\0““i\0““(\0““n\0“};
char?first_left[5][20]?=?{“i(n““+-^““i(n““*/^““i(n“};
char?*follow[5]?=?{“)$\0““)$\0““+-)$\0““+-)$\0““+-*/)$\0“};
char?ter[9]?=?{‘+‘‘-‘‘*‘‘/‘‘i‘‘n‘‘(‘‘)‘‘$‘};
char?ter_p[9][4]?=?{“+““-““*““/““id““num““(““)““$“};//打印專用
char?not_ter[5][3]?=?{“E““E‘““T““T‘““F“};

int?M[5][9]?=?{NULL};
//構(gòu)造分析表
void?construct()
{?
int?i?=?1;
int?j?=?0;
int?k?=?0;
for(j=?0;j<9;j++)//構(gòu)造E的分析表
{
if(find_first(1ter[j]))
{
M[0][j]?=?1;
}
}
if(find_first(i‘^‘))
{
for(k?=?0;k<9;k++)
{
if(find_follow(1ter[k]))
M[0][k]?=?i;
}
}
for(i?=?2;i? {
for(j?=?0;j<9;j++)
{
if(find_first(iter[j]))
{
M[1][j]?=?i;
}
}
if(find_first(i‘^‘))
{
for(k?=?0;k<9;k++)
{
if(find_follow(1ter[k]))
M[1][k]?=?i;
}
}
}
i?=?5;
for(j?=?0;j<9;j++)//構(gòu)造T的分析表
{
if(find_first(iter[j]))
{
M[2][j]?=?i;
}

}
if(find_first(i‘^‘))
{
for(k?=?0;k<9;k++)
{
if(find_follow(2ter[k]))
M[2][k]?=?i;
}
}
for(i?=?6;i<9;i++)//構(gòu)造T‘的分析表
{
for(j?=?0;j<9;j++)
{
if(find_first(iter[j]))
{
M[3][j]?=?i;
}
}
if(find_first(i‘^‘))
{
for(k?=?0;k<9;k++)
{
if(find_follow(3ter[k]))
M[3][k]?=?i;
}
}
}
for(i?=?9;i<12;i++)//構(gòu)造F的分析表
{
for(j?=?0;j<9;j++)
{
if(find_first(iter[j]))
{
M[4][j]?=?i;
}
}
if(find_first(i‘^‘))
{
for(k?=?0;k<9;k++)
{
if(find_follow(4ter[k]))
M[4][k]?=?i;
}
}
}
}
//查找字符是否存在于first集中,存在,返回1,不存在,返回0
int?find_first(int?ichar?b)
{
int?j?=?0;
while(first_right[i][j]!=‘\0‘)
{
if(first_right[i][j]==b)
{
return?1;
}
else
{
j++;
}
}
if(first_right[i][j]==‘\0‘)
return?0;
}

//查找字符是否存在于follow集中,存在,返回1,不存在,返回0
int?find_follow(int?ichar?b)
{
int?j?=?0;
while(follow[i][j]!=‘\0‘)
{
if(follow[i][j]==b)
{
return?1;
}
else
{
j++;
}
}
if(follow[i][j]==‘\0‘)
return?0;
}


//打印預測分析表
void?print_table()
{
printf(“構(gòu)造此文法的預測分析表如下:\n?“);
for(int?i?=?0;i<9;i++)
{
printf(“%10s“ter_p[i]);
//printf(“\t“);
}
printf(“\n“);
for(int?i?=?0;i<5;i++)
{
printf(“%s?“not_ter[i]);
for(int?j?=?0;j<9;j++)
{
if(M[i][j]!=NULL)
{
printf(“%10s“gra[M[i][j]]);
}
else
{
printf(“????

評論

共有 條評論