fix the statement moming
This commit is contained in:
parent
4ff84133d2
commit
fb6a1a0e01
@ -87,6 +87,8 @@ module RubyX
|
|||||||
@vool = ruby_tree.to_vool
|
@vool = ruby_tree.to_vool
|
||||||
return @vool
|
return @vool
|
||||||
end
|
end
|
||||||
|
# TODO: should check if this works with reopening classes
|
||||||
|
# or whether we need to unify the vool for a class
|
||||||
unless(@vool.is_a?(Vool::ScopeStatement))
|
unless(@vool.is_a?(Vool::ScopeStatement))
|
||||||
@vool = Vool::ScopeStatement.new([@vool])
|
@vool = Vool::ScopeStatement.new([@vool])
|
||||||
end
|
end
|
||||||
|
@ -31,15 +31,19 @@ module Vool
|
|||||||
@statements = [o] + @statements
|
@statements = [o] + @statements
|
||||||
end
|
end
|
||||||
|
|
||||||
# create mom instructions
|
# to_mom all the statements. Append subsequent ones to the first, and return the
|
||||||
|
# first.
|
||||||
|
#
|
||||||
|
# For ClassStatements this creates and returns a MomCompiler
|
||||||
|
#
|
||||||
def to_mom( compiler )
|
def to_mom( compiler )
|
||||||
raise "Empty list ? #{statements.length}" if empty?
|
raise "Empty list ? #{statements.length}" if empty?
|
||||||
stats = @statements.dup
|
stats = @statements.dup
|
||||||
flat = stats.shift.to_mom(compiler)
|
first = stats.shift.to_mom(compiler)
|
||||||
while( nekst = stats.shift )
|
while( nekst = stats.shift )
|
||||||
flat.append nekst.to_mom(compiler)
|
first.append nekst.to_mom(compiler)
|
||||||
end
|
end
|
||||||
flat
|
first
|
||||||
end
|
end
|
||||||
|
|
||||||
def each(&block)
|
def each(&block)
|
||||||
|
@ -16,5 +16,8 @@ module RubyX
|
|||||||
def test_method
|
def test_method
|
||||||
assert_equal :main , @linker.assemblers.first.callable.name
|
assert_equal :main , @linker.assemblers.first.callable.name
|
||||||
end
|
end
|
||||||
|
def test_asm_len
|
||||||
|
assert_equal 23 , @linker.assemblers.length
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -28,8 +28,9 @@ module RubyX
|
|||||||
compiler = RubyXCompiler.new
|
compiler = RubyXCompiler.new
|
||||||
compiler.ruby_to_vool(space_source_for("main"))
|
compiler.ruby_to_vool(space_source_for("main"))
|
||||||
compiler.ruby_to_vool(space_source_for("twain"))
|
compiler.ruby_to_vool(space_source_for("twain"))
|
||||||
# linker = compiler.to_binary(:interpreter)
|
linker = compiler.to_binary(:interpreter)
|
||||||
# assert_equal Vool::ScopeStatement , linker.class
|
assert_equal Risc::Linker , linker.class
|
||||||
|
assert_equal 24 , linker.assemblers.length
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user