Functions for parsing lvalue expressions and assignments.
Lvalues are used in the various kinds of assignment statements. They are a restricted subset of expressions, so we do not introduce a separate type for them but rather just reuse our usual expression representation.