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