@lezer/javascript
Version:
lezer-based JavaScript grammar
80 lines (52 loc) • 1.97 kB
Plain Text
Self-closing element {"dialect": "jsx"}
<img/>
==>
Script(ExpressionStatement(JSXElement(JSXSelfClosingTag(JSXStartTag,JSXBuiltin(JSXIdentifier),JSXSelfCloseEndTag))))
Regular element {"dialect": "jsx"}
<Foo>bar</Foo>
==>
Script(ExpressionStatement(JSXElement(
JSXOpenTag(JSXStartTag, JSXIdentifier, JSXEndTag),
JSXText,
JSXCloseTag(JSXStartCloseTag, JSXIdentifier, JSXEndTag))))
Fragment {"dialect": "jsx"}
<>bar</>
==>
Script(ExpressionStatement(JSXElement(
JSXFragmentTag(JSXStartTag, JSXEndTag),
JSXText,
JSXCloseTag(JSXStartCloseTag, JSXEndTag))))
Namespaced name {"dialect": "jsx"}
<blah-namespace:img/>
==>
Script(ExpressionStatement(JSXElement(
JSXSelfClosingTag(JSXStartTag,JSXNamespacedName(JSXIdentifier, JSXIdentifier),JSXSelfCloseEndTag))))
Member name {"dialect": "jsx"}
<pkg.Component/>
==>
Script(ExpressionStatement(JSXElement(
JSXSelfClosingTag(JSXStartTag,JSXMemberExpression(JSXIdentifier, JSXIdentifier),JSXSelfCloseEndTag))))
Nested tags {"dialect": "jsx"}
<a><b.C>text</b.C>{x} {...y}</a>
==>
Script(ExpressionStatement(JSXElement(
JSXOpenTag(JSXStartTag, JSXBuiltin(JSXIdentifier), JSXEndTag),
JSXElement(
JSXOpenTag(JSXStartTag, JSXMemberExpression(JSXIdentifier, JSXIdentifier), JSXEndTag),
JSXText,
JSXCloseTag(JSXStartCloseTag, JSXMemberExpression(JSXIdentifier, JSXIdentifier), JSXEndTag)),
JSXEscape(VariableName),
JSXText,
JSXEscape(Spread, VariableName),
JSXCloseTag(JSXStartCloseTag, JSXBuiltin(JSXIdentifier), JSXEndTag))))
Attributes {"dialect": "jsx"}
<Foo a="1" b {...attrs} c={c}></Foo>
==>
Script(ExpressionStatement(JSXElement(
JSXOpenTag(JSXStartTag, JSXIdentifier,
JSXAttribute(JSXIdentifier, Equals, JSXAttributeValue),
JSXAttribute(JSXIdentifier),
JSXSpreadAttribute(Spread, VariableName),
JSXAttribute(JSXIdentifier, Equals, JSXEscape(VariableName)),
JSXEndTag),
JSXCloseTag(JSXStartCloseTag, JSXIdentifier, JSXEndTag))))