Ada beginner Stack program <p>Basically, I have 2 files ( .adb and .ads). I am totally new to Ada and also how to compile 2 files. The program is of a basic stack implementation. I got this compile error when I compiled the .adb file.</p> <pre><code>$ gcc -c test_adt_stack.adb abstract_char_stack.ads:22:01: end of file expected, file can have only one compilation unit </code></pre> <p>The 2 files I have are: <strong>abstract_char_stack.ads</strong></p> <pre><code>----------------------------------------------------------- package Abstract_Char_Stack is type Stack_Type is private; procedure Push(Stack : in out Stack_Type; Item : in Character); procedure Pop (Stack : in out Stack_Type; Char : out Character); private type Space_Type is array(1..8) of Character; type Stack_Type is record Space : Space_Type; Index : Natural := 0; end record; end Abstract_Char_Stack; ----------------------------------------------------------- package body Abstract_Char_Stack is ---------------------------------------------- procedure Push(Stack : in out Stack_Type; Item : in Character) is begin Stack.Index := Stack.Index + 1; Stack.Space(Stack.Index) := Item; end Push; -------------------------------------------- procedure Pop (Stack : in out Stack_Type; Char : out Character) is begin Char := Stack.Space(Stack.Index); Stack.Index := Stack.Index - 1; end Pop; -------------------------------------------- end Abstract_Char_Stack; </code></pre> <p>and the other one is <strong>test_adt_stack.adb</strong></p> <pre><code>----------------------------------------------------------- with Ada.Text_IO; use Ada.Text_IO; with Abstract_Char_Stack; use Abstract_Char_Stack; procedure Test_ADT_Stack is S1 : Stack_Type; S2 : Stack_Type; Ch : Character; begin Push(S1,'H'); Push(S1,'E'); Push(S1,'L'); Push(S1,'L'); Push(S1,'O'); -- S1 holds O,L,L,E,H for I in 1..5 loop Pop(S1, Ch); Put(Ch); -- displays OLLEH Push(S2,Ch); end loop; -- S2 holds H,E,L,L,O New_Line; Put_Line("Order is reversed"); for I in 1..5 loop Pop(S2, Ch); Put(Ch); -- displays HELLO end loop; end Test_ADT_Stack; ----------------------------------------------------------- </code></pre> <p>What am I doing wrong? I just want to have it compile and display what it's supposed to do. This was a study the program kind of assignment. But I can't make it compile or don't know if I am doing it right.</p>