A world-class math input for the web
1import { CaretInfixParselet, CharToken, TokensTag } from "@caret-js/core";
2import { CaretNode, CaretParser } from "@caret-js/core";
3import { SubtractNode } from "../nodes/subtract";
4
5export class SubtractParselet extends CaretInfixParselet {
6 public readonly associativity = "left";
7
8 parse(parser: CaretParser, left: CaretNode): SubtractNode {
9 const token = parser.consume();
10 this.assert(
11 token instanceof CharToken && token.char === "-",
12 "Expected '-' token"
13 );
14
15 const right = parser.parseMinBP(this);
16 return SubtractNode.from(left, right).addTag(new TokensTag([token]));
17 }
18}