rename bools compiler to ruby_compiler
as that is what is does, compile ruby strings into vool st
This commit is contained in:
parent
3683aa8976
commit
b9caad937a
@ -18,4 +18,4 @@ require_relative "vool/send_statement"
|
|||||||
require_relative "vool/variables"
|
require_relative "vool/variables"
|
||||||
require_relative "vool/while_statement"
|
require_relative "vool/while_statement"
|
||||||
|
|
||||||
require_relative "vool/compiler"
|
require_relative "vool/ruby_compiler"
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
module Vool
|
module Vool
|
||||||
class Compiler < AST::Processor
|
# This RubyCompiler compiles incoming ruby (string) into vools internal representation
|
||||||
|
# with the help of the parser gem. The parser outputs an abstract ast (nodes)
|
||||||
|
# that get transformed into concrete, specific classes.
|
||||||
|
#
|
||||||
|
# As a second step, it extracts classes, methods, ivars and locals.
|
||||||
|
#
|
||||||
|
# The next step is then to normalize the code and then finally to compile
|
||||||
|
# to the next level down, MOM (Minimal Object Machine)
|
||||||
|
class RubyCompiler < AST::Processor
|
||||||
|
|
||||||
def self.compile(input)
|
def self.compile(input)
|
||||||
ast = Parser::Ruby22.parse( input )
|
ast = Parser::Ruby22.parse( input )
|
@ -1,2 +1,2 @@
|
|||||||
require_relative "helper"
|
require_relative "helper"
|
||||||
require_relative "test_compiler"
|
require_relative "test_ruby_compiler"
|
||||||
|
@ -4,15 +4,15 @@ module Vool
|
|||||||
class TestArray < MiniTest::Test
|
class TestArray < MiniTest::Test
|
||||||
|
|
||||||
def test_empty
|
def test_empty
|
||||||
lst = Compiler.compile( "[]")
|
lst = RubyCompiler.compile( "[]")
|
||||||
assert_equal ArrayStatement , lst.class
|
assert_equal ArrayStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_one
|
def test_one
|
||||||
lst = Compiler.compile( "[1]")
|
lst = RubyCompiler.compile( "[1]")
|
||||||
assert_equal ArrayStatement , lst.class
|
assert_equal ArrayStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_two
|
def test_two
|
||||||
lst = Compiler.compile( "[1,2]")
|
lst = RubyCompiler.compile( "[1,2]")
|
||||||
assert_equal ArrayStatement , lst.class
|
assert_equal ArrayStatement , lst.class
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -4,20 +4,20 @@ module Vool
|
|||||||
class TestAssignment < MiniTest::Test
|
class TestAssignment < MiniTest::Test
|
||||||
|
|
||||||
def test_local
|
def test_local
|
||||||
lst = Compiler.compile( "foo = bar")
|
lst = RubyCompiler.compile( "foo = bar")
|
||||||
assert_equal LocalAssignment , lst.class
|
assert_equal LocalAssignment , lst.class
|
||||||
end
|
end
|
||||||
def test_local_name
|
def test_local_name
|
||||||
lst = Compiler.compile( "foo = bar")
|
lst = RubyCompiler.compile( "foo = bar")
|
||||||
assert_equal :foo , lst.name
|
assert_equal :foo , lst.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_instance
|
def test_instance
|
||||||
lst = Compiler.compile( "@foo = bar")
|
lst = RubyCompiler.compile( "@foo = bar")
|
||||||
assert_equal InstanceAssignment , lst.class
|
assert_equal InstanceAssignment , lst.class
|
||||||
end
|
end
|
||||||
def test_instance_name
|
def test_instance_name
|
||||||
lst = Compiler.compile( "@foo = bar")
|
lst = RubyCompiler.compile( "@foo = bar")
|
||||||
assert_equal :foo , lst.name
|
assert_equal :foo , lst.name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -4,45 +4,45 @@ module Vool
|
|||||||
class TestBasicValues < MiniTest::Test
|
class TestBasicValues < MiniTest::Test
|
||||||
|
|
||||||
def test_self
|
def test_self
|
||||||
lst = Compiler.compile( "self")
|
lst = RubyCompiler.compile( "self")
|
||||||
assert_equal SelfStatement , lst.class
|
assert_equal SelfStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_nil
|
def test_nil
|
||||||
lst = Compiler.compile( "nil")
|
lst = RubyCompiler.compile( "nil")
|
||||||
assert_equal NilStatement , lst.class
|
assert_equal NilStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_false
|
def test_false
|
||||||
lst = Compiler.compile( "false")
|
lst = RubyCompiler.compile( "false")
|
||||||
assert_equal FalseStatement , lst.class
|
assert_equal FalseStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_true
|
def test_true
|
||||||
lst = Compiler.compile( "true")
|
lst = RubyCompiler.compile( "true")
|
||||||
assert_equal TrueStatement , lst.class
|
assert_equal TrueStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_integer
|
def test_integer
|
||||||
lst = Compiler.compile( "123")
|
lst = RubyCompiler.compile( "123")
|
||||||
assert_equal IntegerStatement , lst.class
|
assert_equal IntegerStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_string
|
def test_string
|
||||||
lst = Compiler.compile( "'string'")
|
lst = RubyCompiler.compile( "'string'")
|
||||||
assert_equal StringStatement , lst.class , lst.inspect
|
assert_equal StringStatement , lst.class , lst.inspect
|
||||||
end
|
end
|
||||||
def test_sym
|
def test_sym
|
||||||
lst = Compiler.compile( ":symbol")
|
lst = RubyCompiler.compile( ":symbol")
|
||||||
assert_equal SymbolStatement , lst.class , lst.inspect
|
assert_equal SymbolStatement , lst.class , lst.inspect
|
||||||
end
|
end
|
||||||
def test_dstr
|
def test_dstr
|
||||||
assert_raises RuntimeError do
|
assert_raises RuntimeError do
|
||||||
Compiler.compile( '"dstr#{self}"')
|
RubyCompiler.compile( '"dstr#{self}"')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_scope
|
def test_scope
|
||||||
lst = Compiler.compile( "begin ; 1 ; end")
|
lst = RubyCompiler.compile( "begin ; 1 ; end")
|
||||||
assert_equal ScopeStatement , lst.class , lst.inspect
|
assert_equal ScopeStatement , lst.class , lst.inspect
|
||||||
end
|
end
|
||||||
def test_scope_contents
|
def test_scope_contents
|
||||||
lst = Compiler.compile( "begin ; 1 ; end")
|
lst = RubyCompiler.compile( "begin ; 1 ; end")
|
||||||
assert_equal 1 , lst.statements.first.value
|
assert_equal 1 , lst.statements.first.value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,7 +5,7 @@ module Vool
|
|||||||
|
|
||||||
def setup
|
def setup
|
||||||
input = "class Tryout < Base;end"
|
input = "class Tryout < Base;end"
|
||||||
@lst = Compiler.compile( input )
|
@lst = RubyCompiler.compile( input )
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_compile_class
|
def test_compile_class
|
||||||
|
@ -4,31 +4,31 @@ module Vool
|
|||||||
class HashArray < MiniTest::Test
|
class HashArray < MiniTest::Test
|
||||||
|
|
||||||
def test_empty
|
def test_empty
|
||||||
lst = Compiler.compile( "{}")
|
lst = RubyCompiler.compile( "{}")
|
||||||
assert_equal HashStatement , lst.class
|
assert_equal HashStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_empty_length
|
def test_empty_length
|
||||||
lst = Compiler.compile( "{}")
|
lst = RubyCompiler.compile( "{}")
|
||||||
assert_equal 0 , lst.length
|
assert_equal 0 , lst.length
|
||||||
end
|
end
|
||||||
def test_one
|
def test_one
|
||||||
lst = Compiler.compile( "{ 1 => 2}")
|
lst = RubyCompiler.compile( "{ 1 => 2}")
|
||||||
assert_equal HashStatement , lst.class
|
assert_equal HashStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_one_length
|
def test_one_length
|
||||||
lst = Compiler.compile( "{ 1 => 2}")
|
lst = RubyCompiler.compile( "{ 1 => 2}")
|
||||||
assert_equal 1 , lst.length
|
assert_equal 1 , lst.length
|
||||||
end
|
end
|
||||||
def test_one_pair
|
def test_one_pair
|
||||||
lst = Compiler.compile( "{ 1 => 2}")
|
lst = RubyCompiler.compile( "{ 1 => 2}")
|
||||||
assert_equal 1 , lst.hash.keys.first.value
|
assert_equal 1 , lst.hash.keys.first.value
|
||||||
end
|
end
|
||||||
def test_two_length
|
def test_two_length
|
||||||
lst = Compiler.compile( "{ sym: :works , 'string_too' => 2}")
|
lst = RubyCompiler.compile( "{ sym: :works , 'string_too' => 2}")
|
||||||
assert_equal 2 , lst.length
|
assert_equal 2 , lst.length
|
||||||
end
|
end
|
||||||
def test_two_key_one
|
def test_two_key_one
|
||||||
lst = Compiler.compile( "{ sym: :works , 'string_too' => 2}")
|
lst = RubyCompiler.compile( "{ sym: :works , 'string_too' => 2}")
|
||||||
assert_equal :sym , lst.hash.keys.first.value
|
assert_equal :sym , lst.hash.keys.first.value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,15 +7,15 @@ module Vool
|
|||||||
"if(10 < 12) ; true ; end"
|
"if(10 < 12) ; true ; end"
|
||||||
end
|
end
|
||||||
def test_if_basic
|
def test_if_basic
|
||||||
lst = Compiler.compile( basic_if )
|
lst = RubyCompiler.compile( basic_if )
|
||||||
assert_equal IfStatement , lst.class
|
assert_equal IfStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_if_basic_cond
|
def test_if_basic_cond
|
||||||
lst = Compiler.compile( basic_if )
|
lst = RubyCompiler.compile( basic_if )
|
||||||
assert_equal SendStatement , lst.condition.class
|
assert_equal SendStatement , lst.condition.class
|
||||||
end
|
end
|
||||||
def test_if_basic_branches
|
def test_if_basic_branches
|
||||||
lst = Compiler.compile( basic_if )
|
lst = RubyCompiler.compile( basic_if )
|
||||||
assert_equal TrueStatement , lst.if_true.class
|
assert_equal TrueStatement , lst.if_true.class
|
||||||
assert_nil lst.if_false
|
assert_nil lst.if_false
|
||||||
end
|
end
|
||||||
@ -24,15 +24,15 @@ module Vool
|
|||||||
"if(false) ; true ; else ; false; end"
|
"if(false) ; true ; else ; false; end"
|
||||||
end
|
end
|
||||||
def test_if_double
|
def test_if_double
|
||||||
lst = Compiler.compile( double_if )
|
lst = RubyCompiler.compile( double_if )
|
||||||
assert_equal IfStatement , lst.class
|
assert_equal IfStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_if_double_cond
|
def test_if_double_cond
|
||||||
lst = Compiler.compile( double_if )
|
lst = RubyCompiler.compile( double_if )
|
||||||
assert_equal FalseStatement , lst.condition.class
|
assert_equal FalseStatement , lst.condition.class
|
||||||
end
|
end
|
||||||
def test_if_double_branches
|
def test_if_double_branches
|
||||||
lst = Compiler.compile( double_if )
|
lst = RubyCompiler.compile( double_if )
|
||||||
assert_equal TrueStatement , lst.if_true.class
|
assert_equal TrueStatement , lst.if_true.class
|
||||||
assert_equal FalseStatement, lst.if_false.class
|
assert_equal FalseStatement, lst.if_false.class
|
||||||
end
|
end
|
||||||
@ -41,15 +41,15 @@ module Vool
|
|||||||
"true if(false)"
|
"true if(false)"
|
||||||
end
|
end
|
||||||
def test_if_reverse
|
def test_if_reverse
|
||||||
lst = Compiler.compile( reverse_if )
|
lst = RubyCompiler.compile( reverse_if )
|
||||||
assert_equal IfStatement , lst.class
|
assert_equal IfStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_if_reverse_cond
|
def test_if_reverse_cond
|
||||||
lst = Compiler.compile( reverse_if )
|
lst = RubyCompiler.compile( reverse_if )
|
||||||
assert_equal FalseStatement , lst.condition.class
|
assert_equal FalseStatement , lst.condition.class
|
||||||
end
|
end
|
||||||
def test_if_reverse_branches
|
def test_if_reverse_branches
|
||||||
lst = Compiler.compile( reverse_if )
|
lst = RubyCompiler.compile( reverse_if )
|
||||||
assert_equal TrueStatement , lst.if_true.class
|
assert_equal TrueStatement , lst.if_true.class
|
||||||
assert_nil lst.if_false
|
assert_nil lst.if_false
|
||||||
end
|
end
|
||||||
@ -58,15 +58,15 @@ module Vool
|
|||||||
"true unless(false)"
|
"true unless(false)"
|
||||||
end
|
end
|
||||||
def test_if_reverse
|
def test_if_reverse
|
||||||
lst = Compiler.compile( reverse_unless )
|
lst = RubyCompiler.compile( reverse_unless )
|
||||||
assert_equal IfStatement , lst.class
|
assert_equal IfStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_if_reverse_cond
|
def test_if_reverse_cond
|
||||||
lst = Compiler.compile( reverse_unless )
|
lst = RubyCompiler.compile( reverse_unless )
|
||||||
assert_equal FalseStatement , lst.condition.class
|
assert_equal FalseStatement , lst.condition.class
|
||||||
end
|
end
|
||||||
def test_if_reverse_branches
|
def test_if_reverse_branches
|
||||||
lst = Compiler.compile( reverse_unless )
|
lst = RubyCompiler.compile( reverse_unless )
|
||||||
assert_nil lst.if_true
|
assert_nil lst.if_true
|
||||||
assert_equal TrueStatement ,lst.if_false.class
|
assert_equal TrueStatement ,lst.if_false.class
|
||||||
end
|
end
|
||||||
@ -75,15 +75,15 @@ module Vool
|
|||||||
"false ? true : false"
|
"false ? true : false"
|
||||||
end
|
end
|
||||||
def test_if_ternary
|
def test_if_ternary
|
||||||
lst = Compiler.compile( ternary )
|
lst = RubyCompiler.compile( ternary )
|
||||||
assert_equal IfStatement , lst.class
|
assert_equal IfStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_if_ternary_cond
|
def test_if_ternary_cond
|
||||||
lst = Compiler.compile( ternary )
|
lst = RubyCompiler.compile( ternary )
|
||||||
assert_equal FalseStatement , lst.condition.class
|
assert_equal FalseStatement , lst.condition.class
|
||||||
end
|
end
|
||||||
def test_if_ternary_branches
|
def test_if_ternary_branches
|
||||||
lst = Compiler.compile( ternary )
|
lst = RubyCompiler.compile( ternary )
|
||||||
assert_equal TrueStatement , lst.if_true.class
|
assert_equal TrueStatement , lst.if_true.class
|
||||||
assert_equal FalseStatement, lst.if_false.class
|
assert_equal FalseStatement, lst.if_false.class
|
||||||
end
|
end
|
||||||
|
@ -4,7 +4,7 @@ module Vool
|
|||||||
class TestLogical < MiniTest::Test
|
class TestLogical < MiniTest::Test
|
||||||
|
|
||||||
def simple
|
def simple
|
||||||
Compiler.compile( "@a and @b")
|
RubyCompiler.compile( "@a and @b")
|
||||||
end
|
end
|
||||||
def test_simple
|
def test_simple
|
||||||
lst = simple
|
lst = simple
|
||||||
@ -24,16 +24,16 @@ module Vool
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_or
|
def test_or
|
||||||
lst = Compiler.compile( "@a or @b")
|
lst = RubyCompiler.compile( "@a or @b")
|
||||||
assert_equal :or , lst.name
|
assert_equal :or , lst.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_or2
|
def test_or2
|
||||||
lst = Compiler.compile( "@a || @b")
|
lst = RubyCompiler.compile( "@a || @b")
|
||||||
assert_equal :or , lst.name
|
assert_equal :or , lst.name
|
||||||
end
|
end
|
||||||
def test_and2
|
def test_and2
|
||||||
lst = Compiler.compile( "@a && @b")
|
lst = RubyCompiler.compile( "@a && @b")
|
||||||
assert_equal :and , lst.name
|
assert_equal :and , lst.name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,7 +5,7 @@ module Vool
|
|||||||
|
|
||||||
def basic_setup()
|
def basic_setup()
|
||||||
input = "def tryout(arg1, arg2) ; true ; false ; end "
|
input = "def tryout(arg1, arg2) ; true ; false ; end "
|
||||||
@lst = Compiler.compile( input )
|
@lst = RubyCompiler.compile( input )
|
||||||
end
|
end
|
||||||
def test_method
|
def test_method
|
||||||
basic_setup
|
basic_setup
|
||||||
|
@ -4,17 +4,17 @@ module Vool
|
|||||||
class TestReturnStatement < MiniTest::Test
|
class TestReturnStatement < MiniTest::Test
|
||||||
|
|
||||||
def test_return_const
|
def test_return_const
|
||||||
lst = Compiler.compile( "return 1" )
|
lst = RubyCompiler.compile( "return 1" )
|
||||||
assert_equal ReturnStatement , lst.class
|
assert_equal ReturnStatement , lst.class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_return_value
|
def test_return_value
|
||||||
lst = Compiler.compile( "return 1" )
|
lst = RubyCompiler.compile( "return 1" )
|
||||||
assert_equal 1 , lst.return_value.value
|
assert_equal 1 , lst.return_value.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_return_send
|
def test_return_send
|
||||||
lst = Compiler.compile( "return foo" )
|
lst = RubyCompiler.compile( "return foo" )
|
||||||
assert_equal SendStatement , lst.return_value.class
|
assert_equal SendStatement , lst.return_value.class
|
||||||
assert_equal :foo , lst.return_value.name
|
assert_equal :foo , lst.return_value.name
|
||||||
end
|
end
|
||||||
|
@ -4,58 +4,58 @@ module Vool
|
|||||||
class TestSend < MiniTest::Test
|
class TestSend < MiniTest::Test
|
||||||
|
|
||||||
def test_simple
|
def test_simple
|
||||||
lst = Compiler.compile( "foo")
|
lst = RubyCompiler.compile( "foo")
|
||||||
assert_equal SendStatement , lst.class
|
assert_equal SendStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_simple_name
|
def test_simple_name
|
||||||
lst = Compiler.compile( "foo")
|
lst = RubyCompiler.compile( "foo")
|
||||||
assert_equal :foo , lst.name
|
assert_equal :foo , lst.name
|
||||||
end
|
end
|
||||||
def test_simple_receiver
|
def test_simple_receiver
|
||||||
lst = Compiler.compile( "foo")
|
lst = RubyCompiler.compile( "foo")
|
||||||
assert_equal SelfStatement , lst.receiver.class
|
assert_equal SelfStatement , lst.receiver.class
|
||||||
end
|
end
|
||||||
def test_simple_args
|
def test_simple_args
|
||||||
lst = Compiler.compile( "foo")
|
lst = RubyCompiler.compile( "foo")
|
||||||
assert_equal [] , lst.arguments
|
assert_equal [] , lst.arguments
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_one_arg
|
def test_one_arg
|
||||||
lst = Compiler.compile( "bar(1)")
|
lst = RubyCompiler.compile( "bar(1)")
|
||||||
assert_equal SendStatement , lst.class
|
assert_equal SendStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_one_arg_name
|
def test_one_arg_name
|
||||||
lst = Compiler.compile( "bar(1)")
|
lst = RubyCompiler.compile( "bar(1)")
|
||||||
assert_equal :bar , lst.name
|
assert_equal :bar , lst.name
|
||||||
end
|
end
|
||||||
def test_one_arg_receiver
|
def test_one_arg_receiver
|
||||||
lst = Compiler.compile( "bar(1)")
|
lst = RubyCompiler.compile( "bar(1)")
|
||||||
assert_equal SelfStatement , lst.receiver.class
|
assert_equal SelfStatement , lst.receiver.class
|
||||||
end
|
end
|
||||||
def test_one_arg_args
|
def test_one_arg_args
|
||||||
lst = Compiler.compile( "bar(1)")
|
lst = RubyCompiler.compile( "bar(1)")
|
||||||
assert_equal 1 , lst.arguments.first.value
|
assert_equal 1 , lst.arguments.first.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_super0_receiver
|
def test_super0_receiver
|
||||||
lst = Compiler.compile( "super")
|
lst = RubyCompiler.compile( "super")
|
||||||
assert_equal SuperStatement , lst.receiver.class
|
assert_equal SuperStatement , lst.receiver.class
|
||||||
end
|
end
|
||||||
def test_super0
|
def test_super0
|
||||||
lst = Compiler.compile( "super")
|
lst = RubyCompiler.compile( "super")
|
||||||
assert_equal SendStatement , lst.class
|
assert_equal SendStatement , lst.class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_super_receiver
|
def test_super_receiver
|
||||||
lst = Compiler.compile( "super(1)")
|
lst = RubyCompiler.compile( "super(1)")
|
||||||
assert_equal SuperStatement , lst.receiver.class
|
assert_equal SuperStatement , lst.receiver.class
|
||||||
end
|
end
|
||||||
def test_super_args
|
def test_super_args
|
||||||
lst = Compiler.compile( "super(1)")
|
lst = RubyCompiler.compile( "super(1)")
|
||||||
assert_equal 1 , lst.arguments.first.value
|
assert_equal 1 , lst.arguments.first.value
|
||||||
end
|
end
|
||||||
def test_super_name #is nil
|
def test_super_name #is nil
|
||||||
lst = Compiler.compile( "super(1)")
|
lst = RubyCompiler.compile( "super(1)")
|
||||||
assert_nil lst.name
|
assert_nil lst.name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -7,51 +7,51 @@ module Vool
|
|||||||
# in other words ther is no way of knowing if a name is variable or method
|
# in other words ther is no way of knowing if a name is variable or method
|
||||||
# one needs an assignemnt first, to "tell" the parser it's a local
|
# one needs an assignemnt first, to "tell" the parser it's a local
|
||||||
def test_local_basic
|
def test_local_basic
|
||||||
lst = Compiler.compile( "foo = 1 ; foo")
|
lst = RubyCompiler.compile( "foo = 1 ; foo")
|
||||||
assert_equal ScopeStatement , lst.class
|
assert_equal ScopeStatement , lst.class
|
||||||
assert_equal LocalVariable , lst.statements[1].class
|
assert_equal LocalVariable , lst.statements[1].class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_local_nane
|
def test_local_nane
|
||||||
lst = Compiler.compile( "foo = 1 ; foo")
|
lst = RubyCompiler.compile( "foo = 1 ; foo")
|
||||||
assert_equal LocalVariable , lst.statements[1].class
|
assert_equal LocalVariable , lst.statements[1].class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_instance_basic
|
def test_instance_basic
|
||||||
lst = Compiler.compile( "@var" )
|
lst = RubyCompiler.compile( "@var" )
|
||||||
assert_equal InstanceVariable , lst.class
|
assert_equal InstanceVariable , lst.class
|
||||||
assert_equal :var , lst.name
|
assert_equal :var , lst.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_instance_return
|
def test_instance_return
|
||||||
lst = Compiler.compile( "return @var" )
|
lst = RubyCompiler.compile( "return @var" )
|
||||||
assert_equal InstanceVariable , lst.return_value.class
|
assert_equal InstanceVariable , lst.return_value.class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_class_basic
|
def test_class_basic
|
||||||
lst = Compiler.compile( "@@var" )
|
lst = RubyCompiler.compile( "@@var" )
|
||||||
assert_equal ClassVariable , lst.class
|
assert_equal ClassVariable , lst.class
|
||||||
assert_equal :var , lst.name
|
assert_equal :var , lst.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_class_return
|
def test_class_return
|
||||||
lst = Compiler.compile( "return @@var" )
|
lst = RubyCompiler.compile( "return @@var" )
|
||||||
assert_equal ClassVariable , lst.return_value.class
|
assert_equal ClassVariable , lst.return_value.class
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_module_basic
|
def test_module_basic
|
||||||
lst = Compiler.compile( "Module" )
|
lst = RubyCompiler.compile( "Module" )
|
||||||
assert_equal ModuleName , lst.class
|
assert_equal ModuleName , lst.class
|
||||||
assert_equal :Module , lst.name
|
assert_equal :Module , lst.name
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_module_base_scoped
|
def test_module_base_scoped
|
||||||
lst = Compiler.compile( "::Module" )
|
lst = RubyCompiler.compile( "::Module" )
|
||||||
assert_equal ModuleName , lst.class
|
assert_equal ModuleName , lst.class
|
||||||
assert_equal :Module , lst.name
|
assert_equal :Module , lst.name
|
||||||
end
|
end
|
||||||
def test_module_module_scoped
|
def test_module_module_scoped
|
||||||
assert_raises {Compiler.compile( "M::Module" ) }
|
assert_raises {RubyCompiler.compile( "M::Module" ) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,15 +7,15 @@ module Vool
|
|||||||
"while(10 < 12) ; true ; end"
|
"while(10 < 12) ; true ; end"
|
||||||
end
|
end
|
||||||
def test_while_basic
|
def test_while_basic
|
||||||
lst = Compiler.compile( basic_while )
|
lst = RubyCompiler.compile( basic_while )
|
||||||
assert_equal WhileStatement , lst.class
|
assert_equal WhileStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_while_basic_cond
|
def test_while_basic_cond
|
||||||
lst = Compiler.compile( basic_while )
|
lst = RubyCompiler.compile( basic_while )
|
||||||
assert_equal SendStatement , lst.condition.class
|
assert_equal SendStatement , lst.condition.class
|
||||||
end
|
end
|
||||||
def test_while_basic_branches
|
def test_while_basic_branches
|
||||||
lst = Compiler.compile( basic_while )
|
lst = RubyCompiler.compile( basic_while )
|
||||||
assert_equal TrueStatement , lst.statements.class
|
assert_equal TrueStatement , lst.statements.class
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -23,15 +23,15 @@ module Vool
|
|||||||
"true while(false)"
|
"true while(false)"
|
||||||
end
|
end
|
||||||
def test_while_reverse_branches
|
def test_while_reverse_branches
|
||||||
lst = Compiler.compile( reverse_while )
|
lst = RubyCompiler.compile( reverse_while )
|
||||||
assert_equal WhileStatement , lst.class
|
assert_equal WhileStatement , lst.class
|
||||||
end
|
end
|
||||||
def test_while_reverse_cond
|
def test_while_reverse_cond
|
||||||
lst = Compiler.compile( reverse_while )
|
lst = RubyCompiler.compile( reverse_while )
|
||||||
assert_equal FalseStatement , lst.condition.class
|
assert_equal FalseStatement , lst.condition.class
|
||||||
end
|
end
|
||||||
def test_while_reverse_branches
|
def test_while_reverse_branches
|
||||||
lst = Compiler.compile( reverse_while )
|
lst = RubyCompiler.compile( reverse_while )
|
||||||
assert_equal TrueStatement , lst.statements.class
|
assert_equal TrueStatement , lst.statements.class
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user