I’m trying to build a toy program using the nonlinear facility of JuMP. The general structure looks like this:

```
function solve(constraint::String)
model = Model()
vars = @variable(model, [1:10], base_name="x")
…
cons_expr = Meta.parse(constraint)
add_NL_constraint(model, cons_expr)
end
```

The problem here is: function `add_NL_constraint`

accepts an `Expr`

of *JuMP variables*, which are created in `solve`

. Therefore, directly parsing the input string (such as the above code) will not work.

To be more specific, that means:

```
add_NL_constraint(model, :($(vars[1])==0)) # OK
add_NL_constraint(model, Meta.parse("vars[1]==0")) # not OK, not JuMP variables
add_NL_constraint(model, Meta.parse("\$(vars[1])==0")) # not OK, does not trigger interpolation
```

Is there a way to enable interpolation in `Meta.parse()`

, so that the last approach can work?