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

📄 lookup.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char sccsid[] = "@(#)lookup.c	4.2 8/11/83";#endif# include "e.h"#include "e.def"#define	TBLSIZE	100tbl	*keytbl[TBLSIZE];	/* key words */tbl	*restbl[TBLSIZE];	/* reserved words */tbl	*deftbl[TBLSIZE];	/* user-defined names */struct {	char	*key;	int	keyval;} keyword[]	={	"sub", 	SUB, 	"sup", 	SUP, 	".EN", 	EOF, 	"from", 	FROM, 	"to", 	TO, 	"sum", 	SUM, 	"hat", 	HAT, 	"vec", VEC, 	"dyad", DYAD, 	"dot", 	DOT, 	"dotdot", 	DOTDOT, 	"bar", 	BAR, 	"tilde", 	TILDE, 	"under", 	UNDER, 	"prod", 	PROD, 	"int", 	INT, 	"integral", 	INT, 	"union", 	UNION, 	"inter", 	INTER, 	"pile", 	PILE, 	"lpile", 	LPILE, 	"cpile", 	CPILE, 	"rpile", 	RPILE, 	"over", 	OVER, 	"sqrt", 	SQRT, 	"above", 	ABOVE, 	"size", 	SIZE, 	"font", 	FONT, 	"fat", FAT, 	"roman", 	ROMAN, 	"italic", 	ITALIC, 	"bold", 	BOLD, 	"left", 	LEFT, 	"right", 	RIGHT, 	"delim", 	DELIM, 	"define", 	DEFINE, #ifdef	NEQN	/* make ndefine synonym for define, tdefine a no-op */	"tdefine",	TDEFINE,	"ndefine",	DEFINE,#else		/* tdefine = define, ndefine = no-op */	"tdefine", 	DEFINE, 	"ndefine", 	NDEFINE, #endif	"gsize", 	GSIZE, 	".gsize", 	GSIZE, 	"gfont", 	GFONT, 	"include", 	INCLUDE, 	"up", 	UP, 	"down", 	DOWN, 	"fwd", 	FWD, 	"back", 	BACK, 	"mark", 	MARK, 	"lineup", 	LINEUP, 	"matrix", 	MATRIX, 	"col", 	COL, 	"lcol", 	LCOL, 	"ccol", 	CCOL, 	"rcol", 	RCOL, 	0, 	0};struct {	char	*res;	char	*resval;} resword[]	={	">=",	"\\(>=",	"<=",	"\\(<=",	"==",	"\\(==",	"!=",	"\\(!=",	"+-",	"\\(+-",	"->",	"\\(->",	"<-",	"\\(<-",	"inf",	"\\(if",	"infinity",	"\\(if",	"partial",	"\\(pd",	"half",	"\\f1\\(12\\fP",	"prime",	"\\f1\\(fm\\fP",	"dollar",	"\\f1$\\fP",	"nothing",	"",	"times",	"\\(mu",	"del",	"\\(gr",	"grad",	"\\(gr",#ifdef	NEQN	"<<",	"<<",	">>",	">>",	"approx",	"~\b\\d~\\u",	"cdot",	"\\v'-.5'.\\v'.5'",	"...",	"...",	",...,",	",...,",#else	"<<",	"<\\h'-.3m'<",	">>",	">\\h'-.3m'>",	"approx",	"\\v'-.2m'\\z\\(ap\\v'.25m'\\(ap\\v'-.05m'",	"cdot",	"\\v'-.3m'.\\v'.3m'",	"...",	"\\v'-.3m'\\ .\\ .\\ .\\ \\v'.3m'",	",...,",	",\\ .\\ .\\ .\\ ,\\|",#endif	"alpha",	"\\(*a",	"beta",	"\\(*b",	"gamma",	"\\(*g",	"GAMMA",	"\\(*G",	"delta",	"\\(*d",	"DELTA",	"\\(*D",	"epsilon",	"\\(*e",	"EPSILON",	"\\f1E\\fP",	"omega",	"\\(*w",	"OMEGA",	"\\(*W",	"lambda",	"\\(*l",	"LAMBDA",	"\\(*L",	"mu",	"\\(*m",	"nu",	"\\(*n",	"theta",	"\\(*h",	"THETA",	"\\(*H",	"phi",	"\\(*f",	"PHI",	"\\(*F",	"pi",	"\\(*p",	"PI",	"\\(*P",	"sigma",	"\\(*s",	"SIGMA",	"\\(*S",	"xi",	"\\(*c",	"XI",	"\\(*C",	"zeta",	"\\(*z",	"iota",	"\\(*i",	"eta",	"\\(*y",	"kappa",	"\\(*k",	"rho",	"\\(*r",	"tau",	"\\(*t",	"omicron",	"\\(*o",	"upsilon",	"\\(*u",	"UPSILON",	"\\(*U",	"psi",	"\\(*q",	"PSI",	"\\(*Q",	"chi",	"\\(*x",	"and",	"\\f1and\\fP",	"for",	"\\f1for\\fP",	"if",	"\\f1if\\fP",	"Re",	"\\f1Re\\fP",	"Im",	"\\f1Im\\fP",	"sin",	"\\f1sin\\fP",	"cos",	"\\f1cos\\fP",	"tan",	"\\f1tan\\fP",	"sec",  "\\f1sec\\fP",	"csc",  "\\f1csc\\fP",	"arc",	"\\f1arc\\fP",	"asin", "\\f1asin\\fP",	"acos", "\\f1acos\\fP",	"atan", "\\f1atan\\fP",	"asec", "\\f1asec\\fP",	"acsc", "\\f1acsc\\fP",	"sinh",	"\\f1sinh\\fP",	"coth",	"\\f1coth\\fP",	"tanh",	"\\f1tanh\\fP",	"cosh",	"\\f1cosh\\fP",	"lim",	"\\f1lim\\fP",	"log",	"\\f1log\\fP",	"max",	"\\f1max\\fP",	"min",	"\\f1min\\fP",	"ln",	"\\f1ln\\fP",	"exp",	"\\f1exp\\fP",	"det",	"\\f1det\\fP",	0,	0};tbl *lookup(tblp, name, defn)	/* find name in tbl. if defn non-null, install */tbl **tblp;char *name, *defn;{	register tbl *p;	register int h;	register char *s = name;	char *malloc();	for (h = 0; *s != '\0'; )		h += *s++;	h %= TBLSIZE;	for (p = tblp[h]; p != NULL; p = p->next)		if (strcmp(name, p->name) == 0) {	/* found it */			if (defn != NULL)				p->defn = defn;			return(p);		}	/* didn't find it */	if (defn == NULL)		return(NULL);	p = (tbl *) malloc(sizeof (tbl));	if (p == NULL)		error(FATAL, "out of space in lookup");	p->name = name;	p->defn = defn;	p->next = tblp[h];	tblp[h] = p;	return(p);}init_tbl()	/* initialize all tables */{	int i;	for (i = 0; keyword[i].key != NULL; i++)		lookup(keytbl, keyword[i].key, keyword[i].keyval);	for (i = 0; resword[i].res != NULL; i++)		lookup(restbl, resword[i].res, resword[i].resval);}

⌨️ 快捷键说明

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