code: func (parser *Parser) nextToken() *scanner.Token {
  	if len(parser.tokens) == 0 {
  		// fetch next token
  		nextToken := parser.scan.Next()
  
  		// log.Printf("[token] %s => %v", nextToken.Type.String(), nextToken.Value)
  
  		// queue it
  		parser.tokens = append(parser.tokens, nextToken)
  	}
  
  	return parser.tokens[0]
  }
docs: // Returns next token without removing it from tokens buffer