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

📄 vardef.h

📁 C0文法编译器
💻 H
字号:
#include "Com_Def.h"

#define SMAX 255						// 输入字符串的最大长度
#define VARMAX 16						// 变量名的最大长度
#define	NUMRSV	15						// 保留字的个数
#define INTMAX 2147483647				// 整数的最大值
#define REALMAX 3.402823466E+38			// 浮点数的最大

#define SYMTOP				10000		// 符号表最大值

#define SENTENCE			0
#define EXPRESSION			1

const char reserved[NUMRSV][10]={"if","while","switch","case","default",
							"printf","scanf","return","const","void",
							"int","float","char","main","else"};				// 定义保留字

const int first[2][8]=
{{IFSYM,WHILESYM,LBRACKET,IDENT,SCANFSYM,PRINTFSYM,SWITCHSYM,RETURNSYM},
{PLUS,MINUS,IDENT,LPARENT,INTEGER,CHARC,REAL,NUL}};

FILE *fpIn,*fpOut,*fpErr;			// 输入,输出文件句柄,错误输出文件句柄

char fileIn[SMAX],					// 输入文件名
     fileOut[SMAX];					// 输出文件名

char line[SMAX];
int ch;								// 当前读入的字符
int lineNo;							// 当前行号
int err;							// 错误个数
int label;							// 标号序号
struct Symbol{						// 词法分析返回的结构(单词类型、单词值)
	int type;						
	char name[SMAX+1];				// 单词值以字符串形式表示
} sym;
Symbol buf[2];						// 存放超前扫描的单词

union unionc{						
	int ival;
	float fval;
	char cval;
};

struct Symtb {						// 符号表结构
	char name[SMAX+1];					// 名字
	int type;							// 类型
	int kind;							// 种类
	unionc val;							// 常量的值
	int lev;							// 层号
};

Symtb symTable[SYMTOP];					// 符号表
int tTop;								// 符号表栈顶指针
int level;								// 层号
int tbIndex[SYMTOP];					// 分程序索引表
int curLine;							// 当前程序所在的行号
int lineN[2];							// 向后扫描两个字符后的行号

⌨️ 快捷键说明

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