import { CaretParser, CaretNode, CaretLeafParselet, TokensTag, } from "@caret-js/core"; import { ParenthesesToken } from "../tokens/parentheses"; import { NodeTag } from "@caret-js/core"; export class ParenthesesChildTag extends NodeTag { public readonly allowMultiple = false; equals(other: this): boolean { return other instanceof ParenthesesChildTag; } } export class ParenthesesParselet extends CaretLeafParselet { parse(parser: CaretParser): CaretNode { const token = parser.consume(); this.assert(token instanceof ParenthesesToken, "Expected ParenthesesToken"); return parser .parseSubStrand(token.child) .addTag(new TokensTag([token])) .addTag(new ParenthesesChildTag()); } }