-- A test REPL putting all our Ada Lisp components together.
with Ada.Text_IO; use Ada.Text_IO;

with Parser; use Parser;
with Evaler; use Evaler;
with LispM; use LispM;

procedure Test_Repl is
   P : MemPtr;
   TID : TokenID;
begin
   -- Init builtin bindings
   Init_Builtin_Bindings;
   
   loop
      Put("> ");
      
      -- Read
      Parse(P, TID);
      
      -- Eval
      case TID is
         when Error_Token =>
            Put("Parse error.");
            exit;
         when ListE_Token =>
            Put("Unexpected end of list.");
            exit;
         when others =>
            Eval(P, 0, P);
      end case;
      
      -- Print
      Dump_Cell(P); Put_Line("");
   end loop;
end Test_Repl;
