```json
{
  "sym_variables": [
    ("x0", "bowls of cereal"),
    ("x1", "oranges"),
    ("x2", "bowls of pasta")
  ],
  "objective_function": "8*x0 + 3*x1 + 2*x2",
  "constraints": [
    "6*x0 + 5*x2 >= 21",
    "6*x0 + 3*x1 + 5*x2 >= 34",
    "4*x0 + 1*x2 >= 37",
    "4*x0 + 4*x1 >= 23",
    "4*x1 + 1*x2 >= 34",
    "4*x0 + 4*x1 + 1*x2 >= 35",
    "6*x0 + 5*x2 <= 48",
    "6*x0 + 3*x1 + 5*x2 <= 73",
    "6*x0 + 3*x1 + 5*x2 <= 108",  
    "4*x0 + 4*x1 + 1*x2 <= 132"
  ]
}
```

```python
import gurobipy as gp

try:
    # Create a new model
    m = gp.Model("nutrition_optimization")

    # Create variables
    cereal = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="cereal")
    oranges = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="oranges")
    pasta = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="pasta")


    # Set objective function
    m.setObjective(8*cereal + 3*oranges + 2*pasta, gp.GRB.MINIMIZE)

    # Add constraints
    m.addConstr(6*cereal + 5*pasta >= 21, "carb_cereal_pasta_min")
    m.addConstr(6*cereal + 3*oranges + 5*pasta >= 34, "carb_total_min")
    m.addConstr(4*cereal + 1*pasta >= 37, "calcium_cereal_pasta_min")
    m.addConstr(4*cereal + 4*oranges >= 23, "calcium_cereal_oranges_min")
    m.addConstr(4*oranges + 1*pasta >= 34, "calcium_oranges_pasta_min")
    m.addConstr(4*cereal + 4*oranges + 1*pasta >= 35, "calcium_total_min")
    m.addConstr(6*cereal + 5*pasta <= 48, "carb_cereal_pasta_max")
    m.addConstr(6*cereal + 3*oranges + 5*pasta <= 73, "carb_total_max")

    # Resource constraints from the provided dictionary
    m.addConstr(6*cereal + 3*oranges + 5*pasta <= 108, "carb_limit")
    m.addConstr(4*cereal + 4*oranges + 1*pasta <= 132, "calcium_limit")


    # Optimize model
    m.optimize()

    if m.status == gp.GRB.OPTIMAL:
        print('Obj: %g' % m.objVal)
        print('cereal:', cereal.x)
        print('oranges:', oranges.x)
        print('pasta:', pasta.x)
    elif m.status == gp.GRB.INFEASIBLE:
        print('The model is infeasible.')
    else:
        print('Optimization ended with status %d' % m.status)


except gp.GurobiError as e:
    print('Error code ' + str(e.errno) + ': ' + str(e))

except AttributeError:
    print('Encountered an attribute error')
```