Hierarchy (View Summary)

Constructors

Properties

expressions: ExpressionNode[]

The loc field represents the source location information of the node. If the node contains no information about the source location, the field is null or undefined; otherwise it is an object consisting of a start position (the position of the first character of the parsed source region) and an end position (the position of the first character after the parsed source region): and offset index (the position of the first character)

quasis: string[]
range?: [number, number]

start and end position offset

type: string

The type field is a string representing the AST variant type. Each subtype of Node is documented below with the specific string of its type field. You can use this field to determine which interface a node implements.

Methods

  • get all dependencies form an expression node

    the return from this method, is represent an answer for what identifiers this expression depends-on.

    ex:

    x + y;
    
    • for + operator : the answer should be lhs and rhs,
    • for x identifier: the answer should be node x,
    • for y identifier: the answer should be node y.

    so, the return from + will be [ node 'x', node 'y']

    and:

    • x.y.z * a ==> [ member node x.y.z, identifier 'a']

    Parameters

    • Optionalcomputed: true

    Returns ExpressionNode[]

  • ex:

    x + y;
    
    • for + operator : the answer should be lhs and rhs,
    • for x identifier: the answer should be node x,
    • for y identifier: the answer should be node y.

    so, the return from + will be ['x', 'y']

    and:

    • x.y.z ==> ['x', 'y', 'z']
    • x[y].z ==> ['x', ]

    Parameters

    • Optionalcomputed: true

      required for member and chaining operators

    Returns ExpressionEventPath[]

  • get all the events form this expression

    the return from this method, is represent an answer for what is this expression depends-on as identifier name

    ex:

    x + y;
    
    • for + operator : the answer should be lhs and rhs,
    • for x identifier: the answer should be x
    • for y identifier: the answer should be y the final output will be

    so, the return from + will be { x: undefined, y: undefined }

    and:

    • x.y.z * a ==> { x: { y: { z: undefined }, a: undefined } }
    • x.y.z > x.y.h.g ==> { x: { y: { z: undefined, h: { g: undefined} } } }
    • x[Symbol.toStringTag] + 'Class' + classType + array[3] ==> { x: { 'Symbol.toStringTag': undefined }, classType: undefined, array: { 3: undefined } }
    • 'name' ==> {}
    • 
      

    user[firstName + son of ${fatherName}] ``` ==> { user: { 'firstName:fatherName': undefined }, firstName: undefined, fatherName: undefined }

    Returns ExpressionEventMap

  • execute/get the code for this expression and return the result value.

    Parameters

    Returns any

  • Returns undefined | ExpressionNode

  • assign the value to this expression in stack.

    most ExpressionNode will not implement this method, and will throw an exception.

    Parameters

    Returns void

  • Returns object

  • re-write this expression as a javascript source

    Returns string