------------------------------------------------------------------------------ -- -- -- ASIS Tester And iNTerpreter (ASIStant) COMPONENTS -- -- -- -- A S I S T A N T . E X E C -- -- -- -- B o d y -- -- -- -- Copyright (c) 1997-1999, Free Software Foundation, Inc. -- -- -- -- ASIStant is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 2, or (at your option) any later -- -- version. ASIStant is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of MER- -- -- CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -- -- Public License for more details. You should have received a copy of the -- -- GNU General Public License distributed with GNAT; see file COPYING. If -- -- not, write to the Free Software Foundation, 59 Temple Place Suite 330, -- -- Boston, MA 02111-1307, USA. -- -- -- -- ASIStant is an evolution of ASIStint tool that was created by -- -- Vasiliy Fofanov as part of a collaboration between Software Engineering -- -- Laboratory of the Swiss Federal Institute of Technology in Lausanne, -- -- Switzerland, and the Scientific Research Computer Center of the Moscow -- -- University, Russia, supported by the Swiss National Science Foundation -- -- grant #7SUPJ048247, "Development of ASIS for GNAT with industry quality" -- -- -- -- ASIStant is distributed as a part of the ASIS implementation for GNAT -- -- (ASIS-for-GNAT) and is maintained by Ada Core Technologies Inc -- -- (http://www.gnat.com). -- ------------------------------------------------------------------------------ with ASIStant.Batch_IO; use ASIStant.Batch_IO; with ASIStant.Text_IO; with ASIStant.S_Parser, ASIStant.Common, ASIStant.Get, ASIStant.Call; use ASIStant.S_Parser, ASIStant.Common, ASIStant.Get, ASIStant.Call; with ASIStant.Evaluate; use ASIStant.Evaluate; with ASIStant.Table; use ASIStant.Table; with ASIStant.Help, ASIStant.If1, ASIStant.Print, ASIStant.Set; package body ASIStant.Exec is ------------------------------------------------------------------------------ -- This package executes ASIStant commands ------------------------------------------------------------------------------ procedure Exec_ATI_Command (N : Node_Position) is i : Integer; begin Exec_Result := -1; case Identify_Function (N) is when FT_INFO => ASIStant.Help.ASISHelp; when FT_HELP => ASIStant.Help.Help (N); when FT_CALL => declare QR : Query_Result := Evaluate_Node (N); begin if QR.RType /= Par_Absent then -- ??? Non-empty result is now ignored null; end if; end; when FT_IF => ASIStant.If1.If1 (N); when FT_SET => ASIStant.Set.Set (N); when FT_LOGLEVEL => if CurStat.Tree (N).NValue /= 0 then -- Expect integer i := Get_Integer (CurStat.Tree (N + 1).NValue); if i < 0 or i > 5 then Error (ERR_BADPARAM); end if; Text_IO.OutputLevel := i; else Error (ERR_NEEDPARAM); end if; when FT_LOG => ASIStant.Batch_IO.Log_IO (N); when FT_RUN | FT_IRUN | FT_PAUSE | FT_EXIT => ASIStant.Batch_IO.Script_IO (N); when FT_PRINT => ASIStant.Print.Print (N); when FT_PRINTDETAIL => if CurStat.Tree (N).NValue /= 0 then -- Expect string ASIStant.Print.Print_Detail (Get_String (CurStat.Tree (N + 1).NValue).all); else Error (ERR_NEEDPARAM); end if; when FT_QUIT => if CurStat.Tree (N).NValue /= 0 then -- Expect integer Exec_Result := Get_Integer (CurStat.Tree (N + 1).NValue); else Exec_Result := 0; end if; when others => null; end case; end Exec_ATI_Command; end ASIStant.Exec;