Mercurial > hg > CbC > CbC_gcc
comparison gcc/ada/stand.ads @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 ------------------------------------------------------------------------------ | |
2 -- -- | |
3 -- GNAT COMPILER COMPONENTS -- | |
4 -- -- | |
5 -- S T A N D -- | |
6 -- -- | |
7 -- S p e c -- | |
8 -- -- | |
9 -- Copyright (C) 1992-2015, Free Software Foundation, Inc. -- | |
10 -- -- | |
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. -- | |
17 -- -- | |
18 -- As a special exception under Section 7 of GPL version 3, you are granted -- | |
19 -- additional permissions described in the GCC Runtime Library Exception, -- | |
20 -- version 3.1, as published by the Free Software Foundation. -- | |
21 -- -- | |
22 -- You should have received a copy of the GNU General Public License and -- | |
23 -- a copy of the GCC Runtime Library Exception along with this program; -- | |
24 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- | |
25 -- <http://www.gnu.org/licenses/>. -- | |
26 -- -- | |
27 -- GNAT was originally developed by the GNAT team at New York University. -- | |
28 -- Extensive contributions were provided by Ada Core Technologies Inc. -- | |
29 -- -- | |
30 ------------------------------------------------------------------------------ | |
31 | |
32 -- This package contains the declarations of entities in package Standard, | |
33 -- These values are initialized either by calling CStand.Create_Standard, | |
34 -- or by calling Stand.Tree_Read. | |
35 | |
36 with Types; use Types; | |
37 | |
38 package Stand is | |
39 | |
40 -- Warning: the entities defined in this package are written out by the | |
41 -- Tree_Write routine, and read back in by the Tree_Read routine, so be | |
42 -- sure to modify these two routines if you add entities that are not | |
43 -- part of Standard_Entity. | |
44 | |
45 type Standard_Entity_Type is ( | |
46 -- This enumeration type contains an entry for each name in Standard | |
47 | |
48 -- Package names | |
49 | |
50 S_Standard, | |
51 S_ASCII, | |
52 | |
53 -- Types and subtypes defined in package Standard (in the order in which | |
54 -- they appear in the RM, so that the declarations are in the right | |
55 -- order for the purposes of ASIS traversals | |
56 | |
57 S_Boolean, | |
58 | |
59 S_Short_Short_Integer, | |
60 S_Short_Integer, | |
61 S_Integer, | |
62 S_Long_Integer, | |
63 S_Long_Long_Integer, | |
64 | |
65 S_Natural, | |
66 S_Positive, | |
67 | |
68 S_Short_Float, | |
69 S_Float, | |
70 S_Long_Float, | |
71 S_Long_Long_Float, | |
72 | |
73 S_Character, | |
74 S_Wide_Character, | |
75 S_Wide_Wide_Character, | |
76 | |
77 S_String, | |
78 S_Wide_String, | |
79 S_Wide_Wide_String, | |
80 | |
81 S_Duration, | |
82 | |
83 -- Enumeration literals for type Boolean | |
84 | |
85 S_False, | |
86 S_True, | |
87 | |
88 -- Exceptions declared in package Standard | |
89 | |
90 S_Constraint_Error, | |
91 S_Numeric_Error, | |
92 S_Program_Error, | |
93 S_Storage_Error, | |
94 S_Tasking_Error, | |
95 | |
96 -- Binary Operators declared in package Standard | |
97 | |
98 S_Op_Add, | |
99 S_Op_And, | |
100 S_Op_Concat, | |
101 S_Op_Concatw, | |
102 S_Op_Concatww, | |
103 S_Op_Divide, | |
104 S_Op_Eq, | |
105 S_Op_Expon, | |
106 S_Op_Ge, | |
107 S_Op_Gt, | |
108 S_Op_Le, | |
109 S_Op_Lt, | |
110 S_Op_Mod, | |
111 S_Op_Multiply, | |
112 S_Op_Ne, | |
113 S_Op_Or, | |
114 S_Op_Rem, | |
115 S_Op_Subtract, | |
116 S_Op_Xor, | |
117 | |
118 -- Unary operators declared in package Standard | |
119 | |
120 S_Op_Abs, | |
121 S_Op_Minus, | |
122 S_Op_Not, | |
123 S_Op_Plus, | |
124 | |
125 -- Constants defined in package ASCII (with value in hex). | |
126 -- First the thirty-two C0 control characters) | |
127 | |
128 S_NUL, -- 16#00# | |
129 S_SOH, -- 16#01# | |
130 S_STX, -- 16#02# | |
131 S_ETX, -- 16#03# | |
132 S_EOT, -- 16#04# | |
133 S_ENQ, -- 16#05# | |
134 S_ACK, -- 16#06# | |
135 S_BEL, -- 16#07# | |
136 S_BS, -- 16#08# | |
137 S_HT, -- 16#09# | |
138 S_LF, -- 16#0A# | |
139 S_VT, -- 16#0B# | |
140 S_FF, -- 16#0C# | |
141 S_CR, -- 16#0D# | |
142 S_SO, -- 16#0E# | |
143 S_SI, -- 16#0F# | |
144 S_DLE, -- 16#10# | |
145 S_DC1, -- 16#11# | |
146 S_DC2, -- 16#12# | |
147 S_DC3, -- 16#13# | |
148 S_DC4, -- 16#14# | |
149 S_NAK, -- 16#15# | |
150 S_SYN, -- 16#16# | |
151 S_ETB, -- 16#17# | |
152 S_CAN, -- 16#18# | |
153 S_EM, -- 16#19# | |
154 S_SUB, -- 16#1A# | |
155 S_ESC, -- 16#1B# | |
156 S_FS, -- 16#1C# | |
157 S_GS, -- 16#1D# | |
158 S_RS, -- 16#1E# | |
159 S_US, -- 16#1F# | |
160 | |
161 -- Here are the ones for Colonel Whitaker's O26 keypunch | |
162 | |
163 S_Exclam, -- 16#21# | |
164 S_Quotation, -- 16#22# | |
165 S_Sharp, -- 16#23# | |
166 S_Dollar, -- 16#24# | |
167 S_Percent, -- 16#25# | |
168 S_Ampersand, -- 16#26# | |
169 | |
170 S_Colon, -- 16#3A# | |
171 S_Semicolon, -- 16#3B# | |
172 | |
173 S_Query, -- 16#3F# | |
174 S_At_Sign, -- 16#40# | |
175 | |
176 S_L_Bracket, -- 16#5B# | |
177 S_Back_Slash, -- 16#5C# | |
178 S_R_Bracket, -- 16#5D# | |
179 S_Circumflex, -- 16#5E# | |
180 S_Underline, -- 16#5F# | |
181 S_Grave, -- 16#60# | |
182 | |
183 S_LC_A, -- 16#61# | |
184 S_LC_B, -- 16#62# | |
185 S_LC_C, -- 16#63# | |
186 S_LC_D, -- 16#64# | |
187 S_LC_E, -- 16#65# | |
188 S_LC_F, -- 16#66# | |
189 S_LC_G, -- 16#67# | |
190 S_LC_H, -- 16#68# | |
191 S_LC_I, -- 16#69# | |
192 S_LC_J, -- 16#6A# | |
193 S_LC_K, -- 16#6B# | |
194 S_LC_L, -- 16#6C# | |
195 S_LC_M, -- 16#6D# | |
196 S_LC_N, -- 16#6E# | |
197 S_LC_O, -- 16#6F# | |
198 S_LC_P, -- 16#70# | |
199 S_LC_Q, -- 16#71# | |
200 S_LC_R, -- 16#72# | |
201 S_LC_S, -- 16#73# | |
202 S_LC_T, -- 16#74# | |
203 S_LC_U, -- 16#75# | |
204 S_LC_V, -- 16#76# | |
205 S_LC_W, -- 16#77# | |
206 S_LC_X, -- 16#78# | |
207 S_LC_Y, -- 16#79# | |
208 S_LC_Z, -- 16#7A# | |
209 | |
210 S_L_BRACE, -- 16#7B# | |
211 S_BAR, -- 16#7C# | |
212 S_R_BRACE, -- 16#7D# | |
213 S_TILDE, -- 16#7E# | |
214 | |
215 -- And one more control character, all on its own | |
216 | |
217 S_DEL); -- 16#7F# | |
218 | |
219 subtype S_Types is | |
220 Standard_Entity_Type range S_Boolean .. S_Duration; | |
221 | |
222 subtype S_Exceptions is | |
223 Standard_Entity_Type range S_Constraint_Error .. S_Tasking_Error; | |
224 | |
225 subtype S_ASCII_Names is | |
226 Standard_Entity_Type range S_NUL .. S_DEL; | |
227 | |
228 subtype S_Binary_Ops is | |
229 Standard_Entity_Type range S_Op_Add .. S_Op_Xor; | |
230 | |
231 subtype S_Unary_Ops is | |
232 Standard_Entity_Type range S_Op_Abs .. S_Op_Plus; | |
233 | |
234 type Standard_Entity_Array_Type is array (Standard_Entity_Type) of Node_Id; | |
235 | |
236 Standard_Entity : Standard_Entity_Array_Type; | |
237 -- This array contains pointers to the Defining Identifier nodes for each | |
238 -- of the visible entities defined in Standard_Entities_Type. The array is | |
239 -- initialized by the Create_Standard procedure. | |
240 | |
241 Standard_Package_Node : Node_Id; | |
242 -- Points to the N_Package_Declaration node for standard. Also | |
243 -- initialized by the Create_Standard procedure. | |
244 | |
245 -- The following Entities are the pointers to the Defining Identifier | |
246 -- nodes for some visible entities defined in Standard_Entities_Type. | |
247 | |
248 SE : Standard_Entity_Array_Type renames Standard_Entity; | |
249 | |
250 Standard_Standard : Entity_Id renames SE (S_Standard); | |
251 | |
252 Standard_ASCII : Entity_Id renames SE (S_ASCII); | |
253 Standard_Character : Entity_Id renames SE (S_Character); | |
254 Standard_Wide_Character : Entity_Id renames SE (S_Wide_Character); | |
255 Standard_Wide_Wide_Character : Entity_Id renames SE (S_Wide_Wide_Character); | |
256 Standard_String : Entity_Id renames SE (S_String); | |
257 Standard_Wide_String : Entity_Id renames SE (S_Wide_String); | |
258 Standard_Wide_Wide_String : Entity_Id renames SE (S_Wide_Wide_String); | |
259 | |
260 Standard_Boolean : Entity_Id renames SE (S_Boolean); | |
261 Standard_False : Entity_Id renames SE (S_False); | |
262 Standard_True : Entity_Id renames SE (S_True); | |
263 | |
264 Standard_Duration : Entity_Id renames SE (S_Duration); | |
265 | |
266 Standard_Natural : Entity_Id renames SE (S_Natural); | |
267 Standard_Positive : Entity_Id renames SE (S_Positive); | |
268 | |
269 Standard_Constraint_Error : Entity_Id renames SE (S_Constraint_Error); | |
270 Standard_Numeric_Error : Entity_Id renames SE (S_Numeric_Error); | |
271 Standard_Program_Error : Entity_Id renames SE (S_Program_Error); | |
272 Standard_Storage_Error : Entity_Id renames SE (S_Storage_Error); | |
273 Standard_Tasking_Error : Entity_Id renames SE (S_Tasking_Error); | |
274 | |
275 Standard_Short_Float : Entity_Id renames SE (S_Short_Float); | |
276 Standard_Float : Entity_Id renames SE (S_Float); | |
277 Standard_Long_Float : Entity_Id renames SE (S_Long_Float); | |
278 Standard_Long_Long_Float : Entity_Id renames SE (S_Long_Long_Float); | |
279 | |
280 Standard_Short_Short_Integer : Entity_Id renames SE (S_Short_Short_Integer); | |
281 Standard_Short_Integer : Entity_Id renames SE (S_Short_Integer); | |
282 Standard_Integer : Entity_Id renames SE (S_Integer); | |
283 Standard_Long_Integer : Entity_Id renames SE (S_Long_Integer); | |
284 Standard_Long_Long_Integer : Entity_Id renames SE (S_Long_Long_Integer); | |
285 | |
286 Standard_Op_Add : Entity_Id renames SE (S_Op_Add); | |
287 Standard_Op_And : Entity_Id renames SE (S_Op_And); | |
288 Standard_Op_Concat : Entity_Id renames SE (S_Op_Concat); | |
289 Standard_Op_Concatw : Entity_Id renames SE (S_Op_Concatw); | |
290 Standard_Op_Concatww : Entity_Id renames SE (S_Op_Concatww); | |
291 Standard_Op_Divide : Entity_Id renames SE (S_Op_Divide); | |
292 Standard_Op_Eq : Entity_Id renames SE (S_Op_Eq); | |
293 Standard_Op_Expon : Entity_Id renames SE (S_Op_Expon); | |
294 Standard_Op_Ge : Entity_Id renames SE (S_Op_Ge); | |
295 Standard_Op_Gt : Entity_Id renames SE (S_Op_Gt); | |
296 Standard_Op_Le : Entity_Id renames SE (S_Op_Le); | |
297 Standard_Op_Lt : Entity_Id renames SE (S_Op_Lt); | |
298 Standard_Op_Mod : Entity_Id renames SE (S_Op_Mod); | |
299 Standard_Op_Multiply : Entity_Id renames SE (S_Op_Multiply); | |
300 Standard_Op_Ne : Entity_Id renames SE (S_Op_Ne); | |
301 Standard_Op_Or : Entity_Id renames SE (S_Op_Or); | |
302 Standard_Op_Rem : Entity_Id renames SE (S_Op_Rem); | |
303 Standard_Op_Subtract : Entity_Id renames SE (S_Op_Subtract); | |
304 Standard_Op_Xor : Entity_Id renames SE (S_Op_Xor); | |
305 | |
306 Standard_Op_Abs : Entity_Id renames SE (S_Op_Abs); | |
307 Standard_Op_Minus : Entity_Id renames SE (S_Op_Minus); | |
308 Standard_Op_Not : Entity_Id renames SE (S_Op_Not); | |
309 Standard_Op_Plus : Entity_Id renames SE (S_Op_Plus); | |
310 | |
311 Last_Standard_Node_Id : Node_Id; | |
312 -- Highest Node_Id value used by Standard | |
313 | |
314 Last_Standard_List_Id : List_Id; | |
315 -- Highest List_Id value used by Standard (including those used by | |
316 -- normal list headers, element list headers, and list elements) | |
317 | |
318 Boolean_Literals : array (Boolean) of Entity_Id; | |
319 -- Entities for the two boolean literals, used by the expander | |
320 | |
321 ------------------------------------- | |
322 -- Semantic Phase Special Entities -- | |
323 ------------------------------------- | |
324 | |
325 -- The semantic phase needs a number of entities for internal processing | |
326 -- that are logically at the level of Standard, and hence defined in this | |
327 -- package. However, they are never visible to a program, and are not | |
328 -- chained on to the Decls list of Standard. The names of all these | |
329 -- types are relevant only in certain debugging and error message | |
330 -- situations. They have names that are suitable for use in such | |
331 -- error messages (see body for actual names used). | |
332 | |
333 Standard_Void_Type : Entity_Id; | |
334 -- This is a type used to represent the return type of procedures | |
335 | |
336 Standard_Exception_Type : Entity_Id; | |
337 -- This is a type used to represent the Etype of exceptions | |
338 | |
339 Standard_A_String : Entity_Id; | |
340 -- An access to String type used for building elements of tables | |
341 -- carrying the enumeration literal names. | |
342 | |
343 Standard_A_Char : Entity_Id; | |
344 -- Access to character, used as a component of the exception type to denote | |
345 -- a thin pointer component. | |
346 | |
347 Standard_Debug_Renaming_Type : Entity_Id; | |
348 -- A zero-size subtype of Integer, used as the type of variables used to | |
349 -- provide the debugger with name encodings for renaming declarations. | |
350 | |
351 Predefined_Float_Types : Elist_Id; | |
352 -- Entities for predefined floating point types. These are used by | |
353 -- the semantic phase to select appropriate types for floating point | |
354 -- declarations. This list is ordered by preference. All types up to | |
355 -- Long_Long_Float_Type are considered for plain "digits N" declarations, | |
356 -- while selection of later types requires a range specification and | |
357 -- possibly other attributes or pragmas. | |
358 | |
359 -- The entities labeled Any_xxx are used in situations where the full | |
360 -- characteristics of an entity are not yet known, e.g. Any_Character | |
361 -- is used to label a character literal before resolution is complete. | |
362 -- These entities are also used to construct appropriate references in | |
363 -- error messages ("expecting an integer type"). | |
364 | |
365 Any_Id : Entity_Id; | |
366 -- Used to represent some unknown identifier. Used to label undefined | |
367 -- identifier references to prevent cascaded errors. | |
368 | |
369 Any_Type : Entity_Id; | |
370 -- Used to represent some unknown type. Any_Type is the type of an | |
371 -- unresolved operator, and it is the type of a node where a type error | |
372 -- has been detected. Any_Type plays an important role in avoiding cascaded | |
373 -- errors, because it is compatible with all other types, and is propagated | |
374 -- to any expression that has a subexpression of Any_Type. When resolving | |
375 -- operators, Any_Type is the initial type of the node before any of its | |
376 -- candidate interpretations has been examined. If after examining all of | |
377 -- them the type is still Any_Type, the node has no possible interpretation | |
378 -- and an error can be emitted (and Any_Type will be propagated upwards). | |
379 | |
380 Any_Access : Entity_Id; | |
381 -- Used to resolve the overloaded literal NULL | |
382 | |
383 Any_Array : Entity_Id; | |
384 -- Used to represent some unknown array type | |
385 | |
386 Any_Boolean : Entity_Id; | |
387 -- The context type of conditions in IF and WHILE statements | |
388 | |
389 Any_Character : Entity_Id; | |
390 -- Any_Character is used to label character literals, which in general | |
391 -- will not have an explicit declaration (this is true of the predefined | |
392 -- character types). | |
393 | |
394 Any_Composite : Entity_Id; | |
395 -- The type Any_Composite is used for aggregates before type resolution. | |
396 -- It is compatible with any array or non-limited record type. | |
397 | |
398 Any_Discrete : Entity_Id; | |
399 -- Used to represent some unknown discrete type | |
400 | |
401 Any_Fixed : Entity_Id; | |
402 -- Used to represent some unknown fixed-point type | |
403 | |
404 Any_Integer : Entity_Id; | |
405 -- Used to represent some unknown integer type | |
406 | |
407 Any_Modular : Entity_Id; | |
408 -- Used to represent the result type of a boolean operation on an integer | |
409 -- literal. The result is not Universal_Integer, because it is only legal | |
410 -- in a modular context. | |
411 | |
412 Any_Numeric : Entity_Id; | |
413 -- Used to represent some unknown numeric type | |
414 | |
415 Any_Real : Entity_Id; | |
416 -- Used to represent some unknown real type | |
417 | |
418 Any_Scalar : Entity_Id; | |
419 -- Used to represent some unknown scalar type | |
420 | |
421 Any_String : Entity_Id; | |
422 -- The type Any_String is used for string literals before type resolution. | |
423 -- It corresponds to array (Positive range <>) of character where the | |
424 -- component type is compatible with any character type, not just | |
425 -- Standard_Character. | |
426 | |
427 Raise_Type : Entity_Id; | |
428 -- The type Raise_Type denotes the type of a Raise_Expression. It is | |
429 -- compatible with all other types, and must eventually resolve to a | |
430 -- concrete type that is imposed by the context. | |
431 -- | |
432 -- Historical note: we used to use Any_Type for this purpose, but the | |
433 -- confusion of meanings (Any_Type normally indicates an error) caused | |
434 -- difficulties. In particular some needed expansions were skipped since | |
435 -- the nodes in question looked like they had an error. | |
436 | |
437 Universal_Integer : Entity_Id; | |
438 -- Entity for universal integer type. The bounds of this type correspond | |
439 -- to the largest supported integer type (i.e. Long_Long_Integer). It is | |
440 -- the type used for runtime calculations in type universal integer. | |
441 | |
442 Universal_Real : Entity_Id; | |
443 -- Entity for universal real type. The bounds of this type correspond to | |
444 -- to the largest supported real type (i.e. Long_Long_Float). It is the | |
445 -- type used for runtime calculations in type universal real. Note that | |
446 -- this type is always IEEE format. | |
447 | |
448 Universal_Fixed : Entity_Id; | |
449 -- Entity for universal fixed type. This is a type with arbitrary | |
450 -- precision that can only appear in a context with a specific type. | |
451 -- Universal_Fixed labels the result of multiplication or division of | |
452 -- two fixed point numbers, and has no specified bounds (since, unlike | |
453 -- universal integer and universal real, it is never used for runtime | |
454 -- calculations). | |
455 | |
456 Standard_Integer_8 : Entity_Id; | |
457 Standard_Integer_16 : Entity_Id; | |
458 Standard_Integer_32 : Entity_Id; | |
459 Standard_Integer_64 : Entity_Id; | |
460 -- These are signed integer types with the indicated sizes. Used for the | |
461 -- underlying implementation types for fixed-point and enumeration types. | |
462 | |
463 Standard_Short_Short_Unsigned : Entity_Id; | |
464 Standard_Short_Unsigned : Entity_Id; | |
465 Standard_Unsigned : Entity_Id; | |
466 Standard_Long_Unsigned : Entity_Id; | |
467 Standard_Long_Long_Unsigned : Entity_Id; | |
468 -- Unsigned types with same Esize as corresponding signed integer types | |
469 | |
470 Standard_Unsigned_64 : Entity_Id; | |
471 -- An unsigned type, mod 2 ** 64, size of 64 bits. | |
472 | |
473 Abort_Signal : Entity_Id; | |
474 -- Entity for abort signal exception | |
475 | |
476 Standard_Op_Rotate_Left : Entity_Id; | |
477 Standard_Op_Rotate_Right : Entity_Id; | |
478 Standard_Op_Shift_Left : Entity_Id; | |
479 Standard_Op_Shift_Right : Entity_Id; | |
480 Standard_Op_Shift_Right_Arithmetic : Entity_Id; | |
481 -- These entities are used for shift operators generated by the expander | |
482 | |
483 ----------------- | |
484 -- Subprograms -- | |
485 ----------------- | |
486 | |
487 procedure Tree_Read; | |
488 -- Initializes entity values in this package from the current tree file | |
489 -- using Tree_IO. Note that Tree_Read includes all the initialization that | |
490 -- is carried out by Create_Standard. | |
491 | |
492 procedure Tree_Write; | |
493 -- Writes out the entity values in this package to the current tree file | |
494 -- using Tree_IO. | |
495 | |
496 end Stand; |