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