rubyx/test/compiler/compiler_helper.rb
2015-10-10 10:02:28 +03:00

31 lines
823 B
Ruby

require_relative '../helper'
require 'parslet/convenience'
module CompilerHelper
Phisol::Compiler.class_eval do
def set_main
@method = Virtual.machine.space.get_main
end
end
def check
machine = Virtual.machine.boot
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
compiler.set_main
produced = compiler.process( parts )
produced = [produced] unless produced.is_a? Array
assert @output , "No output given"
assert_equal produced.length, @output.length , "Block length"
produced.each_with_index do |b,i|
codes = @output[i]
assert_equal codes , b.class , "Class #{i} "
end
end
end