AST

You can see the AST as a DOM document, the source code of the program beeing the graphical text output, and the DOM beeing a representation of it.

The main node is the program node, and it's structured like this :

  {
    "kind": "program",
    "children": [
      // array of nodes
    ]
  }

Nodes

Every node has a common structure enabling you to scan them and act accordingly.

NOTE : This structure depends also on what options you enable.

  {
    "kind": "node name",
    "loc": {
      ""
    },
    // the location node
    "loc": {
      "source": "original source code of the node",
      "start": {
        "line": 1, // 1 based
        "column": 0, // 0 based
        "offset": 0 // offset from the source code
      },
      "end": {
        // same structure as start
      }
    },
    "leadingComments": [
      // array of comments nodes
    ]
  }

Nodes hierarchy

AST

Kind: global class Properties

Name

Type

Description

withPositions

Boolean

Should locate any node (by default false)

withSource

Boolean

Should extract the node original code (by default false)

asT.swapLocations()

Change parent node informations after swapping childs

Kind: instance method of AST

asT.resolvePrecedence()

Check and fix precence, by default using right

Kind: instance method of AST

asT.prepare(kind, parser) ⇒ function

Prepares an AST node

Kind: instance method of AST

Param

Type

Description

kind

String | null

Defines the node type (if null, the kind must be passed at the function call)

parser

Parser

The parser instance (use for extracting locations)

Last updated