diff options
author | Eduardo Julian | 2018-01-08 21:40:06 -0400 |
---|---|---|
committer | Eduardo Julian | 2018-01-08 21:40:06 -0400 |
commit | 9eaaaf953ba7ce1eeb805603f4e113aa15f5178f (patch) | |
tree | ef134eecc8a5767a997fce0637cd64e0ebcee6b1 /new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux | |
parent | f523bc14d43286348aeb200bd0554812dc6ef28d (diff) |
- Moved all translation code under the JVM path (in preparation for porting the JS back-end).
Diffstat (limited to 'new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux')
-rw-r--r-- | new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux new file mode 100644 index 000000000..f92c7025a --- /dev/null +++ b/new-luxc/source/luxc/lang/translation/jvm/primitive.jvm.lux @@ -0,0 +1,35 @@ +(.module: + lux + (lux (control monad) + (data text/format) + [macro "macro/" Monad<Meta>]) + (luxc ["&" lang] + (lang [".L" host] + (host ["$" jvm] + (jvm ["$i" inst] + ["$t" type])) + ["la" analysis] + ["ls" synthesis])) + (// [".T" common])) + +(def: #export translate-unit + (Meta $.Inst) + (macro/wrap ($i.string hostL.unit))) + +(def: #export (translate-bool value) + (-> Bool (Meta $.Inst)) + (macro/wrap ($i.GETSTATIC "java.lang.Boolean" + (if value "TRUE" "FALSE") + ($t.class "java.lang.Boolean" (list))))) + +(do-template [<name> <type> <load> <wrap>] + [(def: #export (<name> value) + (-> <type> (Meta $.Inst)) + (macro/wrap (|>> (<load> value) <wrap>)))] + + [translate-nat Nat (|>> (:! Int) $i.long) ($i.wrap #$.Long)] + [translate-int Int $i.long ($i.wrap #$.Long)] + [translate-deg Deg (|>> (:! Int) $i.long) ($i.wrap #$.Long)] + [translate-frac Frac $i.double ($i.wrap #$.Double)] + [translate-text Text $i.string id] + ) |