From 601dc22b2e4223d132d329426fe4d573276ce9d5 Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Thu, 24 Apr 2014 15:53:48 +0300 Subject: [PATCH] get thnads tests to work --- lib/crystal.rb | 6 +++++ lib/vm/builtins.rb | 2 +- lib/vm/compiler.rb | 10 ++++---- lib/vm/nodes.rb | 2 +- lib/vm/parser.rb | 3 +-- lib/vm/transform.rb | 4 ++-- test/{test => }/fake_builder.rb | 0 test/{test => }/graph_helper.rb | 0 test/{test => }/test_nodes.rb | 24 +++++++++---------- test/{test => }/test_parser.rb | 9 +++----- test/{test => }/test_transform.rb | 38 +++++++++++++++---------------- 11 files changed, 49 insertions(+), 49 deletions(-) rename test/{test => }/fake_builder.rb (100%) rename test/{test => }/graph_helper.rb (100%) rename test/{test => }/test_nodes.rb (71%) rename test/{test => }/test_parser.rb (90%) rename test/{test => }/test_transform.rb (66%) diff --git a/lib/crystal.rb b/lib/crystal.rb index f792f601..600c1e88 100644 --- a/lib/crystal.rb +++ b/lib/crystal.rb @@ -1,3 +1,9 @@ +# parslet is assumed to be checked out at the same level as crystal for now +$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', ".." , "parslet",'lib')) +require 'parslet' + require "asm/stack_instruction" require "asm/arm_assembler" require "elf/object_writer" +require 'vm/parser' + diff --git a/lib/vm/builtins.rb b/lib/vm/builtins.rb index b0e0d83c..72922596 100644 --- a/lib/vm/builtins.rb +++ b/lib/vm/builtins.rb @@ -2,7 +2,7 @@ require 'java' java_import java.lang.System java_import java.io.PrintStream -module Thnad +module Vm module Builtins def add_builtins public_static_method 'print', [], int, int do diff --git a/lib/vm/compiler.rb b/lib/vm/compiler.rb index 1043797b..55113a94 100644 --- a/lib/vm/compiler.rb +++ b/lib/vm/compiler.rb @@ -1,13 +1,13 @@ require 'bitescript' -require 'thnad/parser' -require 'thnad/transform' -require 'thnad/builtins' +require 'vm/parser' +require 'vm/transform' +require 'vm/builtins' -module Thnad +module Vm class Compiler def initialize(filename) @filename = filename - @classname = File.basename(@filename, '.thnad') + @classname = File.basename(@filename, '.vm') end def compile diff --git a/lib/vm/nodes.rb b/lib/vm/nodes.rb index e9de5f74..20231938 100644 --- a/lib/vm/nodes.rb +++ b/lib/vm/nodes.rb @@ -1,4 +1,4 @@ -module Thnad +module Vm class Number < Struct.new :value def eval(context, builder) builder.ldc value diff --git a/lib/vm/parser.rb b/lib/vm/parser.rb index d12421fc..a8eda234 100644 --- a/lib/vm/parser.rb +++ b/lib/vm/parser.rb @@ -1,6 +1,5 @@ -require 'parslet' -module Thnad +module Vm class Parser < Parslet::Parser rule(:name) { match('[a-z]').repeat(1).as(:name) >> space? } rule(:number) { match('[0-9]').repeat(1).as(:number) >> space? } diff --git a/lib/vm/transform.rb b/lib/vm/transform.rb index 99a6fbb6..81024f02 100644 --- a/lib/vm/transform.rb +++ b/lib/vm/transform.rb @@ -1,7 +1,7 @@ require 'parslet' -require 'thnad/nodes' +require 'vm/nodes' -module Thnad +module Vm class Transform < Parslet::Transform rule(:number => simple(:value)) { Number.new(value.to_i) } rule(:name => simple(:name)) { Name.new(name.to_s) } diff --git a/test/test/fake_builder.rb b/test/fake_builder.rb similarity index 100% rename from test/test/fake_builder.rb rename to test/fake_builder.rb diff --git a/test/test/graph_helper.rb b/test/graph_helper.rb similarity index 100% rename from test/test/graph_helper.rb rename to test/graph_helper.rb diff --git a/test/test/test_nodes.rb b/test/test_nodes.rb similarity index 71% rename from test/test/test_nodes.rb rename to test/test_nodes.rb index 2bca688b..fff10838 100644 --- a/test/test/test_nodes.rb +++ b/test/test_nodes.rb @@ -3,10 +3,10 @@ $: << File.expand_path(File.dirname(__FILE__)) require 'minitest/autorun' require 'minitest/spec' -require 'thnad/nodes' +require 'vm/nodes' require 'fake_builder' -include Thnad +include Vm describe 'Nodes' do before do @@ -15,7 +15,7 @@ describe 'Nodes' do end it 'emits a number' do - input = Thnad::Number.new 42 + input = Vm::Number.new 42 expected = < '42'} - expected = Thnad::Number.new(42) + expected = Vm::Number.new(42) @transform.apply(input).must_equal expected end it 'transforms a name' do input = {:name => 'foo'} - expected = Thnad::Name.new('foo') + expected = Vm::Name.new('foo') @transform.apply(input).must_equal expected end @@ -28,8 +26,8 @@ describe Transform do it 'transforms an argument list' do input = {:args => [{:arg => {:number => '42'}}, {:arg => {:name => 'foo'}}]} - expected = [Thnad::Number.new(42), - Thnad::Name.new('foo')] + expected = [Vm::Number.new(42), + Vm::Name.new('foo')] @transform.apply(input).must_equal expected end @@ -37,7 +35,7 @@ describe Transform do it 'transforms a single-argument function call' do input = {:funcall => {:name => 'foo'}, :args => [{:arg => {:number => '42'}}]} - expected = Thnad::Funcall.new 'foo', [Thnad::Number.new(42)] + expected = Vm::Funcall.new 'foo', [Vm::Number.new(42)] @transform.apply(input).must_equal expected end @@ -46,8 +44,8 @@ describe Transform do input = {:funcall => {:name => 'baz'}, :args => [{:arg => {:number => '42'}}, {:arg => {:name => 'foo'}}]} - expected = Thnad::Funcall.new 'baz', [Thnad::Number.new(42), - Thnad::Name.new('foo')] + expected = Vm::Funcall.new 'baz', [Vm::Number.new(42), + Vm::Name.new('foo')] @transform.apply(input).must_equal expected end @@ -56,10 +54,10 @@ describe Transform do input = {:cond => {:number => '0'}, :if_true => {:body => {:number => '42'}}, :if_false => {:body => {:number => '667'}}} - expected = Thnad::Conditional.new \ - Thnad::Number.new(0), - Thnad::Number.new(42), - Thnad::Number.new(667) + expected = Vm::Conditional.new \ + Vm::Number.new(0), + Vm::Number.new(42), + Vm::Number.new(667) @transform.apply(input).must_equal expected end @@ -68,10 +66,10 @@ describe Transform do input = {:func => {:name => 'foo'}, :params => {:param => {:name => 'x'}}, :body => {:number => '5'}} - expected = Thnad::Function.new \ + expected = Vm::Function.new \ 'foo', - [Thnad::Name.new('x')], - Thnad::Number.new(5) + [Vm::Name.new('x')], + Vm::Number.new(5) @transform.apply(input).must_equal expected end