diff options
| author | Eduardo Julian | 2019-12-30 01:43:41 -0400 | 
|---|---|---|
| committer | Eduardo Julian | 2019-12-30 01:43:41 -0400 | 
| commit | d6c28549555e4cd9084785dd9c8254ca9360ed9e (patch) | |
| tree | d2aef81c63c6a06c2389183a4e744c0eaddc4c2e /stdlib/source/lux/tool | |
| parent | 647d18fde762b0797b5b31b69421d50ed326dcc5 (diff) | |
Re-organized macro-expansion machinery.
Diffstat (limited to 'stdlib/source/lux/tool')
| -rw-r--r-- | stdlib/source/lux/tool/compiler/analysis/macro.lux (renamed from stdlib/source/lux/tool/compiler/phase/macro.lux) | 7 | ||||
| -rw-r--r-- | stdlib/source/lux/tool/compiler/default/evaluation.lux | 10 | ||||
| -rw-r--r-- | stdlib/source/lux/tool/compiler/default/init.lux | 4 | ||||
| -rw-r--r-- | stdlib/source/lux/tool/compiler/default/platform.lux | 4 | ||||
| -rw-r--r-- | stdlib/source/lux/tool/compiler/phase/analysis.lux | 6 | ||||
| -rw-r--r-- | stdlib/source/lux/tool/compiler/phase/directive.lux | 6 | ||||
| -rw-r--r-- | stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux | 4 | 
7 files changed, 21 insertions, 20 deletions
diff --git a/stdlib/source/lux/tool/compiler/phase/macro.lux b/stdlib/source/lux/tool/compiler/analysis/macro.lux index db384c727..9e191e514 100644 --- a/stdlib/source/lux/tool/compiler/phase/macro.lux +++ b/stdlib/source/lux/tool/compiler/analysis/macro.lux @@ -12,7 +12,8 @@       [array (#+ Array)]       ["." list ("#@." functor)]]]     ["." macro]] -  ["." //]) +  [/// +   ["." phase]])  (exception: #export (expansion-failed {macro Name} {inputs (List Code)} {error Text})    (exception.report @@ -39,7 +40,7 @@          (#try.Success output)          (#try.Failure error) -        ((//.throw expansion-failed [name inputs error]) state))))) +        ((phase.throw ..expansion-failed [name inputs error]) state)))))  (def: #export (expand-one expander name macro inputs)    (-> Expander Name Macro (List Code) (Meta Code)) @@ -50,4 +51,4 @@        (wrap single)        _ -      (//.throw must-have-single-expansion [name inputs expansion])))) +      (phase.throw ..must-have-single-expansion [name inputs expansion])))) diff --git a/stdlib/source/lux/tool/compiler/default/evaluation.lux b/stdlib/source/lux/tool/compiler/default/evaluation.lux index b6bc6b46b..2d7f32d85 100644 --- a/stdlib/source/lux/tool/compiler/default/evaluation.lux +++ b/stdlib/source/lux/tool/compiler/default/evaluation.lux @@ -9,24 +9,24 @@       ["%" format (#+ format)]]]]    [///     ["." phase -    [macro (#+ Expander)]      [".P" analysis       ["." type]]      [".P" synthesis]      ["." generation]      [// -     [analysis (#+ Operation)] +     [analysis (#+ Operation) +      [macro (#+ Expander)]]       ["." synthesis]]]])  (type: #export Eval    (-> Nat Type Code (Operation Any)))  (def: #export (evaluator expander synthesis-state generation-state generate) -  (All [anchor expression directive] +  (All [anchor expression artifact]      (-> Expander          synthesis.State+ -        (generation.State+ anchor expression directive) -        (generation.Phase anchor expression directive) +        (generation.State+ anchor expression artifact) +        (generation.Phase anchor expression artifact)          Eval))    (let [analyze (analysisP.phase expander)]      (function (eval count type exprC) diff --git a/stdlib/source/lux/tool/compiler/default/init.lux b/stdlib/source/lux/tool/compiler/default/init.lux index c053445f2..4220659b9 100644 --- a/stdlib/source/lux/tool/compiler/default/init.lux +++ b/stdlib/source/lux/tool/compiler/default/init.lux @@ -19,11 +19,11 @@     ["#." syntax (#+ Aliases)]     ["#." evaluation]     ["/#" // (#+ Instancer) -    ["#." analysis] +    ["#." analysis +     [macro (#+ Expander)]]      ["#." synthesis]      ["#." directive (#+ Requirements)]      ["#." phase -     [macro (#+ Expander)]       [".P" analysis        ["." module]]       [".P" synthesis] diff --git a/stdlib/source/lux/tool/compiler/default/platform.lux b/stdlib/source/lux/tool/compiler/default/platform.lux index 753ab8f5c..23b1c5b6c 100644 --- a/stdlib/source/lux/tool/compiler/default/platform.lux +++ b/stdlib/source/lux/tool/compiler/default/platform.lux @@ -20,10 +20,10 @@     ["#." init]     ["#." syntax]     ["/#" // -    ["#." analysis] +    ["#." analysis +     [macro (#+ Expander)]]      ["#." directive]      ["#." phase -     [macro (#+ Expander)]       ## TODO: Get rid of this import ASAP       ["." extension (#+ Extender)]       ["." generation (#+ Buffer)] diff --git a/stdlib/source/lux/tool/compiler/phase/analysis.lux b/stdlib/source/lux/tool/compiler/phase/analysis.lux index fbdb18f16..5a03a40c3 100644 --- a/stdlib/source/lux/tool/compiler/phase/analysis.lux +++ b/stdlib/source/lux/tool/compiler/phase/analysis.lux @@ -16,11 +16,11 @@     ["#." case]     ["#." function]     ["#/" // -    ["#." macro (#+ Expander)]      ["#." extension]      ["#/" // #_       ["#." reference] -     ["/" analysis (#+ Analysis Operation Phase)]]]]) +     ["/" analysis (#+ Analysis Operation Phase) +      ["#." macro (#+ Expander)]]]]])  (exception: #export (unrecognized-syntax {code Code})    (ex.report ["Code" (%.code code)])) @@ -108,7 +108,7 @@            (case ?macro              (#.Some macro)              (do @ -              [expansion (//extension.lift (//macro.expand-one expander def-name macro argsC+))] +              [expansion (//extension.lift (/macro.expand-one expander def-name macro argsC+))]                (compile expansion))              _ diff --git a/stdlib/source/lux/tool/compiler/phase/directive.lux b/stdlib/source/lux/tool/compiler/phase/directive.lux index dc4115610..0144c877c 100644 --- a/stdlib/source/lux/tool/compiler/phase/directive.lux +++ b/stdlib/source/lux/tool/compiler/phase/directive.lux @@ -11,13 +11,13 @@       ["." list ("#;." fold monoid)]]]     ["." macro]]    ["." // -   ["#." macro (#+ Expander)]     ["#." extension]     [".P" analysis      ["." type]]     ["#/" // #_      [reference (#+)] -    ["#." analysis] +    ["#." analysis +     ["#/." macro (#+ Expander)]]      ["/" directive (#+ Phase)]]])  (exception: #export (not-a-directive {code Code}) @@ -57,7 +57,7 @@                                         #.None                                         (//.throw ..macro-was-not-found macro-name))] -                              (//extension.lift (//macro.expand expander macro-name macro inputs))) +                              (//extension.lift (///analysis/macro.expand expander macro-name macro inputs)))                              _                              (//.throw ..invalid-macro-call code))))] diff --git a/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux b/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux index 856648097..cc00bfa5f 100644 --- a/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux +++ b/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux @@ -23,15 +23,15 @@     ["#." bundle]     ["#." analysis]     ["#/" // -    ["#." macro (#+ Expander)]      ["#." generation]      [analysis       ["." module]       [".A" type]]      ["#/" // #_ -     ["#." analysis]       ["#." synthesis (#+ Synthesis)]       ["#." directive (#+ Import Requirements Phase Operation Handler Bundle)] +     ["#." analysis +      [macro (#+ Expander)]]       [default        ["#." evaluation]]]]])  | 
