@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
50 lines • 2.04 kB
JavaScript
;
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