List<AstNode> parse(List<Token> tokens) { reset(); this.tokens = tokens; List<AstNode> statements = []; while (!isAtEnd()) { statements.add(declaration()); } return statements; }