2011/6/2 Mike Samuel <[email protected]>: > 2011/6/2 Waldemar Horwat <[email protected]>: >> On 06/02/11 13:43, Mike Samuel wrote: >>> >>> Yes. That grammar is a subset of the grammar that results from >>> replacing the 11.1.6 ' PrimaryExpression : "(" Expression ")" ' >>> production with >>> >>> "(" GroupElement GroupElements ")" >>> >>> where GroupElement is defined as any Statement except for Block and >>> EmptyStatement without a terminal semicolon, and GroupElements is >>> defined thus >>> >>> GroupElements : empty >>> | ";" GroupElement GroupElements >>> >>> but I thought it was easier to reason about ambiguity and locality of >>> spec changes for that subset. >>> >>> >>> 2011/6/2 Waldemar Horwat<[email protected]>: >>>> >>>> Did you mean to disallow an expression as the first statement in your >>>> "block"? >> >> There's no reason to disallow expression statements from the beginning, and >> it's really odd that you can write >> >> (if (a) b; x = 2; c) >> >> but not: >> >> (x = 2; if (a) b; c) >> >> There are other issues, though, with expression statements that begin with >> the word "function", but those happen regardless of whether the expression >> statement is first. For those, are you declaring a named function (in what >> scope?) or returning a function value? > > Quite right. I knew I had left out all declarations in my first pass.
Actually, there's no ambiguity. FunctionDeclaration is not part of Statement. It's part of SourceElement. _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

