📄 exsternals.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 + -