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

  • 大小: 47KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-07-25
  • 語言: 其他
  • 標簽: 遞歸下降??

資源簡介

采用遞歸下降語法制導翻譯法,對算術表達式、賦值語句進行語義分析并生成三地址指令。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
using?namespace?std;
struct??//四元式的定義
{
char?result[12];
char?ag1[12];
char?op[12];
char?ag2[12];
}quad;
//struct?{?char?result1[8];
?//???char?ag11[8];
???//?char?op1[8];
???//?char?ag21[8];
//}?quad[20];

char?prog[80];//緩沖區
int?p=0;//緩沖區prog的指針
char?token[8];//單詞
int?m=0;//單詞token的指針
char?ch;//需要分析的字符
int?syn=0;//單詞的種別碼
int?sum=0;//計算整數
int?n=0;//計數器
int?kk=0;//分析程序開始的標志
int?k=0;?
char?*rwtab[6]={“begin““if““then““while““do““end“};//關鍵字
void?scaner();//掃描函數
char?*factor();//因子
char?*term();//項
char?*expression();//表達式
int?yucu();//語句串
int?statement();//語句
void?emit(char?*resultchar?*ag1char?*opchar?*ag2);
char?*newtemp();
void?emit(char?*resultchar?*ag1char?*opchar?*ag2)
{
strcpy(quad.resultresult);
strcpy(quad.ag1ag1);
strcpy(quad.opop);
strcpy(quad.ag2ag2);
cout<//q++;
}
char?*newtemp()
{
char?*p=(char?*)malloc(12);
char?m[12];
k++;//kk++?
itoa(km10);
strcpy(p+1m);
p[0]=‘t‘;
return?(p);
}
void?scaner()
{
for(n=0;n<8;n++)//for(m=0;m<8;m++)token[m++]=NULL;
{
token[n]=0;//初始化單詞
}
ch=prog[p++];
while(ch==‘?‘)
{
ch=prog[p++];//過濾空格
}
if?((ch>=‘A‘&&ch<=‘Z‘)||(ch>=‘a‘&&ch<=‘z‘))
{
m=0;
while?((ch>=‘A‘&&ch<=‘Z‘)||(ch>=‘a‘&&ch<=‘z‘)||(ch>=‘0‘&&ch<=‘9‘))
{
token[m++]=ch;//將當前字符存入單詞
ch=prog[p++];//取下一個
}
token[m++]=‘\0‘;//結束符
p--;//指針歸位
syn=10;//假定是變量
for?(n=0;n<6;n++)
{
if?(strcmp(tokenrwtab[n])==0)??//-----1補充參數
{
syn=n+1;//關鍵字!
break;
}
}
}
else
if(ch>=‘0‘&&ch<=‘9‘)
{
sum=0;
while?(ch>=‘0‘&&ch<=‘9‘)
{
sum=sum*10+ch-‘0‘;//計算數字
ch=prog[p++];
}
p--;//指針歸位
syn=11;//是數字!
}
else
switch?(ch)
{
case‘>‘?:
m=0;
token[m++]=ch;
ch=prog[p++];
if?(ch==‘=‘)
{
syn=24;//是“>=”
token[m++]=ch;//將“=”存入單詞
}
else
{
syn=23;//是“>”
p--;//指針歸位
}
break;
case‘<‘:
m=0;
token[m++]=ch;
ch=prog[p++];
if?(ch==‘>‘)
{
syn=21;//是“<>”
token[m++]=ch;//將“>”存入單詞
}
else
{
if?(ch==‘=‘)
{
syn=22;//是“<=”
token[m++]=ch;//將“=”存入單詞
}
else
{
syn=20;//是“<”
p--;//指針歸位
}
}
break;
case‘:‘:
m=0;
token[m++]=ch;
ch=prog[p++];
if?(ch==‘=‘)
{
syn=18;
token[m++]=ch;
}?
else
{
syn=17;
p--;
}
break;
case‘-‘:
syn=13;
token[0]=ch;
break;
case‘+‘:
syn=14;
token[0]=ch;
break;
case‘*‘:
syn=15;
token[0]=ch;
break;
case‘/‘:
syn=16;
token[0]=ch;
break;
case‘;‘:
syn=26;
token[0]=ch;
break;
case‘(‘:
syn=28;
token[0]=ch;
break;
case‘)‘:
syn=27;
token[0]

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

?????文件???????5949??2014-06-10?09:16??編譯原理?中間代碼生成\中間代碼生成.cpp

?????文件??????94720??2014-06-10?09:45??編譯原理?中間代碼生成\編譯原理?中生成間代碼.doc

?????目錄??????????0??2014-06-10?13:31??編譯原理?中間代碼生成

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

???????????????100669????????????????????3


評論

共有 條評論