To solve the optimization problem described, we first need to translate the natural language description into a symbolic representation. This involves defining variables, an objective function, and constraints based on the given information.

The problem can be symbolically represented as follows:

- Let `x1` represent the number of regular hot dogs made.
- Let `x2` represent the number of premium hot dogs made.

The objective is to maximize profit. The profit from selling `x1` regular hot dogs at $3 each and `x2` premium hot dogs at $5 each can be represented by the objective function: `3*x1 + 5*x2`.

The constraints based on the problem description are:
- `x1 <= 80`, because there is a demand for at most 80 regular hot dogs.
- `x2 <= 70`, because there is a demand for at most 70 premium hot dogs.
- `x1 + x2 <= 120`, because the stand only has enough supplies to sell at most 120 hot-dogs of either type.
- `x1 >= 0` and `x2 >= 0`, because the number of hot dogs made cannot be negative.

Thus, the symbolic representation in JSON format is:
```json
{
    'sym_variables': [('x1', 'number of regular hot dogs'), ('x2', 'number of premium hot dogs')],
    'objective_function': '3*x1 + 5*x2',
    'constraints': ['x1 <= 80', 'x2 <= 70', 'x1 + x2 <= 120', 'x1 >= 0', 'x2 >= 0']
}
```

Now, let's translate this symbolic representation into Gurobi code in Python to find the solution:

```python
from gurobipy import *

# Create a new model
m = Model("Hot_Dog_Optimization")

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

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

# Add constraints
m.addConstr(x1 <= 80, "max_regular_hot_dogs")
m.addConstr(x2 <= 70, "max_premium_hot_dogs")
m.addConstr(x1 + x2 <= 120, "total_hot_dogs_supply")

# Optimize the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Number of regular hot dogs: {x1.x}")
    print(f"Number of premium hot dogs: {x2.x}")
    print(f"Max Profit: {m.objVal}")
else:
    print("No optimal solution found")
```