⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exsternals.c

📁 北京航空航天大学计算机系要求的编译器大作业。大概6000行代码。
💻 C
字号:
/***************************************
By BHU 35060122 Peng Hui;
2008.02
description:
A small compiler to translate a C program to 80X80 Assembly Code
***************************************/

#include"Global.h"

char Sym[256];
char sep[] = "\t";
char *Symbol[3];
int vx = 0;  // 形式参数的个数
int serial = 0;   // 用于生成临时变量的序数 t
int serial1 =0;   // 用于生成临时变量的序数 L
int serial2 = 0;  // 用于生成字符串的符号的。
int level = 0;  // 表示当前的层数
int flag = 0;  // 全局变量,用来标志有没有主函数
FILE *fin,*fout,*errlog,*fout,*temp;
FILE *asm;
Table *head1 = NULL,*head2,*current = NULL,*tmp = NULL;
MCode *head = NULL,*tc = NULL;

int error = 0;



char label1[5],label2[5],label3[5];
int sw = 0;  //  标志变量  0:不用生成标号;1: 循环语句;2:条件语句只有if;3条件语句else

int rtn = 0; // 标识函数有没有返回

State state=OUT;

char keywords[10][10] = {
	"void",
	"main",
	"int",
	"if",
	"return",
	"else",
	"const",
	"scanf",
	"printf",
	"while"
};

char *errmsg[] =                    // 错误消息
{
	"语句没有一分号结束!",  		// 0
	"常量声明部分有语法错误!", 		// 1
	"符号表溢出!",					// 2
	"标识符命名重复!",				// 3
	"变量声明有错误",				// 4
	"函数定义有错",					// 5
	"复合语句定义有错",				// 6
	"参数定义有错",					// 7
	"缺少右括号!",					// 8
	"参数表声明有错!",				// 9
	"主函数声明有错!",				// 10
	"缺少右括号",					// 11
	"因式定义有错!",				// 12
	"赋值语句定义有错!",			// 13
	"缺少右大括号",					// 14
	"条件语句定义有错",				// 15
	"循环语句定义有错",				// 16
	"子函数调用有错",				// 17
	"值参列表有错",					// 18
	"读语句定义有错",				// 19
	"写语句有错",					// 20
	"返回语句有错",					// 21
	"语句定义有错",					// 22
	"缺少分号!",					// 23
	"变量重复定义!",				// 24
	"变量没有声明!",				// 25
	"实参太少!",					// 26
	"常量重复定义!",				// 27
	"形参与标识符命名冲突",			// 28
	"实参太多",						// 29
	"int 类型的函数必须有返回值",	// 30
	"int类型函数没有返回值",		// 31
	"常量不能被赋值"				// 32
};

char *code[] = 
{
	"",				// 空
	"const",		// 1
	"var",			// 2
	"func",			//	3
	"vp",			// 4 值参
	"int",			// 5
	"void",			// 6
	":=",			// 7
	"pv",			// 8
	"call",			// 9
	"return",		// 10
	"read",			// 11
	"write",		// 12
	"cmp",			// 13
	"neg",			// 14
	"add",			// 15
	"sub",			// 16
	"mul",			// 17
	"div",			// 18
	"goto"			// 19
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -