On Oct 19, 2011, at 3:29 PM, Allen Wirfs-Brock wrote:
> On Oct 19, 2011, at 2:53 PM, Brendan Eich wrote:
>
>> On Oct 19, 2011, at 8:16 AM, Allen Wirfs-Brock wrote:
>>>
>>>
>>> Function expressions were added in ES3. Were they just added at the wrong
>>> place in the grammar?
>>
>> Thanks for raising this, I keep forgetting to.
>>
>> Oddly enough, SpiderMonkey always had them (prior to ES3 even being drafted)
>> as PrimaryExpressions. No one can observe the difference, as you note.
>> Either way, one can write
>>
>> var fun_member = function () {}.member;
>>
>> On aesthetic grounds, I would prefer the grammar to make function
>> expressions primary.
>
> Good, I want to make that change because for semantic specification purposes
> FunctionExpression works better as PrimaryExpression.
>
> I just wanted to make sure, before I make the change, that there wasn't some
> grammatical subtlety I was overlooking
Toy grammar (| is meta, other punctuators after the : are concrete):
E: ME
ME: PE | FE | ME [ E ] | ME . ID | ...
PE: ( E ) | ...
and there's no way that ME -> FE would be reduced where ME -> PE -> FE was not
possible, *and* there are no PE occurrences on the RHS of a production whose
LHS is *not* ME, then FE can move "down" one precedence level from being the
sole RHS part of ME, to being the sole RHS of PE.
(Lotta abbreviation there, sorry.)
Trivial search shows PrimaryExpression occurs in only one RHS, as the sole RHS
part produced from MemberExpression.
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss