資源簡介
PL/O語言詞法分析、語法分析樹、語義分析與中間代碼生成、解釋執行中間代碼。

代碼片段和文件信息
#include“compileR.h“
void?printStr(string?buf?int?startX?int?startY)?{
//在控制臺指定位置處輸出字符串
HANDLE?hd;
COORD?pos;
pos.X?=?startX;
pos.Y?=?startY;
hd?=?GetStdHandle(STD_OUTPUT_HANDLE);//獲得標準輸出的句柄
// SMALL_RECT?rc?=?{?00200?-?1100?-?1?};//窗口位置和大小
// SetConsoleWindowInfo(hd?true?&rc);
SetConsoleCursorPosition(hd?pos);//設置控制臺光標輸出的位置
cout?<}
int?compileProcedure::findKeyword(char?*buf)?{
//確定該詞是否為關鍵字
if?(!strcmp(buf?“const“))
return?CONSTSYM;
if?(!strcmp(buf?“var“))
return?VARSYM;
if?(!strcmp(buf?“procedure“))
return?PROCSYM;
if?(!strcmp(buf?“begin“))
return?BEGINSYM;
if?(!strcmp(buf?“end“))
return?ENDSYM;
if?(!strcmp(buf?“odd“))
return?ODDSYM;
if?(!strcmp(buf?“if“))
return?IFSYM;
if?(!strcmp(buf?“then“))
return?THENSYM;
if?(!strcmp(buf?“call“))
return?CALLSYM;
if?(!strcmp(buf?“while“))
return?WHILESYM;
if?(!strcmp(buf?“do“))
return?DOSYM;
if?(!strcmp(buf?“write“))
return?WRITESYM;
if?(!strcmp(buf?“read“))
return?READSYM;
return?-1;
}
string?outputEnum(int?type)?{
//輸出枚舉類型實際代表的字符串內容
switch?(type)?{
case?0:
return?“LPAREN“;
break;
case?1:
return?“RPAREN“;
break;
case?2:
return?“EQ“;
break;
case?3:
return?“NEQ“;
break;
case?4:
return?“PLUS“;
break;
case?5:
return?“MINUS“;
break;
case?6:
return?“TIMES“;
break;
case?7:
return?“SPLASH“;
break;
case?8:
return?“COMMA“;
break;
case?9:
return?“SEMICOLON“;
break;
case?10:
return?“PERIOD“;
break;
case?11:
return?“ASSIGN“;
break;
case?12:
return?“COLON“;
break;
case?13:
return?“GE“;
break;
case?14:
return?“GT“;
break;
case?15:
return?“LE“;
break;
case?16:
return?“LSS“;
break;
case?17:
return?“CONSTSYM“;
break;
case?18:
return?“VARSYM“;
break;
case?19:
return?“PROCSYM“;
break;
case?20:
return?“BEGINSYM“;
break;
case?21:
return?“ENDSYM“;
break;
case?22:
return?“ODDSYM“;
break;
case?23:
return?“IFSYM“;
break;
case?24:
return?“THENSYM“;
break;
case?25:
return?“CALLSYM“;
break;
case?26:
return?“WHILESYM“;
break;
case?27:
return?“DOSYM“;
break;
case?28:
return?“WRITESYM“;
break;
case?29:
return?“READSYM“;
break;
case?30:
return?“IDNET“;
break;
case?31:
return?“NUMBER“;
break;
default:
return?“NOThis“;
break;
}
}
int?compileProcedure::GetSym(symbol?*oneFILE?*file)?{
char?ch?=?‘?‘;
int?pos?=?0;
ch?=?fgetc(file);
char?buf[maxIdLength?+?1];
while?(ch?==?‘?‘?||?ch?==?‘\t‘?||?ch?==?‘\r‘?||?ch?==?‘\n‘)?{
if?((ch?=?fgetc(file))?==?EOF)?{
//輸出常量表和符號表
cout?<“符號表輸出如下:“?< for?(int?i?=?0;?i? cout?< cout?<“常量表輸出如下:“?< for?(int?i?=?0;?i? cout?< return?0;
}
}
if?(isalpha(ch))?{
while?(is
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????38948??2018-12-22?12:43??compilePLO\compileR.cpp
?????文件???????2529??2018-12-10?19:10??compilePLO\compileR.h
?????目錄??????????0??2018-12-22?16:11??compilePLO
-----------?---------??----------?-----??----
????????????????41477????????????????????3
- 上一篇:機器學習4-多元線性回歸:數據集與
- 下一篇:進程通信共享內存消息隊列
評論
共有 條評論