function ExecutionContext(options) {
    EventEmitter.call(this);

    this.stringVars = {};
    this.numberVars = {};
    this.pointers = {};
    this.gosubs = [];
    this.private = {
        rnd_seed: Math.random(),
        sprites: [],
        data: []
    };
    this.constants = require('./constants');
    this.running = false;
    options = options || {};
    this.options = options;

    if (typeof options.delay === 'undefined') options.delay = false;

    // Copy all functions as constants
    for (var k in functions) {
        if (!functions.hasOwnProperty(k)) continue;
        this.constants[k] = functions[k];
    }

    // Stop multiple contexts conflicting with constants
    this.constants = pUtil.shallowClone(this.constants);
}
function ExecutionContext(options) {
    EventEmitter.call(this);

    this.stringVars = {};
    this.numberVars = {};
    this.pointers = {};
    this.gosubs = [];
    this.private = {
        rnd_seed: Math.random(),
        sprites: [],
        data: []
    };
    this.constants = require('./constants');
    this.running = false;
    options = options || {};
    this.options = options;

    if (typeof options.delay === 'undefined') options.delay = false;

    
    for (var k in functions) {
        if (!functions.hasOwnProperty(k)) continue;
        this.constants[k] = functions[k];
    }

    
    this.constants = pUtil.shallowClone(this.constants);
}
function ExecutionContext ( options ) { EventEmitter . call ( this ) ; this . stringVars = { } ; this . numberVars = { } ; this . pointers = { } ; this . gosubs = [ ] ; this . private = { rnd_seed : Math . random ( ) , sprites : [ ] , data : [ ] } ; this . constants = require ( './constants' ) ; this . running = false ; options = options || { } ; this . options = options ; if ( typeof options . delay === 'undefined' ) options . delay = false ; // Copy all functions as constants for ( var k in functions ) { if ( ! functions . hasOwnProperty ( k ) ) continue ; this . constants [ k ] = functions [ k ] ; } // Stop multiple contexts conflicting with constants this . constants = pUtil . shallowClone ( this . constants ) ; }
An object that provides modification and reading of the current execution
context, as well as the ability to execute an AST in the context

@param {Object?} options Options for execution
@constructor
An object that provides modification and reading of the current execution context as well as the ability to execute an AST in the context