home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / treeprs.ads < prev    next >
Text File  |  1996-09-28  |  35KB  |  769 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                              T R E E P R S                               --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                Generated by xtreeprs revision 1.27 using                 --
  10. --                         sinfo.ads revision 1.254                          --
  11. --                        treeprs.adt revision 1.14                          --
  12. --                                                                          --
  13. --           Copyright (c) 1992,1993,1994 NYU, All Rights Reserved          --
  14. --                                                                          --
  15. -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  16. -- terms of the  GNU General Public License as published  by the Free Soft- --
  17. -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
  18. -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  19. -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  20. -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
  21. -- for  more details.  You should have  received  a copy of the GNU General --
  22. -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
  23. -- to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. --
  24. --                                                                          --
  25. ------------------------------------------------------------------------------
  26.  
  27.  
  28. --  This package contains the declaration of the string used by the Tree_Print
  29. --  package. It must be updated whenever the arrangements of the field names
  30. --  in package Sinfo is changed. The utility program XTREEPRS is used to
  31. --  do this update correctly using the template treeprs.adt as input.
  32.  
  33. with Sinfo; use Sinfo;
  34.  
  35. package Treeprs is
  36.  
  37.    --------------------------------
  38.    -- String Data for Node Print --
  39.    --------------------------------
  40.  
  41.    --  String data for print out. The Pchars array is a long string with the
  42.    --  the entry for each node type consisting of a single blank, followed by
  43.    --  a series of entries, one for each Op or Flag field used for the node.
  44.    --  Each entry has a single character which identifies the field, followed
  45.    --  by the synonym name. The starting location for a given node type is
  46.    --  found from the corresponding entry in the Pchars_Pos_Array.
  47.  
  48.    --  The following characters identify the field. These are characters
  49.    --  which  could never occur in a field name, so they also mark the
  50.    --  end of the previous name.
  51.  
  52.    subtype Fchar is Character range '#' .. '9';
  53.  
  54.    F_Field1     : constant Fchar := '#'; -- Character'Val (16#23#)
  55.    F_Field2     : constant Fchar := '$'; -- Character'Val (16#24#)
  56.    F_Field3     : constant Fchar := '%'; -- Character'Val (16#25#)
  57.    F_Field4     : constant Fchar := '&'; -- Character'Val (16#26#)
  58.    F_Field5     : constant Fchar := '''; -- Character'Val (16#27#)
  59.    F_Flag1      : constant Fchar := '('; -- Character'Val (16#28#)
  60.    F_Flag2      : constant Fchar := ')'; -- Character'Val (16#29#)
  61.    F_Flag3      : constant Fchar := '*'; -- Character'Val (16#2A#)
  62.    F_Flag4      : constant Fchar := '+'; -- Character'Val (16#2B#)
  63.    F_Flag5      : constant Fchar := ','; -- Character'Val (16#2C#)
  64.    F_Flag6      : constant Fchar := '-'; -- Character'Val (16#2D#)
  65.    F_Flag7      : constant Fchar := '.'; -- Character'Val (16#2E#)
  66.    F_Flag8      : constant Fchar := '/'; -- Character'Val (16#2F#)
  67.    F_Flag9      : constant Fchar := '0'; -- Character'Val (16#30#)
  68.    F_Flag10     : constant Fchar := '1'; -- Character'Val (16#31#)
  69.    F_Flag11     : constant Fchar := '2'; -- Character'Val (16#32#)
  70.    F_Flag12     : constant Fchar := '3'; -- Character'Val (16#33#)
  71.    F_Flag13     : constant Fchar := '4'; -- Character'Val (16#34#)
  72.    F_Flag14     : constant Fchar := '5'; -- Character'Val (16#35#)
  73.    F_Flag15     : constant Fchar := '6'; -- Character'Val (16#36#)
  74.    F_Flag16     : constant Fchar := '7'; -- Character'Val (16#37#)
  75.    F_Flag17     : constant Fchar := '8'; -- Character'Val (16#38#)
  76.    F_Flag18     : constant Fchar := '9'; -- Character'Val (16#39#)
  77.  
  78.    --  Note this table does not include entity field and flags whose access
  79.    --  functions are in Einfo (these are handled by the Print_Entity_Info
  80.    --  procedure in Treepr, which uses the routines in Einfo to get the
  81.    --  proper symbolic information). In addition, the following fields are
  82.    --  handled by Treepr, and do not appear in the Pchars array:
  83.  
  84.    --    Analyzed
  85.    --    Cannot_Be_Constant
  86.    --    Chars
  87.    --    Comes_From_Source
  88.    --    Error_Posted
  89.    --    Etype
  90.    --    Has_No_Side_Effects
  91.    --    Is_Controlling_Actual
  92.    --    Is_Overloaded
  93.    --    Is_Static_Expression
  94.    --    Left_Opnd
  95.    --    Must_Check_Expr
  96.    --    No_Overflow_Expr
  97.    --    Paren_Count
  98.    --    Raises_Constraint_Error
  99.    --    Right_Opnd
  100.  
  101.    Pchars : constant String :=
  102.       --  Unused_At_Start
  103.       "" &
  104.       --  At_Clause
  105.       "#Identifier%Expression" &
  106.       --  Component_Clause
  107.       "#Component_Name$Position%First_Bit&Last_Bit" &
  108.       --  Enumeration_Representation_Clause
  109.       "#Identifier&Array_Aggregate" &
  110.       --  Mod_Clause
  111.       "%Expression" &
  112.       --  Record_Representation_Clause
  113.       "#Identifier$Mod_Clause%Component_Clauses" &
  114.       --  Attribute_Definition_Clause
  115.       "$Name%Expression" &
  116.       --  Empty
  117.       "" &
  118.       --  Error
  119.       "" &
  120.       --  Pragma
  121.       "$Pragma_Argument_Associations%Debug_Statement" &
  122.       --  Pragma_Argument_Association
  123.       "%Expression" &
  124.       --  Defining_Character_Literal
  125.       "$Next_Entity%Scope&Homonym" &
  126.       --  Defining_Identifier
  127.       "$Next_Entity%Scope&Homonym" &
  128.       --  Defining_Operator_Symbol
  129.       "$Next_Entity%Scope&Homonym" &
  130.       --  Interpretation
  131.       "$Next_Interp&Entity" &
  132.       --  Expanded_Name
  133.       "%Prefix$Selector_Name&Entity*Redundant_Use2Has_Private_View5Is_Curren" &
  134.          "t_Instance" &
  135.       --  Identifier
  136.       "&Entity*Redundant_Use2Has_Private_View5Is_Current_Instance" &
  137.       --  Character_Literal
  138.       "$Char_Literal_Value&Entity2Has_Private_View" &
  139.       --  Operator_Symbol
  140.       "%Strval&Entity2Has_Private_View" &
  141.       --  Op_Add
  142.       "" &
  143.       --  Op_And
  144.       "+Do_Length_Check" &
  145.       --  Op_Concat
  146.       "" &
  147.       --  Op_Divide
  148.       "5Treat_Fixed_As_Integer*Do_Division_Check3Rounded_Result" &
  149.       --  Op_Eq
  150.       "" &
  151.       --  Op_Expon
  152.       "" &
  153.       --  Op_Ge
  154.       "" &
  155.       --  Op_Gt
  156.       "" &
  157.       --  Op_Le
  158.       "" &
  159.       --  Op_Lt
  160.       "" &
  161.       --  Op_Mod
  162.       "5Treat_Fixed_As_Integer*Do_Division_Check" &
  163.       --  Op_Multiply
  164.       "5Treat_Fixed_As_Integer3Rounded_Result" &
  165.       --  Op_Ne
  166.       "" &
  167.       --  Op_Or
  168.       "+Do_Length_Check" &
  169.       --  Op_Rem
  170.       "5Treat_Fixed_As_Integer*Do_Division_Check" &
  171.       --  Op_Subtract
  172.       "" &
  173.       --  Op_Xor
  174.       "+Do_Length_Check" &
  175.       --  Op_Rotate_Left
  176.       "" &
  177.       --  Op_Rotate_Right
  178.       "" &
  179.       --  Op_Shift_Left
  180.       "" &
  181.       --  Op_Shift_Right
  182.       "" &
  183.       --  Op_Shift_Right_Arithmetic
  184.       "" &
  185.       --  Op_Abs
  186.       "" &
  187.       --  Op_Minus
  188.       "" &
  189.       --  Op_Not
  190.       "" &
  191.       --  Op_Plus
  192.       "" &
  193.       --  Attribute_Reference
  194.       "%Prefix$Attribute_Name#Expressions&Entity2Do_Access_Check8Do_Overflow" &
  195.          "_Check" &
  196.       --  And_Then
  197.       "#Actions" &
  198.       --  Concat_Multiple
  199.       "#Expressions" &
  200.       --  Conditional_Expression
  201.       "#Expressions$Then_Actions%Else_Actions" &
  202.       --  Explicit_Dereference
  203.       "%Prefix2Do_Access_Check" &
  204.       --  Function_Call
  205.       "$Name%Parameter_Associations&First_Named_Actual#Controlling_Argument*" &
  206.          "Do_Tag_Check" &
  207.       --  In
  208.       "" &
  209.       --  Indexed_Component
  210.       "%Prefix#Expressions2Do_Access_Check" &
  211.       --  Integer_Literal
  212.       "%Intval" &
  213.       --  Not_In
  214.       "" &
  215.       --  Null
  216.       "" &
  217.       --  Or_Else
  218.       "#Actions" &
  219.       --  Procedure_Call_Statement
  220.       "$Name%Parameter_Associations&First_Named_Actual#Controlling_Argument*" &
  221.          "Do_Tag_Check" &
  222.       --  Qualified_Expression
  223.       "&Subtype_Mark%Expression" &
  224.       --  Raise_Constraint_Error
  225.       "" &
  226.       --  Range
  227.       "#Low_Bound$High_Bound" &
  228.       --  Real_Literal
  229.       "%Realval&Corresponding_Integer_Value" &
  230.       --  Selected_Component
  231.       "%Prefix$Selector_Name2Do_Access_Check*Do_Discriminant_Check" &
  232.       --  Type_Conversion
  233.       "&Subtype_Mark%Expression8Do_Overflow_Check*Do_Tag_Check+Do_Length_Che" &
  234.          "ck2Float_Truncate3Rounded_Result5Conversion_OK" &
  235.       --  Unchecked_Type_Conversion
  236.       "&Subtype_Mark%Expression" &
  237.       --  Allocator
  238.       "%Expression#Storage_Pool&Procedure_To_Call8Do_Storage_Check$First_Ity" &
  239.          "pe5Has_Dynamic_Itype" &
  240.       --  Aggregate
  241.       "#Expressions&Component_Associations8Null_Record_Present$First_Itype%A" &
  242.          "ggregate_Bounds5Has_Dynamic_Itype" &
  243.       --  Expression_Actions
  244.       "#Actions%Expression$First_Itype5Has_Dynamic_Itype" &
  245.       --  Extension_Aggregate
  246.       "%Ancestor_Part#Expressions&Component_Associations8Null_Record_Present" &
  247.          "$First_Itype5Has_Dynamic_Itype" &
  248.       --  Reference
  249.       "%Prefix$First_Itype5Has_Dynamic_Itype" &
  250.       --  Slice
  251.       "%Prefix&Discrete_Range2Do_Access_Check$First_Itype5Has_Dynamic_Itype" &
  252.       --  String_Literal
  253.       "%Strval$First_Itype5Has_Dynamic_Itype" &
  254.       --  Subtype_Indication
  255.       "&Subtype_Mark%Constraint$First_Itype5Has_Dynamic_Itype" &
  256.       --  Component_Declaration
  257.       "#Defining_Identifier(Aliased_Present'Subtype_Indication%Expression,Mo" &
  258.          "re_Ids-Prev_Ids$First_Itype5Has_Dynamic_Itype" &
  259.       --  Entry_Body
  260.       "#Defining_Identifier'Entry_Body_Formal_Part%Declarations&Handled_Stat" &
  261.          "ement_Sequence$First_Itype5Has_Dynamic_Itype" &
  262.       --  Entry_Declaration
  263.       "#Defining_Identifier&Discrete_Subtype_Definition%Parameter_Specificat" &
  264.          "ions$First_Itype5Has_Dynamic_Itype" &
  265.       --  Entry_Index_Specification
  266.       "#Defining_Identifier&Discrete_Subtype_Definition$First_Itype5Has_Dyna" &
  267.          "mic_Itype" &
  268.       --  Formal_Object_Declaration
  269.       "#Defining_Identifier(In_Present8Out_Present&Subtype_Mark%Expression,M" &
  270.          "ore_Ids-Prev_Ids$First_Itype5Has_Dynamic_Itype" &
  271.       --  Formal_Type_Declaration
  272.       "#Defining_Identifier%Formal_Type_Definition&Discriminant_Specificatio" &
  273.          "ns$First_Itype5Has_Dynamic_Itype*Unknown_Discriminants_Present" &
  274.       --  Freeze_Entity
  275.       "&Entity%TSS_Elist#Actions$First_Itype'First_Subtype_Link5Has_Dynamic_" &
  276.          "Itype" &
  277.       --  Full_Type_Declaration
  278.       "#Defining_Identifier&Discriminant_Specifications%Type_Definition$Firs" &
  279.          "t_Itype5Has_Dynamic_Itype" &
  280.       --  Incomplete_Type_Declaration
  281.       "#Defining_Identifier&Discriminant_Specifications*Unknown_Discriminant" &
  282.          "s_Present$First_Itype5Has_Dynamic_Itype" &
  283.       --  Implicit_Types
  284.       "$First_Itype5Has_Dynamic_Itype" &
  285.       --  Loop_Parameter_Specification
  286.       "#Defining_Identifier(Reverse_Present&Discrete_Subtype_Definition$Firs" &
  287.          "t_Itype5Has_Dynamic_Itype" &
  288.       --  Object_Declaration
  289.       "#Defining_Identifier(Aliased_Present8Constant_Present&Object_Definiti" &
  290.          "on%Expression,More_Ids-Prev_Ids$First_Itype'Object_Definition_Ityp" &
  291.          "es5Has_Dynamic_Itype.No_Default_Init" &
  292.       --  Private_Extension_Declaration
  293.       "#Defining_Identifier$First_Itype5Has_Dynamic_Itype&Discriminant_Speci" &
  294.          "fications*Unknown_Discriminants_Present+Abstract_Present'Subtype_I" &
  295.          "ndication" &
  296.       --  Private_Type_Declaration
  297.       "#Defining_Identifier$First_Itype5Has_Dynamic_Itype&Discriminant_Speci" &
  298.          "fications*Unknown_Discriminants_Present+Abstract_Present(Tagged_Pr" &
  299.          "esent8Limited_Present" &
  300.       --  Subtype_Declaration
  301.       "#Defining_Identifier'Subtype_Indication$First_Itype5Has_Dynamic_Itype" &
  302.       --  Protected_Type_Declaration
  303.       "#Defining_Identifier&Discriminant_Specifications$First_Itype5Has_Dyna" &
  304.          "mic_Itype%Protected_Definition'Corresponding_Body" &
  305.       --  Accept_Statement
  306.       "#Entry_Direct_Name'Entry_Index%Parameter_Specifications&Handled_State" &
  307.          "ment_Sequence$First_Itype5Has_Dynamic_Itype" &
  308.       --  Function_Specification
  309.       "#Defining_Unit_Name%Parameter_Specifications&Subtype_Mark'Generic_Par" &
  310.          "ent$First_Itype5Has_Dynamic_Itype" &
  311.       --  Procedure_Specification
  312.       "#Defining_Unit_Name%Parameter_Specifications'Generic_Parent$First_Ity" &
  313.          "pe5Has_Dynamic_Itype" &
  314.       --  Access_Function_Definition
  315.       "(Protected_Present$First_Itype5Has_Dynamic_Itype%Parameter_Specificat" &
  316.          "ions&Subtype_Mark" &
  317.       --  Access_Procedure_Definition
  318.       "(Protected_Present$First_Itype5Has_Dynamic_Itype%Parameter_Specificat" &
  319.          "ions" &
  320.       --  Task_Type_Declaration
  321.       "#Defining_Identifier&Discriminant_Specifications$First_Itype5Has_Dyna" &
  322.          "mic_Itype%Task_Definition'Corresponding_Body" &
  323.       --  Package_Body_Stub
  324.       "#Defining_Identifier&Library_Unit'Corresponding_Body" &
  325.       --  Protected_Body_Stub
  326.       "#Defining_Identifier&Library_Unit'Corresponding_Body" &
  327.       --  Subprogram_Body_Stub
  328.       "#Specification&Library_Unit'Corresponding_Body" &
  329.       --  Task_Body_Stub
  330.       "#Defining_Identifier&Library_Unit'Corresponding_Body" &
  331.       --  Function_Instantiation
  332.       "#Defining_Unit_Name$Name%Generic_Associations&Parent_Spec" &
  333.       --  Package_Instantiation
  334.       "#Defining_Unit_Name$Name&Parent_Spec%Generic_Associations" &
  335.       --  Procedure_Instantiation
  336.       "#Defining_Unit_Name$Name&Parent_Spec%Generic_Associations" &
  337.       --  Package_Body
  338.       "#Defining_Unit_Name%Declarations&Handled_Statement_Sequence'Correspon" &
  339.          "ding_Spec" &
  340.       --  Subprogram_Body
  341.       "#Specification%Declarations&Handled_Statement_Sequence(Bad_Is_Detecte" &
  342.          "d'Corresponding_Spec+Acts_As_Spec8Do_Storage_Check,Is_Task_Master$" &
  343.          "Activation_Chain_Entity-Has_Priority_Pragma" &
  344.       --  Implicit_Label_Declaration
  345.       "#Defining_Identifier$Label" &
  346.       --  Package_Declaration
  347.       "#Specification'Corresponding_Body&Parent_Spec$Activation_Chain_Entity" &
  348.       --  Single_Task_Declaration
  349.       "#Defining_Identifier%Task_Definition" &
  350.       --  Subprogram_Declaration
  351.       "#Specification'Corresponding_Body&Parent_Spec" &
  352.       --  Task_Body
  353.       "#Defining_Identifier%Declarations&Handled_Statement_Sequence,Is_Task_" &
  354.          "Master$Activation_Chain_Entity'Corresponding_Spec" &
  355.       --  Use_Package_Clause
  356.       "$Names%Next_Use_Clause" &
  357.       --  Generic_Package_Declaration
  358.       "#Specification'Corresponding_Body%Generic_Formal_Declarations&Parent_" &
  359.          "Spec$Activation_Chain_Entity" &
  360.       --  Generic_Subprogram_Declaration
  361.       "#Specification'Corresponding_Body%Generic_Formal_Declarations&Parent_" &
  362.          "Spec" &
  363.       --  Constrained_Array_Definition
  364.       "$Discrete_Subtype_Definitions(Aliased_Present'Subtype_Indication" &
  365.       --  Unconstrained_Array_Definition
  366.       "$Subtype_Marks(Aliased_Present'Subtype_Indication" &
  367.       --  Exception_Renaming_Declaration
  368.       "#Defining_Identifier$Name" &
  369.       --  Object_Renaming_Declaration
  370.       "#Defining_Identifier&Subtype_Mark$Name" &
  371.       --  Package_Renaming_Declaration
  372.       "#Defining_Unit_Name$Name&Parent_Spec" &
  373.       --  Subprogram_Renaming_Declaration
  374.       "#Specification$Name&Parent_Spec'Corresponding_Spec" &
  375.       --  Generic_Function_Renaming_Declaration
  376.       "#Defining_Unit_Name$Name&Parent_Spec" &
  377.       --  Generic_Package_Renaming_Declaration
  378.       "#Defining_Unit_Name$Name&Parent_Spec" &
  379.       --  Generic_Procedure_Renaming_Declaration
  380.       "#Defining_Unit_Name$Name&Parent_Spec" &
  381.       --  Abort_Statement
  382.       "$Names" &
  383.       --  Assignment_Statement
  384.       "$Name%Expression*Do_Tag_Check+Do_Length_Check,Forwards_OK-Backwards_O" &
  385.          "K" &
  386.       --  Asynchronous_Select
  387.       "#Triggering_Alternative$Abortable_Part" &
  388.       --  Block_Statement
  389.       "#Identifier%Declarations&Handled_Statement_Sequence,Is_Task_Master$Ac" &
  390.          "tivation_Chain_Entity(Has_Created_Identifier" &
  391.       --  Case_Statement
  392.       "%Expression&Alternatives" &
  393.       --  Code_Statement
  394.       "%Expression" &
  395.       --  Conditional_Entry_Call
  396.       "#Entry_Call_Alternative&Else_Statements" &
  397.       --  Delay_Relative_Statement
  398.       "%Expression" &
  399.       --  Delay_Until_Statement
  400.       "%Expression" &
  401.       --  Entry_Call_Statement
  402.       "$Name%Parameter_Associations&First_Named_Actual" &
  403.       --  Exit_Statement
  404.       "$Name'Condition" &
  405.       --  Free_Statement
  406.       "%Expression#Storage_Pool&Procedure_To_Call" &
  407.       --  Goto_Statement
  408.       "$Name" &
  409.       --  If_Statement
  410.       "'Condition$Then_Statements%Elsif_Parts&Else_Statements" &
  411.       --  Loop_Statement
  412.       "#Identifier$Iteration_Scheme%Statements(Has_Created_Identifier" &
  413.       --  Null_Statement
  414.       "" &
  415.       --  Raise_Statement
  416.       "$Name(No_Defer" &
  417.       --  Requeue_Statement
  418.       "$Name(Abort_Present" &
  419.       --  Return_Statement
  420.       "%Expression#Storage_Pool&Procedure_To_Call*Do_Tag_Check$Return_Type" &
  421.       --  Selective_Accept
  422.       "#Select_Alternatives&Else_Statements" &
  423.       --  Timed_Entry_Call
  424.       "#Entry_Call_Alternative&Delay_Alternative" &
  425.       --  Abortable_Part
  426.       "%Statements" &
  427.       --  Abstract_Subprogram_Declaration
  428.       "#Specification" &
  429.       --  Accept_Alternative
  430.       "$Accept_Statement'Condition%Statements" &
  431.       --  Access_Definition
  432.       "&Subtype_Mark" &
  433.       --  Access_To_Object_Definition
  434.       "(All_Present'Subtype_Indication8Constant_Present" &
  435.       --  Case_Statement_Alternative
  436.       "&Discrete_Choices%Statements" &
  437.       --  Compilation_Unit
  438.       "&Library_Unit#Context_Items(Private_Present$Unit%Following_Pragmas8Ha" &
  439.          "s_No_Elab_Code*Body_Required+Acts_As_Spec.Elaborate_Body_Present'F" &
  440.          "irst_Inlined_Subprogram" &
  441.       --  Component_Association
  442.       "#Choices%Expression" &
  443.       --  Component_List
  444.       "%Component_Items&Variant_Part*Null_Present" &
  445.       --  Derived_Type_Definition
  446.       "+Abstract_Present'Subtype_Indication%Record_Extension_Part" &
  447.       --  Decimal_Fixed_Point_Definition
  448.       "%Delta_Expression$Digits_Expression&Real_Range_Specification" &
  449.       --  Defining_Program_Unit_Name
  450.       "$Name#Defining_Identifier" &
  451.       --  Delay_Alternative
  452.       "$Delay_Statement'Condition%Statements" &
  453.       --  Delta_Constraint
  454.       "%Delta_Expression&Range_Constraint" &
  455.       --  Designator
  456.       "$Name#Identifier" &
  457.       --  Digits_Constraint
  458.       "$Digits_Expression&Range_Constraint" &
  459.       --  Discriminant_Association
  460.       "#Selector_Names%Expression" &
  461.       --  Discriminant_Specification
  462.       "#Defining_Identifier$Discriminant_Type%Expression,More_Ids-Prev_Ids" &
  463.       --  Elsif_Part
  464.       "'Condition$Then_Statements%Condition_Actions" &
  465.       --  Enumeration_Type_Definition
  466.       "#Literals" &
  467.       --  Entry_Body_Formal_Part
  468.       "#Entry_Index_Specification%Parameter_Specifications'Condition" &
  469.       --  Entry_Call_Alternative
  470.       "#Entry_Call_Statement%Statements" &
  471.       --  Exception_Declaration
  472.       "#Defining_Identifier,More_Ids-Prev_Ids" &
  473.       --  Exception_Handler
  474.       "$Choice_Parameter&Exception_Choices%Statements" &
  475.       --  Floating_Point_Definition
  476.       "$Digits_Expression&Real_Range_Specification" &
  477.       --  Formal_Decimal_Fixed_Point_Definition
  478.       "" &
  479.       --  Formal_Derived_Type_Definition
  480.       "&Subtype_Mark(Private_Present+Abstract_Present" &
  481.       --  Formal_Discrete_Type_Definition
  482.       "" &
  483.       --  Formal_Floating_Point_Definition
  484.       "" &
  485.       --  Formal_Modular_Type_Definition
  486.       "" &
  487.       --  Formal_Ordinary_Fixed_Point_Definition
  488.       "" &
  489.       --  Formal_Package_Declaration
  490.       "#Defining_Identifier$Name%Generic_Associations(Box_Present" &
  491.       --  Formal_Private_Type_Definition
  492.       "+Abstract_Present(Tagged_Present8Limited_Present" &
  493.       --  Formal_Signed_Integer_Type_Definition
  494.       "" &
  495.       --  Formal_Subprogram_Declaration
  496.       "#Specification$Default_Name(Box_Present" &
  497.       --  Generic_Association
  498.       "$Selector_Name#Explicit_Generic_Actual_Parameter" &
  499.       --  Handled_Sequence_Of_Statements
  500.       "%Statements&Exception_Handlers#Identifier'Cleanup_Call$First_Real_Sta" &
  501.          "tement" &
  502.       --  Index_Or_Discriminant_Constraint
  503.       "#Constraints" &
  504.       --  Iteration_Scheme
  505.       "'Condition%Condition_Actions#Loop_Parameter_Specification" &
  506.       --  Label
  507.       "#Identifier" &
  508.       --  Modular_Type_Definition
  509.       "%Expression" &
  510.       --  Number_Declaration
  511.       "#Defining_Identifier%Expression,More_Ids-Prev_Ids" &
  512.       --  Ordinary_Fixed_Point_Definition
  513.       "%Delta_Expression&Real_Range_Specification" &
  514.       --  Others_Choice
  515.       "#Others_Discrete_Choices" &
  516.       --  Package_Specification
  517.       "#Defining_Unit_Name$Visible_Declarations&Private_Declarations'Generic" &
  518.          "_Parent" &
  519.       --  Parameter_Association
  520.       "$Selector_Name%Explicit_Actual_Parameter&Next_Named_Actual" &
  521.       --  Parameter_Specification
  522.       "#Defining_Identifier(In_Present8Out_Present$Parameter_Type%Expression" &
  523.          "*Do_Accessibility_Check,More_Ids-Prev_Ids" &
  524.       --  Protected_Body
  525.       "#Defining_Identifier%Declarations'Corresponding_Spec" &
  526.       --  Protected_Definition
  527.       "$Visible_Declarations&Private_Declarations-Has_Priority_Pragma" &
  528.       --  Range_Constraint
  529.       "&Range_Expression" &
  530.       --  Real_Range_Specification
  531.       "#Low_Bound$High_Bound" &
  532.       --  Record_Definition
  533.       "+Abstract_Present(Tagged_Present8Limited_Present#Component_List*Null_" &
  534.          "Present" &
  535.       --  Signed_Integer_Type_Definition
  536.       "#Low_Bound$High_Bound" &
  537.       --  Single_Protected_Declaration
  538.       "#Defining_Identifier%Protected_Definition" &
  539.       --  Subunit
  540.       "$Name#Proper_Body%Corresponding_Stub" &
  541.       --  Task_Definition
  542.       "$Visible_Declarations&Private_Declarations-Has_Priority_Pragma,Has_St" &
  543.          "orage_Size_Pragma" &
  544.       --  Terminate_Alternative
  545.       "'Condition" &
  546.       --  Triggering_Alternative
  547.       "#Triggering_Statement%Statements" &
  548.       --  Use_Type_Clause
  549.       "$Subtype_Marks%Next_Use_Clause" &
  550.       --  Variant
  551.       "&Discrete_Choices#Component_List$Enclosing_Variant" &
  552.       --  Variant_Part
  553.       "$Name#Variants" &
  554.       --  With_Clause
  555.       "$Name&Library_Unit'Corresponding_Spec,First_Name-Last_Name*Context_In" &
  556.          "stalled+Elaborate_Present(Elaborate_All_Present8Implicit_With" &
  557.       --  Unused_At_End
  558.       "";
  559.  
  560.    type Pchar_Pos_Array is array (Node_Kind) of Positive;
  561.    Pchar_Pos : constant Pchar_Pos_Array := Pchar_Pos_Array'(
  562.       N_Unused_At_Start                        => 1,
  563.       N_At_Clause                              => 1,
  564.       N_Component_Clause                       => 23,
  565.       N_Enumeration_Representation_Clause      => 66,
  566.       N_Mod_Clause                             => 93,
  567.       N_Record_Representation_Clause           => 104,
  568.       N_Attribute_Definition_Clause            => 144,
  569.       N_Empty                                  => 160,
  570.       N_Error                                  => 160,
  571.       N_Pragma                                 => 160,
  572.       N_Pragma_Argument_Association            => 205,
  573.       N_Defining_Character_Literal             => 216,
  574.       N_Defining_Identifier                    => 242,
  575.       N_Defining_Operator_Symbol               => 268,
  576.       N_Interpretation                         => 294,
  577.       N_Expanded_Name                          => 313,
  578.       N_Identifier                             => 392,
  579.       N_Character_Literal                      => 450,
  580.       N_Operator_Symbol                        => 493,
  581.       N_Op_Add                                 => 524,
  582.       N_Op_And                                 => 524,
  583.       N_Op_Concat                              => 540,
  584.       N_Op_Divide                              => 540,
  585.       N_Op_Eq                                  => 596,
  586.       N_Op_Expon                               => 596,
  587.       N_Op_Ge                                  => 596,
  588.       N_Op_Gt                                  => 596,
  589.       N_Op_Le                                  => 596,
  590.       N_Op_Lt                                  => 596,
  591.       N_Op_Mod                                 => 596,
  592.       N_Op_Multiply                            => 637,
  593.       N_Op_Ne                                  => 675,
  594.       N_Op_Or                                  => 675,
  595.       N_Op_Rem                                 => 691,
  596.       N_Op_Subtract                            => 732,
  597.       N_Op_Xor                                 => 732,
  598.       N_Op_Rotate_Left                         => 748,
  599.       N_Op_Rotate_Right                        => 748,
  600.       N_Op_Shift_Left                          => 748,
  601.       N_Op_Shift_Right                         => 748,
  602.       N_Op_Shift_Right_Arithmetic              => 748,
  603.       N_Op_Abs                                 => 748,
  604.       N_Op_Minus                               => 748,
  605.       N_Op_Not                                 => 748,
  606.       N_Op_Plus                                => 748,
  607.       N_Attribute_Reference                    => 748,
  608.       N_And_Then                               => 823,
  609.       N_Concat_Multiple                        => 831,
  610.       N_Conditional_Expression                 => 843,
  611.       N_Explicit_Dereference                   => 881,
  612.       N_Function_Call                          => 904,
  613.       N_In                                     => 985,
  614.       N_Indexed_Component                      => 985,
  615.       N_Integer_Literal                        => 1020,
  616.       N_Not_In                                 => 1027,
  617.       N_Null                                   => 1027,
  618.       N_Or_Else                                => 1027,
  619.       N_Procedure_Call_Statement               => 1035,
  620.       N_Qualified_Expression                   => 1116,
  621.       N_Raise_Constraint_Error                 => 1140,
  622.       N_Range                                  => 1140,
  623.       N_Real_Literal                           => 1161,
  624.       N_Selected_Component                     => 1197,
  625.       N_Type_Conversion                        => 1256,
  626.       N_Unchecked_Type_Conversion              => 1371,
  627.       N_Allocator                              => 1395,
  628.       N_Aggregate                              => 1484,
  629.       N_Expression_Actions                     => 1586,
  630.       N_Extension_Aggregate                    => 1635,
  631.       N_Reference                              => 1734,
  632.       N_Slice                                  => 1771,
  633.       N_String_Literal                         => 1839,
  634.       N_Subtype_Indication                     => 1876,
  635.       N_Component_Declaration                  => 1930,
  636.       N_Entry_Body                             => 2044,
  637.       N_Entry_Declaration                      => 2157,
  638.       N_Entry_Index_Specification              => 2260,
  639.       N_Formal_Object_Declaration              => 2338,
  640.       N_Formal_Type_Declaration                => 2453,
  641.       N_Freeze_Entity                          => 2584,
  642.       N_Full_Type_Declaration                  => 2658,
  643.       N_Incomplete_Type_Declaration            => 2752,
  644.       N_Implicit_Types                         => 2860,
  645.       N_Loop_Parameter_Specification           => 2890,
  646.       N_Object_Declaration                     => 2984,
  647.       N_Private_Extension_Declaration          => 3155,
  648.       N_Private_Type_Declaration               => 3299,
  649.       N_Subtype_Declaration                    => 3455,
  650.       N_Protected_Type_Declaration             => 3524,
  651.       N_Accept_Statement                       => 3642,
  652.       N_Function_Specification                 => 3754,
  653.       N_Procedure_Specification                => 3856,
  654.       N_Access_Function_Definition             => 3945,
  655.       N_Access_Procedure_Definition            => 4031,
  656.       N_Task_Type_Declaration                  => 4104,
  657.       N_Package_Body_Stub                      => 4217,
  658.       N_Protected_Body_Stub                    => 4269,
  659.       N_Subprogram_Body_Stub                   => 4321,
  660.       N_Task_Body_Stub                         => 4367,
  661.       N_Function_Instantiation                 => 4419,
  662.       N_Package_Instantiation                  => 4476,
  663.       N_Procedure_Instantiation                => 4533,
  664.       N_Package_Body                           => 4590,
  665.       N_Subprogram_Body                        => 4668,
  666.       N_Implicit_Label_Declaration             => 4846,
  667.       N_Package_Declaration                    => 4872,
  668.       N_Single_Task_Declaration                => 4941,
  669.       N_Subprogram_Declaration                 => 4977,
  670.       N_Task_Body                              => 5022,
  671.       N_Use_Package_Clause                     => 5140,
  672.       N_Generic_Package_Declaration            => 5162,
  673.       N_Generic_Subprogram_Declaration         => 5259,
  674.       N_Constrained_Array_Definition           => 5332,
  675.       N_Unconstrained_Array_Definition         => 5396,
  676.       N_Exception_Renaming_Declaration         => 5445,
  677.       N_Object_Renaming_Declaration            => 5470,
  678.       N_Package_Renaming_Declaration           => 5508,
  679.       N_Subprogram_Renaming_Declaration        => 5544,
  680.       N_Generic_Function_Renaming_Declaration  => 5594,
  681.       N_Generic_Package_Renaming_Declaration   => 5630,
  682.       N_Generic_Procedure_Renaming_Declaration => 5666,
  683.       N_Abort_Statement                        => 5702,
  684.       N_Assignment_Statement                   => 5708,
  685.       N_Asynchronous_Select                    => 5778,
  686.       N_Block_Statement                        => 5816,
  687.       N_Case_Statement                         => 5929,
  688.       N_Code_Statement                         => 5953,
  689.       N_Conditional_Entry_Call                 => 5964,
  690.       N_Delay_Relative_Statement               => 6003,
  691.       N_Delay_Until_Statement                  => 6014,
  692.       N_Entry_Call_Statement                   => 6025,
  693.       N_Exit_Statement                         => 6072,
  694.       N_Free_Statement                         => 6087,
  695.       N_Goto_Statement                         => 6129,
  696.       N_If_Statement                           => 6134,
  697.       N_Loop_Statement                         => 6188,
  698.       N_Null_Statement                         => 6250,
  699.       N_Raise_Statement                        => 6250,
  700.       N_Requeue_Statement                      => 6264,
  701.       N_Return_Statement                       => 6283,
  702.       N_Selective_Accept                       => 6350,
  703.       N_Timed_Entry_Call                       => 6386,
  704.       N_Abortable_Part                         => 6427,
  705.       N_Abstract_Subprogram_Declaration        => 6438,
  706.       N_Accept_Alternative                     => 6452,
  707.       N_Access_Definition                      => 6490,
  708.       N_Access_To_Object_Definition            => 6503,
  709.       N_Case_Statement_Alternative             => 6551,
  710.       N_Compilation_Unit                       => 6579,
  711.       N_Component_Association                  => 6737,
  712.       N_Component_List                         => 6756,
  713.       N_Derived_Type_Definition                => 6798,
  714.       N_Decimal_Fixed_Point_Definition         => 6856,
  715.       N_Defining_Program_Unit_Name             => 6916,
  716.       N_Delay_Alternative                      => 6941,
  717.       N_Delta_Constraint                       => 6978,
  718.       N_Designator                             => 7012,
  719.       N_Digits_Constraint                      => 7028,
  720.       N_Discriminant_Association               => 7063,
  721.       N_Discriminant_Specification             => 7089,
  722.       N_Elsif_Part                             => 7156,
  723.       N_Enumeration_Type_Definition            => 7200,
  724.       N_Entry_Body_Formal_Part                 => 7209,
  725.       N_Entry_Call_Alternative                 => 7270,
  726.       N_Exception_Declaration                  => 7302,
  727.       N_Exception_Handler                      => 7340,
  728.       N_Floating_Point_Definition              => 7386,
  729.       N_Formal_Decimal_Fixed_Point_Definition  => 7429,
  730.       N_Formal_Derived_Type_Definition         => 7429,
  731.       N_Formal_Discrete_Type_Definition        => 7475,
  732.       N_Formal_Floating_Point_Definition       => 7475,
  733.       N_Formal_Modular_Type_Definition         => 7475,
  734.       N_Formal_Ordinary_Fixed_Point_Definition => 7475,
  735.       N_Formal_Package_Declaration             => 7475,
  736.       N_Formal_Private_Type_Definition         => 7533,
  737.       N_Formal_Signed_Integer_Type_Definition  => 7581,
  738.       N_Formal_Subprogram_Declaration          => 7581,
  739.       N_Generic_Association                    => 7620,
  740.       N_Handled_Sequence_Of_Statements         => 7668,
  741.       N_Index_Or_Discriminant_Constraint       => 7743,
  742.       N_Iteration_Scheme                       => 7755,
  743.       N_Label                                  => 7812,
  744.       N_Modular_Type_Definition                => 7823,
  745.       N_Number_Declaration                     => 7834,
  746.       N_Ordinary_Fixed_Point_Definition        => 7883,
  747.       N_Others_Choice                          => 7925,
  748.       N_Package_Specification                  => 7949,
  749.       N_Parameter_Association                  => 8025,
  750.       N_Parameter_Specification                => 8083,
  751.       N_Protected_Body                         => 8193,
  752.       N_Protected_Definition                   => 8245,
  753.       N_Range_Constraint                       => 8307,
  754.       N_Real_Range_Specification               => 8324,
  755.       N_Record_Definition                      => 8345,
  756.       N_Signed_Integer_Type_Definition         => 8421,
  757.       N_Single_Protected_Declaration           => 8442,
  758.       N_Subunit                                => 8483,
  759.       N_Task_Definition                        => 8519,
  760.       N_Terminate_Alternative                  => 8605,
  761.       N_Triggering_Alternative                 => 8615,
  762.       N_Use_Type_Clause                        => 8647,
  763.       N_Variant                                => 8677,
  764.       N_Variant_Part                           => 8727,
  765.       N_With_Clause                            => 8741,
  766.       N_Unused_At_End                          => 8871);
  767.  
  768. end Treeprs;
  769.