import { CaretInfixParselet, CharToken, TokensTag } from "@caret-js/core"; import { CaretNode, CaretParser } from "@caret-js/core"; import { EquationNode } from "../nodes/equation"; import { FunctionDefinitionNode } from "../nodes/functionDefinition"; export class EquationParselet extends CaretInfixParselet { public readonly associativity = "left"; parse( parser: CaretParser, left: CaretNode ): EquationNode | FunctionDefinitionNode { const token = parser.consume(); this.assert( token instanceof CharToken && token.char === "=", "Expected '=' token" ); const right = parser.parseMinBP(this); return EquationNode.from([left, right]).addTag(new TokensTag([token])); } }