diff options
| author | Jedidiah Barber <contact@jedbarber.id.au> | 2025-11-19 16:51:08 +1300 |
|---|---|---|
| committer | Jedidiah Barber <contact@jedbarber.id.au> | 2025-11-19 16:51:08 +1300 |
| commit | 39a112952e328ce52e5f7b08bf18bbadd3fca03f (patch) | |
| tree | a3ac33e45e4ca643da28930979d38454bda949ff /src/kompsos-advanced_reify.ads | |
| parent | 5c077a81964096daf997949da695500c8ab4a7d3 (diff) | |
Reification, including Term flattening and Treeification
Diffstat (limited to 'src/kompsos-advanced_reify.ads')
| -rw-r--r-- | src/kompsos-advanced_reify.ads | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/kompsos-advanced_reify.ads b/src/kompsos-advanced_reify.ads new file mode 100644 index 0000000..ecda1c9 --- /dev/null +++ b/src/kompsos-advanced_reify.ads @@ -0,0 +1,69 @@ + + +-- Programmed by Jedidiah Barber +-- Licensed under the Sunset License v1.0 + +-- See license.txt for further details + + +with + + Ada.Containers.Multiway_Trees; + + +generic + type Element_Array is array (Positive range <>) of Element_Type; + + Null_Element : Element_Type; + + with function Variable_Convert + (Item : in Term) + return Element_Type is <>; + + -- Element_Trees must be passed in rather than instantiated inside the generic + -- due to an issue with implementation-defined Disable_Controlled aspect in GNAT. + with package Element_Trees is new Ada.Containers.Multiway_Trees + (Element_Type => Element_Type, + "=" => "="); +package Kompsos.Advanced_Reify is + + + -- Term->Array Conversion -- + + function Flatten + (Item : in Term) + return Element_Array; + + + -- Term->Tree Conversion -- + + function To_Tree + (Item : in Term) + return Element_Trees.Tree; + + + -- Tree Reification -- + + function Treeify + (Item : in Term; + Subst : in State) + return Element_Trees.Tree; + + function Treeify_First + (Subst : in State) + return Element_Trees.Tree; + + function Treeify_First + (Subst : in State; + Name : in String) + return Element_Trees.Tree; + + function Treeify_First + (Subst : in State; + Name : in Nametag) + return Element_Trees.Tree; + + +end Kompsos.Advanced_Reify; + + |
