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

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

資源簡介

內(nèi)含代碼+報(bào)告 題目: 選擇部分C語言的語法成分,設(shè)計(jì)其詞法分析程序、語法語義分析程序。 要求: 設(shè)計(jì)并實(shí)現(xiàn)一個(gè)一遍掃描的詞法語法語義分析程序,將多條簡單賦值語句翻譯成三地址代碼,要求有一定的出錯(cuò)提示和錯(cuò)誤恢復(fù)功能。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include

#define?BUFFSIZE?5000
char?prog[BUFFSIZE]token[8];
char?chch1;
int?synpqmnsumi=1k=0kkflag=0;
char?*rwtab[32]={“main““break““case““char““define““continue““default“
?????????????????“do““double““else““what““extern““float““for““goto““if“
?????????????????“int““l(fā)ong““stack““return““short““fopen““sizeof“
?“static““struct““switch““typedef““enum““unsigned““void““fclose““while“};
int?main()
{
??void?scaner();
??int?lrparser();
??FILE?*fp;
??if((fp=fopen(“test.txt““r“))==NULL)
????{?printf(“無法打開文件!\n“);
??????exit(1);
????}
??p=0;
??while(!feof(fp))//把測試文件內(nèi)容存入數(shù)組prog中
????{??prog[p++]=fgetc(fp);
???????if(p>=5000)
???????{??printf(“緩沖區(qū)容量不足!\n“);
??????????exit(1);
???????????}
????}
??fclose(fp);
??printf(“分析如下源程序:\n“);
??printf(“%s\n“prog);
??p=0;
printf(“詞法分析結(jié)果:\n“);
do
{
scaner();
switch(syn)
{
case?34:printf(“(%d%d)“synsum);break;
case?-1:printf(“error“);break;
default:printf(“(%d%s)“syntoken);
}
}
while(syn!=0);
p=0;
printf(“\n語法語義分析結(jié)果:\n“);
??scaner();
??lrparser();?
??system(“pause“);?
??return?0;?
}

void?scaner()//從文件中讀取字符并檢查詞法
{?
??for(n=0;n<8;n++)?token[n]=NULL;
??m=0;
??sum=0;
??ch=prog[p];
??while(ch==‘?‘||ch==‘\n‘)
??{?p++;
????ch=prog[p];
??????}//讀下一個(gè)字符

??//if(ch==‘?‘||ch==‘\n‘||ch==‘\t‘)continue;//跳過空格或換行或制表符
??if((ch>=‘A‘&&ch<=‘Z‘)||(ch>=‘a(chǎn)‘&&ch<=‘z‘))//如果是字母
??{?while?(((ch>=‘A‘)&&(ch<=‘Z‘))||((ch>=‘a(chǎn)‘)&&(ch<=‘z‘))||(ch==‘_‘)||((ch>=‘0‘)&&(ch<=‘9‘)))//將連續(xù)的字符存儲(chǔ)為字符串
????{?token[m]=ch;
??????m++;p++;
??????ch=prog[p];
????????}

??token[m++]=‘\0‘;
??syn=33;
??for(n=0;n<32;n++)
?????if(strcmp(tokenrwtab[n])==0)
?????{?syn=n+1;
???????break;
?????????}
??}//判斷輸入字符是否為標(biāo)識(shí)符或者關(guān)鍵字的情況

??else
??????if(ch>=‘0‘&&ch<=‘9‘)
??????{?while(ch>=‘0‘&&ch<=‘9‘)
????????{?sum=sum*10+ch-‘0‘;
??????????p++;
??????????ch=prog[p];
????????????}
????????syn=34;
????}//判斷輸入字符是否為整型常數(shù)的情況

??else
??????switch(ch)
??????{
???????case?‘<‘:token[m]=ch;
????????????????p++;
????????????????ch=prog[p];
????????????????if(ch==‘>‘)
????????????????{?syn=42;
??????????????????m++;
??????????????????token[m]=ch;
??????????????????p++;
????????????????}//出現(xiàn)<>時(shí)
????????????????else?if(ch==‘=‘)
????????????????{?syn=43;
??????????????????m++;
??????????????????token[m]=ch;
??????????????????p++;
????????????????}//出現(xiàn)<=時(shí)
????????????????else
????????????????{?syn=41;}
????????????????break;

???????case?‘>‘:token[m]=ch;
????????????????p++;
????????????????ch=prog[p];
????????????????if(ch==‘=‘)
????????????????{?syn=45;
??????????????????m++;
??????????????????token[m]=ch;
??????????????????p++;
????????????????}//出現(xiàn)>=時(shí)
????????????????else
????????????????{syn=44;}
????????????????break;

???????case?‘:‘:token[m]=ch;
????????????????p++;
????????????????ch=prog[p];
????????????????if(ch==‘=‘)
?????

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件?????????62??2013-11-28?21:34??test.txt

?????文件?????159744??2013-11-28?21:45??實(shí)驗(yàn)報(bào)告.doc

?????文件????????298??2013-11-28?21:31??運(yùn)行說明.txt

?????文件???????7745??2013-11-28?21:14??綜合性實(shí)驗(yàn).cpp

?????文件?????196672??2013-11-28?21:32??綜合性實(shí)驗(yàn).exe

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

???????????????364521????????????????????5


評(píng)論

共有 條評(píng)論

相關(guān)資源