资源简介
报告,源程序,测试用例都有,完整版
报告目录:
一、设计目的和要求
二、设计概述
三、结构设计说明
四、主要成分描述
五、测试用例(截图说明等)
六、开发过程和完成情况
七、总结与体会(自评)
代码片段和文件信息
//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个文件信息
相关资源
- 计算机组成原理算法实现(二)
- 语义分析实验报告 经典
- 西安电子科技大学编译原理大作业代
- 编译原理文法的预测分析法
- 聊天系统的设计与实现
- 函数信号发生器课程设计
- PLC四节传送带的模拟控制课程设计
- 哈工大编译原理实验三次合一
- 编译原理实验----词法分析、分析预测
- 编译原理课程设计+源代码
- Delphi试卷生成系统
- 销售订单数据库系统课程设计
- 数据结构课程设计报告模板计051-计
- DSP课程设计报告(基于DSP的语音信号
- 图像数字图像课程设计--数字水印设计
- 四川大学编译原理课程设计报告C-词法
- 编译原理,词法分析&语法分析及源代
- Verilog课程设计自动售货机
- 餐饮管理系统UML课程设计报告
- 赋值语句词法和语法分析程序
- 《编译原理》课程设计指导书 算术表
- 常州工学院编译原理试卷A
- 气敏报警器 课程设计报告
- 汽车牌照的排序与查找问题-数据结构
- yacc实现的语法分析器
- 编译原理实验报告
- 编译原理实验报告 词法分析器实验报
- 数据挖掘的课程设计报告
- 西安科技大学编译原理往年期末试题
- 篮球24秒计时器课程设计
评论
共有 条评论