# 2.11BSD#431 - /usr/src/new/PORT/B/src/bsmall/b2tar.c

##### Functions

    bastarg           X
    statbseloc        X
    statrimloc        X
    targ              X

       1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */
       2: /* $Header: b2tar.c,v 1.1 84/06/28 00:49:23 timo Exp $ */
       3:
       4: /* B target locating */
       5: #include "b.h"
       6: #include "b1obj.h"
       7: #include "b2env.h"
       8: #include "b2syn.h"
       9: #include "b2sem.h"
      10:
      11: Visible loc statrimloc(l, v) loc l; value v; {
      12:     /* temporary, while no static type check */
      13:     return (loc) mk_elt();
      14: }
      15:
      16: Visible loc statbseloc(l, k) loc l; value k; {
      17:     /* temporary, while no static type check */
      18:     return (loc) mk_elt();
      19: }
      20:
      21: Visible loc targ(q) txptr q; {
      22:     value c; loc l; txptr i, j; intlet len, k;
      23:     if ((len= 1+count(",", q)) == 1) return bastarg(q);
      24:     c= mk_compound(len);
      25:     k_Overfields {
      26:         if (!Lastfield(k)) req(",", q, &i, &j);
      27:         else i= q;
      28:         l= bastarg(i);
      29:         put_in_field(l, &c, k);
      30:         if (!Lastfield(k)) tx= j;
      31:     }
      32:     return (loc) c;
      33: }
      34:
      35: Visible loc bastarg(q) txptr q; {
      36:     loc l; txptr i, j; value k;
      37:     Skipsp(tx);
      38:     nothing(q, "target");
      39:     if (Char(tx) == '(') {
      40:         tx++; req(")", q, &i, &j);
      41:         l= targ(i); tx= j;
      42:     } else if (Letter(Char(tx))) {
      43:         value t= tag(), *aa;
      44:         aa= lookup(t);
      45:         if (aa == Pnil) l= local_loc(t);
      46:         else if (Is_refinement(*aa))
      47:             pprerr("refined targets are not allowed", "");
      48:         else if (Is_formal(*aa)) {
      49:             l= loc_formal(*aa);
      50:         } else if (Is_shared(*aa))
      51:             l= global_loc(t);
      52:         else l= local_loc(t);
      53:         release(t);
      54:     } else parerr("no target where expected", "");
      55:     Skipsp(tx);
      56:     while (tx < q && Char(tx) == '[') {
      57:         if (xeq) check_location(l);
      58:         tx++; req("]", q, &i, &j);
      59:         k= expr(i); tx= j;
      60:         if (xeq) {
      61:             loc ll= l;
      62:             l= tbsel_loc(l, k);
      63:             release(k); release(ll);
      64:         } else l= statbseloc(l, k);
      65:         Skipsp(tx);
      66:     }
      67:     if (tx < q && (Char(tx) == '@' || Char(tx) == '|')) {
      68:         value v= xeq ? content(l) : Vnil; intlet B, C;
      69:         if (xeq && !Is_text(v))
      70:           error("in the target t@p or t|p, t does not contain a text");
      71:         trimbc(q, xeq ? length(v) : 0, &B, &C);
      72:         release(v);
      73:         if (xeq) l= trim_loc(l, B, C);
      74:         else l= statrimloc(l, k);
      75:         Skipsp(tx);
      76:     }
      77:     if (tx < q) parerr(Char(tx) == ',' ? "comma not allowed here" :
      78:                     "garbage following target", "");
      79:     return l;
      80: }

#### Defined functions

bastarg defined in line 35; used 4 times

- in line 23-28(2)
- in /usr/src/new/PORT/B/src/bsmall/b2sem.h line 59
- in /usr/src/new/PORT/B/src/bsmall/b2uni.c line 168

statbseloc defined in line 16; used 1 times

- in line 64

statrimloc defined in line 11; used 1 times

- in line 74

targ defined in line 21; used 12 times

- in line 41
- in /usr/src/new/PORT/B/src/bsmall/b2cmd.c line 102, 112, 119, 134, 145, 158, 176, 278
- in /usr/src/new/PORT/B/src/bsmall/b2sem.h line 58
- in /usr/src/new/PORT/B/src/bsmall/b2tes.c line 157
- in /usr/src/new/PORT/B/src/bsmall/b2uni.c line 217

Last modified: 1985-08-27 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 625 |