private void Program() {
        nextToken();
        while (iterator.current().type().is(
                new Token.Type[] { 
                    Token.Type.VAR, Token.Type.FUNC, Token.Type.STRUCT
            })) {

            try {
                if(iterator.current().type().is(Token.Type.FUNC)) {
                    parseTree.addChild(FunctionDecl());
                } else if (iterator.current().type().is(Token.Type.STRUCT)) {
                    parseTree.addChild(StructDecl());
                    Semicolon();
                } else if (iterator.current().type().is(Token.Type.VAR)){
                    parseTree.addChild(VariableDecl());
                    Semicolon();
                }
            } catch(SyntaxException ex) {
                continue;
            }
        }
    }