# 2.11BSD#431 - /usr/src/ucb/pascal/pi/lookup.c

##### Functions

    lookup            X
    lookup1           X
    nlfund            X

##### Variables

    flagwas           X

       1: /*	@(#)lookup.c	2.2	SCCS id keyword	*/
       2: /* Copyright (c) 1979 Regents of the University of California */
       3: #
       4: /*
       5:  * pi - Pascal interpreter code translator
       6:  *
       7:  * Charles Haley, Bill Joy UCB
       8:  * Version 1.2 November 1978
       9:  */
      10:
      11: #include "whoami"
      12: #include "0.h"
      13:
      14: /*
      15:  * Lookup is called to
      16:  * find a symbol in the
      17:  * block structure symbol
      18:  * table and returns a pointer to
      19:  * its namelist entry.
      20:  */
      21: struct nl *
      22: lookup(s)
      23:     register char *s;
      24: {
      25:     register struct nl *p;
      26:     register struct udinfo *udp;
      27:
      28:     if (s == NIL) {
      29:         nocascade();
      30:         return (NIL);
      31:     }
      32:     p = lookup1(s);
      33:     if (p == NIL) {
      34:         derror("%s is undefined", s);
      35:         return (NIL);
      36:     }
      37:     if (p->class == FVAR) {
      38:         p = p->chain;
      39:         bn--;
      40:     }
      41:     return (p);
      42: }
      43:
      44: #ifndef PI0
      45: int flagwas;
      46: #endif
      47: /*
      48:  * Lookup1 is an internal lookup.
      49:  * It is not an error to call lookup1
      50:  * if the symbol is not defined.  Also
      51:  * lookup1 will return FVARs while
      52:  * lookup never will, thus asgnop
      53:  * calls it when it thinks you are
      54:  * assigning to the function variable.
      55:  */
      56:
      57: struct nl *
      58: lookup1(s)
      59:     register char *s;
      60: {
      61:     register struct nl *p;
      62: #ifndef PI0
      63:     register struct nl *q;
      64: #endif
      65:     register int i;
      66:
      67:     if (s == NIL)
      68:         return (NIL);
      69:     bn = cbn;
      70: #ifndef PI0
      71:     /*
      72: 	 * We first check the field names
      73: 	 * of the currently active with
      74: 	 * statements (expensive since they
      75: 	 * are not hashed).
      76: 	 */
      77:     for (p = withlist; p != NIL; p = p->nl_next) {
      78:         q = p->type;
      79:         if (q == NIL)
      80:             continue;
      81:         if (reclook(q, s) != NIL)
      82:             /*
      83: 			 * Return the WITHPTR, lvalue understands.
      84: 			 */
      85:             return (p);
      86:     }
      87: #endif
      88:     /*
      89: 	 * Symbol table is a 64 way hash
      90: 	 * on the low bits of the character
      91: 	 * pointer value. (Simple, but effective)
      92: 	 */
      93:     i = (int) s & 077;
      94:     for (p = disptab[i]; p != NIL; p = p->nl_next)
      95:         if (p->symbol == s && p->class != FIELD && p->class != BADUSE) {
      96:             bn = (p->nl_block & 037);
      97: #ifndef PI0
      98:             flagwas = p->nl_flags;
      99:             p->nl_flags |= NUSED;
     100: #endif
     101:             return (p);
     102:         }
     103:     return (NIL);
     104: }
     105:
     106: #ifndef PI01
     107: nlfund(sp)
     108:     char *sp;
     109: {
     110:     register struct nl *p;
     111:     register int i;
     112:
     113:     i = (int) sp & 077;
     114:     for (p = disptab[i]; p != NIL; p = p->nl_next)
     115:     if (p->symbol == sp && (p->nl_block & 037) == 0)
     116:         return (nloff(p));
     117:     return (0);
     118: }
     119: #endif

#### Defined functions

lookup defined in line 21; used 11 times

- in /usr/src/ucb/pascal/pi/0.h line 612
- in /usr/src/ucb/pascal/pi/const.c line 101
- in /usr/src/ucb/pascal/pi/cset.c line 72
- in /usr/src/ucb/pascal/pi/func.c line 39
- in /usr/src/ucb/pascal/pi/lab.c line 77, 106
- in /usr/src/ucb/pascal/pi/lval.c line 45
- in /usr/src/ucb/pascal/pi/proc.c line 77
- in /usr/src/ucb/pascal/pi/rval.c line 69
- in /usr/src/ucb/pascal/pi/stat.c line 331
- in /usr/src/ucb/pascal/pi/type.c line 89

lookup1 defined in line 57; used 5 times

- in line 32
- in /usr/src/ucb/pascal/pi/0.h line 619
- in /usr/src/ucb/pascal/pi/fdec.c line 45, 344
- in /usr/src/ucb/pascal/pi/stat.c line 224

nlfund defined in line 107; used 1 times

- in /usr/src/ucb/pascal/pi/string.c line 129

#### Defined variables

flagwas defined in line 45; used 2 times

- in line 98
- in /usr/src/ucb/pascal/pi/lval.c line 50

Last modified: 1981-07-10 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 736 |