A world-class math input for the web
at main 22 lines 723 B view raw
1import { CaretInfixParselet, CharToken, TokensTag } from "@caret-js/core"; 2import { CaretNode, CaretParser } from "@caret-js/core"; 3import { EquationNode } from "../nodes/equation"; 4import { FunctionDefinitionNode } from "../nodes/functionDefinition"; 5 6export class EquationParselet extends CaretInfixParselet { 7 public readonly associativity = "left"; 8 9 parse( 10 parser: CaretParser, 11 left: CaretNode 12 ): EquationNode | FunctionDefinitionNode { 13 const token = parser.consume(); 14 this.assert( 15 token instanceof CharToken && token.char === "=", 16 "Expected '=' token" 17 ); 18 19 const right = parser.parseMinBP(this); 20 return EquationNode.from([left, right]).addTag(new TokensTag([token])); 21 } 22}