15 static Nlist *nlist[NLSIZE];
23 {"ifdef", KIFDEF, ISKW},
24 {"ifndef", KIFNDEF, ISKW},
25 {"elif", KELIF, ISKW},
26 {"else", KELSE, ISKW},
27 {"endif", KENDIF, ISKW},
28 {"include", KINCLUDE, ISKW},
29 {"define", KDEFINE, ISKW},
30 {"undef", KUNDEF, ISKW},
31 {"line", KLINE, ISKW},
32 {"warning", KWARNING, ISKW},
33 {"error", KERROR, ISKW},
34 {"pragma", KPRAGMA, ISKW},
35 {"eval", KEVAL, ISKW},
36 {"defined", KDEFINED, ISDEFINED+ISUNCHANGE},
37 {"__LINE__", KLINENO, ISMAC+ISUNCHANGE},
38 {"__FILE__", KFILE, ISMAC+ISUNCHANGE},
39 {"__DATE__", KDATE, ISMAC+ISUNCHANGE},
40 {"__TIME__", KTIME, ISMAC+ISUNCHANGE},
41 {"__STDC__", KSTDC, ISUNCHANGE},
45 unsigned long namebit[077+1];
54 static Token deftoken[1] = {{ NAME, 0, 0, 0, 7, (uchar*)"defined" }};
55 static Tokenrow deftr = { deftoken, deftoken, deftoken+1, 1 };
57 for (kp=kwtab; kp->kw; kp++) {
59 t.len = strlen(kp->kw);
63 if (np->val == KDEFINED) {
73 lookup(Token *tp, int install)
80 for (cp=tp->t, cpe=cp+tp->len; cp<cpe; )
85 if (*tp->t==*np->name && tp->len==np->len
86 && strncmp((char*)tp->t, (char*)np->name, tp->len)==0)
97 np->name = newstring(tp->t, tp->len, 0);
100 quickset(tp->t[0], tp->len>1? tp->t[1]:0);