The trouble with ambiguous grammars
Brendan Eich
brendan at mozilla.com
Fri Oct 17 15:47:30 PDT 2008
On Oct 17, 2008, at 3:39 PM, Brendan Eich wrote:
> On Oct 17, 2008, at 12:25 PM, Waldemar Horwat wrote:
>
>> Here's a clearer case that Firefox gets wrong (or your grammar gets
>> wrong, depending on your point of view):
>>
>> function f() {return "f"}
>> var x = 3;
>> let (a = 1) a ? f : x++();
>>
>> The grammar states that the last statement must evaluate to "f".
>> Firefox gives a syntax error. This is incorrect because the let
>> expression up to the ++ is a PrimaryExpression so can be used as the
>> left operand of a function call.
Er, you are right, I should have acknowedged this point. The rest of
my post is about x++() not being a valid sentence, which supports your
argument.
While we don't have any usability problems, and torturous statements
such as
let (a = 1) a ? f : x++();
are not written by real users (they'd parenthesize to clear up
things), I agree that we don't want the "prove a negative" problem.
/be
More information about the Es-discuss
mailing list