jhusain / asyncgenerator

Asynchronous Generators for ES7
391 stars 22 forks source link

Syntax #12

Open mnieper opened 9 years ago

mnieper commented 9 years ago

In the async generator examples, a syntax like

await yield f()

is used. However, this does not seem to be parseable by the ES6 grammar and https://github.com/lukehoban/ecmascript-asyncawait. await expects an UnaryExpression, while yield produces an AssignmentExpression.

zenparsing commented 9 years ago

Good point. It would have to be

await (yield f())
mnieper commented 9 years ago

In the implementation in Traceur, I have added a parser rule for await yield without parens. I think this grammar change should be added to this or @lukehoban's proposal because await yield will be a common idiom with async generators in place.

zenparsing commented 9 years ago

@mnieper What is the grammar rule you are proposing?

mnieper commented 9 years ago

I don't speak Ecma, but I wouldn't it suffice to say

UnaryExpression :
    ...
    await [Lexical goal InputElementRegExp] UnaryExpression
    await ... YieldExpression

?

arv commented 9 years ago

@mnieper Trying to clean up our parser a bit and the YieldExpression probably needs a [In] there to allow:

await yield 42 in obj
mnieper commented 9 years ago

Yes, this makes perfect sense.

bterlson commented 9 years ago

@mnieper want to file a bug here if you want this syntax in the async functions proposal?