You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.5 KiB
66 lines
1.5 KiB
import {
|
|
parse,
|
|
MathNode,
|
|
AccessorNode,
|
|
ArrayNode,
|
|
AssignmentNode,
|
|
BlockNode,
|
|
ConditionalNode,
|
|
ConstantNode,
|
|
FunctionAssignmentNode,
|
|
FunctionNode,
|
|
IndexNode,
|
|
ObjectNode,
|
|
OperatorNode,
|
|
ParenthesisNode,
|
|
RangeNode,
|
|
RelationalNode,
|
|
SymbolNode,
|
|
} from 'mathjs'
|
|
|
|
|
|
export abstract class MathNodeWalk<TReturn> {
|
|
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 {}
|