4.brace.c
来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 57 行
C
57 行
#include <stdio.h>#include "def.h"#include "4.def.h"#include "3.def.h"ndbrace(v) /* determine whether braces needed around subparts of v */ /* return TRUE if v ends with IF THEN not in braces */VERT v; { VERT w; int i; LOGICAL endif; endif = FALSE; for (i = 0; i < CHILDNUM(v); ++i) { endif = FALSE; for (w = LCHILD(v,i); DEFINED(w); w = RSIB(w)) endif = ndbrace(w); if (NTYPE(v) != DUMVX && NTYPE(v) != ITERVX && (!DEFINED(LCHILD(v,i)) || compound(v,i) || (endif && NTYPE(v) == IFVX && !IFTHEN(v) && i == THEN ))) /* DUMVX doesn't nest, ITERVX doen't nest since nesting is done at LOOPNODE, etc., must check for IFTHEN followed by unrelated ELSE */ { YESBRACE(v,i); endif = FALSE; } } return(endif || IFTHEN(v) ); }compound(v,ch) /* return TRUE iff subpart ch of v has multiple statements */VERT v;int ch; { VERT w; w = LCHILD(v,ch); if (!DEFINED(w)) return(FALSE); if (NTYPE(w) == ITERVX) { ASSERT(DEFINED(NXT(w)),compound); if (LABEL(NXT(w))) return(TRUE); /* loop ends with labeled CONTINUE statement */ else return(compound(w,0)); } else if (DEFINED(RSIB(w))) return(TRUE); else if (NTYPE(w) == STLNVX && CODELINES(w) > 1) return(TRUE); else return(FALSE); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?