declMultiVarStmt method

Stmt declMultiVarStmt()

Implementation

Stmt declMultiVarStmt() {
  final token = consume(
    TokenType.kRaw,
    'Expected variable name after "local".',
  );

  final tokens = [token];
  while (peek().type == TokenType.kComma) {
    advance();
    tokens.add(
      consume(
        TokenType.kRaw,
        'Expected variable name in multi-variable initializer.',
      ),
    );
  }

  final assign = peek();
  if (assign.type != TokenType.kAssign) {
    return DeclMultiVar.initNils(tokens);
  }

  consume(
    TokenType.kAssign,
    'Expected assignment operator for multi-variable initilaizer.',
  );

  final List<MathExpr> values = [math()];

  while (peek().type == TokenType.kComma) {
    advance();
    values.add(math());
  }

  return DeclMultiVar.initVars(tokens, values);
}