-- This Script is Part of the Prometheus Obfuscator by levno-710 -- -- expressions.lua -- -- This Script contains the expression handlers: exports handler table keyed by AstKind. local Ast = require("prometheus.ast"); local AstKind = Ast.AstKind; local handlers = {}; local expressions = "prometheus.compiler.expressions."; local function requireExpression(name) return require(expressions .. name); end handlers[AstKind.StringExpression] = requireExpression("string"); handlers[AstKind.NumberExpression] = requireExpression("number"); handlers[AstKind.BooleanExpression] = requireExpression("boolean"); handlers[AstKind.NilExpression] = requireExpression("nil"); handlers[AstKind.VariableExpression] = requireExpression("variable"); handlers[AstKind.FunctionCallExpression] = requireExpression("function_call"); handlers[AstKind.PassSelfFunctionCallExpression] = requireExpression("pass_self_function_call"); handlers[AstKind.IndexExpression] = requireExpression("index"); handlers[AstKind.NotExpression] = requireExpression("not"); handlers[AstKind.NegateExpression] = requireExpression("negate"); handlers[AstKind.LenExpression] = requireExpression("len"); handlers[AstKind.OrExpression] = requireExpression("or"); handlers[AstKind.AndExpression] = requireExpression("and"); handlers[AstKind.TableConstructorExpression] = requireExpression("table_constructor"); handlers[AstKind.FunctionLiteralExpression] = requireExpression("function_literal"); handlers[AstKind.VarargExpression] = requireExpression("vararg"); handlers[AstKind.IfElseExpression] = requireExpression("if_else"); -- Binary ops share one handler local binaryHandler = requireExpression("binary"); handlers[AstKind.LessThanExpression] = binaryHandler; handlers[AstKind.GreaterThanExpression] = binaryHandler; handlers[AstKind.LessThanOrEqualsExpression] = binaryHandler; handlers[AstKind.GreaterThanOrEqualsExpression] = binaryHandler; handlers[AstKind.NotEqualsExpression] = binaryHandler; handlers[AstKind.EqualsExpression] = binaryHandler; handlers[AstKind.StrCatExpression] = binaryHandler; handlers[AstKind.AddExpression] = binaryHandler; handlers[AstKind.SubExpression] = binaryHandler; handlers[AstKind.MulExpression] = binaryHandler; handlers[AstKind.DivExpression] = binaryHandler; handlers[AstKind.ModExpression] = binaryHandler; handlers[AstKind.PowExpression] = binaryHandler; return handlers;