UNPKG

simc-ast-builder

Version:

Parser and AST generator for SimulationCraft files

183 lines 5.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SimCGenericVisitor = void 0; const AbstractParseTreeVisitor_1 = require("antlr4ts/tree/AbstractParseTreeVisitor"); const ContextHandlerRegistry_1 = require("./ContextHandlers/ContextHandlerRegistry"); /** * Generic visitor that implements the ANTLR visitor pattern */ class SimCGenericVisitor extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor { constructor() { super(); } /** * Generic visit method for any context */ visit(tree) { if (!tree) { throw new Error("Null parse tree"); } return tree.accept(this); } /** * Visit an access expression context */ visitAccessExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("AccessExpr", ctx, this); } /** * Visit an action line context */ visitActionLine(ctx) { var _a; // Set the metadata for the context handler ContextHandlerRegistry_1.contextHandlerRegistry.setMetaData({ actionLine: ctx.text, actionName: ctx.actionName().text, actionParams: ctx.actionParam(), subListName: ((_a = ctx.sublistName()) === null || _a === void 0 ? void 0 : _a.text) || "", }); return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("ActionLine", ctx, this); } /** * Visit an action name context */ visitActionName(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("ActionName", ctx, this); } /** * Visit an action parameter context */ visitActionParam(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("ActionParam", ctx, this); } /** * Visit an additive expression context (+ -) */ visitAdditiveExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("AdditiveExpr", ctx, this); } /** * Visit an AND expression context */ visitAndExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("AndExpr", ctx, this); } /** * Visit an any token expression context */ visitAnyTokenExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("AnyTokenExpr", ctx, this); } /** * Visit a comment line context */ visitCommentLine(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("CommentLine", ctx, this); } /** * Visit a comparison expression context */ visitComparisonExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("ComparisonExpr", ctx, this); } /** * Visit an expression context */ visitExpression(ctx) { return this.visitChildren(ctx); } /** * Visit a string expression context */ /** * Visit an identifier context */ visitIdentifier(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("Identifier", ctx, this); } /** * Visit a math function expression context (ceil or floor) */ visitMathFuncExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("MathFuncExpr", ctx, this); } /** * Visit a min/max expression context */ visitMinMaxExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("MinMaxExpr", ctx, this); } /** * Visit a mixed ID expression context */ visitMixedIdExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("MixedIdExpr", ctx, this); } /** * Visit a multiplicative expression context (* % %%) */ visitMultiplicativeExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("MultiplicativeExpr", ctx, this); } /** * Visit a number expression context */ visitNumberExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("NumberExpr", ctx, this); } /** * Visit an OR expression context */ visitOrExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("OrExpr", ctx, this); } /** * Visit a parenthesized expression context */ visitParenExpr(ctx) { // TODO return this.visit(ctx.expression()); } /** * Visit a parse context */ visitParse(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("Parse", ctx, this); } visitStringExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("StringExpr", ctx, this); } /** * Visit a sublist name context */ visitSublistName(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("SublistName", ctx, this); } /** * Visit a unary expression context (+ - ! @) */ visitUnaryExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("UnaryExpr", ctx, this); } /** * Visit a XOR expression context */ visitXorExpr(ctx) { return ContextHandlerRegistry_1.contextHandlerRegistry.dispatchContext("XorExpr", ctx, this); } defaultResult() { // Get the context object const ctx = arguments[0]; // Just dump the text if (ctx && ctx.text) { console.error(`FAILED: ${ctx.text}`); } else { console.error(`FAILED: Unknown context`); } throw new Error(`Parsing failed`); } } exports.SimCGenericVisitor = SimCGenericVisitor; //# sourceMappingURL=SimCGenericVisitor.js.map