simc-ast-builder
Version:
Parser and AST generator for SimulationCraft files
55 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleSubExpr = exports.handleAdditiveExpr = exports.handleAddExpr = void 0;
/**
* Handler for addition expressions
*/
const handleAddExpr = (ctx, visitor) => {
// Only handle if this is an addition
if (!ctx.OP_PLUS()) {
throw new Error("Not an addition expression");
}
return {
expressionType: "numeric",
kind: "expression",
left: visitor.visit(ctx.expression(0)),
nodeType: "additive",
operator: "add",
right: visitor.visit(ctx.expression(1)),
};
};
exports.handleAddExpr = handleAddExpr;
/**
* Handler for subtraction expressions
*/
const handleSubExpr = (ctx, visitor) => {
// Only handle if this is a subtraction
if (!ctx.OP_MINUS()) {
throw new Error("Not a subtraction expression");
}
return {
expressionType: "numeric",
kind: "expression",
left: visitor.visit(ctx.expression(0)),
nodeType: "additive",
operator: "sub",
right: visitor.visit(ctx.expression(1)),
};
};
exports.handleSubExpr = handleSubExpr;
/**
* Generic handler for additive expressions (+ -)
*/
const handleAdditiveExpr = (ctx, visitor) => {
if (ctx.OP_PLUS()) {
return handleAddExpr(ctx, visitor);
}
else if (ctx.OP_MINUS()) {
return handleSubExpr(ctx, visitor);
}
else {
throw new Error("Unknown additive operator");
}
};
exports.handleAdditiveExpr = handleAdditiveExpr;
//# sourceMappingURL=AdditiveExprHandler.js.map