# 2.11BSD#431 - /usr/src/usr.bin/struct/4.brace.c

##### Functions

    compound          X
    ndbrace           X

       1: #ifndef lint
       2: static char sccsid[] = "@(#)4.brace.c	4.1	(Berkeley)	2/11/83";
       3: #endif not lint
       4:
       5: #include <stdio.h>
       6: #include "def.h"
       7: #include "4.def.h"
       8: #include "3.def.h"
       9:
      10: ndbrace(v)          /* determine whether braces needed around subparts of v */
      11:                 /* return TRUE if v ends with IF THEN not in braces */
      12: VERT v;
      13:     {
      14:     VERT w;
      15:     int i;
      16:     LOGICAL endif;
      17:     endif = FALSE;
      18:     for (i = 0; i < CHILDNUM(v); ++i)
      19:         {
      20:         endif = FALSE;
      21:         for (w = LCHILD(v,i); DEFINED(w); w = RSIB(w))
      22:             endif = ndbrace(w);
      23:         if (NTYPE(v) != DUMVX && NTYPE(v) != ITERVX &&
      24:             (!DEFINED(LCHILD(v,i)) || compound(v,i) ||
      25:             (endif && NTYPE(v) == IFVX && !IFTHEN(v) && i == THEN )))
      26:                 /* DUMVX doesn't nest, ITERVX doen't nest since
      27: 					nesting is done at LOOPNODE, etc., must
      28: 					check for IFTHEN followed by unrelated ELSE */
      29:             {
      30:             YESBRACE(v,i);
      31:             endif = FALSE;
      32:             }
      33:         }
      34:     return(endif || IFTHEN(v) );
      35:     }
      36:
      37:
      38: compound(v,ch)      /* return TRUE iff subpart ch of v has multiple statements */
      39: VERT v;
      40: int ch;
      41:     {
      42:     VERT w;
      43:     w = LCHILD(v,ch);
      44:     if (!DEFINED(w))
      45:         return(FALSE);
      46:     if (NTYPE(w) == ITERVX)
      47:         {
      48:         ASSERT(DEFINED(NXT(w)),compound);
      49:         if (LABEL(NXT(w)))
      50:             return(TRUE);       /* loop ends with labeled CONTINUE statement */
      51:         else
      52:             return(compound(w,0));
      53:         }
      54:     else if (DEFINED(RSIB(w)))
      55:         return(TRUE);
      56:     else if (NTYPE(w) == STLNVX && CODELINES(w) > 1)
      57:         return(TRUE);
      58:     else
      59:         return(FALSE);
      60:     }

#### Defined functions

compound defined in line 38; used 3 times

- in line 24, 48-52(2)

ndbrace defined in line 10; used 2 times

- in line 22
- in /usr/src/usr.bin/struct/4.main.c line 19

#### Defined variables

sccsid defined in line 2; never used

Last modified: 1987-02-17 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 497 |