Fixtype of expression types.
This is a product type introduced by fty::defprod.
Certain C expressions are lvalues [C:6.3.2/1], i.e. they evaluate to object designators rather than values [C:6.5/1]. In many cases, lvalue conversion [C:6.3.2/2] turns an object designator into the value of the designated object, but some operators (e.g. assignments) require lvalues. Thus, the static semantics must calculate, for each expression, not only its type, but also whether it is an lvalue or not. This information is captured via a type and an lvalue flag.
Expressions may also evaluate to function designators [C:6.5/1]. We do not cover that case for now, because our subset of C makes a limited use of functions; in particular, it has no function pointers. However, in the future this fixtype could be extended accordingly.