UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

50 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FlowrAnalyzerEnvironmentContext = void 0; const environment_1 = require("../../dataflow/environments/environment"); const built_in_config_1 = require("../../dataflow/environments/built-in-config"); const fingerprint_1 = require("../../slicing/static/fingerprint"); /** * This context is responsible for providing the built-in environment. * It creates the built-in environment based on the configuration provided in the {@link FlowrAnalyzerContext}. */ class FlowrAnalyzerEnvironmentContext { name = 'flowr-analyzer-environment-context'; builtInEnv; emptyBuiltInEnv; builtInEnvFingerprint; constructor(ctx) { const builtInsConfig = ctx.config.semantics.environment.overwriteBuiltIns; const builtIns = (0, built_in_config_1.getBuiltInDefinitions)(builtInsConfig.definitions, builtInsConfig.loadDefaults); this.builtInEnv = new environment_1.Environment(undefined, true); this.builtInEnv.memory = builtIns.builtInMemory; this.emptyBuiltInEnv = new environment_1.Environment(undefined, true); this.emptyBuiltInEnv.memory = builtIns.emptyBuiltInMemory; } get builtInEnvironment() { return this.builtInEnv; } get emptyBuiltInEnvironment() { return this.emptyBuiltInEnv; } makeCleanEnv() { return { current: new environment_1.Environment(this.builtInEnv), level: 0 }; } getCleanEnvFingerprint() { if (!this.builtInEnvFingerprint) { this.builtInEnvFingerprint = (0, fingerprint_1.envFingerprint)(this.makeCleanEnv()); } return this.builtInEnvFingerprint; } makeCleanEnvWithEmptyBuiltIns() { return { current: new environment_1.Environment(this.emptyBuiltInEnv), level: 0 }; } } exports.FlowrAnalyzerEnvironmentContext = FlowrAnalyzerEnvironmentContext; //# sourceMappingURL=flowr-analyzer-environment-context.js.map