From 0bba53ceb52502510e0f6ba4c53a951933532a61 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 14 Apr 2018 13:32:43 -0400 Subject: - Made everything an expression for R translation. --- new-luxc/source/luxc/lang/translation/r.lux | 38 +++++++++++++---------------- 1 file changed, 17 insertions(+), 21 deletions(-) (limited to 'new-luxc/source/luxc/lang/translation/r.lux') diff --git a/new-luxc/source/luxc/lang/translation/r.lux b/new-luxc/source/luxc/lang/translation/r.lux index aba64bc87..446df095d 100644 --- a/new-luxc/source/luxc/lang/translation/r.lux +++ b/new-luxc/source/luxc/lang/translation/r.lux @@ -15,7 +15,7 @@ (world [file #+ File])) (luxc [lang] (lang [".L" variable #+ Register] - (host [r #+ Expression Statement])) + (host [r #+ Expression])) [".C" io])) (do-template [] @@ -56,7 +56,7 @@ (type: #export Host {#context [Text Nat] #anchor (Maybe Anchor) - #loader (-> Statement (Error Unit)) + #loader (-> Expression (Error Unit)) #interpreter (-> Expression (Error Object)) #module-buffer (Maybe StringBuilder) #program-buffer StringBuilder}) @@ -69,7 +69,7 @@ #anchor #.None #loader (function (_ code) (do e.Monad - [_ (ScriptEngine::eval [(r.statement code)] interpreter)] + [_ (ScriptEngine::eval [(r.expression code)] interpreter)] (wrap []))) #interpreter (function (_ code) (do e.Monad @@ -164,21 +164,20 @@ (function (_ compiler) (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) -(do-template [ ] +(do-template [ ] [(def: ( code) - (-> (Meta )) + (-> Expression (Meta )) (function (_ compiler) (let [runner (|> compiler (get@ #.host) (:! Host) (get@ ))] (case (runner code) (#e.Error error) - (exec ## (log! ( code)) - ((lang.throw Cannot-Execute error) compiler)) + ((lang.throw Cannot-Execute error) compiler) (#e.Success output) (#e.Success [compiler output])))))] - [load! #loader Statement Unit r.statement] - [interpret #interpreter Expression Object r.expression] + [load! #loader Unit] + [interpret #interpreter Object] ) (def: #export variant-tag-field "luxVT") @@ -194,18 +193,15 @@ (-> Ident Text) (lang.normalize-name (format module "$" name))) -(do-template [ ] - [(def: #export ( code) - (-> (Meta )) - (do macro.Monad - [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence ( code))] - module-buffer)]] - ( code)))] - - [save load! r.statement Statement Unit] - [run interpret r.expression Expression Object] - ) +(def: #export (save code) + (-> Expression (Meta Unit)) + (do macro.Monad + [module-buffer module-buffer + #let [_ (Appendable::append [(:! CharSequence (r.expression code))] + module-buffer)]] + (load! code))) + +(def: #export run interpret) (def: #export (save-module! target) (-> File (Meta (Process Unit))) -- cgit v1.2.3