资源简介

报告,源程序,测试用例都有,完整版 报告目录: 一、设计目的和要求 二、设计概述 三、结构设计说明 四、主要成分描述 五、测试用例(截图说明等) 六、开发过程和完成情况 七、总结与体会(自评)

资源截图

代码片段和文件信息

//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个文件信息

评论

共有 条评论