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