From df3b1314ed2abaa2ccdd746731459504f00a3f88 Mon Sep 17 00:00:00 2001 From: garrettmills Date: Fri, 8 Apr 2022 23:34:33 -0500 Subject: [PATCH] Start walk for math expression trees --- src/support/parse.ts | 47 ++++++++++++++++++++++++++++++++ src/support/types.ts | 65 -------------------------------------------- 2 files changed, 47 insertions(+), 65 deletions(-) create mode 100644 src/support/parse.ts delete mode 100644 src/support/types.ts diff --git a/src/support/parse.ts b/src/support/parse.ts new file mode 100644 index 0000000..3b2e503 --- /dev/null +++ b/src/support/parse.ts @@ -0,0 +1,47 @@ +import math from 'mathjs' + + +export abstract class MathNodeWalk { + abstract walkAccessorNode(node: math.AccessorNode): TReturn + + abstract walkArrayNode(node: math.ArrayNode): TReturn + + abstract walkAssignmentNode(node: math.AssignmentNode): TReturn + + abstract walkBlockNode(node: math.BlockNode): TReturn + + abstract walkConditionalNode(node: math.ConditionalNode): TReturn + + abstract walkConstantNode(node: math.ConstantNode): TReturn + + abstract walkFunctionAssignmentNode(node: math.FunctionAssignmentNode): TReturn + + abstract walkFunctionNode(node: math.FunctionNode): TReturn + + abstract walkIndexNode(node: math.IndexNode): TReturn + + abstract walkObjectNode(node: math.ObjectNode): TReturn + + abstract walkOperatorNode(node: math.OperatorNode): TReturn + + abstract walkParenthesisNode(node: math.ParenthesisNode): TReturn + + abstract walkRangeNode(node: math.RangeNode): TReturn + + abstract walkRelationalNode(node: math.RelationalNode): TReturn + + abstract walkSymbolNode(node: math.SymbolNode): TReturn +} + +export class MathStatement { + constructor( + public readonly raw: string, + ) {} + + // parse(): MathNode { + // return parse(this.raw) + // } + +} + +export class MathExpression extends MathStatement {} diff --git a/src/support/types.ts b/src/support/types.ts deleted file mode 100644 index 279ac87..0000000 --- a/src/support/types.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { - parse, - MathNode, - AccessorNode, - ArrayNode, - AssignmentNode, - BlockNode, - ConditionalNode, - ConstantNode, - FunctionAssignmentNode, - FunctionNode, - IndexNode, - ObjectNode, - OperatorNode, - ParenthesisNode, - RangeNode, - RelationalNode, - SymbolNode, -} from 'mathjs' - - -export abstract class MathNodeWalk { - abstract walkAccessorNode(node: AccessorNode): TReturn - - abstract walkArrayNode(node: ArrayNode): TReturn - - abstract walkAssignmentNode(node: AssignmentNode): TReturn - - abstract walkBlockNode(node: BlockNode): TReturn - - abstract walkConditionalNode(node: ConditionalNode): TReturn - - abstract walkConstantNode(node: ConstantNode): TReturn - - abstract walkFunctionAssignmentNode(node: FunctionAssignmentNode): TReturn - - abstract walkFunctionNode(node: FunctionNode): TReturn - - abstract walkIndexNode(node: IndexNode): TReturn - - abstract walkObjectNode(node: ObjectNode): TReturn - - abstract walkOperatorNode(node: OperatorNode): TReturn - - abstract walkParenthesisNode(node: ParenthesisNode): TReturn - - abstract walkRangeNode(node: RangeNode): TReturn - - abstract walkRelationalNode(node: RelationalNode): TReturn - - abstract walkSymbolNode(node: SymbolNode): TReturn -} - -export class MathStatement { - constructor( - public readonly raw: string, - ) {} - - parse(): MathNode { - return parse(this.raw) - } - -} - -export class MathExpression extends MathStatement {}