-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathjsx_ast.format.txt
42 lines (34 loc) · 2.54 KB
/
jsx_ast.format.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
┏━━━━━━━━━━━━━┓
┃ JSX_AST ┃
┗━━━━━━━━━━━━━┛
AST TREE ==> #Supported by all my documented parsers
NOTATION ==> #Like ESTree (see its doc)
<ELEM>...</ELEM> #Child of EXPR, type 'JSXElement':
# - openingElement JSX_OPENING_ELEM
# - [closingElement JSX_CLOSING_ELEM] (none if selfClosing)
# - children ARR of JSX_ELEM|JSX_TEXT|JSX_EXPR_CONTAINER|JSX_SPREAD_CHILD|JSX_FRAGMENT
<>...</> s#Child of EXPR, type 'JSXFragment': like JSX_ELEMENT except closingElement is not optional
<ELEM> #Type 'JSXOpeningElement':
# - name JSX_IDENTIFIER|JSX_MEMBER_EXPR|JSX_NAMESPACED_NAME
# - [selfClosing BOOL]: if <ELEM/>
# - [attributes ARR of JSX_ATTRIBUTE|JSX_SPREAD_ATTRIBUTE]
</ELEM> #Type 'JSXClosingElement':
# - name JSX_IDENTIFIER|JSX_MEMBER_EXPR|JSX_NAMESPACED_NAME
ELEM|ATTR #Child of IDENTIFIER, type 'JSXIdentifier'
ELEM.ELEM2 #Child of EXPR, type 'JSXMemberExpression':
# - object JSX_IDENTIFIER|JSX_MEMBER_EXPR (all parts but last)
# - property JSX_IDENTIFIER (last part)
NS:ELEM|ATTR t#Child of EXPR, type 'JSXNamespacedName':
t# - name JSX_IDENTIFIER
t# - namespace JSX_IDENTIFIER
ATTR[="VAL"] #Type 'JSXAttribute':
# - name JSX_IDENTIFIER|JSX_NAMESPACED_NAME
# - [value LITERAL|JSX_EXPR_CONTAINER|JSX_ELEM|JSX_FRAGMENT]
{...ATTR_OBJ} #Child of SPREAD_ELEM, type 'JSXSpreadAttribute'
{VAL} #Type 'JSXExpressionContainer':
# - expression EXPR or JSX_EMPTY_EXPR (type 'JSXEmptyExpression')
{...CHILD} sae#Type 'JSXSpreadChild'
TEXT s#Type 'JSXText':
s# - value STR
smb# - raw STR
(b)# - extra.rawValue|raw: like value|raw