A world-class math input for the web
1import { CaretInfixParselet, CharToken, TokensTag } from "@caret-js/core";
2import { CaretNode, CaretParser } from "@caret-js/core";
3import { AddNode } from "../nodes/add";
4
5export class AddParselet extends CaretInfixParselet {
6 public readonly associativity = "left";
7
8 parse(parser: CaretParser, left: CaretNode): AddNode {
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 AddNode.from([left, right]).addTag(new TokensTag([token]));
17 }
18}