void compound(int lbr) { if (lbr) Token = scan(); while (RBRACE != Token) { if (eofcheck()) return; stmt(); } Token = scan(); }
static void enumdecl(int glob) { int v = 0; char name[NAMELEN+1]; Token = scan(); if (IDENT == Token) Token = scan(); lbrace(); while (RBRACE != Token) { copyname(name, Text); ident(); if (ASSIGN == Token) { Token = scan(); v = constexpr(); } if (glob) addglob(name, PINT, TCONSTANT, 0, 0, v++, NULL, 0); else addloc(name, PINT, TCONSTANT, 0, 0, v++, 0); if (Token != COMMA) break; Token = scan(); if (eofcheck()) return; }
static void switch_block(void) { int lb, ls, ldflt = 0; int cval[MAXCASE]; int clab[MAXCASE]; int nc = 0; Token = scan(); pushbrk(lb = label()); ls = label(); genjump(ls); while (RBRACE != Token) { if (eofcheck()) return; if ((CASE == Token || DEFAULT == Token) && nc >= MAXCASE) { error("too many 'case's in 'switch'", NULL); nc = 0; } if (CASE == Token) { Token = scan(); cval[nc] = constexpr(); genlab(clab[nc++] = label()); colon(); } else if (DEFAULT == Token) {