class Minjs::ECMA262::LexEnv
class of Lexical Environment
@see www.ecma-international.org/ecma-262 ECMA262
10.2
Attributes
outer[R]
record[RW]
type[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/minjs/ecma262/env.rb, line 58 def initialize(options = {}) @outer = options[:outer] @type = (options[:type] || :declarative) if options[:record] @record = ObjectEnvRecord.new elsif options[:type] == :declarative @record = DeclarativeEnvRecord.new elsif options[:type] == :object or true @record = ObjectEnvRecord.new end end
new_declarative_env(e)
click to toggle source
NewDeclarativeEnvironment(E)
@see www.ecma-international.org/ecma-262 ECMA262
10.2.2.2
# File lib/minjs/ecma262/env.rb, line 80 def self.new_declarative_env(e) env = LexEnv.new(outer: e, type: :declarative) end
Public Instance Methods
debug()
click to toggle source
debug
# File lib/minjs/ecma262/env.rb, line 99 def debug STDERR.puts @record.binding.keys.join(", ") end
new_declarative_env(outer = nil)
click to toggle source
NewDeclarativeEnvironment(E)
@see www.ecma-international.org/ecma-262 ECMA262
10.2.2.2
# File lib/minjs/ecma262/env.rb, line 73 def new_declarative_env(outer = nil) e = LexEnv.new(outer: (outer || self), type: :declarative) end
new_object_env(object, outer = nil)
click to toggle source
NewObjectEnvironment(O, E)
@see www.ecma-international.org/ecma-262 ECMA262
10.2.2.3
# File lib/minjs/ecma262/env.rb, line 87 def new_object_env(object, outer = nil)#TODO raise 'TODO' e = LexEnv.new(outer: (outer || self), type: :object) object.val.each do |k, v| if k.id_name? e.create_mutable_binding(k) e.set_mutable_binding(k, v) end end end