mirror of
https://github.com/golang/go
synced 2024-09-05 07:54:46 +00:00
spec: fix binary expression grammar rule
The spec explains later in the "Operator precedence" section that * has a higher precedence than +, but the current production rule requires that "1 + 2 * 3" be parsed as "(1 + 2) * 3", instead of the intended "1 + (2 * 3)". The new production rule better matches cmd/internal/gc/go.y's grammar: expr: uexpr | expr LOROR expr | expr LANDAND expr | ... Fixes #10151. Change-Id: I13c9635d6ddf1263cafe7cc63e68f3e5779e24ba Reviewed-on: https://go-review.googlesource.com/9163 Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
99475dfb59
commit
abb818bc03
|
@ -1,6 +1,6 @@
|
|||
<!--{
|
||||
"Title": "The Go Programming Language Specification",
|
||||
"Subtitle": "Version of March 20, 2015",
|
||||
"Subtitle": "Version of April 22, 2015",
|
||||
"Path": "/ref/spec"
|
||||
}-->
|
||||
|
||||
|
@ -3305,7 +3305,7 @@ Operators combine operands into expressions.
|
|||
</p>
|
||||
|
||||
<pre class="ebnf">
|
||||
Expression = UnaryExpr | Expression binary_op UnaryExpr .
|
||||
Expression = UnaryExpr | Expression binary_op Expression .
|
||||
UnaryExpr = PrimaryExpr | unary_op UnaryExpr .
|
||||
|
||||
binary_op = "||" | "&&" | rel_op | add_op | mul_op .
|
||||
|
|
Loading…
Reference in a new issue