Книга: UNIX — универсальная среда программирования

3.5.7 symbol.c

3.5.7 symbol.c
#include "hoc.h"
#include "y.tab.h"
static Symbol *symlist = 0; /* symbol table: linked list */
Symbol *lookup(s) /* find s in symbol table */
 char *s;
{
 Symbol *sp;
 for (sp = symlist; sp != (Symbol*)0; sp = sp->next)
  if (strcmp(sp->name, s) == 0)
   return sp;
 return 0; /* 0 ==> not found */
}
Symbol *install(s, t, d) /* install s in symbol table */
 char *s;
 int t;
 double d;
{
 Symbol *sp;
 char *emalloc();
 sp = (Symbol*)emalloc(sizeof(Symbol));
 sp->name = emalloc(strlen(s)+1); /* +1 for '' */
 strcpy(sp->name, s);
 sp->type = t;
 sp->u.val = d;
 sp->next = symlist; /* put at front of list */
 symlist = sp;
 return sp;
}
char *emalloc(n) /* check return from malloc */
 unsigned n;
{
 char *p, *malloc();
 p = malloc(n);
 if (p == 0)
  execerror("out of memory", (char*)0);
 return p;
}

Оглавление книги


Генерация: 0.080. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз