diff --git a/lib/debugger.rb b/lib/debugger.rb
index e8925c9..6d5294d 100644
--- a/lib/debugger.rb
+++ b/lib/debugger.rb
@@ -8,6 +8,7 @@ require 'browser/http'
require 'native'
require "rubyx"
require "ast"
+require "util/eventable"
require "risc/interpreter"
# the base, our own litle framework, allows for child and parent views and handles updates
require "base/list_view"
diff --git a/lib/views/classes_view.rb b/lib/views/classes_view.rb
index 40446a6..322d8e1 100644
--- a/lib/views/classes_view.rb
+++ b/lib/views/classes_view.rb
@@ -10,7 +10,7 @@ class ClassesView < ListView
def class_views
classes = []
- Risc.machine.space.classes.each do |name , claz|
+ Parfait.object_space.classes.each do |name , claz|
classes << claz
end
classes.sort! {|a,b| a.name <=> b.name }
diff --git a/lib/views/html_converter.rb b/lib/views/html_converter.rb
index 2755f0e..f958e4a 100644
--- a/lib/views/html_converter.rb
+++ b/lib/views/html_converter.rb
@@ -11,10 +11,10 @@ class HtmlConverter < AST::Processor
"Missing #{s.type}"
end
def div statement , html
- "
" + html + "
"
+ "" + html + "
"
end
def span statement , html
- "" + html + ""
+ "" + html + ""
end
def on_function statement
return_type , name , parameters, kids , receiver = *statement
diff --git a/lib/views/object_view.rb b/lib/views/object_view.rb
index dae6b8e..430bedf 100644
--- a/lib/views/object_view.rb
+++ b/lib/views/object_view.rb
@@ -41,7 +41,7 @@ class ObjectView < ListView
def class_header
clazz = @object.class.name.split("::").last
- [clazz, @object.object_id].join " : "
+ [clazz, @object.object_id.to_s(16)].join " : "
end
def content_elements
@@ -52,7 +52,7 @@ class ObjectView < ListView
f = object.get_instance_variable(variable)
fields << RefView.new( variable , f , @z )
end
- if( object.is_a?(Parfait::Indexed) )
+ if( object.is_a?(Parfait::List) )
index = 1
object.each do | o|
fields << RefView.new( index.to_s , o , @z )
diff --git a/lib/views/ref_view.rb b/lib/views/ref_view.rb
index 82806ba..885a37f 100644
--- a/lib/views/ref_view.rb
+++ b/lib/views/ref_view.rb
@@ -60,7 +60,7 @@ class RefView < ListView
elsif is_object?
var = @value
str = var.class.name.split("::").last[0,2]
- str + " : #{@value.object_id}"
+ str + " : #{@value.object_id.to_s(16)}"
elsif is_label?
str = "Label"
else
diff --git a/lib/views/source_view.rb b/lib/views/source_view.rb
index 785c105..409203a 100644
--- a/lib/views/source_view.rb
+++ b/lib/views/source_view.rb
@@ -19,8 +19,8 @@ class SourceView < ElementView
return "" unless i
update_method
case i.source
- when AST::Node
- id = i.source.object_id
+ when Mom::Instruction
+ id = i.source.object_id.to_s(16)
if e = @text.at_css("#i#{id}")
if (old = @text.at_css(".fade_in"))
old.remove_class("fade_in")
@@ -29,7 +29,7 @@ class SourceView < ElementView
end
when String
@ticker.text = i.source
- when Typed::Code
+ when Risc::Instruction
@ticker.text = i.source.to_s
else
raise i.source.class.name
@@ -51,10 +51,10 @@ class SourceView < ElementView
puts i.name
cl_t_name , method_name = *i.name.split(".")
class_name = cl_t_name.split(" ").last.split("_").first
- clazz = Risc.machine.space.get_class_by_name class_name
+ clazz = Parfait.object_space.get_class_by_name class_name
raise "No class for #{cl_name} , #{i.name}" unless clazz
type = clazz.instance_type
- method = type.get_instance_method( method_name )
+ method = type.get_method( method_name )
@element.at_css(".source").text = i.name
@text.inner_html = HtmlConverter.new.process( method.source )
end
diff --git a/lib/views/switch_view.rb b/lib/views/switch_view.rb
index 8f15860..a048558 100644
--- a/lib/views/switch_view.rb
+++ b/lib/views/switch_view.rb
@@ -39,39 +39,25 @@ class SelectView < ElementView
@element.at_css(".code_list") << list
end
- def select code
+ def select( code )
puts "selecting #{code}"
+ machine = Risc.machine.boot
@interpreter.set_state :stopped
@element.at_css(".selected").text = code
- main , clean = get_codes[code]
-
- machine = Risc.machine.boot
- clean_compile(*clean) if clean
- Typed.compile( main )
- machine.collect
-
+ ruby = get_codes[code]
+ Vool::VoolCompiler.ruby_to_vool( as_main(ruby) )
+ machine.objects
puts "starting"
- @interpreter.start machine.init
+ @interpreter.start machine.risc_init
+ end
+ def as_main(statements)
+ "class Space ;def main(arg) ; #{statements}; end; end"
end
-
def get_codes
- {"set_internal_byte" => [s(:statements, s(:call,
- s(:name, :set_internal_byte),
- s(:arguments, s(:int, 1), s(:int, 104)),
- s(:receiver, s(:string, "Hello")))) , nil ] ,
- "called_if" => [s(:statements, s(:call, s(:name, :itest), s(:arguments, s(:int, 20)))) ,
- [:Space , :itest , {:n => :Integer} ,
- s(:statements, s(:if_statement, :zero, s(:condition, s(:operator_value, :-, s(:name, :n), s(:int, 12))),
- s(:true_statements, s(:call, s(:name, :putstring), s(:arguments), s(:receiver, s(:string, "then")))),
- s(:false_statements, s(:call, s(:name, :putstring), s(:arguments), s(:receiver, s(:string, "else"))))))]],
- "hello world" => [ s(:statements, s(:return, s(:call, s(:name, :putstring), s(:arguments),
- s(:receiver, s(:string, "Hello again\\n"))))),
- nil],
+ {set_internal_byte: "return 'Hello'.set_internal_byte(1,75)" ,
+ called_if: 'if( 10 ); return "then";else;return "else";end' ,
+ hello_world: "return 'Hello again'.putstring"
}
end
- def clean_compile(clazz_name , method_name , args , statements)
- compiler = Typed::MethodCompiler.new.create_method(clazz_name,method_name,args ).init_method
- compiler.process( Typed.ast_to_code( statements ) )
- end
end