GithubHelp home page GithubHelp logo

Comments (2)

psalaets avatar psalaets commented on July 18, 2024 1

I put declare keywords in front of functions but other than that, copied your code block as is.

from excel-formula-ast.

thunder7553 avatar thunder7553 commented on July 18, 2024

index.d.ts

    import * as TOKENS from 'excel-formula-tokenizer';
    type Node = BinaryExpressionNode | UnaryExpressionNode | FunctionNode | NumberNode | CellNode | LogicalNode | TextNode | CellRangeNode;

    interface BinaryExpressionNode {
        type: 'binary-expression',
        operator: '>' | '<' | '=' | '>=' | '<=' | '+' | '-' | '&',
        left: Node,
        right: Node
    }
    interface UnaryExpressionNode {
        type: 'unary-expression',
        operator: '+' | '-',
        operand: Node
    }

    interface FunctionNode {
        type: 'function',
        name: string,
        arguments: Node[]
    }
    interface NumberNode {
        type: 'number',
        value: number
    }
    interface CellNode {
        type: 'cell',
        refType?: 'relative' | 'mixed' | 'absolute',
        key: string
    }
    interface CellRangeNode {
        type: 'cell-range',
        left: Node,
        right: Node
    }
    interface LogicalNode {
        type: 'logical',
        value: boolean
    }
    interface TextNode {
        type: 'text',
        value: string
    }
    function buildTree(tokens: TOKENS.Token[]): Node;
    interface Visitor {
        enterCell?(node: CellNode): void;
        exitCell?(node: CellNode): void;

        enterCellRange?(node: CellRangeNode): void;
        exitCellRange?(node: CellRangeNode): void;

        enterFunction?(node: FunctionNode): void;
        exitFunction?(node: FunctionNode): void;

        enterNumber?(node: NumberNode): void;
        exitNumber?(node: NumberNode): void;

        enterText?(node: TextNode): void;
        exitText?(node: TextNode): void;

        enterLogical?(node: LogicalNode): void;
        exitLogical?(node: LogicalNode): void;

        enterBinaryExpression?(node: BinaryExpressionNode): void;
        exitBinaryExpression?(node: BinaryExpressionNode): void;

        enterUnaryExpression?(node: UnaryExpressionNode): void;
        exitUnaryExpression?(node: UnaryExpressionNode): void;
    }
    function visit(tree: Node, visitor: Visitor): void;

package.json, add "typings" field

{
 "typings": "src/index.d.ts"
}

(edited. "declare module" is not necessary if it is included in package.json)

from excel-formula-ast.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.