1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
5 -- G E N _ I L . G E N . G E N _ N O D E S --
9 -- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
21 -- GNAT was originally developed by the GNAT team at New York University. --
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
24 ------------------------------------------------------------------------------
26 procedure Gen_IL
.Gen
.Gen_Nodes
is
28 procedure Ab
-- Short for "Abstract"
29 (T
: Abstract_Node
; Parent
: Abstract_Type
;
30 Fields
: Field_Sequence
:= No_Fields
)
31 renames Create_Abstract_Node_Type
;
32 procedure Cc
-- Short for "ConCrete"
33 (T
: Concrete_Node
; Parent
: Abstract_Type
;
34 Fields
: Field_Sequence
:= No_Fields
;
35 Nmake_Assert
: String := "")
36 renames Create_Concrete_Node_Type
;
38 function Sy
-- Short for "Syntactic"
39 (Field
: Node_Field
; Field_Type
: Type_Enum
;
40 Default_Value
: Field_Default_Value
:= No_Default
;
41 Pre
, Pre_Get
, Pre_Set
: String := "") return Field_Desc
42 renames Create_Syntactic_Field
;
43 function Sm
-- Short for "Semantic"
44 (Field
: Field_Enum
; Field_Type
: Type_Enum
;
45 Type_Only
: Type_Only_Enum
:= No_Type_Only
;
46 Pre
, Pre_Get
, Pre_Set
: String := "") return Field_Desc
47 renames Create_Semantic_Field
;
49 procedure Union
(T
: Abstract_Node
; Children
: Type_Array
)
50 renames Create_Node_Union_Type
;
52 begin -- Gen_IL.Gen.Gen_Nodes
53 pragma Style_Checks
("M200");
55 Create_Root_Node_Type
(Node_Kind
,
56 (Sm
(Nkind
, Node_Kind_Type
),
57 Sm
(Sloc
, Source_Ptr
),
59 Sm
(Rewrite_Ins
, Flag
),
60 Sm
(Comes_From_Source
, Flag
),
62 Sm
(Error_Posted
, Flag
),
63 Sm
(Small_Paren_Count
, Small_Paren_Count_Type
),
64 Sm
(Check_Actuals
, Flag
),
65 Sm
(Is_Ignored_Ghost_Node
, Flag
),
66 Sm
(Link
, Union_Id
)));
68 Cc
(N_Unused_At_Start
, Node_Kind
);
70 Ab
(N_Representation_Clause
, Node_Kind
);
72 Cc
(N_At_Clause
, N_Representation_Clause
,
73 (Sy
(Identifier
, Node_Id
, Default_Empty
),
74 Sy
(Expression
, Node_Id
, Default_Empty
)));
76 Cc
(N_Component_Clause
, N_Representation_Clause
,
77 (Sy
(Component_Name
, Node_Id
),
78 Sy
(Position
, Node_Id
),
79 Sy
(First_Bit
, Node_Id
),
80 Sy
(Last_Bit
, Node_Id
)));
82 Cc
(N_Enumeration_Representation_Clause
, N_Representation_Clause
,
83 (Sy
(Identifier
, Node_Id
, Default_Empty
),
84 Sy
(Array_Aggregate
, Node_Id
),
85 Sm
(Next_Rep_Item
, Node_Id
)));
87 Cc
(N_Mod_Clause
, N_Representation_Clause
,
88 (Sy
(Expression
, Node_Id
, Default_Empty
),
89 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
91 Cc
(N_Record_Representation_Clause
, N_Representation_Clause
,
92 (Sy
(Identifier
, Node_Id
, Default_Empty
),
93 Sy
(Mod_Clause
, Node_Id
, Default_Empty
),
94 Sy
(Component_Clauses
, List_Id
),
95 Sm
(Next_Rep_Item
, Node_Id
)));
97 Cc
(N_Attribute_Definition_Clause
, N_Representation_Clause
,
98 (Sy
(Name
, Node_Id
, Default_Empty
),
99 Sy
(Chars
, Name_Id
, Default_No_Name
),
100 Sy
(Expression
, Node_Id
, Default_Empty
),
101 Sm
(Address_Warning_Posted
, Flag
),
102 Sm
(Check_Address_Alignment
, Flag
),
103 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Entity
104 Sm
(From_Aspect_Specification
, Flag
),
105 Sm
(From_At_Mod
, Flag
),
106 Sm
(Is_Delayed_Aspect
, Flag
),
107 Sm
(Next_Rep_Item
, Node_Id
)));
109 Cc
(N_Empty
, Node_Kind
,
110 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
111 -- The following getters and setters are called on Empty,
112 -- and are currently inherited from Node_Kind:
114 -- Set_Comes_From_Source
125 Cc
(N_Pragma_Argument_Association
, Node_Kind
,
126 (Sy
(Chars
, Name_Id
, Default_No_Name
),
127 Sy
(Expression
, Node_Id
, Default_Empty
),
128 Sm
(Expression_Copy
, Node_Id
)));
130 Ab
(N_Has_Etype
, Node_Kind
,
131 (Sm
(Etype
, Node_Id
)));
133 Cc
(N_Error
, N_Has_Etype
,
134 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
136 Ab
(N_Entity
, N_Has_Etype
,
137 (Sm
(Next_Entity
, Node_Id
),
138 Sm
(Scope
, Node_Id
)));
140 Cc
(N_Defining_Character_Literal
, N_Entity
,
141 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
143 Cc
(N_Defining_Identifier
, N_Entity
,
144 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
146 Cc
(N_Defining_Operator_Symbol
, N_Entity
,
147 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
149 Ab
(N_Subexpr
, N_Has_Etype
,
150 -- Nodes with expression fields
151 (Sm
(Assignment_OK
, Flag
),
152 Sm
(Do_Range_Check
, Flag
),
153 Sm
(Has_Dynamic_Length_Check
, Flag
),
154 Sm
(Is_Controlling_Actual
, Flag
),
155 Sm
(Is_Overloaded
, Flag
),
156 Sm
(Is_Static_Expression
, Flag
),
157 Sm
(Must_Not_Freeze
, Flag
),
158 Sm
(Raises_Constraint_Error
, Flag
)));
160 Ab
(N_Has_Entity
, N_Subexpr
,
161 -- Nodes that have Entity fields
162 -- Warning: DOES NOT INCLUDE N_Freeze_Entity, N_Freeze_Generic_Entity,
163 -- N_Aspect_Specification, or N_Attribute_Definition_Clause.
164 (Sm
(Entity_Or_Associated_Node
, Node_Id
))); -- both
166 Cc
(N_Expanded_Name
, N_Has_Entity
,
167 (Sy
(Chars
, Name_Id
, Default_No_Name
),
168 Sy
(Prefix
, Node_Id
),
169 Sy
(Selector_Name
, Node_Id
, Default_Empty
),
170 Sm
(Atomic_Sync_Required
, Flag
),
171 Sm
(Has_Private_View
, Flag
),
172 Sm
(Has_Secondary_Private_View
, Flag
),
173 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
174 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
175 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
176 Sm
(Redundant_Use
, Flag
)));
178 Ab
(N_Direct_Name
, N_Has_Entity
,
179 (Sm
(Has_Private_View
, Flag
),
180 Sm
(Has_Secondary_Private_View
, Flag
)));
182 Cc
(N_Identifier
, N_Direct_Name
,
183 (Sy
(Chars
, Name_Id
, Default_No_Name
),
184 Sm
(Atomic_Sync_Required
, Flag
),
185 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
186 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
187 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
188 Sm
(Original_Discriminant
, Node_Id
),
189 Sm
(Redundant_Use
, Flag
)));
191 Cc
(N_Operator_Symbol
, N_Direct_Name
,
192 (Sy
(Chars
, Name_Id
, Default_No_Name
),
193 Sy
(Strval
, String_Id
)));
195 Cc
(N_Character_Literal
, N_Direct_Name
,
196 (Sy
(Chars
, Name_Id
, Default_No_Name
),
197 Sy
(Char_Literal_Value
, Unat
)));
199 Ab
(N_Op
, N_Has_Entity
,
200 (Sm
(Do_Overflow_Check
, Flag
),
201 Sm
(Has_Private_View
, Flag
),
202 Sm
(Has_Secondary_Private_View
, Flag
)));
204 Ab
(N_Binary_Op
, N_Op
);
206 Cc
(N_Op_Add
, N_Binary_Op
,
207 (Sm
(Chars
, Name_Id
),
208 Sy
(Left_Opnd
, Node_Id
),
209 Sy
(Right_Opnd
, Node_Id
)));
211 Cc
(N_Op_Concat
, N_Binary_Op
,
212 (Sm
(Chars
, Name_Id
),
213 Sy
(Left_Opnd
, Node_Id
),
214 Sy
(Right_Opnd
, Node_Id
),
215 Sm
(Is_Component_Left_Opnd
, Flag
),
216 Sm
(Is_Component_Right_Opnd
, Flag
)));
218 Cc
(N_Op_Expon
, N_Binary_Op
,
219 (Sm
(Chars
, Name_Id
),
220 Sy
(Left_Opnd
, Node_Id
),
221 Sy
(Right_Opnd
, Node_Id
),
222 Sm
(Is_Power_Of_2_For_Shift
, Flag
)));
224 Cc
(N_Op_Subtract
, N_Binary_Op
,
225 (Sm
(Chars
, Name_Id
),
226 Sy
(Left_Opnd
, Node_Id
),
227 Sy
(Right_Opnd
, Node_Id
)));
229 Ab
(N_Multiplying_Operator
, N_Binary_Op
);
231 Cc
(N_Op_Divide
, N_Multiplying_Operator
,
232 (Sm
(Chars
, Name_Id
),
233 Sy
(Left_Opnd
, Node_Id
),
234 Sy
(Right_Opnd
, Node_Id
),
235 Sm
(Do_Division_Check
, Flag
),
236 Sm
(Rounded_Result
, Flag
)));
238 Cc
(N_Op_Mod
, N_Multiplying_Operator
,
239 (Sm
(Chars
, Name_Id
),
240 Sy
(Left_Opnd
, Node_Id
),
241 Sy
(Right_Opnd
, Node_Id
),
242 Sm
(Do_Division_Check
, Flag
)));
244 Cc
(N_Op_Multiply
, N_Multiplying_Operator
,
245 (Sm
(Chars
, Name_Id
),
246 Sy
(Left_Opnd
, Node_Id
),
247 Sy
(Right_Opnd
, Node_Id
),
248 Sm
(Rounded_Result
, Flag
)));
250 Cc
(N_Op_Rem
, N_Multiplying_Operator
,
251 (Sm
(Chars
, Name_Id
),
252 Sy
(Left_Opnd
, Node_Id
),
253 Sy
(Right_Opnd
, Node_Id
),
254 Sm
(Do_Division_Check
, Flag
)));
256 Ab
(N_Op_Boolean
, N_Binary_Op
);
257 -- Binary operators that yield a result of a boolean type
259 Cc
(N_Op_And
, N_Op_Boolean
,
260 (Sm
(Chars
, Name_Id
),
261 Sy
(Left_Opnd
, Node_Id
),
262 Sy
(Right_Opnd
, Node_Id
),
263 Sm
(Do_Length_Check
, Flag
)));
265 Ab
(N_Op_Compare
, N_Op_Boolean
);
267 Cc
(N_Op_Eq
, N_Op_Compare
,
268 (Sm
(Chars
, Name_Id
),
269 Sy
(Left_Opnd
, Node_Id
),
270 Sy
(Right_Opnd
, Node_Id
),
271 Sm
(Compare_Type
, Node_Id
)));
273 Cc
(N_Op_Ge
, N_Op_Compare
,
274 (Sm
(Chars
, Name_Id
),
275 Sy
(Left_Opnd
, Node_Id
),
276 Sy
(Right_Opnd
, Node_Id
),
277 Sm
(Compare_Type
, Node_Id
)));
279 Cc
(N_Op_Gt
, N_Op_Compare
,
280 (Sm
(Chars
, Name_Id
),
281 Sy
(Left_Opnd
, Node_Id
),
282 Sy
(Right_Opnd
, Node_Id
),
283 Sm
(Compare_Type
, Node_Id
)));
285 Cc
(N_Op_Le
, N_Op_Compare
,
286 (Sm
(Chars
, Name_Id
),
287 Sy
(Left_Opnd
, Node_Id
),
288 Sy
(Right_Opnd
, Node_Id
),
289 Sm
(Compare_Type
, Node_Id
)));
291 Cc
(N_Op_Lt
, N_Op_Compare
,
292 (Sm
(Chars
, Name_Id
),
293 Sy
(Left_Opnd
, Node_Id
),
294 Sy
(Right_Opnd
, Node_Id
),
295 Sm
(Compare_Type
, Node_Id
)));
297 Cc
(N_Op_Ne
, N_Op_Compare
,
298 (Sm
(Chars
, Name_Id
),
299 Sy
(Left_Opnd
, Node_Id
),
300 Sy
(Right_Opnd
, Node_Id
),
301 Sm
(Compare_Type
, Node_Id
)));
303 Cc
(N_Op_Or
, N_Op_Boolean
,
304 (Sm
(Chars
, Name_Id
),
305 Sy
(Left_Opnd
, Node_Id
),
306 Sy
(Right_Opnd
, Node_Id
),
307 Sm
(Do_Length_Check
, Flag
)));
309 Cc
(N_Op_Xor
, N_Op_Boolean
,
310 (Sm
(Chars
, Name_Id
),
311 Sy
(Left_Opnd
, Node_Id
),
312 Sy
(Right_Opnd
, Node_Id
),
313 Sm
(Do_Length_Check
, Flag
)));
315 Ab
(N_Op_Shift
, N_Binary_Op
,
316 (Sm
(Shift_Count_OK
, Flag
)));
318 Cc
(N_Op_Rotate_Left
, N_Op_Shift
,
319 (Sm
(Chars
, Name_Id
),
320 Sy
(Left_Opnd
, Node_Id
),
321 Sy
(Right_Opnd
, Node_Id
)));
323 Cc
(N_Op_Rotate_Right
, N_Op_Shift
,
324 (Sm
(Chars
, Name_Id
),
325 Sy
(Left_Opnd
, Node_Id
),
326 Sy
(Right_Opnd
, Node_Id
)));
328 Cc
(N_Op_Shift_Left
, N_Op_Shift
,
329 (Sm
(Chars
, Name_Id
),
330 Sy
(Left_Opnd
, Node_Id
),
331 Sy
(Right_Opnd
, Node_Id
)));
333 Cc
(N_Op_Shift_Right
, N_Op_Shift
,
334 (Sm
(Chars
, Name_Id
),
335 Sy
(Left_Opnd
, Node_Id
),
336 Sy
(Right_Opnd
, Node_Id
)));
338 Cc
(N_Op_Shift_Right_Arithmetic
, N_Op_Shift
,
339 (Sm
(Chars
, Name_Id
),
340 Sy
(Left_Opnd
, Node_Id
),
341 Sy
(Right_Opnd
, Node_Id
)));
343 Ab
(N_Unary_Op
, N_Op
);
345 Cc
(N_Op_Abs
, N_Unary_Op
,
346 (Sm
(Chars
, Name_Id
),
347 Sy
(Right_Opnd
, Node_Id
)));
349 Cc
(N_Op_Minus
, N_Unary_Op
,
350 (Sm
(Chars
, Name_Id
),
351 Sy
(Right_Opnd
, Node_Id
)));
353 Cc
(N_Op_Not
, N_Unary_Op
,
354 (Sm
(Chars
, Name_Id
),
355 Sy
(Right_Opnd
, Node_Id
)));
357 Cc
(N_Op_Plus
, N_Unary_Op
,
358 (Sm
(Chars
, Name_Id
),
359 Sy
(Right_Opnd
, Node_Id
)));
361 Cc
(N_Attribute_Reference
, N_Has_Entity
,
362 (Sy
(Prefix
, Node_Id
),
363 Sy
(Attribute_Name
, Name_Id
),
364 Sy
(Expressions
, List_Id
, Default_No_List
),
365 Sm
(Do_Overflow_Check
, Flag
),
366 Sm
(Header_Size_Added
, Flag
),
367 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
368 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
369 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
370 Sm
(Must_Be_Byte_Aligned
, Flag
),
371 Sm
(Redundant_Use
, Flag
)));
373 Ab
(N_Membership_Test
, N_Subexpr
);
375 Cc
(N_In
, N_Membership_Test
,
376 (Sy
(Left_Opnd
, Node_Id
),
377 Sy
(Right_Opnd
, Node_Id
),
378 Sy
(Alternatives
, List_Id
, Default_No_List
),
379 Sy
(No_Minimize_Eliminate
, Flag
)));
381 Cc
(N_Not_In
, N_Membership_Test
,
382 (Sy
(Left_Opnd
, Node_Id
),
383 Sy
(Right_Opnd
, Node_Id
),
384 Sy
(Alternatives
, List_Id
, Default_No_List
),
385 Sy
(No_Minimize_Eliminate
, Flag
)));
387 Ab
(N_Short_Circuit
, N_Subexpr
);
389 Cc
(N_And_Then
, N_Short_Circuit
,
390 (Sy
(Left_Opnd
, Node_Id
),
391 Sy
(Right_Opnd
, Node_Id
),
392 Sm
(Actions
, List_Id
)));
394 Cc
(N_Or_Else
, N_Short_Circuit
,
395 (Sy
(Left_Opnd
, Node_Id
),
396 Sy
(Right_Opnd
, Node_Id
),
397 Sm
(Actions
, List_Id
)));
399 Ab
(N_Subprogram_Call
, N_Subexpr
,
400 (Sm
(Controlling_Argument
, Node_Id
),
401 Sm
(First_Named_Actual
, Node_Id
),
402 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
403 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
404 Sm
(Is_Known_Guaranteed_ABE
, Flag
),
405 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
406 Sm
(No_Elaboration_Check
, Flag
)));
408 Cc
(N_Function_Call
, N_Subprogram_Call
,
409 (Sy
(Name
, Node_Id
, Default_Empty
),
410 Sy
(Parameter_Associations
, List_Id
, Default_No_List
),
411 Sm
(Is_Expanded_Build_In_Place_Call
, Flag
)));
413 Cc
(N_Procedure_Call_Statement
, N_Subprogram_Call
,
414 (Sy
(Name
, Node_Id
, Default_Empty
),
415 Sy
(Parameter_Associations
, List_Id
, Default_No_List
)));
417 Ab
(N_Raise_xxx_Error
, N_Subexpr
);
419 Cc
(N_Raise_Constraint_Error
, N_Raise_xxx_Error
,
420 (Sy
(Condition
, Node_Id
, Default_Empty
),
423 Cc
(N_Raise_Program_Error
, N_Raise_xxx_Error
,
424 (Sy
(Condition
, Node_Id
, Default_Empty
),
427 Cc
(N_Raise_Storage_Error
, N_Raise_xxx_Error
,
428 (Sy
(Condition
, Node_Id
, Default_Empty
),
431 Ab
(N_Numeric_Or_String_Literal
, N_Subexpr
);
433 Cc
(N_Integer_Literal
, N_Numeric_Or_String_Literal
,
434 (Sy
(Intval
, Valid_Uint
),
435 Sm
(Original_Entity
, Node_Id
),
436 Sm
(Print_In_Hex
, Flag
)));
438 Cc
(N_Real_Literal
, N_Numeric_Or_String_Literal
,
439 (Sy
(Realval
, Ureal
),
440 Sm
(Corresponding_Integer_Value
, Valid_Uint
),
441 Sm
(Is_Machine_Number
, Flag
),
442 Sm
(Original_Entity
, Node_Id
)));
444 Cc
(N_String_Literal
, N_Numeric_Or_String_Literal
,
445 (Sy
(Strval
, String_Id
),
446 Sy
(Is_Folded_In_Parser
, Flag
),
447 Sm
(Has_Wide_Character
, Flag
),
448 Sm
(Has_Wide_Wide_Character
, Flag
)));
450 Cc
(N_Interpolated_String_Literal
, N_Numeric_Or_String_Literal
,
451 (Sy
(Expressions
, List_Id
, Default_No_List
)));
453 Cc
(N_Explicit_Dereference
, N_Subexpr
,
454 (Sy
(Prefix
, Node_Id
),
455 Sm
(Actual_Designated_Subtype
, Node_Id
),
456 Sm
(Atomic_Sync_Required
, Flag
),
457 Sm
(Has_Dereference_Action
, Flag
)));
459 Cc
(N_Expression_With_Actions
, N_Subexpr
,
460 (Sy
(Actions
, List_Id
, Default_No_List
),
461 Sy
(Expression
, Node_Id
, Default_Empty
)));
463 Cc
(N_If_Expression
, N_Subexpr
,
464 (Sy
(Expressions
, List_Id
, Default_No_List
),
466 Sm
(Do_Overflow_Check
, Flag
),
467 Sm
(Else_Actions
, List_Id
),
468 Sm
(Then_Actions
, List_Id
)));
470 Cc
(N_Indexed_Component
, N_Subexpr
,
471 (Sy
(Prefix
, Node_Id
),
472 Sy
(Expressions
, List_Id
, Default_No_List
),
473 Sm
(Atomic_Sync_Required
, Flag
),
474 Sm
(Generalized_Indexing
, Node_Id
)));
476 Cc
(N_Null
, N_Subexpr
);
478 Cc
(N_Qualified_Expression
, N_Subexpr
,
479 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
480 Sy
(Expression
, Node_Id
, Default_Empty
),
481 Sm
(Is_Qualified_Universal_Literal
, Flag
)));
483 Cc
(N_Quantified_Expression
, N_Subexpr
,
484 (Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
485 Sy
(Loop_Parameter_Specification
, Node_Id
, Default_Empty
),
486 Sy
(Condition
, Node_Id
, Default_Empty
),
487 Sy
(All_Present
, Flag
)));
489 Cc
(N_Aggregate
, N_Subexpr
,
490 (Sy
(Expressions
, List_Id
, Default_No_List
),
491 Sy
(Component_Associations
, List_Id
, Default_No_List
),
492 Sy
(Null_Record_Present
, Flag
),
493 Sy
(Is_Parenthesis_Aggregate
, Flag
),
494 Sy
(Is_Homogeneous_Aggregate
, Flag
),
495 Sy
(Is_Enum_Array_Aggregate
, Flag
),
496 Sm
(Aggregate_Bounds_Or_Ancestor_Type
, Node_Id
),
497 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
498 Sm
(Compile_Time_Known_Aggregate
, Flag
),
499 Sm
(Expansion_Delayed
, Flag
),
500 Sm
(Has_Self_Reference
, Flag
)));
502 Cc
(N_Allocator
, N_Subexpr
,
503 (Sy
(Expression
, Node_Id
, Default_Empty
),
504 Sy
(Subpool_Handle_Name
, Node_Id
, Default_Empty
),
505 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
506 Sm
(For_Special_Return_Object
, Flag
),
507 Sm
(Do_Storage_Check
, Flag
),
508 Sm
(Is_Dynamic_Coextension
, Flag
),
509 Sm
(Is_Static_Coextension
, Flag
),
510 Sm
(No_Initialization
, Flag
),
511 Sm
(Procedure_To_Call
, Node_Id
),
512 Sm
(Storage_Pool
, Node_Id
)));
514 Cc
(N_Case_Expression
, N_Subexpr
,
515 (Sy
(Expression
, Node_Id
, Default_Empty
),
516 Sy
(Alternatives
, List_Id
, Default_No_List
),
517 Sm
(Do_Overflow_Check
, Flag
)));
519 Cc
(N_Delta_Aggregate
, N_Subexpr
,
520 (Sy
(Expression
, Node_Id
, Default_Empty
),
521 Sy
(Is_Homogeneous_Aggregate
, Flag
),
522 Sy
(Component_Associations
, List_Id
, Default_No_List
)));
524 Cc
(N_Extension_Aggregate
, N_Subexpr
,
525 (Sy
(Ancestor_Part
, Node_Id
),
526 Sy
(Expressions
, List_Id
, Default_No_List
),
527 Sy
(Component_Associations
, List_Id
, Default_No_List
),
528 Sy
(Null_Record_Present
, Flag
),
529 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
530 Sm
(Expansion_Delayed
, Flag
),
531 Sm
(Has_Self_Reference
, Flag
)));
533 Cc
(N_Raise_Expression
, N_Subexpr
,
534 (Sy
(Name
, Node_Id
, Default_Empty
),
535 Sy
(Expression
, Node_Id
, Default_Empty
)));
537 Cc
(N_Range
, N_Subexpr
,
538 (Sy
(Low_Bound
, Node_Id
),
539 Sy
(High_Bound
, Node_Id
),
540 Sm
(Cannot_Be_Superflat
, Flag
),
541 Sm
(Includes_Infinities
, Flag
)));
543 Cc
(N_Reference
, N_Subexpr
,
544 (Sy
(Prefix
, Node_Id
)));
546 Cc
(N_Selected_Component
, N_Subexpr
,
547 (Sy
(Prefix
, Node_Id
),
548 Sy
(Selector_Name
, Node_Id
, Default_Empty
),
549 Sm
(Atomic_Sync_Required
, Flag
),
550 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
551 Sm
(Do_Discriminant_Check
, Flag
),
552 Sm
(Is_In_Discriminant_Check
, Flag
),
553 Sm
(Is_Prefixed_Call
, Flag
)));
555 Cc
(N_Slice
, N_Subexpr
,
556 (Sy
(Prefix
, Node_Id
),
557 Sy
(Discrete_Range
, Node_Id
)));
559 Cc
(N_Target_Name
, N_Subexpr
);
561 Cc
(N_Type_Conversion
, N_Subexpr
,
562 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
563 Sy
(Expression
, Node_Id
, Default_Empty
),
564 Sm
(Conversion_OK
, Flag
),
565 Sm
(Do_Discriminant_Check
, Flag
),
566 Sm
(Do_Length_Check
, Flag
),
567 Sm
(Do_Overflow_Check
, Flag
),
568 Sm
(Float_Truncate
, Flag
),
569 Sm
(Rounded_Result
, Flag
)));
571 Cc
(N_Unchecked_Expression
, N_Subexpr
,
572 (Sy
(Expression
, Node_Id
, Default_Empty
)));
574 Cc
(N_Unchecked_Type_Conversion
, N_Subexpr
,
575 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
576 Sy
(Expression
, Node_Id
, Default_Empty
),
577 Sm
(Kill_Range_Check
, Flag
),
578 Sm
(No_Truncation
, Flag
)),
579 Nmake_Assert
=> "True or else Nkind (Expression) /= N_Unchecked_Type_Conversion");
580 -- Nmake_Assert => "Nkind (Expression) /= N_Unchecked_Type_Conversion");
581 -- Assert that we don't have unchecked conversions of unchecked
582 -- conversions; if Expression might be an unchecked conversion,
583 -- then Tbuild.Unchecked_Convert_To should be used.
585 Cc
(N_Subtype_Indication
, N_Has_Etype
,
586 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
587 Sy
(Constraint
, Node_Id
),
588 Sm
(Must_Not_Freeze
, Flag
)));
590 Ab
(N_Declaration
, Node_Kind
);
591 -- Note: this includes all constructs normally thought of as declarations
592 -- except those that are separately grouped in N_Later_Decl_Item. But
593 -- Declaration_Node may return yet more node types; see N_Is_Decl below.
595 Cc
(N_Component_Declaration
, N_Declaration
,
596 (Sy
(Defining_Identifier
, Node_Id
),
597 Sy
(Component_Definition
, Node_Id
),
598 Sy
(Expression
, Node_Id
, Default_Empty
),
599 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
601 Sm
(Prev_Ids
, Flag
)));
603 Cc
(N_Entry_Declaration
, N_Declaration
,
604 (Sy
(Defining_Identifier
, Node_Id
),
605 Sy
(Discrete_Subtype_Definition
, Node_Id
, Default_Empty
),
606 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
607 Sy
(Must_Override
, Flag
),
608 Sy
(Must_Not_Override
, Flag
),
609 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
610 Sm
(Corresponding_Body
, Node_Id
)));
612 Cc
(N_Expression_Function
, N_Declaration
,
613 (Sy
(Specification
, Node_Id
),
614 Sy
(Expression
, Node_Id
, Default_Empty
),
615 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
616 Sm
(Corresponding_Spec
, Node_Id
)));
618 Cc
(N_Formal_Object_Declaration
, N_Declaration
,
619 (Sy
(Defining_Identifier
, Node_Id
),
620 Sy
(In_Present
, Flag
),
621 Sy
(Out_Present
, Flag
),
622 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
623 Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
624 Sy
(Access_Definition
, Node_Id
, Default_Empty
),
625 Sy
(Default_Expression
, Node_Id
, Default_Empty
),
626 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
628 Sm
(Prev_Ids
, Flag
)));
630 Cc
(N_Formal_Type_Declaration
, N_Declaration
,
631 (Sy
(Defining_Identifier
, Node_Id
),
632 Sy
(Formal_Type_Definition
, Node_Id
),
633 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
634 Sy
(Unknown_Discriminants_Present
, Flag
),
635 Sy
(Default_Subtype_Mark
, Node_Id
),
636 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
638 Cc
(N_Full_Type_Declaration
, N_Declaration
,
639 (Sy
(Defining_Identifier
, Node_Id
),
640 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
641 Sy
(Type_Definition
, Node_Id
),
642 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
643 Sm
(Discr_Check_Funcs_Built
, Flag
),
644 Sm
(Incomplete_View
, Node_Id
)));
646 Cc
(N_Incomplete_Type_Declaration
, N_Declaration
,
647 (Sy
(Defining_Identifier
, Node_Id
),
648 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
649 Sy
(Unknown_Discriminants_Present
, Flag
),
650 Sy
(Tagged_Present
, Flag
),
651 Sm
(Premature_Use
, Node_Id
)));
653 Cc
(N_Iterator_Specification
, N_Declaration
,
654 (Sy
(Defining_Identifier
, Node_Id
),
655 Sy
(Name
, Node_Id
, Default_Empty
),
656 Sy
(Reverse_Present
, Flag
),
657 Sy
(Of_Present
, Flag
),
658 Sy
(Iterator_Filter
, Node_Id
, Default_Empty
),
659 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
)));
661 Cc
(N_Loop_Parameter_Specification
, N_Declaration
,
662 (Sy
(Defining_Identifier
, Node_Id
),
663 Sy
(Reverse_Present
, Flag
),
664 Sy
(Iterator_Filter
, Node_Id
, Default_Empty
),
665 Sy
(Discrete_Subtype_Definition
, Node_Id
, Default_Empty
)));
667 Cc
(N_Object_Declaration
, N_Declaration
,
668 (Sy
(Defining_Identifier
, Node_Id
),
669 Sy
(Aliased_Present
, Flag
),
670 Sy
(Constant_Present
, Flag
),
671 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
672 Sy
(Object_Definition
, Node_Id
),
673 Sy
(Expression
, Node_Id
, Default_Empty
),
674 Sy
(Has_Init_Expression
, Flag
),
675 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
676 Sm
(Assignment_OK
, Flag
),
677 Sm
(Corresponding_Generic_Association
, Node_Id
),
678 Sm
(Exception_Junk
, Flag
),
679 Sm
(Handler_List_Entry
, Node_Id
),
680 Sm
(Is_Subprogram_Descriptor
, Flag
),
682 Sm
(No_Initialization
, Flag
),
684 Sm
(Suppress_Assignment_Checks
, Flag
)));
686 Cc
(N_Protected_Type_Declaration
, N_Declaration
,
687 (Sy
(Defining_Identifier
, Node_Id
),
688 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
689 Sy
(Interface_List
, List_Id
, Default_No_List
),
690 Sy
(Protected_Definition
, Node_Id
),
691 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
692 Sm
(Corresponding_Body
, Node_Id
)));
694 Cc
(N_Private_Extension_Declaration
, N_Declaration
,
695 (Sy
(Defining_Identifier
, Node_Id
),
696 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
697 Sy
(Unknown_Discriminants_Present
, Flag
),
698 Sy
(Abstract_Present
, Flag
),
699 Sy
(Limited_Present
, Flag
),
700 Sy
(Synchronized_Present
, Flag
),
701 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
702 Sy
(Interface_List
, List_Id
, Default_No_List
),
703 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
704 Sm
(Uninitialized_Variable
, Node_Id
)));
706 Cc
(N_Private_Type_Declaration
, N_Declaration
,
707 (Sy
(Defining_Identifier
, Node_Id
),
708 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
709 Sy
(Unknown_Discriminants_Present
, Flag
),
710 Sy
(Abstract_Present
, Flag
),
711 Sy
(Tagged_Present
, Flag
),
712 Sy
(Limited_Present
, Flag
),
713 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
715 Cc
(N_Subtype_Declaration
, N_Declaration
,
716 (Sy
(Defining_Identifier
, Node_Id
),
717 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
718 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
719 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
720 Sm
(Exception_Junk
, Flag
),
721 Sm
(Generic_Parent_Type
, Node_Id
)));
723 Ab
(N_Subprogram_Specification
, N_Declaration
,
724 (Sm
(Generic_Parent
, Node_Id
)));
726 Cc
(N_Function_Specification
, N_Subprogram_Specification
,
727 (Sy
(Defining_Unit_Name
, Node_Id
),
728 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
729 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
730 Sy
(Result_Definition
, Node_Id
),
731 Sy
(Must_Override
, Flag
),
732 Sy
(Must_Not_Override
, Flag
)));
734 Cc
(N_Procedure_Specification
, N_Subprogram_Specification
,
735 (Sy
(Defining_Unit_Name
, Node_Id
),
736 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
737 Sy
(Null_Present
, Flag
),
738 Sy
(Must_Override
, Flag
),
739 Sy
(Must_Not_Override
, Flag
),
740 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
741 Sm
(Null_Statement
, Node_Id
)));
743 Ab
(N_Access_To_Subprogram_Definition
, Node_Kind
);
745 Cc
(N_Access_Function_Definition
, N_Access_To_Subprogram_Definition
,
746 (Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
747 Sy
(Null_Exclusion_In_Return_Present
, Flag
),
748 Sy
(Protected_Present
, Flag
),
749 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
750 Sy
(Result_Definition
, Node_Id
)));
752 Cc
(N_Access_Procedure_Definition
, N_Access_To_Subprogram_Definition
,
753 (Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
754 Sy
(Protected_Present
, Flag
),
755 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
)));
757 Ab
(N_Later_Decl_Item
, Node_Kind
);
758 -- Note: this is Ada 83 relevant only (see Ada 83 RM 3.9 (2)) and includes
759 -- only those items which can appear as later declarative items. This also
760 -- includes N_Implicit_Label_Declaration which is not specifically in the
761 -- grammar but may appear as a valid later declarative items. It does NOT
762 -- include N_Pragma which can also appear among later declarative items.
763 -- It does however include N_Protected_Body, which is a bit peculiar, but
764 -- harmless since this cannot appear in Ada 83 mode anyway.
766 Cc
(N_Task_Type_Declaration
, N_Later_Decl_Item
,
767 (Sy
(Defining_Identifier
, Node_Id
),
768 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
769 Sy
(Interface_List
, List_Id
, Default_No_List
),
770 Sy
(Task_Definition
, Node_Id
, Default_Empty
),
771 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
772 Sm
(Corresponding_Body
, Node_Id
)));
774 Ab
(N_Body_Stub
, N_Later_Decl_Item
,
775 (Sm
(Corresponding_Body
, Node_Id
),
776 Sm
(Corresponding_Spec_Of_Stub
, Node_Id
),
777 Sm
(Library_Unit
, Node_Id
)));
779 Cc
(N_Package_Body_Stub
, N_Body_Stub
,
780 (Sy
(Defining_Identifier
, Node_Id
),
781 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
783 Cc
(N_Protected_Body_Stub
, N_Body_Stub
,
784 (Sy
(Defining_Identifier
, Node_Id
),
785 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
787 Cc
(N_Subprogram_Body_Stub
, N_Body_Stub
,
788 (Sy
(Specification
, Node_Id
),
789 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
791 Cc
(N_Task_Body_Stub
, N_Body_Stub
,
792 (Sy
(Defining_Identifier
, Node_Id
),
793 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
795 Ab
(N_Generic_Instantiation
, N_Later_Decl_Item
,
796 (Sm
(Instance_Spec
, Node_Id
),
797 Sm
(Is_Declaration_Level_Node
, Flag
),
798 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
799 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
800 Sm
(Is_Known_Guaranteed_ABE
, Flag
),
801 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
802 Sm
(Parent_Spec
, Node_Id
)));
804 Ab
(N_Subprogram_Instantiation
, N_Generic_Instantiation
);
806 Cc
(N_Function_Instantiation
, N_Subprogram_Instantiation
,
807 (Sy
(Defining_Unit_Name
, Node_Id
),
808 Sy
(Name
, Node_Id
, Default_Empty
),
809 Sy
(Generic_Associations
, List_Id
, Default_No_List
),
810 Sy
(Must_Override
, Flag
),
811 Sy
(Must_Not_Override
, Flag
),
812 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
814 Cc
(N_Procedure_Instantiation
, N_Subprogram_Instantiation
,
815 (Sy
(Defining_Unit_Name
, Node_Id
),
816 Sy
(Name
, Node_Id
, Default_Empty
),
817 Sy
(Generic_Associations
, List_Id
, Default_No_List
),
818 Sy
(Must_Override
, Flag
),
819 Sy
(Must_Not_Override
, Flag
),
820 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
822 Cc
(N_Package_Instantiation
, N_Generic_Instantiation
,
823 (Sy
(Defining_Unit_Name
, Node_Id
),
824 Sy
(Name
, Node_Id
, Default_Empty
),
825 Sy
(Generic_Associations
, List_Id
, Default_No_List
),
826 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
828 Ab
(N_Proper_Body
, N_Later_Decl_Item
,
829 (Sm
(Corresponding_Spec
, Node_Id
),
830 Sm
(Was_Originally_Stub
, Flag
)));
832 Ab
(N_Unit_Body
, N_Proper_Body
);
834 Cc
(N_Package_Body
, N_Unit_Body
,
835 (Sy
(Defining_Unit_Name
, Node_Id
),
836 Sy
(Declarations
, List_Id
, Default_No_List
),
837 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
838 Sy
(At_End_Proc
, Node_Id
, Default_Empty
),
839 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
841 Cc
(N_Subprogram_Body
, N_Unit_Body
,
842 (Sy
(Specification
, Node_Id
),
843 Sy
(Declarations
, List_Id
, Default_No_List
),
844 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
845 Sy
(Bad_Is_Detected
, Flag
),
846 Sy
(At_End_Proc
, Node_Id
, Default_Empty
),
847 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
848 Sm
(Activation_Chain_Entity
, Node_Id
),
849 Sm
(Acts_As_Spec
, Flag
),
850 Sm
(Corresponding_Entry_Body
, Node_Id
),
851 Sm
(Do_Storage_Check
, Flag
),
852 Sm
(Has_Relative_Deadline_Pragma
, Flag
),
853 Sm
(Is_Entry_Barrier_Function
, Flag
),
854 Sm
(Is_Protected_Subprogram_Body
, Flag
),
855 Sm
(Is_Task_Body_Procedure
, Flag
),
856 Sm
(Is_Task_Master
, Flag
),
857 Sm
(Was_Attribute_Reference
, Flag
),
858 Sm
(Was_Expression_Function
, Flag
)));
860 Cc
(N_Protected_Body
, N_Proper_Body
,
861 (Sy
(Defining_Identifier
, Node_Id
),
862 Sy
(Declarations
, List_Id
, Default_No_List
),
863 Sy
(End_Label
, Node_Id
, Default_Empty
),
864 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
866 Cc
(N_Task_Body
, N_Proper_Body
,
867 (Sy
(Defining_Identifier
, Node_Id
),
868 Sy
(Declarations
, List_Id
, Default_No_List
),
869 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
870 Sy
(At_End_Proc
, Node_Id
, Default_Empty
),
871 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
872 Sm
(Activation_Chain_Entity
, Node_Id
),
873 Sm
(Is_Task_Master
, Flag
)));
875 Cc
(N_Implicit_Label_Declaration
, N_Later_Decl_Item
,
876 (Sy
(Defining_Identifier
, Node_Id
),
877 Sm
(Label_Construct
, Node_Id
)));
879 Cc
(N_Package_Declaration
, N_Later_Decl_Item
,
880 (Sy
(Specification
, Node_Id
),
881 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
882 Sm
(Activation_Chain_Entity
, Node_Id
),
883 Sm
(Corresponding_Body
, Node_Id
),
884 Sm
(Parent_Spec
, Node_Id
)));
886 Cc
(N_Single_Task_Declaration
, N_Later_Decl_Item
,
887 (Sy
(Defining_Identifier
, Node_Id
),
888 Sy
(Interface_List
, List_Id
, Default_No_List
),
889 Sy
(Task_Definition
, Node_Id
, Default_Empty
),
890 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
892 Cc
(N_Subprogram_Declaration
, N_Later_Decl_Item
,
893 (Sy
(Specification
, Node_Id
),
894 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
895 Sm
(Body_To_Inline
, Node_Id
),
896 Sm
(Corresponding_Body
, Node_Id
),
897 Sm
(Is_Entry_Barrier_Function
, Flag
),
898 Sm
(Is_Task_Body_Procedure
, Flag
),
899 Sm
(Parent_Spec
, Node_Id
)));
901 Cc
(N_Use_Package_Clause
, N_Later_Decl_Item
,
902 (Sy
(Name
, Node_Id
, Default_Empty
),
903 Sy
(Is_Effective_Use_Clause
, Flag
),
904 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
905 Sm
(Hidden_By_Use_Clause
, Elist_Id
),
907 Sm
(Next_Use_Clause
, Node_Id
),
909 Sm
(Prev_Use_Clause
, Node_Id
)));
911 Ab
(N_Generic_Declaration
, N_Later_Decl_Item
,
912 (Sm
(Corresponding_Body
, Node_Id
),
913 Sm
(Parent_Spec
, Node_Id
)));
915 Cc
(N_Generic_Package_Declaration
, N_Generic_Declaration
,
916 (Sy
(Specification
, Node_Id
),
917 Sy
(Generic_Formal_Declarations
, List_Id
),
918 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
919 Sm
(Activation_Chain_Entity
, Node_Id
)));
921 Cc
(N_Generic_Subprogram_Declaration
, N_Generic_Declaration
,
922 (Sy
(Specification
, Node_Id
),
923 Sy
(Generic_Formal_Declarations
, List_Id
),
924 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
926 Ab
(N_Array_Type_Definition
, Node_Kind
);
928 Cc
(N_Constrained_Array_Definition
, N_Array_Type_Definition
,
929 (Sy
(Discrete_Subtype_Definitions
, List_Id
),
930 Sy
(Component_Definition
, Node_Id
)));
932 Cc
(N_Unconstrained_Array_Definition
, N_Array_Type_Definition
,
933 (Sy
(Subtype_Marks
, List_Id
),
934 Sy
(Component_Definition
, Node_Id
)));
936 Ab
(N_Renaming_Declaration
, Node_Kind
);
938 Cc
(N_Exception_Renaming_Declaration
, N_Renaming_Declaration
,
939 (Sy
(Defining_Identifier
, Node_Id
),
940 Sy
(Name
, Node_Id
, Default_Empty
),
941 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
943 Cc
(N_Object_Renaming_Declaration
, N_Renaming_Declaration
,
944 (Sy
(Defining_Identifier
, Node_Id
),
945 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
946 Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
947 Sy
(Access_Definition
, Node_Id
, Default_Empty
),
948 Sy
(Name
, Node_Id
, Default_Empty
),
949 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
950 Sm
(Comes_From_Iterator
, Flag
),
951 Sm
(Corresponding_Generic_Association
, Node_Id
)));
953 Cc
(N_Package_Renaming_Declaration
, N_Renaming_Declaration
,
954 (Sy
(Defining_Unit_Name
, Node_Id
),
955 Sy
(Name
, Node_Id
, Default_Empty
),
956 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
957 Sm
(Parent_Spec
, Node_Id
)));
959 Cc
(N_Subprogram_Renaming_Declaration
, N_Renaming_Declaration
,
960 (Sy
(Specification
, Node_Id
),
961 Sy
(Name
, Node_Id
, Default_Empty
),
962 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
963 Sm
(Corresponding_Formal_Spec
, Node_Id
),
964 Sm
(Corresponding_Spec
, Node_Id
),
965 Sm
(From_Default
, Flag
),
966 Sm
(Parent_Spec
, Node_Id
)));
968 Ab
(N_Generic_Renaming_Declaration
, N_Renaming_Declaration
,
969 (Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
970 Sm
(Parent_Spec
, Node_Id
)));
972 Cc
(N_Generic_Function_Renaming_Declaration
, N_Generic_Renaming_Declaration
,
973 (Sy
(Defining_Unit_Name
, Node_Id
),
974 Sy
(Name
, Node_Id
, Default_Empty
)));
976 Cc
(N_Generic_Package_Renaming_Declaration
, N_Generic_Renaming_Declaration
,
977 (Sy
(Defining_Unit_Name
, Node_Id
),
978 Sy
(Name
, Node_Id
, Default_Empty
)));
980 Cc
(N_Generic_Procedure_Renaming_Declaration
, N_Generic_Renaming_Declaration
,
981 (Sy
(Defining_Unit_Name
, Node_Id
),
982 Sy
(Name
, Node_Id
, Default_Empty
)));
984 Ab
(N_Statement_Other_Than_Procedure_Call
, Node_Kind
);
985 -- Note that this includes all statement types except for the cases of the
986 -- N_Procedure_Call_Statement which is considered to be a subexpression
987 -- (since overloading is possible, so it needs to go through the normal
988 -- overloading resolution for expressions).
990 Cc
(N_Abort_Statement
, N_Statement_Other_Than_Procedure_Call
,
991 (Sy
(Names
, List_Id
)));
993 Cc
(N_Accept_Statement
, N_Statement_Other_Than_Procedure_Call
,
994 (Sy
(Entry_Direct_Name
, Node_Id
),
995 Sy
(Entry_Index
, Node_Id
, Default_Empty
),
996 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
997 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
998 Sy
(Declarations
, List_Id
, Default_No_List
)));
1000 Cc
(N_Assignment_Statement
, N_Statement_Other_Than_Procedure_Call
,
1001 (Sy
(Name
, Node_Id
, Default_Empty
),
1002 Sy
(Expression
, Node_Id
, Default_Empty
),
1003 Sm
(Backwards_OK
, Flag
),
1004 Sm
(Componentwise_Assignment
, Flag
),
1005 Sm
(Do_Discriminant_Check
, Flag
),
1006 Sm
(Do_Length_Check
, Flag
),
1007 Sm
(Forwards_OK
, Flag
),
1008 Sm
(Has_Target_Names
, Flag
),
1009 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1010 Sm
(Is_Elaboration_Code
, Flag
),
1011 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
1012 Sm
(No_Ctrl_Actions
, Flag
),
1013 Sm
(No_Finalize_Actions
, Flag
),
1014 Sm
(Suppress_Assignment_Checks
, Flag
)));
1016 Cc
(N_Asynchronous_Select
, N_Statement_Other_Than_Procedure_Call
,
1017 (Sy
(Triggering_Alternative
, Node_Id
),
1018 Sy
(Abortable_Part
, Node_Id
)));
1020 Cc
(N_Block_Statement
, N_Statement_Other_Than_Procedure_Call
,
1021 (Sy
(Identifier
, Node_Id
, Default_Empty
),
1022 Sy
(Declarations
, List_Id
, Default_No_List
),
1023 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
1024 Sy
(Has_Created_Identifier
, Flag
),
1025 Sy
(Is_Asynchronous_Call_Block
, Flag
),
1026 Sy
(Is_Task_Allocation_Block
, Flag
),
1027 Sy
(At_End_Proc
, Node_Id
, Default_Empty
),
1028 Sm
(Activation_Chain_Entity
, Node_Id
),
1029 Sm
(Cleanup_Actions
, List_Id
),
1030 Sm
(Exception_Junk
, Flag
),
1031 Sm
(Is_Abort_Block
, Flag
),
1032 Sm
(Is_Initialization_Block
, Flag
),
1033 Sm
(Is_Task_Master
, Flag
)));
1035 Cc
(N_Case_Statement
, N_Statement_Other_Than_Procedure_Call
,
1036 (Sy
(Expression
, Node_Id
, Default_Empty
),
1037 Sy
(Alternatives
, List_Id
, Default_No_List
),
1038 Sy
(End_Span
, Unat
, Default_Uint_0
),
1039 Sm
(From_Conditional_Expression
, Flag
)));
1041 Cc
(N_Code_Statement
, N_Statement_Other_Than_Procedure_Call
,
1042 (Sy
(Expression
, Node_Id
, Default_Empty
)));
1044 Cc
(N_Compound_Statement
, N_Statement_Other_Than_Procedure_Call
,
1045 (Sy
(Actions
, List_Id
, Default_No_List
)));
1047 Cc
(N_Conditional_Entry_Call
, N_Statement_Other_Than_Procedure_Call
,
1048 (Sy
(Entry_Call_Alternative
, Node_Id
),
1049 Sy
(Else_Statements
, List_Id
, Default_No_List
)));
1051 Ab
(N_Delay_Statement
, N_Statement_Other_Than_Procedure_Call
);
1053 Cc
(N_Delay_Relative_Statement
, N_Delay_Statement
,
1054 (Sy
(Expression
, Node_Id
, Default_Empty
)));
1056 Cc
(N_Delay_Until_Statement
, N_Delay_Statement
,
1057 (Sy
(Expression
, Node_Id
, Default_Empty
)));
1059 Cc
(N_Entry_Call_Statement
, N_Statement_Other_Than_Procedure_Call
,
1060 (Sy
(Name
, Node_Id
, Default_Empty
),
1061 Sy
(Parameter_Associations
, List_Id
, Default_No_List
),
1062 Sm
(First_Named_Actual
, Node_Id
),
1063 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1064 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1065 Sm
(Is_SPARK_Mode_On_Node
, Flag
)));
1067 Cc
(N_Free_Statement
, N_Statement_Other_Than_Procedure_Call
,
1068 (Sy
(Expression
, Node_Id
, Default_Empty
),
1069 Sm
(Actual_Designated_Subtype
, Node_Id
),
1070 Sm
(Procedure_To_Call
, Node_Id
),
1071 Sm
(Storage_Pool
, Node_Id
)));
1073 Cc
(N_Goto_Statement
, N_Statement_Other_Than_Procedure_Call
,
1074 (Sy
(Name
, Node_Id
, Default_Empty
),
1075 Sm
(Exception_Junk
, Flag
)));
1077 Cc
(N_Goto_When_Statement
, N_Statement_Other_Than_Procedure_Call
,
1078 (Sy
(Name
, Node_Id
, Default_Empty
),
1079 Sy
(Condition
, Node_Id
, Default_Empty
)));
1081 Cc
(N_Loop_Statement
, N_Statement_Other_Than_Procedure_Call
,
1082 (Sy
(Identifier
, Node_Id
, Default_Empty
),
1083 Sy
(Iteration_Scheme
, Node_Id
, Default_Empty
),
1084 Sy
(Statements
, List_Id
, Default_Empty_List
),
1085 Sy
(End_Label
, Node_Id
, Default_Empty
),
1086 Sy
(Has_Created_Identifier
, Flag
),
1087 Sy
(Is_Null_Loop
, Flag
),
1088 Sy
(Suppress_Loop_Warnings
, Flag
)));
1090 Cc
(N_Null_Statement
, N_Statement_Other_Than_Procedure_Call
,
1091 (Sm
(Next_Rep_Item
, Node_Id
)));
1093 Cc
(N_Raise_Statement
, N_Statement_Other_Than_Procedure_Call
,
1094 (Sy
(Name
, Node_Id
, Default_Empty
),
1095 Sy
(Expression
, Node_Id
, Default_Empty
)));
1097 Cc
(N_Raise_When_Statement
, N_Statement_Other_Than_Procedure_Call
,
1098 (Sy
(Name
, Node_Id
, Default_Empty
),
1099 Sy
(Expression
, Node_Id
, Default_Empty
),
1100 Sy
(Condition
, Node_Id
, Default_Empty
)));
1102 Cc
(N_Requeue_Statement
, N_Statement_Other_Than_Procedure_Call
,
1103 (Sy
(Name
, Node_Id
, Default_Empty
),
1104 Sy
(Abort_Present
, Flag
),
1105 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1106 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1107 Sm
(Is_SPARK_Mode_On_Node
, Flag
)));
1109 Cc
(N_Simple_Return_Statement
, N_Statement_Other_Than_Procedure_Call
,
1110 (Sy
(Expression
, Node_Id
, Default_Empty
),
1111 Sm
(Comes_From_Extended_Return_Statement
, Flag
),
1112 Sm
(Procedure_To_Call
, Node_Id
),
1113 Sm
(Return_Statement_Entity
, Node_Id
),
1114 Sm
(Storage_Pool
, Node_Id
)));
1116 Cc
(N_Extended_Return_Statement
, N_Statement_Other_Than_Procedure_Call
,
1117 (Sy
(Return_Object_Declarations
, List_Id
),
1118 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
1119 Sm
(Procedure_To_Call
, Node_Id
),
1120 Sm
(Return_Statement_Entity
, Node_Id
),
1121 Sm
(Storage_Pool
, Node_Id
)));
1123 Cc
(N_Return_When_Statement
, N_Statement_Other_Than_Procedure_Call
,
1124 (Sy
(Expression
, Node_Id
, Default_Empty
),
1125 Sy
(Condition
, Node_Id
, Default_Empty
)));
1127 Cc
(N_Selective_Accept
, N_Statement_Other_Than_Procedure_Call
,
1128 (Sy
(Select_Alternatives
, List_Id
),
1129 Sy
(Else_Statements
, List_Id
, Default_No_List
)));
1131 Cc
(N_Timed_Entry_Call
, N_Statement_Other_Than_Procedure_Call
,
1132 (Sy
(Entry_Call_Alternative
, Node_Id
),
1133 Sy
(Delay_Alternative
, Node_Id
)));
1135 Cc
(N_Exit_Statement
, N_Statement_Other_Than_Procedure_Call
,
1136 (Sy
(Name
, Node_Id
, Default_Empty
),
1137 Sy
(Condition
, Node_Id
, Default_Empty
),
1138 Sm
(Next_Exit_Statement
, Node_Id
)));
1140 Cc
(N_If_Statement
, N_Statement_Other_Than_Procedure_Call
,
1141 (Sy
(Condition
, Node_Id
, Default_Empty
),
1142 Sy
(Then_Statements
, List_Id
),
1143 Sy
(Elsif_Parts
, List_Id
, Default_No_List
),
1144 Sy
(Else_Statements
, List_Id
, Default_No_List
),
1145 Sy
(End_Span
, Unat
, Default_Uint_0
),
1146 Sm
(From_Conditional_Expression
, Flag
),
1147 Sm
(Comes_From_Check_Or_Contract
, Flag
)));
1149 Cc
(N_Accept_Alternative
, Node_Kind
,
1150 (Sy
(Accept_Statement
, Node_Id
),
1151 Sy
(Condition
, Node_Id
, Default_Empty
),
1152 Sy
(Statements
, List_Id
, Default_Empty_List
),
1153 Sy
(Pragmas_Before
, List_Id
, Default_No_List
),
1154 Sm
(Accept_Handler_Records
, List_Id
)));
1156 Cc
(N_Delay_Alternative
, Node_Kind
,
1157 (Sy
(Delay_Statement
, Node_Id
),
1158 Sy
(Condition
, Node_Id
, Default_Empty
),
1159 Sy
(Statements
, List_Id
, Default_Empty_List
),
1160 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
1162 Cc
(N_Elsif_Part
, Node_Kind
,
1163 (Sy
(Condition
, Node_Id
, Default_Empty
),
1164 Sy
(Then_Statements
, List_Id
),
1165 Sm
(Condition_Actions
, List_Id
)));
1167 Cc
(N_Entry_Body_Formal_Part
, Node_Kind
,
1168 (Sy
(Entry_Index_Specification
, Node_Id
, Default_Empty
),
1169 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
1170 Sy
(Condition
, Node_Id
, Default_Empty
)));
1172 Cc
(N_Iteration_Scheme
, Node_Kind
,
1173 (Sy
(Condition
, Node_Id
, Default_Empty
),
1174 Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
1175 Sy
(Loop_Parameter_Specification
, Node_Id
, Default_Empty
),
1176 Sm
(Condition_Actions
, List_Id
)));
1178 Cc
(N_Terminate_Alternative
, Node_Kind
,
1179 (Sy
(Condition
, Node_Id
, Default_Empty
),
1180 Sy
(Pragmas_Before
, List_Id
, Default_No_List
),
1181 Sy
(Pragmas_After
, List_Id
, Default_No_List
)));
1183 Ab
(N_Formal_Subprogram_Declaration
, Node_Kind
);
1185 Cc
(N_Formal_Abstract_Subprogram_Declaration
, N_Formal_Subprogram_Declaration
,
1186 (Sy
(Specification
, Node_Id
),
1187 Sy
(Default_Name
, Node_Id
, Default_Empty
),
1188 Sy
(Expression
, Node_Id
, Default_Empty
),
1189 Sy
(Box_Present
, Flag
),
1190 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
1192 Cc
(N_Formal_Concrete_Subprogram_Declaration
, N_Formal_Subprogram_Declaration
,
1193 (Sy
(Specification
, Node_Id
),
1194 Sy
(Default_Name
, Node_Id
, Default_Empty
),
1195 Sy
(Expression
, Node_Id
, Default_Empty
),
1196 Sy
(Box_Present
, Flag
),
1197 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
1199 Ab
(N_Push_Pop_xxx_Label
, Node_Kind
);
1201 Ab
(N_Push_xxx_Label
, N_Push_Pop_xxx_Label
,
1202 (Sm
(Exception_Label
, Node_Id
)));
1204 Cc
(N_Push_Constraint_Error_Label
, N_Push_xxx_Label
);
1206 Cc
(N_Push_Program_Error_Label
, N_Push_xxx_Label
);
1208 Cc
(N_Push_Storage_Error_Label
, N_Push_xxx_Label
);
1210 Ab
(N_Pop_xxx_Label
, N_Push_Pop_xxx_Label
);
1212 Cc
(N_Pop_Constraint_Error_Label
, N_Pop_xxx_Label
);
1214 Cc
(N_Pop_Program_Error_Label
, N_Pop_xxx_Label
);
1216 Cc
(N_Pop_Storage_Error_Label
, N_Pop_xxx_Label
);
1218 Ab
(N_SCIL_Node
, Node_Kind
,
1219 (Sm
(SCIL_Entity
, Node_Id
)));
1221 Cc
(N_SCIL_Dispatch_Table_Tag_Init
, N_SCIL_Node
);
1223 Cc
(N_SCIL_Dispatching_Call
, N_SCIL_Node
,
1224 (Sm
(SCIL_Controlling_Tag
, Node_Id
),
1225 Sm
(SCIL_Target_Prim
, Node_Id
)));
1227 Cc
(N_SCIL_Membership_Test
, N_SCIL_Node
,
1228 (Sm
(SCIL_Tag_Value
, Node_Id
)));
1230 Cc
(N_Abortable_Part
, Node_Kind
,
1231 (Sy
(Statements
, List_Id
, Default_Empty_List
)));
1233 Cc
(N_Abstract_Subprogram_Declaration
, Node_Kind
,
1234 (Sy
(Specification
, Node_Id
),
1235 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
1237 Cc
(N_Access_Definition
, Node_Kind
,
1238 (Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1239 Sy
(All_Present
, Flag
),
1240 Sy
(Constant_Present
, Flag
),
1241 Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
1242 Sy
(Access_To_Subprogram_Definition
, Node_Id
, Default_Empty
)));
1244 Cc
(N_Access_To_Object_Definition
, Node_Kind
,
1245 (Sy
(All_Present
, Flag
),
1246 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1247 Sy
(Null_Excluding_Subtype
, Flag
),
1248 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
1249 Sy
(Constant_Present
, Flag
)));
1251 Cc
(N_Aspect_Specification
, Node_Kind
,
1252 (Sy
(Identifier
, Node_Id
, Default_Empty
),
1253 Sy
(Expression
, Node_Id
, Default_Empty
),
1254 Sy
(Class_Present
, Flag
),
1255 Sy
(Split_PPC
, Flag
),
1256 Sm
(Aspect_On_Partial_View
, Flag
),
1257 Sm
(Aspect_Rep_Item
, Node_Id
),
1258 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Entity
1259 Sm
(Expression_Copy
, Node_Id
),
1260 Sm
(Is_Boolean_Aspect
, Flag
),
1261 Sm
(Is_Checked
, Flag
),
1262 Sm
(Is_Delayed_Aspect
, Flag
),
1263 Sm
(Is_Disabled
, Flag
),
1264 Sm
(Is_Ignored
, Flag
),
1265 Sm
(Next_Rep_Item
, Node_Id
)));
1267 Cc
(N_Call_Marker
, Node_Kind
,
1268 (Sm
(Is_Declaration_Level_Node
, Flag
),
1269 Sm
(Is_Dispatching_Call
, Flag
),
1270 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1271 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1272 Sm
(Is_Known_Guaranteed_ABE
, Flag
),
1273 Sm
(Is_Preelaborable_Call
, Flag
),
1274 Sm
(Is_Source_Call
, Flag
),
1275 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
1276 Sm
(Target
, Node_Id
)));
1278 Cc
(N_Case_Expression_Alternative
, Node_Kind
,
1279 (Sm
(Actions
, List_Id
),
1280 Sy
(Discrete_Choices
, List_Id
),
1281 Sy
(Expression
, Node_Id
, Default_Empty
),
1282 Sm
(Has_SP_Choice
, Flag
)));
1284 Cc
(N_Case_Statement_Alternative
, Node_Kind
,
1285 (Sy
(Discrete_Choices
, List_Id
),
1286 Sy
(Statements
, List_Id
, Default_Empty_List
),
1287 Sm
(Has_SP_Choice
, Flag
),
1288 Sm
(Multidefined_Bindings
, Flag
)));
1290 Cc
(N_Compilation_Unit
, Node_Kind
,
1291 (Sy
(Context_Items
, List_Id
),
1292 Sy
(Private_Present
, Flag
),
1294 Sy
(Aux_Decls_Node
, Node_Id
),
1295 Sm
(Acts_As_Spec
, Flag
),
1296 Sm
(Body_Required
, Flag
),
1297 Sm
(Context_Pending
, Flag
),
1298 Sm
(First_Inlined_Subprogram
, Node_Id
),
1299 Sm
(Has_No_Elaboration_Code
, Flag
),
1300 Sm
(Has_Pragma_Suppress_All
, Flag
),
1301 Sm
(Library_Unit
, Node_Id
),
1302 Sm
(Save_Invocation_Graph_Of_Body
, Flag
)));
1304 Cc
(N_Compilation_Unit_Aux
, Node_Kind
,
1305 (Sy
(Declarations
, List_Id
, Default_No_List
),
1306 Sy
(Actions
, List_Id
, Default_No_List
),
1307 Sy
(Pragmas_After
, List_Id
, Default_No_List
),
1308 Sy
(Config_Pragmas
, List_Id
, Default_Empty_List
),
1309 Sm
(Default_Storage_Pool
, Node_Id
)));
1311 Cc
(N_Component_Association
, Node_Kind
,
1312 (Sy
(Choices
, List_Id
),
1313 Sy
(Expression
, Node_Id
, Default_Empty
),
1314 Sy
(Box_Present
, Flag
),
1315 Sy
(Inherited_Discriminant
, Flag
),
1316 Sy
(Binding_Chars
, Name_Id
, Default_No_Name
),
1317 Sm
(Loop_Actions
, List_Id
),
1318 Sm
(Was_Default_Init_Box_Association
, Flag
)));
1320 Cc
(N_Component_Definition
, Node_Kind
,
1321 (Sy
(Aliased_Present
, Flag
),
1322 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1323 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
1324 Sy
(Access_Definition
, Node_Id
, Default_Empty
)));
1326 Cc
(N_Component_List
, Node_Kind
,
1327 (Sy
(Component_Items
, List_Id
),
1328 Sy
(Variant_Part
, Node_Id
, Default_Empty
),
1329 Sy
(Null_Present
, Flag
)));
1331 Cc
(N_Contract
, Node_Kind
,
1332 (Sm
(Classifications
, Node_Id
),
1333 Sm
(Contract_Test_Cases
, Node_Id
),
1334 Sm
(Is_Expanded_Contract
, Flag
),
1335 Sm
(Pre_Post_Conditions
, Node_Id
)));
1337 Cc
(N_Derived_Type_Definition
, Node_Kind
,
1338 (Sy
(Abstract_Present
, Flag
),
1339 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1340 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
1341 Sy
(Record_Extension_Part
, Node_Id
, Default_Empty
),
1342 Sy
(Limited_Present
, Flag
),
1343 Sy
(Task_Present
, Flag
),
1344 Sy
(Protected_Present
, Flag
),
1345 Sy
(Synchronized_Present
, Flag
),
1346 Sy
(Interface_List
, List_Id
, Default_No_List
),
1347 Sy
(Interface_Present
, Flag
)));
1349 Cc
(N_Decimal_Fixed_Point_Definition
, Node_Kind
,
1350 (Sy
(Delta_Expression
, Node_Id
),
1351 Sy
(Digits_Expression
, Node_Id
),
1352 Sy
(Real_Range_Specification
, Node_Id
, Default_Empty
)));
1354 Cc
(N_Defining_Program_Unit_Name
, Node_Kind
,
1355 (Sy
(Name
, Node_Id
, Default_Empty
),
1356 Sy
(Defining_Identifier
, Node_Id
)));
1358 Cc
(N_Delta_Constraint
, Node_Kind
,
1359 (Sy
(Delta_Expression
, Node_Id
),
1360 Sy
(Range_Constraint
, Node_Id
, Default_Empty
)));
1362 Cc
(N_Designator
, Node_Kind
,
1363 (Sy
(Name
, Node_Id
, Default_Empty
),
1364 Sy
(Identifier
, Node_Id
, Default_Empty
)));
1366 Cc
(N_Digits_Constraint
, Node_Kind
,
1367 (Sy
(Digits_Expression
, Node_Id
),
1368 Sy
(Range_Constraint
, Node_Id
, Default_Empty
)));
1370 Cc
(N_Discriminant_Association
, Node_Kind
,
1371 (Sy
(Selector_Names
, List_Id
),
1372 Sy
(Expression
, Node_Id
, Default_Empty
)));
1374 Cc
(N_Discriminant_Specification
, Node_Kind
,
1375 (Sy
(Defining_Identifier
, Node_Id
),
1376 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1377 Sy
(Discriminant_Type
, Node_Id
),
1378 Sy
(Expression
, Node_Id
, Default_Empty
),
1379 Sm
(More_Ids
, Flag
),
1380 Sm
(Prev_Ids
, Flag
)));
1382 Cc
(N_Enumeration_Type_Definition
, Node_Kind
,
1383 (Sy
(Literals
, List_Id
),
1384 Sy
(End_Label
, Node_Id
, Default_Empty
)));
1386 Cc
(N_Entry_Body
, Node_Kind
,
1387 (Sy
(Defining_Identifier
, Node_Id
),
1388 Sy
(Entry_Body_Formal_Part
, Node_Id
),
1389 Sy
(Declarations
, List_Id
, Default_No_List
),
1390 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
1391 Sy
(At_End_Proc
, Node_Id
, Default_Empty
),
1392 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
1393 Sm
(Activation_Chain_Entity
, Node_Id
),
1394 Sm
(Corresponding_Spec
, Node_Id
)));
1396 Cc
(N_Entry_Call_Alternative
, Node_Kind
,
1397 (Sy
(Entry_Call_Statement
, Node_Id
),
1398 Sy
(Statements
, List_Id
, Default_Empty_List
),
1399 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
1401 Cc
(N_Entry_Index_Specification
, Node_Kind
,
1402 (Sy
(Defining_Identifier
, Node_Id
),
1403 Sy
(Discrete_Subtype_Definition
, Node_Id
, Default_Empty
)));
1405 Cc
(N_Exception_Declaration
, N_Declaration
,
1406 (Sy
(Defining_Identifier
, Node_Id
),
1407 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
1408 Sm
(Expression
, Node_Id
),
1409 Sm
(More_Ids
, Flag
),
1410 Sm
(Prev_Ids
, Flag
),
1411 Sm
(Renaming_Exception
, Node_Id
)));
1413 Cc
(N_Exception_Handler
, Node_Kind
,
1414 (Sy
(Choice_Parameter
, Node_Id
, Default_Empty
),
1415 Sy
(Exception_Choices
, List_Id
),
1416 Sy
(Statements
, List_Id
, Default_Empty_List
),
1417 Sm
(Exception_Label
, Node_Id
),
1418 Sm
(Has_Local_Raise
, Flag
),
1419 Sm
(Local_Raise_Not_OK
, Flag
),
1420 Sm
(Local_Raise_Statements
, Elist_Id
)));
1422 Cc
(N_Floating_Point_Definition
, Node_Kind
,
1423 (Sy
(Digits_Expression
, Node_Id
),
1424 Sy
(Real_Range_Specification
, Node_Id
, Default_Empty
)));
1426 Cc
(N_Formal_Decimal_Fixed_Point_Definition
, Node_Kind
);
1428 Cc
(N_Formal_Derived_Type_Definition
, Node_Kind
,
1429 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
1430 Sy
(Private_Present
, Flag
),
1431 Sy
(Abstract_Present
, Flag
),
1432 Sy
(Limited_Present
, Flag
),
1433 Sy
(Synchronized_Present
, Flag
),
1434 Sy
(Interface_List
, List_Id
, Default_No_List
)));
1436 Cc
(N_Formal_Discrete_Type_Definition
, Node_Kind
);
1438 Cc
(N_Formal_Floating_Point_Definition
, Node_Kind
);
1440 Cc
(N_Formal_Modular_Type_Definition
, Node_Kind
);
1442 Cc
(N_Formal_Ordinary_Fixed_Point_Definition
, Node_Kind
);
1444 Cc
(N_Formal_Package_Declaration
, Node_Kind
,
1445 (Sy
(Defining_Identifier
, Node_Id
),
1446 Sy
(Name
, Node_Id
, Default_Empty
),
1447 Sy
(Generic_Associations
, List_Id
, Default_No_List
),
1448 Sy
(Box_Present
, Flag
),
1449 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
1450 Sm
(Instance_Spec
, Node_Id
),
1451 Sm
(Is_Known_Guaranteed_ABE
, Flag
)));
1453 Cc
(N_Formal_Private_Type_Definition
, Node_Kind
,
1454 (Sy
(Abstract_Present
, Flag
),
1455 Sy
(Tagged_Present
, Flag
),
1456 Sy
(Limited_Present
, Flag
),
1457 Sm
(Uninitialized_Variable
, Node_Id
)));
1459 Cc
(N_Formal_Incomplete_Type_Definition
, Node_Kind
,
1460 (Sy
(Tagged_Present
, Flag
)));
1462 Cc
(N_Formal_Signed_Integer_Type_Definition
, Node_Kind
);
1464 Cc
(N_Freeze_Entity
, Node_Kind
,
1465 (Sy
(Actions
, List_Id
, Default_No_List
),
1466 Sm
(Access_Types_To_Process
, Elist_Id
),
1467 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Entity
1468 Sm
(First_Subtype_Link
, Node_Id
),
1469 Sm
(TSS_Elist
, Elist_Id
)));
1471 Cc
(N_Freeze_Generic_Entity
, Node_Kind
,
1472 Sm
(Entity_Or_Associated_Node
, Node_Id
)); -- just Entity
1474 Cc
(N_Generic_Association
, Node_Kind
,
1475 (Sy
(Selector_Name
, Node_Id
, Default_Empty
),
1476 Sy
(Explicit_Generic_Actual_Parameter
, Node_Id
),
1477 Sy
(Box_Present
, Flag
)));
1479 Cc
(N_Handled_Sequence_Of_Statements
, Node_Kind
,
1480 (Sy
(Statements
, List_Id
, Default_Empty_List
),
1481 Sy
(End_Label
, Node_Id
, Default_Empty
),
1482 Sy
(Exception_Handlers
, List_Id
, Default_No_List
),
1483 Sy
(At_End_Proc
, Node_Id
, Default_Empty
)));
1485 Cc
(N_Index_Or_Discriminant_Constraint
, Node_Kind
,
1486 (Sy
(Constraints
, List_Id
)));
1488 Cc
(N_Iterated_Component_Association
, Node_Kind
,
1489 (Sy
(Defining_Identifier
, Node_Id
),
1490 Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
1491 Sy
(Expression
, Node_Id
, Default_Empty
),
1492 Sy
(Discrete_Choices
, List_Id
),
1493 Sy
(Box_Present
, Flag
),
1494 Sm
(Loop_Actions
, List_Id
)));
1496 Cc
(N_Iterated_Element_Association
, Node_Kind
,
1497 (Sy
(Key_Expression
, Node_Id
),
1498 Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
1499 Sy
(Expression
, Node_Id
, Default_Empty
),
1500 Sy
(Loop_Parameter_Specification
, Node_Id
, Default_Empty
),
1501 Sy
(Box_Present
, Flag
),
1502 Sm
(Loop_Actions
, List_Id
)));
1504 Cc
(N_Itype_Reference
, Node_Kind
,
1505 (Sm
(Itype
, Node_Id
)));
1507 Cc
(N_Label
, Node_Kind
,
1508 (Sy
(Identifier
, Node_Id
, Default_Empty
),
1509 Sm
(Exception_Junk
, Flag
)));
1511 Cc
(N_Modular_Type_Definition
, Node_Kind
,
1512 (Sy
(Expression
, Node_Id
, Default_Empty
)));
1514 Cc
(N_Number_Declaration
, Node_Kind
,
1515 (Sy
(Defining_Identifier
, Node_Id
),
1516 Sy
(Expression
, Node_Id
, Default_Empty
),
1517 Sm
(More_Ids
, Flag
),
1518 Sm
(Prev_Ids
, Flag
)));
1520 Cc
(N_Ordinary_Fixed_Point_Definition
, Node_Kind
,
1521 (Sy
(Delta_Expression
, Node_Id
),
1522 Sy
(Real_Range_Specification
, Node_Id
, Default_Empty
)));
1524 Cc
(N_Others_Choice
, Node_Kind
,
1525 (Sm
(All_Others
, Flag
),
1526 Sm
(Others_Discrete_Choices
, List_Id
)));
1528 Cc
(N_Package_Specification
, Node_Kind
,
1529 (Sy
(Defining_Unit_Name
, Node_Id
),
1530 Sy
(Visible_Declarations
, List_Id
),
1531 Sy
(Private_Declarations
, List_Id
, Default_No_List
),
1532 Sy
(End_Label
, Node_Id
, Default_Empty
),
1533 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
1534 Sm
(Generic_Parent
, Node_Id
),
1535 Sm
(Limited_View_Installed
, Flag
)));
1537 Cc
(N_Parameter_Association
, Node_Kind
,
1538 (Sy
(Selector_Name
, Node_Id
, Default_Empty
),
1539 Sy
(Explicit_Actual_Parameter
, Node_Id
),
1540 Sm
(Is_Accessibility_Actual
, Flag
),
1541 Sm
(Next_Named_Actual
, Node_Id
)));
1543 Cc
(N_Parameter_Specification
, Node_Kind
,
1544 (Sy
(Defining_Identifier
, Node_Id
),
1545 Sy
(Aliased_Present
, Flag
),
1546 Sy
(In_Present
, Flag
),
1547 Sy
(Out_Present
, Flag
),
1548 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1549 Sy
(Parameter_Type
, Node_Id
),
1550 Sy
(Expression
, Node_Id
, Default_Empty
),
1551 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
),
1552 Sm
(Default_Expression
, Node_Id
),
1553 Sm
(More_Ids
, Flag
),
1554 Sm
(Prev_Ids
, Flag
)));
1556 Cc
(N_Pragma
, Node_Kind
,
1557 (Sy
(Pragma_Argument_Associations
, List_Id
, Default_No_List
),
1558 Sy
(Pragma_Identifier
, Node_Id
),
1559 Sy
(Class_Present
, Flag
),
1560 Sy
(Split_PPC
, Flag
),
1561 Sm
(Corresponding_Aspect
, Node_Id
),
1562 Sm
(From_Aspect_Specification
, Flag
),
1563 Sm
(Import_Interface_Present
, Flag
),
1564 Sm
(Is_Analyzed_Pragma
, Flag
),
1565 Sm
(Is_Checked
, Flag
),
1566 Sm
(Is_Checked_Ghost_Pragma
, Flag
),
1567 Sm
(Is_Delayed_Aspect
, Flag
),
1568 Sm
(Is_Disabled
, Flag
),
1569 Sm
(Is_Generic_Contract_Pragma
, Flag
),
1570 Sm
(Is_Ignored
, Flag
),
1571 Sm
(Is_Ignored_Ghost_Pragma
, Flag
),
1572 Sm
(Is_Inherited_Pragma
, Flag
),
1573 Sm
(Next_Pragma
, Node_Id
),
1574 Sm
(Next_Rep_Item
, Node_Id
),
1575 Sm
(Uneval_Old_Accept
, Flag
),
1576 Sm
(Uneval_Old_Warn
, Flag
)));
1578 Cc
(N_Protected_Definition
, Node_Kind
,
1579 (Sy
(Visible_Declarations
, List_Id
),
1580 Sy
(Private_Declarations
, List_Id
, Default_No_List
),
1581 Sy
(End_Label
, Node_Id
, Default_Empty
)));
1583 Cc
(N_Range_Constraint
, Node_Kind
,
1584 (Sy
(Range_Expression
, Node_Id
)));
1586 Cc
(N_Real_Range_Specification
, Node_Kind
,
1587 (Sy
(Low_Bound
, Node_Id
),
1588 Sy
(High_Bound
, Node_Id
)));
1590 Cc
(N_Record_Definition
, Node_Kind
,
1591 (Sy
(End_Label
, Node_Id
, Default_Empty
),
1592 Sy
(Abstract_Present
, Flag
),
1593 Sy
(Tagged_Present
, Flag
),
1594 Sy
(Limited_Present
, Flag
),
1595 Sy
(Component_List
, Node_Id
),
1596 Sy
(Null_Present
, Flag
),
1597 Sy
(Task_Present
, Flag
),
1598 Sy
(Protected_Present
, Flag
),
1599 Sy
(Synchronized_Present
, Flag
),
1600 Sy
(Interface_Present
, Flag
),
1601 Sy
(Interface_List
, List_Id
, Default_No_List
)));
1603 Cc
(N_Signed_Integer_Type_Definition
, Node_Kind
,
1604 (Sy
(Low_Bound
, Node_Id
),
1605 Sy
(High_Bound
, Node_Id
)));
1607 Cc
(N_Single_Protected_Declaration
, Node_Kind
,
1608 (Sy
(Defining_Identifier
, Node_Id
),
1609 Sy
(Interface_List
, List_Id
, Default_No_List
),
1610 Sy
(Protected_Definition
, Node_Id
),
1611 Sy
(Aspect_Specifications
, List_Id
, Default_No_List
)));
1613 Cc
(N_Subunit
, Node_Kind
,
1614 (Sy
(Name
, Node_Id
, Default_Empty
),
1615 Sy
(Proper_Body
, Node_Id
),
1616 Sm
(Corresponding_Stub
, Node_Id
)));
1618 Cc
(N_Task_Definition
, Node_Kind
,
1619 (Sy
(Visible_Declarations
, List_Id
),
1620 Sy
(Private_Declarations
, List_Id
, Default_No_List
),
1621 Sy
(End_Label
, Node_Id
, Default_Empty
),
1622 Sm
(Has_Relative_Deadline_Pragma
, Flag
),
1623 Sm
(Has_Storage_Size_Pragma
, Flag
)));
1625 Cc
(N_Triggering_Alternative
, Node_Kind
,
1626 (Sy
(Triggering_Statement
, Node_Id
),
1627 Sy
(Statements
, List_Id
, Default_Empty_List
),
1628 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
1630 Cc
(N_Use_Type_Clause
, Node_Kind
,
1631 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
1632 Sy
(Is_Effective_Use_Clause
, Flag
),
1633 Sy
(All_Present
, Flag
),
1634 Sm
(Hidden_By_Use_Clause
, Elist_Id
),
1635 Sm
(More_Ids
, Flag
),
1636 Sm
(Next_Use_Clause
, Node_Id
),
1637 Sm
(Prev_Ids
, Flag
),
1638 Sm
(Prev_Use_Clause
, Node_Id
),
1639 Sm
(Used_Operations
, Elist_Id
)));
1641 Cc
(N_Validate_Unchecked_Conversion
, Node_Kind
,
1642 (Sm
(Source_Type
, Node_Id
),
1643 Sm
(Target_Type
, Node_Id
)));
1645 Cc
(N_Variable_Reference_Marker
, Node_Kind
,
1646 (Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1647 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1649 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
1650 Sm
(Is_Write
, Flag
),
1651 Sm
(Target
, Node_Id
)));
1653 Cc
(N_Variant
, Node_Kind
,
1654 (Sy
(Discrete_Choices
, List_Id
),
1655 Sy
(Component_List
, Node_Id
),
1656 Sm
(Dcheck_Function
, Node_Id
),
1657 Sm
(Enclosing_Variant
, Node_Id
),
1658 Sm
(Has_SP_Choice
, Flag
),
1659 Sm
(Present_Expr
, Uint
)));
1661 Cc
(N_Variant_Part
, Node_Kind
,
1662 (Sy
(Name
, Node_Id
, Default_Empty
),
1663 Sy
(Variants
, List_Id
)));
1665 Cc
(N_With_Clause
, Node_Kind
,
1666 (Sy
(Name
, Node_Id
, Default_Empty
),
1667 Sy
(Private_Present
, Flag
),
1668 Sy
(Limited_Present
, Flag
),
1669 Sy
(First_Name
, Flag
, Default_True
),
1670 Sy
(Last_Name
, Flag
, Default_True
),
1671 Sm
(Context_Installed
, Flag
),
1672 Sm
(Corresponding_Spec
, Node_Id
),
1673 Sm
(Elaborate_All_Desirable
, Flag
),
1674 Sm
(Elaborate_All_Present
, Flag
),
1675 Sm
(Elaborate_Desirable
, Flag
),
1676 Sm
(Elaborate_Present
, Flag
),
1677 Sm
(Implicit_With
, Flag
),
1678 Sm
(Library_Unit
, Node_Id
),
1679 Sm
(Limited_View_Installed
, Flag
),
1680 Sm
(Next_Implicit_With
, Node_Id
),
1681 Sm
(No_Entities_Ref_In_Spec
, Flag
),
1682 Sm
(Parent_With
, Flag
),
1683 Sm
(Unreferenced_In_Spec
, Flag
)));
1685 Cc
(N_Unused_At_End
, Node_Kind
);
1687 -- Union types. These don't fit into the normal parent/child hierarchy
1692 (N_Attribute_Definition_Clause
,
1694 N_Pragma_Argument_Association
,
1700 N_Character_Literal
,
1703 Union
(N_Has_Condition
,
1707 N_Accept_Alternative
,
1708 N_Delay_Alternative
,
1710 N_Entry_Body_Formal_Part
,
1712 N_Terminate_Alternative
));
1713 -- Nodes with condition fields (does not include N_Raise_xxx_Error)
1715 Union
(N_Has_Bounds
,
1718 N_Real_Range_Specification
,
1719 N_Signed_Integer_Type_Definition
));
1720 -- Nodes that have Low_Bound and High_Bound defined
1726 N_Subtype_Indication
));
1727 -- Nodes that can be an index of an array
1729 Union
(N_Entity_Name
,
1733 N_Operator_Symbol
));
1734 -- Nodes that are definitely representing an entity.
1735 -- Some N_Attribute_Reference nodes may also represent an entity. See
1743 N_Discriminant_Specification
,
1744 N_Entry_Index_Specification
,
1745 N_Enumeration_Type_Definition
,
1746 N_Exception_Handler
,
1747 N_Explicit_Dereference
,
1748 N_Expression_With_Actions
,
1749 N_Extension_Aggregate
,
1751 N_Iterated_Component_Association
,
1755 N_Number_Declaration
,
1756 N_Package_Specification
,
1757 N_Parameter_Specification
,
1758 N_Renaming_Declaration
,
1759 N_Quantified_Expression
));
1760 -- Nodes that can be returned by Declaration_Node; it can also return
1761 -- Empty. Not all of these are true "declarations", but Declaration_Node
1762 -- can return them in some cases.
1766 (N_Character_Literal
,
1770 N_Subtype_Indication
));
1771 -- Nodes that can be used to specify a range
1773 Union
(N_Is_Case_Choice
,
1777 -- Nodes that can be in the choices of a case statement
1779 Union
(N_Is_Exception_Choice
,
1783 -- Nodes that can be in the choices of an exception handler
1785 Union
(N_Alternative
,
1787 (N_Case_Statement_Alternative
,
1789 -- Nodes that can be alternatives in case contructs
1791 end Gen_IL
.Gen
.Gen_Nodes
;