Left-values

Left-values appear on the left-hand side of assignments and calls. A left-value describes the location where a value is stored.

<lval> ::=
  | <var>
  | (<wsize>)[<var> + <expr>] // Memory access.
  | (<wsize>)[<var> - <expr>] // Memory access.
  | <var>[<expr>]  // Array access.
  | <var>[<wsize> <expr>]  // Array access.
  | <var>.[<wsize> <expr>]  // Unscaled array access.
  | <var>[<wsize> <expr> : <expr>]  // Subarray.
  | <var>.[<wsize> <expr> : <expr>]  // Unscaled subarray.
  | _ // Ignored value

Left-values syntax is a subset of expression, except for _ which corresponds to an ignored value.