From 39a112952e328ce52e5f7b08bf18bbadd3fca03f Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Wed, 19 Nov 2025 16:51:08 +1300 Subject: Reification, including Term flattening and Treeification --- src/kompsos-advanced_reify.ads | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/kompsos-advanced_reify.ads (limited to 'src/kompsos-advanced_reify.ads') 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; + + -- cgit