# PTParameterValue and PTParameterExpression

The two ways one `name = expr` parameter can end up represented, matching the constant-folding decision in [the parser](dflparser.md)'s `parameter_list` rule: `PTParameterValue` holds an already-computed [`Value`](value.md) (chosen when [`RpnEvaluator::isConstant()`](rpneval.md) said the expression could be evaluated once, at parse time); `PTParameterExpression` holds the compiled [`Rpn`](rpnexpr.md) instead, to be (re-)evaluated per instantiation. Both carry a name `Id` and a `Loc`; neither is copyable, since duplicating a `Value` or `Rpn` implicitly is not cheap.

Both feed into [`PTParameters`](ptparameters.md), the parameter list attached to an instance, model, subcircuit definition, load, sweep, or analysis.
