------------------------------------------------------------------------------
--                                                                          --
--                         GNAT COMPILER COMPONENTS                         --
--                                                                          --
--                              T R E E P R S                               --
--                                                                          --
--                                 S p e c                                  --
--                                                                          --
--          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
--                                                                          --
-- GNAT is free software;  you can  redistribute it  and/or modify it under --
-- terms of the  GNU General Public License as published  by the Free Soft- --
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT 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 GNAT; see file COPYING3.  If not, go to --
-- http://www.gnu.org/licenses for a complete copy of the license.          --
--                                                                          --
-- GNAT was originally developed  by the GNAT team at  New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
--                                                                          --
------------------------------------------------------------------------------

--  This package contains the declaration of the string used by the Tree_Print
--  package. It must be updated whenever the arrangements of the field names
--  in package Sinfo is changed. The utility program XTREEPRS is used to
--  do this update correctly using the template treeprs.adt as input.

with Sinfo; use Sinfo;

package Treeprs is

   --------------------------------
   -- String Data for Node Print --
   --------------------------------

   --  String data for print out. The Pchars array is a long string with the
   --  the entry for each node type consisting of a single blank, followed by
   --  a series of entries, one for each Op or Flag field used for the node.
   --  Each entry has a single character which identifies the field, followed
   --  by the synonym name. The starting location for a given node type is
   --  found from the corresponding entry in the Pchars_Pos_Array.

   --  The following characters identify the field. These are characters which
   --  could never occur in a field name, so they also mark the end of the
   --  previous name.

   --  Note the following definitions do not include Flag0. This will have to
   --  be addressed if we ever need to use Flag0 (it's not currently used).

   subtype Fchar is Character range '#' .. '9';

   F_Field1     : constant Fchar := '#'; -- Character'Val (16#23#)
   F_Field2     : constant Fchar := '$'; -- Character'Val (16#24#)
   F_Field3     : constant Fchar := '%'; -- Character'Val (16#25#)
   F_Field4     : constant Fchar := '&'; -- Character'Val (16#26#)
   F_Field5     : constant Fchar := '''; -- Character'Val (16#27#)
   F_Flag1      : constant Fchar := '('; -- Character'Val (16#28#)
   F_Flag2      : constant Fchar := ')'; -- Character'Val (16#29#)
   F_Flag3      : constant Fchar := '*'; -- Character'Val (16#2A#)
   F_Flag4      : constant Fchar := '+'; -- Character'Val (16#2B#)
   F_Flag5      : constant Fchar := ','; -- Character'Val (16#2C#)
   F_Flag6      : constant Fchar := '-'; -- Character'Val (16#2D#)
   F_Flag7      : constant Fchar := '.'; -- Character'Val (16#2E#)
   F_Flag8      : constant Fchar := '/'; -- Character'Val (16#2F#)
   F_Flag9      : constant Fchar := '0'; -- Character'Val (16#30#)
   F_Flag10     : constant Fchar := '1'; -- Character'Val (16#31#)
   F_Flag11     : constant Fchar := '2'; -- Character'Val (16#32#)
   F_Flag12     : constant Fchar := '3'; -- Character'Val (16#33#)
   F_Flag13     : constant Fchar := '4'; -- Character'Val (16#34#)
   F_Flag14     : constant Fchar := '5'; -- Character'Val (16#35#)
   F_Flag15     : constant Fchar := '6'; -- Character'Val (16#36#)
   F_Flag16     : constant Fchar := '7'; -- Character'Val (16#37#)
   F_Flag17     : constant Fchar := '8'; -- Character'Val (16#38#)
   F_Flag18     : constant Fchar := '9'; -- Character'Val (16#39#)

   --  Note this table does not include entity field and flags whose access
   --  functions are in Einfo (these are handled by the Print_Entity_Info
   --  procedure in Treepr, which uses the routines in Einfo to get the proper
   --  symbolic information). In addition, the following fields are handled by
   --  Treepr, and do not appear in the Pchars array:

   --    Analyzed
   --    Cannot_Be_Constant
   --    Chars
   --    Comes_From_Source
   --    Error_Posted
   --    Etype
   --    Is_Controlling_Actual
   --    Is_Overloaded
   --    Is_Static_Expression
   --    Left_Opnd
   --    Must_Check_Expr
   --    Must_Not_Freeze
   --    No_Overflow_Expr
   --    Paren_Count
   --    Raises_Constraint_Error
   --    Right_Opnd

   Pchars : constant String :=
      --  Unused_At_Start
      "" &
      --  At_Clause
      "#Identifier%Expression" &
      --  Component_Clause
      "#Component_Name$Position%First_Bit&Last_Bit" &
      --  Enumeration_Representation_Clause
      "#Identifier%Array_Aggregate'Next_Rep_Item" &
      --  Mod_Clause
      "%Expression&Pragmas_Before" &
      --  Record_Representation_Clause
      "#Identifier$Mod_Clause%Component_Clauses'Next_Rep_Item" &
      --  Attribute_Definition_Clause
      "$Name%Expression&Entity'Next_Rep_Item+From_At_Mod2Check_Address_Align" &
         "ment4From_Aspect_Specification5Is_Delayed_Aspect9Address_Warning_P" &
         "osted" &
      --  Empty
      "" &
      --  Pragma_Argument_Association
      "%Expression" &
      --  Error
      "" &
      --  Defining_Character_Literal
      "$Next_Entity%Scope" &
      --  Defining_Identifier
      "$Next_Entity%Scope" &
      --  Defining_Operator_Symbol
      "$Next_Entity%Scope" &
      --  Expanded_Name
      "%Prefix$Selector_Name&Entity&Associated_Node2Has_Private_View4Redunda" &
         "nt_Use5Atomic_Sync_Required" &
      --  Identifier
      "&Entity&Associated_Node$Original_Discriminant4Redundant_Use5Atomic_Sy" &
         "nc_Required2Has_Private_View" &
      --  Operator_Symbol
      "%Strval&Entity&Associated_Node2Has_Private_View" &
      --  Character_Literal
      "$Char_Literal_Value&Entity&Associated_Node2Has_Private_View" &
      --  Op_Add
      "" &
      --  Op_Concat
      "4Is_Component_Left_Opnd5Is_Component_Right_Opnd" &
      --  Op_Expon
      "4Is_Power_Of_2_For_Shift" &
      --  Op_Subtract
      "" &
      --  Op_Divide
      "5Treat_Fixed_As_Integer4Do_Division_Check9Rounded_Result" &
      --  Op_Mod
      "5Treat_Fixed_As_Integer4Do_Division_Check" &
      --  Op_Multiply
      "5Treat_Fixed_As_Integer9Rounded_Result" &
      --  Op_Rem
      "5Treat_Fixed_As_Integer4Do_Division_Check" &
      --  Op_And
      "+Do_Length_Check" &
      --  Op_Eq
      "" &
      --  Op_Ge
      "" &
      --  Op_Gt
      "" &
      --  Op_Le
      "" &
      --  Op_Lt
      "" &
      --  Op_Ne
      "" &
      --  Op_Or
      "+Do_Length_Check" &
      --  Op_Xor
      "+Do_Length_Check" &
      --  Op_Rotate_Left
      "+Shift_Count_OK" &
      --  Op_Rotate_Right
      "+Shift_Count_OK" &
      --  Op_Shift_Left
      "+Shift_Count_OK" &
      --  Op_Shift_Right
      "+Shift_Count_OK" &
      --  Op_Shift_Right_Arithmetic
      "+Shift_Count_OK" &
      --  Op_Abs
      "" &
      --  Op_Minus
      "" &
      --  Op_Not
      "" &
      --  Op_Plus
      "" &
      --  Attribute_Reference
      "%Prefix$Attribute_Name#Expressions&Entity&Associated_Node8Do_Overflow" &
         "_Check2Header_Size_Added5Must_Be_Byte_Aligned9Non_Aliased_Prefix4R" &
         "edundant_Use" &
      --  In
      "&Alternatives8No_Minimize_Eliminate" &
      --  Not_In
      "&Alternatives8No_Minimize_Eliminate" &
      --  And_Then
      "#Actions" &
      --  Or_Else
      "#Actions" &
      --  Function_Call
      "$Name%Parameter_Associations&First_Named_Actual#Controlling_Argument2" &
         "Is_Expanded_Build_In_Place_Call4Do_Tag_Check5No_Elaboration_Check9" &
         "ABE_Is_Certain" &
      --  Procedure_Call_Statement
      "$Name%Parameter_Associations&First_Named_Actual#Controlling_Argument4" &
         "Do_Tag_Check5No_Elaboration_Check9ABE_Is_Certain" &
      --  Raise_Constraint_Error
      "#Condition%Reason" &
      --  Raise_Program_Error
      "#Condition%Reason" &
      --  Raise_Storage_Error
      "#Condition%Reason" &
      --  Integer_Literal
      "$Original_Entity%Intval4Print_In_Hex" &
      --  Real_Literal
      "$Original_Entity%Realval&Corresponding_Integer_Value2Is_Machine_Numbe" &
         "r" &
      --  String_Literal
      "%Strval2Has_Wide_Character4Has_Wide_Wide_Character+Is_Folded_In_Parse" &
         "r" &
      --  Explicit_Dereference
      "%Prefix&Actual_Designated_Subtype5Atomic_Sync_Required4Has_Dereferenc" &
         "e_Action" &
      --  Expression_With_Actions
      "#Actions%Expression" &
      --  If_Expression
      "#Expressions$Then_Actions%Else_Actions4Is_Elsif8Do_Overflow_Check" &
      --  Indexed_Component
      "%Prefix#Expressions&Generalized_Indexing5Atomic_Sync_Required" &
      --  Null
      "" &
      --  Qualified_Expression
      "&Subtype_Mark%Expression" &
      --  Quantified_Expression
      "$Iterator_Specification&Loop_Parameter_Specification#Condition6All_Pr" &
         "esent" &
      --  Aggregate
      "#Expressions$Component_Associations8Null_Record_Present%Aggregate_Bou" &
         "nds&Associated_Node9Compile_Time_Known_Aggregate2Expansion_Delayed" &
         "4Has_Self_Reference" &
      --  Allocator
      "%Expression&Subpool_Handle_Name#Storage_Pool$Procedure_To_Call2Null_E" &
         "xclusion_Present4No_Initialization5Is_Static_Coextension8Do_Storag" &
         "e_Check9Is_Dynamic_Coextension" &
      --  Case_Expression
      "%Expression&Alternatives8Do_Overflow_Check" &
      --  Extension_Aggregate
      "%Ancestor_Part&Associated_Node#Expressions$Component_Associations8Nul" &
         "l_Record_Present2Expansion_Delayed4Has_Self_Reference" &
      --  Raise_Expression
      "$Name%Expression4Convert_To_Return_False" &
      --  Range
      "#Low_Bound$High_Bound2Includes_Infinities" &
      --  Reference
      "%Prefix" &
      --  Selected_Component
      "%Prefix$Selector_Name&Associated_Node(Do_Discriminant_Check2Is_In_Dis" &
         "criminant_Check8Is_Prefixed_Call5Atomic_Sync_Required" &
      --  Slice
      "%Prefix&Discrete_Range" &
      --  Type_Conversion
      "&Subtype_Mark%Expression(Do_Discriminant_Check+Do_Length_Check2Float_" &
         "Truncate4Do_Tag_Check5Conversion_OK8Do_Overflow_Check9Rounded_Resu" &
         "lt" &
      --  Unchecked_Expression
      "%Expression" &
      --  Unchecked_Type_Conversion
      "&Subtype_Mark%Expression2Kill_Range_Check8No_Truncation" &
      --  Subtype_Indication
      "&Subtype_Mark%Constraint/Must_Not_Freeze" &
      --  Component_Declaration
      "#Defining_Identifier&Component_Definition%Expression,More_Ids-Prev_Id" &
         "s" &
      --  Entry_Declaration
      "#Defining_Identifier&Discrete_Subtype_Definition%Parameter_Specificat" &
         "ions'Corresponding_Body5Must_Override6Must_Not_Override" &
      --  Expression_Function
      "#Specification%Expression'Corresponding_Spec" &
      --  Formal_Object_Declaration
      "#Defining_Identifier6In_Present8Out_Present2Null_Exclusion_Present&Su" &
         "btype_Mark%Access_Definition'Default_Expression,More_Ids-Prev_Ids" &
      --  Formal_Type_Declaration
      "#Defining_Identifier%Formal_Type_Definition&Discriminant_Specificatio" &
         "ns4Unknown_Discriminants_Present" &
      --  Full_Type_Declaration
      "#Defining_Identifier$Incomplete_View&Discriminant_Specifications%Type" &
         "_Definition2Discr_Check_Funcs_Built" &
      --  Incomplete_Type_Declaration
      "#Defining_Identifier&Discriminant_Specifications'Premature_Use4Unknow" &
         "n_Discriminants_Present6Tagged_Present" &
      --  Iterator_Specification
      "#Defining_Identifier$Name6Reverse_Present7Of_Present'Subtype_Indicati" &
         "on" &
      --  Loop_Parameter_Specification
      "#Defining_Identifier6Reverse_Present&Discrete_Subtype_Definition" &
      --  Object_Declaration
      "#Defining_Identifier+Aliased_Present8Constant_Present2Null_Exclusion_" &
         "Present&Object_Definition%Expression$Handler_List_Entry'Correspond" &
         "ing_Generic_Association,More_Ids-Prev_Ids4No_Initialization6Assign" &
         "ment_OK/Exception_Junk7Is_Subprogram_Descriptor5Has_Init_Expressio" &
         "n9Suppress_Assignment_Checks" &
      --  Protected_Type_Declaration
      "#Defining_Identifier&Discriminant_Specifications$Interface_List%Prote" &
         "cted_Definition'Corresponding_Body" &
      --  Private_Extension_Declaration
      "#Defining_Identifier%Uninitialized_Variable&Discriminant_Specificatio" &
         "ns4Unknown_Discriminants_Present+Abstract_Present8Limited_Present." &
         "Synchronized_Present'Subtype_Indication$Interface_List" &
      --  Private_Type_Declaration
      "#Defining_Identifier&Discriminant_Specifications4Unknown_Discriminant" &
         "s_Present+Abstract_Present6Tagged_Present8Limited_Present" &
      --  Subtype_Declaration
      "#Defining_Identifier2Null_Exclusion_Present'Subtype_Indication&Generi" &
         "c_Parent_Type/Exception_Junk3Has_Dynamic_Range_Check" &
      --  Function_Specification
      "#Defining_Unit_Name%Parameter_Specifications2Null_Exclusion_Present&R" &
         "esult_Definition'Generic_Parent5Must_Override6Must_Not_Override" &
      --  Procedure_Specification
      "#Defining_Unit_Name%Parameter_Specifications'Generic_Parent4Null_Pres" &
         "ent5Must_Override6Must_Not_Override" &
      --  Access_Function_Definition
      "2Null_Exclusion_Present5Null_Exclusion_In_Return_Present-Protected_Pr" &
         "esent%Parameter_Specifications&Result_Definition" &
      --  Access_Procedure_Definition
      "2Null_Exclusion_Present-Protected_Present%Parameter_Specifications" &
      --  Task_Type_Declaration
      "#Defining_Identifier&Discriminant_Specifications$Interface_List%Task_" &
         "Definition'Corresponding_Body" &
      --  Package_Body_Stub
      "#Defining_Identifier$Corresponding_Spec_Of_Stub&Library_Unit'Correspo" &
         "nding_Body" &
      --  Protected_Body_Stub
      "#Defining_Identifier$Corresponding_Spec_Of_Stub&Library_Unit'Correspo" &
         "nding_Body" &
      --  Subprogram_Body_Stub
      "#Specification$Corresponding_Spec_Of_Stub&Library_Unit'Corresponding_" &
         "Body" &
      --  Task_Body_Stub
      "#Defining_Identifier$Corresponding_Spec_Of_Stub&Library_Unit'Correspo" &
         "nding_Body" &
      --  Function_Instantiation
      "#Defining_Unit_Name$Name%Generic_Associations&Parent_Spec'Instance_Sp" &
         "ec5Must_Override6Must_Not_Override9ABE_Is_Certain" &
      --  Procedure_Instantiation
      "#Defining_Unit_Name$Name&Parent_Spec%Generic_Associations'Instance_Sp" &
         "ec5Must_Override6Must_Not_Override9ABE_Is_Certain" &
      --  Package_Instantiation
      "#Defining_Unit_Name$Name%Generic_Associations&Parent_Spec'Instance_Sp" &
         "ec9ABE_Is_Certain" &
      --  Package_Body
      "#Defining_Unit_Name$Declarations&Handled_Statement_Sequence'Correspon" &
         "ding_Spec4Was_Originally_Stub" &
      --  Subprogram_Body
      "#Specification$Declarations&Handled_Statement_Sequence%Activation_Cha" &
         "in_Entity'Corresponding_Spec+Acts_As_Spec6Bad_Is_Detected8Do_Stora" &
         "ge_Check.Is_Protected_Subprogram_Body/Is_Entry_Barrier_Function,Is" &
         "_Task_Master4Was_Originally_Stub0Has_Relative_Deadline_Pragma" &
      --  Protected_Body
      "#Defining_Identifier$Declarations&End_Label'Corresponding_Spec4Was_Or" &
         "iginally_Stub" &
      --  Task_Body
      "#Defining_Identifier$Declarations&Handled_Statement_Sequence,Is_Task_" &
         "Master%Activation_Chain_Entity'Corresponding_Spec4Was_Originally_S" &
         "tub" &
      --  Implicit_Label_Declaration
      "#Defining_Identifier$Label_Construct" &
      --  Package_Declaration
      "#Specification'Corresponding_Body&Parent_Spec%Activation_Chain_Entity" &
      --  Single_Task_Declaration
      "#Defining_Identifier$Interface_List%Task_Definition" &
      --  Subprogram_Declaration
      "#Specification%Body_To_Inline'Corresponding_Body&Parent_Spec" &
      --  Use_Package_Clause
      "$Names%Next_Use_Clause&Hidden_By_Use_Clause" &
      --  Generic_Package_Declaration
      "#Specification'Corresponding_Body$Generic_Formal_Declarations&Parent_" &
         "Spec%Activation_Chain_Entity" &
      --  Generic_Subprogram_Declaration
      "#Specification'Corresponding_Body$Generic_Formal_Declarations&Parent_" &
         "Spec" &
      --  Constrained_Array_Definition
      "$Discrete_Subtype_Definitions&Component_Definition" &
      --  Unconstrained_Array_Definition
      "$Subtype_Marks&Component_Definition" &
      --  Exception_Renaming_Declaration
      "#Defining_Identifier$Name" &
      --  Object_Renaming_Declaration
      "#Defining_Identifier2Null_Exclusion_Present&Subtype_Mark%Access_Defin" &
         "ition$Name'Corresponding_Generic_Association" &
      --  Package_Renaming_Declaration
      "#Defining_Unit_Name$Name&Parent_Spec" &
      --  Subprogram_Renaming_Declaration
      "#Specification$Name&Parent_Spec'Corresponding_Spec%Corresponding_Form" &
         "al_Spec-From_Default" &
      --  Generic_Function_Renaming_Declaration
      "#Defining_Unit_Name$Name&Parent_Spec" &
      --  Generic_Package_Renaming_Declaration
      "#Defining_Unit_Name$Name&Parent_Spec" &
      --  Generic_Procedure_Renaming_Declaration
      "#Defining_Unit_Name$Name&Parent_Spec" &
      --  Abort_Statement
      "$Names" &
      --  Accept_Statement
      "#Entry_Direct_Name'Entry_Index%Parameter_Specifications&Handled_State" &
         "ment_Sequence$Declarations" &
      --  Assignment_Statement
      "$Name%Expression(Do_Discriminant_Check4Do_Tag_Check+Do_Length_Check,F" &
         "orwards_OK-Backwards_OK.No_Ctrl_Actions5Componentwise_Assignment9S" &
         "uppress_Assignment_Checks" &
      --  Asynchronous_Select
      "#Triggering_Alternative$Abortable_Part" &
      --  Block_Statement
      "#Identifier$Declarations&Handled_Statement_Sequence'Cleanup_Actions,I" &
         "s_Task_Master%Activation_Chain_Entity6Has_Created_Identifier-Is_Ta" &
         "sk_Allocation_Block.Is_Asynchronous_Call_Block/Exception_Junk0Is_F" &
         "inalization_Wrapper" &
      --  Case_Statement
      "%Expression&Alternatives'End_Span(From_Conditional_Expression" &
      --  Code_Statement
      "%Expression" &
      --  Compound_Statement
      "#Actions" &
      --  Conditional_Entry_Call
      "#Entry_Call_Alternative&Else_Statements" &
      --  Delay_Relative_Statement
      "%Expression" &
      --  Delay_Until_Statement
      "%Expression" &
      --  Entry_Call_Statement
      "$Name%Parameter_Associations&First_Named_Actual" &
      --  Free_Statement
      "%Expression#Storage_Pool$Procedure_To_Call&Actual_Designated_Subtype" &
      --  Goto_Statement
      "$Name/Exception_Junk" &
      --  Loop_Statement
      "#Identifier$Iteration_Scheme%Statements&End_Label6Has_Created_Identif" &
         "ier7Is_Null_Loop8Suppress_Loop_Warnings" &
      --  Null_Statement
      "" &
      --  Raise_Statement
      "$Name%Expression+From_At_End" &
      --  Requeue_Statement
      "$Name6Abort_Present" &
      --  Simple_Return_Statement
      "'Return_Statement_Entity%Expression#Storage_Pool$Procedure_To_Call4Do" &
         "_Tag_Check,By_Ref9Comes_From_Extended_Return_Statement" &
      --  Extended_Return_Statement
      "'Return_Statement_Entity%Return_Object_Declarations&Handled_Statement" &
         "_Sequence#Storage_Pool$Procedure_To_Call4Do_Tag_Check,By_Ref" &
      --  Selective_Accept
      "#Select_Alternatives&Else_Statements" &
      --  Timed_Entry_Call
      "#Entry_Call_Alternative&Delay_Alternative" &
      --  Exit_Statement
      "$Name#Condition%Next_Exit_Statement" &
      --  If_Statement
      "#Condition$Then_Statements%Elsif_Parts&Else_Statements'End_Span(From_" &
         "Conditional_Expression" &
      --  Accept_Alternative
      "$Accept_Statement#Condition%Statements&Pragmas_Before'Accept_Handler_" &
         "Records" &
      --  Delay_Alternative
      "$Delay_Statement#Condition%Statements&Pragmas_Before" &
      --  Elsif_Part
      "#Condition$Then_Statements%Condition_Actions" &
      --  Entry_Body_Formal_Part
      "&Entry_Index_Specification%Parameter_Specifications#Condition" &
      --  Iteration_Scheme
      "#Condition%Condition_Actions$Iterator_Specification&Loop_Parameter_Sp" &
         "ecification" &
      --  Terminate_Alternative
      "#Condition&Pragmas_Before'Pragmas_After" &
      --  Formal_Abstract_Subprogram_Declaration
      "#Specification$Default_Name6Box_Present" &
      --  Formal_Concrete_Subprogram_Declaration
      "#Specification$Default_Name6Box_Present" &
      --  Push_Constraint_Error_Label
      "'Exception_Label" &
      --  Push_Program_Error_Label
      "'Exception_Label" &
      --  Push_Storage_Error_Label
      "'Exception_Label" &
      --  Pop_Constraint_Error_Label
      "" &
      --  Pop_Program_Error_Label
      "" &
      --  Pop_Storage_Error_Label
      "" &
      --  SCIL_Dispatch_Table_Tag_Init
      "&SCIL_Entity" &
      --  SCIL_Dispatching_Call
      "$SCIL_Target_Prim&SCIL_Entity'SCIL_Controlling_Tag" &
      --  SCIL_Membership_Test
      "'SCIL_Tag_Value&SCIL_Entity" &
      --  Abortable_Part
      "%Statements" &
      --  Abstract_Subprogram_Declaration
      "#Specification" &
      --  Access_Definition
      "2Null_Exclusion_Present6All_Present8Constant_Present&Subtype_Mark%Acc" &
         "ess_To_Subprogram_Definition" &
      --  Access_To_Object_Definition
      "6All_Present2Null_Exclusion_Present7Null_Excluding_Subtype'Subtype_In" &
         "dication8Constant_Present" &
      --  Aspect_Specification
      "#Identifier$Aspect_Rep_Item%Expression&Entity'Next_Rep_Item-Class_Pre" &
         "sent0Is_Ignored2Is_Checked5Is_Delayed_Aspect6Is_Disabled7Is_Boolea" &
         "n_Aspect8Split_PPC" &
      --  Case_Expression_Alternative
      "#Actions&Discrete_Choices%Expression6Has_SP_Choice" &
      --  Case_Statement_Alternative
      "&Discrete_Choices%Statements6Has_SP_Choice" &
      --  Compilation_Unit
      "&Library_Unit#Context_Items6Private_Present$Unit'Aux_Decls_Node8Has_N" &
         "o_Elaboration_Code4Body_Required+Acts_As_Spec7Context_Pending%Firs" &
         "t_Inlined_Subprogram5Has_Pragma_Suppress_All" &
      --  Compilation_Unit_Aux
      "$Declarations#Actions'Pragmas_After&Config_Pragmas%Default_Storage_Po" &
         "ol" &
      --  Component_Association
      "#Choices$Loop_Actions%Expression6Box_Present4Inherited_Discriminant" &
      --  Component_Definition
      "+Aliased_Present2Null_Exclusion_Present'Subtype_Indication%Access_Def" &
         "inition" &
      --  Component_List
      "%Component_Items&Variant_Part4Null_Present" &
      --  Contract
      "#Pre_Post_Conditions$Contract_Test_Cases%Classifications" &
      --  Derived_Type_Definition
      "+Abstract_Present2Null_Exclusion_Present'Subtype_Indication%Record_Ex" &
         "tension_Part8Limited_Present,Task_Present-Protected_Present.Synchr" &
         "onized_Present$Interface_List7Interface_Present" &
      --  Decimal_Fixed_Point_Definition
      "%Delta_Expression$Digits_Expression&Real_Range_Specification" &
      --  Defining_Program_Unit_Name
      "$Name#Defining_Identifier" &
      --  Delta_Constraint
      "%Delta_Expression&Range_Constraint" &
      --  Designator
      "$Name#Identifier" &
      --  Digits_Constraint
      "$Digits_Expression&Range_Constraint" &
      --  Discriminant_Association
      "#Selector_Names%Expression" &
      --  Discriminant_Specification
      "#Defining_Identifier2Null_Exclusion_Present'Discriminant_Type%Express" &
         "ion,More_Ids-Prev_Ids" &
      --  Enumeration_Type_Definition
      "#Literals&End_Label" &
      --  Entry_Body
      "#Defining_Identifier'Entry_Body_Formal_Part$Declarations&Handled_Stat" &
         "ement_Sequence%Activation_Chain_Entity" &
      --  Entry_Call_Alternative
      "#Entry_Call_Statement%Statements&Pragmas_Before" &
      --  Entry_Index_Specification
      "#Defining_Identifier&Discrete_Subtype_Definition" &
      --  Exception_Declaration
      "#Defining_Identifier%Expression$Renaming_Exception,More_Ids-Prev_Ids" &
      --  Exception_Handler
      "$Choice_Parameter&Exception_Choices%Statements'Exception_Label#Local_" &
         "Raise_Statements.Local_Raise_Not_OK/Has_Local_Raise" &
      --  Floating_Point_Definition
      "$Digits_Expression&Real_Range_Specification" &
      --  Formal_Decimal_Fixed_Point_Definition
      "" &
      --  Formal_Derived_Type_Definition
      "&Subtype_Mark6Private_Present+Abstract_Present8Limited_Present.Synchr" &
         "onized_Present$Interface_List" &
      --  Formal_Discrete_Type_Definition
      "" &
      --  Formal_Floating_Point_Definition
      "" &
      --  Formal_Modular_Type_Definition
      "" &
      --  Formal_Ordinary_Fixed_Point_Definition
      "" &
      --  Formal_Package_Declaration
      "#Defining_Identifier$Name%Generic_Associations6Box_Present'Instance_S" &
         "pec9ABE_Is_Certain" &
      --  Formal_Private_Type_Definition
      "%Uninitialized_Variable+Abstract_Present6Tagged_Present8Limited_Prese" &
         "nt" &
      --  Formal_Incomplete_Type_Definition
      "6Tagged_Present" &
      --  Formal_Signed_Integer_Type_Definition
      "" &
      --  Freeze_Entity
      "&Entity$Access_Types_To_Process%TSS_Elist#Actions'First_Subtype_Link" &
      --  Freeze_Generic_Entity
      "&Entity" &
      --  Generic_Association
      "$Selector_Name#Explicit_Generic_Actual_Parameter6Box_Present" &
      --  Handled_Sequence_Of_Statements
      "%Statements&End_Label'Exception_Handlers#At_End_Proc$First_Real_State" &
         "ment" &
      --  Index_Or_Discriminant_Constraint
      "#Constraints" &
      --  Itype_Reference
      "#Itype" &
      --  Label
      "#Identifier/Exception_Junk" &
      --  Modular_Type_Definition
      "%Expression" &
      --  Number_Declaration
      "#Defining_Identifier%Expression,More_Ids-Prev_Ids" &
      --  Ordinary_Fixed_Point_Definition
      "%Delta_Expression&Real_Range_Specification" &
      --  Others_Choice
      "#Others_Discrete_Choices2All_Others" &
      --  Package_Specification
      "#Defining_Unit_Name$Visible_Declarations%Private_Declarations&End_Lab" &
         "el'Generic_Parent9Limited_View_Installed" &
      --  Parameter_Association
      "$Selector_Name%Explicit_Actual_Parameter&Next_Named_Actual4Is_Accessi" &
         "bility_Actual" &
      --  Parameter_Specification
      "#Defining_Identifier+Aliased_Present6In_Present8Out_Present2Null_Excl" &
         "usion_Present$Parameter_Type%Expression4Do_Accessibility_Check,Mor" &
         "e_Ids-Prev_Ids'Default_Expression" &
      --  Pragma
      "#Next_Pragma$Pragma_Argument_Associations%Corresponding_Aspect&Pragma" &
         "_Identifier'Next_Rep_Item-Class_Present4From_Aspect_Specification7" &
         "Import_Interface_Present2Is_Checked5Is_Delayed_Aspect6Is_Disabled0" &
         "Is_Ignored+Is_Inherited8Split_PPC.Uneval_Old_Accept9Uneval_Old_War" &
         "n" &
      --  Protected_Definition
      "$Visible_Declarations%Private_Declarations&End_Label" &
      --  Range_Constraint
      "&Range_Expression" &
      --  Real_Range_Specification
      "#Low_Bound$High_Bound" &
      --  Record_Definition
      "&End_Label+Abstract_Present6Tagged_Present8Limited_Present#Component_" &
         "List4Null_Present,Task_Present-Protected_Present.Synchronized_Pres" &
         "ent7Interface_Present$Interface_List" &
      --  Signed_Integer_Type_Definition
      "#Low_Bound$High_Bound" &
      --  Single_Protected_Declaration
      "#Defining_Identifier$Interface_List%Protected_Definition" &
      --  Subunit
      "$Name#Proper_Body%Corresponding_Stub" &
      --  Task_Definition
      "$Visible_Declarations%Private_Declarations&End_Label,Has_Storage_Size" &
         "_Pragma0Has_Relative_Deadline_Pragma" &
      --  Triggering_Alternative
      "#Triggering_Statement%Statements&Pragmas_Before" &
      --  Use_Type_Clause
      "$Subtype_Marks%Next_Use_Clause&Hidden_By_Use_Clause'Used_Operations6A" &
         "ll_Present" &
      --  Validate_Unchecked_Conversion
      "#Source_Type$Target_Type" &
      --  Variant
      "&Discrete_Choices#Component_List$Enclosing_Variant%Present_Expr'Dchec" &
         "k_Function6Has_SP_Choice" &
      --  Variant_Part
      "$Name#Variants" &
      --  With_Clause
      "#Withed_Body$Name%Next_Implicit_With&Library_Unit'Corresponding_Spec," &
         "First_Name-Last_Name4Context_Installed+Elaborate_Present5Elaborate" &
         "_All_Present0Elaborate_All_Desirable2Elaborate_Desirable6Private_P" &
         "resent7Implicit_With3Implicit_With_From_Instantiation8Limited_Pres" &
         "ent9Limited_View_Installed.Unreferenced_In_Spec/No_Entities_Ref_In" &
         "_Spec" &
      --  Unused_At_End
      "";

   type Pchar_Pos_Array is array (Node_Kind) of Positive;
   Pchar_Pos : constant Pchar_Pos_Array := Pchar_Pos_Array'(
      N_Unused_At_Start                        => 1,
      N_At_Clause                              => 1,
      N_Component_Clause                       => 23,
      N_Enumeration_Representation_Clause      => 66,
      N_Mod_Clause                             => 107,
      N_Record_Representation_Clause           => 133,
      N_Attribute_Definition_Clause            => 187,
      N_Empty                                  => 327,
      N_Pragma_Argument_Association            => 327,
      N_Error                                  => 338,
      N_Defining_Character_Literal             => 338,
      N_Defining_Identifier                    => 356,
      N_Defining_Operator_Symbol               => 374,
      N_Expanded_Name                          => 392,
      N_Identifier                             => 488,
      N_Operator_Symbol                        => 585,
      N_Character_Literal                      => 632,
      N_Op_Add                                 => 691,
      N_Op_Concat                              => 691,
      N_Op_Expon                               => 738,
      N_Op_Subtract                            => 762,
      N_Op_Divide                              => 762,
      N_Op_Mod                                 => 818,
      N_Op_Multiply                            => 859,
      N_Op_Rem                                 => 897,
      N_Op_And                                 => 938,
      N_Op_Eq                                  => 954,
      N_Op_Ge                                  => 954,
      N_Op_Gt                                  => 954,
      N_Op_Le                                  => 954,
      N_Op_Lt                                  => 954,
      N_Op_Ne                                  => 954,
      N_Op_Or                                  => 954,
      N_Op_Xor                                 => 970,
      N_Op_Rotate_Left                         => 986,
      N_Op_Rotate_Right                        => 1001,
      N_Op_Shift_Left                          => 1016,
      N_Op_Shift_Right                         => 1031,
      N_Op_Shift_Right_Arithmetic              => 1046,
      N_Op_Abs                                 => 1061,
      N_Op_Minus                               => 1061,
      N_Op_Not                                 => 1061,
      N_Op_Plus                                => 1061,
      N_Attribute_Reference                    => 1061,
      N_In                                     => 1208,
      N_Not_In                                 => 1243,
      N_And_Then                               => 1278,
      N_Or_Else                                => 1286,
      N_Function_Call                          => 1294,
      N_Procedure_Call_Statement               => 1443,
      N_Raise_Constraint_Error                 => 1560,
      N_Raise_Program_Error                    => 1577,
      N_Raise_Storage_Error                    => 1594,
      N_Integer_Literal                        => 1611,
      N_Real_Literal                           => 1647,
      N_String_Literal                         => 1717,
      N_Explicit_Dereference                   => 1787,
      N_Expression_With_Actions                => 1864,
      N_If_Expression                          => 1883,
      N_Indexed_Component                      => 1948,
      N_Null                                   => 2009,
      N_Qualified_Expression                   => 2009,
      N_Quantified_Expression                  => 2033,
      N_Aggregate                              => 2107,
      N_Allocator                              => 2261,
      N_Case_Expression                        => 2426,
      N_Extension_Aggregate                    => 2468,
      N_Raise_Expression                       => 2590,
      N_Range                                  => 2630,
      N_Reference                              => 2671,
      N_Selected_Component                     => 2678,
      N_Slice                                  => 2800,
      N_Type_Conversion                        => 2822,
      N_Unchecked_Expression                   => 2959,
      N_Unchecked_Type_Conversion              => 2970,
      N_Subtype_Indication                     => 3025,
      N_Component_Declaration                  => 3065,
      N_Entry_Declaration                      => 3135,
      N_Expression_Function                    => 3259,
      N_Formal_Object_Declaration              => 3303,
      N_Formal_Type_Declaration                => 3437,
      N_Full_Type_Declaration                  => 3538,
      N_Incomplete_Type_Declaration            => 3642,
      N_Iterator_Specification                 => 3749,
      N_Loop_Parameter_Specification           => 3820,
      N_Object_Declaration                     => 3884,
      N_Protected_Type_Declaration             => 4179,
      N_Private_Extension_Declaration          => 4282,
      N_Private_Type_Declaration               => 4471,
      N_Subtype_Declaration                    => 4597,
      N_Function_Specification                 => 4718,
      N_Procedure_Specification                => 4850,
      N_Access_Function_Definition             => 4954,
      N_Access_Procedure_Definition            => 5071,
      N_Task_Type_Declaration                  => 5137,
      N_Package_Body_Stub                      => 5235,
      N_Protected_Body_Stub                    => 5314,
      N_Subprogram_Body_Stub                   => 5393,
      N_Task_Body_Stub                         => 5466,
      N_Function_Instantiation                 => 5545,
      N_Procedure_Instantiation                => 5663,
      N_Package_Instantiation                  => 5781,
      N_Package_Body                           => 5867,
      N_Subprogram_Body                        => 5965,
      N_Protected_Body                         => 6227,
      N_Task_Body                              => 6309,
      N_Implicit_Label_Declaration             => 6447,
      N_Package_Declaration                    => 6483,
      N_Single_Task_Declaration                => 6552,
      N_Subprogram_Declaration                 => 6603,
      N_Use_Package_Clause                     => 6663,
      N_Generic_Package_Declaration            => 6706,
      N_Generic_Subprogram_Declaration         => 6803,
      N_Constrained_Array_Definition           => 6876,
      N_Unconstrained_Array_Definition         => 6926,
      N_Exception_Renaming_Declaration         => 6961,
      N_Object_Renaming_Declaration            => 6986,
      N_Package_Renaming_Declaration           => 7099,
      N_Subprogram_Renaming_Declaration        => 7135,
      N_Generic_Function_Renaming_Declaration  => 7224,
      N_Generic_Package_Renaming_Declaration   => 7260,
      N_Generic_Procedure_Renaming_Declaration => 7296,
      N_Abort_Statement                        => 7332,
      N_Accept_Statement                       => 7338,
      N_Assignment_Statement                   => 7433,
      N_Asynchronous_Select                    => 7593,
      N_Block_Statement                        => 7631,
      N_Case_Statement                         => 7851,
      N_Code_Statement                         => 7912,
      N_Compound_Statement                     => 7923,
      N_Conditional_Entry_Call                 => 7931,
      N_Delay_Relative_Statement               => 7970,
      N_Delay_Until_Statement                  => 7981,
      N_Entry_Call_Statement                   => 7992,
      N_Free_Statement                         => 8039,
      N_Goto_Statement                         => 8107,
      N_Loop_Statement                         => 8127,
      N_Null_Statement                         => 8235,
      N_Raise_Statement                        => 8235,
      N_Requeue_Statement                      => 8263,
      N_Simple_Return_Statement                => 8282,
      N_Extended_Return_Statement              => 8405,
      N_Selective_Accept                       => 8534,
      N_Timed_Entry_Call                       => 8570,
      N_Exit_Statement                         => 8611,
      N_If_Statement                           => 8646,
      N_Accept_Alternative                     => 8737,
      N_Delay_Alternative                      => 8813,
      N_Elsif_Part                             => 8865,
      N_Entry_Body_Formal_Part                 => 8909,
      N_Iteration_Scheme                       => 8970,
      N_Terminate_Alternative                  => 9050,
      N_Formal_Abstract_Subprogram_Declaration => 9089,
      N_Formal_Concrete_Subprogram_Declaration => 9128,
      N_Push_Constraint_Error_Label            => 9167,
      N_Push_Program_Error_Label               => 9183,
      N_Push_Storage_Error_Label               => 9199,
      N_Pop_Constraint_Error_Label             => 9215,
      N_Pop_Program_Error_Label                => 9215,
      N_Pop_Storage_Error_Label                => 9215,
      N_SCIL_Dispatch_Table_Tag_Init           => 9215,
      N_SCIL_Dispatching_Call                  => 9227,
      N_SCIL_Membership_Test                   => 9277,
      N_Abortable_Part                         => 9304,
      N_Abstract_Subprogram_Declaration        => 9315,
      N_Access_Definition                      => 9329,
      N_Access_To_Object_Definition            => 9426,
      N_Aspect_Specification                   => 9520,
      N_Case_Expression_Alternative            => 9673,
      N_Case_Statement_Alternative             => 9723,
      N_Compilation_Unit                       => 9765,
      N_Compilation_Unit_Aux                   => 9944,
      N_Component_Association                  => 10015,
      N_Component_Definition                   => 10082,
      N_Component_List                         => 10158,
      N_Contract                               => 10200,
      N_Derived_Type_Definition                => 10256,
      N_Decimal_Fixed_Point_Definition         => 10438,
      N_Defining_Program_Unit_Name             => 10498,
      N_Delta_Constraint                       => 10523,
      N_Designator                             => 10557,
      N_Digits_Constraint                      => 10573,
      N_Discriminant_Association               => 10608,
      N_Discriminant_Specification             => 10634,
      N_Enumeration_Type_Definition            => 10724,
      N_Entry_Body                             => 10743,
      N_Entry_Call_Alternative                 => 10850,
      N_Entry_Index_Specification              => 10897,
      N_Exception_Declaration                  => 10945,
      N_Exception_Handler                      => 11013,
      N_Floating_Point_Definition              => 11133,
      N_Formal_Decimal_Fixed_Point_Definition  => 11176,
      N_Formal_Derived_Type_Definition         => 11176,
      N_Formal_Discrete_Type_Definition        => 11274,
      N_Formal_Floating_Point_Definition       => 11274,
      N_Formal_Modular_Type_Definition         => 11274,
      N_Formal_Ordinary_Fixed_Point_Definition => 11274,
      N_Formal_Package_Declaration             => 11274,
      N_Formal_Private_Type_Definition         => 11361,
      N_Formal_Incomplete_Type_Definition      => 11432,
      N_Formal_Signed_Integer_Type_Definition  => 11447,
      N_Freeze_Entity                          => 11447,
      N_Freeze_Generic_Entity                  => 11515,
      N_Generic_Association                    => 11522,
      N_Handled_Sequence_Of_Statements         => 11582,
      N_Index_Or_Discriminant_Constraint       => 11655,
      N_Itype_Reference                        => 11667,
      N_Label                                  => 11673,
      N_Modular_Type_Definition                => 11699,
      N_Number_Declaration                     => 11710,
      N_Ordinary_Fixed_Point_Definition        => 11759,
      N_Others_Choice                          => 11801,
      N_Package_Specification                  => 11836,
      N_Parameter_Association                  => 11945,
      N_Parameter_Specification                => 12027,
      N_Pragma                                 => 12195,
      N_Protected_Definition                   => 12463,
      N_Range_Constraint                       => 12515,
      N_Real_Range_Specification               => 12532,
      N_Record_Definition                      => 12553,
      N_Signed_Integer_Type_Definition         => 12724,
      N_Single_Protected_Declaration           => 12745,
      N_Subunit                                => 12801,
      N_Task_Definition                        => 12837,
      N_Triggering_Alternative                 => 12942,
      N_Use_Type_Clause                        => 12989,
      N_Validate_Unchecked_Conversion          => 13068,
      N_Variant                                => 13092,
      N_Variant_Part                           => 13185,
      N_With_Clause                            => 13199,
      N_Unused_At_End                          => 13537);

end Treeprs;
