From 6c3e9f8c02ce153380392ba5bc8eeb517de5f781 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Tue, 9 Apr 2019 18:59:33 -0400 Subject: WIP: Ruby compiler. --- stdlib/source/lux/host/ruby.lux | 2 -- stdlib/source/lux/tool/compiler/phase/generation/ruby/case.lux | 2 +- stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux | 2 +- stdlib/source/lux/tool/compiler/phase/generation/ruby/reference.lux | 2 +- stdlib/source/lux/tool/compiler/phase/generation/ruby/runtime.lux | 6 +++--- 5 files changed, 6 insertions(+), 8 deletions(-) (limited to 'stdlib/source') diff --git a/stdlib/source/lux/host/ruby.lux b/stdlib/source/lux/host/ruby.lux index 6bf113ed0..8f54bbdeb 100644 --- a/stdlib/source/lux/host/ruby.lux +++ b/stdlib/source/lux/host/ruby.lux @@ -57,8 +57,6 @@ [Literal Computation] [Access Location] - [Loop Statement] - [Label Code] ) (template [ ] diff --git a/stdlib/source/lux/tool/compiler/phase/generation/ruby/case.lux b/stdlib/source/lux/tool/compiler/phase/generation/ruby/case.lux index 7bc52c318..01b405dff 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/ruby/case.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/ruby/case.lux @@ -41,7 +41,7 @@ (wrap (|> bodyO _.return (_.lambda #.None (list (..register register))) - (_.apply/* (list valueO)))))) + (_.do "call" (list valueO)))))) (def: #export (record-get generate valueS pathP) (-> Phase Synthesis (List (Either Nat Nat)) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux index 486b68592..be12aa2e2 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/ruby/function.lux @@ -29,7 +29,7 @@ (do ////.monad [functionO (generate functionS) argsO+ (monad.map @ generate argsS+)] - (wrap (_.apply/* argsO+ functionO)))) + (wrap (_.do "call" argsO+ functionO)))) (def: #export capture (///reference.foreign _.local)) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/ruby/reference.lux b/stdlib/source/lux/tool/compiler/phase/generation/ruby/reference.lux index 6ff021863..a5dcc1302 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/ruby/reference.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/ruby/reference.lux @@ -7,5 +7,5 @@ ["." reference]]]) (def: #export system - (reference.system (: (-> Text (Expression Any)) _.local) + (reference.system (: (-> Text (Expression Any)) _.global) (: (-> Text (Expression Any)) _.local))) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/ruby/runtime.lux b/stdlib/source/lux/tool/compiler/phase/generation/ruby/runtime.lux index b3dcbd8ee..e39e6af8e 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/ruby/runtime.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/ruby/runtime.lux @@ -162,9 +162,9 @@ (runtime: (sum//get sum wantsLast wantedTag) (let [no-match! (_.return _.nil) - sum-tag (_.nth (_.int +0) sum) - sum-flag (_.nth (_.int +1) sum) - sum-value (_.nth (_.int +2) sum) + sum-tag (_.nth (_.string ..variant-tag-field) sum) + sum-flag (_.nth (_.string ..variant-flag-field) sum) + sum-value (_.nth (_.string ..variant-value-field) sum) is-last? (_.= (_.string "") sum-flag) test-recursion! (_.if is-last? ## Must recurse. -- cgit v1.2.3