rubyx/test/compiler/compiler_helper.rb

31 lines
796 B
Ruby
Raw Normal View History

2014-06-25 14:20:46 +02:00
require_relative '../helper'
require 'parslet/convenience'
2015-10-10 09:02:28 +02:00
module CompilerHelper
2015-07-02 09:44:44 +02:00
2015-10-10 09:02:28 +02:00
Phisol::Compiler.class_eval do
2015-10-14 12:48:42 +02:00
def set_main main
@clazz = Virtual.machine.space.get_class_by_name :Object
2015-10-14 12:48:42 +02:00
@method = main
2015-10-10 09:02:28 +02:00
end
2014-06-25 14:20:46 +02:00
end
2015-10-14 12:48:42 +02:00
def set_main compiler
compiler.set_main Virtual.machine.space.get_main
end
2015-10-10 09:02:28 +02:00
def check
machine = Virtual.machine
machine.boot unless machine.booted
2015-10-10 09:02:28 +02:00
parser = Parser::Salama.new
parser = parser.send @root
syntax = parser.parse_with_debug(@string_input)
parts = Parser::Transform.new.apply(syntax)
#puts parts.inspect
compiler = Phisol::Compiler.new
2015-10-14 12:48:42 +02:00
set_main(compiler)
2015-10-10 09:02:28 +02:00
produced = compiler.process( parts )
assert @output , "No output given"
assert_equal produced.class, @output , "Wrong class"
end
2015-10-10 09:02:28 +02:00
end