1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
------------------------------------------------------------------------------
-- --
-- ASIS APPLICATION TEMPLATE COMPONENTS --
-- --
-- A S I S _ A P P L I C A T I O N _ D R I V E R _ 1 --
-- --
-- B o d y --
-- --
-- Copyright (c) 2000, Free Software Foundation, Inc. --
-- --
-- ASIS Application Templates are 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. ASIS Application Templates are distributed in --
-- the hope that they will be useful, but WITHOUT ANY WARRANTY; without --
-- even the implied warranty of MERCHANTABILITY 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 --
-- distributed with GNAT; see file COPYING. If not, write to the Free --
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, --
-- USA. --
-- --
-- ASIS Application Templates were developed and are now maintained by Ada --
-- Core Technologies Inc (http://www.gnat.com). --
-- --
------------------------------------------------------------------------------
with Ada.Exceptions;
with Ada.Wide_Text_IO;
with Ada.Characters.Handling;
with Asis;
with Asis.Ada_Environments;
with Asis.Implementation;
with Asis.Exceptions;
with Asis.Errors;
with Context_Processing;
procedure ASIS_Application_Driver_1 is
My_Context : Asis.Context;
My_Context_Name : Wide_String := Asis.Ada_Environments.Default_Name;
-- The default name in case of the GNAT ASIS implementation is empty.
-- If you would like to have some non-null name for your ASIS Context,
-- change the initialization expression in this declaration. Note, that
-- in the GNAT ASIS implementation the name of a Context does not have any
-- special meaning or semantics associated with particular names.
My_Context_Parameters : Wide_String :=
Asis.Ada_Environments.Default_Parameters;
-- The default COntext parameters in case of the GNAT ASIS implementation
-- are an empty string. This corresponds to the following Context
-- definition: "-CA -FT -SA", and has the following meaning:
-- -CA - a Context is made up by all the tree files in the tree search
-- path; the tree search path is not set, so the default is used,
-- and the default is the current directory;
-- -FT - only pre-created trees are used, no tree file can be created by
-- ASIS;
-- -SA - source files for all the Compilation Units belonging to the
-- Context (except the predefined Standard package) are considered
-- in the consistency check when opening the Context;
--
-- If you would like to use some other Context definition, you have to
-- replace the initialization expression in this declaration by
-- the corresponding Parameters string. See the ASIS Reference Manual for
-- the full details of the Context definition for the GNAT ASIS
-- implementation.
Initialization_Parameters : Wide_String := "";
Finalization_Parameters : Wide_String := "";
-- If you would like to use some specific initialization or finalization
-- parameters, you may set them here as initialization expressions in
-- the declarations above.
begin
-- The code below corresponds to the basic sequencing of calls to ASIS
-- queries which is mandatory for any ASIS application.
-- First, the ASIS implementation should be initialized
-- (Asis.Implementation.Initialize), then an application should define
-- an ASIS Context to process by associating the Context with an external
-- environment (Asis.Ada_Environments.Associate), then the Context should
-- be opened (sis.Ada_Environments.Open ). After that all the ASIS queries
-- may be used (the ASIS processing is encapsulated in
-- Context_Processing.Process_Context. When the ASIS analysis is over, the
-- application should release the system resources by closing the ASIS
-- Context (Asis.Ada_Environments.Close), breaking the association of the
-- Context with the external world (Asis.Ada_Environments.Dissociate) and
-- finalizing the ASIS implementation (Asis.Implementation.Finalize).
Asis.Implementation.Initialize (Initialization_Parameters);
Asis.Ada_Environments.Associate
(The_Context => My_Context,
Name => My_Context_Name,
Parameters => My_Context_Parameters);
Asis.Ada_Environments.Open (My_Context);
Context_Processing.Process_Context (The_Context => My_Context,
Trace => True);
Asis.Ada_Environments.Close (My_Context);
Asis.Ada_Environments.Dissociate (My_Context);
Asis.Implementation.Finalize (Finalization_Parameters);
exception
-- The exception handling in this driver is somewhat redundant and may
-- need some reconsidering when using this driver in real ASIS tools
when Ex : Asis.Exceptions.ASIS_Inappropriate_Context |
Asis.Exceptions.ASIS_Inappropriate_Container |
Asis.Exceptions.ASIS_Inappropriate_Compilation_Unit |
Asis.Exceptions.ASIS_Inappropriate_Element |
Asis.Exceptions.ASIS_Inappropriate_Line |
Asis.Exceptions.ASIS_Inappropriate_Line_Number |
Asis.Exceptions.ASIS_Failed =>
Ada.Wide_Text_IO.Put ("ASIS exception (");
Ada.Wide_Text_IO.Put (Ada.Characters.Handling.To_Wide_String (
Ada.Exceptions.Exception_Name (Ex)));
Ada.Wide_Text_IO.Put (") is raised");
Ada.Wide_Text_IO.New_Line;
Ada.Wide_Text_IO.Put ("ASIS Error Status is ");
Ada.Wide_Text_IO.Put
(Asis.Errors.Error_Kinds'Wide_Image (Asis.Implementation.Status));
Ada.Wide_Text_IO.New_Line;
Ada.Wide_Text_IO.Put ("ASIS Diagnosis is ");
Ada.Wide_Text_IO.New_Line;
Ada.Wide_Text_IO.Put (Asis.Implementation.Diagnosis);
Ada.Wide_Text_IO.New_Line;
Asis.Implementation.Set_Status;
when Ex : others =>
Ada.Wide_Text_IO.Put (Ada.Characters.Handling.To_Wide_String (
Ada.Exceptions.Exception_Name (Ex)));
Ada.Wide_Text_IO.Put (" is raised (");
Ada.Wide_Text_IO.Put (Ada.Characters.Handling.To_Wide_String (
Ada.Exceptions.Exception_Information (Ex)));
Ada.Wide_Text_IO.Put (")");
Ada.Wide_Text_IO.New_Line;
end ASIS_Application_Driver_1;
|