## Symbolic Representation

The problem can be converted into a symbolic representation as follows:

```json
{
    'sym_variables': [
        ('x1', 'regular hot dogs'),
        ('x2', 'premium hot dogs')
    ],
    'objective_function': '3*x1 + 5*x2',
    'constraints': [
        'x1 <= 80',
        'x2 <= 70',
        'x1 + x2 <= 120',
        'x1 >= 0',
        'x2 >= 0'
    ]
}
```

## Gurobi Code

The Gurobi code to solve this problem is as follows:

```python
import gurobi

# Create a new model
model = gurobi.Model()

# Define the variables
x1 = model.addVar(lb=0, name="x1")
x2 = model.addVar(lb=0, name="x2")

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

# Add constraints
model.addConstr(x1 <= 80, name="demand_regular")
model.addConstr(x2 <= 70, name="demand_premium")
model.addConstr(x1 + x2 <= 120, name="supply_constraint")

# Optimize the model
model.optimize()

# Print the solution
if model.status == gurobi.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Regular hot dogs: {x1.varValue}")
    print(f"Premium hot dogs: {x2.varValue}")
    print(f"Maximum profit: {model.objVal}")
else:
    print("No optimal solution found.")
```