资源简介
计算机系统中最重要的系统软件,编译系统的实现。本软件以C/C++语言为实现语言,包括词法分析,语法分析,语义分析,中间代码生成等部分。实现了Pascal语言子集PL/0语言编译器
代码片段和文件信息
/*#########################################################################
* PL/0 编译程序 由南京航空航天大学 040630221 严晓军编写
* 代码版权由严晓军拥有,使用者必须遵循以下约定:
* 可以免费使用此文件,但必须包含此声明。
* 可以修改、传播、打印、出版这里的源代码。
* 可以在任何软件工程中使用这里的源代码。
* 严晓军对于由此源代码的使用而引起的任何问题没有任何责任。
* 严晓军地址:南京航空航天大学计算机系
* 信箱:xiaoxiaon@vip.qq.com
* QQ: 603275094
###########################################################################*/
# include
# include
# include
# include
# include
# include
char file[2008];//在内存中储存源代码
char strToken[15];//词法分析器用以储存抓取词的数组
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{ //符号表结构体
char name[10];
char kind[10];
int val;
int adr;
int size;
struct table *next;
}*tx0*tx1*p;
struct code{ //目标代码储存结构体
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();//分程序处理过程
void statement();//语句处理过程
void expression();//表达式处理过程
void term();//项处理过程
void factor();//因子处理过程
void cases();//条件处理过程
bool postion();//查询定位符号表
bool compare();
void interpret();//目标代码解释
void recode();
void ProcError();
void main()
{
char temp;
cout<<“###############################################################################“< cout< cout<<“ 作者: 040630221 严晓军 于 2008年12月27日“< cout<<“###############################################################################“< cout<<“即将开始编译“< system(“pause“);
tx0=(struct table *)malloc(sizeof(struct table));//符号表初始化
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);//读取源程序到内存中
if(!dataFile)
{
cout<<“打开文件失败“< 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: 程序末尾缺少句号“< ProcError();
}
cd->n=code_num;
code_num++;
cd->f[0]=‘o‘;
cd->f[1]=‘p‘;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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测试代码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
- 上一篇:俄罗斯方块(C语言实现,有注释
- 下一篇:操作系统 进程调度 多级队列反馈
相关资源
- Cocos2d-x实战:C++卷2版源代码
- vc++ 编程宝典(十年典藏版) 书后光
- Visual C++网络编程郑阿奇源代码+PPT
- 编译原理词法分析器实验报告含源代
- C++程序设计经典300例源代码
- 车牌识别系统源代码
- 何斌Visual C++数字图像处理第二版原书
- 《C++游戏开发》笔记十一 平滑动画
- 《MFC游戏开发》笔记十 碰撞检测 配套
- 《MFC游戏开发》笔记三 透明贴图 配套
- 《MFC游戏开发》笔记八 粒子系统 配套
- VS2010编译器 vc_stdx86.part2.rar
- C++编写中国象棋源代码
- 钱能C++程序设计教程 PDF、课件及源代
- c++程序设计第四版课件郑莉等著[含
- modbus 客户端主站C++源代码
- 编译原理词法分析器C++版源代码
- Visual C++ MFC 源代码大全
- 《C++游戏开发》笔记十二 战争迷雾的
- 《MFC游戏开发》笔记九 碰撞检测 怪物
- 源代码——MFC的WebBrowser控件 C++与ja
- 无线通信系统仿真--C++实用模型包含源
- vc++之mfc屏幕监控系统源代码
- 《C++游戏开发》笔记十四 平滑过渡的
- C++ Builder 6实用编程100例光盘、源代码
- C++ Builder 5高级编程精解光盘、源代码
- Visual C++/Turbo C串口通信编程实践第2版
- CTP_API_C++可实盘多合约多策略版本源代
- IAR环境 官方详细说明 编译器 连接器
- C++ MFC 吹泡泡 源代码
评论
共有 条评论