Added cleaner refactoring of metaprogramming functionality, with placeholders for generic MP functionality
Refactored codebase for DDataAnnotation type (with splice vars) for separate metaprogramming pass to build generators. Further refactoring needed to again remove splice vars from DDataAnnotation while preserving MP pass in the parser.
More refactoring, to enforce data annotations as unstaged (i.e., spliced) AST nodes, with an explicit staging layer (in s.L.K3.Parser.Metaprogram). The staging layer consists of data annotation macros, and control annotations. We preserve control annotations the AST for lineage only (this can be removed at any time as desired), where downstream compiler stages do not need to operate on control annotations.
Cleaned up warnings for recent refactoring
Added initial draft of pattern matching and rewriting for control annotations during metaprogram evaluation. Added entry points fin the parser.
Minimal (static) example of a control annotation.
Work in progress in lifting metaprogramming as a separate stage from the parser
Refactored AST helpers to a common location in L.K3.Core.Utils . Refactored metaprogramming into a separate pass. For now this is invoked in the parser, but will ultimately be applied in the Driver (fllowing a merge with master)
Added basic debugging for control annotations. Decoupled source process function generation during parsing. Bugfixes for expression binding during control annotation rewriting
Added basic metaprogram examples
Simple example of extensions in control annotations.
Added record and set values to metaprogramming. Cleaning up metaprogramming implementation. Bugfixes for parser.
Added Haskell-K3 metaprogramming bridge. Added literal splicing.
Changed H-K3 bridge to run in the generator monad
Merged master into canns and fixed conflicts
Minor logger cleanup. Added interpreter args given dependency on hslogger