aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang
diff options
context:
space:
mode:
Diffstat (limited to 'new-luxc/source/luxc/lang')
-rw-r--r--new-luxc/source/luxc/lang/host.jvm.lux2
-rw-r--r--new-luxc/source/luxc/lang/init.lux45
-rw-r--r--new-luxc/source/luxc/lang/translation.lux36
3 files changed, 49 insertions, 34 deletions
diff --git a/new-luxc/source/luxc/lang/host.jvm.lux b/new-luxc/source/luxc/lang/host.jvm.lux
index 7ec0df535..4b2dced82 100644
--- a/new-luxc/source/luxc/lang/host.jvm.lux
+++ b/new-luxc/source/luxc/lang/host.jvm.lux
@@ -9,7 +9,7 @@
text/format
(coll [dict]
[array]))
- [macro #+ Monad<Meta>]
+ [macro]
[host #+ do-to object]
[io])
(luxc ["&" lang]
diff --git a/new-luxc/source/luxc/lang/init.lux b/new-luxc/source/luxc/lang/init.lux
new file mode 100644
index 000000000..80968d7cd
--- /dev/null
+++ b/new-luxc/source/luxc/lang/init.lux
@@ -0,0 +1,45 @@
+(.module:
+ lux
+ [//]
+ (// [".L" extension]
+ (translation (jvm [".T" common]))))
+
+(def: #export (cursor file)
+ (-> Text Cursor)
+ [file +1 +0])
+
+(def: #export (source file code)
+ (-> Text Text Source)
+ [(cursor file) +0 code])
+
+(def: dummy-source
+ Source
+ [.dummy-cursor +0 ""])
+
+(def: #export type-context
+ Type-Context
+ {#.ex-counter +0
+ #.var-counter +0
+ #.var-bindings (list)})
+
+(def: #export info
+ Info
+ {#.target (for {"JVM" "JVM"
+ "JS" "JS"})
+ #.version //.version
+ #.mode #.Build})
+
+(def: #export (compiler host)
+ (-> commonT.Host Compiler)
+ {#.info ..info
+ #.source dummy-source
+ #.cursor .dummy-cursor
+ #.current-module #.None
+ #.modules (list)
+ #.scopes (list)
+ #.type-context ..type-context
+ #.expected #.None
+ #.seed +0
+ #.scope-type-vars (list)
+ #.extensions (:! Void extensionL.fresh)
+ #.host (:! Void host)})
diff --git a/new-luxc/source/luxc/lang/translation.lux b/new-luxc/source/luxc/lang/translation.lux
index cbd63b998..da465a804 100644
--- a/new-luxc/source/luxc/lang/translation.lux
+++ b/new-luxc/source/luxc/lang/translation.lux
@@ -26,6 +26,7 @@
[".L" host]
[".L" macro]
[".L" extension]
+ [".L" init]
(extension [".E" analysis]
[".E" synthesis]
[".E" translation]
@@ -142,8 +143,7 @@
(def: (with-active-compilation [module-name file-name source-code] action)
(All [a] (-> [Text Text Text] (Meta a) (Meta a)))
(do macro.Monad<Meta>
- [#let [init-cursor [file-name +1 +0]]
- output (&.with-source-code [init-cursor +0 source-code]
+ [output (&.with-source-code (initL.source file-name source-code)
action)
_ (moduleL.flag-compiled! module-name)]
(wrap output)))
@@ -211,41 +211,11 @@
(#e.Error error)
(io.fail error))))
-(def: init-cursor Cursor ["" +1 +0])
-
-(def: #export init-type-context
- Type-Context
- {#.ex-counter +0
- #.var-counter +0
- #.var-bindings (list)})
-
-(def: #export init-info
- Info
- {#.target (for {"JVM" "JVM"
- "JS" "JS"})
- #.version &.version
- #.mode #.Build})
-
-(def: #export (init-compiler host)
- (-> commonT.Host Compiler)
- {#.info init-info
- #.source [init-cursor +0 ""]
- #.cursor .dummy-cursor
- #.current-module #.None
- #.modules (list)
- #.scopes (list)
- #.type-context init-type-context
- #.expected #.None
- #.seed +0
- #.scope-type-vars (list)
- #.extensions (:! Void extensionL.fresh)
- #.host (:! Void host)})
-
(def: (initialize sources target)
(-> (List File) File (Process Compiler))
(do io.Monad<Process>
[compiler (: (Process Compiler)
- (case (runtimeT.translate (init-compiler (io.run hostL.init-host)))
+ (case (runtimeT.translate (initL.compiler (io.run hostL.init-host)))
(#e.Error error)
(io.fail error)