UNPKG

simc-ast-builder

Version:

Parser and AST generator for SimulationCraft files

76 lines 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleMultiplicativeExpr = exports.handleMulExpr = exports.handleModExpr = exports.handleDivExpr = void 0; /** * Handler for multiplication expressions */ const handleMulExpr = (ctx, visitor) => { // Only handle if this is a multiplication if (!ctx.OP_MUL()) { throw new Error("Not a multiplication expression"); } return { expressionType: "numeric", kind: "expression", left: visitor.visit(ctx.expression(0)), nodeType: "multiplicative", operator: "mul", right: visitor.visit(ctx.expression(1)), }; }; exports.handleMulExpr = handleMulExpr; /** * Handler for division expressions */ const handleDivExpr = (ctx, visitor) => { // Only handle if this is a division if (!ctx.OP_DIV()) { throw new Error("Not a division expression"); } return { expressionType: "numeric", kind: "expression", left: visitor.visit(ctx.expression(0)), nodeType: "multiplicative", operator: "div", right: visitor.visit(ctx.expression(1)), }; }; exports.handleDivExpr = handleDivExpr; /** * Handler for modulus expressions */ const handleModExpr = (ctx, visitor) => { // Only handle if this is a modulus if (!ctx.OP_MOD()) { throw new Error("Not a modulus expression"); } return { expressionType: "numeric", kind: "expression", left: visitor.visit(ctx.expression(0)), nodeType: "multiplicative", operator: "mod", right: visitor.visit(ctx.expression(1)), }; }; exports.handleModExpr = handleModExpr; /** * Generic handler for all multiplicative expressions (* % %%) */ const handleMultiplicativeExpr = (ctx, visitor) => { if (ctx.OP_MUL()) { return handleMulExpr(ctx, visitor); } else if (ctx.OP_DIV()) { return handleDivExpr(ctx, visitor); } else if (ctx.OP_MOD()) { return handleModExpr(ctx, visitor); } else { throw new Error("Unknown multiplicative operator"); } }; exports.handleMultiplicativeExpr = handleMultiplicativeExpr; //# sourceMappingURL=MultiplicativeExprHandler.js.map