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

資源簡介

完成一個相對完整的編譯器,該編譯完成對變量類型(整數/浮點數)定義、賦值、四則運算、邏輯運算、跳轉與循環控制功能。其輸入是源程序(參見“一個四則運算源程序示例”),輸出是所有變量的最終值。

資源截圖

代碼片段和文件信息

#define?_CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
using?namespace?std;
#define?MAX?100

char?inputstream[50];???//存儲輸入句子
int?temp1=0;??????//數組下標
int?right1;??????//判斷輸出信息
int?m2=0sum2=0;//sum用于計算運算符的個數
//m用于標記輸入表達式中字符的個數

char?JG=‘A‘;
char?str[MAX];//用于存輸入表達式
int??tokene=0;//左括號的標志
char?prog1[80]token1[8]ch1;
int?syn1p1m1n1sum1;
char?*rwtab1[6]={“begin““if““then““while““do““end“};

int?r1?;
char?prog[80];?//存放所有輸入字符???
char?token[8];?//存放詞組???
char?ch;?//單個字符???

int?synpmni;??//syn:種別編碼???
double?sum;????????
int?count;???

int?isSignal;?//是否帶正負號(0不帶,1負號,2正號)
int?isError;
int?isDecimal;?//是否是小數???
double?decimal;??//小數???
int?isExp;??//是否是指數???
int?index;??//指數冪???
int?isNegative;?//是否帶負號??

double?temp;???
int?temp2;

int?repeat;?//是否連續出現+-

int?nextq;
int?kk;?//臨時變量的標號
int?ntcnfcnncnnbnna;
char?*rwtab[9]={“main““int““float““double““char““if““else““do““while“};
struct{
char?result[10];?//字符串(字符數組)
char?arg1[10];
char?opera[10];
char?arg2[10];
}fourCom[20];?//結構體數組

void?cifafenxi();
void?yufafenxi();
void?zhongjiandaima();
void?scaner1();
void?e();
void?e1();
void?t();
void?t1();
void?f();
void?lrparser();?
void?staBlock(int?*nChain);?//語句塊
void?staString(int?*nChain);?//語句串
void?sta(int?*nChain);?//語句
void?fuzhi();?//賦值語句
void?tiaojian(int?*nChain);?//條件語句
void?xunhuan();?//循環語句
char*?E();?//Expresiion表達式
char*?T();?//Term項
char*?F();?//Factor因子
char?*newTemp();?//自動生成臨時變量
void?backpatch(int?pint?t);?//回填
int?merge(int?p1int?p2);?//合并p1和p2
void?emit(char?*reschar?*num1char?*opchar?*num2);?//生成四元式

void?scanner();?//掃描
void?lrparser()
{
int?nChain;
nfc=ntc=1;
nextq=1;
if(syn==1)?//main
{
scanner();
if(syn==26)?//(
{
scanner();
if(syn==27)?//)
{
scanner();
staBlock(&nChain);
}
else
printf(“缺少右括號\n“);
}
else?
printf(“缺少左括號\n“);
}
else
printf(“缺少main\n“);
}

//<語句塊>?::=?‘{‘<語句串>‘}‘
void?staBlock(int?*nChain)?//語句塊
{
if(syn==28)?//{
{
scanner();
staString(nChain);
//backpatch(*nChainnextq);
if(syn==29)?//}
scanner();??//讀下一個
else
printf(“缺少}號\n“);
}
else
printf(“缺少{號\n“);
}

//<語句串>::=<語句>{;<語句>};
void?staString(int?*nChain)?//語句串
{
sta(nChain);
backpatch(*nChainnextq);
while(syn==31)?//;
{
scanner();
sta(nChain);
}

//backpatch(*nChainnextq-1);
}

void?sta(int?*nChain)?//語句
{
if(syn==10)
{
fuzhi();
//*nChain=0;
}
else?if(syn==6)?//if
{
tiaojian(nChain);
}
else?if(syn==8)?//do
xunhuan();
}

//<條件語句>->if(<條件>)<語句塊>
void?tiaojian(int?*nChain)
{
char?res[10]num1[10]num2[10]op[10];
int?nChainTemp;

//<條件>-><表達式><關系運算符><表達式>
if(syn==6)?//if
{
scanner();
//strcpy(num1E());

if(syn==26)?//(
{
scanner();
strcpy(num1E());

if((syn<=37)&&(syn>=32))?
{
switch(syn)

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-07?15:45??實驗三:編譯器\
?????文件???????17960??2017-04-19?12:55??實驗三:編譯器\1.cpp
?????目錄???????????0??2018-03-07?15:30??實驗三:編譯器\OK\
?????文件???????13675??2017-04-19?15:00??實驗三:編譯器\OK\okok.cpp
?????文件???????11873??2017-04-19?12:39??實驗三:編譯器\OK\簡單版OK.cpp
?????文件???????11873??2017-04-19?12:39??實驗三:編譯器\OK.cpp
?????文件??????247808??2017-04-19?00:07??實驗三:編譯器\編譯原理-簡單編譯器課程設計報告.doc
?????文件??????361441??2017-04-18?23:53??實驗三:編譯器\編譯原理課程設計----C語言編譯器的實現.doc
?????文件??????130048??2018-03-07?15:44??實驗三:編譯器\編譯器.doc

評論

共有 條評論