#pragma once

#include <string>

#include "Token.hh"

class Scanner
{
public:
  explicit Scanner (std::string source);

  // Return the next token.
  Token
  scanNext ();

private:
  // Return char at `cursor_` as an `int`, or EOF if at end.
  int
  peek () const;

  // Like `peek`, but advance `cursor_`.
  //   Update `line_` and `column_` as necessary. 
  int
  advance (); 
  
  // ...

private:
  std::string source_;
  size_t cursor_ { 0 };
  size_t line_ { 1 };
  size_t column_ { 1 };
};
