require_relative "kernel" require_relative "program" module Vm #currently just holding the program in here so we can have global access class Context def initialize program @attributes = {} @attributes["program"] = program end # map any function call to an attribute if possible def method_missing name , *args , &block if args.length > 1 or block_given? puts "NO -#{args.length} BLOCK #{block_given?}" super else name = name.to_s if args.length == 1 #must be assignemnt for ir attr= val if name.include? "=" return @attributes[name.chop] = args[0] else super end else return @attributes[name] end end end end end