diff options
Diffstat (limited to 'soltools/cpp/_nlist.c')
-rw-r--r-- | soltools/cpp/_nlist.c | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/soltools/cpp/_nlist.c b/soltools/cpp/_nlist.c deleted file mode 100644 index fa29fb142..000000000 --- a/soltools/cpp/_nlist.c +++ /dev/null @@ -1,120 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "cpp.h" - -extern int Cplusplus; -Nlist *kwdefined; -char wd[128]; - -/* - ER: Tabelle extra gross gemacht, da es anscheinend ein Problem mit der - der Verkettung gibt, irgendwann irgendwo wird mal ein nlist->next - ueberschrieben, was in eineme SIGSEGV resultiert. - Den GDB mit watchpoint hab ich aber nach 2 Tagen abgebrochen.. - so loeppt's jedenfalls erstmal.. - */ -#define NLSIZE 15000 - -static Nlist *nlist[NLSIZE]; - -struct kwtab -{ - char *kw; - int val; - int flag; -} kwtab[] = - -{ - {"if", KIF, ISKW}, - {"ifdef", KIFDEF, ISKW}, - {"ifndef", KIFNDEF, ISKW}, - {"elif", KELIF, ISKW}, - {"else", KELSE, ISKW}, - {"endif", KENDIF, ISKW}, - {"include", KINCLUDE, ISKW}, - {"include_next", KINCLUDENEXT, ISKW}, - {"import", KIMPORT, ISKW}, - {"define", KDEFINE, ISKW}, - {"undef", KUNDEF, ISKW}, - {"line", KLINE, ISKW}, - {"error", KERROR, ISKW}, - {"pragma", KPRAGMA, ISKW}, - {"ident", KIDENT, ISKW}, - {"eval", KEVAL, ISKW}, - {"defined", KDEFINED, ISDEFINED + ISUNCHANGE}, - {"machine", KMACHINE, ISDEFINED + ISUNCHANGE}, - {"__LINE__", KLINENO, ISMAC + ISUNCHANGE}, - {"__FILE__", KFILE, ISMAC + ISUNCHANGE}, - {"__DATE__", KDATE, ISMAC + ISUNCHANGE}, - {"__TIME__", KTIME, ISMAC + ISUNCHANGE}, - {"__STDC__", KSTDC, ISUNCHANGE}, - {NULL, 0, 0} -}; - -unsigned long namebit[077 + 1]; - -void - setup_kwtab(void) -{ - struct kwtab *kp; - Nlist *np; - Token t; - static Token deftoken[1] = {{NAME, 0, 0, 7, (uchar *) "defined", 0}}; - static Tokenrow deftr = {deftoken, deftoken, deftoken + 1, 1}; - - for (kp = kwtab; kp->kw; kp++) - { - t.t = (uchar *) kp->kw; - t.len = strlen(kp->kw); - np = lookup(&t, 1); - np->flag = (char) kp->flag; - np->val = (char) kp->val; - if (np->val == KDEFINED) - { - kwdefined = np; - np->val = NAME; - np->vp = &deftr; - np->ap = 0; - } - } -} - -Nlist * - lookup(Token * tp, int install) -{ - unsigned int h; - Nlist *np; - uchar *cp, *cpe; - - h = 0; - for (cp = tp->t, cpe = cp + tp->len; cp < cpe;) - h += *cp++; - h %= NLSIZE; - np = nlist[h]; - while (np) - { - if (*tp->t == *np->name && tp->len == (unsigned int)np->len - && strncmp((char *)tp->t, (char *)np->name, tp->len) == 0) - return np; - np = np->next; - } - if (install) - { - np = new(Nlist); - np->vp = NULL; - np->ap = NULL; - np->flag = 0; - np->val = 0; - np->len = tp->len; - np->name = newstring(tp->t, tp->len, 0); - np->next = nlist[h]; - nlist[h] = np; - quickset(tp->t[0], tp->len > 1 ? tp->t[1] : 0); - return np; - } - return NULL; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |