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

Defined functions

compound defined in line 34; used 3 times
ndbrace defined in line 6; used 2 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 624
Valid CSS Valid XHTML 1.0 Strict