File : treepr.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT COMPILER COMPONENTS                         --
   4 --                                                                          --
   5 --                               T R E E P R                                --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  10 --                                                                          --
  11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  12 -- terms of the  GNU General Public License as published  by the Free Soft- --
  13 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  16 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
  17 -- for  more details.  You should have  received  a copy of the GNU General --
  18 -- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
  19 -- http://www.gnu.org/licenses for a complete copy of the license.          --
  20 --                                                                          --
  21 -- GNAT was originally developed  by the GNAT team at  New York University. --
  22 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  23 --                                                                          --
  24 ------------------------------------------------------------------------------
  25 
  26 with Types; use Types;
  27 package Treepr is
  28 
  29 --  This package provides printing routines for the abstract syntax tree
  30 --  These routines are intended only for debugging use.
  31 
  32    procedure Tree_Dump;
  33    --  This routine is called from the GNAT main program to dump trees as
  34    --  requested by debug options (including tree of Standard if requested).
  35 
  36    procedure Print_Tree_Node (N : Node_Id; Label : String := "");
  37    --  Prints a single tree node, without printing descendants. The Label
  38    --  string is used to preface each line of the printed output.
  39 
  40    procedure Print_Node_Briefly (N : Node_Id);
  41    --  Terse version of Print_Tree_Node
  42 
  43    procedure Print_Tree_List (L : List_Id);
  44    --  Prints a single node list, without printing the descendants of any
  45    --  of the nodes in the list
  46 
  47    procedure Print_Tree_Elist (E : Elist_Id);
  48    --  Prints a single node list, without printing the descendants of any
  49    --  of the nodes in the list
  50 
  51    procedure Print_Node_Subtree (N : Node_Id);
  52    --  Prints the subtree routed at a specified tree node, including all
  53    --  referenced descendants.
  54 
  55    procedure Print_List_Subtree (L : List_Id);
  56    --  Prints the subtree consisting of the given node list and all its
  57    --  referenced descendants.
  58 
  59    procedure Print_Elist_Subtree (E : Elist_Id);
  60    --  Prints the subtree consisting of the given element list and all its
  61    --  referenced descendants.
  62 
  63    --  The following debugging procedures are intended to be called from gdb.
  64    --  Note that in several cases there are synonyms which represent historical
  65    --  development, and we keep them because some people are used to them!
  66 
  67    function p   (N : Union_Id) return Node_Or_Entity_Id;
  68    function par (N : Union_Id) return Node_Or_Entity_Id;
  69    pragma Export (Ada, p);
  70    pragma Export (Ada, par);
  71    --  Return parent of a list or node (depending on the value of N). If N
  72    --  is neither a list nor a node id, then prints a message to that effect
  73    --  and returns Empty.
  74 
  75    procedure pn (N : Union_Id);
  76    procedure pp (N : Union_Id);
  77    procedure pe (N : Union_Id);
  78    pragma Export (Ada, pn);
  79    pragma Export (Ada, pp);
  80    pragma Export (Ada, pe);
  81    --  Print a node, node list, uint, or anything else that falls under
  82    --  the definition of Union_Id. Historically this was only for printing
  83    --  nodes, hence the name.
  84 
  85    procedure pt  (N : Union_Id);
  86    procedure ppp (N : Union_Id);
  87    pragma Export (Ada, pt);
  88    pragma Export (Ada, ppp);
  89    --  Same as pn/pp, except prints subtrees. For Nodes, it is exactly the same
  90    --  as Print_Node_Subtree. For Elists it is the same as Print_Elist_Subtree.
  91    --  For Lists, it is the same as Print_Tree_List. If given anything other
  92    --  than a Node, List, or Elist, same effect as pn.
  93 
  94    procedure pl (L : Int);
  95    pragma Export (Ada, pl);
  96    --  Same as Print_Tree_List, except that you can use e.g. 66 instead of
  97    --  -99999966. In other words for the positive case we fill out to 8 digits
  98    --  on the left and add a minus sign. This just saves some typing in the
  99    --  debugger.
 100 
 101 end Treepr;