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

📄 cb.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
#define	IF	1#define	ELSE	2#define	CASE	3#define TYPE	4#define DO	5#define STRUCT	6#define OTHER	7#define ALWAYS	01#define	NEVER	02#define	SOMETIMES	04#define YES	1#define NO	0#define	KEYWORD	1#define	DATADEF	2#define	SINIT	3#define CLEVEL	200#define IFLEVEL	100#define DOLEVEL	100#define OPLENGTH	100#define LINE	2048#define LINELENG	2048#define MAXTABS	8#define TABLENG	8#define TEMP	20480#define OUT	outs(clev->tabs); Bputc(output, '\n');opflag = lbegin = 1; count = 0#define OUTK	OUT; keyflag = 0;#define BUMP	clev->tabs++; clev->pdepth++#define UNBUMP	clev->tabs -= clev->pdepth; clev->pdepth = 0#define eatspace()	while((cc=getch()) == ' ' || cc == '\t'); unget(cc)#define eatallsp()	while((cc=getch()) == ' ' || cc == '\t' || cc == '\n'); unget(cc)struct indent {		/* one for each level of { } */	int tabs;	int pdepth;	int iflev;	int ifc[IFLEVEL];	int spdepth[IFLEVEL];} ind[CLEVEL];struct indent *clev = ind;struct keyw {	char	*name;	char	punc;	char	type;} key[] = {	"switch", ' ', OTHER,	"do", ' ', DO,	"while", ' ', OTHER,	"if", ' ', IF,	"for", ' ', OTHER,	"else", ' ', ELSE,	"case", ' ', CASE,	"default", ' ', CASE,	"char", '\t', TYPE,	"int", '\t', TYPE,	"short", '\t', TYPE,	"long", '\t', TYPE,	"unsigned", '\t', TYPE,	"float", '\t', TYPE,	"double", '\t', TYPE,	"struct", ' ', STRUCT,	"union", ' ', STRUCT,	"enum", ' ', STRUCT,	"extern", ' ', TYPE,	"register", ' ', TYPE,	"static", ' ', TYPE,	"typedef", ' ', TYPE,	0, 0, 0};struct op {	char	*name;	char	blanks;	char	setop;} op[] = {	"+=", 	ALWAYS,  YES,	"-=", 	ALWAYS,  YES,	"*=", 	ALWAYS,  YES,	"/=", 	ALWAYS,  YES,	"%=", 	ALWAYS,  YES,	">>=", 	ALWAYS,  YES,	"<<=", 	ALWAYS,  YES,	"&=", 	ALWAYS,  YES,	"^=", 	ALWAYS,  YES,	"|=", 	ALWAYS,  YES,	">>", 	ALWAYS,  YES,	"<<", 	ALWAYS,  YES,	"<=", 	ALWAYS,  YES,	">=", 	ALWAYS,  YES,	"==", 	ALWAYS,  YES,	"!=", 	ALWAYS,  YES,	"=", 	ALWAYS,  YES,	"&&", 	ALWAYS, YES,	"||", 	ALWAYS, YES,	"++", 	NEVER, NO,	"--", 	NEVER, NO,	"->", 	NEVER, NO,	"<", 	ALWAYS, YES,	">", 	ALWAYS, YES,	"+", 	ALWAYS, YES,	"/", 	ALWAYS, YES,	"%", 	ALWAYS, YES,	"^", 	ALWAYS, YES,	"|", 	ALWAYS, YES,	"!", 	NEVER, YES,	"~", 	NEVER, YES,	"*", 	SOMETIMES, YES,	"&", 	SOMETIMES, YES,	"-", 	SOMETIMES, YES,	"?",	ALWAYS,YES,	":",	ALWAYS,YES,	0, 	0,0};Biobuf *input;Biobuf *output;int	strict = 0;int	join	= 0;int	opflag = 1;int	keyflag = 0;int	paren	 = 0;int	split	 = 0;int	folded	= 0;int	dolevel	=0;int	dotabs[DOLEVEL];int	docurly[DOLEVEL];int	dopdepth[DOLEVEL];int	structlev = 0;int	question	 = 0;char	string[LINE];char	*lastlook;char	*p = string;char temp[TEMP];char *tp;int err = 0;char *lastplace = temp;char *tptr = temp;int maxleng	= LINELENG;int maxtabs	= MAXTABS;int count	= 0;char next = '\0';int	inswitch	=0;int	lbegin	 = 1;int lineno	= 0;void work(void);void gotif(void);void gotelse(void);int checkif(char *);void gotdo(void);void resetdo(void);void gottype(struct keyw *lptr);void gotstruct(void);void gotop(int);void keep(struct op *);int getnl(void);void ptabs(int);void outs(int);void putch(char, int);struct keyw *lookup(char *, char *);int comment(int);void putspace(char, int);int getch(void);void unget(char);char *getnext(int);void copy(char *);void clearif(struct indent *);char puttmp(char, int);void error(char *);int cpp_comment(int);

⌨️ 快捷键说明

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