To solve this problem, we need to formulate a linear programming model that captures the given constraints and objective. The goal is to maximize profit by determining the optimal number of regular and premium hot dogs to make.

Let's denote:
- \(x_1\) as the number of regular hot dogs made,
- \(x_2\) as the number of premium hot dogs made.

The profit from selling \(x_1\) regular hot dogs at $3 each is \(3x_1\), and the profit from selling \(x_2\) premium hot dogs at $5 each is \(5x_2\). The total profit to be maximized can be represented as:
\[ \text{Maximize:} \quad 3x_1 + 5x_2 \]

The constraints given are:
1. Demand for regular hot dogs: \(x_1 \leq 80\)
2. Demand for premium hot dogs: \(x_2 \leq 70\)
3. Total supply limitation: \(x_1 + x_2 \leq 120\)
4. Non-negativity constraints (since we cannot make a negative number of hot dogs): \(x_1 \geq 0, x_2 \geq 0\)

Now, let's translate these into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Hot_Dog_Stand")

# Define variables
x1 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="regular_hot_dogs")
x2 = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="premium_hot_dogs")

# Set the objective function
m.setObjective(3*x1 + 5*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x1 <= 80, "regular_demand")
m.addConstr(x2 <= 70, "premium_demand")
m.addConstr(x1 + x2 <= 120, "total_supply")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution: Regular Hot Dogs = {x1.x}, Premium Hot Dogs = {x2.x}")
    print(f"Total Profit: ${3*x1.x + 5*x2.x:.2f}")
else:
    print("No optimal solution found")

```