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-2021, 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
(Has_Aspects
, Flag
),
66 Sm
(Is_Ignored_Ghost_Node
, Flag
),
67 Sm
(Link
, Union_Id
)));
69 Cc
(N_Unused_At_Start
, Node_Kind
);
71 Ab
(N_Representation_Clause
, Node_Kind
);
73 Cc
(N_At_Clause
, N_Representation_Clause
,
74 (Sy
(Identifier
, Node_Id
, Default_Empty
),
75 Sy
(Expression
, Node_Id
, Default_Empty
)));
77 Cc
(N_Component_Clause
, N_Representation_Clause
,
78 (Sy
(Component_Name
, Node_Id
),
79 Sy
(Position
, Node_Id
),
80 Sy
(First_Bit
, Node_Id
),
81 Sy
(Last_Bit
, Node_Id
)));
83 Cc
(N_Enumeration_Representation_Clause
, N_Representation_Clause
,
84 (Sy
(Identifier
, Node_Id
, Default_Empty
),
85 Sy
(Array_Aggregate
, Node_Id
),
86 Sm
(Next_Rep_Item
, Node_Id
)));
88 Cc
(N_Mod_Clause
, N_Representation_Clause
,
89 (Sy
(Expression
, Node_Id
, Default_Empty
),
90 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
92 Cc
(N_Record_Representation_Clause
, N_Representation_Clause
,
93 (Sy
(Identifier
, Node_Id
, Default_Empty
),
94 Sy
(Mod_Clause
, Node_Id
, Default_Empty
),
95 Sy
(Component_Clauses
, List_Id
),
96 Sm
(Next_Rep_Item
, Node_Id
)));
98 Cc
(N_Attribute_Definition_Clause
, N_Representation_Clause
,
99 (Sy
(Name
, Node_Id
, Default_Empty
),
100 Sy
(Chars
, Name_Id
, Default_No_Name
),
101 Sy
(Expression
, Node_Id
, Default_Empty
),
102 Sm
(Address_Warning_Posted
, Flag
),
103 Sm
(Check_Address_Alignment
, Flag
),
104 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Entity
105 Sm
(From_Aspect_Specification
, Flag
),
106 Sm
(From_At_Mod
, Flag
),
107 Sm
(Is_Delayed_Aspect
, Flag
),
108 Sm
(Next_Rep_Item
, Node_Id
)));
110 Cc
(N_Empty
, Node_Kind
,
111 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
112 -- The following getters and setters are called on Empty,
113 -- and are currently inherited from Node_Kind:
115 -- Set_Comes_From_Source
126 Cc
(N_Pragma_Argument_Association
, Node_Kind
,
127 (Sy
(Chars
, Name_Id
, Default_No_Name
),
128 Sy
(Expression
, Node_Id
, Default_Empty
),
129 Sm
(Expression_Copy
, Node_Id
)));
131 Ab
(N_Has_Etype
, Node_Kind
,
132 (Sm
(Etype
, Node_Id
)));
134 Cc
(N_Error
, N_Has_Etype
,
135 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
137 Ab
(N_Entity
, N_Has_Etype
,
138 (Sm
(Next_Entity
, Node_Id
),
139 Sm
(Scope
, Node_Id
)));
141 Cc
(N_Defining_Character_Literal
, N_Entity
,
142 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
144 Cc
(N_Defining_Identifier
, N_Entity
,
145 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
147 Cc
(N_Defining_Operator_Symbol
, N_Entity
,
148 (Sy
(Chars
, Name_Id
, Default_No_Name
)));
150 Ab
(N_Subexpr
, N_Has_Etype
,
151 -- Nodes with expression fields
152 (Sm
(Assignment_OK
, Flag
),
153 Sm
(Do_Range_Check
, Flag
),
154 Sm
(Has_Dynamic_Length_Check
, Flag
),
155 Sm
(Is_Controlling_Actual
, Flag
),
156 Sm
(Is_Overloaded
, Flag
),
157 Sm
(Is_Static_Expression
, Flag
),
158 Sm
(Must_Not_Freeze
, Flag
),
159 Sm
(Raises_Constraint_Error
, Flag
)));
161 Ab
(N_Has_Entity
, N_Subexpr
,
162 -- Nodes that have Entity fields
163 -- Warning: DOES NOT INCLUDE N_Freeze_Entity, N_Freeze_Generic_Entity,
164 -- N_Aspect_Specification, or N_Attribute_Definition_Clause.
165 (Sm
(Entity_Or_Associated_Node
, Node_Id
))); -- both
167 Cc
(N_Expanded_Name
, N_Has_Entity
,
168 (Sy
(Chars
, Name_Id
, Default_No_Name
),
169 Sy
(Prefix
, Node_Id
),
170 Sy
(Selector_Name
, Node_Id
, Default_Empty
),
171 Sm
(Atomic_Sync_Required
, Flag
),
172 Sm
(Has_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
)));
181 Cc
(N_Identifier
, N_Direct_Name
,
182 (Sy
(Chars
, Name_Id
, Default_No_Name
),
183 Sm
(Atomic_Sync_Required
, Flag
),
184 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
185 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
186 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
187 Sm
(Original_Discriminant
, Node_Id
),
188 Sm
(Redundant_Use
, Flag
)));
190 Cc
(N_Operator_Symbol
, N_Direct_Name
,
191 (Sy
(Chars
, Name_Id
, Default_No_Name
),
192 Sy
(Strval
, String_Id
)));
194 Cc
(N_Character_Literal
, N_Direct_Name
,
195 (Sy
(Chars
, Name_Id
, Default_No_Name
),
196 Sy
(Char_Literal_Value
, Unat
)));
198 Ab
(N_Op
, N_Has_Entity
,
199 (Sm
(Do_Overflow_Check
, Flag
),
200 Sm
(Has_Private_View
, Flag
)));
202 Ab
(N_Binary_Op
, N_Op
);
204 Cc
(N_Op_Add
, N_Binary_Op
,
205 (Sm
(Chars
, Name_Id
),
206 Sy
(Left_Opnd
, Node_Id
),
207 Sy
(Right_Opnd
, Node_Id
)));
209 Cc
(N_Op_Concat
, N_Binary_Op
,
210 (Sm
(Chars
, Name_Id
),
211 Sy
(Left_Opnd
, Node_Id
),
212 Sy
(Right_Opnd
, Node_Id
),
213 Sm
(Is_Component_Left_Opnd
, Flag
),
214 Sm
(Is_Component_Right_Opnd
, Flag
)));
216 Cc
(N_Op_Expon
, N_Binary_Op
,
217 (Sm
(Chars
, Name_Id
),
218 Sy
(Left_Opnd
, Node_Id
),
219 Sy
(Right_Opnd
, Node_Id
),
220 Sm
(Is_Power_Of_2_For_Shift
, Flag
)));
222 Cc
(N_Op_Subtract
, N_Binary_Op
,
223 (Sm
(Chars
, Name_Id
),
224 Sy
(Left_Opnd
, Node_Id
),
225 Sy
(Right_Opnd
, Node_Id
)));
227 Ab
(N_Multiplying_Operator
, N_Binary_Op
);
229 Cc
(N_Op_Divide
, N_Multiplying_Operator
,
230 (Sm
(Chars
, Name_Id
),
231 Sy
(Left_Opnd
, Node_Id
),
232 Sy
(Right_Opnd
, Node_Id
),
233 Sm
(Do_Division_Check
, Flag
),
234 Sm
(Rounded_Result
, Flag
)));
236 Cc
(N_Op_Mod
, N_Multiplying_Operator
,
237 (Sm
(Chars
, Name_Id
),
238 Sy
(Left_Opnd
, Node_Id
),
239 Sy
(Right_Opnd
, Node_Id
),
240 Sm
(Do_Division_Check
, Flag
)));
242 Cc
(N_Op_Multiply
, N_Multiplying_Operator
,
243 (Sm
(Chars
, Name_Id
),
244 Sy
(Left_Opnd
, Node_Id
),
245 Sy
(Right_Opnd
, Node_Id
),
246 Sm
(Rounded_Result
, Flag
)));
248 Cc
(N_Op_Rem
, N_Multiplying_Operator
,
249 (Sm
(Chars
, Name_Id
),
250 Sy
(Left_Opnd
, Node_Id
),
251 Sy
(Right_Opnd
, Node_Id
),
252 Sm
(Do_Division_Check
, Flag
)));
254 Ab
(N_Op_Boolean
, N_Binary_Op
);
255 -- Binary operators that take operands of a boolean type, and yield a
256 -- result of a boolean type.
258 Cc
(N_Op_And
, N_Op_Boolean
,
259 (Sm
(Chars
, Name_Id
),
260 Sy
(Left_Opnd
, Node_Id
),
261 Sy
(Right_Opnd
, Node_Id
),
262 Sm
(Do_Length_Check
, Flag
)));
264 Ab
(N_Op_Compare
, N_Op_Boolean
);
266 Cc
(N_Op_Eq
, N_Op_Compare
,
267 (Sm
(Chars
, Name_Id
),
268 Sy
(Left_Opnd
, Node_Id
),
269 Sy
(Right_Opnd
, Node_Id
)));
271 Cc
(N_Op_Ge
, N_Op_Compare
,
272 (Sm
(Chars
, Name_Id
),
273 Sy
(Left_Opnd
, Node_Id
),
274 Sy
(Right_Opnd
, Node_Id
)));
276 Cc
(N_Op_Gt
, N_Op_Compare
,
277 (Sm
(Chars
, Name_Id
),
278 Sy
(Left_Opnd
, Node_Id
),
279 Sy
(Right_Opnd
, Node_Id
)));
281 Cc
(N_Op_Le
, N_Op_Compare
,
282 (Sm
(Chars
, Name_Id
),
283 Sy
(Left_Opnd
, Node_Id
),
284 Sy
(Right_Opnd
, Node_Id
)));
286 Cc
(N_Op_Lt
, N_Op_Compare
,
287 (Sm
(Chars
, Name_Id
),
288 Sy
(Left_Opnd
, Node_Id
),
289 Sy
(Right_Opnd
, Node_Id
)));
291 Cc
(N_Op_Ne
, N_Op_Compare
,
292 (Sm
(Chars
, Name_Id
),
293 Sy
(Left_Opnd
, Node_Id
),
294 Sy
(Right_Opnd
, Node_Id
)));
296 Cc
(N_Op_Or
, N_Op_Boolean
,
297 (Sm
(Chars
, Name_Id
),
298 Sy
(Left_Opnd
, Node_Id
),
299 Sy
(Right_Opnd
, Node_Id
),
300 Sm
(Do_Length_Check
, Flag
)));
302 Cc
(N_Op_Xor
, N_Op_Boolean
,
303 (Sm
(Chars
, Name_Id
),
304 Sy
(Left_Opnd
, Node_Id
),
305 Sy
(Right_Opnd
, Node_Id
),
306 Sm
(Do_Length_Check
, Flag
)));
308 Ab
(N_Op_Shift
, N_Binary_Op
,
309 (Sm
(Shift_Count_OK
, Flag
)));
311 Cc
(N_Op_Rotate_Left
, N_Op_Shift
,
312 (Sm
(Chars
, Name_Id
),
313 Sy
(Left_Opnd
, Node_Id
),
314 Sy
(Right_Opnd
, Node_Id
)));
316 Cc
(N_Op_Rotate_Right
, N_Op_Shift
,
317 (Sm
(Chars
, Name_Id
),
318 Sy
(Left_Opnd
, Node_Id
),
319 Sy
(Right_Opnd
, Node_Id
)));
321 Cc
(N_Op_Shift_Left
, N_Op_Shift
,
322 (Sm
(Chars
, Name_Id
),
323 Sy
(Left_Opnd
, Node_Id
),
324 Sy
(Right_Opnd
, Node_Id
)));
326 Cc
(N_Op_Shift_Right
, N_Op_Shift
,
327 (Sm
(Chars
, Name_Id
),
328 Sy
(Left_Opnd
, Node_Id
),
329 Sy
(Right_Opnd
, Node_Id
)));
331 Cc
(N_Op_Shift_Right_Arithmetic
, N_Op_Shift
,
332 (Sm
(Chars
, Name_Id
),
333 Sy
(Left_Opnd
, Node_Id
),
334 Sy
(Right_Opnd
, Node_Id
)));
336 Ab
(N_Unary_Op
, N_Op
);
338 Cc
(N_Op_Abs
, N_Unary_Op
,
339 (Sm
(Chars
, Name_Id
),
340 Sy
(Right_Opnd
, Node_Id
)));
342 Cc
(N_Op_Minus
, N_Unary_Op
,
343 (Sm
(Chars
, Name_Id
),
344 Sy
(Right_Opnd
, Node_Id
)));
346 Cc
(N_Op_Not
, N_Unary_Op
,
347 (Sm
(Chars
, Name_Id
),
348 Sy
(Right_Opnd
, Node_Id
)));
350 Cc
(N_Op_Plus
, N_Unary_Op
,
351 (Sm
(Chars
, Name_Id
),
352 Sy
(Right_Opnd
, Node_Id
)));
354 Cc
(N_Attribute_Reference
, N_Has_Entity
,
355 (Sy
(Prefix
, Node_Id
),
356 Sy
(Attribute_Name
, Name_Id
),
357 Sy
(Expressions
, List_Id
, Default_No_List
),
358 Sm
(Do_Overflow_Check
, Flag
),
359 Sm
(Header_Size_Added
, Flag
),
360 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
361 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
362 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
363 Sm
(Must_Be_Byte_Aligned
, Flag
),
364 Sm
(Redundant_Use
, Flag
)));
366 Ab
(N_Membership_Test
, N_Subexpr
);
368 Cc
(N_In
, N_Membership_Test
,
369 (Sy
(Left_Opnd
, Node_Id
),
370 Sy
(Right_Opnd
, Node_Id
),
371 Sy
(Alternatives
, List_Id
, Default_No_List
),
372 Sy
(No_Minimize_Eliminate
, Flag
)));
374 Cc
(N_Not_In
, N_Membership_Test
,
375 (Sy
(Left_Opnd
, Node_Id
),
376 Sy
(Right_Opnd
, Node_Id
),
377 Sy
(Alternatives
, List_Id
, Default_No_List
),
378 Sy
(No_Minimize_Eliminate
, Flag
)));
380 Ab
(N_Short_Circuit
, N_Subexpr
);
382 Cc
(N_And_Then
, N_Short_Circuit
,
383 (Sy
(Left_Opnd
, Node_Id
),
384 Sy
(Right_Opnd
, Node_Id
),
385 Sm
(Actions
, List_Id
)));
387 Cc
(N_Or_Else
, N_Short_Circuit
,
388 (Sy
(Left_Opnd
, Node_Id
),
389 Sy
(Right_Opnd
, Node_Id
),
390 Sm
(Actions
, List_Id
)));
392 Ab
(N_Subprogram_Call
, N_Subexpr
,
393 (Sm
(Controlling_Argument
, Node_Id
),
394 Sm
(First_Named_Actual
, Node_Id
),
395 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
396 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
397 Sm
(Is_Known_Guaranteed_ABE
, Flag
),
398 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
399 Sm
(No_Elaboration_Check
, Flag
)));
401 Cc
(N_Function_Call
, N_Subprogram_Call
,
402 (Sy
(Name
, Node_Id
, Default_Empty
),
403 Sy
(Parameter_Associations
, List_Id
, Default_No_List
),
404 Sm
(Is_Expanded_Build_In_Place_Call
, Flag
),
405 Sm
(No_Side_Effect_Removal
, Flag
)));
407 Cc
(N_Procedure_Call_Statement
, N_Subprogram_Call
,
408 (Sy
(Name
, Node_Id
, Default_Empty
),
409 Sy
(Parameter_Associations
, List_Id
, Default_No_List
)));
411 Ab
(N_Raise_xxx_Error
, N_Subexpr
);
413 Cc
(N_Raise_Constraint_Error
, N_Raise_xxx_Error
,
414 (Sy
(Condition
, Node_Id
, Default_Empty
),
417 Cc
(N_Raise_Program_Error
, N_Raise_xxx_Error
,
418 (Sy
(Condition
, Node_Id
, Default_Empty
),
421 Cc
(N_Raise_Storage_Error
, N_Raise_xxx_Error
,
422 (Sy
(Condition
, Node_Id
, Default_Empty
),
425 Ab
(N_Numeric_Or_String_Literal
, N_Subexpr
);
427 Cc
(N_Integer_Literal
, N_Numeric_Or_String_Literal
,
428 (Sy
(Intval
, Valid_Uint
),
429 Sm
(Original_Entity
, Node_Id
),
430 Sm
(Print_In_Hex
, Flag
)));
432 Cc
(N_Real_Literal
, N_Numeric_Or_String_Literal
,
433 (Sy
(Realval
, Ureal
),
434 Sm
(Corresponding_Integer_Value
, Valid_Uint
),
435 Sm
(Is_Machine_Number
, Flag
),
436 Sm
(Original_Entity
, Node_Id
)));
438 Cc
(N_String_Literal
, N_Numeric_Or_String_Literal
,
439 (Sy
(Strval
, String_Id
),
440 Sy
(Is_Folded_In_Parser
, Flag
),
441 Sm
(Has_Wide_Character
, Flag
),
442 Sm
(Has_Wide_Wide_Character
, Flag
)));
444 Cc
(N_Explicit_Dereference
, N_Subexpr
,
445 (Sy
(Prefix
, Node_Id
),
446 Sm
(Actual_Designated_Subtype
, Node_Id
),
447 Sm
(Atomic_Sync_Required
, Flag
),
448 Sm
(Has_Dereference_Action
, Flag
)));
450 Cc
(N_Expression_With_Actions
, N_Subexpr
,
451 (Sy
(Actions
, List_Id
, Default_No_List
),
452 Sy
(Expression
, Node_Id
, Default_Empty
)));
454 Cc
(N_If_Expression
, N_Subexpr
,
455 (Sy
(Expressions
, List_Id
, Default_No_List
),
457 Sm
(Do_Overflow_Check
, Flag
),
458 Sm
(Else_Actions
, List_Id
),
459 Sm
(Then_Actions
, List_Id
)));
461 Cc
(N_Indexed_Component
, N_Subexpr
,
462 (Sy
(Prefix
, Node_Id
),
463 Sy
(Expressions
, List_Id
, Default_No_List
),
464 Sm
(Atomic_Sync_Required
, Flag
),
465 Sm
(Generalized_Indexing
, Node_Id
)));
467 Cc
(N_Null
, N_Subexpr
);
469 Cc
(N_Qualified_Expression
, N_Subexpr
,
470 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
471 Sy
(Expression
, Node_Id
, Default_Empty
),
472 Sm
(Is_Qualified_Universal_Literal
, Flag
)));
474 Cc
(N_Quantified_Expression
, N_Subexpr
,
475 (Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
476 Sy
(Loop_Parameter_Specification
, Node_Id
, Default_Empty
),
477 Sy
(Condition
, Node_Id
, Default_Empty
),
478 Sy
(All_Present
, Flag
)));
480 Cc
(N_Aggregate
, N_Subexpr
,
481 (Sy
(Expressions
, List_Id
, Default_No_List
),
482 Sy
(Component_Associations
, List_Id
, Default_No_List
),
483 Sy
(Null_Record_Present
, Flag
),
484 Sy
(Is_Homogeneous_Aggregate
, Flag
),
485 Sm
(Aggregate_Bounds
, Node_Id
),
486 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
487 Sm
(Compile_Time_Known_Aggregate
, Flag
),
488 Sm
(Expansion_Delayed
, Flag
),
489 Sm
(Has_Self_Reference
, Flag
)));
491 Cc
(N_Allocator
, N_Subexpr
,
492 (Sy
(Expression
, Node_Id
, Default_Empty
),
493 Sy
(Subpool_Handle_Name
, Node_Id
, Default_Empty
),
494 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
495 Sm
(Alloc_For_BIP_Return
, Flag
),
496 Sm
(Do_Storage_Check
, Flag
),
497 Sm
(Is_Dynamic_Coextension
, Flag
),
498 Sm
(Is_Static_Coextension
, Flag
),
499 Sm
(No_Initialization
, Flag
),
500 Sm
(Procedure_To_Call
, Node_Id
),
501 Sm
(Storage_Pool
, Node_Id
)));
503 Cc
(N_Case_Expression
, N_Subexpr
,
504 (Sy
(Expression
, Node_Id
, Default_Empty
),
505 Sy
(Alternatives
, List_Id
, Default_No_List
),
506 Sm
(Do_Overflow_Check
, Flag
)));
508 Cc
(N_Delta_Aggregate
, N_Subexpr
,
509 (Sy
(Expression
, Node_Id
, Default_Empty
),
510 Sy
(Component_Associations
, List_Id
, Default_No_List
)));
512 Cc
(N_Extension_Aggregate
, N_Subexpr
,
513 (Sy
(Ancestor_Part
, Node_Id
),
514 Sy
(Expressions
, List_Id
, Default_No_List
),
515 Sy
(Component_Associations
, List_Id
, Default_No_List
),
516 Sy
(Null_Record_Present
, Flag
),
517 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
518 Sm
(Expansion_Delayed
, Flag
),
519 Sm
(Has_Self_Reference
, Flag
)));
521 Cc
(N_Raise_Expression
, N_Subexpr
,
522 (Sy
(Name
, Node_Id
, Default_Empty
),
523 Sy
(Expression
, Node_Id
, Default_Empty
),
524 Sm
(Convert_To_Return_False
, Flag
)));
526 Cc
(N_Range
, N_Subexpr
,
527 (Sy
(Low_Bound
, Node_Id
),
528 Sy
(High_Bound
, Node_Id
),
529 Sy
(Includes_Infinities
, Flag
)));
531 Cc
(N_Reference
, N_Subexpr
,
532 (Sy
(Prefix
, Node_Id
)));
534 Cc
(N_Selected_Component
, N_Subexpr
,
535 (Sy
(Prefix
, Node_Id
),
536 Sy
(Selector_Name
, Node_Id
, Default_Empty
),
537 Sm
(Atomic_Sync_Required
, Flag
),
538 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
539 Sm
(Do_Discriminant_Check
, Flag
),
540 Sm
(Is_In_Discriminant_Check
, Flag
),
541 Sm
(Is_Prefixed_Call
, Flag
)));
543 Cc
(N_Slice
, N_Subexpr
,
544 (Sy
(Prefix
, Node_Id
),
545 Sy
(Discrete_Range
, Node_Id
)));
547 Cc
(N_Target_Name
, N_Subexpr
);
549 Cc
(N_Type_Conversion
, N_Subexpr
,
550 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
551 Sy
(Expression
, Node_Id
, Default_Empty
),
552 Sm
(Conversion_OK
, Flag
),
553 Sm
(Do_Discriminant_Check
, Flag
),
554 Sm
(Do_Length_Check
, Flag
),
555 Sm
(Do_Overflow_Check
, Flag
),
556 Sm
(Float_Truncate
, Flag
),
557 Sm
(Rounded_Result
, Flag
)));
559 Cc
(N_Unchecked_Expression
, N_Subexpr
,
560 (Sy
(Expression
, Node_Id
, Default_Empty
)));
562 Cc
(N_Unchecked_Type_Conversion
, N_Subexpr
,
563 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
564 Sy
(Expression
, Node_Id
, Default_Empty
),
565 Sm
(Kill_Range_Check
, Flag
),
566 Sm
(No_Truncation
, Flag
)),
567 Nmake_Assert
=> "True or else Nkind (Expression) /= N_Unchecked_Type_Conversion");
568 -- Nmake_Assert => "Nkind (Expression) /= N_Unchecked_Type_Conversion");
569 -- Assert that we don't have unchecked conversions of unchecked
570 -- conversions; if Expression might be an unchecked conversion,
571 -- then Tbuild.Unchecked_Convert_To should be used.
573 Cc
(N_Subtype_Indication
, N_Has_Etype
,
574 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
575 Sy
(Constraint
, Node_Id
),
576 Sm
(Must_Not_Freeze
, Flag
)));
578 Ab
(N_Declaration
, Node_Kind
);
579 -- Note: this includes all constructs normally thought of as declarations
580 -- except those that are separately grouped in N_Later_Decl_Item. But
581 -- Declaration_Node may return yet more node types; see N_Is_Decl below.
583 Cc
(N_Component_Declaration
, N_Declaration
,
584 (Sy
(Defining_Identifier
, Node_Id
),
585 Sy
(Component_Definition
, Node_Id
),
586 Sy
(Expression
, Node_Id
, Default_Empty
),
588 Sm
(Prev_Ids
, Flag
)));
590 Cc
(N_Entry_Declaration
, N_Declaration
,
591 (Sy
(Defining_Identifier
, Node_Id
),
592 Sy
(Discrete_Subtype_Definition
, Node_Id
, Default_Empty
),
593 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
594 Sy
(Must_Override
, Flag
),
595 Sy
(Must_Not_Override
, Flag
),
596 Sm
(Corresponding_Body
, Node_Id
)));
598 Cc
(N_Expression_Function
, N_Declaration
,
599 (Sy
(Specification
, Node_Id
),
600 Sy
(Expression
, Node_Id
, Default_Empty
),
601 Sm
(Corresponding_Spec
, Node_Id
)));
603 Cc
(N_Formal_Object_Declaration
, N_Declaration
,
604 (Sy
(Defining_Identifier
, Node_Id
),
605 Sy
(In_Present
, Flag
),
606 Sy
(Out_Present
, Flag
),
607 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
608 Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
609 Sy
(Access_Definition
, Node_Id
, Default_Empty
),
610 Sy
(Default_Expression
, Node_Id
, Default_Empty
),
612 Sm
(Prev_Ids
, Flag
)));
614 Cc
(N_Formal_Type_Declaration
, N_Declaration
,
615 (Sy
(Defining_Identifier
, Node_Id
),
616 Sy
(Formal_Type_Definition
, Node_Id
),
617 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
618 Sy
(Unknown_Discriminants_Present
, Flag
),
619 Sy
(Default_Subtype_Mark
, Node_Id
)));
621 Cc
(N_Full_Type_Declaration
, N_Declaration
,
622 (Sy
(Defining_Identifier
, Node_Id
),
623 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
624 Sy
(Type_Definition
, Node_Id
),
625 Sm
(Discr_Check_Funcs_Built
, Flag
),
626 Sm
(Incomplete_View
, Node_Id
)));
628 Cc
(N_Incomplete_Type_Declaration
, N_Declaration
,
629 (Sy
(Defining_Identifier
, Node_Id
),
630 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
631 Sy
(Unknown_Discriminants_Present
, Flag
),
632 Sy
(Tagged_Present
, Flag
),
633 Sm
(Premature_Use
, Node_Id
)));
635 Cc
(N_Iterator_Specification
, N_Declaration
,
636 (Sy
(Defining_Identifier
, Node_Id
),
637 Sy
(Name
, Node_Id
, Default_Empty
),
638 Sy
(Reverse_Present
, Flag
),
639 Sy
(Of_Present
, Flag
),
640 Sy
(Iterator_Filter
, Node_Id
, Default_Empty
),
641 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
)));
643 Cc
(N_Loop_Parameter_Specification
, N_Declaration
,
644 (Sy
(Defining_Identifier
, Node_Id
),
645 Sy
(Reverse_Present
, Flag
),
646 Sy
(Iterator_Filter
, Node_Id
, Default_Empty
),
647 Sy
(Discrete_Subtype_Definition
, Node_Id
, Default_Empty
)));
649 Cc
(N_Object_Declaration
, N_Declaration
,
650 (Sy
(Defining_Identifier
, Node_Id
),
651 Sy
(Aliased_Present
, Flag
),
652 Sy
(Constant_Present
, Flag
),
653 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
654 Sy
(Object_Definition
, Node_Id
),
655 Sy
(Expression
, Node_Id
, Default_Empty
),
656 Sy
(Has_Init_Expression
, Flag
),
657 Sm
(Assignment_OK
, Flag
),
658 Sm
(Corresponding_Generic_Association
, Node_Id
),
659 Sm
(Exception_Junk
, Flag
),
660 Sm
(Handler_List_Entry
, Node_Id
),
661 Sm
(Is_Subprogram_Descriptor
, Flag
),
663 Sm
(No_Initialization
, Flag
),
665 Sm
(Suppress_Assignment_Checks
, Flag
)));
667 Cc
(N_Protected_Type_Declaration
, N_Declaration
,
668 (Sy
(Defining_Identifier
, Node_Id
),
669 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
670 Sy
(Interface_List
, List_Id
, Default_No_List
),
671 Sy
(Protected_Definition
, Node_Id
),
672 Sm
(Corresponding_Body
, Node_Id
)));
674 Cc
(N_Private_Extension_Declaration
, N_Declaration
,
675 (Sy
(Defining_Identifier
, Node_Id
),
676 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
677 Sy
(Unknown_Discriminants_Present
, Flag
),
678 Sy
(Abstract_Present
, Flag
),
679 Sy
(Limited_Present
, Flag
),
680 Sy
(Synchronized_Present
, Flag
),
681 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
682 Sy
(Interface_List
, List_Id
, Default_No_List
),
683 Sm
(Uninitialized_Variable
, Node_Id
)));
685 Cc
(N_Private_Type_Declaration
, N_Declaration
,
686 (Sy
(Defining_Identifier
, Node_Id
),
687 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
688 Sy
(Unknown_Discriminants_Present
, Flag
),
689 Sy
(Abstract_Present
, Flag
),
690 Sy
(Tagged_Present
, Flag
),
691 Sy
(Limited_Present
, Flag
)));
693 Cc
(N_Subtype_Declaration
, N_Declaration
,
694 (Sy
(Defining_Identifier
, Node_Id
),
695 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
696 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
697 Sm
(Exception_Junk
, Flag
),
698 Sm
(Generic_Parent_Type
, Node_Id
)));
700 Ab
(N_Subprogram_Specification
, N_Declaration
,
701 (Sm
(Generic_Parent
, Node_Id
)));
703 Cc
(N_Function_Specification
, N_Subprogram_Specification
,
704 (Sy
(Defining_Unit_Name
, Node_Id
),
705 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
706 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
707 Sy
(Result_Definition
, Node_Id
),
708 Sy
(Must_Override
, Flag
),
709 Sy
(Must_Not_Override
, Flag
)));
711 Cc
(N_Procedure_Specification
, N_Subprogram_Specification
,
712 (Sy
(Defining_Unit_Name
, Node_Id
),
713 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
714 Sy
(Null_Present
, Flag
),
715 Sy
(Must_Override
, Flag
),
716 Sy
(Must_Not_Override
, Flag
),
717 Sm
(Null_Statement
, Node_Id
)));
719 Ab
(N_Access_To_Subprogram_Definition
, Node_Kind
);
721 Cc
(N_Access_Function_Definition
, N_Access_To_Subprogram_Definition
,
722 (Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
723 Sy
(Null_Exclusion_In_Return_Present
, Flag
),
724 Sy
(Protected_Present
, Flag
),
725 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
726 Sy
(Result_Definition
, Node_Id
)));
728 Cc
(N_Access_Procedure_Definition
, N_Access_To_Subprogram_Definition
,
729 (Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
730 Sy
(Protected_Present
, Flag
),
731 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
)));
733 Ab
(N_Later_Decl_Item
, Node_Kind
);
734 -- Note: this is Ada 83 relevant only (see Ada 83 RM 3.9 (2)) and includes
735 -- only those items which can appear as later declarative items. This also
736 -- includes N_Implicit_Label_Declaration which is not specifically in the
737 -- grammar but may appear as a valid later declarative items. It does NOT
738 -- include N_Pragma which can also appear among later declarative items.
739 -- It does however include N_Protected_Body, which is a bit peculiar, but
740 -- harmless since this cannot appear in Ada 83 mode anyway.
742 Cc
(N_Task_Type_Declaration
, N_Later_Decl_Item
,
743 (Sy
(Defining_Identifier
, Node_Id
),
744 Sy
(Discriminant_Specifications
, List_Id
, Default_No_List
),
745 Sy
(Interface_List
, List_Id
, Default_No_List
),
746 Sy
(Task_Definition
, Node_Id
, Default_Empty
),
747 Sm
(Corresponding_Body
, Node_Id
)));
749 Ab
(N_Body_Stub
, N_Later_Decl_Item
,
750 (Sm
(Corresponding_Body
, Node_Id
),
751 Sm
(Corresponding_Spec_Of_Stub
, Node_Id
),
752 Sm
(Library_Unit
, Node_Id
)));
754 Cc
(N_Package_Body_Stub
, N_Body_Stub
,
755 (Sy
(Defining_Identifier
, Node_Id
)));
757 Cc
(N_Protected_Body_Stub
, N_Body_Stub
,
758 (Sy
(Defining_Identifier
, Node_Id
)));
760 Cc
(N_Subprogram_Body_Stub
, N_Body_Stub
,
761 (Sy
(Specification
, Node_Id
)));
763 Cc
(N_Task_Body_Stub
, N_Body_Stub
,
764 (Sy
(Defining_Identifier
, Node_Id
)));
766 Ab
(N_Generic_Instantiation
, N_Later_Decl_Item
,
767 (Sm
(Instance_Spec
, Node_Id
),
768 Sm
(Is_Declaration_Level_Node
, Flag
),
769 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
770 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
771 Sm
(Is_Known_Guaranteed_ABE
, Flag
),
772 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
773 Sm
(Parent_Spec
, Node_Id
)));
775 Ab
(N_Subprogram_Instantiation
, N_Generic_Instantiation
);
777 Cc
(N_Function_Instantiation
, N_Subprogram_Instantiation
,
778 (Sy
(Defining_Unit_Name
, Node_Id
),
779 Sy
(Name
, Node_Id
, Default_Empty
),
780 Sy
(Generic_Associations
, List_Id
, Default_No_List
),
781 Sy
(Must_Override
, Flag
),
782 Sy
(Must_Not_Override
, Flag
)));
784 Cc
(N_Procedure_Instantiation
, N_Subprogram_Instantiation
,
785 (Sy
(Defining_Unit_Name
, Node_Id
),
786 Sy
(Name
, Node_Id
, Default_Empty
),
787 Sy
(Generic_Associations
, List_Id
, Default_No_List
),
788 Sy
(Must_Override
, Flag
),
789 Sy
(Must_Not_Override
, Flag
)));
791 Cc
(N_Package_Instantiation
, N_Generic_Instantiation
,
792 (Sy
(Defining_Unit_Name
, Node_Id
),
793 Sy
(Name
, Node_Id
, Default_Empty
),
794 Sy
(Generic_Associations
, List_Id
, Default_No_List
)));
796 Ab
(N_Proper_Body
, N_Later_Decl_Item
,
797 (Sm
(Corresponding_Spec
, Node_Id
),
798 Sm
(Was_Originally_Stub
, Flag
)));
800 Ab
(N_Unit_Body
, N_Proper_Body
);
802 Cc
(N_Package_Body
, N_Unit_Body
,
803 (Sy
(Defining_Unit_Name
, Node_Id
),
804 Sy
(Declarations
, List_Id
, Default_No_List
),
805 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
)));
807 Cc
(N_Subprogram_Body
, N_Unit_Body
,
808 (Sy
(Specification
, Node_Id
),
809 Sy
(Declarations
, List_Id
, Default_No_List
),
810 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
811 Sy
(Bad_Is_Detected
, Flag
),
812 Sm
(Activation_Chain_Entity
, Node_Id
),
813 Sm
(Acts_As_Spec
, Flag
),
814 Sm
(Corresponding_Entry_Body
, Node_Id
),
815 Sm
(Do_Storage_Check
, Flag
),
816 Sm
(Has_Relative_Deadline_Pragma
, Flag
),
817 Sm
(Is_Entry_Barrier_Function
, Flag
),
818 Sm
(Is_Protected_Subprogram_Body
, Flag
),
819 Sm
(Is_Task_Body_Procedure
, Flag
),
820 Sm
(Is_Task_Master
, Flag
),
821 Sm
(Was_Attribute_Reference
, Flag
),
822 Sm
(Was_Expression_Function
, Flag
)));
824 Cc
(N_Protected_Body
, N_Proper_Body
,
825 (Sy
(Defining_Identifier
, Node_Id
),
826 Sy
(Declarations
, List_Id
, Default_No_List
),
827 Sy
(End_Label
, Node_Id
, Default_Empty
)));
829 Cc
(N_Task_Body
, N_Proper_Body
,
830 (Sy
(Defining_Identifier
, Node_Id
),
831 Sy
(Declarations
, List_Id
, Default_No_List
),
832 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
833 Sm
(Activation_Chain_Entity
, Node_Id
),
834 Sm
(Is_Task_Master
, Flag
)));
836 Cc
(N_Implicit_Label_Declaration
, N_Later_Decl_Item
,
837 (Sy
(Defining_Identifier
, Node_Id
),
838 Sm
(Label_Construct
, Node_Id
)));
840 Cc
(N_Package_Declaration
, N_Later_Decl_Item
,
841 (Sy
(Specification
, Node_Id
),
842 Sm
(Activation_Chain_Entity
, Node_Id
),
843 Sm
(Corresponding_Body
, Node_Id
),
844 Sm
(Parent_Spec
, Node_Id
)));
846 Cc
(N_Single_Task_Declaration
, N_Later_Decl_Item
,
847 (Sy
(Defining_Identifier
, Node_Id
),
848 Sy
(Interface_List
, List_Id
, Default_No_List
),
849 Sy
(Task_Definition
, Node_Id
, Default_Empty
)));
851 Cc
(N_Subprogram_Declaration
, N_Later_Decl_Item
,
852 (Sy
(Specification
, Node_Id
),
853 Sm
(Body_To_Inline
, Node_Id
),
854 Sm
(Corresponding_Body
, Node_Id
),
855 Sm
(Is_Entry_Barrier_Function
, Flag
),
856 Sm
(Is_Task_Body_Procedure
, Flag
),
857 Sm
(Parent_Spec
, Node_Id
)));
859 Cc
(N_Use_Package_Clause
, N_Later_Decl_Item
,
860 (Sy
(Name
, Node_Id
, Default_Empty
),
861 Sy
(Is_Effective_Use_Clause
, Flag
),
862 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Associated_Node
863 Sm
(Hidden_By_Use_Clause
, Elist_Id
),
865 Sm
(Next_Use_Clause
, Node_Id
),
867 Sm
(Prev_Use_Clause
, Node_Id
)));
869 Ab
(N_Generic_Declaration
, N_Later_Decl_Item
,
870 (Sm
(Corresponding_Body
, Node_Id
),
871 Sm
(Parent_Spec
, Node_Id
)));
873 Cc
(N_Generic_Package_Declaration
, N_Generic_Declaration
,
874 (Sy
(Specification
, Node_Id
),
875 Sy
(Generic_Formal_Declarations
, List_Id
),
876 Sm
(Activation_Chain_Entity
, Node_Id
)));
878 Cc
(N_Generic_Subprogram_Declaration
, N_Generic_Declaration
,
879 (Sy
(Specification
, Node_Id
),
880 Sy
(Generic_Formal_Declarations
, List_Id
)));
882 Ab
(N_Array_Type_Definition
, Node_Kind
);
884 Cc
(N_Constrained_Array_Definition
, N_Array_Type_Definition
,
885 (Sy
(Discrete_Subtype_Definitions
, List_Id
),
886 Sy
(Component_Definition
, Node_Id
)));
888 Cc
(N_Unconstrained_Array_Definition
, N_Array_Type_Definition
,
889 (Sy
(Subtype_Marks
, List_Id
),
890 Sy
(Component_Definition
, Node_Id
)));
892 Ab
(N_Renaming_Declaration
, Node_Kind
);
894 Cc
(N_Exception_Renaming_Declaration
, N_Renaming_Declaration
,
895 (Sy
(Defining_Identifier
, Node_Id
),
896 Sy
(Name
, Node_Id
, Default_Empty
)));
898 Cc
(N_Object_Renaming_Declaration
, N_Renaming_Declaration
,
899 (Sy
(Defining_Identifier
, Node_Id
),
900 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
901 Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
902 Sy
(Access_Definition
, Node_Id
, Default_Empty
),
903 Sy
(Name
, Node_Id
, Default_Empty
),
904 Sm
(Corresponding_Generic_Association
, Node_Id
)));
906 Cc
(N_Package_Renaming_Declaration
, N_Renaming_Declaration
,
907 (Sy
(Defining_Unit_Name
, Node_Id
),
908 Sy
(Name
, Node_Id
, Default_Empty
),
909 Sm
(Parent_Spec
, Node_Id
)));
911 Cc
(N_Subprogram_Renaming_Declaration
, N_Renaming_Declaration
,
912 (Sy
(Specification
, Node_Id
),
913 Sy
(Name
, Node_Id
, Default_Empty
),
914 Sm
(Corresponding_Formal_Spec
, Node_Id
),
915 Sm
(Corresponding_Spec
, Node_Id
),
916 Sm
(From_Default
, Flag
),
917 Sm
(Parent_Spec
, Node_Id
)));
919 Ab
(N_Generic_Renaming_Declaration
, N_Renaming_Declaration
,
920 (Sm
(Parent_Spec
, Node_Id
)));
922 Cc
(N_Generic_Function_Renaming_Declaration
, N_Generic_Renaming_Declaration
,
923 (Sy
(Defining_Unit_Name
, Node_Id
),
924 Sy
(Name
, Node_Id
, Default_Empty
)));
926 Cc
(N_Generic_Package_Renaming_Declaration
, N_Generic_Renaming_Declaration
,
927 (Sy
(Defining_Unit_Name
, Node_Id
),
928 Sy
(Name
, Node_Id
, Default_Empty
)));
930 Cc
(N_Generic_Procedure_Renaming_Declaration
, N_Generic_Renaming_Declaration
,
931 (Sy
(Defining_Unit_Name
, Node_Id
),
932 Sy
(Name
, Node_Id
, Default_Empty
)));
934 Ab
(N_Statement_Other_Than_Procedure_Call
, Node_Kind
);
935 -- Note that this includes all statement types except for the cases of the
936 -- N_Procedure_Call_Statement which is considered to be a subexpression
937 -- (since overloading is possible, so it needs to go through the normal
938 -- overloading resolution for expressions).
940 Cc
(N_Abort_Statement
, N_Statement_Other_Than_Procedure_Call
,
941 (Sy
(Names
, List_Id
)));
943 Cc
(N_Accept_Statement
, N_Statement_Other_Than_Procedure_Call
,
944 (Sy
(Entry_Direct_Name
, Node_Id
),
945 Sy
(Entry_Index
, Node_Id
, Default_Empty
),
946 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
947 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
948 Sy
(Declarations
, List_Id
, Default_No_List
)));
950 Cc
(N_Assignment_Statement
, N_Statement_Other_Than_Procedure_Call
,
951 (Sy
(Name
, Node_Id
, Default_Empty
),
952 Sy
(Expression
, Node_Id
, Default_Empty
),
953 Sm
(Backwards_OK
, Flag
),
954 Sm
(Componentwise_Assignment
, Flag
),
955 Sm
(Do_Discriminant_Check
, Flag
),
956 Sm
(Do_Length_Check
, Flag
),
957 Sm
(Forwards_OK
, Flag
),
958 Sm
(Has_Target_Names
, Flag
),
959 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
960 Sm
(Is_Elaboration_Code
, Flag
),
961 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
962 Sm
(No_Ctrl_Actions
, Flag
),
963 Sm
(Suppress_Assignment_Checks
, Flag
)));
965 Cc
(N_Asynchronous_Select
, N_Statement_Other_Than_Procedure_Call
,
966 (Sy
(Triggering_Alternative
, Node_Id
),
967 Sy
(Abortable_Part
, Node_Id
)));
969 Cc
(N_Block_Statement
, N_Statement_Other_Than_Procedure_Call
,
970 (Sy
(Identifier
, Node_Id
, Default_Empty
),
971 Sy
(Declarations
, List_Id
, Default_No_List
),
972 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
973 Sy
(Has_Created_Identifier
, Flag
),
974 Sy
(Is_Asynchronous_Call_Block
, Flag
),
975 Sy
(Is_Task_Allocation_Block
, Flag
),
976 Sm
(Activation_Chain_Entity
, Node_Id
),
977 Sm
(Cleanup_Actions
, List_Id
),
978 Sm
(Exception_Junk
, Flag
),
979 Sm
(Is_Abort_Block
, Flag
),
980 Sm
(Is_Finalization_Wrapper
, Flag
),
981 Sm
(Is_Initialization_Block
, Flag
),
982 Sm
(Is_Task_Master
, Flag
)));
984 Cc
(N_Case_Statement
, N_Statement_Other_Than_Procedure_Call
,
985 (Sy
(Expression
, Node_Id
, Default_Empty
),
986 Sy
(Alternatives
, List_Id
, Default_No_List
),
987 Sy
(End_Span
, Unat
, Default_Uint_0
),
988 Sm
(From_Conditional_Expression
, Flag
)));
990 Cc
(N_Code_Statement
, N_Statement_Other_Than_Procedure_Call
,
991 (Sy
(Expression
, Node_Id
, Default_Empty
)));
993 Cc
(N_Compound_Statement
, N_Statement_Other_Than_Procedure_Call
,
994 (Sy
(Actions
, List_Id
, Default_No_List
)));
996 Cc
(N_Conditional_Entry_Call
, N_Statement_Other_Than_Procedure_Call
,
997 (Sy
(Entry_Call_Alternative
, Node_Id
),
998 Sy
(Else_Statements
, List_Id
, Default_No_List
)));
1000 Ab
(N_Delay_Statement
, N_Statement_Other_Than_Procedure_Call
);
1002 Cc
(N_Delay_Relative_Statement
, N_Delay_Statement
,
1003 (Sy
(Expression
, Node_Id
, Default_Empty
)));
1005 Cc
(N_Delay_Until_Statement
, N_Delay_Statement
,
1006 (Sy
(Expression
, Node_Id
, Default_Empty
)));
1008 Cc
(N_Entry_Call_Statement
, N_Statement_Other_Than_Procedure_Call
,
1009 (Sy
(Name
, Node_Id
, Default_Empty
),
1010 Sy
(Parameter_Associations
, List_Id
, Default_No_List
),
1011 Sm
(First_Named_Actual
, Node_Id
),
1012 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1013 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1014 Sm
(Is_SPARK_Mode_On_Node
, Flag
)));
1016 Cc
(N_Free_Statement
, N_Statement_Other_Than_Procedure_Call
,
1017 (Sy
(Expression
, Node_Id
, Default_Empty
),
1018 Sm
(Actual_Designated_Subtype
, Node_Id
),
1019 Sm
(Procedure_To_Call
, Node_Id
),
1020 Sm
(Storage_Pool
, Node_Id
)));
1022 Cc
(N_Goto_Statement
, N_Statement_Other_Than_Procedure_Call
,
1023 (Sy
(Name
, Node_Id
, Default_Empty
),
1024 Sm
(Exception_Junk
, Flag
)));
1026 Cc
(N_Goto_When_Statement
, N_Statement_Other_Than_Procedure_Call
,
1027 (Sy
(Name
, Node_Id
, Default_Empty
),
1028 Sy
(Condition
, Node_Id
, Default_Empty
)));
1030 Cc
(N_Loop_Statement
, N_Statement_Other_Than_Procedure_Call
,
1031 (Sy
(Identifier
, Node_Id
, Default_Empty
),
1032 Sy
(Iteration_Scheme
, Node_Id
, Default_Empty
),
1033 Sy
(Statements
, List_Id
, Default_Empty_List
),
1034 Sy
(End_Label
, Node_Id
, Default_Empty
),
1035 Sy
(Has_Created_Identifier
, Flag
),
1036 Sy
(Is_Null_Loop
, Flag
),
1037 Sy
(Suppress_Loop_Warnings
, Flag
)));
1039 Cc
(N_Null_Statement
, N_Statement_Other_Than_Procedure_Call
,
1040 (Sm
(Next_Rep_Item
, Node_Id
)));
1042 Cc
(N_Raise_Statement
, N_Statement_Other_Than_Procedure_Call
,
1043 (Sy
(Name
, Node_Id
, Default_Empty
),
1044 Sy
(Expression
, Node_Id
, Default_Empty
),
1045 Sm
(From_At_End
, Flag
)));
1047 Cc
(N_Raise_When_Statement
, N_Statement_Other_Than_Procedure_Call
,
1048 (Sy
(Name
, Node_Id
, Default_Empty
),
1049 Sy
(Expression
, Node_Id
, Default_Empty
),
1050 Sy
(Condition
, Node_Id
, Default_Empty
)));
1052 Cc
(N_Requeue_Statement
, N_Statement_Other_Than_Procedure_Call
,
1053 (Sy
(Name
, Node_Id
, Default_Empty
),
1054 Sy
(Abort_Present
, Flag
),
1055 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1056 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1057 Sm
(Is_SPARK_Mode_On_Node
, Flag
)));
1059 Cc
(N_Simple_Return_Statement
, N_Statement_Other_Than_Procedure_Call
,
1060 (Sy
(Expression
, Node_Id
, Default_Empty
),
1062 Sm
(Comes_From_Extended_Return_Statement
, Flag
),
1063 Sm
(Procedure_To_Call
, Node_Id
),
1064 Sm
(Return_Statement_Entity
, Node_Id
),
1065 Sm
(Storage_Pool
, Node_Id
)));
1067 Cc
(N_Extended_Return_Statement
, N_Statement_Other_Than_Procedure_Call
,
1068 (Sy
(Return_Object_Declarations
, List_Id
),
1069 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
1071 Sm
(Procedure_To_Call
, Node_Id
),
1072 Sm
(Return_Statement_Entity
, Node_Id
),
1073 Sm
(Storage_Pool
, Node_Id
)));
1075 Cc
(N_Return_When_Statement
, N_Statement_Other_Than_Procedure_Call
,
1076 (Sy
(Expression
, Node_Id
, Default_Empty
),
1077 Sy
(Condition
, Node_Id
, Default_Empty
)));
1079 Cc
(N_Selective_Accept
, N_Statement_Other_Than_Procedure_Call
,
1080 (Sy
(Select_Alternatives
, List_Id
),
1081 Sy
(Else_Statements
, List_Id
, Default_No_List
)));
1083 Cc
(N_Timed_Entry_Call
, N_Statement_Other_Than_Procedure_Call
,
1084 (Sy
(Entry_Call_Alternative
, Node_Id
),
1085 Sy
(Delay_Alternative
, Node_Id
)));
1087 Cc
(N_Exit_Statement
, N_Statement_Other_Than_Procedure_Call
,
1088 (Sy
(Name
, Node_Id
, Default_Empty
),
1089 Sy
(Condition
, Node_Id
, Default_Empty
),
1090 Sm
(Next_Exit_Statement
, Node_Id
)));
1092 Cc
(N_If_Statement
, N_Statement_Other_Than_Procedure_Call
,
1093 (Sy
(Condition
, Node_Id
, Default_Empty
),
1094 Sy
(Then_Statements
, List_Id
),
1095 Sy
(Elsif_Parts
, List_Id
, Default_No_List
),
1096 Sy
(Else_Statements
, List_Id
, Default_No_List
),
1097 Sy
(End_Span
, Unat
, Default_Uint_0
),
1098 Sm
(From_Conditional_Expression
, Flag
)));
1100 Cc
(N_Accept_Alternative
, Node_Kind
,
1101 (Sy
(Accept_Statement
, Node_Id
),
1102 Sy
(Condition
, Node_Id
, Default_Empty
),
1103 Sy
(Statements
, List_Id
, Default_Empty_List
),
1104 Sy
(Pragmas_Before
, List_Id
, Default_No_List
),
1105 Sm
(Accept_Handler_Records
, List_Id
)));
1107 Cc
(N_Delay_Alternative
, Node_Kind
,
1108 (Sy
(Delay_Statement
, Node_Id
),
1109 Sy
(Condition
, Node_Id
, Default_Empty
),
1110 Sy
(Statements
, List_Id
, Default_Empty_List
),
1111 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
1113 Cc
(N_Elsif_Part
, Node_Kind
,
1114 (Sy
(Condition
, Node_Id
, Default_Empty
),
1115 Sy
(Then_Statements
, List_Id
),
1116 Sm
(Condition_Actions
, List_Id
)));
1118 Cc
(N_Entry_Body_Formal_Part
, Node_Kind
,
1119 (Sy
(Entry_Index_Specification
, Node_Id
, Default_Empty
),
1120 Sy
(Parameter_Specifications
, List_Id
, Default_No_List
),
1121 Sy
(Condition
, Node_Id
, Default_Empty
)));
1123 Cc
(N_Iteration_Scheme
, Node_Kind
,
1124 (Sy
(Condition
, Node_Id
, Default_Empty
),
1125 Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
1126 Sy
(Loop_Parameter_Specification
, Node_Id
, Default_Empty
),
1127 Sm
(Condition_Actions
, List_Id
)));
1129 Cc
(N_Terminate_Alternative
, Node_Kind
,
1130 (Sy
(Condition
, Node_Id
, Default_Empty
),
1131 Sy
(Pragmas_Before
, List_Id
, Default_No_List
),
1132 Sy
(Pragmas_After
, List_Id
, Default_No_List
)));
1134 Ab
(N_Formal_Subprogram_Declaration
, Node_Kind
);
1136 Cc
(N_Formal_Abstract_Subprogram_Declaration
, N_Formal_Subprogram_Declaration
,
1137 (Sy
(Specification
, Node_Id
),
1138 Sy
(Default_Name
, Node_Id
, Default_Empty
),
1139 Sy
(Box_Present
, Flag
)));
1141 Cc
(N_Formal_Concrete_Subprogram_Declaration
, N_Formal_Subprogram_Declaration
,
1142 (Sy
(Specification
, Node_Id
),
1143 Sy
(Default_Name
, Node_Id
, Default_Empty
),
1144 Sy
(Box_Present
, Flag
)));
1146 Ab
(N_Push_Pop_xxx_Label
, Node_Kind
);
1148 Ab
(N_Push_xxx_Label
, N_Push_Pop_xxx_Label
,
1149 (Sm
(Exception_Label
, Node_Id
)));
1151 Cc
(N_Push_Constraint_Error_Label
, N_Push_xxx_Label
);
1153 Cc
(N_Push_Program_Error_Label
, N_Push_xxx_Label
);
1155 Cc
(N_Push_Storage_Error_Label
, N_Push_xxx_Label
);
1157 Ab
(N_Pop_xxx_Label
, N_Push_Pop_xxx_Label
);
1159 Cc
(N_Pop_Constraint_Error_Label
, N_Pop_xxx_Label
);
1161 Cc
(N_Pop_Program_Error_Label
, N_Pop_xxx_Label
);
1163 Cc
(N_Pop_Storage_Error_Label
, N_Pop_xxx_Label
);
1165 Ab
(N_SCIL_Node
, Node_Kind
,
1166 (Sm
(SCIL_Entity
, Node_Id
)));
1168 Cc
(N_SCIL_Dispatch_Table_Tag_Init
, N_SCIL_Node
);
1170 Cc
(N_SCIL_Dispatching_Call
, N_SCIL_Node
,
1171 (Sm
(SCIL_Controlling_Tag
, Node_Id
),
1172 Sm
(SCIL_Target_Prim
, Node_Id
)));
1174 Cc
(N_SCIL_Membership_Test
, N_SCIL_Node
,
1175 (Sm
(SCIL_Tag_Value
, Node_Id
)));
1177 Cc
(N_Abortable_Part
, Node_Kind
,
1178 (Sy
(Statements
, List_Id
, Default_Empty_List
)));
1180 Cc
(N_Abstract_Subprogram_Declaration
, Node_Kind
,
1181 (Sy
(Specification
, Node_Id
)));
1183 Cc
(N_Access_Definition
, Node_Kind
,
1184 (Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1185 Sy
(All_Present
, Flag
),
1186 Sy
(Constant_Present
, Flag
),
1187 Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
1188 Sy
(Access_To_Subprogram_Definition
, Node_Id
, Default_Empty
)));
1190 Cc
(N_Access_To_Object_Definition
, Node_Kind
,
1191 (Sy
(All_Present
, Flag
),
1192 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1193 Sy
(Null_Excluding_Subtype
, Flag
),
1194 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
1195 Sy
(Constant_Present
, Flag
)));
1197 Cc
(N_Aspect_Specification
, Node_Kind
,
1198 (Sy
(Identifier
, Node_Id
, Default_Empty
),
1199 Sy
(Expression
, Node_Id
, Default_Empty
),
1200 Sy
(Class_Present
, Flag
),
1201 Sy
(Split_PPC
, Flag
),
1202 Sm
(Aspect_On_Partial_View
, Flag
),
1203 Sm
(Aspect_Rep_Item
, Node_Id
),
1204 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Entity
1205 Sm
(Is_Boolean_Aspect
, Flag
),
1206 Sm
(Is_Checked
, Flag
),
1207 Sm
(Is_Delayed_Aspect
, Flag
),
1208 Sm
(Is_Disabled
, Flag
),
1209 Sm
(Is_Ignored
, Flag
),
1210 Sm
(Next_Rep_Item
, Node_Id
)));
1212 Cc
(N_Call_Marker
, Node_Kind
,
1213 (Sm
(Is_Declaration_Level_Node
, Flag
),
1214 Sm
(Is_Dispatching_Call
, Flag
),
1215 Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1216 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1217 Sm
(Is_Known_Guaranteed_ABE
, Flag
),
1218 Sm
(Is_Preelaborable_Call
, Flag
),
1219 Sm
(Is_Source_Call
, Flag
),
1220 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
1221 Sm
(Target
, Node_Id
)));
1223 Cc
(N_Case_Expression_Alternative
, Node_Kind
,
1224 (Sm
(Actions
, List_Id
),
1225 Sy
(Discrete_Choices
, List_Id
),
1226 Sy
(Expression
, Node_Id
, Default_Empty
),
1227 Sm
(Has_SP_Choice
, Flag
)));
1229 Cc
(N_Case_Statement_Alternative
, Node_Kind
,
1230 (Sy
(Discrete_Choices
, List_Id
),
1231 Sy
(Statements
, List_Id
, Default_Empty_List
),
1232 Sm
(Has_SP_Choice
, Flag
),
1233 Sm
(Multidefined_Bindings
, Flag
)));
1235 Cc
(N_Compilation_Unit
, Node_Kind
,
1236 (Sy
(Context_Items
, List_Id
),
1237 Sy
(Private_Present
, Flag
),
1239 Sy
(Aux_Decls_Node
, Node_Id
),
1240 Sm
(Acts_As_Spec
, Flag
),
1241 Sm
(Body_Required
, Flag
),
1242 Sm
(Context_Pending
, Flag
),
1243 Sm
(First_Inlined_Subprogram
, Node_Id
),
1244 Sm
(Has_No_Elaboration_Code
, Flag
),
1245 Sm
(Has_Pragma_Suppress_All
, Flag
),
1246 Sm
(Library_Unit
, Node_Id
),
1247 Sm
(Save_Invocation_Graph_Of_Body
, Flag
)));
1249 Cc
(N_Compilation_Unit_Aux
, Node_Kind
,
1250 (Sy
(Declarations
, List_Id
, Default_No_List
),
1251 Sy
(Actions
, List_Id
, Default_No_List
),
1252 Sy
(Pragmas_After
, List_Id
, Default_No_List
),
1253 Sy
(Config_Pragmas
, List_Id
, Default_Empty_List
),
1254 Sm
(Default_Storage_Pool
, Node_Id
)));
1256 Cc
(N_Component_Association
, Node_Kind
,
1257 (Sy
(Choices
, List_Id
),
1258 Sy
(Expression
, Node_Id
, Default_Empty
),
1259 Sy
(Box_Present
, Flag
),
1260 Sy
(Inherited_Discriminant
, Flag
),
1261 Sy
(Binding_Chars
, Name_Id
, Default_No_Name
),
1262 Sm
(Loop_Actions
, List_Id
),
1263 Sm
(Was_Default_Init_Box_Association
, Flag
)));
1265 Cc
(N_Component_Definition
, Node_Kind
,
1266 (Sy
(Aliased_Present
, Flag
),
1267 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1268 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
1269 Sy
(Access_Definition
, Node_Id
, Default_Empty
)));
1271 Cc
(N_Component_List
, Node_Kind
,
1272 (Sy
(Component_Items
, List_Id
),
1273 Sy
(Variant_Part
, Node_Id
, Default_Empty
),
1274 Sy
(Null_Present
, Flag
)));
1276 Cc
(N_Contract
, Node_Kind
,
1277 (Sm
(Classifications
, Node_Id
),
1278 Sm
(Contract_Test_Cases
, Node_Id
),
1279 Sm
(Is_Expanded_Contract
, Flag
),
1280 Sm
(Pre_Post_Conditions
, Node_Id
)));
1282 Cc
(N_Derived_Type_Definition
, Node_Kind
,
1283 (Sy
(Abstract_Present
, Flag
),
1284 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1285 Sy
(Subtype_Indication
, Node_Id
, Default_Empty
),
1286 Sy
(Record_Extension_Part
, Node_Id
, Default_Empty
),
1287 Sy
(Limited_Present
, Flag
),
1288 Sy
(Task_Present
, Flag
),
1289 Sy
(Protected_Present
, Flag
),
1290 Sy
(Synchronized_Present
, Flag
),
1291 Sy
(Interface_List
, List_Id
, Default_No_List
),
1292 Sy
(Interface_Present
, Flag
)));
1294 Cc
(N_Decimal_Fixed_Point_Definition
, Node_Kind
,
1295 (Sy
(Delta_Expression
, Node_Id
),
1296 Sy
(Digits_Expression
, Node_Id
),
1297 Sy
(Real_Range_Specification
, Node_Id
, Default_Empty
)));
1299 Cc
(N_Defining_Program_Unit_Name
, Node_Kind
,
1300 (Sy
(Name
, Node_Id
, Default_Empty
),
1301 Sy
(Defining_Identifier
, Node_Id
)));
1303 Cc
(N_Delta_Constraint
, Node_Kind
,
1304 (Sy
(Delta_Expression
, Node_Id
),
1305 Sy
(Range_Constraint
, Node_Id
, Default_Empty
)));
1307 Cc
(N_Designator
, Node_Kind
,
1308 (Sy
(Name
, Node_Id
, Default_Empty
),
1309 Sy
(Identifier
, Node_Id
, Default_Empty
)));
1311 Cc
(N_Digits_Constraint
, Node_Kind
,
1312 (Sy
(Digits_Expression
, Node_Id
),
1313 Sy
(Range_Constraint
, Node_Id
, Default_Empty
)));
1315 Cc
(N_Discriminant_Association
, Node_Kind
,
1316 (Sy
(Selector_Names
, List_Id
),
1317 Sy
(Expression
, Node_Id
, Default_Empty
)));
1319 Cc
(N_Discriminant_Specification
, Node_Kind
,
1320 (Sy
(Defining_Identifier
, Node_Id
),
1321 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1322 Sy
(Discriminant_Type
, Node_Id
),
1323 Sy
(Expression
, Node_Id
, Default_Empty
),
1324 Sm
(More_Ids
, Flag
),
1325 Sm
(Prev_Ids
, Flag
)));
1327 Cc
(N_Enumeration_Type_Definition
, Node_Kind
,
1328 (Sy
(Literals
, List_Id
),
1329 Sy
(End_Label
, Node_Id
, Default_Empty
)));
1331 Cc
(N_Entry_Body
, Node_Kind
,
1332 (Sy
(Defining_Identifier
, Node_Id
),
1333 Sy
(Entry_Body_Formal_Part
, Node_Id
),
1334 Sy
(Declarations
, List_Id
, Default_No_List
),
1335 Sy
(Handled_Statement_Sequence
, Node_Id
, Default_Empty
),
1336 Sm
(Activation_Chain_Entity
, Node_Id
)));
1338 Cc
(N_Entry_Call_Alternative
, Node_Kind
,
1339 (Sy
(Entry_Call_Statement
, Node_Id
),
1340 Sy
(Statements
, List_Id
, Default_Empty_List
),
1341 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
1343 Cc
(N_Entry_Index_Specification
, Node_Kind
,
1344 (Sy
(Defining_Identifier
, Node_Id
),
1345 Sy
(Discrete_Subtype_Definition
, Node_Id
, Default_Empty
)));
1347 Cc
(N_Exception_Declaration
, N_Declaration
,
1348 (Sy
(Defining_Identifier
, Node_Id
),
1349 Sm
(Expression
, Node_Id
),
1350 Sm
(More_Ids
, Flag
),
1351 Sm
(Prev_Ids
, Flag
),
1352 Sm
(Renaming_Exception
, Node_Id
)));
1354 Cc
(N_Exception_Handler
, Node_Kind
,
1355 (Sy
(Choice_Parameter
, Node_Id
, Default_Empty
),
1356 Sy
(Exception_Choices
, List_Id
),
1357 Sy
(Statements
, List_Id
, Default_Empty_List
),
1358 Sm
(Exception_Label
, Node_Id
),
1359 Sm
(Has_Local_Raise
, Flag
),
1360 Sm
(Local_Raise_Not_OK
, Flag
),
1361 Sm
(Local_Raise_Statements
, Elist_Id
)));
1363 Cc
(N_Floating_Point_Definition
, Node_Kind
,
1364 (Sy
(Digits_Expression
, Node_Id
),
1365 Sy
(Real_Range_Specification
, Node_Id
, Default_Empty
)));
1367 Cc
(N_Formal_Decimal_Fixed_Point_Definition
, Node_Kind
);
1369 Cc
(N_Formal_Derived_Type_Definition
, Node_Kind
,
1370 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
1371 Sy
(Private_Present
, Flag
),
1372 Sy
(Abstract_Present
, Flag
),
1373 Sy
(Limited_Present
, Flag
),
1374 Sy
(Synchronized_Present
, Flag
),
1375 Sy
(Interface_List
, List_Id
, Default_No_List
)));
1377 Cc
(N_Formal_Discrete_Type_Definition
, Node_Kind
);
1379 Cc
(N_Formal_Floating_Point_Definition
, Node_Kind
);
1381 Cc
(N_Formal_Modular_Type_Definition
, Node_Kind
);
1383 Cc
(N_Formal_Ordinary_Fixed_Point_Definition
, Node_Kind
);
1385 Cc
(N_Formal_Package_Declaration
, Node_Kind
,
1386 (Sy
(Defining_Identifier
, Node_Id
),
1387 Sy
(Name
, Node_Id
, Default_Empty
),
1388 Sy
(Generic_Associations
, List_Id
, Default_No_List
),
1389 Sy
(Box_Present
, Flag
),
1390 Sm
(Instance_Spec
, Node_Id
),
1391 Sm
(Is_Known_Guaranteed_ABE
, Flag
)));
1393 Cc
(N_Formal_Private_Type_Definition
, Node_Kind
,
1394 (Sy
(Abstract_Present
, Flag
),
1395 Sy
(Tagged_Present
, Flag
),
1396 Sy
(Limited_Present
, Flag
),
1397 Sm
(Uninitialized_Variable
, Node_Id
)));
1399 Cc
(N_Formal_Incomplete_Type_Definition
, Node_Kind
,
1400 (Sy
(Tagged_Present
, Flag
)));
1402 Cc
(N_Formal_Signed_Integer_Type_Definition
, Node_Kind
);
1404 Cc
(N_Freeze_Entity
, Node_Kind
,
1405 (Sy
(Actions
, List_Id
, Default_No_List
),
1406 Sm
(Access_Types_To_Process
, Elist_Id
),
1407 Sm
(Entity_Or_Associated_Node
, Node_Id
), -- just Entity
1408 Sm
(First_Subtype_Link
, Node_Id
),
1409 Sm
(TSS_Elist
, Elist_Id
)));
1411 Cc
(N_Freeze_Generic_Entity
, Node_Kind
,
1412 Sm
(Entity_Or_Associated_Node
, Node_Id
)); -- just Entity
1414 Cc
(N_Generic_Association
, Node_Kind
,
1415 (Sy
(Selector_Name
, Node_Id
, Default_Empty
),
1416 Sy
(Explicit_Generic_Actual_Parameter
, Node_Id
),
1417 Sy
(Box_Present
, Flag
)));
1419 Cc
(N_Handled_Sequence_Of_Statements
, Node_Kind
,
1420 (Sy
(Statements
, List_Id
, Default_Empty_List
),
1421 Sy
(End_Label
, Node_Id
, Default_Empty
),
1422 Sy
(Exception_Handlers
, List_Id
, Default_No_List
),
1423 Sy
(At_End_Proc
, Node_Id
, Default_Empty
),
1424 Sm
(First_Real_Statement
, Node_Id
)));
1426 Cc
(N_Index_Or_Discriminant_Constraint
, Node_Kind
,
1427 (Sy
(Constraints
, List_Id
)));
1429 Cc
(N_Iterated_Component_Association
, Node_Kind
,
1430 (Sy
(Defining_Identifier
, Node_Id
),
1431 Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
1432 Sy
(Expression
, Node_Id
, Default_Empty
),
1433 Sy
(Discrete_Choices
, List_Id
),
1434 Sy
(Box_Present
, Flag
),
1435 Sm
(Loop_Actions
, List_Id
)));
1437 Cc
(N_Iterated_Element_Association
, Node_Kind
,
1438 (Sy
(Key_Expression
, Node_Id
),
1439 Sy
(Iterator_Specification
, Node_Id
, Default_Empty
),
1440 Sy
(Expression
, Node_Id
, Default_Empty
),
1441 Sy
(Loop_Parameter_Specification
, Node_Id
, Default_Empty
),
1442 Sy
(Box_Present
, Flag
),
1443 Sm
(Loop_Actions
, List_Id
)));
1445 Cc
(N_Itype_Reference
, Node_Kind
,
1446 (Sm
(Itype
, Node_Id
)));
1448 Cc
(N_Label
, Node_Kind
,
1449 (Sy
(Identifier
, Node_Id
, Default_Empty
),
1450 Sm
(Exception_Junk
, Flag
)));
1452 Cc
(N_Modular_Type_Definition
, Node_Kind
,
1453 (Sy
(Expression
, Node_Id
, Default_Empty
)));
1455 Cc
(N_Number_Declaration
, Node_Kind
,
1456 (Sy
(Defining_Identifier
, Node_Id
),
1457 Sy
(Expression
, Node_Id
, Default_Empty
),
1458 Sm
(More_Ids
, Flag
),
1459 Sm
(Prev_Ids
, Flag
)));
1461 Cc
(N_Ordinary_Fixed_Point_Definition
, Node_Kind
,
1462 (Sy
(Delta_Expression
, Node_Id
),
1463 Sy
(Real_Range_Specification
, Node_Id
, Default_Empty
)));
1465 Cc
(N_Others_Choice
, Node_Kind
,
1466 (Sm
(All_Others
, Flag
),
1467 Sm
(Others_Discrete_Choices
, List_Id
)));
1469 Cc
(N_Package_Specification
, Node_Kind
,
1470 (Sy
(Defining_Unit_Name
, Node_Id
),
1471 Sy
(Visible_Declarations
, List_Id
),
1472 Sy
(Private_Declarations
, List_Id
, Default_No_List
),
1473 Sy
(End_Label
, Node_Id
, Default_Empty
),
1474 Sm
(Generic_Parent
, Node_Id
),
1475 Sm
(Limited_View_Installed
, Flag
)));
1477 Cc
(N_Parameter_Association
, Node_Kind
,
1478 (Sy
(Selector_Name
, Node_Id
, Default_Empty
),
1479 Sy
(Explicit_Actual_Parameter
, Node_Id
),
1480 Sm
(Is_Accessibility_Actual
, Flag
),
1481 Sm
(Next_Named_Actual
, Node_Id
)));
1483 Cc
(N_Parameter_Specification
, Node_Kind
,
1484 (Sy
(Defining_Identifier
, Node_Id
),
1485 Sy
(Aliased_Present
, Flag
),
1486 Sy
(In_Present
, Flag
),
1487 Sy
(Out_Present
, Flag
),
1488 Sy
(Null_Exclusion_Present
, Flag
, Default_False
),
1489 Sy
(Parameter_Type
, Node_Id
),
1490 Sy
(Expression
, Node_Id
, Default_Empty
),
1491 Sm
(Default_Expression
, Node_Id
),
1492 Sm
(More_Ids
, Flag
),
1493 Sm
(Prev_Ids
, Flag
)));
1495 Cc
(N_Pragma
, Node_Kind
,
1496 (Sy
(Pragma_Argument_Associations
, List_Id
, Default_No_List
),
1497 Sy
(Pragma_Identifier
, Node_Id
),
1498 Sy
(Class_Present
, Flag
),
1499 Sy
(Split_PPC
, Flag
),
1500 Sm
(Corresponding_Aspect
, Node_Id
),
1501 Sm
(From_Aspect_Specification
, Flag
),
1502 Sm
(Import_Interface_Present
, Flag
),
1503 Sm
(Is_Analyzed_Pragma
, Flag
),
1504 Sm
(Is_Checked
, Flag
),
1505 Sm
(Is_Checked_Ghost_Pragma
, Flag
),
1506 Sm
(Is_Delayed_Aspect
, Flag
),
1507 Sm
(Is_Disabled
, Flag
),
1508 Sm
(Is_Generic_Contract_Pragma
, Flag
),
1509 Sm
(Is_Ignored
, Flag
),
1510 Sm
(Is_Ignored_Ghost_Pragma
, Flag
),
1511 Sm
(Is_Inherited_Pragma
, Flag
),
1512 Sm
(Next_Pragma
, Node_Id
),
1513 Sm
(Next_Rep_Item
, Node_Id
),
1514 Sm
(Uneval_Old_Accept
, Flag
),
1515 Sm
(Uneval_Old_Warn
, Flag
)));
1517 Cc
(N_Protected_Definition
, Node_Kind
,
1518 (Sy
(Visible_Declarations
, List_Id
),
1519 Sy
(Private_Declarations
, List_Id
, Default_No_List
),
1520 Sy
(End_Label
, Node_Id
, Default_Empty
)));
1522 Cc
(N_Range_Constraint
, Node_Kind
,
1523 (Sy
(Range_Expression
, Node_Id
)));
1525 Cc
(N_Real_Range_Specification
, Node_Kind
,
1526 (Sy
(Low_Bound
, Node_Id
),
1527 Sy
(High_Bound
, Node_Id
)));
1529 Cc
(N_Record_Definition
, Node_Kind
,
1530 (Sy
(End_Label
, Node_Id
, Default_Empty
),
1531 Sy
(Abstract_Present
, Flag
),
1532 Sy
(Tagged_Present
, Flag
),
1533 Sy
(Limited_Present
, Flag
),
1534 Sy
(Component_List
, Node_Id
),
1535 Sy
(Null_Present
, Flag
),
1536 Sy
(Task_Present
, Flag
),
1537 Sy
(Protected_Present
, Flag
),
1538 Sy
(Synchronized_Present
, Flag
),
1539 Sy
(Interface_Present
, Flag
),
1540 Sy
(Interface_List
, List_Id
, Default_No_List
)));
1542 Cc
(N_Signed_Integer_Type_Definition
, Node_Kind
,
1543 (Sy
(Low_Bound
, Node_Id
),
1544 Sy
(High_Bound
, Node_Id
)));
1546 Cc
(N_Single_Protected_Declaration
, Node_Kind
,
1547 (Sy
(Defining_Identifier
, Node_Id
),
1548 Sy
(Interface_List
, List_Id
, Default_No_List
),
1549 Sy
(Protected_Definition
, Node_Id
)));
1551 Cc
(N_Subunit
, Node_Kind
,
1552 (Sy
(Name
, Node_Id
, Default_Empty
),
1553 Sy
(Proper_Body
, Node_Id
),
1554 Sm
(Corresponding_Stub
, Node_Id
)));
1556 Cc
(N_Task_Definition
, Node_Kind
,
1557 (Sy
(Visible_Declarations
, List_Id
),
1558 Sy
(Private_Declarations
, List_Id
, Default_No_List
),
1559 Sy
(End_Label
, Node_Id
, Default_Empty
),
1560 Sm
(Has_Relative_Deadline_Pragma
, Flag
),
1561 Sm
(Has_Storage_Size_Pragma
, Flag
)));
1563 Cc
(N_Triggering_Alternative
, Node_Kind
,
1564 (Sy
(Triggering_Statement
, Node_Id
),
1565 Sy
(Statements
, List_Id
, Default_Empty_List
),
1566 Sy
(Pragmas_Before
, List_Id
, Default_No_List
)));
1568 Cc
(N_Use_Type_Clause
, Node_Kind
,
1569 (Sy
(Subtype_Mark
, Node_Id
, Default_Empty
),
1570 Sy
(Is_Effective_Use_Clause
, Flag
),
1571 Sy
(All_Present
, Flag
),
1572 Sm
(Hidden_By_Use_Clause
, Elist_Id
),
1573 Sm
(More_Ids
, Flag
),
1574 Sm
(Next_Use_Clause
, Node_Id
),
1575 Sm
(Prev_Ids
, Flag
),
1576 Sm
(Prev_Use_Clause
, Node_Id
),
1577 Sm
(Used_Operations
, Elist_Id
)));
1579 Cc
(N_Validate_Unchecked_Conversion
, Node_Kind
,
1580 (Sm
(Source_Type
, Node_Id
),
1581 Sm
(Target_Type
, Node_Id
)));
1583 Cc
(N_Variable_Reference_Marker
, Node_Kind
,
1584 (Sm
(Is_Elaboration_Checks_OK_Node
, Flag
),
1585 Sm
(Is_Elaboration_Warnings_OK_Node
, Flag
),
1587 Sm
(Is_SPARK_Mode_On_Node
, Flag
),
1588 Sm
(Is_Write
, Flag
),
1589 Sm
(Target
, Node_Id
)));
1591 Cc
(N_Variant
, Node_Kind
,
1592 (Sy
(Discrete_Choices
, List_Id
),
1593 Sy
(Component_List
, Node_Id
),
1594 Sm
(Dcheck_Function
, Node_Id
),
1595 Sm
(Enclosing_Variant
, Node_Id
),
1596 Sm
(Has_SP_Choice
, Flag
),
1597 Sm
(Present_Expr
, Valid_Uint
)));
1599 Cc
(N_Variant_Part
, Node_Kind
,
1600 (Sy
(Name
, Node_Id
, Default_Empty
),
1601 Sy
(Variants
, List_Id
)));
1603 Cc
(N_With_Clause
, Node_Kind
,
1604 (Sy
(Name
, Node_Id
, Default_Empty
),
1605 Sy
(Private_Present
, Flag
),
1606 Sy
(Limited_Present
, Flag
),
1607 Sy
(First_Name
, Flag
, Default_True
),
1608 Sy
(Last_Name
, Flag
, Default_True
),
1609 Sm
(Context_Installed
, Flag
),
1610 Sm
(Corresponding_Spec
, Node_Id
),
1611 Sm
(Elaborate_All_Desirable
, Flag
),
1612 Sm
(Elaborate_All_Present
, Flag
),
1613 Sm
(Elaborate_Desirable
, Flag
),
1614 Sm
(Elaborate_Present
, Flag
),
1615 Sm
(Implicit_With
, Flag
),
1616 Sm
(Library_Unit
, Node_Id
),
1617 Sm
(Limited_View_Installed
, Flag
),
1618 Sm
(Next_Implicit_With
, Node_Id
),
1619 Sm
(No_Entities_Ref_In_Spec
, Flag
),
1620 Sm
(Parent_With
, Flag
),
1621 Sm
(Unreferenced_In_Spec
, Flag
)));
1623 Cc
(N_Unused_At_End
, Node_Kind
);
1625 -- Union types. These don't fit into the normal parent/child hierarchy
1630 (N_Attribute_Definition_Clause
,
1632 N_Pragma_Argument_Association
,
1638 N_Character_Literal
,
1641 Union
(N_Has_Condition
,
1645 N_Accept_Alternative
,
1646 N_Delay_Alternative
,
1648 N_Entry_Body_Formal_Part
,
1650 N_Terminate_Alternative
));
1651 -- Nodes with condition fields (does not include N_Raise_xxx_Error)
1653 Union
(N_Has_Bounds
,
1656 N_Real_Range_Specification
,
1657 N_Signed_Integer_Type_Definition
));
1658 -- Nodes that have Low_Bound and High_Bound defined
1664 N_Subtype_Indication
));
1665 -- Nodes that can be an index of an array
1667 Union
(N_Entity_Name
,
1671 N_Operator_Symbol
));
1672 -- Nodes that are definitely representing an entity.
1673 -- Some N_Attribute_Reference nodes may also represent an entity. See
1679 N_Discriminant_Specification
,
1680 N_Enumeration_Type_Definition
,
1681 N_Exception_Handler
,
1683 N_Package_Specification
,
1684 N_Parameter_Specification
,
1685 N_Renaming_Declaration
,
1686 N_Subprogram_Specification
));
1687 -- Nodes that can be returned by Declaration_Node
1691 (N_Character_Literal
,
1695 N_Subtype_Indication
));
1696 -- Nodes that can be used to specify a range
1698 Union
(N_Is_Case_Choice
,
1702 -- Nodes that can be in the choices of a case statement
1704 Union
(N_Is_Exception_Choice
,
1708 -- Nodes that can be in the choices of an exception handler
1710 Union
(N_Alternative
,
1712 (N_Case_Statement_Alternative
,
1714 -- Nodes that can be alternatives in case contructs
1716 end Gen_IL
.Gen
.Gen_Nodes
;