diff --git a/AST.md b/AST.md index 7555620..7e43f87 100644 --- a/AST.md +++ b/AST.md @@ -47,12 +47,22 @@ interface JSXEmptyExpression <: Node { } ``` -Any expression used as attribute value or inside JSX text should is wrapped into expression container: +The expression container node contains statements with the same grammar as a generator body. Also it has a flag to indicate whether it is an expression. Any expression used as attribute value or inside JSX text should is wrapped into expression container: ```js interface JSXExpressionContainer <: Node { type: "JSXExpressionContainer"; - expression: Expression | JSXEmptyExpression; + expression: Expression | JSXEmptyExpression | JSXBlockStatement; + isExpression: boolean; +} +``` + +From `BlockStatement`, this inherits `body: [ Statement ];`. + +```js +interface JSXBlockStatement <: BlockStatement { + type: "JSXStatementList"; + generator: boolean; } ``` diff --git a/README.md b/README.md index 1a67818..71f2815 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ PrimaryExpression : - JSXElement - JSXFragment +- JSXGeneratorExpressionContainer __Elements__ @@ -115,9 +116,21 @@ JSXAttributeValue :
 - `"` JSXDoubleStringCharactersopt `"` - `'` JSXSingleStringCharactersopt `'` - `{` AssignmentExpression `}` +- JSXGeneratorExpressionContainer - JSXElement - JSXFragment +JSXGeneratorExpressionContainer : +- `*` `{` JSXGeneratorExpressionopt `}` + +JSXGeneratorExpression : +- ObjectLiteral +- FunctionExpression +- ClassExpression +- GeneratorExpression +- AsyncFunctionExpression +- FunctionBody[+Yield, ~Await, ~Return] + JSXDoubleStringCharacters :
 - JSXDoubleStringCharacter JSXDoubleStringCharactersopt @@ -145,15 +158,17 @@ JSXChild : - JSXText - JSXElement - JSXFragment +- JSXGeneratorExpressionContainer - `{` JSXChildExpressionopt `}` JSXText : - JSXTextCharacter JSXTextopt +- [lookahead ∉ { `{` }] `*` JSXTextopt JSXTextCharacter : -- SourceCharacter __but not one of `{`, `<`, `>` or `}`__ +- SourceCharacter __but not one of `*`, `{`, `<`, `>` or `}`__ JSXChildExpression :