Add new 'Statement' level for operator precedence.

`kTopLevel` has been renamed to `kExpression` because it is no
longer considered the top level of precedence.

WGSL provides assignments as free-standing statements, not as
nestable expressions. When emitting expressions, we need to be
able to distingush "statement" level (the top level of an
ExpressionStatement) from "expression" level (an expression
embedded in any part of a statement). We need this information
in order to hoist assignment-expressions properly.

This change also happens to slightly improve our generated
code when a statement contains a comma-sequence; we no longer
add unnecessary parentheses.

Bug: skia:14082
Change-Id: If5895649dcc1758cf92ec355f2fd70fb263fff8a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/700676
Commit-Queue: Arman Uguray <armansito@google.com>
Reviewed-by: Arman Uguray <armansito@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
13 files changed