UNPKG

simc-ast-builder

Version:

Parser and AST generator for SimulationCraft files

93 lines 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleUnaryPlusExpr = exports.handleUnaryMinusExpr = exports.handleUnaryExpr = exports.handleNotExpr = exports.handleAbsExpr = void 0; /** * Handler for unary plus expressions */ const handleUnaryPlusExpr = (ctx, visitor) => { // Only handle if this is a unary plus if (!ctx.OP_PLUS()) { throw new Error("Not a unary plus expression"); } return { argument: visitor.visit(ctx.expression()), expressionType: "numeric", kind: "expression", nodeType: "unary", operator: "plus", }; }; exports.handleUnaryPlusExpr = handleUnaryPlusExpr; /** * Handler for unary minus expressions */ const handleUnaryMinusExpr = (ctx, visitor) => { // Only handle if this is a unary minus if (!ctx.OP_MINUS()) { throw new Error("Not a unary minus expression"); } return { argument: visitor.visit(ctx.expression()), expressionType: "numeric", kind: "expression", nodeType: "unary", operator: "minus", }; }; exports.handleUnaryMinusExpr = handleUnaryMinusExpr; /** * Handler for absolute value expressions */ const handleAbsExpr = (ctx, visitor) => { // Only handle if this is an abs operator if (!ctx.OP_ABS()) { throw new Error("Not an abs expression"); } return { argument: visitor.visit(ctx.expression()), expressionType: "numeric", kind: "expression", nodeType: "unary", operator: "abs", }; }; exports.handleAbsExpr = handleAbsExpr; /** * Handler for logical not expressions */ const handleNotExpr = (ctx, visitor) => { // Only handle if this is a logical not if (!ctx.OP_NOT()) { throw new Error("Not a logical not expression"); } return { argument: visitor.visit(ctx.expression()), expressionType: "boolean", kind: "expression", nodeType: "unary", operator: "not", }; }; exports.handleNotExpr = handleNotExpr; /** * Generic handler for all unary expressions */ const handleUnaryExpr = (ctx, visitor) => { if (ctx.OP_PLUS()) { return handleUnaryPlusExpr(ctx, visitor); } else if (ctx.OP_MINUS()) { return handleUnaryMinusExpr(ctx, visitor); } else if (ctx.OP_ABS()) { return handleAbsExpr(ctx, visitor); } else if (ctx.OP_NOT()) { return handleNotExpr(ctx, visitor); } else { throw new Error("Unknown unary operator"); } }; exports.handleUnaryExpr = handleUnaryExpr; //# sourceMappingURL=UnaryExprHandler.js.map