diff options
author | Eduardo Julian | 2019-12-28 17:00:04 -0400 |
---|---|---|
committer | Eduardo Julian | 2019-12-28 17:00:04 -0400 |
commit | ecb53b05a226d8d3d8e612f949cb3ad6ac0600ce (patch) | |
tree | b45698c29c29ac9171b05b62cef0fc31df5af0c5 /stdlib/source/spec/compositor | |
parent | 581ccee156457b0f84696def59fc324c1cbbdaba (diff) |
Implemented an alternative method for extensible JVM bytecode generation.
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/spec/compositor/common.lux | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/stdlib/source/spec/compositor/common.lux b/stdlib/source/spec/compositor/common.lux index 05fbe7fc2..df351c008 100644 --- a/stdlib/source/spec/compositor/common.lux +++ b/stdlib/source/spec/compositor/common.lux @@ -8,12 +8,13 @@ [tool [compiler ["." reference] + ["." analysis] ["." synthesis (#+ Synthesis)] ["." directive] ["." phase ["." macro (#+ Expander)] - ["." generation (#+ Operation Bundle)] - [extension + ["." generation (#+ Operation)] + [extension (#+ Extender) ["." bundle]]] [default ["." platform (#+ Platform)]]]]]) @@ -53,17 +54,20 @@ (phase (synthesis.constant lux-name))))] (:: host evaluate! "definer" definitionG)))) -(def: #export (executors platform bundle expander program) +(def: #export (executors target expander platform + analysis-bundle generation-bundle directive-bundle + program extender) (All [anchor expression directive] - (-> (Platform IO anchor expression directive) - (Bundle anchor expression directive) - Expander - (-> expression directive) + (-> Text Expander (Platform IO anchor expression directive) + analysis.Bundle + (generation.Bundle anchor expression directive) + (directive.Bundle anchor expression directive) + (-> expression directive) Extender (IO (Try [(directive.State+ anchor expression directive) Runner Definer])))) (do io.monad - [?state (platform.initialize expander platform bundle program)] + [?state (platform.initialize target expander analysis-bundle platform generation-bundle directive-bundle program extender)] (wrap (do try.monad [[directive-bundle directive-state] ?state #let [generation-state (get@ [#directive.generation |