class Environment attr_reader :data def initialize(parent = nil) @data = Hash.new CORE.each { |k, v| @data[k.to_s] = v } parent.data.each { |k, v| @data[k] = v } unless parent.nil? end def get(name) if @data.has_key?(name) @data[name] else raise "Undefined variable #{name}" end end def set(name, value) @data[name] = value end end