classDeclaration method

Stmt classDeclaration()

Implementation

Stmt classDeclaration() {
  Token name = consume(TokenType.IDENTIFIER, "Expect class name.");

  Variable? superclass;
  if (match([TokenType.EXTENDS])) {
    consume(TokenType.IDENTIFIER, "Expect superclass name.");
    superclass = Variable(previous());
  }

  consume(TokenType.LEFT_BRACE, "Expect '{' before class body.");

  List<Functional> methods = [];
  while (!check(TokenType.RIGHT_BRACE) && !isAtEnd()) {
    methods.add(function("method"));
  }

  consume(TokenType.RIGHT_BRACE, "Expect '}' after class body.");

  return Class(name, superclass, methods);
}