summaryrefslogtreecommitdiff
path: root/src/kompsos-pretty_print.adb
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2025-12-14 19:53:01 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2025-12-14 19:53:01 +1300
commit826b9d2dad1031a3eca29dd2fb8b6643e53e5fc1 (patch)
tree40a689365738f8cce48e1b285955e28466641383 /src/kompsos-pretty_print.adb
parent3086d133950cb813c01a89e97e009f7b400b5371 (diff)
Core rewritten with memoisation, but somehow Zebra example is buggedHEADmaster
Diffstat (limited to 'src/kompsos-pretty_print.adb')
-rw-r--r--src/kompsos-pretty_print.adb45
1 files changed, 19 insertions, 26 deletions
diff --git a/src/kompsos-pretty_print.adb b/src/kompsos-pretty_print.adb
index 73cee40..834c0ca 100644
--- a/src/kompsos-pretty_print.adb
+++ b/src/kompsos-pretty_print.adb
@@ -9,7 +9,8 @@
with
Ada.Characters.Latin_1,
- Ada.Strings.Fixed;
+ Ada.Strings.Fixed,
+ Kompsos.Collector;
package body Kompsos.Pretty_Print is
@@ -30,10 +31,10 @@ package body Kompsos.Pretty_Print is
function Image
- (Item : in ID_Number)
+ (Item : in Long_Natural)
return String is
begin
- return Str.Fixed.Trim (ID_Number'Image (Item), Str.Left);
+ return Str.Fixed.Trim (Long_Natural'Image (Item), Str.Left);
end Image;
@@ -43,7 +44,7 @@ package body Kompsos.Pretty_Print is
(Item : in Variable)
return String is
begin
- return "Vargen#" & Image (ID_Number (Item.Ident)) &
+ return "Vargen#" & Image (Long_Natural (Item.Ident)) &
(if SU.Length (Item.Name) /= 0
then "/" & SU.To_String (Item.Name)
else "");
@@ -101,8 +102,8 @@ package body Kompsos.Pretty_Print is
SU.Append (Result, Latin.LF);
for Iter in Item.Ident.Iterate loop
SU.Append (Result, Latin.HT & Latin.HT & "Vargen#" &
- Image (ID_Number (ID_Number_Maps.Key (Iter))) & " => " &
- Image (ID_Number (ID_Number_Maps.Element (Iter))) & Latin.LF);
+ Image (Long_Natural (ID_Number_Maps.Key (Iter))) & " => " &
+ Image (Long_Natural (ID_Number_Maps.Element (Iter))) & Latin.LF);
end loop;
end if;
SU.Append (Result, Latin.HT & "Variables:");
@@ -112,7 +113,7 @@ package body Kompsos.Pretty_Print is
SU.Append (Result, Latin.LF);
for Index in Item.LVars.First_Index .. Item.LVars.Last_Index loop
SU.Append (Result, Latin.HT & Latin.HT &
- "Var#" & Image (ID_Number (Index)) &
+ "Var#" & Image (Long_Natural (Index)) &
(if SU.Length (Item.LVars (Index)) /= 0
then "/" & SU.To_String (Item.LVars (Index))
else "") & Latin.LF);
@@ -125,7 +126,7 @@ package body Kompsos.Pretty_Print is
SU.Append (Result, Latin.LF);
for Iter in Item.Subst.Iterate loop
SU.Append (Result, Latin.HT & Latin.HT &
- Image (ID_Number (Binding_Maps.Key (Iter))) & " => " &
+ Image (Long_Natural (Binding_Maps.Key (Iter))) & " => " &
Image (Binding_Maps.Element (Iter)) & Latin.LF);
end loop;
end if;
@@ -134,17 +135,17 @@ package body Kompsos.Pretty_Print is
function Image
- (Items : in State_Array)
+ (Item : in State_Array)
return String
is
Result : SU.Unbounded_String;
begin
- if Items'Length = 0 then
+ if Item'Length = 0 then
return "States: N/A" & Latin.LF;
end if;
- for Index in Items'Range loop
+ for Index in Item'Range loop
SU.Append (Result, "State#" & Image (Index) & ":" & Latin.LF);
- SU.Append (Result, Image (Items (Index)));
+ SU.Append (Result, Image (Item (Index)));
end loop;
return SU.Slice (Result, 1, SU.Length (Result) - 1);
end Image;
@@ -153,35 +154,27 @@ package body Kompsos.Pretty_Print is
function Image
- (Item : in out World)
+ (Item : in World)
return String
is
Result : SU.Unbounded_String;
Counter : Positive := 1;
+
+ package Collect is new Collector (Item);
begin
- if not Item.Has_State (Counter) then
+ if not Collect.Has_Next then
return "States: N/A" & Latin.LF;
end if;
loop
SU.Append (Result, "State#" & Image (Counter) & ":" & Latin.LF);
- SU.Append (Result, Image (Item.Possibles.Constant_Reference (Counter)));
+ SU.Append (Result, Image (Collect.Next));
+ exit when not Collect.Has_Next;
Counter := Counter + 1;
- exit when not Item.Has_State (Counter);
end loop;
return SU.Slice (Result, 1, SU.Length (Result) - 1);
end Image;
- function Image_Constant
- (Item : in World)
- return String
- is
- Scratch : World := Item;
- begin
- return Image (Scratch);
- end Image_Constant;
-
-
end Kompsos.Pretty_Print;