3 ms·
> Here `full = true` is a valid expression syntax, and it'd be problematic if `{` could start a block of code here. Golang has almost this exact problem in its
by Joker_vD 4y ago
> Here `full = true` is a valid expression syntax, and it'd be problematic if `{` could start a block of code here.
Golang has almost this exact problem in its grammar but in practice they manage just fine even though there are indeed some edge cases where parser gets confused:
> A parsing ambiguity arises when a composite literal using the TypeName form of the LiteralType appears as an operand between the keyword and the opening brace of the block of an "if", "for", or "switch" statement, and the composite literal is not enclosed in parentheses, square brackets, or curly braces. In this rare case, the opening brace of the literal is erroneously parsed as the one introducing the block of statements. To resolve the ambiguity, the composite literal must appear within parentheses.
if x == (T{a,b,c}[i]) { … }
if (x == T{a,b,c}[i]) { … }