1--  Well known name table entries.
2--  Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold
3--
4--  This program is free software: you can redistribute it and/or modify
5--  it under the terms of the GNU General Public License as published by
6--  the Free Software Foundation, either version 2 of the License, or
7--  (at your option) any later version.
8--
9--  This program is distributed in the hope that it will be useful,
10--  but WITHOUT ANY WARRANTY; without even the implied warranty of
11--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12--  GNU General Public License for more details.
13--
14--  You should have received a copy of the GNU General Public License
15--  along with this program.  If not, see <gnu.org/licenses>.
16with Types; use Types;
17
18-- Note: since all identifiers declared in this package begins with either
19-- std_names or name, this package is expected to be use'd.
20
21package Std_Names is
22   -- Predefined names.
23   Name_First_Character : constant Name_Id := 1;
24   Name_Last_Character : constant Name_Id := Name_First_Character + 255;
25
26   subtype Name_Characters is Name_Id
27     range Name_First_Character .. Name_Last_Character;
28
29   Name_First_Keyword : constant Name_Id := Name_Last_Character + 1;
30
31   --  Word operators.
32   Name_Mod :            constant Name_Id := Name_First_Keyword + 000;
33   Name_Rem :            constant Name_Id := Name_First_Keyword + 001;
34
35   Name_Abs :            constant Name_Id := Name_First_Keyword + 002;
36   Name_Not :            constant Name_Id := Name_First_Keyword + 003;
37
38   subtype Name_Word_Operators is Name_Id range Name_Mod .. Name_Not;
39
40   Name_Access :         constant Name_Id := Name_First_Keyword + 004;
41   Name_After :          constant Name_Id := Name_First_Keyword + 005;
42   Name_Alias :          constant Name_Id := Name_First_Keyword + 006;
43   Name_All :            constant Name_Id := Name_First_Keyword + 007;
44   Name_Architecture :   constant Name_Id := Name_First_Keyword + 008;
45   Name_Array :          constant Name_Id := Name_First_Keyword + 009;
46   Name_Assert :         constant Name_Id := Name_First_Keyword + 010;
47   Name_Attribute :      constant Name_Id := Name_First_Keyword + 011;
48
49   Name_Begin :          constant Name_Id := Name_First_Keyword + 012;
50   Name_Block :          constant Name_Id := Name_First_Keyword + 013;
51   Name_Body :           constant Name_Id := Name_First_Keyword + 014;
52   Name_Buffer :         constant Name_Id := Name_First_Keyword + 015;
53   Name_Bus :            constant Name_Id := Name_First_Keyword + 016;
54
55   Name_Case :           constant Name_Id := Name_First_Keyword + 017;
56   Name_Component :      constant Name_Id := Name_First_Keyword + 018;
57   Name_Configuration :  constant Name_Id := Name_First_Keyword + 019;
58   Name_Constant :       constant Name_Id := Name_First_Keyword + 020;
59
60   Name_Disconnect :     constant Name_Id := Name_First_Keyword + 021;
61   Name_Downto :         constant Name_Id := Name_First_Keyword + 022;
62
63   Name_Else :           constant Name_Id := Name_First_Keyword + 023;
64   Name_Elsif :          constant Name_Id := Name_First_Keyword + 024;
65   Name_End :            constant Name_Id := Name_First_Keyword + 025;
66   Name_Entity :         constant Name_Id := Name_First_Keyword + 026;
67   Name_Exit :           constant Name_Id := Name_First_Keyword + 027;
68
69   Name_File :           constant Name_Id := Name_First_Keyword + 028;
70   Name_For :            constant Name_Id := Name_First_Keyword + 029;
71   Name_Function :       constant Name_Id := Name_First_Keyword + 030;
72
73   Name_Generate :       constant Name_Id := Name_First_Keyword + 031;
74   Name_Generic :        constant Name_Id := Name_First_Keyword + 032;
75   Name_Guarded :        constant Name_Id := Name_First_Keyword + 033;
76
77   Name_If :             constant Name_Id := Name_First_Keyword + 034;
78   Name_In :             constant Name_Id := Name_First_Keyword + 035;
79   Name_Inout :          constant Name_Id := Name_First_Keyword + 036;
80   Name_Is :             constant Name_Id := Name_First_Keyword + 037;
81
82   Name_Label :          constant Name_Id := Name_First_Keyword + 038;
83   Name_Library :        constant Name_Id := Name_First_Keyword + 039;
84   Name_Linkage :        constant Name_Id := Name_First_Keyword + 040;
85   Name_Loop :           constant Name_Id := Name_First_Keyword + 041;
86
87   Name_Map :            constant Name_Id := Name_First_Keyword + 042;
88
89   Name_New :            constant Name_Id := Name_First_Keyword + 043;
90   Name_Next :           constant Name_Id := Name_First_Keyword + 044;
91   Name_Null :           constant Name_Id := Name_First_Keyword + 045;
92
93   Name_Of :             constant Name_Id := Name_First_Keyword + 046;
94   Name_On :             constant Name_Id := Name_First_Keyword + 047;
95   Name_Open :           constant Name_Id := Name_First_Keyword + 048;
96   Name_Others :         constant Name_Id := Name_First_Keyword + 049;
97   Name_Out :            constant Name_Id := Name_First_Keyword + 050;
98
99   Name_Package :        constant Name_Id := Name_First_Keyword + 051;
100   Name_Port :           constant Name_Id := Name_First_Keyword + 052;
101   Name_Procedure :      constant Name_Id := Name_First_Keyword + 053;
102   Name_Process :        constant Name_Id := Name_First_Keyword + 054;
103
104   Name_Range :          constant Name_Id := Name_First_Keyword + 055;
105   Name_Record :         constant Name_Id := Name_First_Keyword + 056;
106   Name_Register :       constant Name_Id := Name_First_Keyword + 057;
107   Name_Report :         constant Name_Id := Name_First_Keyword + 058;
108   Name_Return :         constant Name_Id := Name_First_Keyword + 059;
109
110   Name_Select :         constant Name_Id := Name_First_Keyword + 060;
111   Name_Severity :       constant Name_Id := Name_First_Keyword + 061;
112   Name_Signal :         constant Name_Id := Name_First_Keyword + 062;
113   Name_Subtype :        constant Name_Id := Name_First_Keyword + 063;
114
115   Name_Then :           constant Name_Id := Name_First_Keyword + 064;
116   Name_To :             constant Name_Id := Name_First_Keyword + 065;
117   Name_Transport :      constant Name_Id := Name_First_Keyword + 066;
118   Name_Type :           constant Name_Id := Name_First_Keyword + 067;
119
120   Name_Units :          constant Name_Id := Name_First_Keyword + 068;
121   Name_Until :          constant Name_Id := Name_First_Keyword + 069;
122   Name_Use :            constant Name_Id := Name_First_Keyword + 070;
123
124   Name_Variable :       constant Name_Id := Name_First_Keyword + 071;
125
126   Name_Wait :           constant Name_Id := Name_First_Keyword + 072;
127   Name_When :           constant Name_Id := Name_First_Keyword + 073;
128   Name_While :          constant Name_Id := Name_First_Keyword + 074;
129   Name_With :           constant Name_Id := Name_First_Keyword + 075;
130
131   Name_And :            constant Name_Id := Name_First_Keyword + 076;
132   Name_Or :             constant Name_Id := Name_First_Keyword + 077;
133   Name_Xor :            constant Name_Id := Name_First_Keyword + 078;
134   Name_Nand :           constant Name_Id := Name_First_Keyword + 079;
135   Name_Nor :            constant Name_Id := Name_First_Keyword + 080;
136
137   subtype Name_Logical_Operators is Name_Id range Name_And .. Name_Nor;
138
139   Name_Last_Vhdl87 :    constant Name_Id := Name_Nor;
140   subtype Name_Id_Vhdl87_Reserved_Words is
141     Name_Id range Name_First_Keyword .. Name_Nor;
142
143   -- VHDL93 reserved words.
144   Name_Xnor :           constant Name_Id := Name_First_Keyword + 081;
145   Name_Group :          constant Name_Id := Name_First_Keyword + 082;
146   Name_Impure :         constant Name_Id := Name_First_Keyword + 083;
147   Name_Inertial :       constant Name_Id := Name_First_Keyword + 084;
148   Name_Literal :        constant Name_Id := Name_First_Keyword + 085;
149   Name_Postponed :      constant Name_Id := Name_First_Keyword + 086;
150   Name_Pure :           constant Name_Id := Name_First_Keyword + 087;
151   Name_Reject :         constant Name_Id := Name_First_Keyword + 088;
152   Name_Shared :         constant Name_Id := Name_First_Keyword + 089;
153   Name_Unaffected :     constant Name_Id := Name_First_Keyword + 090;
154
155   Name_Sll :            constant Name_Id := Name_First_Keyword + 091;
156   Name_Sla :            constant Name_Id := Name_First_Keyword + 092;
157   Name_Sra :            constant Name_Id := Name_First_Keyword + 093;
158   Name_Srl :            constant Name_Id := Name_First_Keyword + 094;
159   Name_Rol :            constant Name_Id := Name_First_Keyword + 095;
160   Name_Ror :            constant Name_Id := Name_First_Keyword + 096;
161   subtype Name_Shift_Operators is Name_Id range Name_Sll .. Name_Ror;
162
163   Name_Last_Vhdl93 :    constant Name_Id := Name_Ror;
164   subtype Name_Id_Vhdl93_Reserved_Words is
165     Name_Id range Name_Xnor .. Name_Ror;
166
167   Name_Protected :      constant Name_Id := Name_First_Keyword + 097;
168
169   Name_Last_Vhdl00 :    constant Name_Id := Name_Protected;
170   subtype Name_Id_Vhdl00_Reserved_Words is
171     Name_Id range Name_Protected .. Name_Last_Vhdl00;
172
173   Name_Assume :             constant Name_Id := Name_First_Keyword + 098;
174   Name_Context :            constant Name_Id := Name_First_Keyword + 099;
175   Name_Cover :              constant Name_Id := Name_First_Keyword + 100;
176   Name_Default :            constant Name_Id := Name_First_Keyword + 101;
177   Name_Force :              constant Name_Id := Name_First_Keyword + 102;
178   Name_Parameter :          constant Name_Id := Name_First_Keyword + 103;
179   Name_Property :           constant Name_Id := Name_First_Keyword + 104;
180   Name_Release :            constant Name_Id := Name_First_Keyword + 105;
181   Name_Restrict :           constant Name_Id := Name_First_Keyword + 106;
182   Name_Restrict_Guarantee : constant Name_Id := Name_First_Keyword + 107;
183   Name_Sequence :           constant Name_Id := Name_First_Keyword + 108;
184   Name_Vmode :              constant Name_Id := Name_First_Keyword + 109;
185   Name_Vprop :              constant Name_Id := Name_First_Keyword + 110;
186   Name_Vunit :              constant Name_Id := Name_First_Keyword + 111;
187   Name_Last_Vhdl08 :        constant Name_Id := Name_Vunit;
188
189   subtype Name_Id_Vhdl08_Reserved_Words is
190     Name_Id range Name_Assume .. Name_Last_Vhdl08;
191
192   Name_First_Ams_Keyword :  constant Name_Id := Name_Last_Vhdl08 + 1;
193   Name_Across :         constant Name_Id := Name_First_Ams_Keyword + 000;
194   Name_Break :          constant Name_Id := Name_First_Ams_Keyword + 001;
195   Name_Limit :          constant Name_Id := Name_First_Ams_Keyword + 002;
196   Name_Nature :         constant Name_Id := Name_First_Ams_Keyword + 003;
197   Name_Noise :          constant Name_Id := Name_First_Ams_Keyword + 004;
198   Name_Procedural :     constant Name_Id := Name_First_Ams_Keyword + 005;
199   Name_Quantity :       constant Name_Id := Name_First_Ams_Keyword + 006;
200   Name_Reference :      constant Name_Id := Name_First_Ams_Keyword + 007;
201   Name_Spectrum :       constant Name_Id := Name_First_Ams_Keyword + 008;
202   Name_Subnature :      constant Name_Id := Name_First_Ams_Keyword + 009;
203   Name_Terminal :       constant Name_Id := Name_First_Ams_Keyword + 010;
204   Name_Through :        constant Name_Id := Name_First_Ams_Keyword + 011;
205   Name_Tolerance :      constant Name_Id := Name_First_Ams_Keyword + 012;
206   Name_Last_AMS_Vhdl :  constant Name_Id := Name_Tolerance;
207
208   subtype Name_Id_AMS_Reserved_Words is
209     Name_Id range Name_Across .. Name_Tolerance;
210
211   Name_Last_Keyword :   constant Name_Id := Name_Tolerance;
212
213   subtype Name_Id_Keywords is
214     Name_Id range Name_First_Keyword .. Name_Last_Keyword;
215
216   --  Verilog keywords.
217   Name_First_Verilog :  constant Name_Id := Name_Last_Keyword + 1;
218   Name_Always :         constant Name_Id := Name_First_Verilog + 00;
219   Name_Assign :         constant Name_Id := Name_First_Verilog + 01;
220   Name_Buf :            constant Name_Id := Name_First_Verilog + 02;
221   Name_Bufif0 :         constant Name_Id := Name_First_Verilog + 03;
222   Name_Bufif1 :         constant Name_Id := Name_First_Verilog + 04;
223   Name_Casex :          constant Name_Id := Name_First_Verilog + 05;
224   Name_Casez :          constant Name_Id := Name_First_Verilog + 06;
225   Name_Cmos :           constant Name_Id := Name_First_Verilog + 07;
226   Name_Deassign :       constant Name_Id := Name_First_Verilog + 08;
227   Name_Defparam :       constant Name_Id := Name_First_Verilog + 09;
228   Name_Disable :        constant Name_Id := Name_First_Verilog + 10;
229   Name_Edge :           constant Name_Id := Name_First_Verilog + 11;
230   Name_Endcase :        constant Name_Id := Name_First_Verilog + 12;
231   Name_Endfunction :    constant Name_Id := Name_First_Verilog + 13;
232   Name_Endmodule :      constant Name_Id := Name_First_Verilog + 14;
233   Name_Endprimitive :   constant Name_Id := Name_First_Verilog + 15;
234   Name_Endspecify :     constant Name_Id := Name_First_Verilog + 16;
235   Name_Endtable :       constant Name_Id := Name_First_Verilog + 17;
236   Name_Endtask :        constant Name_Id := Name_First_Verilog + 18;
237   Name_Forever :        constant Name_Id := Name_First_Verilog + 19;
238   Name_Fork :           constant Name_Id := Name_First_Verilog + 20;
239   Name_Highz0 :         constant Name_Id := Name_First_Verilog + 21;
240   Name_Highz1 :         constant Name_Id := Name_First_Verilog + 22;
241   Name_Ifnone :         constant Name_Id := Name_First_Verilog + 23;
242   Name_Initial :        constant Name_Id := Name_First_Verilog + 24;
243   Name_Input :          constant Name_Id := Name_First_Verilog + 25;
244   Name_Join :           constant Name_Id := Name_First_Verilog + 26;
245   Name_Large :          constant Name_Id := Name_First_Verilog + 27;
246   Name_Macromodule :    constant Name_Id := Name_First_Verilog + 28;
247   Name_Medium :         constant Name_Id := Name_First_Verilog + 29;
248   Name_Module :         constant Name_Id := Name_First_Verilog + 30;
249   Name_Negedge :        constant Name_Id := Name_First_Verilog + 31;
250   Name_Nmos :           constant Name_Id := Name_First_Verilog + 32;
251   Name_Notif0 :         constant Name_Id := Name_First_Verilog + 33;
252   Name_Notif1 :         constant Name_Id := Name_First_Verilog + 34;
253   Name_Output :         constant Name_Id := Name_First_Verilog + 35;
254   Name_Pmos :           constant Name_Id := Name_First_Verilog + 36;
255   Name_Posedge :        constant Name_Id := Name_First_Verilog + 37;
256   Name_Primitive :      constant Name_Id := Name_First_Verilog + 38;
257   Name_Pull0 :          constant Name_Id := Name_First_Verilog + 39;
258   Name_Pull1 :          constant Name_Id := Name_First_Verilog + 40;
259   Name_Pulldown :       constant Name_Id := Name_First_Verilog + 41;
260   Name_Pullup :         constant Name_Id := Name_First_Verilog + 42;
261   Name_Realtime :       constant Name_Id := Name_First_Verilog + 43;
262   Name_Reg :            constant Name_Id := Name_First_Verilog + 44;
263   Name_Repeat :         constant Name_Id := Name_First_Verilog + 45;
264   Name_Rcmos :          constant Name_Id := Name_First_Verilog + 46;
265   Name_Rnmos :          constant Name_Id := Name_First_Verilog + 47;
266   Name_Rpmos :          constant Name_Id := Name_First_Verilog + 48;
267   Name_Rtran :          constant Name_Id := Name_First_Verilog + 49;
268   Name_Rtranif0 :       constant Name_Id := Name_First_Verilog + 50;
269   Name_Rtranif1 :       constant Name_Id := Name_First_Verilog + 51;
270   Name_Scalared :       constant Name_Id := Name_First_Verilog + 52;
271   Name_Small :          constant Name_Id := Name_First_Verilog + 53;
272   Name_Specify :        constant Name_Id := Name_First_Verilog + 54;
273   Name_Specparam :      constant Name_Id := Name_First_Verilog + 55;
274   Name_Strong0 :        constant Name_Id := Name_First_Verilog + 56;
275   Name_Strong1 :        constant Name_Id := Name_First_Verilog + 57;
276   Name_Supply0 :        constant Name_Id := Name_First_Verilog + 58;
277   Name_Supply1 :        constant Name_Id := Name_First_Verilog + 59;
278   Name_Tablex :         constant Name_Id := Name_First_Verilog + 60;
279   Name_Task :           constant Name_Id := Name_First_Verilog + 61;
280   Name_Tran :           constant Name_Id := Name_First_Verilog + 62;
281   Name_Tranif0 :        constant Name_Id := Name_First_Verilog + 63;
282   Name_Tranif1 :        constant Name_Id := Name_First_Verilog + 64;
283   Name_Tri :            constant Name_Id := Name_First_Verilog + 65;
284   Name_Tri0 :           constant Name_Id := Name_First_Verilog + 66;
285   Name_Tri1 :           constant Name_Id := Name_First_Verilog + 67;
286   Name_Triand :         constant Name_Id := Name_First_Verilog + 68;
287   Name_Trior :          constant Name_Id := Name_First_Verilog + 69;
288   Name_Trireg :         constant Name_Id := Name_First_Verilog + 70;
289   Name_Vectored :       constant Name_Id := Name_First_Verilog + 71;
290   Name_Wand :           constant Name_Id := Name_First_Verilog + 72;
291   Name_Weak0 :          constant Name_Id := Name_First_Verilog + 73;
292   Name_Weak1 :          constant Name_Id := Name_First_Verilog + 74;
293   Name_Wire :           constant Name_Id := Name_First_Verilog + 75;
294   Name_Wor :            constant Name_Id := Name_First_Verilog + 76;
295   Name_Last_Verilog :   constant Name_Id := Name_Wor;
296
297   --  Verilog 2001
298   Name_First_V2001 :    constant Name_Id := Name_Last_Verilog + 1;
299   Name_Automatic :      constant Name_Id := Name_First_V2001 + 0;
300   Name_Endgenerate :    constant Name_Id := Name_First_V2001 + 1;
301   Name_Genvar :         constant Name_Id := Name_First_V2001 + 2;
302   Name_Localparam :     constant Name_Id := Name_First_V2001 + 3;
303   Name_Unsigned :       constant Name_Id := Name_First_V2001 + 4;
304   Name_Signed :         constant Name_Id := Name_First_V2001 + 5;
305   Name_Last_V2001 :     constant Name_Id := Name_First_V2001 + 5;
306
307   --  Verilog 2005
308   Name_Uwire :          constant Name_Id := Name_Last_V2001 + 1;
309
310   --  SystemVerilog
311   Name_First_SV3_0 :    constant Name_Id := Name_Last_V2001 + 2;
312   Name_Always_Comb :    constant Name_Id := Name_First_SV3_0 + 0;
313   Name_Always_Ff :      constant Name_Id := Name_First_SV3_0 + 1;
314   Name_Always_Latch :   constant Name_Id := Name_First_SV3_0 + 2;
315   Name_Bit :            constant Name_Id := Name_First_SV3_0 + 3;
316   Name_Byte :           constant Name_Id := Name_First_SV3_0 + 4;
317   Name_Changed :        constant Name_Id := Name_First_SV3_0 + 5;
318   Name_Char :           constant Name_Id := Name_First_SV3_0 + 6;
319   Name_Const :          constant Name_Id := Name_First_SV3_0 + 7;
320   Name_Continue :       constant Name_Id := Name_First_SV3_0 + 8;
321   Name_Do :             constant Name_Id := Name_First_SV3_0 + 9;
322   Name_Endinterface :   constant Name_Id := Name_First_SV3_0 + 10;
323   Name_Endtransition :  constant Name_Id := Name_First_SV3_0 + 11;
324   Name_Enum :           constant Name_Id := Name_First_SV3_0 + 12;
325   Name_Export :         constant Name_Id := Name_First_SV3_0 + 13;
326   Name_Extern :         constant Name_Id := Name_First_SV3_0 + 14;
327   Name_Forkjoin :       constant Name_Id := Name_First_SV3_0 + 15;
328   Name_Iff :            constant Name_Id := Name_First_SV3_0 + 16;
329   Name_Import :         constant Name_Id := Name_First_SV3_0 + 17;
330   Name_Int :            constant Name_Id := Name_First_SV3_0 + 18;
331   Name_Interface :      constant Name_Id := Name_First_SV3_0 + 19;
332   Name_Logic :          constant Name_Id := Name_First_SV3_0 + 20;
333   Name_Longint :        constant Name_Id := Name_First_SV3_0 + 21;
334   Name_Longreal :       constant Name_Id := Name_First_SV3_0 + 22;
335   Name_Modport :        constant Name_Id := Name_First_SV3_0 + 23;
336   Name_Packed :         constant Name_Id := Name_First_SV3_0 + 24;
337   Name_Priority :       constant Name_Id := Name_First_SV3_0 + 25;
338   Name_Shortint :       constant Name_Id := Name_First_SV3_0 + 26;
339   Name_Shortreal :      constant Name_Id := Name_First_SV3_0 + 27;
340   Name_Static :         constant Name_Id := Name_First_SV3_0 + 28;
341   Name_Struct :         constant Name_Id := Name_First_SV3_0 + 29;
342   Name_Timeprecision :  constant Name_Id := Name_First_SV3_0 + 30;
343   Name_Timeunit :       constant Name_Id := Name_First_SV3_0 + 31;
344   Name_Transition :     constant Name_Id := Name_First_SV3_0 + 32;
345   Name_Typedef :        constant Name_Id := Name_First_SV3_0 + 33;
346   Name_Union :          constant Name_Id := Name_First_SV3_0 + 34;
347   Name_Unique :         constant Name_Id := Name_First_SV3_0 + 35;
348   Name_Unique0 :        constant Name_Id := Name_First_SV3_0 + 36;
349   Name_Void :           constant Name_Id := Name_First_SV3_0 + 37;
350   Name_Last_SV3_0 :     constant Name_Id := Name_First_SV3_0 + 37;
351
352   Name_First_SV3_1 :    constant Name_Id := Name_Last_SV3_0 + 1;
353   Name_Chandle :        constant Name_Id := Name_First_SV3_1 + 0;
354   Name_Class :          constant Name_Id := Name_First_SV3_1 + 1;
355   Name_Clocking :       constant Name_Id := Name_First_SV3_1 + 2;
356   Name_Constraint :     constant Name_Id := Name_First_SV3_1 + 3;
357   Name_Dist :           constant Name_Id := Name_First_SV3_1 + 4;
358   Name_Endclass :       constant Name_Id := Name_First_SV3_1 + 5;
359   Name_Endclocking :    constant Name_Id := Name_First_SV3_1 + 6;
360   Name_Endprogram :     constant Name_Id := Name_First_SV3_1 + 7;
361   Name_Endproperty :    constant Name_Id := Name_First_SV3_1 + 8;
362   Name_Endsequence :    constant Name_Id := Name_First_SV3_1 + 9;
363   Name_Extends :        constant Name_Id := Name_First_SV3_1 + 10;
364   Name_Final :          constant Name_Id := Name_First_SV3_1 + 11;
365   Name_First_Match :    constant Name_Id := Name_First_SV3_1 + 12;
366   Name_Inside :         constant Name_Id := Name_First_SV3_1 + 13;
367   Name_Intersect :      constant Name_Id := Name_First_SV3_1 + 14;
368   Name_Join_Any :       constant Name_Id := Name_First_SV3_1 + 15;
369   Name_Join_None :      constant Name_Id := Name_First_SV3_1 + 16;
370   Name_Local :          constant Name_Id := Name_First_SV3_1 + 17;
371   Name_Program :        constant Name_Id := Name_First_SV3_1 + 18;
372   Name_Rand :           constant Name_Id := Name_First_SV3_1 + 19;
373   Name_Randc :          constant Name_Id := Name_First_SV3_1 + 20;
374   Name_Ref :            constant Name_Id := Name_First_SV3_1 + 21;
375   Name_Solve :          constant Name_Id := Name_First_SV3_1 + 22;
376   Name_String :         constant Name_Id := Name_First_SV3_1 + 23;
377   Name_Super :          constant Name_Id := Name_First_SV3_1 + 24;
378   Name_This :           constant Name_Id := Name_First_SV3_1 + 25;
379   Name_Throughout :     constant Name_Id := Name_First_SV3_1 + 26;
380   Name_Var :            constant Name_Id := Name_First_SV3_1 + 27;
381   Name_Virtual :        constant Name_Id := Name_First_SV3_1 + 28;
382   Name_Wait_Order :     constant Name_Id := Name_First_SV3_1 + 29;
383   Name_Last_SV3_1 :     constant Name_Id := Name_Wait_Order;
384
385   Name_First_SV3_1a :   constant Name_Id := Name_Last_SV3_1 + 1;
386   Name_Covergroup :     constant Name_Id := Name_First_SV3_1a + 0;
387   Name_Coverpoint :     constant Name_Id := Name_First_SV3_1a + 1;
388   Name_Endgroup :       constant Name_Id := Name_First_SV3_1a + 2;
389   Name_Endpackage :     constant Name_Id := Name_First_SV3_1a + 3;
390   Name_Expect :         constant Name_Id := Name_First_SV3_1a + 4;
391   Name_Foreach :        constant Name_Id := Name_First_SV3_1a + 5;
392   Name_Ignore_Bins :    constant Name_Id := Name_First_SV3_1a + 6;
393   Name_Illegal_Bins :   constant Name_Id := Name_First_SV3_1a + 7;
394   Name_Matches :        constant Name_Id := Name_First_SV3_1a + 8;
395   Name_Randcase :       constant Name_Id := Name_First_SV3_1a + 9;
396   Name_Randsequence :   constant Name_Id := Name_First_SV3_1a + 10;
397   Name_Tagged :         constant Name_Id := Name_First_SV3_1a + 11;
398   Name_Wildcard :       constant Name_Id := Name_First_SV3_1a + 12;
399   Name_Last_SV3_1a :    constant Name_Id := Name_Wildcard;
400
401   Name_First_SV2009 :   constant Name_Id := Name_Last_SV3_1a + 1;
402   Name_Implies :        constant Name_Id := Name_First_SV2009 + 0;
403   Name_S_Until :        constant Name_Id := Name_First_SV2009 + 1;
404   Name_S_Until_With :   constant Name_Id := Name_First_SV2009 + 2;
405   Name_Until_With :     constant Name_Id := Name_First_SV2009 + 3;
406   Name_Last_SV2009 :    constant Name_Id := Name_First_SV2009 + 3;
407
408   --  VHDL operators.  Used as identifiers for declaration of overloaded
409   --  operators.
410   Name_First_Operator :         constant Name_Id := Name_Last_SV2009 + 1;
411   Name_Op_Equality :            constant Name_Id := Name_First_Operator + 000;
412   Name_Op_Inequality :          constant Name_Id := Name_First_Operator + 001;
413   Name_Op_Less :                constant Name_Id := Name_First_Operator + 002;
414   Name_Op_Less_Equal :          constant Name_Id := Name_First_Operator + 003;
415   Name_Op_Greater :             constant Name_Id := Name_First_Operator + 004;
416   Name_Op_Greater_Equal :       constant Name_Id := Name_First_Operator + 005;
417   Name_Op_Plus :                constant Name_Id := Name_First_Operator + 006;
418   Name_Op_Minus :               constant Name_Id := Name_First_Operator + 007;
419   Name_Op_Mul :                 constant Name_Id := Name_First_Operator + 008;
420   Name_Op_Div :                 constant Name_Id := Name_First_Operator + 009;
421   Name_Op_Exp :                 constant Name_Id := Name_First_Operator + 010;
422   Name_Op_Concatenation :       constant Name_Id := Name_First_Operator + 011;
423   Name_Op_Condition :           constant Name_Id := Name_First_Operator + 012;
424   Name_Op_Match_Equality :      constant Name_Id := Name_First_Operator + 013;
425   Name_Op_Match_Inequality :    constant Name_Id := Name_First_Operator + 014;
426   Name_Op_Match_Less :          constant Name_Id := Name_First_Operator + 015;
427   Name_Op_Match_Less_Equal :    constant Name_Id := Name_First_Operator + 016;
428   Name_Op_Match_Greater :       constant Name_Id := Name_First_Operator + 017;
429   Name_Op_Match_Greater_Equal : constant Name_Id := Name_First_Operator + 018;
430   Name_Last_Operator :  constant Name_Id := Name_Op_Match_Greater_Equal;
431
432   subtype Name_Relational_Operators is Name_Id
433     range Name_Op_Equality .. Name_Op_Greater_Equal;
434
435   --  List of symbolic operators (available as string).
436   subtype Name_Id_Operators is Name_Id
437     range Name_First_Operator .. Name_Last_Operator;
438
439   Name_First_Attribute : constant Name_Id := Name_Last_Operator + 1;
440   Name_Base :            constant Name_Id := Name_First_Attribute + 000;
441   Name_Left :            constant Name_Id := Name_First_Attribute + 001;
442   Name_Right :           constant Name_Id := Name_First_Attribute + 002;
443   Name_High :            constant Name_Id := Name_First_Attribute + 003;
444   Name_Low :             constant Name_Id := Name_First_Attribute + 004;
445   Name_Pos :             constant Name_Id := Name_First_Attribute + 005;
446   Name_Val :             constant Name_Id := Name_First_Attribute + 006;
447   Name_Succ :            constant Name_Id := Name_First_Attribute + 007;
448   Name_Pred :            constant Name_Id := Name_First_Attribute + 008;
449   Name_Leftof :          constant Name_Id := Name_First_Attribute + 009;
450   Name_Rightof :         constant Name_Id := Name_First_Attribute + 010;
451   Name_Reverse_Range :   constant Name_Id := Name_First_Attribute + 011;
452   Name_Length :          constant Name_Id := Name_First_Attribute + 012;
453   Name_Delayed :         constant Name_Id := Name_First_Attribute + 013;
454   Name_Stable :          constant Name_Id := Name_First_Attribute + 014;
455   Name_Quiet :           constant Name_Id := Name_First_Attribute + 015;
456   Name_Transaction :     constant Name_Id := Name_First_Attribute + 016;
457   Name_Event :           constant Name_Id := Name_First_Attribute + 017;
458   Name_Active :          constant Name_Id := Name_First_Attribute + 018;
459   Name_Last_Event :      constant Name_Id := Name_First_Attribute + 019;
460   Name_Last_Active :     constant Name_Id := Name_First_Attribute + 020;
461   Name_Last_Value :      constant Name_Id := Name_First_Attribute + 021;
462   Name_Last_Attribute :  constant Name_Id := Name_Last_Value;
463
464   subtype Name_Id_Attributes is Name_Id
465     range Name_First_Attribute .. Name_Last_Attribute;
466
467   Name_First_Vhdl87_Attribute : constant Name_Id := Name_Last_Value + 1;
468   Name_Behavior :              constant Name_Id := Name_First_Attribute + 022;
469   Name_Structure :             constant Name_Id := Name_First_Attribute + 023;
470   Name_Last_Vhdl87_Attribute : constant Name_Id := Name_Structure;
471
472   subtype Name_Id_Vhdl87_Attributes is Name_Id
473     range Name_First_Vhdl87_Attribute .. Name_Last_Vhdl87_Attribute;
474
475   Name_First_Vhdl93_Attribute : constant Name_Id := Name_Structure + 1;
476   Name_Ascending :      constant Name_Id := Name_First_Attribute + 024;
477   Name_Image :          constant Name_Id := Name_First_Attribute + 025;
478   Name_Value :          constant Name_Id := Name_First_Attribute + 026;
479   Name_Driving :        constant Name_Id := Name_First_Attribute + 027;
480   Name_Driving_Value :  constant Name_Id := Name_First_Attribute + 028;
481   Name_Simple_Name :    constant Name_Id := Name_First_Attribute + 029;
482   Name_Instance_Name :  constant Name_Id := Name_First_Attribute + 030;
483   Name_Path_Name :      constant Name_Id := Name_First_Attribute + 031;
484   Name_Last_Vhdl93_Attribute : constant Name_Id := Name_Path_Name;
485
486   subtype Name_Id_Vhdl93_Attributes is Name_Id
487     range Name_First_Vhdl93_Attribute .. Name_Last_Vhdl93_Attribute;
488
489   Name_First_Vhdl08_Attribute : constant Name_Id :=
490                                             Name_Last_Vhdl93_Attribute + 01;
491   Name_Element :        constant Name_Id := Name_First_Vhdl08_Attribute + 00;
492   Name_Last_Vhdl08_Attribute :  constant Name_Id :=
493                                             Name_First_Vhdl08_Attribute + 00;
494
495   Name_First_AMS_Attribute : constant Name_Id :=
496     Name_Last_Vhdl08_Attribute + 1;
497   Name_Contribution :   constant Name_Id := Name_First_AMS_Attribute + 000;
498   Name_Dot :            constant Name_Id := Name_First_AMS_Attribute + 001;
499   Name_Integ :          constant Name_Id := Name_First_AMS_Attribute + 002;
500   Name_Above :          constant Name_Id := Name_First_AMS_Attribute + 003;
501   Name_Zoh :            constant Name_Id := Name_First_AMS_Attribute + 004;
502   Name_Ltf :            constant Name_Id := Name_First_AMS_Attribute + 005;
503   Name_Ztf :            constant Name_Id := Name_First_AMS_Attribute + 006;
504   Name_Ramp :           constant Name_Id := Name_First_AMS_Attribute + 007;
505   Name_Slew :           constant Name_Id := Name_First_AMS_Attribute + 008;
506   Name_Last_AMS_Attribute : constant Name_Id := Name_Slew;
507
508   subtype Name_Id_Name_Attributes is Name_Id
509     range Name_Simple_Name .. Name_Path_Name;
510
511   --  Names used in std.standard package.
512   Name_First_Standard :      constant Name_Id := Name_Last_AMS_Attribute + 1;
513   Name_Std :                 constant Name_Id := Name_First_Standard + 000;
514   Name_Standard :            constant Name_Id := Name_First_Standard + 001;
515   Name_Boolean :             constant Name_Id := Name_First_Standard + 002;
516   Name_False :               constant Name_Id := Name_First_Standard + 003;
517   Name_True :                constant Name_Id := Name_First_Standard + 004;
518   Name_Character :           constant Name_Id := Name_First_Standard + 005;
519   Name_Severity_Level :      constant Name_Id := Name_First_Standard + 006;
520   Name_Note :                constant Name_Id := Name_First_Standard + 007;
521   Name_Warning :             constant Name_Id := Name_First_Standard + 008;
522   Name_Error :               constant Name_Id := Name_First_Standard + 009;
523   Name_Failure :             constant Name_Id := Name_First_Standard + 010;
524   Name_Universal_Integer :   constant Name_Id := Name_First_Standard + 011;
525   Name_Universal_Real :      constant Name_Id := Name_First_Standard + 012;
526   Name_Convertible_Integer : constant Name_Id := Name_First_Standard + 013;
527   Name_Convertible_Real :    constant Name_Id := Name_First_Standard + 014;
528   Name_Integer :             constant Name_Id := Name_First_Standard + 015;
529   Name_Real :                constant Name_Id := Name_First_Standard + 016;
530   Name_Time :                constant Name_Id := Name_First_Standard + 017;
531   Name_Fs :                  constant Name_Id := Name_First_Standard + 018;
532   Name_Ps :                  constant Name_Id := Name_First_Standard + 019;
533   Name_Ns :                  constant Name_Id := Name_First_Standard + 020;
534   Name_Us :                  constant Name_Id := Name_First_Standard + 021;
535   Name_Ms :                  constant Name_Id := Name_First_Standard + 022;
536   Name_Sec :                 constant Name_Id := Name_First_Standard + 023;
537   Name_Min :                 constant Name_Id := Name_First_Standard + 024;
538   Name_Hr :                  constant Name_Id := Name_First_Standard + 025;
539   Name_Max :                 constant Name_Id := Name_First_Standard + 026;
540   Name_Delay_Length :        constant Name_Id := Name_First_Standard + 027;
541   Name_Now :                 constant Name_Id := Name_First_Standard + 028;
542   Name_Natural :             constant Name_Id := Name_First_Standard + 029;
543   Name_Positive :            constant Name_Id := Name_First_Standard + 030;
544   Name_Bit_Vector :          constant Name_Id := Name_First_Standard + 031;
545   Name_File_Open_Kind :      constant Name_Id := Name_First_Standard + 032;
546   Name_Read_Mode :           constant Name_Id := Name_First_Standard + 033;
547   Name_Write_Mode :          constant Name_Id := Name_First_Standard + 034;
548   Name_Append_Mode :         constant Name_Id := Name_First_Standard + 035;
549   Name_File_Open_Status :    constant Name_Id := Name_First_Standard + 036;
550   Name_Open_Ok :             constant Name_Id := Name_First_Standard + 037;
551   Name_Status_Error :        constant Name_Id := Name_First_Standard + 038;
552   Name_Name_Error :          constant Name_Id := Name_First_Standard + 039;
553   Name_Mode_Error :          constant Name_Id := Name_First_Standard + 040;
554   Name_Foreign :             constant Name_Id := Name_First_Standard + 041;
555
556   --  Added by VHDL 08
557   Name_Boolean_Vector :   constant Name_Id := Name_First_Standard + 042;
558   Name_To_Bstring :       constant Name_Id := Name_First_Standard + 043;
559   Name_To_Binary_String : constant Name_Id := Name_First_Standard + 044;
560   Name_To_Ostring :       constant Name_Id := Name_First_Standard + 045;
561   Name_To_Octal_String :  constant Name_Id := Name_First_Standard + 046;
562   Name_To_Hstring :       constant Name_Id := Name_First_Standard + 047;
563   Name_To_Hex_String :    constant Name_Id := Name_First_Standard + 048;
564   Name_Integer_Vector :   constant Name_Id := Name_First_Standard + 049;
565   Name_Real_Vector :      constant Name_Id := Name_First_Standard + 050;
566   Name_Time_Vector :      constant Name_Id := Name_First_Standard + 051;
567   Name_Digits      :      constant Name_Id := Name_First_Standard + 052;
568   Name_Format      :      constant Name_Id := Name_First_Standard + 053;
569   Name_Unit        :      constant Name_Id := Name_First_Standard + 054;
570
571   --  Added by AMS vhdl.
572   Name_Domain_Type :      constant Name_Id := Name_First_Standard + 055;
573   Name_Quiescent_Domain : constant Name_Id := Name_First_Standard + 056;
574   Name_Time_Domain :      constant Name_Id := Name_First_Standard + 057;
575   Name_Frequency_Domain : constant Name_Id := Name_First_Standard + 058;
576   Name_Domain :           constant Name_Id := Name_First_Standard + 059;
577   Name_Frequency :        constant Name_Id := Name_First_Standard + 060;
578
579   Name_Last_Standard :    constant Name_Id := Name_Frequency;
580
581   Name_First_Charname : constant Name_Id := Name_Last_Standard + 1;
582   Name_Nul :            constant Name_Id := Name_First_Charname + 00;
583   Name_Soh :            constant Name_Id := Name_First_Charname + 01;
584   Name_Stx :            constant Name_Id := Name_First_Charname + 02;
585   Name_Etx :            constant Name_Id := Name_First_Charname + 03;
586   Name_Eot :            constant Name_Id := Name_First_Charname + 04;
587   Name_Enq :            constant Name_Id := Name_First_Charname + 05;
588   Name_Ack :            constant Name_Id := Name_First_Charname + 06;
589   Name_Bel :            constant Name_Id := Name_First_Charname + 07;
590   Name_Bs :             constant Name_Id := Name_First_Charname + 08;
591   Name_Ht :             constant Name_Id := Name_First_Charname + 09;
592   Name_Lf :             constant Name_Id := Name_First_Charname + 10;
593   Name_Vt :             constant Name_Id := Name_First_Charname + 11;
594   Name_Ff :             constant Name_Id := Name_First_Charname + 12;
595   Name_Cr :             constant Name_Id := Name_First_Charname + 13;
596   Name_So :             constant Name_Id := Name_First_Charname + 14;
597   Name_Si :             constant Name_Id := Name_First_Charname + 15;
598   Name_Dle :            constant Name_Id := Name_First_Charname + 16;
599   Name_Dc1 :            constant Name_Id := Name_First_Charname + 17;
600   Name_Dc2 :            constant Name_Id := Name_First_Charname + 18;
601   Name_Dc3 :            constant Name_Id := Name_First_Charname + 19;
602   Name_Dc4 :            constant Name_Id := Name_First_Charname + 20;
603   Name_Nak :            constant Name_Id := Name_First_Charname + 21;
604   Name_Syn :            constant Name_Id := Name_First_Charname + 22;
605   Name_Etb :            constant Name_Id := Name_First_Charname + 23;
606   Name_Can :            constant Name_Id := Name_First_Charname + 24;
607   Name_Em :             constant Name_Id := Name_First_Charname + 25;
608   Name_Sub :            constant Name_Id := Name_First_Charname + 26;
609   Name_Esc :            constant Name_Id := Name_First_Charname + 27;
610   Name_Fsp :            constant Name_Id := Name_First_Charname + 28;
611   Name_Gsp :            constant Name_Id := Name_First_Charname + 29;
612   Name_Rsp :            constant Name_Id := Name_First_Charname + 30;
613   Name_Usp :            constant Name_Id := Name_First_Charname + 31;
614
615   Name_Del :            constant Name_Id := Name_First_Charname + 32;
616
617   Name_C128 :           constant Name_Id := Name_First_Charname + 33;
618   Name_C129 :           constant Name_Id := Name_First_Charname + 34;
619   Name_C130 :           constant Name_Id := Name_First_Charname + 35;
620   Name_C131 :           constant Name_Id := Name_First_Charname + 36;
621   Name_C132 :           constant Name_Id := Name_First_Charname + 37;
622   Name_C133 :           constant Name_Id := Name_First_Charname + 38;
623   Name_C134 :           constant Name_Id := Name_First_Charname + 39;
624   Name_C135 :           constant Name_Id := Name_First_Charname + 40;
625   Name_C136 :           constant Name_Id := Name_First_Charname + 41;
626   Name_C137 :           constant Name_Id := Name_First_Charname + 42;
627   Name_C138 :           constant Name_Id := Name_First_Charname + 43;
628   Name_C139 :           constant Name_Id := Name_First_Charname + 44;
629   Name_C140 :           constant Name_Id := Name_First_Charname + 45;
630   Name_C141 :           constant Name_Id := Name_First_Charname + 46;
631   Name_C142 :           constant Name_Id := Name_First_Charname + 47;
632   Name_C143 :           constant Name_Id := Name_First_Charname + 48;
633   Name_C144 :           constant Name_Id := Name_First_Charname + 49;
634   Name_C145 :           constant Name_Id := Name_First_Charname + 50;
635   Name_C146 :           constant Name_Id := Name_First_Charname + 51;
636   Name_C147 :           constant Name_Id := Name_First_Charname + 52;
637   Name_C148 :           constant Name_Id := Name_First_Charname + 53;
638   Name_C149 :           constant Name_Id := Name_First_Charname + 54;
639   Name_C150 :           constant Name_Id := Name_First_Charname + 55;
640   Name_C151 :           constant Name_Id := Name_First_Charname + 56;
641   Name_C152 :           constant Name_Id := Name_First_Charname + 57;
642   Name_C153 :           constant Name_Id := Name_First_Charname + 58;
643   Name_C154 :           constant Name_Id := Name_First_Charname + 59;
644   Name_C155 :           constant Name_Id := Name_First_Charname + 60;
645   Name_C156 :           constant Name_Id := Name_First_Charname + 61;
646   Name_C157 :           constant Name_Id := Name_First_Charname + 62;
647   Name_C158 :           constant Name_Id := Name_First_Charname + 63;
648   Name_C159 :           constant Name_Id := Name_First_Charname + 64;
649   Name_Last_Charname :  constant Name_Id := Name_C159;
650
651   Name_First_Misc :            constant Name_Id := Name_Last_Charname + 1;
652   Name_Guard :                 constant Name_Id := Name_First_Misc + 000;
653   Name_Deallocate :            constant Name_Id := Name_First_Misc + 001;
654   Name_File_Open :             constant Name_Id := Name_First_Misc + 002;
655   Name_File_Close :            constant Name_Id := Name_First_Misc + 003;
656   Name_Read :                  constant Name_Id := Name_First_Misc + 004;
657   Name_Write :                 constant Name_Id := Name_First_Misc + 005;
658   Name_Flush :                 constant Name_Id := Name_First_Misc + 006;
659   Name_Endfile :               constant Name_Id := Name_First_Misc + 007;
660   Name_I :                     constant Name_Id := Name_First_Misc + 008;
661   Name_J :                     constant Name_Id := Name_First_Misc + 009;
662   Name_F :                     constant Name_Id := Name_First_Misc + 010;
663   Name_L :                     constant Name_Id := Name_First_Misc + 011;
664   Name_P :                     constant Name_Id := Name_First_Misc + 012;
665   Name_R :                     constant Name_Id := Name_First_Misc + 013;
666   Name_S :                     constant Name_Id := Name_First_Misc + 014;
667   Name_V :                     constant Name_Id := Name_First_Misc + 015;
668   Name_External_Name :         constant Name_Id := Name_First_Misc + 016;
669   Name_Open_Kind :             constant Name_Id := Name_First_Misc + 017;
670   Name_First :                 constant Name_Id := Name_First_Misc + 018;
671   Name_Last :                  constant Name_Id := Name_First_Misc + 019;
672   Name_Textio :                constant Name_Id := Name_First_Misc + 020;
673   Name_Work :                  constant Name_Id := Name_First_Misc + 021;
674   Name_Text :                  constant Name_Id := Name_First_Misc + 022;
675   Name_To_String :             constant Name_Id := Name_First_Misc + 023;
676   Name_Minimum :               constant Name_Id := Name_First_Misc + 024;
677   Name_Maximum :               constant Name_Id := Name_First_Misc + 025;
678   Name_Untruncated_Text_Read : constant Name_Id := Name_First_Misc + 026;
679   Name_Textio_Read_Real :      constant Name_Id := Name_First_Misc + 027;
680   Name_Textio_Write_Real :     constant Name_Id := Name_First_Misc + 028;
681   Name_Get_Resolution_Limit :  constant Name_Id := Name_First_Misc + 029;
682   Name_Control_Simulation :    constant Name_Id := Name_First_Misc + 030;
683   Name_Step :                  constant Name_Id := Name_First_Misc + 031;
684   Name_Index :                 constant Name_Id := Name_First_Misc + 032;
685   Name_Item :                  constant Name_Id := Name_First_Misc + 033;
686   Name_Uu_File_Uu :            constant Name_Id := Name_First_Misc + 034;
687   Name_Uu_Line_Uu :            constant Name_Id := Name_First_Misc + 035;
688   Name_Label_Applies_To :      constant Name_Id := Name_First_Misc + 036;
689   Name_Return_Port_Name :      constant Name_Id := Name_First_Misc + 037;
690   Name_Map_To_Operator :       constant Name_Id := Name_First_Misc + 038;
691   Name_Type_Function :         constant Name_Id := Name_First_Misc + 039;
692   Name_Built_In :              constant Name_Id := Name_First_Misc + 040;
693   Name_None :                  constant Name_Id := Name_First_Misc + 041;
694   Name_Last_Misc :             constant Name_Id := Name_None;
695
696   Name_First_Ieee_Pkg       : constant Name_Id := Name_Last_Misc + 1;
697   Name_Ieee                 : constant Name_Id := Name_First_Ieee_Pkg + 000;
698   Name_Std_Logic_1164       : constant Name_Id := Name_First_Ieee_Pkg + 001;
699   Name_VITAL_Timing         : constant Name_Id := Name_First_Ieee_Pkg + 002;
700   Name_Numeric_Std          : constant Name_Id := Name_First_Ieee_Pkg + 003;
701   Name_Numeric_Bit          : constant Name_Id := Name_First_Ieee_Pkg + 004;
702   Name_Numeric_Std_Unsigned : constant Name_Id := Name_First_Ieee_Pkg + 005;
703   Name_Std_Logic_Arith      : constant Name_Id := Name_First_Ieee_Pkg + 006;
704   Name_Std_Logic_Signed     : constant Name_Id := Name_First_Ieee_Pkg + 007;
705   Name_Std_Logic_Unsigned   : constant Name_Id := Name_First_Ieee_Pkg + 008;
706   Name_Std_Logic_Textio     : constant Name_Id := Name_First_Ieee_Pkg + 009;
707   Name_Std_Logic_Misc       : constant Name_Id := Name_First_Ieee_Pkg + 010;
708   Name_Math_Real            : constant Name_Id := Name_First_Ieee_Pkg + 011;
709   Name_Last_Ieee_Pkg        : constant Name_Id := Name_Math_Real;
710
711   Name_First_Ieee_Name    : constant Name_Id := Name_Last_Ieee_Pkg + 1;
712   Name_Std_Ulogic         : constant Name_Id := Name_First_Ieee_Name + 000;
713   Name_Std_Ulogic_Vector  : constant Name_Id := Name_First_Ieee_Name + 001;
714   Name_Std_Logic          : constant Name_Id := Name_First_Ieee_Name + 002;
715   Name_Std_Logic_Vector   : constant Name_Id := Name_First_Ieee_Name + 003;
716   Name_Rising_Edge        : constant Name_Id := Name_First_Ieee_Name + 004;
717   Name_Falling_Edge       : constant Name_Id := Name_First_Ieee_Name + 005;
718   Name_VITAL_Level0       : constant Name_Id := Name_First_Ieee_Name + 006;
719   Name_VITAL_Level1       : constant Name_Id := Name_First_Ieee_Name + 007;
720   Name_Unresolved_Unsigned : constant Name_Id := Name_First_Ieee_Name + 008;
721   Name_Unresolved_Signed  : constant Name_Id := Name_First_Ieee_Name + 009;
722   Name_To_Integer         : constant Name_Id := Name_First_Ieee_Name + 010;
723   Name_To_Unsigned        : constant Name_Id := Name_First_Ieee_Name + 011;
724   Name_To_Signed          : constant Name_Id := Name_First_Ieee_Name + 012;
725   Name_Resize             : constant Name_Id := Name_First_Ieee_Name + 013;
726   Name_Std_Match          : constant Name_Id := Name_First_Ieee_Name + 014;
727   Name_Shift_Left         : constant Name_Id := Name_First_Ieee_Name + 015;
728   Name_Shift_Right        : constant Name_Id := Name_First_Ieee_Name + 016;
729   Name_Rotate_Left        : constant Name_Id := Name_First_Ieee_Name + 017;
730   Name_Rotate_Right       : constant Name_Id := Name_First_Ieee_Name + 018;
731   Name_To_Bit             : constant Name_Id := Name_First_Ieee_Name + 019;
732   Name_To_Bitvector       : constant Name_Id := Name_First_Ieee_Name + 020;
733   Name_To_Stdulogic       : constant Name_Id := Name_First_Ieee_Name + 021;
734   Name_To_Stdlogicvector  : constant Name_Id := Name_First_Ieee_Name + 022;
735   Name_To_Stdulogicvector : constant Name_Id := Name_First_Ieee_Name + 023;
736   Name_Is_X               : constant Name_Id := Name_First_Ieee_Name + 024;
737   Name_To_01              : constant Name_Id := Name_First_Ieee_Name + 025;
738   Name_To_X01             : constant Name_Id := Name_First_Ieee_Name + 026;
739   Name_To_X01Z            : constant Name_Id := Name_First_Ieee_Name + 027;
740   Name_To_UX01            : constant Name_Id := Name_First_Ieee_Name + 028;
741   Name_Conv_Signed        : constant Name_Id := Name_First_Ieee_Name + 029;
742   Name_Conv_Unsigned      : constant Name_Id := Name_First_Ieee_Name + 030;
743   Name_Conv_Integer       : constant Name_Id := Name_First_Ieee_Name + 031;
744   Name_Conv_Std_Logic_Vector : constant Name_Id := Name_First_Ieee_Name + 032;
745   Name_And_Reduce         : constant Name_Id := Name_First_Ieee_Name + 033;
746   Name_Nand_Reduce        : constant Name_Id := Name_First_Ieee_Name + 034;
747   Name_Or_Reduce          : constant Name_Id := Name_First_Ieee_Name + 035;
748   Name_Nor_Reduce         : constant Name_Id := Name_First_Ieee_Name + 036;
749   Name_Xor_Reduce         : constant Name_Id := Name_First_Ieee_Name + 037;
750   Name_Xnor_Reduce        : constant Name_Id := Name_First_Ieee_Name + 038;
751   Name_Ceil               : constant Name_Id := Name_First_Ieee_Name + 039;
752   Name_Floor              : constant Name_Id := Name_First_Ieee_Name + 040;
753   Name_Round              : constant Name_Id := Name_First_Ieee_Name + 041;
754   Name_Log2               : constant Name_Id := Name_First_Ieee_Name + 042;
755   Name_Sin                : constant Name_Id := Name_First_Ieee_Name + 043;
756   Name_Cos                : constant Name_Id := Name_First_Ieee_Name + 044;
757   Name_Shl                : constant Name_Id := Name_First_Ieee_Name + 045;
758   Name_Shr                : constant Name_Id := Name_First_Ieee_Name + 046;
759   Name_Ext                : constant Name_Id := Name_First_Ieee_Name + 047;
760   Name_Sxt                : constant Name_Id := Name_First_Ieee_Name + 048;
761   Name_Find_Leftmost      : constant Name_Id := Name_First_Ieee_Name + 049;
762   Name_Find_Rightmost     : constant Name_Id := Name_First_Ieee_Name + 050;
763   Name_Last_Ieee_Name     : constant Name_Id := Name_Find_Rightmost;
764
765   Name_First_Synthesis    : constant Name_Id := Name_Last_Ieee_Name + 1;
766   Name_Allconst           : constant Name_Id := Name_First_Synthesis + 000;
767   Name_Allseq             : constant Name_Id := Name_First_Synthesis + 001;
768   Name_Anyconst           : constant Name_Id := Name_First_Synthesis + 002;
769   Name_Anyseq             : constant Name_Id := Name_First_Synthesis + 003;
770   Name_Gclk               : constant Name_Id := Name_First_Synthesis + 004;
771   Name_Last_Synthesis     : constant Name_Id := Name_Gclk;
772
773   --  Verilog Directives.
774   Name_First_Directive : constant Name_Id := Name_Last_Synthesis + 1;
775   Name_Define :          constant Name_Id := Name_First_Directive + 00;
776   Name_Endif :           constant Name_Id := Name_First_Directive + 01;
777   Name_Ifdef :           constant Name_Id := Name_First_Directive + 02;
778   Name_Ifndef :          constant Name_Id := Name_First_Directive + 03;
779   Name_Include :         constant Name_Id := Name_First_Directive + 04;
780   Name_Timescale :       constant Name_Id := Name_First_Directive + 05;
781   Name_Undef :           constant Name_Id := Name_First_Directive + 06;
782   Name_Protect :         constant Name_Id := Name_First_Directive + 07;
783   Name_Begin_Protected : constant Name_Id := Name_First_Directive + 08;
784   Name_End_Protected :   constant Name_Id := Name_First_Directive + 09;
785   Name_Key_Block :       constant Name_Id := Name_First_Directive + 10;
786   Name_Data_Block :      constant Name_Id := Name_First_Directive + 11;
787   Name_Line :            constant Name_Id := Name_First_Directive + 12;
788   Name_Celldefine :      constant Name_Id := Name_First_Directive + 13;
789   Name_Endcelldefine :   constant Name_Id := Name_First_Directive + 14;
790   Name_Default_Nettype : constant Name_Id := Name_First_Directive + 15;
791   Name_Resetall :        constant Name_Id := Name_First_Directive + 16;
792   Name_Last_Directive :  constant Name_Id := Name_Resetall;
793
794   --  Verilog system tasks/functions.
795   Name_First_Systask :  constant Name_Id := Name_Last_Directive + 1;
796   Name_Bits :           constant Name_Id := Name_First_Systask + 00;
797   Name_D_Root :         constant Name_Id := Name_First_Systask + 01;
798   Name_D_Unit :         constant Name_Id := Name_First_Systask + 02;
799   Name_Last_Systask :   constant Name_Id := Name_D_Unit;
800
801   --  Verilog methods
802   Name_First_SV_Method :   constant Name_Id := Name_Last_Systask + 1;
803   Name_Size :              constant Name_Id := Name_First_SV_Method + 0;
804   Name_Insert :            constant Name_Id := Name_First_SV_Method + 1;
805   Name_Delete :            constant Name_Id := Name_First_SV_Method + 2;
806   Name_Pop_Front :         constant Name_Id := Name_First_SV_Method + 3;
807   Name_Pop_Back :          constant Name_Id := Name_First_SV_Method + 4;
808   Name_Push_Front :        constant Name_Id := Name_First_SV_Method + 5;
809   Name_Push_Back :         constant Name_Id := Name_First_SV_Method + 6;
810   Name_Name :              constant Name_Id := Name_First_SV_Method + 7;
811   Name_Len :               constant Name_Id := Name_First_SV_Method + 8;
812   Name_Substr :            constant Name_Id := Name_First_SV_Method + 9;
813   Name_Exists :            constant Name_Id := Name_First_SV_Method + 10;
814   Name_Atoi :              constant Name_Id := Name_First_SV_Method + 11;
815   Name_Itoa :              constant Name_Id := Name_First_SV_Method + 12;
816   Name_Find :              constant Name_Id := Name_First_SV_Method + 13;
817   Name_Find_Index :        constant Name_Id := Name_First_SV_Method + 14;
818   Name_Find_First :        constant Name_Id := Name_First_SV_Method + 15;
819   Name_Find_First_Index :  constant Name_Id := Name_First_SV_Method + 16;
820   Name_Find_Last :         constant Name_Id := Name_First_SV_Method + 17;
821   Name_Find_Last_Index :   constant Name_Id := Name_First_SV_Method + 18;
822   Name_Num :               constant Name_Id := Name_First_SV_Method + 19;
823   Name_Randomize :         constant Name_Id := Name_First_SV_Method + 20;
824   Name_Pre_Randomize :     constant Name_Id := Name_First_SV_Method + 21;
825   Name_Post_Randomize :    constant Name_Id := Name_First_SV_Method + 22;
826   Name_Srandom :           constant Name_Id := Name_First_SV_Method + 23;
827   Name_Get_Randstate :     constant Name_Id := Name_First_SV_Method + 24;
828   Name_Set_Randstate :     constant Name_Id := Name_First_SV_Method + 25;
829   Name_Seed :              constant Name_Id := Name_First_SV_Method + 26;
830   Name_State :             constant Name_Id := Name_First_SV_Method + 27;
831   Name_Last_SV_Method :    constant Name_Id := Name_State;
832
833   --  BSV names
834   Name_First_BSV :         constant Name_Id := Name_Last_SV_Method + 1;
835   Name_uAction :           constant Name_Id := Name_First_BSV + 0;
836   Name_uActionValue :      constant Name_Id := Name_First_BSV + 1;
837   Name_BVI :               constant Name_Id := Name_First_BSV + 2;
838   Name_uC :                constant Name_Id := Name_First_BSV + 3;
839   Name_uCF :               constant Name_Id := Name_First_BSV + 4;
840   Name_uE :                constant Name_Id := Name_First_BSV + 5;
841   Name_uSB :               constant Name_Id := Name_First_BSV + 6;
842   Name_uSBR :              constant Name_Id := Name_First_BSV + 7;
843   Name_Action :            constant Name_Id := Name_First_BSV + 8;
844   Name_Endaction :         constant Name_Id := Name_First_BSV + 9;
845   Name_Actionvalue :       constant Name_Id := Name_First_BSV + 10;
846   Name_Endactionvalue :    constant Name_Id := Name_First_BSV + 11;
847   Name_Ancestor :          constant Name_Id := Name_First_BSV + 12;
848   --   begin
849   --   bit
850   --   case
851   --   endcase
852   Name_Clocked_By :        constant Name_Id := Name_First_BSV + 13;
853   --   continue
854   --   default
855   Name_Default_Clock :     constant Name_Id := Name_First_BSV + 14;
856   Name_Default_Reset :     constant Name_Id := Name_First_BSV + 15;
857   Name_Dependencies  :     constant Name_Id := Name_First_BSV + 16;
858   Name_Deriving :          constant Name_Id := Name_First_BSV + 17;
859   Name_Determines :        constant Name_Id := Name_First_BSV + 18;
860   --   e
861   --   else
862   Name_Enable :            constant Name_Id := Name_First_BSV + 19;
863   --   end
864   --   enum
865   --   export
866   --   for
867   --   function
868   --   endfunction
869   --   if
870   Name_Ifc_Inout :         constant Name_Id := Name_First_BSV + 20;
871   --   import
872   --   inout
873   Name_Input_Clock :       constant Name_Id := Name_First_BSV + 21;
874   Name_Input_Reset :       constant Name_Id := Name_First_BSV + 22;
875   Name_Instance :          constant Name_Id := Name_First_BSV + 23;
876   Name_Endinstance :       constant Name_Id := Name_First_BSV + 24;
877   --   interface
878   --   endinterface
879   Name_Let :               constant Name_Id := Name_First_BSV + 25;
880   Name_Match :             constant Name_Id := Name_First_BSV + 26;
881   --   matches
882   Name_Method :            constant Name_Id := Name_First_BSV + 27;
883   Name_Endmethod :         constant Name_Id := Name_First_BSV + 28;
884   --   module
885   --   endmodule
886   Name_Numeric :           constant Name_Id := Name_First_BSV + 29;
887   Name_Output_Clock :      constant Name_Id := Name_First_BSV + 30;
888   Name_Output_Reset :      constant Name_Id := Name_First_BSV + 31;
889   --   package
890   --   endpackage
891   --   parameter
892   Name_Par :               constant Name_Id := Name_First_BSV + 32;
893   Name_Endpar :            constant Name_Id := Name_First_BSV + 33;
894   Name_Path :              constant Name_Id := Name_First_BSV + 34;
895   --   port
896   Name_Provisos :          constant Name_Id := Name_First_BSV + 35;
897   Name_Ready :             constant Name_Id := Name_First_BSV + 36;
898   Name_Reset_By :          constant Name_Id := Name_First_BSV + 37;
899   --   return
900   Name_Rule :              constant Name_Id := Name_First_BSV + 38;
901   Name_Endrule :           constant Name_Id := Name_First_BSV + 39;
902   Name_Rules :             constant Name_Id := Name_First_BSV + 40;
903   Name_Endrules :          constant Name_Id := Name_First_BSV + 41;
904   Name_Same_Family :       constant Name_Id := Name_First_BSV + 42;
905   Name_Schedule :          constant Name_Id := Name_First_BSV + 43;
906   Name_Seq :               constant Name_Id := Name_First_BSV + 44;
907   Name_Endseq :            constant Name_Id := Name_First_BSV + 45;
908   --   struct
909   --   tagged
910   --   type
911   Name_Typeclass :         constant Name_Id := Name_First_BSV + 46;
912   Name_Endtypeclass :      constant Name_Id := Name_First_BSV + 47;
913   --   typedef
914   --   union
915   Name_Valueof :           constant Name_Id := Name_First_BSV + 48;
916   Name_uValueof :          constant Name_Id := Name_First_BSV + 49;
917   --   void
918   --   while
919   Name_Last_BSV :          constant Name_Id := Name_First_BSV + 49;
920
921   --  VHDL special comments
922   Name_First_Comment :  constant Name_Id := Name_Last_BSV + 1;
923   Name_Psl :            constant Name_Id := Name_First_Comment + 0;
924   Name_Pragma :         constant Name_Id := Name_First_Comment + 1;
925   Name_Synthesis :      constant Name_Id := Name_First_Comment + 2;
926   Name_Synopsys :       constant Name_Id := Name_First_Comment + 3;
927   Name_Translate_Off :  constant Name_Id := Name_First_Comment + 4;
928   Name_Translate_On :   constant Name_Id := Name_First_Comment + 5;
929   Name_Translate :      constant Name_Id := Name_First_Comment + 6;
930   Name_Synthesis_Off :  constant Name_Id := Name_First_Comment + 7;
931   Name_Synthesis_On :   constant Name_Id := Name_First_Comment + 8;
932   Name_Off :            constant Name_Id := Name_First_Comment + 9;
933   Name_Last_Comment :   constant Name_Id := Name_Off;
934
935   --  PSL words.
936   Name_First_PSL :          constant Name_Id := Name_Last_Comment + 1;
937   Name_A :                  constant Name_Id := Name_First_PSL + 00;
938   Name_Af :                 constant Name_Id := Name_First_PSL + 01;
939   Name_Ag :                 constant Name_Id := Name_First_PSL + 02;
940   Name_Ax :                 constant Name_Id := Name_First_PSL + 03;
941   Name_Abort :              constant Name_Id := Name_First_PSL + 04;
942   --  Name_Always
943   --  Name_And
944   --  Name_Assume
945   Name_Assume_Guarantee :   constant Name_Id := Name_First_PSL + 05;
946   Name_Before :             constant Name_Id := Name_First_PSL + 06;
947   --  Name_Boolean
948   Name_Clock :              constant Name_Id := Name_First_PSL + 07;
949   --  Name_Const
950   --  Name_Cover
951   --  Name_Default
952   Name_E :                  constant Name_Id := Name_First_PSL + 08;
953   Name_Ef :                 constant Name_Id := Name_First_PSL + 09;
954   Name_Eg :                 constant Name_Id := Name_First_PSL + 10;
955   Name_Ex :                 constant Name_Id := Name_First_PSL + 11;
956   Name_Endpoint :           constant Name_Id := Name_First_PSL + 12;
957   Name_Eventually :         constant Name_Id := Name_First_PSL + 13;
958   Name_Fairness :           constant Name_Id := Name_First_PSL + 14;
959   Name_Fell :               constant Name_Id := Name_First_PSL + 15;
960   Name_Forall :             constant Name_Id := Name_First_PSL + 16;
961   Name_G :                  constant Name_Id := Name_First_PSL + 17;
962   --  Name_In
963   Name_Inf :                constant Name_Id := Name_First_PSL + 18;
964   Name_Inherit :            constant Name_Id := Name_First_PSL + 19;
965   --  Name_Is
966   Name_Never :              constant Name_Id := Name_First_PSL + 20;
967   --  Name_Next
968   Name_Next_A :             constant Name_Id := Name_First_PSL + 21;
969   Name_Next_E :             constant Name_Id := Name_First_PSL + 22;
970   Name_Next_Event :         constant Name_Id := Name_First_PSL + 23;
971   Name_Next_Event_A :       constant Name_Id := Name_First_PSL + 24;
972   Name_Next_Event_E :       constant Name_Id := Name_First_PSL + 25;
973   --  Name_Not
974   --  Name_Or
975   --  Name_Property
976   Name_Prev :               constant Name_Id := Name_First_PSL + 26;
977   --  Name_Restrict
978   --  Name_Restrict_Guarantee
979   Name_Rose :               constant Name_Id := Name_First_PSL + 27;
980   --   sequence
981   Name_Strong :             constant Name_Id := Name_First_PSL + 28;
982   --   union
983   --   until
984   Name_W :                  constant Name_Id := Name_First_PSL + 29;
985   Name_Whilenot :           constant Name_Id := Name_First_PSL + 30;
986   Name_Within :             constant Name_Id := Name_First_PSL + 31;
987   Name_X :                  constant Name_Id := Name_First_PSL + 32;
988   Name_Last_PSL :           constant Name_Id := Name_X;
989
990   subtype Name_Id_PSL_Keywords is
991     Name_Id range Name_First_PSL .. Name_Last_PSL;
992
993   Name_First_Edif :         constant Name_Id := Name_Last_PSL + 1;
994   Name_Edif :               constant Name_Id := Name_First_Edif +  0;
995   Name_Edifversion :        constant Name_Id := Name_First_Edif +  1;
996   Name_Ediflevel :          constant Name_Id := Name_First_Edif +  2;
997   Name_Keywordmap :         constant Name_Id := Name_First_Edif +  3;
998   Name_Status :             constant Name_Id := Name_First_Edif +  4;
999   Name_Written :            constant Name_Id := Name_First_Edif +  5;
1000   Name_External :           constant Name_Id := Name_First_Edif +  6;
1001   Name_Comment :            constant Name_Id := Name_First_Edif +  7;
1002   Name_Technology :         constant Name_Id := Name_First_Edif +  8;
1003   Name_Cell :               constant Name_Id := Name_First_Edif +  9;
1004   Name_Celltype :           constant Name_Id := Name_First_Edif + 10;
1005   Name_View :               constant Name_Id := Name_First_Edif + 11;
1006   Name_Viewtype :           constant Name_Id := Name_First_Edif + 12;
1007   Name_Direction :          constant Name_Id := Name_First_Edif + 13;
1008   Name_Contents :           constant Name_Id := Name_First_Edif + 14;
1009   Name_Net :                constant Name_Id := Name_First_Edif + 15;
1010   Name_Viewref :            constant Name_Id := Name_First_Edif + 16;
1011   Name_Cellref :            constant Name_Id := Name_First_Edif + 17;
1012   Name_Libraryref :         constant Name_Id := Name_First_Edif + 18;
1013   Name_Portinstance :       constant Name_Id := Name_First_Edif + 19;
1014   Name_Joined :             constant Name_Id := Name_First_Edif + 20;
1015   Name_Portref :            constant Name_Id := Name_First_Edif + 21;
1016   Name_Instanceref :        constant Name_Id := Name_First_Edif + 22;
1017   Name_Design :             constant Name_Id := Name_First_Edif + 23;
1018   Name_Designator :         constant Name_Id := Name_First_Edif + 24;
1019   Name_Owner :              constant Name_Id := Name_First_Edif + 25;
1020   Name_Member :             constant Name_Id := Name_First_Edif + 26;
1021   Name_Number :             constant Name_Id := Name_First_Edif + 27;
1022   Name_Rename :             constant Name_Id := Name_First_Edif + 28;
1023   Name_Userdata :           constant Name_Id := Name_First_Edif + 29;
1024   Name_Last_Edif :          constant Name_Id := Name_Userdata;
1025
1026   -- Initialize the name table with the values defined here.
1027   procedure Std_Names_Initialize;
1028end Std_Names;
1029