class Environment attr_reader :data def initialize(parent = nil) @data = Hash.new CORE.each do |k, v| @data[k.to_s] = v end unless parent.nil? parent.data.each do |k, v| @data[k] = v end end 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