separate (Find_Unit.Build_Ada_Compilation_Unit)
procedure Get_Next_Significant_Token
             (Significant_Token : out Token_Package.Token;
              Current_Unit : in out Compilation_Unit.Ada_Compilation_Unit) is
    --==============================================================
    -- This procedure gets the next significant token for the user.=
    -- A significant token includes all tokens except blank lines, =
    -- new lines, and comments. If this procedure finds any of     =
    -- these nonsignificant tokens, then they are stuffed on the   =
    -- compilation unit. Token_Package will always return at least =
    -- one significant token because the end of file token is      =
    -- considered to be significant.                               =
    --                                                             =
    -- written  by  GER  with  help  from  b2  and  JM             =
    -- May 1985  at EVB Software Engineering                       =
    --==============================================================

    Current_Token : Token_Package.Token;
    -- Holds the current token

    Found_Significant_Token : Boolean := False;
    -- Set to true when a significant token is found

begin
    -- Get_Next_Significant_Token

    Search_For_Significant:
        loop
            Token_Package.Get (Next_Token => Current_Token);

            -- If the class of the token from token_Package was
            -- significant, then put time to get out of the loop

            case Token_Package.Class_Of (Current_Token) is

                when Token_Package.Identifier | Token_Package.Punctuation |
                     Token_Package.Keyword | Token_Package.Character_Literal |
                     Token_Package.Numeric_Literal |
                     Token_Package.Standard_String_Literal |
                     Token_Package.Alternate_String_Literal |
                     Token_Package.End_Of_File =>
                    Found_Significant_Token := True;

                when others =>
                    -- Not a significant token
                    Compilation_Unit.Add_Token_To_Compilation_Unit
                       (Token_To_Add => Current_Token,
                        Unit_To_Add_To => Current_Unit);

            end case;

            exit Search_For_Significant when Found_Significant_Token;
        end loop Search_For_Significant;

    -- Set the peek token back to the beginning

    Token_Package.Set_Peek_Back;

    Significant_Token := Current_Token;

end Get_Next_Significant_Token;