lib/nydp/context_symbol.rb in nydp-0.5.1 vs lib/nydp/context_symbol.rb in nydp-0.6.0

- old
+ new

@@ -22,47 +22,49 @@ "at_#{binding_index}= value" else "set_index(#{binding_index}, value)" end + line = __LINE__ + 2 code = <<-KLASS def initialize name, lexical_depth @name, @lexical_depth = name, lexical_depth end def lexical_reach n @lexical_depth + n end + def compile_to_ruby indent, srcs, opts=nil + "\#{indent}_arg_\#{@name.to_s._nydp_name_to_rb_name}" + end + def value ctx - ctx#{getctx}.#{at_index} || Nydp::NIL + ctx#{getctx}.#{at_index} || nil rescue - raise "failed looking up \#{@name.inspect} (\#{@name.class.name})" + raise "failed looking up \#{@name._nydp_inspect} (\#{@name.class.name}) : lookup expression was ctx#{getctx}.#{at_index}" end def assign value, ctx ctx#{getctx}.#{set_index} rescue StandardError => e raise "problem in \#{self.class.name}#assign, name is \#{@name}, depth is \#{depth}, index is #{binding_index}" end - def execute vm - vm.push_arg value vm.current_context - end - def depth ; #{depth} ; end def inspect ; to_s ; end - def to_s ; "[#{depth}##{binding_index}#\#{@lexical_depth}]\#{@name}" ; end + # def to_s ; "[#{depth}##{binding_index}#\#{@lexical_depth}]\#{@name}" ; end + def to_s ; @name ; end KLASS const_set name, Class.new(Nydp::ContextSymbol) { - eval code, binding, name.to_s, 0 + eval code, binding, "#{name.to_s} : #{__FILE__}", line } end def self.build effective_depth, name, binding_index, lexical_depth const_get(:"ContextSymbol_#{effective_depth}_#{binding_index}").new(name, lexical_depth) rescue - raise "building ContextSymbol #{[effective_depth, name, binding_index, lexical_depth].inspect}" + raise "building ContextSymbol #{[effective_depth, name, binding_index, lexical_depth]._nydp_inspect}" end end end