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

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

資源簡(jiǎn)介

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

資源截圖

代碼片段和文件信息

#include?“stdio.h“
#include?“stdlib.h“
#include?“iostream.h“
char?data[20][20];????????????????????//算符優(yōu)先關(guān)系
char?s[100];??????????????????????????//模擬符號(hào)棧s?
char?lable[20];???????????????????????//文法終極符集
char?input[100];??????????????????????//文法輸入符號(hào)串
char?string[20][10];??????????????????//用于輸入串的分析
int?k;??????????????????????????????????????????
char?a;?
int?j;???????????????????????????????????????????????
char?q;??????????????????????????????????????????????
int?r;????????????????????????????????//文法規(guī)則個(gè)數(shù)
int?r1;???????????????????????????????//轉(zhuǎn)化后文法規(guī)則個(gè)數(shù)
char?st[10][30];??????????????????????//用來存儲(chǔ)文法規(guī)則
char?first[10][10];???????????????????//文法非終結(jié)符FIRSTVT集
char?last[10][10];????????????????????//文法非終結(jié)符LASTVT集
int?fflag[10]={0};????????????????????//標(biāo)志第i個(gè)非終結(jié)符的FIRSTVT集是否已求出
int?lflag[10]={0};???????????????????//標(biāo)志第i個(gè)非終結(jié)符的LASTVT集是否已求出
int?deal();??????????????????????????//對(duì)輸入串的分析
int?zhongjie(char?c);????????????????//判斷字符c是否是終極符
int?xiabiao(char?c);?????????????????//求字符c在算符優(yōu)先關(guān)系表中的下標(biāo)
void?out(int?jint?kchar?*s);???????//打印s棧
void?firstvt(char?c);????????????????//求非終結(jié)符c的FIRSTVT集
void?lastvt(char?c);?????????????????//求非終結(jié)符c的LASTVT集
void?table();????????????????????????//創(chuàng)建文法優(yōu)先關(guān)系表
int?main()
{
int?ijk=0;
????printf(“請(qǐng)輸入文法規(guī)則數(shù):“);
scanf(“%d“&r);
printf(“請(qǐng)輸入文法規(guī)則:\n“);
for(i=0;i{
???scanf(“%s“st[i]);????//存儲(chǔ)文法規(guī)則,初始化FIRSTVT集和LASTVT集*/????????
???first[i][0]=0;????????????/*first[i][0]和last[i][0]分別表示st[i][0]非終極
符的FIRSTVT集和LASTVT集中元素的個(gè)數(shù)*/
???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(“每個(gè)非終結(jié)符的FIRSTVT集為:\n“);????//輸出每個(gè)非終結(jié)符的FIRSTVT集
for(i=0;i{
???printf(“%c:?“st[i][0]);
???for(j=0;j???{
????printf(“%c?“first[i][j+1]);
???}
???printf(“\n“);
}
printf(“每個(gè)非終結(jié)符的LASTVT集為:\n“);????//輸出每個(gè)非終結(jié)符的LASTVT集
for(i=0;i{
???printf(“%c:?“st[i][0]);
???for(j=0;j???{
????printf(“%c?“l(fā)ast[i][j+1]);
???}
???printf(“\n“);
}
printf(“算符優(yōu)先分析表如下:\n“);
for(i=0;lable[i]!=‘\0‘;i++)?????????????????????
???printf(“\t%c“l(fā)able[i]);
printf(“\n“);???????????????????????????????????
for(i=0;i{
???printf(“%c\t“l(fā)able[i]);
???for(j=0;j???{
????printf(“%c\t“data[i][j]);
???}
???printf(“\n“);
}
printf(“請(qǐng)輸入文法輸入符號(hào)串以#結(jié)束:“);
scanf(“%s“input);??????????????????????????????????????????

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

評(píng)論

共有 條評(píng)論

相關(guān)資源