Lines Matching refs:sym

117 deref(register Ftw_t* ftw, Exid_t* sym, register Exref_t* ref)
126 if (ftw && !ref->next && MEMINDEX(sym->index)) break;
127 error(3, "%s: invalid %s.%s reference", path, ref->symbol->name, sym->name);
197 * return value for symbol sym
201 getval(Expr_t* pgm, Exnode_t* node, Exid_t* sym, Exref_t* ref, void* env, int elt, Exdisc_t* disc)
220 if (ref && !(ftw = deref(ftw, sym, ref)))
227 switch (sym->index)
274 error(3, "%s: reference invalid when members declared", sym->name);
359 error(3, "%s: reference invalid when members declared", sym->name);
383 switch (MEMINDEX(sym->index))
386 v = (lp = (Local_t*)ftw->local.pointer) ? lp->value[MEMOFFSET(sym->index)] : exzero(sym->type);
391 v = (vp = (Visit_t*)dtmatch(state.vistab, &id)) ? vp->value[MEMOFFSET(sym->index)] : exzero(sym->type);
394 error(3, "%s: invalid identifier reference [ index=%d memindex=%d memoffset=%d ]", sym->name, sym->index, MEMINDEX(sym->index), MEMOFFSET(sym->index));
411 initvisit(Exid_t* sym)
422 error(3, "%s: cannot allocate file identifier hash table", sym->name);
427 * sym referenced in expression
431 refval(Expr_t* pgm, Exnode_t* node, Exid_t* sym, Exref_t* ref, char* str, int elt, Exdisc_t* disc)
439 error(3, "%s: arrays not supported", sym->name);
444 return getval(pgm, node, sym, ref, &ftwbuf, elt, disc);
446 v = exzero(sym->type);
447 switch (sym->index)
459 sym->index = MEMMAKE(ref->symbol->index, state.localmem++);
467 initvisit(sym);
468 sym->index = MEMMAKE(ref->symbol->index, state.visitmem++);
473 error(3, "invalid %s.%s reference", ref->symbol->name, sym->name);
490 v.integer = sym->index;
544 initvisit(sym);
590 * set value for symbol sym to val
594 setval(Expr_t* pgm, Exnode_t* node, Exid_t* sym, Exref_t* ref, void* env, int elt, Extype_t val, Exdisc_t* disc)
605 error(3, "%s: arrays not supported", sym->name);
606 if (!(ftw = (Ftw_t*)env) || ref && !(ftw = deref(ftw, sym, ref))) return -1;
607 switch (sym->index)
610 if (state.localmem) error(3, "%s: reference invalid when members declared", sym->name);
618 error(3, "%s: reference invalid when members declared", sym->name);
631 switch (MEMINDEX(sym->index))
646 lp->value[MEMOFFSET(sym->index)] = val;
658 vp->value[MEMOFFSET(sym->index)] = val;
840 getnum(Exid_t* sym, Ftw_t* ftw)
844 v = getval(NiL, NiL, sym, NiL, ftw, 0, NiL);
856 Exid_t* sym;
861 if (!(sym = (Exid_t*)dtmatch(state.program->symbols, fp->t_str)))
866 v = getval(NiL, NiL, sym, NiL, ftw, 0, NiL);
867 if ((sym->type & (F|I|S)) == S)