-
大小: 358KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-07-20
- 語(yǔ)言: C/C++
- 標(biāo)簽: Pascal??編譯器??源代碼??PL/0語(yǔ)言??
資源簡(jiǎn)介
計(jì)算機(jī)系統(tǒng)中最重要的系統(tǒng)軟件,編譯系統(tǒng)的實(shí)現(xiàn)。本軟件以C/C++語(yǔ)言為實(shí)現(xiàn)語(yǔ)言,包括詞法分析,語(yǔ)法分析,語(yǔ)義分析,中間代碼生成等部分。實(shí)現(xiàn)了Pascal語(yǔ)言子集PL/0語(yǔ)言編譯器

代碼片段和文件信息
/*#########################################################################
*???PL/0?編譯程序?由南京航空航天大學(xué)?040630221?嚴(yán)曉軍編寫(xiě)
* 代碼版權(quán)由嚴(yán)曉軍擁有,使用者必須遵循以下約定:
* 可以免費(fèi)使用此文件,但必須包含此聲明。
* 可以修改、傳播、打印、出版這里的源代碼。
* 可以在任何軟件工程中使用這里的源代碼。
* 嚴(yán)曉軍對(duì)于由此源代碼的使用而引起的任何問(wèn)題沒(méi)有任何責(zé)任。
* 嚴(yán)曉軍地址:南京航空航天大學(xué)計(jì)算機(jī)系
* ??????信箱:xiaoxiaon@vip.qq.com
* ??QQ:?603275094
###########################################################################*/
#?include?
#?include?
#?include?
#?include?
#?include?
#?include?
char?file[2008];//在內(nèi)存中儲(chǔ)存源代碼
char?strToken[15];//詞法分析器用以儲(chǔ)存抓取詞的數(shù)組
int?char_num=0;
int?str_num=0;
char?ch;
char?sym[10];
char?id[10];
long?int?num;
int?LEV=0;
int?MI=0;
int?MIS=1;
int?DX=3;
int?jishu=0;
int?code_num=0;
int?swit=1;
int?DL;
int?code_case;
int?out_num;
int?out[100];
int?IsError=0;
struct?table{?????//符號(hào)表結(jié)構(gòu)體
char?name[10];
char?kind[10];
int?val;
int?adr;
int?size;
struct?table?*next;
}*tx0*tx1*p;
struct?code{ //目標(biāo)代碼儲(chǔ)存結(jié)構(gòu)體
int?n;
char?f[3];
int?l;
int?a;
struct?code?*next;
}*cd0*cd;
void?Getsym();//詞法分析器
void?Getchar();
bool?IsLetter();
bool?IsDigit();
void?Concat();
void?Retract();
void?GetBC();
int?Reserve();//查保留字
int?base(int?lint?bint?s[]);
void?block();//分程序處理過(guò)程
void?statement();//語(yǔ)句處理過(guò)程
void?expression();//表達(dá)式處理過(guò)程
void?term();//項(xiàng)處理過(guò)程
void?factor();//因子處理過(guò)程
void?cases();//條件處理過(guò)程
bool?postion();//查詢定位符號(hào)表
bool?compare();
void?interpret();//目標(biāo)代碼解釋
void?recode();
void?ProcError();
void?main()
{
char?temp;
cout<<“###############################################################################“< cout< cout<<“?????????????????作者:?040630221?嚴(yán)曉軍?于?2008年12月27日“< cout<<“###############################################################################“< cout<<“即將開(kāi)始編譯“< system(“pause“);
tx0=(struct?table?*)malloc(sizeof(struct?table));//符號(hào)表初始化
tx0->name[0]=NULL;
tx0->kind[0]=NULL;
tx0->val=NULL;
tx0->adr=NULL;
tx0->size=NULL;
tx0->next=NULL;
p=tx0;
cd0=(struct?code?*)malloc(sizeof(struct?code));//程序段初始化
cd0->n=code_num;
code_num++;
cd0->f[0]=‘j‘;
cd0->f[1]=‘m‘;
cd0->f[2]=‘p‘;
cd0->f[3]=NULL;
cd0->l=0;
cd0->a=NULL;
cd0->next=NULL;
cd=cd0;
cd->next=(struct?code?*)malloc(sizeof(struct?code));
cd=cd->next;
cd->n=NULL;
cd->f[0]=NULL;
cd->l=NULL;
cd->a=NULL;
cd->next=NULL;
fstream?dataFile;
dataFile.open(“code.txt“ios::in);//讀取源程序到內(nèi)存中
if(!dataFile)
{
cout<<“打開(kāi)文件失敗“< exit(0);
}
dataFile.get(file[char_num]);
char_num++;
while(!dataFile.eof())
{
dataFile.get(file[char_num]);
char_num++;
}
char_num=0;
dataFile.close();
Getsym();
block();
if(sym[0]==‘.‘);
else?
{
cout<<“error:???程序末尾缺少句號(hào)“< ProcError();
}
cd->n=code_num;
code_num++;
cd->f[0]=‘o‘;
cd->f[1]=‘p‘;
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????111??2008-12-25?20:54??PL0編譯器\baoliuzi.txt
?????文件????????171??2008-12-27?21:24??PL0編譯器\code.txt
?????文件????????164??2008-12-27?17:30??PL0編譯器\code測(cè)試代碼2.txt
?????文件????????111??2008-12-25?20:54??PL0編譯器\Debug\baoliuzi.txt
?????文件????????171??2008-12-27?20:16??PL0編譯器\Debug\code.txt
?????文件??????65915??2008-12-27?22:21??PL0編譯器\Debug\main.obj
?????文件?????286812??2008-12-27?22:21??PL0編譯器\Debug\PL0編譯器.exe
?????文件?????415764??2008-12-27?22:21??PL0編譯器\Debug\PL0編譯器.ilk
?????文件?????294656??2008-12-25?13:30??PL0編譯器\Debug\PL0編譯器.pch
?????文件?????672768??2008-12-27?22:21??PL0編譯器\Debug\PL0編譯器.pdb
?????文件??????50176??2008-12-27?22:22??PL0編譯器\Debug\vc60.idb
?????文件??????61440??2008-12-27?22:21??PL0編譯器\Debug\vc60.pdb
?????文件??????25428??2008-12-27?22:21??PL0編譯器\main.cpp
?????文件???????4315??2008-12-24?21:26??PL0編譯器\PL0編譯器.dsp
?????文件????????526??2008-12-24?20:07??PL0編譯器\PL0編譯器.dsw
?????文件??????50176??2008-12-27?22:24??PL0編譯器\PL0編譯器.ncb
?????文件??????48640??2008-12-27?22:24??PL0編譯器\PL0編譯器.opt
?????文件????????891??2008-12-27?22:21??PL0編譯器\PL0編譯器.plg
?????目錄??????????0??2008-12-27?22:21??PL0編譯器\Debug
?????目錄??????????0??2008-12-27?22:24??PL0編譯器
-----------?---------??----------?-----??----
??????????????1978235????????????????????20
評(píng)論
共有 條評(píng)論