@eagleoutice/flowr - v2.10.2
    Preparing search index...

    All fold functions besides down are called after the down-pass in conventional fold-fashion. The down argument holds information obtained during the down-pass, issued by the down function.

    interface StatefulFoldFunctions<Info, Down, Up> {
        down: DownFold<Info, Down>;
        foldAccess: (
            node: RAccess<Info>,
            name: Up,
            access: readonly ("<>" | Up)[],
            down: Down,
        ) => Up;
        foldBinaryOp: (op: RBinaryOp<Info>, lhs: Up, rhs: Up, down: Down) => Up;
        foldExprList: (
            exprList: RExpressionList<Info>,
            grouping: [start: Up, end: Up] | undefined,
            expressions: Up[],
            down: Down,
        ) => Up;
        foldIfThenElse: (
            ifThenExpr: RIfThenElse<Info>,
            cond: Up,
            then: Up,
            otherwise: Up | undefined,
            down: Down,
        ) => Up;
        foldLogical: (logical: RLogical<Info>, down: Down) => Up;
        foldNumber: (num: RNumber<Info>, down: Down) => Up;
        foldPipe: (op: RPipe<Info>, lhs: Up, rhs: Up, down: Down) => Up;
        foldString: (str: RString<Info>, down: Down) => Up;
        foldSymbol: (symbol: RSymbol<Info>, down: Down) => Up;
        foldUnaryOp: (op: RUnaryOp<Info>, operand: Up, down: Down) => Up;
        functions: {
            foldArgument: (
                argument: RArgument<Info>,
                name: Up | undefined,
                value: Up | undefined,
                down: Down,
            ) => Up;
            foldFunctionCall: (
                call: RFunctionCall<Info>,
                functionNameOrExpression: Up,
                args: ("<>" | Up)[],
                down: Down,
            ) => Up;
            foldFunctionDefinition: (
                definition: RFunctionDefinition<Info>,
                params: Up[],
                body: Up,
                down: Down,
            ) => Up;
            foldParameter: (
                parameter: RParameter<Info>,
                name: Up,
                defaultValue: Up | undefined,
                down: Down,
            ) => Up;
        };
        loop: {
            foldBreak: (brk: RBreak<Info>, down: Down) => Up;
            foldFor: (
                loop: RForLoop<Info>,
                variable: Up,
                vector: Up,
                body: Up,
                down: Down,
            ) => Up;
            foldNext: (next: RNext<Info>, down: Down) => Up;
            foldRepeat: (loop: RRepeatLoop<Info>, body: Up, down: Down) => Up;
            foldWhile: (
                loop: RWhileLoop<Info>,
                condition: Up,
                body: Up,
                down: Down,
            ) => Up;
        };
        other: {
            foldComment: (comment: RComment<Info>, down: Down) => Up;
            foldLineDirective: (comment: RLineDirective<Info>, down: Down) => Up;
        };
    }

    Type Parameters

    • Info
    • Down
    • Up
    Index

    Properties

    foldAccess: (
        node: RAccess<Info>,
        name: Up,
        access: readonly ("<>" | Up)[],
        down: Down,
    ) => Up
    foldBinaryOp: (op: RBinaryOp<Info>, lhs: Up, rhs: Up, down: Down) => Up
    foldExprList: (
        exprList: RExpressionList<Info>,
        grouping: [start: Up, end: Up] | undefined,
        expressions: Up[],
        down: Down,
    ) => Up
    foldIfThenElse: (
        ifThenExpr: RIfThenElse<Info>,
        cond: Up,
        then: Up,
        otherwise: Up | undefined,
        down: Down,
    ) => Up

    The otherwise argument is undefined if the else branch is missing

    foldLogical: (logical: RLogical<Info>, down: Down) => Up
    foldNumber: (num: RNumber<Info>, down: Down) => Up
    foldPipe: (op: RPipe<Info>, lhs: Up, rhs: Up, down: Down) => Up
    foldString: (str: RString<Info>, down: Down) => Up
    foldSymbol: (symbol: RSymbol<Info>, down: Down) => Up
    foldUnaryOp: (op: RUnaryOp<Info>, operand: Up, down: Down) => Up
    functions: {
        foldArgument: (
            argument: RArgument<Info>,
            name: Up | undefined,
            value: Up | undefined,
            down: Down,
        ) => Up;
        foldFunctionCall: (
            call: RFunctionCall<Info>,
            functionNameOrExpression: Up,
            args: ("<>" | Up)[],
            down: Down,
        ) => Up;
        foldFunctionDefinition: (
            definition: RFunctionDefinition<Info>,
            params: Up[],
            body: Up,
            down: Down,
        ) => Up;
        foldParameter: (
            parameter: RParameter<Info>,
            name: Up,
            defaultValue: Up | undefined,
            down: Down,
        ) => Up;
    }

    Type Declaration

    • foldArgument: (
          argument: RArgument<Info>,
          name: Up | undefined,
          value: Up | undefined,
          down: Down,
      ) => Up

      The name is undefined if the argument is unnamed, the value, if we have something like x=,...

    • foldFunctionCall: (
          call: RFunctionCall<Info>,
          functionNameOrExpression: Up,
          args: ("<>" | Up)[],
          down: Down,
      ) => Up

      folds named and unnamed function calls

    • foldFunctionDefinition: (
          definition: RFunctionDefinition<Info>,
          params: Up[],
          body: Up,
          down: Down,
      ) => Up
    • foldParameter: (
          parameter: RParameter<Info>,
          name: Up,
          defaultValue: Up | undefined,
          down: Down,
      ) => Up

      The defaultValue is undefined if the argument was not initialized with a default value

    loop: {
        foldBreak: (brk: RBreak<Info>, down: Down) => Up;
        foldFor: (
            loop: RForLoop<Info>,
            variable: Up,
            vector: Up,
            body: Up,
            down: Down,
        ) => Up;
        foldNext: (next: RNext<Info>, down: Down) => Up;
        foldRepeat: (loop: RRepeatLoop<Info>, body: Up, down: Down) => Up;
        foldWhile: (
            loop: RWhileLoop<Info>,
            condition: Up,
            body: Up,
            down: Down,
        ) => Up;
    }
    other: {
        foldComment: (comment: RComment<Info>, down: Down) => Up;
        foldLineDirective: (comment: RLineDirective<Info>, down: Down) => Up;
    }