Abstract Syntax Tree

Biblioteka do pracy z abstrakcyjnymi drzewami składniowymi.

Węzły

TypPrzykład
ArrayExpressionconst foo = []
ArrayPatternconst [foo, bar] = bar
ArrowFunctionExpression(() => { })
AssignmentExpressionfoo = bar
AssignmentOperator
AssignmentPatternfunction foo(bar = baz) {}
AwaitExpression(async () => { await foo() })()
BigIntLiteralconst foo = 9007199254740991n
BinaryExpressionfoo + bar
BinaryOperator
BlockStatement{ console.log(foo) }
BreakStatementfor (foo in bar) break
CallExpressionfoo()
CatchClausetry {} catch (error) {}
ChainElement
ChainExpressionfoo?.()
Class
ClassBodyclass Foo {}
ClassDeclarationclass Foo {}
ClassExpression(class {})
ConditionalExpressionfoo ? bar : baz
ContinueStatementwhile(true) { continue }
DebuggerStatementdebugger
Declaration
Directive
DoWhileStatementdo {} while (true) {}
EmptyStatement;
ExportAllDeclarationexport * from "foo"
ExportDefaultDeclarationexport default foo
ExportNamedDeclarationexport { foo as bar }
ExportSpecifierexport { foo }
Expression
ExpressionStatementfoo
ForInStatementfor (foo in bar) {}
ForOfStatementfor (foo of bar) {}
ForStatementfor (let i = 0; i < 10; i ++) {}
Function
FunctionBody
FunctionDeclarationfunction foo () {}
FunctionExpression(function () {})
Identifierfoo
IfStatementif (foo) {}
ImportDeclarationimport "foo"
ImportDefaultSpecifierimport foo from "bar"
ImportExpressionimport(foo).then(bar)
ImportNamespaceSpecifierimport * as foo from "bar"
ImportSpecifierimport { foo } from "bar"
LabeledStatementlabel: foo
Literal42
LogicalExpressiontrue && false
LogicalOperator
MemberExpressionfoo.bar
MetaPropertyfunction foo () { new.target }
MethodDefinitionclass Foo { bar() {} }
ModuleDeclaration
ModuleSpecifier
NewExpressionnew Foo()
Node
ObjectExpression({})
ObjectPatternfunction foo ({}) {}
Pattern
Position
Program42
Property
RegExpLiteral
RestElementfunction foo (...bar) {}
ReturnStatementfunction foo () { return bar }
SequenceExpressionfoo, bar
SourceLocation
SpreadElement
Statement
Superclass Foo extends Bar { constructor() { super() } }
SwitchCaseswitch (foo) { case 'bar': }
SwitchStatementswitch(foo) {}
TaggedTemplateExpressioncss.foo`{ color: red; }`
TemplateLiteralcss.foo`{ color: red; }`
ThisExpressionthis.foo = 'bar'
ThrowStatementthrow new Error("foo")
TryStatementtry { foo() } catch (exception) { bar() }
UnaryExpression!foo
UnaryOperator
UpdateExpressionfoo++
UpdateOperator
VariableDeclarationconst answer = 42
VariableDeclaratorconst foo = 'bar'
WhileStatementwhile (true) {}
WithStatement
YieldExpressionfunction* foo() { yield bar }