xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 9KB
    文件類型: .cpp
    金幣: 1
    下載: 1 次
    發布日期: 2021-08-10
  • 語言: C/C++
  • 標簽: 編譯原理??

資源簡介

假使給定任意文法G(E): E->E+T|T T->T*P|P P->(E)|i 1. 如果輸入符號串為正確句子,顯示分析步驟,包括分析棧中的內容、優先關系、輸入符號串的變化情況; 2. 如果輸入符號串不是正確句子,則指示出錯位置。

資源截圖

代碼片段和文件信息

#include?“stdio.h“
#include?“stdlib.h“
#include?“iostream.h“
char?data[20][20];????????????????????//算符優先關系
char?s[100];??????????????????????????//模擬符號棧s?
char?lable[20];???????????????????????//文法終極符集
char?input[100];??????????????????????//文法輸入符號串
char?string[20][10];??????????????????//用于輸入串的分析
int?k;??????????????????????????????????????????
char?a;?
int?j;???????????????????????????????????????????????
char?q;??????????????????????????????????????????????
int?r;????????????????????????????????//文法規則個數
int?r1;???????????????????????????????//轉化后文法規則個數
char?st[10][30];??????????????????????//用來存儲文法規則
char?first[10][10];???????????????????//文法非終結符FIRSTVT集
char?last[10][10];????????????????????//文法非終結符LASTVT集
int?fflag[10]={0};????????????????????//標志第i個非終結符的FIRSTVT集是否已求出
int?lflag[10]={0};???????????????????//標志第i個非終結符的LASTVT集是否已求出
int?deal();??????????????????????????//對輸入串的分析
int?zhongjie(char?c);????????????????//判斷字符c是否是終極符
int?xiabiao(char?c);?????????????????//求字符c在算符優先關系表中的下標
void?out(int?jint?kchar?*s);???????//打印s棧
void?firstvt(char?c);????????????????//求非終結符c的FIRSTVT集
void?lastvt(char?c);?????????????????//求非終結符c的LASTVT集
void?table();????????????????????????//創建文法優先關系表
int?main()
{
int?ijk=0;
????printf(“請輸入文法規則數:“);
scanf(“%d“&r);
printf(“請輸入文法規則:\n“);
for(i=0;i{
???scanf(“%s“st[i]);????//存儲文法規則,初始化FIRSTVT集和LASTVT集*/????????
???first[i][0]=0;????????????/*first[i][0]和last[i][0]分別表示st[i][0]非終極
符的FIRSTVT集和LASTVT集中元素的個數*/
???last[i][0]=0;
}
for(i=0;i{
???for(j=0;st[i][j]!=‘\0‘;j++)
???{
????if(st[i][0]<‘A‘||st[i][0]>‘Z‘)
????{
?????printf(“不是算符文法!\n“);
???????exit(-1);
????}
????if(st[i][j]>=‘A‘&&st[i][j]<=‘Z‘)
????{
???????if(st[i][j+1]>=‘A‘&&st[i][j+1]<=‘Z‘)
?????{
??????printf(“不是算符文法!\n“);
???????????exit(-1);
?????}
????}
???}
}
????for(i=0;i{
???for(j=0;st[i][j]!=‘\0‘;j++)
???{
????if((st[i][j]<‘A‘||st[i][j]>‘Z‘)&&st[i][j]!=‘-‘&&st[i][j]!=‘>‘&&st[i][j]!=‘|‘)
?????lable[k++]=st[i][j];
???}
}
lable[k]=‘#‘;
lable[k+1]=‘\0‘;?
table();
printf(“每個非終結符的FIRSTVT集為:\n“);????//輸出每個非終結符的FIRSTVT集
for(i=0;i{
???printf(“%c:?“st[i][0]);
???for(j=0;j???{
????printf(“%c?“first[i][j+1]);
???}
???printf(“\n“);
}
printf(“每個非終結符的LASTVT集為:\n“);????//輸出每個非終結符的LASTVT集
for(i=0;i{
???printf(“%c:?“st[i][0]);
???for(j=0;j???{
????printf(“%c?“last[i][j+1]);
???}
???printf(“\n“);
}
printf(“算符優先分析表如下:\n“);
for(i=0;lable[i]!=‘\0‘;i++)?????????????????????
???printf(“\t%c“lable[i]);
printf(“\n“);???????????????????????????????????
for(i=0;i{
???printf(“%c\t“lable[i]);
???for(j=0;j???{
????printf(“%c\t“data[i][j]);
???}
???printf(“\n“);
}
printf(“請輸入文法輸入符號串以#結束:“);
scanf(“%s“input);??????????????????????????????????????????

deal();
}
void?table()
{
char?text[20][10];
int?ijktlx=0y=0;
int?mn;
x=0;
for(i

評論

共有 條評論