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 / nmake.adb < prev    next >
Text File  |  1996-09-28  |  89KB  |  2,754 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                                N M A K E                                 --
  6. --                                                                          --
  7. --                                 B o d y                                  --
  8. --                                                                          --
  9. --                 Generated by xnmake revision 1.20 using                   --
  10. --                         sinfo.ads revision 1.254                          --
  11. --                         nmake.adt revision 1.9                          --
  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. with Atree;  use Atree;
  29. with Sinfo;  use Sinfo;
  30. with Snames; use Snames;
  31. with Stand;  use Stand;
  32.  
  33. package body Nmake is
  34.  
  35.    function Make_Unused_At_Start (Sloc : Source_Ptr)
  36.       return Node_Id
  37.    is
  38.       N : constant Node_Id :=
  39.             New_Node (N_Unused_At_Start, Sloc);
  40.    begin
  41.       return N;
  42.    end Make_Unused_At_Start;
  43.  
  44.    function Make_Unused_At_End (Sloc : Source_Ptr)
  45.       return Node_Id
  46.    is
  47.       N : constant Node_Id :=
  48.             New_Node (N_Unused_At_End, Sloc);
  49.    begin
  50.       return N;
  51.    end Make_Unused_At_End;
  52.  
  53.    function Make_Identifier (Sloc : Source_Ptr;
  54.       Chars                        : Name_Id)
  55.       return Node_Id
  56.    is
  57.       N : constant Node_Id :=
  58.             New_Node (N_Identifier, Sloc);
  59.    begin
  60.       Set_Chars (N, Chars);
  61.       return N;
  62.    end Make_Identifier;
  63.  
  64.    function Make_Integer_Literal (Sloc : Source_Ptr;
  65.       Intval                       : Uint)
  66.       return Node_Id
  67.    is
  68.       N : constant Node_Id :=
  69.             New_Node (N_Integer_Literal, Sloc);
  70.    begin
  71.       Set_Intval (N, Intval);
  72.       return N;
  73.    end Make_Integer_Literal;
  74.  
  75.    function Make_Real_Literal (Sloc : Source_Ptr;
  76.       Realval                      : Ureal)
  77.       return Node_Id
  78.    is
  79.       N : constant Node_Id :=
  80.             New_Node (N_Real_Literal, Sloc);
  81.    begin
  82.       Set_Realval (N, Realval);
  83.       return N;
  84.    end Make_Real_Literal;
  85.  
  86.    function Make_Character_Literal (Sloc : Source_Ptr;
  87.       Chars                        : Name_Id;
  88.       Char_Literal_Value           : Char_Code)
  89.       return Node_Id
  90.    is
  91.       N : constant Node_Id :=
  92.             New_Node (N_Character_Literal, Sloc);
  93.    begin
  94.       Set_Chars (N, Chars);
  95.       Set_Char_Literal_Value (N, Char_Literal_Value);
  96.       return N;
  97.    end Make_Character_Literal;
  98.  
  99.    function Make_String_Literal (Sloc : Source_Ptr;
  100.       Strval                       : String_Id)
  101.       return Node_Id
  102.    is
  103.       N : constant Node_Id :=
  104.             New_Node (N_String_Literal, Sloc);
  105.    begin
  106.       Set_Strval (N, Strval);
  107.       return N;
  108.    end Make_String_Literal;
  109.  
  110.    function Make_Pragma (Sloc : Source_Ptr;
  111.       Chars                        : Name_Id;
  112.       Pragma_Argument_Associations : List_Id := No_List)
  113.       return Node_Id
  114.    is
  115.       N : constant Node_Id :=
  116.             New_Node (N_Pragma, Sloc);
  117.    begin
  118.       Set_Chars (N, Chars);
  119.       Set_Pragma_Argument_Associations
  120.         (N, Pragma_Argument_Associations);
  121.       return N;
  122.    end Make_Pragma;
  123.  
  124.    function Make_Pragma_Argument_Association (Sloc : Source_Ptr;
  125.       Chars                        : Name_Id := No_Name;
  126.       Expression                   : Node_Id)
  127.       return Node_Id
  128.    is
  129.       N : constant Node_Id :=
  130.             New_Node (N_Pragma_Argument_Association, Sloc);
  131.    begin
  132.       Set_Chars (N, Chars);
  133.       Set_Expression (N, Expression);
  134.       return N;
  135.    end Make_Pragma_Argument_Association;
  136.  
  137.    function Make_Defining_Identifier (Sloc : Source_Ptr;
  138.       Chars                        : Name_Id)
  139.       return Node_Id
  140.    is
  141.       N : constant Node_Id :=
  142.             New_Entity (N_Defining_Identifier, Sloc);
  143.    begin
  144.       Set_Chars (N, Chars);
  145.       return N;
  146.    end Make_Defining_Identifier;
  147.  
  148.    function Make_Full_Type_Declaration (Sloc : Source_Ptr;
  149.       Defining_Identifier          : Node_Id;
  150.       Discriminant_Specifications  : List_Id := No_List;
  151.       Type_Definition              : Node_Id)
  152.       return Node_Id
  153.    is
  154.       N : constant Node_Id :=
  155.             New_Node (N_Full_Type_Declaration, Sloc);
  156.    begin
  157.       Set_Defining_Identifier (N, Defining_Identifier);
  158.       Set_Discriminant_Specifications (N, Discriminant_Specifications);
  159.       Set_Type_Definition (N, Type_Definition);
  160.       return N;
  161.    end Make_Full_Type_Declaration;
  162.  
  163.    function Make_Subtype_Declaration (Sloc : Source_Ptr;
  164.       Defining_Identifier          : Node_Id;
  165.       Subtype_Indication           : Node_Id)
  166.       return Node_Id
  167.    is
  168.       N : constant Node_Id :=
  169.             New_Node (N_Subtype_Declaration, Sloc);
  170.    begin
  171.       Set_Defining_Identifier (N, Defining_Identifier);
  172.       Set_Subtype_Indication (N, Subtype_Indication);
  173.       return N;
  174.    end Make_Subtype_Declaration;
  175.  
  176.    function Make_Subtype_Indication (Sloc : Source_Ptr;
  177.       Subtype_Mark                 : Node_Id;
  178.       Constraint                   : Node_Id)
  179.       return Node_Id
  180.    is
  181.       N : constant Node_Id :=
  182.             New_Node (N_Subtype_Indication, Sloc);
  183.    begin
  184.       Set_Subtype_Mark (N, Subtype_Mark);
  185.       Set_Constraint (N, Constraint);
  186.       return N;
  187.    end Make_Subtype_Indication;
  188.  
  189.    function Make_Object_Declaration (Sloc : Source_Ptr;
  190.       Defining_Identifier          : Node_Id;
  191.       Aliased_Present              : Boolean := False;
  192.       Constant_Present             : Boolean := False;
  193.       Object_Definition            : Node_Id;
  194.       Expression                   : Node_Id := Empty;
  195.       No_Default_Init              : Boolean := False)
  196.       return Node_Id
  197.    is
  198.       N : constant Node_Id :=
  199.             New_Node (N_Object_Declaration, Sloc);
  200.    begin
  201.       Set_Defining_Identifier (N, Defining_Identifier);
  202.       Set_Aliased_Present (N, Aliased_Present);
  203.       Set_Constant_Present (N, Constant_Present);
  204.       Set_Object_Definition (N, Object_Definition);
  205.       Set_Expression (N, Expression);
  206.       Set_No_Default_Init (N, No_Default_Init);
  207.       return N;
  208.    end Make_Object_Declaration;
  209.  
  210.    function Make_Number_Declaration (Sloc : Source_Ptr;
  211.       Defining_Identifier          : Node_Id;
  212.       Expression                   : Node_Id)
  213.       return Node_Id
  214.    is
  215.       N : constant Node_Id :=
  216.             New_Node (N_Number_Declaration, Sloc);
  217.    begin
  218.       Set_Defining_Identifier (N, Defining_Identifier);
  219.       Set_Expression (N, Expression);
  220.       return N;
  221.    end Make_Number_Declaration;
  222.  
  223.    function Make_Derived_Type_Definition (Sloc : Source_Ptr;
  224.       Abstract_Present             : Boolean := False;
  225.       Subtype_Indication           : Node_Id;
  226.       Record_Extension_Part        : Node_Id := Empty)
  227.       return Node_Id
  228.    is
  229.       N : constant Node_Id :=
  230.             New_Node (N_Derived_Type_Definition, Sloc);
  231.    begin
  232.       Set_Abstract_Present (N, Abstract_Present);
  233.       Set_Subtype_Indication (N, Subtype_Indication);
  234.       Set_Record_Extension_Part (N, Record_Extension_Part);
  235.       return N;
  236.    end Make_Derived_Type_Definition;
  237.  
  238.    function Make_Range_Constraint (Sloc : Source_Ptr;
  239.       Range_Expression             : Node_Id)
  240.       return Node_Id
  241.    is
  242.       N : constant Node_Id :=
  243.             New_Node (N_Range_Constraint, Sloc);
  244.    begin
  245.       Set_Range_Expression (N, Range_Expression);
  246.       return N;
  247.    end Make_Range_Constraint;
  248.  
  249.    function Make_Range (Sloc : Source_Ptr;
  250.       Low_Bound                    : Node_Id;
  251.       High_Bound                   : Node_Id)
  252.       return Node_Id
  253.    is
  254.       N : constant Node_Id :=
  255.             New_Node (N_Range, Sloc);
  256.    begin
  257.       Set_Low_Bound (N, Low_Bound);
  258.       Set_High_Bound (N, High_Bound);
  259.       return N;
  260.    end Make_Range;
  261.  
  262.    function Make_Enumeration_Type_Definition (Sloc : Source_Ptr;
  263.       Literals                     : List_Id)
  264.       return Node_Id
  265.    is
  266.       N : constant Node_Id :=
  267.             New_Node (N_Enumeration_Type_Definition, Sloc);
  268.    begin
  269.       Set_Literals (N, Literals);
  270.       return N;
  271.    end Make_Enumeration_Type_Definition;
  272.  
  273.    function Make_Defining_Character_Literal (Sloc : Source_Ptr;
  274.       Chars                        : Name_Id)
  275.       return Node_Id
  276.    is
  277.       N : constant Node_Id :=
  278.             New_Entity (N_Defining_Character_Literal, Sloc);
  279.    begin
  280.       Set_Chars (N, Chars);
  281.       return N;
  282.    end Make_Defining_Character_Literal;
  283.  
  284.    function Make_Signed_Integer_Type_Definition (Sloc : Source_Ptr;
  285.       Low_Bound                    : Node_Id;
  286.       High_Bound                   : Node_Id)
  287.       return Node_Id
  288.    is
  289.       N : constant Node_Id :=
  290.             New_Node (N_Signed_Integer_Type_Definition, Sloc);
  291.    begin
  292.       Set_Low_Bound (N, Low_Bound);
  293.       Set_High_Bound (N, High_Bound);
  294.       return N;
  295.    end Make_Signed_Integer_Type_Definition;
  296.  
  297.    function Make_Modular_Type_Definition (Sloc : Source_Ptr;
  298.       Expression                   : Node_Id)
  299.       return Node_Id
  300.    is
  301.       N : constant Node_Id :=
  302.             New_Node (N_Modular_Type_Definition, Sloc);
  303.    begin
  304.       Set_Expression (N, Expression);
  305.       return N;
  306.    end Make_Modular_Type_Definition;
  307.  
  308.    function Make_Floating_Point_Definition (Sloc : Source_Ptr;
  309.       Digits_Expression            : Node_Id;
  310.       Real_Range_Specification     : Node_Id := Empty)
  311.       return Node_Id
  312.    is
  313.       N : constant Node_Id :=
  314.             New_Node (N_Floating_Point_Definition, Sloc);
  315.    begin
  316.       Set_Digits_Expression (N, Digits_Expression);
  317.       Set_Real_Range_Specification (N, Real_Range_Specification);
  318.       return N;
  319.    end Make_Floating_Point_Definition;
  320.  
  321.    function Make_Real_Range_Specification (Sloc : Source_Ptr;
  322.       Low_Bound                    : Node_Id;
  323.       High_Bound                   : Node_Id)
  324.       return Node_Id
  325.    is
  326.       N : constant Node_Id :=
  327.             New_Node (N_Real_Range_Specification, Sloc);
  328.    begin
  329.       Set_Low_Bound (N, Low_Bound);
  330.       Set_High_Bound (N, High_Bound);
  331.       return N;
  332.    end Make_Real_Range_Specification;
  333.  
  334.    function Make_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr;
  335.       Delta_Expression             : Node_Id;
  336.       Real_Range_Specification     : Node_Id)
  337.       return Node_Id
  338.    is
  339.       N : constant Node_Id :=
  340.             New_Node (N_Ordinary_Fixed_Point_Definition, Sloc);
  341.    begin
  342.       Set_Delta_Expression (N, Delta_Expression);
  343.       Set_Real_Range_Specification (N, Real_Range_Specification);
  344.       return N;
  345.    end Make_Ordinary_Fixed_Point_Definition;
  346.  
  347.    function Make_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr;
  348.       Delta_Expression             : Node_Id;
  349.       Digits_Expression            : Node_Id;
  350.       Real_Range_Specification     : Node_Id := Empty)
  351.       return Node_Id
  352.    is
  353.       N : constant Node_Id :=
  354.             New_Node (N_Decimal_Fixed_Point_Definition, Sloc);
  355.    begin
  356.       Set_Delta_Expression (N, Delta_Expression);
  357.       Set_Digits_Expression (N, Digits_Expression);
  358.       Set_Real_Range_Specification (N, Real_Range_Specification);
  359.       return N;
  360.    end Make_Decimal_Fixed_Point_Definition;
  361.  
  362.    function Make_Digits_Constraint (Sloc : Source_Ptr;
  363.       Digits_Expression            : Node_Id;
  364.       Range_Constraint             : Node_Id := Empty)
  365.       return Node_Id
  366.    is
  367.       N : constant Node_Id :=
  368.             New_Node (N_Digits_Constraint, Sloc);
  369.    begin
  370.       Set_Digits_Expression (N, Digits_Expression);
  371.       Set_Range_Constraint (N, Range_Constraint);
  372.       return N;
  373.    end Make_Digits_Constraint;
  374.  
  375.    function Make_Unconstrained_Array_Definition (Sloc : Source_Ptr;
  376.       Subtype_Marks                : List_Id;
  377.       Aliased_Present              : Boolean := False;
  378.       Subtype_Indication           : Node_Id)
  379.       return Node_Id
  380.    is
  381.       N : constant Node_Id :=
  382.             New_Node (N_Unconstrained_Array_Definition, Sloc);
  383.    begin
  384.       Set_Subtype_Marks (N, Subtype_Marks);
  385.       Set_Aliased_Present (N, Aliased_Present);
  386.       Set_Subtype_Indication (N, Subtype_Indication);
  387.       return N;
  388.    end Make_Unconstrained_Array_Definition;
  389.  
  390.    function Make_Constrained_Array_Definition (Sloc : Source_Ptr;
  391.       Discrete_Subtype_Definitions : List_Id;
  392.       Aliased_Present              : Boolean := False;
  393.       Subtype_Indication           : Node_Id)
  394.       return Node_Id
  395.    is
  396.       N : constant Node_Id :=
  397.             New_Node (N_Constrained_Array_Definition, Sloc);
  398.    begin
  399.       Set_Discrete_Subtype_Definitions
  400.         (N, Discrete_Subtype_Definitions);
  401.       Set_Aliased_Present (N, Aliased_Present);
  402.       Set_Subtype_Indication (N, Subtype_Indication);
  403.       return N;
  404.    end Make_Constrained_Array_Definition;
  405.  
  406.    function Make_Discriminant_Specification (Sloc : Source_Ptr;
  407.       Defining_Identifier          : Node_Id;
  408.       Discriminant_Type            : Node_Id;
  409.       Expression                   : Node_Id := Empty)
  410.       return Node_Id
  411.    is
  412.       N : constant Node_Id :=
  413.             New_Node (N_Discriminant_Specification, Sloc);
  414.    begin
  415.       Set_Defining_Identifier (N, Defining_Identifier);
  416.       Set_Discriminant_Type (N, Discriminant_Type);
  417.       Set_Expression (N, Expression);
  418.       return N;
  419.    end Make_Discriminant_Specification;
  420.  
  421.    function Make_Index_Or_Discriminant_Constraint (Sloc : Source_Ptr;
  422.       Constraints                  : List_Id)
  423.       return Node_Id
  424.    is
  425.       N : constant Node_Id :=
  426.             New_Node (N_Index_Or_Discriminant_Constraint, Sloc);
  427.    begin
  428.       Set_Constraints (N, Constraints);
  429.       return N;
  430.    end Make_Index_Or_Discriminant_Constraint;
  431.  
  432.    function Make_Discriminant_Association (Sloc : Source_Ptr;
  433.       Selector_Names               : List_Id;
  434.       Expression                   : Node_Id)
  435.       return Node_Id
  436.    is
  437.       N : constant Node_Id :=
  438.             New_Node (N_Discriminant_Association, Sloc);
  439.    begin
  440.       Set_Selector_Names (N, Selector_Names);
  441.       Set_Expression (N, Expression);
  442.       return N;
  443.    end Make_Discriminant_Association;
  444.  
  445.    function Make_Record_Definition (Sloc : Source_Ptr;
  446.       Abstract_Present             : Boolean := False;
  447.       Tagged_Present               : Boolean := False;
  448.       Limited_Present              : Boolean := False;
  449.       Component_List               : Node_Id;
  450.       Null_Present                 : Boolean := False)
  451.       return Node_Id
  452.    is
  453.       N : constant Node_Id :=
  454.             New_Node (N_Record_Definition, Sloc);
  455.    begin
  456.       Set_Abstract_Present (N, Abstract_Present);
  457.       Set_Tagged_Present (N, Tagged_Present);
  458.       Set_Limited_Present (N, Limited_Present);
  459.       Set_Component_List (N, Component_List);
  460.       Set_Null_Present (N, Null_Present);
  461.       return N;
  462.    end Make_Record_Definition;
  463.  
  464.    function Make_Component_List (Sloc : Source_Ptr;
  465.       Component_Items              : List_Id;
  466.       Variant_Part                 : Node_Id := Empty;
  467.       Null_Present                 : Boolean := False)
  468.       return Node_Id
  469.    is
  470.       N : constant Node_Id :=
  471.             New_Node (N_Component_List, Sloc);
  472.    begin
  473.       Set_Component_Items (N, Component_Items);
  474.       Set_Variant_Part (N, Variant_Part);
  475.       Set_Null_Present (N, Null_Present);
  476.       return N;
  477.    end Make_Component_List;
  478.  
  479.    function Make_Component_Declaration (Sloc : Source_Ptr;
  480.       Defining_Identifier          : Node_Id;
  481.       Aliased_Present              : Boolean := False;
  482.       Subtype_Indication           : Node_Id;
  483.       Expression                   : Node_Id := Empty)
  484.       return Node_Id
  485.    is
  486.       N : constant Node_Id :=
  487.             New_Node (N_Component_Declaration, Sloc);
  488.    begin
  489.       Set_Defining_Identifier (N, Defining_Identifier);
  490.       Set_Aliased_Present (N, Aliased_Present);
  491.       Set_Subtype_Indication (N, Subtype_Indication);
  492.       Set_Expression (N, Expression);
  493.       return N;
  494.    end Make_Component_Declaration;
  495.  
  496.    function Make_Variant_Part (Sloc : Source_Ptr;
  497.       Name                         : Node_Id;
  498.       Variants                     : List_Id)
  499.       return Node_Id
  500.    is
  501.       N : constant Node_Id :=
  502.             New_Node (N_Variant_Part, Sloc);
  503.    begin
  504.       Set_Name (N, Name);
  505.       Set_Variants (N, Variants);
  506.       return N;
  507.    end Make_Variant_Part;
  508.  
  509.    function Make_Variant (Sloc : Source_Ptr;
  510.       Discrete_Choices             : List_Id;
  511.       Component_List               : Node_Id)
  512.       return Node_Id
  513.    is
  514.       N : constant Node_Id :=
  515.             New_Node (N_Variant, Sloc);
  516.    begin
  517.       Set_Discrete_Choices (N, Discrete_Choices);
  518.       Set_Component_List (N, Component_List);
  519.       return N;
  520.    end Make_Variant;
  521.  
  522.    function Make_Others_Choice (Sloc : Source_Ptr)
  523.       return Node_Id
  524.    is
  525.       N : constant Node_Id :=
  526.             New_Node (N_Others_Choice, Sloc);
  527.    begin
  528.       return N;
  529.    end Make_Others_Choice;
  530.  
  531.    function Make_Access_To_Object_Definition (Sloc : Source_Ptr;
  532.       All_Present                  : Boolean := False;
  533.       Subtype_Indication           : Node_Id;
  534.       Constant_Present             : Boolean := False)
  535.       return Node_Id
  536.    is
  537.       N : constant Node_Id :=
  538.             New_Node (N_Access_To_Object_Definition, Sloc);
  539.    begin
  540.       Set_All_Present (N, All_Present);
  541.       Set_Subtype_Indication (N, Subtype_Indication);
  542.       Set_Constant_Present (N, Constant_Present);
  543.       return N;
  544.    end Make_Access_To_Object_Definition;
  545.  
  546.    function Make_Access_Function_Definition (Sloc : Source_Ptr;
  547.       Protected_Present            : Boolean := False;
  548.       Parameter_Specifications     : List_Id := No_List;
  549.       Subtype_Mark                 : Node_Id)
  550.       return Node_Id
  551.    is
  552.       N : constant Node_Id :=
  553.             New_Node (N_Access_Function_Definition, Sloc);
  554.    begin
  555.       Set_Protected_Present (N, Protected_Present);
  556.       Set_Parameter_Specifications (N, Parameter_Specifications);
  557.       Set_Subtype_Mark (N, Subtype_Mark);
  558.       return N;
  559.    end Make_Access_Function_Definition;
  560.  
  561.    function Make_Access_Procedure_Definition (Sloc : Source_Ptr;
  562.       Protected_Present            : Boolean := False;
  563.       Parameter_Specifications     : List_Id := No_List)
  564.       return Node_Id
  565.    is
  566.       N : constant Node_Id :=
  567.             New_Node (N_Access_Procedure_Definition, Sloc);
  568.    begin
  569.       Set_Protected_Present (N, Protected_Present);
  570.       Set_Parameter_Specifications (N, Parameter_Specifications);
  571.       return N;
  572.    end Make_Access_Procedure_Definition;
  573.  
  574.    function Make_Access_Definition (Sloc : Source_Ptr;
  575.       Subtype_Mark                 : Node_Id)
  576.       return Node_Id
  577.    is
  578.       N : constant Node_Id :=
  579.             New_Node (N_Access_Definition, Sloc);
  580.    begin
  581.       Set_Subtype_Mark (N, Subtype_Mark);
  582.       return N;
  583.    end Make_Access_Definition;
  584.  
  585.    function Make_Incomplete_Type_Declaration (Sloc : Source_Ptr;
  586.       Defining_Identifier          : Node_Id;
  587.       Discriminant_Specifications  : List_Id := No_List;
  588.       Unknown_Discriminants_Present : Boolean := False)
  589.       return Node_Id
  590.    is
  591.       N : constant Node_Id :=
  592.             New_Node (N_Incomplete_Type_Declaration, Sloc);
  593.    begin
  594.       Set_Defining_Identifier (N, Defining_Identifier);
  595.       Set_Discriminant_Specifications (N, Discriminant_Specifications);
  596.       Set_Unknown_Discriminants_Present
  597.         (N, Unknown_Discriminants_Present);
  598.       return N;
  599.    end Make_Incomplete_Type_Declaration;
  600.  
  601.    function Make_Explicit_Dereference (Sloc : Source_Ptr;
  602.       Prefix                       : Node_Id)
  603.       return Node_Id
  604.    is
  605.       N : constant Node_Id :=
  606.             New_Node (N_Explicit_Dereference, Sloc);
  607.    begin
  608.       Set_Prefix (N, Prefix);
  609.       return N;
  610.    end Make_Explicit_Dereference;
  611.  
  612.    function Make_Indexed_Component (Sloc : Source_Ptr;
  613.       Prefix                       : Node_Id;
  614.       Expressions                  : List_Id)
  615.       return Node_Id
  616.    is
  617.       N : constant Node_Id :=
  618.             New_Node (N_Indexed_Component, Sloc);
  619.    begin
  620.       Set_Prefix (N, Prefix);
  621.       Set_Expressions (N, Expressions);
  622.       return N;
  623.    end Make_Indexed_Component;
  624.  
  625.    function Make_Slice (Sloc : Source_Ptr;
  626.       Prefix                       : Node_Id;
  627.       Discrete_Range               : Node_Id)
  628.       return Node_Id
  629.    is
  630.       N : constant Node_Id :=
  631.             New_Node (N_Slice, Sloc);
  632.    begin
  633.       Set_Prefix (N, Prefix);
  634.       Set_Discrete_Range (N, Discrete_Range);
  635.       return N;
  636.    end Make_Slice;
  637.  
  638.    function Make_Selected_Component (Sloc : Source_Ptr;
  639.       Prefix                       : Node_Id;
  640.       Selector_Name                : Node_Id)
  641.       return Node_Id
  642.    is
  643.       N : constant Node_Id :=
  644.             New_Node (N_Selected_Component, Sloc);
  645.    begin
  646.       Set_Prefix (N, Prefix);
  647.       Set_Selector_Name (N, Selector_Name);
  648.       return N;
  649.    end Make_Selected_Component;
  650.  
  651.    function Make_Attribute_Reference (Sloc : Source_Ptr;
  652.       Prefix                       : Node_Id;
  653.       Attribute_Name               : Name_Id;
  654.       Expressions                  : List_Id := No_List)
  655.       return Node_Id
  656.    is
  657.       N : constant Node_Id :=
  658.             New_Node (N_Attribute_Reference, Sloc);
  659.    begin
  660.       Set_Prefix (N, Prefix);
  661.       Set_Attribute_Name (N, Attribute_Name);
  662.       Set_Expressions (N, Expressions);
  663.       return N;
  664.    end Make_Attribute_Reference;
  665.  
  666.    function Make_Aggregate (Sloc : Source_Ptr;
  667.       Expressions                  : List_Id := No_List;
  668.       Component_Associations       : List_Id := No_List;
  669.       Null_Record_Present          : Boolean := False)
  670.       return Node_Id
  671.    is
  672.       N : constant Node_Id :=
  673.             New_Node (N_Aggregate, Sloc);
  674.    begin
  675.       Set_Expressions (N, Expressions);
  676.       Set_Component_Associations (N, Component_Associations);
  677.       Set_Null_Record_Present (N, Null_Record_Present);
  678.       return N;
  679.    end Make_Aggregate;
  680.  
  681.    function Make_Component_Association (Sloc : Source_Ptr;
  682.       Choices                      : List_Id;
  683.       Expression                   : Node_Id)
  684.       return Node_Id
  685.    is
  686.       N : constant Node_Id :=
  687.             New_Node (N_Component_Association, Sloc);
  688.    begin
  689.       Set_Choices (N, Choices);
  690.       Set_Expression (N, Expression);
  691.       return N;
  692.    end Make_Component_Association;
  693.  
  694.    function Make_Extension_Aggregate (Sloc : Source_Ptr;
  695.       Ancestor_Part                : Node_Id;
  696.       Expressions                  : List_Id := No_List;
  697.       Component_Associations       : List_Id := No_List;
  698.       Null_Record_Present          : Boolean := False)
  699.       return Node_Id
  700.    is
  701.       N : constant Node_Id :=
  702.             New_Node (N_Extension_Aggregate, Sloc);
  703.    begin
  704.       Set_Ancestor_Part (N, Ancestor_Part);
  705.       Set_Expressions (N, Expressions);
  706.       Set_Component_Associations (N, Component_Associations);
  707.       Set_Null_Record_Present (N, Null_Record_Present);
  708.       return N;
  709.    end Make_Extension_Aggregate;
  710.  
  711.    function Make_Null (Sloc : Source_Ptr)
  712.       return Node_Id
  713.    is
  714.       N : constant Node_Id :=
  715.             New_Node (N_Null, Sloc);
  716.    begin
  717.       return N;
  718.    end Make_Null;
  719.  
  720.    function Make_And_Then (Sloc : Source_Ptr;
  721.       Left_Opnd                    : Node_Id;
  722.       Right_Opnd                   : Node_Id)
  723.       return Node_Id
  724.    is
  725.       N : constant Node_Id :=
  726.             New_Node (N_And_Then, Sloc);
  727.    begin
  728.       Set_Left_Opnd (N, Left_Opnd);
  729.       Set_Right_Opnd (N, Right_Opnd);
  730.       return N;
  731.    end Make_And_Then;
  732.  
  733.    function Make_Or_Else (Sloc : Source_Ptr;
  734.       Left_Opnd                    : Node_Id;
  735.       Right_Opnd                   : Node_Id)
  736.       return Node_Id
  737.    is
  738.       N : constant Node_Id :=
  739.             New_Node (N_Or_Else, Sloc);
  740.    begin
  741.       Set_Left_Opnd (N, Left_Opnd);
  742.       Set_Right_Opnd (N, Right_Opnd);
  743.       return N;
  744.    end Make_Or_Else;
  745.  
  746.    function Make_In (Sloc : Source_Ptr;
  747.       Left_Opnd                    : Node_Id;
  748.       Right_Opnd                   : Node_Id)
  749.       return Node_Id
  750.    is
  751.       N : constant Node_Id :=
  752.             New_Node (N_In, Sloc);
  753.    begin
  754.       Set_Left_Opnd (N, Left_Opnd);
  755.       Set_Right_Opnd (N, Right_Opnd);
  756.       return N;
  757.    end Make_In;
  758.  
  759.    function Make_Not_In (Sloc : Source_Ptr;
  760.       Left_Opnd                    : Node_Id;
  761.       Right_Opnd                   : Node_Id)
  762.       return Node_Id
  763.    is
  764.       N : constant Node_Id :=
  765.             New_Node (N_Not_In, Sloc);
  766.    begin
  767.       Set_Left_Opnd (N, Left_Opnd);
  768.       Set_Right_Opnd (N, Right_Opnd);
  769.       return N;
  770.    end Make_Not_In;
  771.  
  772.    function Make_Op_And (Sloc : Source_Ptr;
  773.       Left_Opnd                    : Node_Id;
  774.       Right_Opnd                   : Node_Id)
  775.       return Node_Id
  776.    is
  777.       N : constant Node_Id :=
  778.             New_Node (N_Op_And, Sloc);
  779.    begin
  780.       Set_Left_Opnd (N, Left_Opnd);
  781.       Set_Right_Opnd (N, Right_Opnd);
  782.       Set_Chars (N, Name_Op_And);
  783.       Set_Entity (N, Standard_Op_And);
  784.       return N;
  785.    end Make_Op_And;
  786.  
  787.    function Make_Op_Or (Sloc : Source_Ptr;
  788.       Left_Opnd                    : Node_Id;
  789.       Right_Opnd                   : Node_Id)
  790.       return Node_Id
  791.    is
  792.       N : constant Node_Id :=
  793.             New_Node (N_Op_Or, Sloc);
  794.    begin
  795.       Set_Left_Opnd (N, Left_Opnd);
  796.       Set_Right_Opnd (N, Right_Opnd);
  797.       Set_Chars (N, Name_Op_Or);
  798.       Set_Entity (N, Standard_Op_Or);
  799.       return N;
  800.    end Make_Op_Or;
  801.  
  802.    function Make_Op_Xor (Sloc : Source_Ptr;
  803.       Left_Opnd                    : Node_Id;
  804.       Right_Opnd                   : Node_Id)
  805.       return Node_Id
  806.    is
  807.       N : constant Node_Id :=
  808.             New_Node (N_Op_Xor, Sloc);
  809.    begin
  810.       Set_Left_Opnd (N, Left_Opnd);
  811.       Set_Right_Opnd (N, Right_Opnd);
  812.       Set_Chars (N, Name_Op_Xor);
  813.       Set_Entity (N, Standard_Op_Xor);
  814.       return N;
  815.    end Make_Op_Xor;
  816.  
  817.    function Make_Op_Eq (Sloc : Source_Ptr;
  818.       Left_Opnd                    : Node_Id;
  819.       Right_Opnd                   : Node_Id)
  820.       return Node_Id
  821.    is
  822.       N : constant Node_Id :=
  823.             New_Node (N_Op_Eq, Sloc);
  824.    begin
  825.       Set_Left_Opnd (N, Left_Opnd);
  826.       Set_Right_Opnd (N, Right_Opnd);
  827.       Set_Chars (N, Name_Op_Eq);
  828.       Set_Entity (N, Standard_Op_Eq);
  829.       return N;
  830.    end Make_Op_Eq;
  831.  
  832.    function Make_Op_Ne (Sloc : Source_Ptr;
  833.       Left_Opnd                    : Node_Id;
  834.       Right_Opnd                   : Node_Id)
  835.       return Node_Id
  836.    is
  837.       N : constant Node_Id :=
  838.             New_Node (N_Op_Ne, Sloc);
  839.    begin
  840.       Set_Left_Opnd (N, Left_Opnd);
  841.       Set_Right_Opnd (N, Right_Opnd);
  842.       Set_Chars (N, Name_Op_Ne);
  843.       Set_Entity (N, Standard_Op_Ne);
  844.       return N;
  845.    end Make_Op_Ne;
  846.  
  847.    function Make_Op_Lt (Sloc : Source_Ptr;
  848.       Left_Opnd                    : Node_Id;
  849.       Right_Opnd                   : Node_Id)
  850.       return Node_Id
  851.    is
  852.       N : constant Node_Id :=
  853.             New_Node (N_Op_Lt, Sloc);
  854.    begin
  855.       Set_Left_Opnd (N, Left_Opnd);
  856.       Set_Right_Opnd (N, Right_Opnd);
  857.       Set_Chars (N, Name_Op_Lt);
  858.       Set_Entity (N, Standard_Op_Lt);
  859.       return N;
  860.    end Make_Op_Lt;
  861.  
  862.    function Make_Op_Le (Sloc : Source_Ptr;
  863.       Left_Opnd                    : Node_Id;
  864.       Right_Opnd                   : Node_Id)
  865.       return Node_Id
  866.    is
  867.       N : constant Node_Id :=
  868.             New_Node (N_Op_Le, Sloc);
  869.    begin
  870.       Set_Left_Opnd (N, Left_Opnd);
  871.       Set_Right_Opnd (N, Right_Opnd);
  872.       Set_Chars (N, Name_Op_Le);
  873.       Set_Entity (N, Standard_Op_Le);
  874.       return N;
  875.    end Make_Op_Le;
  876.  
  877.    function Make_Op_Gt (Sloc : Source_Ptr;
  878.       Left_Opnd                    : Node_Id;
  879.       Right_Opnd                   : Node_Id)
  880.       return Node_Id
  881.    is
  882.       N : constant Node_Id :=
  883.             New_Node (N_Op_Gt, Sloc);
  884.    begin
  885.       Set_Left_Opnd (N, Left_Opnd);
  886.       Set_Right_Opnd (N, Right_Opnd);
  887.       Set_Chars (N, Name_Op_Gt);
  888.       Set_Entity (N, Standard_Op_Gt);
  889.       return N;
  890.    end Make_Op_Gt;
  891.  
  892.    function Make_Op_Ge (Sloc : Source_Ptr;
  893.       Left_Opnd                    : Node_Id;
  894.       Right_Opnd                   : Node_Id)
  895.       return Node_Id
  896.    is
  897.       N : constant Node_Id :=
  898.             New_Node (N_Op_Ge, Sloc);
  899.    begin
  900.       Set_Left_Opnd (N, Left_Opnd);
  901.       Set_Right_Opnd (N, Right_Opnd);
  902.       Set_Chars (N, Name_Op_Ge);
  903.       Set_Entity (N, Standard_Op_Ge);
  904.       return N;
  905.    end Make_Op_Ge;
  906.  
  907.    function Make_Op_Add (Sloc : Source_Ptr;
  908.       Left_Opnd                    : Node_Id;
  909.       Right_Opnd                   : Node_Id)
  910.       return Node_Id
  911.    is
  912.       N : constant Node_Id :=
  913.             New_Node (N_Op_Add, Sloc);
  914.    begin
  915.       Set_Left_Opnd (N, Left_Opnd);
  916.       Set_Right_Opnd (N, Right_Opnd);
  917.       Set_Chars (N, Name_Op_Add);
  918.       Set_Entity (N, Standard_Op_Add);
  919.       return N;
  920.    end Make_Op_Add;
  921.  
  922.    function Make_Op_Subtract (Sloc : Source_Ptr;
  923.       Left_Opnd                    : Node_Id;
  924.       Right_Opnd                   : Node_Id)
  925.       return Node_Id
  926.    is
  927.       N : constant Node_Id :=
  928.             New_Node (N_Op_Subtract, Sloc);
  929.    begin
  930.       Set_Left_Opnd (N, Left_Opnd);
  931.       Set_Right_Opnd (N, Right_Opnd);
  932.       Set_Chars (N, Name_Op_Subtract);
  933.       Set_Entity (N, Standard_Op_Subtract);
  934.       return N;
  935.    end Make_Op_Subtract;
  936.  
  937.    function Make_Op_Concat (Sloc : Source_Ptr;
  938.       Left_Opnd                    : Node_Id;
  939.       Right_Opnd                   : Node_Id)
  940.       return Node_Id
  941.    is
  942.       N : constant Node_Id :=
  943.             New_Node (N_Op_Concat, Sloc);
  944.    begin
  945.       Set_Left_Opnd (N, Left_Opnd);
  946.       Set_Right_Opnd (N, Right_Opnd);
  947.       Set_Chars (N, Name_Op_Concat);
  948.       Set_Entity (N, Standard_Op_Concat);
  949.       return N;
  950.    end Make_Op_Concat;
  951.  
  952.    function Make_Op_Multiply (Sloc : Source_Ptr;
  953.       Left_Opnd                    : Node_Id;
  954.       Right_Opnd                   : Node_Id)
  955.       return Node_Id
  956.    is
  957.       N : constant Node_Id :=
  958.             New_Node (N_Op_Multiply, Sloc);
  959.    begin
  960.       Set_Left_Opnd (N, Left_Opnd);
  961.       Set_Right_Opnd (N, Right_Opnd);
  962.       Set_Chars (N, Name_Op_Multiply);
  963.       Set_Entity (N, Standard_Op_Multiply);
  964.       return N;
  965.    end Make_Op_Multiply;
  966.  
  967.    function Make_Op_Divide (Sloc : Source_Ptr;
  968.       Left_Opnd                    : Node_Id;
  969.       Right_Opnd                   : Node_Id)
  970.       return Node_Id
  971.    is
  972.       N : constant Node_Id :=
  973.             New_Node (N_Op_Divide, Sloc);
  974.    begin
  975.       Set_Left_Opnd (N, Left_Opnd);
  976.       Set_Right_Opnd (N, Right_Opnd);
  977.       Set_Chars (N, Name_Op_Divide);
  978.       Set_Entity (N, Standard_Op_Divide);
  979.       return N;
  980.    end Make_Op_Divide;
  981.  
  982.    function Make_Op_Mod (Sloc : Source_Ptr;
  983.       Left_Opnd                    : Node_Id;
  984.       Right_Opnd                   : Node_Id)
  985.       return Node_Id
  986.    is
  987.       N : constant Node_Id :=
  988.             New_Node (N_Op_Mod, Sloc);
  989.    begin
  990.       Set_Left_Opnd (N, Left_Opnd);
  991.       Set_Right_Opnd (N, Right_Opnd);
  992.       Set_Chars (N, Name_Op_Mod);
  993.       Set_Entity (N, Standard_Op_Mod);
  994.       return N;
  995.    end Make_Op_Mod;
  996.  
  997.    function Make_Op_Rem (Sloc : Source_Ptr;
  998.       Left_Opnd                    : Node_Id;
  999.       Right_Opnd                   : Node_Id)
  1000.       return Node_Id
  1001.    is
  1002.       N : constant Node_Id :=
  1003.             New_Node (N_Op_Rem, Sloc);
  1004.    begin
  1005.       Set_Left_Opnd (N, Left_Opnd);
  1006.       Set_Right_Opnd (N, Right_Opnd);
  1007.       Set_Chars (N, Name_Op_Rem);
  1008.       Set_Entity (N, Standard_Op_Rem);
  1009.       return N;
  1010.    end Make_Op_Rem;
  1011.  
  1012.    function Make_Op_Expon (Sloc : Source_Ptr;
  1013.       Left_Opnd                    : Node_Id;
  1014.       Right_Opnd                   : Node_Id)
  1015.       return Node_Id
  1016.    is
  1017.       N : constant Node_Id :=
  1018.             New_Node (N_Op_Expon, Sloc);
  1019.    begin
  1020.       Set_Left_Opnd (N, Left_Opnd);
  1021.       Set_Right_Opnd (N, Right_Opnd);
  1022.       Set_Chars (N, Name_Op_Expon);
  1023.       Set_Entity (N, Standard_Op_Expon);
  1024.       return N;
  1025.    end Make_Op_Expon;
  1026.  
  1027.    function Make_Op_Plus (Sloc : Source_Ptr;
  1028.       Right_Opnd                   : Node_Id)
  1029.       return Node_Id
  1030.    is
  1031.       N : constant Node_Id :=
  1032.             New_Node (N_Op_Plus, Sloc);
  1033.    begin
  1034.       Set_Right_Opnd (N, Right_Opnd);
  1035.       Set_Chars (N, Name_Op_Add);
  1036.       Set_Entity (N, Standard_Op_Plus);
  1037.       return N;
  1038.    end Make_Op_Plus;
  1039.  
  1040.    function Make_Op_Minus (Sloc : Source_Ptr;
  1041.       Right_Opnd                   : Node_Id)
  1042.       return Node_Id
  1043.    is
  1044.       N : constant Node_Id :=
  1045.             New_Node (N_Op_Minus, Sloc);
  1046.    begin
  1047.       Set_Right_Opnd (N, Right_Opnd);
  1048.       Set_Chars (N, Name_Op_Subtract);
  1049.       Set_Entity (N, Standard_Op_Minus);
  1050.       return N;
  1051.    end Make_Op_Minus;
  1052.  
  1053.    function Make_Op_Abs (Sloc : Source_Ptr;
  1054.       Right_Opnd                   : Node_Id)
  1055.       return Node_Id
  1056.    is
  1057.       N : constant Node_Id :=
  1058.             New_Node (N_Op_Abs, Sloc);
  1059.    begin
  1060.       Set_Right_Opnd (N, Right_Opnd);
  1061.       Set_Chars (N, Name_Op_Abs);
  1062.       Set_Entity (N, Standard_Op_Abs);
  1063.       return N;
  1064.    end Make_Op_Abs;
  1065.  
  1066.    function Make_Op_Not (Sloc : Source_Ptr;
  1067.       Right_Opnd                   : Node_Id)
  1068.       return Node_Id
  1069.    is
  1070.       N : constant Node_Id :=
  1071.             New_Node (N_Op_Not, Sloc);
  1072.    begin
  1073.       Set_Right_Opnd (N, Right_Opnd);
  1074.       Set_Chars (N, Name_Op_Not);
  1075.       Set_Entity (N, Standard_Op_Not);
  1076.       return N;
  1077.    end Make_Op_Not;
  1078.  
  1079.    function Make_Type_Conversion (Sloc : Source_Ptr;
  1080.       Subtype_Mark                 : Node_Id;
  1081.       Expression                   : Node_Id)
  1082.       return Node_Id
  1083.    is
  1084.       N : constant Node_Id :=
  1085.             New_Node (N_Type_Conversion, Sloc);
  1086.    begin
  1087.       Set_Subtype_Mark (N, Subtype_Mark);
  1088.       Set_Expression (N, Expression);
  1089.       return N;
  1090.    end Make_Type_Conversion;
  1091.  
  1092.    function Make_Qualified_Expression (Sloc : Source_Ptr;
  1093.       Subtype_Mark                 : Node_Id;
  1094.       Expression                   : Node_Id)
  1095.       return Node_Id
  1096.    is
  1097.       N : constant Node_Id :=
  1098.             New_Node (N_Qualified_Expression, Sloc);
  1099.    begin
  1100.       Set_Subtype_Mark (N, Subtype_Mark);
  1101.       Set_Expression (N, Expression);
  1102.       return N;
  1103.    end Make_Qualified_Expression;
  1104.  
  1105.    function Make_Allocator (Sloc : Source_Ptr;
  1106.       Expression                   : Node_Id)
  1107.       return Node_Id
  1108.    is
  1109.       N : constant Node_Id :=
  1110.             New_Node (N_Allocator, Sloc);
  1111.    begin
  1112.       Set_Expression (N, Expression);
  1113.       return N;
  1114.    end Make_Allocator;
  1115.  
  1116.    function Make_Null_Statement (Sloc : Source_Ptr)
  1117.       return Node_Id
  1118.    is
  1119.       N : constant Node_Id :=
  1120.             New_Node (N_Null_Statement, Sloc);
  1121.    begin
  1122.       return N;
  1123.    end Make_Null_Statement;
  1124.  
  1125.    function Make_Label (Sloc : Source_Ptr;
  1126.       Identifier                   : Node_Id)
  1127.       return Node_Id
  1128.    is
  1129.       N : constant Node_Id :=
  1130.             New_Node (N_Label, Sloc);
  1131.    begin
  1132.       Set_Identifier (N, Identifier);
  1133.       return N;
  1134.    end Make_Label;
  1135.  
  1136.    function Make_Assignment_Statement (Sloc : Source_Ptr;
  1137.       Name                         : Node_Id;
  1138.       Expression                   : Node_Id)
  1139.       return Node_Id
  1140.    is
  1141.       N : constant Node_Id :=
  1142.             New_Node (N_Assignment_Statement, Sloc);
  1143.    begin
  1144.       Set_Name (N, Name);
  1145.       Set_Expression (N, Expression);
  1146.       return N;
  1147.    end Make_Assignment_Statement;
  1148.  
  1149.    function Make_If_Statement (Sloc : Source_Ptr;
  1150.       Condition                    : Node_Id;
  1151.       Then_Statements              : List_Id;
  1152.       Elsif_Parts                  : List_Id := No_List;
  1153.       Else_Statements              : List_Id := No_List)
  1154.       return Node_Id
  1155.    is
  1156.       N : constant Node_Id :=
  1157.             New_Node (N_If_Statement, Sloc);
  1158.    begin
  1159.       Set_Condition (N, Condition);
  1160.       Set_Then_Statements (N, Then_Statements);
  1161.       Set_Elsif_Parts (N, Elsif_Parts);
  1162.       Set_Else_Statements (N, Else_Statements);
  1163.       return N;
  1164.    end Make_If_Statement;
  1165.  
  1166.    function Make_Elsif_Part (Sloc : Source_Ptr;
  1167.       Condition                    : Node_Id;
  1168.       Then_Statements              : List_Id)
  1169.       return Node_Id
  1170.    is
  1171.       N : constant Node_Id :=
  1172.             New_Node (N_Elsif_Part, Sloc);
  1173.    begin
  1174.       Set_Condition (N, Condition);
  1175.       Set_Then_Statements (N, Then_Statements);
  1176.       return N;
  1177.    end Make_Elsif_Part;
  1178.  
  1179.    function Make_Case_Statement (Sloc : Source_Ptr;
  1180.       Expression                   : Node_Id;
  1181.       Alternatives                 : List_Id)
  1182.       return Node_Id
  1183.    is
  1184.       N : constant Node_Id :=
  1185.             New_Node (N_Case_Statement, Sloc);
  1186.    begin
  1187.       Set_Expression (N, Expression);
  1188.       Set_Alternatives (N, Alternatives);
  1189.       return N;
  1190.    end Make_Case_Statement;
  1191.  
  1192.    function Make_Case_Statement_Alternative (Sloc : Source_Ptr;
  1193.       Discrete_Choices             : List_Id;
  1194.       Statements                   : List_Id)
  1195.       return Node_Id
  1196.    is
  1197.       N : constant Node_Id :=
  1198.             New_Node (N_Case_Statement_Alternative, Sloc);
  1199.    begin
  1200.       Set_Discrete_Choices (N, Discrete_Choices);
  1201.       Set_Statements (N, Statements);
  1202.       return N;
  1203.    end Make_Case_Statement_Alternative;
  1204.  
  1205.    function Make_Loop_Statement (Sloc : Source_Ptr;
  1206.       Identifier                   : Node_Id := Empty;
  1207.       Iteration_Scheme             : Node_Id := Empty;
  1208.       Statements                   : List_Id;
  1209.       Has_Created_Identifier       : Boolean := False)
  1210.       return Node_Id
  1211.    is
  1212.       N : constant Node_Id :=
  1213.             New_Node (N_Loop_Statement, Sloc);
  1214.    begin
  1215.       Set_Identifier (N, Identifier);
  1216.       Set_Iteration_Scheme (N, Iteration_Scheme);
  1217.       Set_Statements (N, Statements);
  1218.       Set_Has_Created_Identifier (N, Has_Created_Identifier);
  1219.       return N;
  1220.    end Make_Loop_Statement;
  1221.  
  1222.    function Make_Iteration_Scheme (Sloc : Source_Ptr;
  1223.       Condition                    : Node_Id := Empty;
  1224.       Loop_Parameter_Specification : Node_Id := Empty)
  1225.       return Node_Id
  1226.    is
  1227.       N : constant Node_Id :=
  1228.             New_Node (N_Iteration_Scheme, Sloc);
  1229.    begin
  1230.       Set_Condition (N, Condition);
  1231.       Set_Loop_Parameter_Specification
  1232.         (N, Loop_Parameter_Specification);
  1233.       return N;
  1234.    end Make_Iteration_Scheme;
  1235.  
  1236.    function Make_Loop_Parameter_Specification (Sloc : Source_Ptr;
  1237.       Defining_Identifier          : Node_Id;
  1238.       Reverse_Present              : Boolean := False;
  1239.       Discrete_Subtype_Definition  : Node_Id)
  1240.       return Node_Id
  1241.    is
  1242.       N : constant Node_Id :=
  1243.             New_Node (N_Loop_Parameter_Specification, Sloc);
  1244.    begin
  1245.       Set_Defining_Identifier (N, Defining_Identifier);
  1246.       Set_Reverse_Present (N, Reverse_Present);
  1247.       Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
  1248.       return N;
  1249.    end Make_Loop_Parameter_Specification;
  1250.  
  1251.    function Make_Block_Statement (Sloc : Source_Ptr;
  1252.       Identifier                   : Node_Id := Empty;
  1253.       Declarations                 : List_Id := No_List;
  1254.       Handled_Statement_Sequence   : Node_Id;
  1255.       Has_Created_Identifier       : Boolean := False)
  1256.       return Node_Id
  1257.    is
  1258.       N : constant Node_Id :=
  1259.             New_Node (N_Block_Statement, Sloc);
  1260.    begin
  1261.       Set_Identifier (N, Identifier);
  1262.       Set_Declarations (N, Declarations);
  1263.       Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
  1264.       Set_Has_Created_Identifier (N, Has_Created_Identifier);
  1265.       return N;
  1266.    end Make_Block_Statement;
  1267.  
  1268.    function Make_Exit_Statement (Sloc : Source_Ptr;
  1269.       Name                         : Node_Id := Empty;
  1270.       Condition                    : Node_Id := Empty)
  1271.       return Node_Id
  1272.    is
  1273.       N : constant Node_Id :=
  1274.             New_Node (N_Exit_Statement, Sloc);
  1275.    begin
  1276.       Set_Name (N, Name);
  1277.       Set_Condition (N, Condition);
  1278.       return N;
  1279.    end Make_Exit_Statement;
  1280.  
  1281.    function Make_Goto_Statement (Sloc : Source_Ptr;
  1282.       Name                         : Node_Id)
  1283.       return Node_Id
  1284.    is
  1285.       N : constant Node_Id :=
  1286.             New_Node (N_Goto_Statement, Sloc);
  1287.    begin
  1288.       Set_Name (N, Name);
  1289.       return N;
  1290.    end Make_Goto_Statement;
  1291.  
  1292.    function Make_Subprogram_Declaration (Sloc : Source_Ptr;
  1293.       Specification                : Node_Id)
  1294.       return Node_Id
  1295.    is
  1296.       N : constant Node_Id :=
  1297.             New_Node (N_Subprogram_Declaration, Sloc);
  1298.    begin
  1299.       Set_Specification (N, Specification);
  1300.       return N;
  1301.    end Make_Subprogram_Declaration;
  1302.  
  1303.    function Make_Abstract_Subprogram_Declaration (Sloc : Source_Ptr;
  1304.       Specification                : Node_Id)
  1305.       return Node_Id
  1306.    is
  1307.       N : constant Node_Id :=
  1308.             New_Node (N_Abstract_Subprogram_Declaration, Sloc);
  1309.    begin
  1310.       Set_Specification (N, Specification);
  1311.       return N;
  1312.    end Make_Abstract_Subprogram_Declaration;
  1313.  
  1314.    function Make_Function_Specification (Sloc : Source_Ptr;
  1315.       Defining_Unit_Name           : Node_Id;
  1316.       Parameter_Specifications     : List_Id := No_List;
  1317.       Subtype_Mark                 : Node_Id)
  1318.       return Node_Id
  1319.    is
  1320.       N : constant Node_Id :=
  1321.             New_Node (N_Function_Specification, Sloc);
  1322.    begin
  1323.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1324.       Set_Parameter_Specifications (N, Parameter_Specifications);
  1325.       Set_Subtype_Mark (N, Subtype_Mark);
  1326.       return N;
  1327.    end Make_Function_Specification;
  1328.  
  1329.    function Make_Procedure_Specification (Sloc : Source_Ptr;
  1330.       Defining_Unit_Name           : Node_Id;
  1331.       Parameter_Specifications     : List_Id := No_List)
  1332.       return Node_Id
  1333.    is
  1334.       N : constant Node_Id :=
  1335.             New_Node (N_Procedure_Specification, Sloc);
  1336.    begin
  1337.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1338.       Set_Parameter_Specifications (N, Parameter_Specifications);
  1339.       return N;
  1340.    end Make_Procedure_Specification;
  1341.  
  1342.    function Make_Designator (Sloc : Source_Ptr;
  1343.       Name                         : Node_Id;
  1344.       Identifier                   : Node_Id)
  1345.       return Node_Id
  1346.    is
  1347.       N : constant Node_Id :=
  1348.             New_Node (N_Designator, Sloc);
  1349.    begin
  1350.       Set_Name (N, Name);
  1351.       Set_Identifier (N, Identifier);
  1352.       return N;
  1353.    end Make_Designator;
  1354.  
  1355.    function Make_Defining_Program_Unit_Name (Sloc : Source_Ptr;
  1356.       Name                         : Node_Id;
  1357.       Defining_Identifier          : Node_Id)
  1358.       return Node_Id
  1359.    is
  1360.       N : constant Node_Id :=
  1361.             New_Node (N_Defining_Program_Unit_Name, Sloc);
  1362.    begin
  1363.       Set_Name (N, Name);
  1364.       Set_Defining_Identifier (N, Defining_Identifier);
  1365.       return N;
  1366.    end Make_Defining_Program_Unit_Name;
  1367.  
  1368.    function Make_Operator_Symbol (Sloc : Source_Ptr;
  1369.       Chars                        : Name_Id;
  1370.       Strval                       : String_Id)
  1371.       return Node_Id
  1372.    is
  1373.       N : constant Node_Id :=
  1374.             New_Node (N_Operator_Symbol, Sloc);
  1375.    begin
  1376.       Set_Chars (N, Chars);
  1377.       Set_Strval (N, Strval);
  1378.       return N;
  1379.    end Make_Operator_Symbol;
  1380.  
  1381.    function Make_Defining_Operator_Symbol (Sloc : Source_Ptr;
  1382.       Chars                        : Name_Id)
  1383.       return Node_Id
  1384.    is
  1385.       N : constant Node_Id :=
  1386.             New_Entity (N_Defining_Operator_Symbol, Sloc);
  1387.    begin
  1388.       Set_Chars (N, Chars);
  1389.       return N;
  1390.    end Make_Defining_Operator_Symbol;
  1391.  
  1392.    function Make_Parameter_Specification (Sloc : Source_Ptr;
  1393.       Defining_Identifier          : Node_Id;
  1394.       In_Present                   : Boolean := False;
  1395.       Out_Present                  : Boolean := False;
  1396.       Parameter_Type               : Node_Id;
  1397.       Expression                   : Node_Id := Empty)
  1398.       return Node_Id
  1399.    is
  1400.       N : constant Node_Id :=
  1401.             New_Node (N_Parameter_Specification, Sloc);
  1402.    begin
  1403.       Set_Defining_Identifier (N, Defining_Identifier);
  1404.       Set_In_Present (N, In_Present);
  1405.       Set_Out_Present (N, Out_Present);
  1406.       Set_Parameter_Type (N, Parameter_Type);
  1407.       Set_Expression (N, Expression);
  1408.       return N;
  1409.    end Make_Parameter_Specification;
  1410.  
  1411.    function Make_Subprogram_Body (Sloc : Source_Ptr;
  1412.       Specification                : Node_Id;
  1413.       Declarations                 : List_Id;
  1414.       Handled_Statement_Sequence   : Node_Id;
  1415.       Bad_Is_Detected              : Boolean := False)
  1416.       return Node_Id
  1417.    is
  1418.       N : constant Node_Id :=
  1419.             New_Node (N_Subprogram_Body, Sloc);
  1420.    begin
  1421.       Set_Specification (N, Specification);
  1422.       Set_Declarations (N, Declarations);
  1423.       Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
  1424.       Set_Bad_Is_Detected (N, Bad_Is_Detected);
  1425.       return N;
  1426.    end Make_Subprogram_Body;
  1427.  
  1428.    function Make_Procedure_Call_Statement (Sloc : Source_Ptr;
  1429.       Name                         : Node_Id;
  1430.       Parameter_Associations       : List_Id := No_List)
  1431.       return Node_Id
  1432.    is
  1433.       N : constant Node_Id :=
  1434.             New_Node (N_Procedure_Call_Statement, Sloc);
  1435.    begin
  1436.       Set_Name (N, Name);
  1437.       Set_Parameter_Associations (N, Parameter_Associations);
  1438.       return N;
  1439.    end Make_Procedure_Call_Statement;
  1440.  
  1441.    function Make_Function_Call (Sloc : Source_Ptr;
  1442.       Name                         : Node_Id;
  1443.       Parameter_Associations       : List_Id := No_List)
  1444.       return Node_Id
  1445.    is
  1446.       N : constant Node_Id :=
  1447.             New_Node (N_Function_Call, Sloc);
  1448.    begin
  1449.       Set_Name (N, Name);
  1450.       Set_Parameter_Associations (N, Parameter_Associations);
  1451.       return N;
  1452.    end Make_Function_Call;
  1453.  
  1454.    function Make_Parameter_Association (Sloc : Source_Ptr;
  1455.       Selector_Name                : Node_Id;
  1456.       Explicit_Actual_Parameter    : Node_Id)
  1457.       return Node_Id
  1458.    is
  1459.       N : constant Node_Id :=
  1460.             New_Node (N_Parameter_Association, Sloc);
  1461.    begin
  1462.       Set_Selector_Name (N, Selector_Name);
  1463.       Set_Explicit_Actual_Parameter (N, Explicit_Actual_Parameter);
  1464.       return N;
  1465.    end Make_Parameter_Association;
  1466.  
  1467.    function Make_Return_Statement (Sloc : Source_Ptr;
  1468.       Expression                   : Node_Id := Empty)
  1469.       return Node_Id
  1470.    is
  1471.       N : constant Node_Id :=
  1472.             New_Node (N_Return_Statement, Sloc);
  1473.    begin
  1474.       Set_Expression (N, Expression);
  1475.       return N;
  1476.    end Make_Return_Statement;
  1477.  
  1478.    function Make_Package_Declaration (Sloc : Source_Ptr;
  1479.       Specification                : Node_Id)
  1480.       return Node_Id
  1481.    is
  1482.       N : constant Node_Id :=
  1483.             New_Node (N_Package_Declaration, Sloc);
  1484.    begin
  1485.       Set_Specification (N, Specification);
  1486.       return N;
  1487.    end Make_Package_Declaration;
  1488.  
  1489.    function Make_Package_Specification (Sloc : Source_Ptr;
  1490.       Defining_Unit_Name           : Node_Id;
  1491.       Visible_Declarations         : List_Id;
  1492.       Private_Declarations         : List_Id := No_List)
  1493.       return Node_Id
  1494.    is
  1495.       N : constant Node_Id :=
  1496.             New_Node (N_Package_Specification, Sloc);
  1497.    begin
  1498.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1499.       Set_Visible_Declarations (N, Visible_Declarations);
  1500.       Set_Private_Declarations (N, Private_Declarations);
  1501.       return N;
  1502.    end Make_Package_Specification;
  1503.  
  1504.    function Make_Package_Body (Sloc : Source_Ptr;
  1505.       Defining_Unit_Name           : Node_Id;
  1506.       Declarations                 : List_Id;
  1507.       Handled_Statement_Sequence   : Node_Id := Empty)
  1508.       return Node_Id
  1509.    is
  1510.       N : constant Node_Id :=
  1511.             New_Node (N_Package_Body, Sloc);
  1512.    begin
  1513.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1514.       Set_Declarations (N, Declarations);
  1515.       Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
  1516.       return N;
  1517.    end Make_Package_Body;
  1518.  
  1519.    function Make_Private_Type_Declaration (Sloc : Source_Ptr;
  1520.       Defining_Identifier          : Node_Id;
  1521.       Discriminant_Specifications  : List_Id := No_List;
  1522.       Unknown_Discriminants_Present : Boolean := False;
  1523.       Abstract_Present             : Boolean := False;
  1524.       Tagged_Present               : Boolean := False;
  1525.       Limited_Present              : Boolean := False)
  1526.       return Node_Id
  1527.    is
  1528.       N : constant Node_Id :=
  1529.             New_Node (N_Private_Type_Declaration, Sloc);
  1530.    begin
  1531.       Set_Defining_Identifier (N, Defining_Identifier);
  1532.       Set_Discriminant_Specifications (N, Discriminant_Specifications);
  1533.       Set_Unknown_Discriminants_Present
  1534.         (N, Unknown_Discriminants_Present);
  1535.       Set_Abstract_Present (N, Abstract_Present);
  1536.       Set_Tagged_Present (N, Tagged_Present);
  1537.       Set_Limited_Present (N, Limited_Present);
  1538.       return N;
  1539.    end Make_Private_Type_Declaration;
  1540.  
  1541.    function Make_Private_Extension_Declaration (Sloc : Source_Ptr;
  1542.       Defining_Identifier          : Node_Id;
  1543.       Discriminant_Specifications  : List_Id := No_List;
  1544.       Unknown_Discriminants_Present : Boolean := False;
  1545.       Abstract_Present             : Boolean := False;
  1546.       Subtype_Indication           : Node_Id)
  1547.       return Node_Id
  1548.    is
  1549.       N : constant Node_Id :=
  1550.             New_Node (N_Private_Extension_Declaration, Sloc);
  1551.    begin
  1552.       Set_Defining_Identifier (N, Defining_Identifier);
  1553.       Set_Discriminant_Specifications (N, Discriminant_Specifications);
  1554.       Set_Unknown_Discriminants_Present
  1555.         (N, Unknown_Discriminants_Present);
  1556.       Set_Abstract_Present (N, Abstract_Present);
  1557.       Set_Subtype_Indication (N, Subtype_Indication);
  1558.       return N;
  1559.    end Make_Private_Extension_Declaration;
  1560.  
  1561.    function Make_Use_Package_Clause (Sloc : Source_Ptr;
  1562.       Names                        : List_Id)
  1563.       return Node_Id
  1564.    is
  1565.       N : constant Node_Id :=
  1566.             New_Node (N_Use_Package_Clause, Sloc);
  1567.    begin
  1568.       Set_Names (N, Names);
  1569.       return N;
  1570.    end Make_Use_Package_Clause;
  1571.  
  1572.    function Make_Use_Type_Clause (Sloc : Source_Ptr;
  1573.       Subtype_Marks                : List_Id)
  1574.       return Node_Id
  1575.    is
  1576.       N : constant Node_Id :=
  1577.             New_Node (N_Use_Type_Clause, Sloc);
  1578.    begin
  1579.       Set_Subtype_Marks (N, Subtype_Marks);
  1580.       return N;
  1581.    end Make_Use_Type_Clause;
  1582.  
  1583.    function Make_Object_Renaming_Declaration (Sloc : Source_Ptr;
  1584.       Defining_Identifier          : Node_Id;
  1585.       Subtype_Mark                 : Node_Id;
  1586.       Name                         : Node_Id)
  1587.       return Node_Id
  1588.    is
  1589.       N : constant Node_Id :=
  1590.             New_Node (N_Object_Renaming_Declaration, Sloc);
  1591.    begin
  1592.       Set_Defining_Identifier (N, Defining_Identifier);
  1593.       Set_Subtype_Mark (N, Subtype_Mark);
  1594.       Set_Name (N, Name);
  1595.       return N;
  1596.    end Make_Object_Renaming_Declaration;
  1597.  
  1598.    function Make_Exception_Renaming_Declaration (Sloc : Source_Ptr;
  1599.       Defining_Identifier          : Node_Id;
  1600.       Name                         : Node_Id)
  1601.       return Node_Id
  1602.    is
  1603.       N : constant Node_Id :=
  1604.             New_Node (N_Exception_Renaming_Declaration, Sloc);
  1605.    begin
  1606.       Set_Defining_Identifier (N, Defining_Identifier);
  1607.       Set_Name (N, Name);
  1608.       return N;
  1609.    end Make_Exception_Renaming_Declaration;
  1610.  
  1611.    function Make_Package_Renaming_Declaration (Sloc : Source_Ptr;
  1612.       Defining_Unit_Name           : Node_Id;
  1613.       Name                         : Node_Id)
  1614.       return Node_Id
  1615.    is
  1616.       N : constant Node_Id :=
  1617.             New_Node (N_Package_Renaming_Declaration, Sloc);
  1618.    begin
  1619.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1620.       Set_Name (N, Name);
  1621.       return N;
  1622.    end Make_Package_Renaming_Declaration;
  1623.  
  1624.    function Make_Subprogram_Renaming_Declaration (Sloc : Source_Ptr;
  1625.       Specification                : Node_Id;
  1626.       Name                         : Node_Id)
  1627.       return Node_Id
  1628.    is
  1629.       N : constant Node_Id :=
  1630.             New_Node (N_Subprogram_Renaming_Declaration, Sloc);
  1631.    begin
  1632.       Set_Specification (N, Specification);
  1633.       Set_Name (N, Name);
  1634.       return N;
  1635.    end Make_Subprogram_Renaming_Declaration;
  1636.  
  1637.    function Make_Generic_Package_Renaming_Declaration (Sloc : Source_Ptr;
  1638.       Defining_Unit_Name           : Node_Id;
  1639.       Name                         : Node_Id)
  1640.       return Node_Id
  1641.    is
  1642.       N : constant Node_Id :=
  1643.             New_Node (N_Generic_Package_Renaming_Declaration, Sloc);
  1644.    begin
  1645.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1646.       Set_Name (N, Name);
  1647.       return N;
  1648.    end Make_Generic_Package_Renaming_Declaration;
  1649.  
  1650.    function Make_Generic_Procedure_Renaming_Declaration (Sloc : Source_Ptr;
  1651.       Defining_Unit_Name           : Node_Id;
  1652.       Name                         : Node_Id)
  1653.       return Node_Id
  1654.    is
  1655.       N : constant Node_Id :=
  1656.             New_Node (N_Generic_Procedure_Renaming_Declaration, Sloc);
  1657.    begin
  1658.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1659.       Set_Name (N, Name);
  1660.       return N;
  1661.    end Make_Generic_Procedure_Renaming_Declaration;
  1662.  
  1663.    function Make_Generic_Function_Renaming_Declaration (Sloc : Source_Ptr;
  1664.       Defining_Unit_Name           : Node_Id;
  1665.       Name                         : Node_Id)
  1666.       return Node_Id
  1667.    is
  1668.       N : constant Node_Id :=
  1669.             New_Node (N_Generic_Function_Renaming_Declaration, Sloc);
  1670.    begin
  1671.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  1672.       Set_Name (N, Name);
  1673.       return N;
  1674.    end Make_Generic_Function_Renaming_Declaration;
  1675.  
  1676.    function Make_Task_Type_Declaration (Sloc : Source_Ptr;
  1677.       Defining_Identifier          : Node_Id;
  1678.       Discriminant_Specifications  : List_Id := No_List;
  1679.       Task_Definition              : Node_Id := Empty)
  1680.       return Node_Id
  1681.    is
  1682.       N : constant Node_Id :=
  1683.             New_Node (N_Task_Type_Declaration, Sloc);
  1684.    begin
  1685.       Set_Defining_Identifier (N, Defining_Identifier);
  1686.       Set_Discriminant_Specifications (N, Discriminant_Specifications);
  1687.       Set_Task_Definition (N, Task_Definition);
  1688.       return N;
  1689.    end Make_Task_Type_Declaration;
  1690.  
  1691.    function Make_Single_Task_Declaration (Sloc : Source_Ptr;
  1692.       Defining_Identifier          : Node_Id;
  1693.       Task_Definition              : Node_Id := Empty)
  1694.       return Node_Id
  1695.    is
  1696.       N : constant Node_Id :=
  1697.             New_Node (N_Single_Task_Declaration, Sloc);
  1698.    begin
  1699.       Set_Defining_Identifier (N, Defining_Identifier);
  1700.       Set_Task_Definition (N, Task_Definition);
  1701.       return N;
  1702.    end Make_Single_Task_Declaration;
  1703.  
  1704.    function Make_Task_Definition (Sloc : Source_Ptr;
  1705.       Visible_Declarations         : List_Id;
  1706.       Private_Declarations         : List_Id := No_List)
  1707.       return Node_Id
  1708.    is
  1709.       N : constant Node_Id :=
  1710.             New_Node (N_Task_Definition, Sloc);
  1711.    begin
  1712.       Set_Visible_Declarations (N, Visible_Declarations);
  1713.       Set_Private_Declarations (N, Private_Declarations);
  1714.       return N;
  1715.    end Make_Task_Definition;
  1716.  
  1717.    function Make_Task_Body (Sloc : Source_Ptr;
  1718.       Defining_Identifier          : Node_Id;
  1719.       Declarations                 : List_Id;
  1720.       Handled_Statement_Sequence   : Node_Id)
  1721.       return Node_Id
  1722.    is
  1723.       N : constant Node_Id :=
  1724.             New_Node (N_Task_Body, Sloc);
  1725.    begin
  1726.       Set_Defining_Identifier (N, Defining_Identifier);
  1727.       Set_Declarations (N, Declarations);
  1728.       Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
  1729.       return N;
  1730.    end Make_Task_Body;
  1731.  
  1732.    function Make_Protected_Type_Declaration (Sloc : Source_Ptr;
  1733.       Defining_Identifier          : Node_Id;
  1734.       Discriminant_Specifications  : List_Id := No_List;
  1735.       Protected_Definition         : Node_Id)
  1736.       return Node_Id
  1737.    is
  1738.       N : constant Node_Id :=
  1739.             New_Node (N_Protected_Type_Declaration, Sloc);
  1740.    begin
  1741.       Set_Defining_Identifier (N, Defining_Identifier);
  1742.       Set_Discriminant_Specifications (N, Discriminant_Specifications);
  1743.       Set_Protected_Definition (N, Protected_Definition);
  1744.       return N;
  1745.    end Make_Protected_Type_Declaration;
  1746.  
  1747.    function Make_Single_Protected_Declaration (Sloc : Source_Ptr;
  1748.       Defining_Identifier          : Node_Id;
  1749.       Protected_Definition         : Node_Id)
  1750.       return Node_Id
  1751.    is
  1752.       N : constant Node_Id :=
  1753.             New_Node (N_Single_Protected_Declaration, Sloc);
  1754.    begin
  1755.       Set_Defining_Identifier (N, Defining_Identifier);
  1756.       Set_Protected_Definition (N, Protected_Definition);
  1757.       return N;
  1758.    end Make_Single_Protected_Declaration;
  1759.  
  1760.    function Make_Protected_Definition (Sloc : Source_Ptr;
  1761.       Visible_Declarations         : List_Id;
  1762.       Private_Declarations         : List_Id := No_List)
  1763.       return Node_Id
  1764.    is
  1765.       N : constant Node_Id :=
  1766.             New_Node (N_Protected_Definition, Sloc);
  1767.    begin
  1768.       Set_Visible_Declarations (N, Visible_Declarations);
  1769.       Set_Private_Declarations (N, Private_Declarations);
  1770.       return N;
  1771.    end Make_Protected_Definition;
  1772.  
  1773.    function Make_Protected_Body (Sloc : Source_Ptr;
  1774.       Defining_Identifier          : Node_Id;
  1775.       Declarations                 : List_Id)
  1776.       return Node_Id
  1777.    is
  1778.       N : constant Node_Id :=
  1779.             New_Node (N_Protected_Body, Sloc);
  1780.    begin
  1781.       Set_Defining_Identifier (N, Defining_Identifier);
  1782.       Set_Declarations (N, Declarations);
  1783.       return N;
  1784.    end Make_Protected_Body;
  1785.  
  1786.    function Make_Entry_Declaration (Sloc : Source_Ptr;
  1787.       Defining_Identifier          : Node_Id;
  1788.       Discrete_Subtype_Definition  : Node_Id := Empty;
  1789.       Parameter_Specifications     : List_Id := No_List)
  1790.       return Node_Id
  1791.    is
  1792.       N : constant Node_Id :=
  1793.             New_Node (N_Entry_Declaration, Sloc);
  1794.    begin
  1795.       Set_Defining_Identifier (N, Defining_Identifier);
  1796.       Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
  1797.       Set_Parameter_Specifications (N, Parameter_Specifications);
  1798.       return N;
  1799.    end Make_Entry_Declaration;
  1800.  
  1801.    function Make_Accept_Statement (Sloc : Source_Ptr;
  1802.       Entry_Direct_Name            : Node_Id;
  1803.       Entry_Index                  : Node_Id := Empty;
  1804.       Parameter_Specifications     : List_Id := No_List;
  1805.       Handled_Statement_Sequence   : Node_Id)
  1806.       return Node_Id
  1807.    is
  1808.       N : constant Node_Id :=
  1809.             New_Node (N_Accept_Statement, Sloc);
  1810.    begin
  1811.       Set_Entry_Direct_Name (N, Entry_Direct_Name);
  1812.       Set_Entry_Index (N, Entry_Index);
  1813.       Set_Parameter_Specifications (N, Parameter_Specifications);
  1814.       Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
  1815.       return N;
  1816.    end Make_Accept_Statement;
  1817.  
  1818.    function Make_Entry_Body (Sloc : Source_Ptr;
  1819.       Defining_Identifier          : Node_Id;
  1820.       Entry_Body_Formal_Part       : Node_Id;
  1821.       Declarations                 : List_Id;
  1822.       Handled_Statement_Sequence   : Node_Id)
  1823.       return Node_Id
  1824.    is
  1825.       N : constant Node_Id :=
  1826.             New_Node (N_Entry_Body, Sloc);
  1827.    begin
  1828.       Set_Defining_Identifier (N, Defining_Identifier);
  1829.       Set_Entry_Body_Formal_Part (N, Entry_Body_Formal_Part);
  1830.       Set_Declarations (N, Declarations);
  1831.       Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
  1832.       return N;
  1833.    end Make_Entry_Body;
  1834.  
  1835.    function Make_Entry_Body_Formal_Part (Sloc : Source_Ptr;
  1836.       Entry_Index_Specification    : Node_Id := Empty;
  1837.       Parameter_Specifications     : List_Id := No_List;
  1838.       Condition                    : Node_Id)
  1839.       return Node_Id
  1840.    is
  1841.       N : constant Node_Id :=
  1842.             New_Node (N_Entry_Body_Formal_Part, Sloc);
  1843.    begin
  1844.       Set_Entry_Index_Specification (N, Entry_Index_Specification);
  1845.       Set_Parameter_Specifications (N, Parameter_Specifications);
  1846.       Set_Condition (N, Condition);
  1847.       return N;
  1848.    end Make_Entry_Body_Formal_Part;
  1849.  
  1850.    function Make_Entry_Index_Specification (Sloc : Source_Ptr;
  1851.       Defining_Identifier          : Node_Id;
  1852.       Discrete_Subtype_Definition  : Node_Id)
  1853.       return Node_Id
  1854.    is
  1855.       N : constant Node_Id :=
  1856.             New_Node (N_Entry_Index_Specification, Sloc);
  1857.    begin
  1858.       Set_Defining_Identifier (N, Defining_Identifier);
  1859.       Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
  1860.       return N;
  1861.    end Make_Entry_Index_Specification;
  1862.  
  1863.    function Make_Entry_Call_Statement (Sloc : Source_Ptr;
  1864.       Name                         : Node_Id;
  1865.       Parameter_Associations       : List_Id := No_List)
  1866.       return Node_Id
  1867.    is
  1868.       N : constant Node_Id :=
  1869.             New_Node (N_Entry_Call_Statement, Sloc);
  1870.    begin
  1871.       Set_Name (N, Name);
  1872.       Set_Parameter_Associations (N, Parameter_Associations);
  1873.       return N;
  1874.    end Make_Entry_Call_Statement;
  1875.  
  1876.    function Make_Requeue_Statement (Sloc : Source_Ptr;
  1877.       Name                         : Node_Id;
  1878.       Abort_Present                : Boolean := False)
  1879.       return Node_Id
  1880.    is
  1881.       N : constant Node_Id :=
  1882.             New_Node (N_Requeue_Statement, Sloc);
  1883.    begin
  1884.       Set_Name (N, Name);
  1885.       Set_Abort_Present (N, Abort_Present);
  1886.       return N;
  1887.    end Make_Requeue_Statement;
  1888.  
  1889.    function Make_Delay_Until_Statement (Sloc : Source_Ptr;
  1890.       Expression                   : Node_Id)
  1891.       return Node_Id
  1892.    is
  1893.       N : constant Node_Id :=
  1894.             New_Node (N_Delay_Until_Statement, Sloc);
  1895.    begin
  1896.       Set_Expression (N, Expression);
  1897.       return N;
  1898.    end Make_Delay_Until_Statement;
  1899.  
  1900.    function Make_Delay_Relative_Statement (Sloc : Source_Ptr;
  1901.       Expression                   : Node_Id)
  1902.       return Node_Id
  1903.    is
  1904.       N : constant Node_Id :=
  1905.             New_Node (N_Delay_Relative_Statement, Sloc);
  1906.    begin
  1907.       Set_Expression (N, Expression);
  1908.       return N;
  1909.    end Make_Delay_Relative_Statement;
  1910.  
  1911.    function Make_Selective_Accept (Sloc : Source_Ptr;
  1912.       Select_Alternatives          : List_Id;
  1913.       Else_Statements              : List_Id := No_List)
  1914.       return Node_Id
  1915.    is
  1916.       N : constant Node_Id :=
  1917.             New_Node (N_Selective_Accept, Sloc);
  1918.    begin
  1919.       Set_Select_Alternatives (N, Select_Alternatives);
  1920.       Set_Else_Statements (N, Else_Statements);
  1921.       return N;
  1922.    end Make_Selective_Accept;
  1923.  
  1924.    function Make_Accept_Alternative (Sloc : Source_Ptr;
  1925.       Accept_Statement             : Node_Id;
  1926.       Condition                    : Node_Id := Empty;
  1927.       Statements                   : List_Id := Empty_List)
  1928.       return Node_Id
  1929.    is
  1930.       N : constant Node_Id :=
  1931.             New_Node (N_Accept_Alternative, Sloc);
  1932.    begin
  1933.       Set_Accept_Statement (N, Accept_Statement);
  1934.       Set_Condition (N, Condition);
  1935.       Set_Statements (N, Statements);
  1936.       return N;
  1937.    end Make_Accept_Alternative;
  1938.  
  1939.    function Make_Delay_Alternative (Sloc : Source_Ptr;
  1940.       Delay_Statement              : Node_Id;
  1941.       Condition                    : Node_Id := Empty;
  1942.       Statements                   : List_Id := Empty_List)
  1943.       return Node_Id
  1944.    is
  1945.       N : constant Node_Id :=
  1946.             New_Node (N_Delay_Alternative, Sloc);
  1947.    begin
  1948.       Set_Delay_Statement (N, Delay_Statement);
  1949.       Set_Condition (N, Condition);
  1950.       Set_Statements (N, Statements);
  1951.       return N;
  1952.    end Make_Delay_Alternative;
  1953.  
  1954.    function Make_Terminate_Alternative (Sloc : Source_Ptr;
  1955.       Condition                    : Node_Id := Empty)
  1956.       return Node_Id
  1957.    is
  1958.       N : constant Node_Id :=
  1959.             New_Node (N_Terminate_Alternative, Sloc);
  1960.    begin
  1961.       Set_Condition (N, Condition);
  1962.       return N;
  1963.    end Make_Terminate_Alternative;
  1964.  
  1965.    function Make_Timed_Entry_Call (Sloc : Source_Ptr;
  1966.       Entry_Call_Alternative       : Node_Id;
  1967.       Delay_Alternative            : Node_Id)
  1968.       return Node_Id
  1969.    is
  1970.       N : constant Node_Id :=
  1971.             New_Node (N_Timed_Entry_Call, Sloc);
  1972.    begin
  1973.       Set_Entry_Call_Alternative (N, Entry_Call_Alternative);
  1974.       Set_Delay_Alternative (N, Delay_Alternative);
  1975.       return N;
  1976.    end Make_Timed_Entry_Call;
  1977.  
  1978.    function Make_Entry_Call_Alternative (Sloc : Source_Ptr;
  1979.       Entry_Call_Statement         : Node_Id;
  1980.       Statements                   : List_Id := Empty_List)
  1981.       return Node_Id
  1982.    is
  1983.       N : constant Node_Id :=
  1984.             New_Node (N_Entry_Call_Alternative, Sloc);
  1985.    begin
  1986.       Set_Entry_Call_Statement (N, Entry_Call_Statement);
  1987.       Set_Statements (N, Statements);
  1988.       return N;
  1989.    end Make_Entry_Call_Alternative;
  1990.  
  1991.    function Make_Conditional_Entry_Call (Sloc : Source_Ptr;
  1992.       Entry_Call_Alternative       : Node_Id;
  1993.       Else_Statements              : List_Id)
  1994.       return Node_Id
  1995.    is
  1996.       N : constant Node_Id :=
  1997.             New_Node (N_Conditional_Entry_Call, Sloc);
  1998.    begin
  1999.       Set_Entry_Call_Alternative (N, Entry_Call_Alternative);
  2000.       Set_Else_Statements (N, Else_Statements);
  2001.       return N;
  2002.    end Make_Conditional_Entry_Call;
  2003.  
  2004.    function Make_Asynchronous_Select (Sloc : Source_Ptr;
  2005.       Triggering_Alternative       : Node_Id;
  2006.       Abortable_Part               : Node_Id)
  2007.       return Node_Id
  2008.    is
  2009.       N : constant Node_Id :=
  2010.             New_Node (N_Asynchronous_Select, Sloc);
  2011.    begin
  2012.       Set_Triggering_Alternative (N, Triggering_Alternative);
  2013.       Set_Abortable_Part (N, Abortable_Part);
  2014.       return N;
  2015.    end Make_Asynchronous_Select;
  2016.  
  2017.    function Make_Triggering_Alternative (Sloc : Source_Ptr;
  2018.       Triggering_Statement         : Node_Id;
  2019.       Statements                   : List_Id := Empty_List)
  2020.       return Node_Id
  2021.    is
  2022.       N : constant Node_Id :=
  2023.             New_Node (N_Triggering_Alternative, Sloc);
  2024.    begin
  2025.       Set_Triggering_Statement (N, Triggering_Statement);
  2026.       Set_Statements (N, Statements);
  2027.       return N;
  2028.    end Make_Triggering_Alternative;
  2029.  
  2030.    function Make_Abortable_Part (Sloc : Source_Ptr;
  2031.       Statements                   : List_Id)
  2032.       return Node_Id
  2033.    is
  2034.       N : constant Node_Id :=
  2035.             New_Node (N_Abortable_Part, Sloc);
  2036.    begin
  2037.       Set_Statements (N, Statements);
  2038.       return N;
  2039.    end Make_Abortable_Part;
  2040.  
  2041.    function Make_Abort_Statement (Sloc : Source_Ptr;
  2042.       Names                        : List_Id)
  2043.       return Node_Id
  2044.    is
  2045.       N : constant Node_Id :=
  2046.             New_Node (N_Abort_Statement, Sloc);
  2047.    begin
  2048.       Set_Names (N, Names);
  2049.       return N;
  2050.    end Make_Abort_Statement;
  2051.  
  2052.    function Make_Compilation_Unit (Sloc : Source_Ptr;
  2053.       Context_Items                : List_Id;
  2054.       Private_Present              : Boolean := False;
  2055.       Unit                         : Node_Id;
  2056.       Following_Pragmas            : List_Id := No_List)
  2057.       return Node_Id
  2058.    is
  2059.       N : constant Node_Id :=
  2060.             New_Node (N_Compilation_Unit, Sloc);
  2061.    begin
  2062.       Set_Context_Items (N, Context_Items);
  2063.       Set_Private_Present (N, Private_Present);
  2064.       Set_Unit (N, Unit);
  2065.       Set_Following_Pragmas (N, Following_Pragmas);
  2066.       return N;
  2067.    end Make_Compilation_Unit;
  2068.  
  2069.    function Make_With_Clause (Sloc : Source_Ptr;
  2070.       Name                         : Node_Id;
  2071.       First_Name                   : Boolean := True;
  2072.       Last_Name                    : Boolean := True)
  2073.       return Node_Id
  2074.    is
  2075.       N : constant Node_Id :=
  2076.             New_Node (N_With_Clause, Sloc);
  2077.    begin
  2078.       Set_Name (N, Name);
  2079.       Set_First_Name (N, First_Name);
  2080.       Set_Last_Name (N, Last_Name);
  2081.       return N;
  2082.    end Make_With_Clause;
  2083.  
  2084.    function Make_Subprogram_Body_Stub (Sloc : Source_Ptr;
  2085.       Specification                : Node_Id)
  2086.       return Node_Id
  2087.    is
  2088.       N : constant Node_Id :=
  2089.             New_Node (N_Subprogram_Body_Stub, Sloc);
  2090.    begin
  2091.       Set_Specification (N, Specification);
  2092.       return N;
  2093.    end Make_Subprogram_Body_Stub;
  2094.  
  2095.    function Make_Package_Body_Stub (Sloc : Source_Ptr;
  2096.       Defining_Identifier          : Node_Id)
  2097.       return Node_Id
  2098.    is
  2099.       N : constant Node_Id :=
  2100.             New_Node (N_Package_Body_Stub, Sloc);
  2101.    begin
  2102.       Set_Defining_Identifier (N, Defining_Identifier);
  2103.       return N;
  2104.    end Make_Package_Body_Stub;
  2105.  
  2106.    function Make_Task_Body_Stub (Sloc : Source_Ptr;
  2107.       Defining_Identifier          : Node_Id)
  2108.       return Node_Id
  2109.    is
  2110.       N : constant Node_Id :=
  2111.             New_Node (N_Task_Body_Stub, Sloc);
  2112.    begin
  2113.       Set_Defining_Identifier (N, Defining_Identifier);
  2114.       return N;
  2115.    end Make_Task_Body_Stub;
  2116.  
  2117.    function Make_Protected_Body_Stub (Sloc : Source_Ptr;
  2118.       Defining_Identifier          : Node_Id)
  2119.       return Node_Id
  2120.    is
  2121.       N : constant Node_Id :=
  2122.             New_Node (N_Protected_Body_Stub, Sloc);
  2123.    begin
  2124.       Set_Defining_Identifier (N, Defining_Identifier);
  2125.       return N;
  2126.    end Make_Protected_Body_Stub;
  2127.  
  2128.    function Make_Subunit (Sloc : Source_Ptr;
  2129.       Name                         : Node_Id;
  2130.       Proper_Body                  : Node_Id)
  2131.       return Node_Id
  2132.    is
  2133.       N : constant Node_Id :=
  2134.             New_Node (N_Subunit, Sloc);
  2135.    begin
  2136.       Set_Name (N, Name);
  2137.       Set_Proper_Body (N, Proper_Body);
  2138.       return N;
  2139.    end Make_Subunit;
  2140.  
  2141.    function Make_Exception_Declaration (Sloc : Source_Ptr;
  2142.       Defining_Identifier          : Node_Id)
  2143.       return Node_Id
  2144.    is
  2145.       N : constant Node_Id :=
  2146.             New_Node (N_Exception_Declaration, Sloc);
  2147.    begin
  2148.       Set_Defining_Identifier (N, Defining_Identifier);
  2149.       return N;
  2150.    end Make_Exception_Declaration;
  2151.  
  2152.    function Make_Handled_Sequence_Of_Statements (Sloc : Source_Ptr;
  2153.       Statements                   : List_Id;
  2154.       Exception_Handlers           : List_Id := No_List;
  2155.       Identifier                   : Node_Id := Empty)
  2156.       return Node_Id
  2157.    is
  2158.       N : constant Node_Id :=
  2159.             New_Node (N_Handled_Sequence_Of_Statements, Sloc);
  2160.    begin
  2161.       Set_Statements (N, Statements);
  2162.       Set_Exception_Handlers (N, Exception_Handlers);
  2163.       Set_Identifier (N, Identifier);
  2164.       return N;
  2165.    end Make_Handled_Sequence_Of_Statements;
  2166.  
  2167.    function Make_Exception_Handler (Sloc : Source_Ptr;
  2168.       Choice_Parameter             : Node_Id := Empty;
  2169.       Exception_Choices            : List_Id;
  2170.       Statements                   : List_Id)
  2171.       return Node_Id
  2172.    is
  2173.       N : constant Node_Id :=
  2174.             New_Node (N_Exception_Handler, Sloc);
  2175.    begin
  2176.       Set_Choice_Parameter (N, Choice_Parameter);
  2177.       Set_Exception_Choices (N, Exception_Choices);
  2178.       Set_Statements (N, Statements);
  2179.       return N;
  2180.    end Make_Exception_Handler;
  2181.  
  2182.    function Make_Raise_Statement (Sloc : Source_Ptr;
  2183.       Name                         : Node_Id := Empty)
  2184.       return Node_Id
  2185.    is
  2186.       N : constant Node_Id :=
  2187.             New_Node (N_Raise_Statement, Sloc);
  2188.    begin
  2189.       Set_Name (N, Name);
  2190.       return N;
  2191.    end Make_Raise_Statement;
  2192.  
  2193.    function Make_Generic_Subprogram_Declaration (Sloc : Source_Ptr;
  2194.       Specification                : Node_Id;
  2195.       Generic_Formal_Declarations  : List_Id)
  2196.       return Node_Id
  2197.    is
  2198.       N : constant Node_Id :=
  2199.             New_Node (N_Generic_Subprogram_Declaration, Sloc);
  2200.    begin
  2201.       Set_Specification (N, Specification);
  2202.       Set_Generic_Formal_Declarations (N, Generic_Formal_Declarations);
  2203.       return N;
  2204.    end Make_Generic_Subprogram_Declaration;
  2205.  
  2206.    function Make_Generic_Package_Declaration (Sloc : Source_Ptr;
  2207.       Specification                : Node_Id;
  2208.       Generic_Formal_Declarations  : List_Id)
  2209.       return Node_Id
  2210.    is
  2211.       N : constant Node_Id :=
  2212.             New_Node (N_Generic_Package_Declaration, Sloc);
  2213.    begin
  2214.       Set_Specification (N, Specification);
  2215.       Set_Generic_Formal_Declarations (N, Generic_Formal_Declarations);
  2216.       return N;
  2217.    end Make_Generic_Package_Declaration;
  2218.  
  2219.    function Make_Package_Instantiation (Sloc : Source_Ptr;
  2220.       Defining_Unit_Name           : Node_Id;
  2221.       Name                         : Node_Id;
  2222.       Generic_Associations         : List_Id := No_List)
  2223.       return Node_Id
  2224.    is
  2225.       N : constant Node_Id :=
  2226.             New_Node (N_Package_Instantiation, Sloc);
  2227.    begin
  2228.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  2229.       Set_Name (N, Name);
  2230.       Set_Generic_Associations (N, Generic_Associations);
  2231.       return N;
  2232.    end Make_Package_Instantiation;
  2233.  
  2234.    function Make_Procedure_Instantiation (Sloc : Source_Ptr;
  2235.       Defining_Unit_Name           : Node_Id;
  2236.       Name                         : Node_Id;
  2237.       Generic_Associations         : List_Id := No_List)
  2238.       return Node_Id
  2239.    is
  2240.       N : constant Node_Id :=
  2241.             New_Node (N_Procedure_Instantiation, Sloc);
  2242.    begin
  2243.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  2244.       Set_Name (N, Name);
  2245.       Set_Generic_Associations (N, Generic_Associations);
  2246.       return N;
  2247.    end Make_Procedure_Instantiation;
  2248.  
  2249.    function Make_Function_Instantiation (Sloc : Source_Ptr;
  2250.       Defining_Unit_Name           : Node_Id;
  2251.       Name                         : Node_Id;
  2252.       Generic_Associations         : List_Id := No_List)
  2253.       return Node_Id
  2254.    is
  2255.       N : constant Node_Id :=
  2256.             New_Node (N_Function_Instantiation, Sloc);
  2257.    begin
  2258.       Set_Defining_Unit_Name (N, Defining_Unit_Name);
  2259.       Set_Name (N, Name);
  2260.       Set_Generic_Associations (N, Generic_Associations);
  2261.       return N;
  2262.    end Make_Function_Instantiation;
  2263.  
  2264.    function Make_Generic_Association (Sloc : Source_Ptr;
  2265.       Selector_Name                : Node_Id := Empty;
  2266.       Explicit_Generic_Actual_Parameter : Node_Id)
  2267.       return Node_Id
  2268.    is
  2269.       N : constant Node_Id :=
  2270.             New_Node (N_Generic_Association, Sloc);
  2271.    begin
  2272.       Set_Selector_Name (N, Selector_Name);
  2273.       Set_Explicit_Generic_Actual_Parameter
  2274.         (N, Explicit_Generic_Actual_Parameter);
  2275.       return N;
  2276.    end Make_Generic_Association;
  2277.  
  2278.    function Make_Formal_Object_Declaration (Sloc : Source_Ptr;
  2279.       Defining_Identifier          : Node_Id;
  2280.       In_Present                   : Boolean := False;
  2281.       Out_Present                  : Boolean := False;
  2282.       Subtype_Mark                 : Node_Id;
  2283.       Expression                   : Node_Id := Empty)
  2284.       return Node_Id
  2285.    is
  2286.       N : constant Node_Id :=
  2287.             New_Node (N_Formal_Object_Declaration, Sloc);
  2288.    begin
  2289.       Set_Defining_Identifier (N, Defining_Identifier);
  2290.       Set_In_Present (N, In_Present);
  2291.       Set_Out_Present (N, Out_Present);
  2292.       Set_Subtype_Mark (N, Subtype_Mark);
  2293.       Set_Expression (N, Expression);
  2294.       return N;
  2295.    end Make_Formal_Object_Declaration;
  2296.  
  2297.    function Make_Formal_Type_Declaration (Sloc : Source_Ptr;
  2298.       Defining_Identifier          : Node_Id;
  2299.       Formal_Type_Definition       : Node_Id;
  2300.       Discriminant_Specifications  : List_Id := No_List;
  2301.       Unknown_Discriminants_Present : Boolean := False)
  2302.       return Node_Id
  2303.    is
  2304.       N : constant Node_Id :=
  2305.             New_Node (N_Formal_Type_Declaration, Sloc);
  2306.    begin
  2307.       Set_Defining_Identifier (N, Defining_Identifier);
  2308.       Set_Formal_Type_Definition (N, Formal_Type_Definition);
  2309.       Set_Discriminant_Specifications (N, Discriminant_Specifications);
  2310.       Set_Unknown_Discriminants_Present
  2311.         (N, Unknown_Discriminants_Present);
  2312.       return N;
  2313.    end Make_Formal_Type_Declaration;
  2314.  
  2315.    function Make_Formal_Private_Type_Definition (Sloc : Source_Ptr;
  2316.       Abstract_Present             : Boolean := False;
  2317.       Tagged_Present               : Boolean := False;
  2318.       Limited_Present              : Boolean := False)
  2319.       return Node_Id
  2320.    is
  2321.       N : constant Node_Id :=
  2322.             New_Node (N_Formal_Private_Type_Definition, Sloc);
  2323.    begin
  2324.       Set_Abstract_Present (N, Abstract_Present);
  2325.       Set_Tagged_Present (N, Tagged_Present);
  2326.       Set_Limited_Present (N, Limited_Present);
  2327.       return N;
  2328.    end Make_Formal_Private_Type_Definition;
  2329.  
  2330.    function Make_Formal_Derived_Type_Definition (Sloc : Source_Ptr;
  2331.       Subtype_Mark                 : Node_Id;
  2332.       Private_Present              : Boolean := False;
  2333.       Abstract_Present             : Boolean := False)
  2334.       return Node_Id
  2335.    is
  2336.       N : constant Node_Id :=
  2337.             New_Node (N_Formal_Derived_Type_Definition, Sloc);
  2338.    begin
  2339.       Set_Subtype_Mark (N, Subtype_Mark);
  2340.       Set_Private_Present (N, Private_Present);
  2341.       Set_Abstract_Present (N, Abstract_Present);
  2342.       return N;
  2343.    end Make_Formal_Derived_Type_Definition;
  2344.  
  2345.    function Make_Formal_Discrete_Type_Definition (Sloc : Source_Ptr)
  2346.       return Node_Id
  2347.    is
  2348.       N : constant Node_Id :=
  2349.             New_Node (N_Formal_Discrete_Type_Definition, Sloc);
  2350.    begin
  2351.       return N;
  2352.    end Make_Formal_Discrete_Type_Definition;
  2353.  
  2354.    function Make_Formal_Signed_Integer_Type_Definition (Sloc : Source_Ptr)
  2355.       return Node_Id
  2356.    is
  2357.       N : constant Node_Id :=
  2358.             New_Node (N_Formal_Signed_Integer_Type_Definition, Sloc);
  2359.    begin
  2360.       return N;
  2361.    end Make_Formal_Signed_Integer_Type_Definition;
  2362.  
  2363.    function Make_Formal_Modular_Type_Definition (Sloc : Source_Ptr)
  2364.       return Node_Id
  2365.    is
  2366.       N : constant Node_Id :=
  2367.             New_Node (N_Formal_Modular_Type_Definition, Sloc);
  2368.    begin
  2369.       return N;
  2370.    end Make_Formal_Modular_Type_Definition;
  2371.  
  2372.    function Make_Formal_Floating_Point_Definition (Sloc : Source_Ptr)
  2373.       return Node_Id
  2374.    is
  2375.       N : constant Node_Id :=
  2376.             New_Node (N_Formal_Floating_Point_Definition, Sloc);
  2377.    begin
  2378.       return N;
  2379.    end Make_Formal_Floating_Point_Definition;
  2380.  
  2381.    function Make_Formal_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr)
  2382.       return Node_Id
  2383.    is
  2384.       N : constant Node_Id :=
  2385.             New_Node (N_Formal_Ordinary_Fixed_Point_Definition, Sloc);
  2386.    begin
  2387.       return N;
  2388.    end Make_Formal_Ordinary_Fixed_Point_Definition;
  2389.  
  2390.    function Make_Formal_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr)
  2391.       return Node_Id
  2392.    is
  2393.       N : constant Node_Id :=
  2394.             New_Node (N_Formal_Decimal_Fixed_Point_Definition, Sloc);
  2395.    begin
  2396.       return N;
  2397.    end Make_Formal_Decimal_Fixed_Point_Definition;
  2398.  
  2399.    function Make_Formal_Subprogram_Declaration (Sloc : Source_Ptr;
  2400.       Specification                : Node_Id;
  2401.       Default_Name                 : Node_Id := Empty;
  2402.       Box_Present                  : Boolean := False)
  2403.       return Node_Id
  2404.    is
  2405.       N : constant Node_Id :=
  2406.             New_Node (N_Formal_Subprogram_Declaration, Sloc);
  2407.    begin
  2408.       Set_Specification (N, Specification);
  2409.       Set_Default_Name (N, Default_Name);
  2410.       Set_Box_Present (N, Box_Present);
  2411.       return N;
  2412.    end Make_Formal_Subprogram_Declaration;
  2413.  
  2414.    function Make_Formal_Package_Declaration (Sloc : Source_Ptr;
  2415.       Defining_Identifier          : Node_Id;
  2416.       Name                         : Node_Id;
  2417.       Generic_Associations         : List_Id := No_List;
  2418.       Box_Present                  : Boolean := False)
  2419.       return Node_Id
  2420.    is
  2421.       N : constant Node_Id :=
  2422.             New_Node (N_Formal_Package_Declaration, Sloc);
  2423.    begin
  2424.       Set_Defining_Identifier (N, Defining_Identifier);
  2425.       Set_Name (N, Name);
  2426.       Set_Generic_Associations (N, Generic_Associations);
  2427.       Set_Box_Present (N, Box_Present);
  2428.       return N;
  2429.    end Make_Formal_Package_Declaration;
  2430.  
  2431.    function Make_Attribute_Definition_Clause (Sloc : Source_Ptr;
  2432.       Name                         : Node_Id;
  2433.       Chars                        : Name_Id;
  2434.       Expression                   : Node_Id)
  2435.       return Node_Id
  2436.    is
  2437.       N : constant Node_Id :=
  2438.             New_Node (N_Attribute_Definition_Clause, Sloc);
  2439.    begin
  2440.       Set_Name (N, Name);
  2441.       Set_Chars (N, Chars);
  2442.       Set_Expression (N, Expression);
  2443.       return N;
  2444.    end Make_Attribute_Definition_Clause;
  2445.  
  2446.    function Make_Enumeration_Representation_Clause (Sloc : Source_Ptr;
  2447.       Identifier                   : Node_Id;
  2448.       Array_Aggregate              : Node_Id)
  2449.       return Node_Id
  2450.    is
  2451.       N : constant Node_Id :=
  2452.             New_Node (N_Enumeration_Representation_Clause, Sloc);
  2453.    begin
  2454.       Set_Identifier (N, Identifier);
  2455.       Set_Array_Aggregate (N, Array_Aggregate);
  2456.       return N;
  2457.    end Make_Enumeration_Representation_Clause;
  2458.  
  2459.    function Make_Record_Representation_Clause (Sloc : Source_Ptr;
  2460.       Identifier                   : Node_Id;
  2461.       Mod_Clause                   : Node_Id := Empty;
  2462.       Component_Clauses            : List_Id)
  2463.       return Node_Id
  2464.    is
  2465.       N : constant Node_Id :=
  2466.             New_Node (N_Record_Representation_Clause, Sloc);
  2467.    begin
  2468.       Set_Identifier (N, Identifier);
  2469.       Set_Mod_Clause (N, Mod_Clause);
  2470.       Set_Component_Clauses (N, Component_Clauses);
  2471.       return N;
  2472.    end Make_Record_Representation_Clause;
  2473.  
  2474.    function Make_Component_Clause (Sloc : Source_Ptr;
  2475.       Component_Name               : Node_Id;
  2476.       Position                     : Node_Id;
  2477.       First_Bit                    : Node_Id;
  2478.       Last_Bit                     : Node_Id)
  2479.       return Node_Id
  2480.    is
  2481.       N : constant Node_Id :=
  2482.             New_Node (N_Component_Clause, Sloc);
  2483.    begin
  2484.       Set_Component_Name (N, Component_Name);
  2485.       Set_Position (N, Position);
  2486.       Set_First_Bit (N, First_Bit);
  2487.       Set_Last_Bit (N, Last_Bit);
  2488.       return N;
  2489.    end Make_Component_Clause;
  2490.  
  2491.    function Make_Code_Statement (Sloc : Source_Ptr;
  2492.       Expression                   : Node_Id)
  2493.       return Node_Id
  2494.    is
  2495.       N : constant Node_Id :=
  2496.             New_Node (N_Code_Statement, Sloc);
  2497.    begin
  2498.       Set_Expression (N, Expression);
  2499.       return N;
  2500.    end Make_Code_Statement;
  2501.  
  2502.    function Make_Op_Rotate_Left (Sloc : Source_Ptr;
  2503.       Left_Opnd                    : Node_Id;
  2504.       Right_Opnd                   : Node_Id)
  2505.       return Node_Id
  2506.    is
  2507.       N : constant Node_Id :=
  2508.             New_Node (N_Op_Rotate_Left, Sloc);
  2509.    begin
  2510.       Set_Left_Opnd (N, Left_Opnd);
  2511.       Set_Right_Opnd (N, Right_Opnd);
  2512.       Set_Chars (N, Name_Rotate_Left);
  2513.       Set_Entity (N, Standard_Op_Rotate_Left);
  2514.       return N;
  2515.    end Make_Op_Rotate_Left;
  2516.  
  2517.    function Make_Op_Rotate_Right (Sloc : Source_Ptr;
  2518.       Left_Opnd                    : Node_Id;
  2519.       Right_Opnd                   : Node_Id)
  2520.       return Node_Id
  2521.    is
  2522.       N : constant Node_Id :=
  2523.             New_Node (N_Op_Rotate_Right, Sloc);
  2524.    begin
  2525.       Set_Left_Opnd (N, Left_Opnd);
  2526.       Set_Right_Opnd (N, Right_Opnd);
  2527.       Set_Chars (N, Name_Rotate_Right);
  2528.       Set_Entity (N, Standard_Op_Rotate_Right);
  2529.       return N;
  2530.    end Make_Op_Rotate_Right;
  2531.  
  2532.    function Make_Op_Shift_Left (Sloc : Source_Ptr;
  2533.       Left_Opnd                    : Node_Id;
  2534.       Right_Opnd                   : Node_Id)
  2535.       return Node_Id
  2536.    is
  2537.       N : constant Node_Id :=
  2538.             New_Node (N_Op_Shift_Left, Sloc);
  2539.    begin
  2540.       Set_Left_Opnd (N, Left_Opnd);
  2541.       Set_Right_Opnd (N, Right_Opnd);
  2542.       Set_Chars (N, Name_Shift_Left);
  2543.       Set_Entity (N, Standard_Op_Shift_Left);
  2544.       return N;
  2545.    end Make_Op_Shift_Left;
  2546.  
  2547.    function Make_Op_Shift_Right_Arithmetic (Sloc : Source_Ptr;
  2548.       Left_Opnd                    : Node_Id;
  2549.       Right_Opnd                   : Node_Id)
  2550.       return Node_Id
  2551.    is
  2552.       N : constant Node_Id :=
  2553.             New_Node (N_Op_Shift_Right_Arithmetic, Sloc);
  2554.    begin
  2555.       Set_Left_Opnd (N, Left_Opnd);
  2556.       Set_Right_Opnd (N, Right_Opnd);
  2557.       Set_Chars (N, Name_Shift_Right_Arithmetic);
  2558.       Set_Entity (N, Standard_Op_Shift_Right_Arithmetic);
  2559.       return N;
  2560.    end Make_Op_Shift_Right_Arithmetic;
  2561.  
  2562.    function Make_Op_Shift_Right (Sloc : Source_Ptr;
  2563.       Left_Opnd                    : Node_Id;
  2564.       Right_Opnd                   : Node_Id)
  2565.       return Node_Id
  2566.    is
  2567.       N : constant Node_Id :=
  2568.             New_Node (N_Op_Shift_Right, Sloc);
  2569.    begin
  2570.       Set_Left_Opnd (N, Left_Opnd);
  2571.       Set_Right_Opnd (N, Right_Opnd);
  2572.       Set_Chars (N, Name_Shift_Right);
  2573.       Set_Entity (N, Standard_Op_Shift_Right);
  2574.       return N;
  2575.    end Make_Op_Shift_Right;
  2576.  
  2577.    function Make_Delta_Constraint (Sloc : Source_Ptr;
  2578.       Delta_Expression             : Node_Id;
  2579.       Range_Constraint             : Node_Id := Empty)
  2580.       return Node_Id
  2581.    is
  2582.       N : constant Node_Id :=
  2583.             New_Node (N_Delta_Constraint, Sloc);
  2584.    begin
  2585.       Set_Delta_Expression (N, Delta_Expression);
  2586.       Set_Range_Constraint (N, Range_Constraint);
  2587.       return N;
  2588.    end Make_Delta_Constraint;
  2589.  
  2590.    function Make_At_Clause (Sloc : Source_Ptr;
  2591.       Identifier                   : Node_Id;
  2592.       Expression                   : Node_Id)
  2593.       return Node_Id
  2594.    is
  2595.       N : constant Node_Id :=
  2596.             New_Node (N_At_Clause, Sloc);
  2597.    begin
  2598.       Set_Identifier (N, Identifier);
  2599.       Set_Expression (N, Expression);
  2600.       return N;
  2601.    end Make_At_Clause;
  2602.  
  2603.    function Make_Mod_Clause (Sloc : Source_Ptr;
  2604.       Expression                   : Node_Id)
  2605.       return Node_Id
  2606.    is
  2607.       N : constant Node_Id :=
  2608.             New_Node (N_Mod_Clause, Sloc);
  2609.    begin
  2610.       Set_Expression (N, Expression);
  2611.       return N;
  2612.    end Make_Mod_Clause;
  2613.  
  2614.    function Make_Concat_Multiple (Sloc : Source_Ptr;
  2615.       Expressions                  : List_Id)
  2616.       return Node_Id
  2617.    is
  2618.       N : constant Node_Id :=
  2619.             New_Node (N_Concat_Multiple, Sloc);
  2620.    begin
  2621.       Set_Expressions (N, Expressions);
  2622.       return N;
  2623.    end Make_Concat_Multiple;
  2624.  
  2625.    function Make_Conditional_Expression (Sloc : Source_Ptr;
  2626.       Expressions                  : List_Id)
  2627.       return Node_Id
  2628.    is
  2629.       N : constant Node_Id :=
  2630.             New_Node (N_Conditional_Expression, Sloc);
  2631.    begin
  2632.       Set_Expressions (N, Expressions);
  2633.       return N;
  2634.    end Make_Conditional_Expression;
  2635.  
  2636.    function Make_Expanded_Name (Sloc : Source_Ptr;
  2637.       Chars                        : Name_Id;
  2638.       Prefix                       : Node_Id;
  2639.       Selector_Name                : Node_Id)
  2640.       return Node_Id
  2641.    is
  2642.       N : constant Node_Id :=
  2643.             New_Node (N_Expanded_Name, Sloc);
  2644.    begin
  2645.       Set_Chars (N, Chars);
  2646.       Set_Prefix (N, Prefix);
  2647.       Set_Selector_Name (N, Selector_Name);
  2648.       return N;
  2649.    end Make_Expanded_Name;
  2650.  
  2651.    function Make_Expression_Actions (Sloc : Source_Ptr;
  2652.       Actions                      : List_Id;
  2653.       Expression                   : Node_Id)
  2654.       return Node_Id
  2655.    is
  2656.       N : constant Node_Id :=
  2657.             New_Node (N_Expression_Actions, Sloc);
  2658.    begin
  2659.       Set_Actions (N, Actions);
  2660.       Set_Expression (N, Expression);
  2661.       Set_Cannot_Be_Constant (N);
  2662.       return N;
  2663.    end Make_Expression_Actions;
  2664.  
  2665.    function Make_Free_Statement (Sloc : Source_Ptr;
  2666.       Expression                   : Node_Id)
  2667.       return Node_Id
  2668.    is
  2669.       N : constant Node_Id :=
  2670.             New_Node (N_Free_Statement, Sloc);
  2671.    begin
  2672.       Set_Expression (N, Expression);
  2673.       return N;
  2674.    end Make_Free_Statement;
  2675.  
  2676.    function Make_Freeze_Entity (Sloc : Source_Ptr;
  2677.       Actions                      : List_Id := No_List)
  2678.       return Node_Id
  2679.    is
  2680.       N : constant Node_Id :=
  2681.             New_Node (N_Freeze_Entity, Sloc);
  2682.    begin
  2683.       Set_Actions (N, Actions);
  2684.       return N;
  2685.    end Make_Freeze_Entity;
  2686.  
  2687.    function Make_Implicit_Label_Declaration (Sloc : Source_Ptr;
  2688.       Defining_Identifier          : Node_Id;
  2689.       Label                        : Node_Id)
  2690.       return Node_Id
  2691.    is
  2692.       N : constant Node_Id :=
  2693.             New_Node (N_Implicit_Label_Declaration, Sloc);
  2694.    begin
  2695.       Set_Defining_Identifier (N, Defining_Identifier);
  2696.       Set_Label (N, Label);
  2697.       return N;
  2698.    end Make_Implicit_Label_Declaration;
  2699.  
  2700.    function Make_Implicit_Types (Sloc : Source_Ptr)
  2701.       return Node_Id
  2702.    is
  2703.       N : constant Node_Id :=
  2704.             New_Node (N_Implicit_Types, Sloc);
  2705.    begin
  2706.       return N;
  2707.    end Make_Implicit_Types;
  2708.  
  2709.    function Make_Interpretation (Sloc : Source_Ptr;
  2710.       Chars                        : Name_Id)
  2711.       return Node_Id
  2712.    is
  2713.       N : constant Node_Id :=
  2714.             New_Node (N_Interpretation, Sloc);
  2715.    begin
  2716.       Set_Chars (N, Chars);
  2717.       return N;
  2718.    end Make_Interpretation;
  2719.  
  2720.    function Make_Raise_Constraint_Error (Sloc : Source_Ptr)
  2721.       return Node_Id
  2722.    is
  2723.       N : constant Node_Id :=
  2724.             New_Node (N_Raise_Constraint_Error, Sloc);
  2725.    begin
  2726.       return N;
  2727.    end Make_Raise_Constraint_Error;
  2728.  
  2729.    function Make_Reference (Sloc : Source_Ptr;
  2730.       Prefix                       : Node_Id)
  2731.       return Node_Id
  2732.    is
  2733.       N : constant Node_Id :=
  2734.             New_Node (N_Reference, Sloc);
  2735.    begin
  2736.       Set_Prefix (N, Prefix);
  2737.       return N;
  2738.    end Make_Reference;
  2739.  
  2740.    function Make_Unchecked_Type_Conversion (Sloc : Source_Ptr;
  2741.       Subtype_Mark                 : Node_Id;
  2742.       Expression                   : Node_Id)
  2743.       return Node_Id
  2744.    is
  2745.       N : constant Node_Id :=
  2746.             New_Node (N_Unchecked_Type_Conversion, Sloc);
  2747.    begin
  2748.       Set_Subtype_Mark (N, Subtype_Mark);
  2749.       Set_Expression (N, Expression);
  2750.       return N;
  2751.    end Make_Unchecked_Type_Conversion;
  2752.  
  2753. end Nmake;
  2754.