Existential Operator / Null Propagation Operator
Ron.Buckton at microsoft.com
Wed Apr 8 00:21:13 UTC 2015
Brendan Eich wrote:
> Brendan Eich wrote:
> > Caitlin Potter wrote:
> >> 6, 2015 at 5:42 PM, Brendan Eich<brendan at mozilla.org
> >> <https://mail.mozilla.org/listinfo/es-discuss>> wrote:
> >> >
> >> >>/ Did you keep backward compatibility? `x?.1:y` must continue to
> >> work.
> >> />
> >> >
> >> >This is why I suggested a leading operator (`?a.?b()`) because it
> >> seems
> >> >like it would have the least potential for conflict with existing
> >> >valid syntax
> >> What about something like
> >> MemberExpression[?Yield] ?|.| IdentifierName
> >> MemberExpression[?Yield] ?*[* Expression[In, ?Yield] |]|
> >> Context specific to MemberExpressions, as far as I'm aware there's no
> >> otherwise valid ternary expression that could be mixed up for it, and
> >> it wouldn't need a cover grammar?
> > We can try being this precise, as you say -- but we cannot then handle
> > x?(y) as CoffeeScript does. Instead of being neither fish nor fowl,
> > better to be fowl with leading ?, or use a distinct and regular syntax
> > that handles all the cases we want. My two cents,
> The reduce/reduce conflict recognizing a left sentential form '[' E ']'
> vs. M '?' '[' E ']' shows the fatal ambiguity.
There is also ambiguity due to ASI vs. a ConditionalExpression:
obj ? [ expr ]
More information about the es-discuss