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