资源简介
计算机系统中最重要的系统软件,编译系统的实现。本软件以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语言实现,有注释
- 下一篇:操作系统 进程调度 多级队列反馈
相关资源
- 国际象棋的qt源代码
- C语言开发实战宝典
- 小甲鱼C语言课件 源代码
- c语言看发的网络协议 ,源代码
- 编译原理c语言编译器
- C语言实现的DES对称加密算法
- 数据结构,迷宫问题C语言版源代码
- C语言 学生信息管理系统 源代码
- C语言版3D魔方游戏源代码
- QT5开发及源代码
- USB CAN Tool 源代码(LabVIEW 2011环境)
- 超声波水表源代码
- 一个模糊PID温度控制算法源代码
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- TCP/IP客户端和服务器端源代码,好用
- 交互式计算机图形学 第六版 OpenGL源代
- 数据结构教程李春葆第五版书中例题
- 三次样条插值类源代码!
- diy写字机grbl v1.1源代码
- C语言常用算法源代码
- 关于LED制作的源代码合集(38套)
-
STM32-ba
se64加密源代码 - C语言编译器的设计与实现.doc
- 51超声波避障源代码
- 一个C++实现的源代码行数统计工具
- ZZULIOJ部分答案C语言免费.7z
- 吉他调音软件源代码
- 连连看源代码C语言版
- AVR单片机SPI通讯程序 (C语言源代码)
评论
共有 条评论