?? 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 + -