aboutsummaryrefslogtreecommitdiffstats
path: root/std_names.adb
blob: 51aa22472e53de553c4f5793cd0b0604fad8dcc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
--  Well known name table entries.
--  Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold
--
--  GHDL is free software; you can redistribute it and/or modify it under
--  the terms of the GNU General Public License as published by the Free
--  Software Foundation; either version 2, or (at your option) any later
--  version.
--
--  GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
--  WARRANTY; without even the implied warranty of MERCHANTABILITY or
--  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
--  for more details.
--
--  You should have received a copy of the GNU General Public License
--  along with GCC; see the file COPYING.  If not, write to the Free
--  Software Foundation, 59 Temple Place - Suite 330, Boston, MA
--  02111-1307, USA.
with Name_Table;
with Tokens; use Tokens;

package body Std_Names is
   procedure Std_Names_Initialize is
      function GI (S : String) return Name_Id
         renames Name_Table.Get_Identifier;

--       function GI (S : String) return Name_Id is
--       begin
--          Ada.Text_IO.Put_Line ("add " & S);
--          return Name_Table.Get_Identifier (S);
--       end GI;

   begin
      Name_Table.Initialize;

      -- Create keywords.
      for I in Tok_Mod .. Tok_Protected loop
         if GI (Image (I)) /=
           Name_First_Keyword +
           Token_Type'Pos (I) - Token_Type'Pos (Tok_First_Keyword)
         then
            raise Program_Error;
         end if;
      end loop;

      -- Create operators.
      if GI ("=") /= Name_Op_Equality
        or GI ("/=") /= Name_Op_Inequality
        or GI ("<") /= Name_Op_Less
        or GI ("<=") /= Name_Op_Less_Equal
        or GI (">") /= Name_Op_Greater
        or GI (">=") /= Name_Op_Greater_Equal
        or GI ("+") /= Name_Op_Plus
        or GI ("-") /= Name_Op_Minus
        or GI ("*") /= Name_Op_Mul
        or GI ("/") /= Name_Op_Div
        or GI ("**") /= Name_Op_Exp
        or GI ("&") /= Name_Op_Concatenation
      then
         raise Program_Error;
      end if;

      -- Create Attributes.
      if   GI ("base") /= Name_Base
        or GI ("left") /= Name_Left
        or GI ("right") /= Name_Right
        or GI ("high") /= Name_High
        or GI ("low") /= Name_Low
        or GI ("pos") /= Name_Pos
        or GI ("val") /= Name_Val
        or GI ("succ") /= Name_Succ
        or GI ("pred") /= Name_Pred
        or GI ("leftof") /= Name_Leftof
        or GI ("rightof") /= Name_Rightof
        or GI ("reverse_range") /= Name_Reverse_Range
        or GI ("length") /= Name_Length
        or GI ("delayed") /= Name_Delayed
        or GI ("stable") /= Name_Stable
        or GI ("quiet") /= Name_Quiet
        or GI ("transaction") /= Name_Transaction
        or GI ("event") /= Name_Event
        or GI ("active") /= Name_Active
        or GI ("last_event") /= Name_Last_Event
        or GI ("last_active") /= Name_Last_Active
        or GI ("last_value") /= Name_Last_Value

        or GI ("behavior") /= Name_Behavior
        or GI ("structure") /= Name_Structure

        or GI ("ascending") /= Name_Ascending
        or GI ("image") /= Name_Image
        or GI ("value") /= Name_Value
        or GI ("driving") /= Name_Driving
        or GI ("driving_value") /= Name_Driving_Value
        or GI ("simple_name") /= Name_Simple_Name
        or GI ("instance_name") /= Name_Instance_Name
        or GI ("path_name") /= Name_Path_Name
      then
         raise Program_Error;
      end if;

      --  Create standard.
      if GI ("std") /= Name_Std
        or GI ("standard") /= Name_Standard
        or GI ("boolean") /= Name_Boolean
        or GI ("false") /= Name_False
        or GI ("true") /= Name_True
        or GI ("bit") /= Name_Bit
        or GI ("character") /= Name_Character
        or GI ("severity_level") /= Name_Severity_Level
        or GI ("note") /= Name_Note
        or GI ("warning") /= Name_Warning
        or GI ("error") /= Name_Error
        or GI ("failure") /= Name_Failure
        or GI ("UNIVERSAL_INTEGER") /= Name_Universal_Integer
        or GI ("UNIVERSAL_REAL") /= Name_Universal_Real
        or GI ("CONVERTIBLE_INTEGER") /= Name_Convertible_Integer
        or GI ("CONVERTIBLE_REAL") /= Name_Convertible_Real
        or GI ("integer") /= Name_Integer
        or GI ("real") /= Name_Real
        or GI ("time") /= Name_Time
        or GI ("fs") /= Name_Fs
        or GI ("ps") /= Name_Ps
        or GI ("ns") /= Name_Ns
        or GI ("us") /= Name_Us
        or GI ("ms") /= Name_Ms
        or GI ("sec") /= Name_Sec
        or GI ("min") /= Name_Min
        or GI ("hr") /= Name_Hr
        or GI ("delay_length") /= Name_Delay_Length
        or GI ("now") /= Name_Now
        or GI ("natural") /= Name_Natural
        or GI ("positive") /= Name_Positive
        or GI ("string") /= Name_String
        or GI ("bit_vector") /= Name_Bit_Vector
        or GI ("file_open_kind") /= Name_File_Open_Kind
        or GI ("read_mode") /= Name_Read_Mode
        or GI ("write_mode") /= Name_Write_Mode
        or GI ("append_mode") /= Name_Append_Mode
        or GI ("file_open_status") /= Name_File_Open_Status
        or GI ("open_ok") /= Name_Open_Ok
        or GI ("status_error") /= Name_Status_Error
        or GI ("name_error") /= Name_Name_Error
        or GI ("mode_error") /= Name_Mode_Error
        or GI ("foreign") /= Name_Foreign
      then
         raise Program_Error;
      end if;

      if GI ("nul") /= Name_Nul
        or GI ("soh") /= Name_Soh
        or GI ("stx") /= Name_Stx
        or GI ("etx") /= Name_Etx
        or GI ("eot") /= Name_Eot
        or GI ("enq") /= Name_Enq
        or GI ("ack") /= Name_Ack
        or GI ("bel") /= Name_Bel
        or GI ("bs") /= Name_Bs
        or GI ("ht") /= Name_Ht
        or GI ("lf") /= Name_Lf
        or GI ("vt") /= Name_Vt
        or GI ("ff") /= Name_Ff
        or GI ("cr") /= Name_Cr
        or GI ("so") /= Name_So
        or GI ("si") /= Name_Si
        or GI ("dle") /= Name_Dle
        or GI ("dc1") /= Name_Dc1
        or GI ("dc2") /= Name_Dc2
        or GI ("dc3") /= Name_Dc3
        or GI ("dc4") /= Name_Dc4
        or GI ("nak") /= Name_Nak
        or GI ("syn") /= Name_Syn
        or GI ("etb") /= Name_Etb
        or GI ("can") /= Name_Can
        or GI ("em") /= Name_Em
        or GI ("sub") /= Name_Sub
        or GI ("esc") /= Name_Esc
        or GI ("fsp") /= Name_Fsp
        or GI ("gsp") /= Name_Gsp
        or GI ("rsp") /= Name_Rsp
        or GI ("usp") /= Name_Usp
        or GI ("del") /= Name_Del
      then
         raise Program_Error;
      end if;

      if GI ("c128") /= Name_C128
        or GI ("c129") /= Name_C129
        or GI ("c130") /= Name_C130
        or GI ("c131") /= Name_C131
        or GI ("c132") /= Name_C132
        or GI ("c133") /= Name_C133
        or GI ("c134") /= Name_C134
        or GI ("c135") /= Name_C135
        or GI ("c136") /= Name_C136
        or GI ("c137") /= Name_C137
        or GI ("c138") /= Name_C138
        or GI ("c139") /= Name_C139
        or GI ("c140") /= Name_C140
        or GI ("c141") /= Name_C141
        or GI ("c142") /= Name_C142
        or GI ("c143") /= Name_C143
        or GI ("c144") /= Name_C144
        or GI ("c145") /= Name_C145
        or GI ("c146") /= Name_C146
        or GI ("c147") /= Name_C147
        or GI ("c148") /= Name_C148
        or GI ("c149") /= Name_C149
        or GI ("c150") /= Name_C150
        or GI ("c151") /= Name_C151
        or GI ("c152") /= Name_C152
        or GI ("c153") /= Name_C153
        or GI ("c154") /= Name_C154
        or GI ("c155") /= Name_C155
        or GI ("c156") /= Name_C156
        or GI ("c157") /= Name_C157
        or GI ("c158") /= Name_C158
        or GI ("c159") /= Name_C159
      then
         raise Program_Error;
      end if;

      -- Create misc.
      if GI ("guard") /= Name_Guard
        or GI ("deallocate") /= Name_Deallocate
        or GI ("file_open") /= Name_File_Open
        or GI ("file_close") /= Name_File_Close
        or GI ("read") /= Name_Read
        or GI ("write") /= Name_Write
        or GI ("endfile") /= Name_Endfile
        or GI ("p") /= Name_P
        or GI ("f") /= Name_F
        or GI ("external_name") /= Name_External_Name
        or GI ("open_kind") /= Name_Open_Kind
        or GI ("status") /= Name_Status
        or GI ("first") /= Name_First
        or GI ("last") /= Name_Last
        or GI ("textio") /= Name_Textio
        or GI ("work") /= Name_Work
        or GI ("text") /= Name_Text
        or GI ("untruncated_text_read") /= Name_Untruncated_Text_Read
      then
         raise Program_Error;
      end if;

      if GI ("ieee") /= Name_Ieee
        or GI ("std_logic_1164") /= Name_Std_Logic_1164
        or GI ("std_ulogic") /= Name_Std_Ulogic
        or GI ("std_ulogic_vector") /= Name_Std_Ulogic_Vector
        or GI ("std_logic") /= Name_Std_Logic
        or GI ("std_logic_vector") /= Name_Std_Logic_Vector
        or GI ("rising_edge") /= Name_Rising_Edge
        or GI ("falling_edge") /= Name_Falling_Edge
        or GI ("vital_timing") /= Name_VITAL_Timing
        or GI ("vital_level0") /= Name_VITAL_Level0
        or GI ("vital_level1") /= Name_VITAL_Level1
      then
         raise Program_Error;
      end if;

      if GI ("always") /= Name_Always
        or GI ("assign") /= Name_Assign
        or GI ("buf") /= Name_Buf
        or GI ("bufif0") /= Name_Bufif0
        or GI ("bufif1") /= Name_Bufif1
        or GI ("casex") /= Name_Casex
        or GI ("casez") /= Name_Casez
        or GI ("cmos") /= Name_Cmos
        or GI ("deassign") /= Name_Deassign
        or GI ("default") /= Name_Default
        or GI ("defparam") /= Name_Defparam
        or GI ("disable") /= Name_Disable
        or GI ("endcase") /= Name_Endcase
        or GI ("endfunction") /= Name_Endfunction
        or GI ("endmodule") /= Name_Endmodule
        or GI ("endprimitive") /= Name_Endprimitive
        or GI ("endspecify") /= Name_Endspecify
        or GI ("endtable") /= Name_Endtable
        or GI ("endtask") /= Name_Endtask
        or GI ("forever") /= Name_Forever
        or GI ("fork") /= Name_Fork
        or GI ("highz0") /= Name_Highz0
        or GI ("highz1") /= Name_Highz1
        or GI ("initial") /= Name_Initial
        or GI ("input") /= Name_Input
        or GI ("join") /= Name_Join
        or GI ("large") /= Name_Large
        or GI ("medium") /= Name_Medium
        or GI ("module") /= Name_Module
        or GI ("negedge") /= Name_Negedge
        or GI ("nmos") /= Name_Nmos
        or GI ("notif0") /= Name_Notif0
        or GI ("notif1") /= Name_Notif1
        or GI ("output") /= Name_Output
        or GI ("parameter") /= Name_Parameter
        or GI ("pmos") /= Name_Pmos
        or GI ("posedge") /= Name_Posedge
        or GI ("primitive") /= Name_Primitive
        or GI ("pull0") /= Name_Pull0
        or GI ("pull1") /= Name_Pull1
        or GI ("pulldown") /= Name_Pulldown
        or GI ("pullup") /= Name_Pullup
        or GI ("reg") /= Name_Reg
        or GI ("repeat") /= Name_Repeat
        or GI ("rcmos") /= Name_Rcmos
        or GI ("rnmos") /= Name_Rnmos
        or GI ("rpmos") /= Name_Rpmos
        or GI ("rtran") /= Name_Rtran
        or GI ("rtranif0") /= Name_Rtranif0
        or GI ("rtranif1") /= Name_Rtranif1
        or GI ("small") /= Name_Small
        or GI ("specify") /= Name_Specify
        or GI ("specparam") /= Name_Specparam
        or GI ("strong0") /= Name_Strong0
        or GI ("strong1") /= Name_Strong1
        or GI ("supply0") /= Name_Supply0
        or GI ("supply1") /= Name_Supply1
        or GI ("table") /= Name_Tablex
        or GI ("task") /= Name_Task
        or GI ("tran") /= Name_Tran
        or GI ("tranif0") /= Name_Tranif0
        or GI ("tranif1") /= Name_Tranif1
        or GI ("tri") /= Name_Tri
        or GI ("tri0") /= Name_Tri0
        or GI ("tri1") /= Name_Tri1
        or GI ("trireg") /= Name_Trireg
        or GI ("wand") /= Name_Wand
        or GI ("weak0") /= Name_Weak0
        or GI ("weak1") /= Name_Weak1
        or GI ("wire") /= Name_Wire
        or GI ("wor") /= Name_Wor
      then
         raise Program_Error;
      end if;

      if GI ("define") /= Name_Define
        or GI ("endif") /= Name_Endif
        or GI ("ifdef") /= Name_Ifdef
        or GI ("include") /= Name_Include
        or GI ("timescale") /= Name_Timescale
        or GI ("undef") /= Name_Undef
      then
         raise Program_Error;
      end if;

      if GI ("display") /= Name_Display
        or GI ("finish") /= Name_Finish
      then
         raise Program_Error;
      end if;

   end Std_Names_Initialize;
end Std_Names;