class Environment
Public Class Methods
new(parent = nil, defaults = {})
click to toggle source
# File lib/schemerald/Environment.rb, line 2 def initialize(parent = nil, defaults = {}) @parent = parent @defaults = defaults end
Public Instance Methods
define(symbol, value)
click to toggle source
# File lib/schemerald/Environment.rb, line 7 def define(symbol, value) @defaults[symbol] = value return value end
defined?(symbol)
click to toggle source
# File lib/schemerald/Environment.rb, line 12 def defined?(symbol) return true if @defaults.has_key?(symbol) return false if @parent.nil? return @parent.defined?(symbol) end
get_value(symbol)
click to toggle source
# File lib/schemerald/Environment.rb, line 29 def get_value(symbol) return @defaults[symbol] if @defaults.has_key?(symbol) raise SchemeError, "#{symbol}: undefined;\nCannot reference undefined identifier" if @parent.nil? return @parent.get_value(symbol) end
set_value(symbol, value)
click to toggle source
# File lib/schemerald/Environment.rb, line 18 def set_value(symbol, value) if @defaults.has_key?(symbol) @defaults[symbol] = value elsif @parent.nil? raise SchemeError, "assignment disallowed;\ncannot set undefined\nvariable: #{symbol}" else @parent.set_value(symbol, value) end end