diff options
| author | Eduardo Julian | 2018-01-28 19:41:01 -0400 | 
|---|---|---|
| committer | Eduardo Julian | 2018-01-28 19:41:01 -0400 | 
| commit | 6b6901b31bbec9947522a94274cd11c8e7683168 (patch) | |
| tree | ac984159a7c23bbdfab8a2fa1ddde1f625d7dae0 /new-luxc/source/luxc/lang/translation/js/procedure | |
| parent | 6e829294381d504656d904dc71b7c6729750db5e (diff) | |
- Got JS backend to build with the rest of the new-luxc code.
Diffstat (limited to '')
| -rw-r--r-- | new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux | 90 | ||||
| -rw-r--r-- | new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux | 14 | 
2 files changed, 59 insertions, 45 deletions
| diff --git a/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux index b0dbe4533..445aa6f00 100644 --- a/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux @@ -1,6 +1,8 @@  (.module:    lux -  (lux (control [monad #+ do]) +  (lux (control [monad #+ do] +                ["ex" exception #+ exception:] +                ["p" parser])         (data ["e" error]               [text]               text/format @@ -8,7 +10,8 @@                     [dict #+ Dict]))         [macro #+ with-gensyms]         (macro [code] -              ["s" syntax #+ syntax:])) +              ["s" syntax #+ syntax:]) +       [host])    (luxc ["&" lang]          (lang ["la" analysis]                ["ls" synthesis])) @@ -91,11 +94,11 @@          (wrap (proc inputsI))))))  (def: (self-contained content) -  (-> //.Expression //.Expression) +  (-> ///.Expression ///.Expression)    (format "(" content ")"))  (def: (void action) -  (-> //.Expression //.Expression) +  (-> ///.Expression ///.Expression)    (format "(" action "," runtimeT.unit ")"))  ## [Procedures] @@ -150,8 +153,8 @@    [bit//or                   runtimeT.bit//or]    [bit//xor                  runtimeT.bit//xor]    [bit//shift-left           runtimeT.bit//shift-left] -  [bit//shift-right          runtimeT.bit//shift-right] -  [bit//unsigned-shift-right runtimeT.bit//unsigned-shift-right] +  [bit//shift-right          runtimeT.bit//signed-shift-right] +  [bit//unsigned-shift-right runtimeT.bit//shift-right]    )  (def: (bit//count subjectJS) @@ -180,26 +183,37 @@    (format arrayJS ".length"))  ## [[Numbers]] -(do-template [<name> <encode> <type>] +(host.import java/lang/Long +  (#static MIN_VALUE Long) +  (#static MAX_VALUE Long)) + +(host.import java/lang/Double +  (#static MIN_VALUE Double) +  (#static MAX_VALUE Double) +  (#static NaN Double) +  (#static POSITIVE_INFINITY Double) +  (#static NEGATIVE_INFINITY Double)) + +(do-template [<name> <const> <encode>]    [(def: (<name> _)       Nullary       (<encode> <const>))] -  [nat//min                 0                           js-int] -  [nat//max                -1                           js-int] +  [nat//min                 0                           runtimeT.int-constant] +  [nat//max                -1                           runtimeT.int-constant] -  [int//min                Long::MIN_VALUE              js-int] -  [int//max                Long::MAX_VALUE              js-int] +  [int//min                Long::MIN_VALUE              runtimeT.int-constant] +  [int//max                Long::MAX_VALUE              runtimeT.int-constant] -  [frac//smallest          Double::MIN_VALUE            js-frac] -  [frac//min               (f/* -1.0 Double::MAX_VALUE) js-frac] -  [frac//max               Double::MAX_VALUE            js-frac] -  [frac//not-a-number      Double::NaN                  js-frac] -  [frac//positive-infinity Double::POSITIVE_INFINITY    js-frac] -  [frac//negative-infinity Double::NEGATIVE_INFINITY    js-frac] - -  [deg//min                 0                           js-int] -  [deg//max                -1                           js-int] +  [frac//smallest          Double::MIN_VALUE            runtimeT.frac-constant] +  [frac//min               (f/* -1.0 Double::MAX_VALUE) runtimeT.frac-constant] +  [frac//max               Double::MAX_VALUE            runtimeT.frac-constant] +  [frac//not-a-number      Double::NaN                  runtimeT.frac-constant] +  [frac//positive-infinity Double::POSITIVE_INFINITY    runtimeT.frac-constant] +  [frac//negative-infinity Double::NEGATIVE_INFINITY    runtimeT.frac-constant] + +  [deg//min                 0                           runtimeT.int-constant] +  [deg//max                -1                           runtimeT.int-constant]    )  (do-template [<name> <op>] @@ -238,9 +252,10 @@    [frac//mul "*"]    [frac//div "/"]    [frac//rem "%"] -  [frac//=   "=="] +  [frac//=   "==="]    [frac//<   "<"] -  [text//=   "=="] + +  [text//=   "==="]    [text//<   "<"]    ) @@ -277,7 +292,7 @@  (do-template [<name> <transform>]    [(def: (<name> inputJS)       Unary -     (<transform> "(" inputJS ")"))] +     (format <transform> "(" inputJS ")"))]    [int//to-frac runtimeT.int//to-number]    [frac//to-int runtimeT.int//from-number] @@ -326,7 +341,7 @@  (def: (text//replace-once [subjectJS paramJS extraJS])    Trinary -  (format subjectJS "." <method> "(" paramJS "," extraJS ")")) +  (format subjectJS ".replace(" paramJS "," extraJS ")"))  (do-template [<name> <method>]    [(def: (<name> [textJS partJS startJS]) @@ -398,7 +413,7 @@  (def: (atom//compare-and-swap [atomJS oldJS newJS])    Trinary -  (format atom//compare-and-swap "(" atomJS "," oldJS "," newJS ")")) +  (format runtimeT.atom//compare-and-swap "(" atomJS "," oldJS "," newJS ")"))  ## [[Box]]  (def: (box//new initJS) @@ -407,7 +422,7 @@  (def: (box//read boxJS)    Unary -  (format "[" boxJS "][0]")) +  (format "(" boxJS ")[0]"))  (def: (box//write [valueJS boxJS])    Binary @@ -464,8 +479,8 @@            (install "*" (binary nat//mul))            (install "/" (binary nat//div))            (install "%" (binary nat//rem)) -          (install "=" (binary nat//eq)) -          (install "<" (binary nat//lt)) +          (install "=" (binary nat//=)) +          (install "<" (binary nat//<))            (install "min" (nullary nat//min))            (install "max" (nullary nat//max))            (install "to-int" (unary nat//to-int)) @@ -480,8 +495,8 @@            (install "*" (binary int//mul))            (install "/" (binary int//div))            (install "%" (binary int//rem)) -          (install "=" (binary int//eq)) -          (install "<" (binary int//lt)) +          (install "=" (binary int//=)) +          (install "<" (binary int//<))            (install "min" (nullary int//min))            (install "max" (nullary int//max))            (install "to-nat" (unary int//to-nat)) @@ -496,8 +511,8 @@            (install "*" (binary deg//mul))            (install "/" (binary deg//div))            (install "%" (binary deg//rem)) -          (install "=" (binary deg//eq)) -          (install "<" (binary deg//lt)) +          (install "=" (binary deg//=)) +          (install "<" (binary deg//<))            (install "scale" (binary deg//scale))            (install "reciprocal" (binary deg//reciprocal))            (install "min" (nullary deg//min)) @@ -513,8 +528,8 @@            (install "*" (binary frac//mul))            (install "/" (binary frac//div))            (install "%" (binary frac//rem)) -          (install "=" (binary frac//eq)) -          (install "<" (binary frac//lt)) +          (install "=" (binary frac//=)) +          (install "<" (binary frac//<))            (install "smallest" (nullary frac//smallest))            (install "min" (nullary frac//min))            (install "max" (nullary frac//max)) @@ -530,8 +545,8 @@    Bundle    (<| (prefix "text")        (|> (dict.new text.Hash<Text>) -          (install "=" (binary text//eq)) -          (install "<" (binary text//lt)) +          (install "=" (binary text//=)) +          (install "<" (binary text//<))            (install "concat" (binary text//concat))            (install "index" (trinary text//index))            (install "size" (unary text//size)) @@ -616,8 +631,7 @@  (def: #export procedures    Bundle    (<| (prefix "lux") -      (|> (dict.new text.Hash<Text>) -          (dict.merge lux-procs) +      (|> lux-procs            (dict.merge bit-procs)            (dict.merge nat-procs)            (dict.merge int-procs) diff --git a/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux index 4ac0d2022..7fe3f545c 100644 --- a/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux @@ -118,7 +118,7 @@    (format runtimeT.array//get "(" arrayJS "," indexJS ")"))  (def: (array//write [indexJS valueJS arrayJS]) -  @.Binary +  @.Trinary    (format runtimeT.array//put "(" arrayJS "," indexJS "," valueJS ")"))  (def: (array//delete [indexJS arrayJS]) @@ -133,17 +133,17 @@    @.Bundle    (<| (@.prefix "array")        (|> (dict.new text.Hash<Text>) -          (@.install "literal" array//literal) -          (@.install "read" array//read) -          (@.install "write" array//write) -          (@.install "delete" array//delete) -          (@.install "length" array//length) +          (@.install "literal" (@.variadic array//literal)) +          (@.install "read" (@.binary array//read)) +          (@.install "write" (@.trinary array//write)) +          (@.install "delete" (@.binary array//delete)) +          (@.install "length" (@.unary array//length))            )))  (def: #export procedures    @.Bundle    (<| (@.prefix "js") -      (|> (dict.merge js-procs) +      (|> js-procs            (dict.merge object-procs)            (dict.merge array-procs)            ))) | 
