public AST rBlock() throws SyntaxError {
        expect(Tokens.LeftBrace);
        AST t = new BlockTree();
        while (true) {  // get decls
           try {
            t.addKid(rDecl());
           } catch (SyntaxError e) { break; }
        }
        while (true) {  // get statements
           try {
            t.addKid(rStatement());
           } catch (SyntaxError e) { break; }
        }
        expect(Tokens.RightBrace);
        return t;
    }