資源簡介
報告,源程序,測試用例都有,完整版
報告目錄:
一、設計目的和要求
二、設計概述
三、結構設計說明
四、主要成分描述
五、測試用例(截圖說明等)
六、開發過程和完成情況
七、總結與體會(自評)

代碼片段和文件信息
//A.2?????C??????版???本
/*編譯和運行環境:
*1Visual?C++6.0VisualC++.NET?and?Visual?C++.NET?2003
*WinNT?Win?200?WinXP?and??Win2003?
*2?gcc?version?3.3.2??20031022(Red?Hat?Linux?3.3.2-1)
*Redhat?Fedora?core?1
*Intel?32?platform
*使用方法:
*運行后輸入PL/0?源程序文件名
*回答是否輸出虛擬機代碼
*回答是否輸出名字表
*fa.tmp?輸出虛擬機代碼
*fa1.tmp??輸出源文件及其各行對應的首地址
*fa2.tmp??輸出結果?
*fas.tmp??輸出名字表
*/
#include
#include
#include“pl0.h“
#include“string.h“
/*解釋執行時使用的棧*/
#define?stacksize?500
int?main()
{
bool?nxtlev[symnum];
printf(“????????????*****************編譯課程設計?學生信息******************\n“);
printf(“?????????????????????學院:\n“);
printf(“?????????????????????學號:\n“);
printf(“????????????********************************************************\n“);
printf(“請輸入PL0文件:“);
scanf(“%s“fname);?????????????????????????????????????/*輸入文件名*/
fin=fopen(fname“r“);
//fin=fopen(“05.txt““r“);
if(fin)
{
printf(“是否輸出虛擬機代碼?(Y/N)“);????????????????//是否輸出虛擬機代碼
scanf(“%s“fname);
listswitch=(fname[0]==‘y‘||fname[0]==‘Y‘);
printf(“是否輸出名字表??(Y/N)“);?????????????//是否輸出名字表
scanf(“%s“fname);
tableswitch=(fname[0]==‘y‘||fname[0]==‘Y‘);
fa1=fopen(“fa1.tmp““w“);
fprintf(fa1“Iput?pl/0?file??“);
fprintf(fa1“%s\n“?fname);
init();??????????????????????????????????????????/*初始化*/
err=0;
cc=cx=ll=0;
ch=‘?‘;
/*
//***************************************
//詞法分析程序
getsym();
while(sym!=period)
{
printf(“%s??“symout[sym]);
if(sym==ident)
printf(“%s??“id);
else?if(sym==number)
printf(“%d??“num);
getsym();
}
//******************************************
*/
if(-1!=getsym())
{
fa=fopen(“fa.tmp““w“);
fas=fopen(“fas.tmp““w“);
addset(nxtlevdeclbegsysstatbegsyssymnum);
nxtlev[period]=true;??
if(-1==block(00nxtlev)) //調用編譯程序
{
fclose(fa);
fclose(fa1);
fclose(fas);
fclose(fin);
printf(“\n“);
return?0;
}
fclose(fa);
fclose(fa1);
fclose(fas);
if(sym!=period)
{
error(9);
}
if(err==0)
{
fa2=fopen(“fa2.tmp“?“w“);
interpret();
fclose(fa2);
}
else
{
printf(“-------------\nPL/0程序錯誤!請檢查您的程序!\n“);
}
}
fclose(fin);
}
else
{
printf(“Can‘t?open?file!?\n“);
}
printf(“\n請輸入字符Q結束程序!“);
scanf(“%s“fname);
return?0;
}
/*
*初始化
*/
void?init()
{
int?i;
for(i=0;i<=255;i++)
{
ssym[i]=nul;
}
ssym[‘[‘]=lepa;//一維數組的左括號[
ssym[‘]‘]=ripa;//一維數組的右括號]
ssym[‘+‘]=plus;
ssym[‘-‘]=minus;
ssym[‘*‘]=times;
ssym[‘/‘]=slash;
ssym[‘(‘]=lparen;
ssym[‘)‘]=rparen;
ssym[‘=‘]=eql;
ssym[‘‘]=comma;
ssym[‘.‘]=period;
ssym[‘%‘]=mod;//取余
//ssym[‘#‘]=neq; //不等號給<>替代了,所以#字符將不能識別出來
ssym[‘;‘]=semicolon;
/*設置保留字名字按照字母順序便于折半查找*/
//********************************************************************
//添加增加的保留字下標也要隨著更改
strcpy(&(word[0][0])“begin“);
strcpy(&(word[1][0])“call“);
strcpy(&(word[2][0
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3365??2009-01-08?23:35??編譯原理課程設計\源程序-PL0\PL0.dsp
?????文件????????514??2009-01-08?23:35??編譯原理課程設計\源程序-PL0\PL0.dsw
?????文件???????7240??2009-01-07?17:30??編譯原理課程設計\源程序-PL0\pl0.h
?????文件??????50176??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\PL0.ncb
?????文件????????836??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\PL0.plg
?????文件?????225395??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\Debug\PL0.exe
?????文件?????228132??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\Debug\PL0.ilk
?????文件?????549888??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\Debug\PL0.pdb
?????文件??????41984??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\Debug\vc60.idb
?????文件??????53248??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\Debug\vc60.pdb
?????文件?????245296??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\Debug\PL0.pch
?????文件??????93978??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\Debug\PL0.obj
?????文件??????52824??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\PL0.cpp
?????文件??????48640??2010-06-30?13:25??編譯原理課程設計\源程序-PL0\PL0.opt
?????文件????????218??2009-01-06?17:44??編譯原理課程設計\測試用例\array.txt
?????文件????????133??2009-01-06?17:00??編譯原理課程設計\測試用例\array_for.txt
?????文件??????????0??2010-01-07?20:18??編譯原理課程設計\測試用例\fa.tmp
?????文件????????130??2010-01-07?20:18??編譯原理課程設計\測試用例\fa1.tmp
?????文件??????????8??2010-01-07?20:18??編譯原理課程設計\測試用例\fa2.tmp
?????文件??????????0??2010-01-07?20:18??編譯原理課程設計\測試用例\fas.tmp
?????文件????????138??2009-01-06?16:58??編譯原理課程設計\測試用例\for.txt
?????文件????????363??2009-01-06?02:06??編譯原理課程設計\測試用例\inc.txt
?????文件????????166??2009-01-06?17:41??編譯原理課程設計\測試用例\mod.txt
?????文件?????????71??2010-01-07?20:18??編譯原理課程設計\測試用例\PEME.txt
?????文件?????225386??2010-01-07?19:18??編譯原理課程設計\測試用例\PL0.exe
?????文件????????114??2009-01-08?20:34??編譯原理課程設計\測試用例\repeat.txt
?????文件????????110??2009-01-06?16:56??編譯原理課程設計\測試用例\timesbecomes.txt
?????文件?????????98??2009-01-07?16:51??編譯原理課程設計\測試用例\數組下標出界.txt
?????文件?????????90??2009-01-07?17:24??編譯原理課程設計\測試用例\防止運行棧溢出優化代碼.txt
?????文件?????432128??2010-06-30?13:25??編譯原理課程設計\編譯原理課程設計.doc
............此處省略7個文件信息
評論
共有 條評論