void compound(int lbr) {
	if (lbr) Token = scan();
	while (RBRACE != Token) {
		if (eofcheck()) return;
		stmt();
	}
	Token = scan();
}
Exemple #2
0
Fichier : decl.c Projet : jezze/gaz
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) {