Branch data Line data Source code
1 : : /* do not edit automatically generated by mc from M2Reserved. */
2 : : /* M2Reserved.mod determines is a token is a reserved word.
3 : :
4 : : Copyright (C) 2001-2024 Free Software Foundation, Inc.
5 : : Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 : :
7 : : This file is part of GNU Modula-2.
8 : :
9 : : GNU Modula-2 is free software; you can redistribute it and/or modify
10 : : it under the terms of the GNU General Public License as published by
11 : : the Free Software Foundation; either version 3, or (at your option)
12 : : any later version.
13 : :
14 : : GNU Modula-2 is distributed in the hope that it will be useful, but
15 : : WITHOUT ANY WARRANTY; without even the implied warranty of
16 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 : : General Public License for more details.
18 : :
19 : : You should have received a copy of the GNU General Public License
20 : : along with GNU Modula-2; see the file COPYING3. If not see
21 : : <http://www.gnu.org/licenses/>. */
22 : :
23 : : #include "config.h"
24 : : #include "system.h"
25 : : #include <stdbool.h>
26 : : # if !defined (PROC_D)
27 : : # define PROC_D
28 : : typedef void (*PROC_t) (void);
29 : : typedef struct { PROC_t proc; } PROC;
30 : : # endif
31 : :
32 : : # if !defined (TRUE)
33 : : # define TRUE (1==1)
34 : : # endif
35 : :
36 : : # if !defined (FALSE)
37 : : # define FALSE (1==0)
38 : : # endif
39 : :
40 : : #define _M2Reserved_H
41 : : #define _M2Reserved_C
42 : :
43 : : # include "GSymbolKey.h"
44 : : # include "GNameKey.h"
45 : : # include "GASCII.h"
46 : :
47 : : NameKey_Name M2Reserved_RDirectiveTok;
48 : : NameKey_Name M2Reserved_LDirectiveTok;
49 : : NameKey_Name M2Reserved_InlineTok;
50 : : NameKey_Name M2Reserved_BuiltinTok;
51 : : NameKey_Name M2Reserved_AttributeTok;
52 : : NameKey_Name M2Reserved_FileTok;
53 : : NameKey_Name M2Reserved_LineTok;
54 : : NameKey_Name M2Reserved_DateTok;
55 : : NameKey_Name M2Reserved_VolatileTok;
56 : : NameKey_Name M2Reserved_AsmTok;
57 : : NameKey_Name M2Reserved_EofTok;
58 : : NameKey_Name M2Reserved_WithTok;
59 : : NameKey_Name M2Reserved_WhileTok;
60 : : NameKey_Name M2Reserved_VarTok;
61 : : NameKey_Name M2Reserved_UntilTok;
62 : : NameKey_Name M2Reserved_TypeTok;
63 : : NameKey_Name M2Reserved_ToTok;
64 : : NameKey_Name M2Reserved_ThenTok;
65 : : NameKey_Name M2Reserved_SetTok;
66 : : NameKey_Name M2Reserved_ReturnTok;
67 : : NameKey_Name M2Reserved_RepeatTok;
68 : : NameKey_Name M2Reserved_RemTok;
69 : : NameKey_Name M2Reserved_RetryTok;
70 : : NameKey_Name M2Reserved_RecordTok;
71 : : NameKey_Name M2Reserved_UnQualifiedTok;
72 : : NameKey_Name M2Reserved_QualifiedTok;
73 : : NameKey_Name M2Reserved_ProcedureTok;
74 : : NameKey_Name M2Reserved_PointerTok;
75 : : NameKey_Name M2Reserved_PackedSetTok;
76 : : NameKey_Name M2Reserved_OrTok;
77 : : NameKey_Name M2Reserved_OfTok;
78 : : NameKey_Name M2Reserved_NotTok;
79 : : NameKey_Name M2Reserved_ModuleTok;
80 : : NameKey_Name M2Reserved_ModTok;
81 : : NameKey_Name M2Reserved_LoopTok;
82 : : NameKey_Name M2Reserved_InTok;
83 : : NameKey_Name M2Reserved_ImportTok;
84 : : NameKey_Name M2Reserved_ImplementationTok;
85 : : NameKey_Name M2Reserved_IfTok;
86 : : NameKey_Name M2Reserved_FromTok;
87 : : NameKey_Name M2Reserved_ForTok;
88 : : NameKey_Name M2Reserved_FinallyTok;
89 : : NameKey_Name M2Reserved_ExportTok;
90 : : NameKey_Name M2Reserved_ExitTok;
91 : : NameKey_Name M2Reserved_ExceptTok;
92 : : NameKey_Name M2Reserved_EndTok;
93 : : NameKey_Name M2Reserved_ElsifTok;
94 : : NameKey_Name M2Reserved_ElseTok;
95 : : NameKey_Name M2Reserved_DoTok;
96 : : NameKey_Name M2Reserved_DivTok;
97 : : NameKey_Name M2Reserved_DefinitionTok;
98 : : NameKey_Name M2Reserved_ConstTok;
99 : : NameKey_Name M2Reserved_CaseTok;
100 : : NameKey_Name M2Reserved_ByTok;
101 : : NameKey_Name M2Reserved_BeginTok;
102 : : NameKey_Name M2Reserved_ArrayTok;
103 : : NameKey_Name M2Reserved_AndTok;
104 : : NameKey_Name M2Reserved_DoubleQuotesTok;
105 : : NameKey_Name M2Reserved_BarTok;
106 : : NameKey_Name M2Reserved_RCBraTok;
107 : : NameKey_Name M2Reserved_RSBraTok;
108 : : NameKey_Name M2Reserved_RParaTok;
109 : : NameKey_Name M2Reserved_ColonTok;
110 : : NameKey_Name M2Reserved_PeriodPeriodTok;
111 : : NameKey_Name M2Reserved_GreaterEqualTok;
112 : : NameKey_Name M2Reserved_LessEqualTok;
113 : : NameKey_Name M2Reserved_LessGreaterTok;
114 : : NameKey_Name M2Reserved_GreaterTok;
115 : : NameKey_Name M2Reserved_LessTok;
116 : : NameKey_Name M2Reserved_HashTok;
117 : : NameKey_Name M2Reserved_EqualTok;
118 : : NameKey_Name M2Reserved_SingleQuoteTok;
119 : : NameKey_Name M2Reserved_UpArrowTok;
120 : : NameKey_Name M2Reserved_LCBraTok;
121 : : NameKey_Name M2Reserved_LSBraTok;
122 : : NameKey_Name M2Reserved_LParaTok;
123 : : NameKey_Name M2Reserved_SemiColonTok;
124 : : NameKey_Name M2Reserved_CommaTok;
125 : : NameKey_Name M2Reserved_PeriodTok;
126 : : NameKey_Name M2Reserved_AmbersandTok;
127 : : NameKey_Name M2Reserved_BecomesTok;
128 : : NameKey_Name M2Reserved_DivideTok;
129 : : NameKey_Name M2Reserved_TimesTok;
130 : : NameKey_Name M2Reserved_MinusTok;
131 : : NameKey_Name M2Reserved_PlusTok;
132 : : NameKey_Name M2Reserved_NulTok;
133 : : # define eof (char) 032
134 : : typedef enum {M2Reserved_eoftok, M2Reserved_plustok, M2Reserved_minustok, M2Reserved_timestok, M2Reserved_dividetok, M2Reserved_becomestok, M2Reserved_ambersandtok, M2Reserved_periodtok, M2Reserved_commatok, M2Reserved_semicolontok, M2Reserved_lparatok, M2Reserved_rparatok, M2Reserved_lsbratok, M2Reserved_rsbratok, M2Reserved_lcbratok, M2Reserved_rcbratok, M2Reserved_uparrowtok, M2Reserved_singlequotetok, M2Reserved_equaltok, M2Reserved_hashtok, M2Reserved_lesstok, M2Reserved_greatertok, M2Reserved_lessgreatertok, M2Reserved_lessequaltok, M2Reserved_greaterequaltok, M2Reserved_ldirectivetok, M2Reserved_rdirectivetok, M2Reserved_periodperiodtok, M2Reserved_colontok, M2Reserved_doublequotestok, M2Reserved_bartok, M2Reserved_andtok, M2Reserved_arraytok, M2Reserved_begintok, M2Reserved_bytok, M2Reserved_casetok, M2Reserved_consttok, M2Reserved_definitiontok, M2Reserved_divtok, M2Reserved_dotok, M2Reserved_elsetok, M2Reserved_elsiftok, M2Reserved_endtok, M2Reserved_excepttok, M2Reserved_exittok, M2Reserved_exporttok, M2Reserved_finallytok, M2Reserved_fortok, M2Reserved_fromtok, M2Reserved_iftok, M2Reserved_implementationtok, M2Reserved_importtok, M2Reserved_intok, M2Reserved_looptok, M2Reserved_modtok, M2Reserved_moduletok, M2Reserved_nottok, M2Reserved_oftok, M2Reserved_ortok, M2Reserved_packedsettok, M2Reserved_pointertok, M2Reserved_proceduretok, M2Reserved_qualifiedtok, M2Reserved_unqualifiedtok, M2Reserved_recordtok, M2Reserved_remtok, M2Reserved_repeattok, M2Reserved_retrytok, M2Reserved_returntok, M2Reserved_settok, M2Reserved_thentok, M2Reserved_totok, M2Reserved_typetok, M2Reserved_untiltok, M2Reserved_vartok, M2Reserved_whiletok, M2Reserved_withtok, M2Reserved_asmtok, M2Reserved_volatiletok, M2Reserved_periodperiodperiodtok, M2Reserved_datetok, M2Reserved_linetok, M2Reserved_filetok, M2Reserved_attributetok, M2Reserved_builtintok, M2Reserved_inlinetok, M2Reserved_integertok, M2Reserved_identtok, M2Reserved_realtok, M2Reserved_stringtok, M2Reserved_virtualrangetok} M2Reserved_toktype;
135 : :
136 : : static SymbolKey_SymbolTree NameTotok;
137 : : static SymbolKey_SymbolTree tokToName;
138 : :
139 : : /*
140 : : IsReserved - returns TRUE if the symbol, Name, is a reserved word.
141 : : If TRUE it also sets tok to the appropriate enumerated
142 : : value. It will set tok to eoftok if appropriate.
143 : : */
144 : :
145 : : extern "C" bool M2Reserved_IsReserved (NameKey_Name n, M2Reserved_toktype *tok);
146 : :
147 : : /*
148 : : tokToTok - returns a Tok given the enumerated variable, t.
149 : : */
150 : :
151 : : extern "C" NameKey_Name M2Reserved_tokToTok (M2Reserved_toktype t);
152 : :
153 : : /*
154 : : AddKeyword - adds the Name and enumerated value of a keyword
155 : : into the binary tree.
156 : : */
157 : :
158 : : static void AddKeyword (NameKey_Name n, M2Reserved_toktype tok);
159 : :
160 : : /*
161 : : AddKeyword - adds the Name and enumerated value of a keyword
162 : : into the binary tree.
163 : : */
164 : :
165 : : static void Init (void);
166 : :
167 : :
168 : : /*
169 : : AddKeyword - adds the Name and enumerated value of a keyword
170 : : into the binary tree.
171 : : */
172 : :
173 : 1412628 : static void AddKeyword (NameKey_Name n, M2Reserved_toktype tok)
174 : : {
175 : 1412628 : SymbolKey_PutSymKey (NameTotok, n, static_cast<unsigned int> (tok));
176 : 1412628 : SymbolKey_PutSymKey (tokToName, (NameKey_Name) (tok), n);
177 : 1412628 : }
178 : :
179 : :
180 : : /*
181 : : AddKeyword - adds the Name and enumerated value of a keyword
182 : : into the binary tree.
183 : : */
184 : :
185 : 16817 : static void Init (void)
186 : : {
187 : 16817 : typedef struct Init__T1_a Init__T1;
188 : :
189 : 16817 : struct Init__T1_a { char array[1+1]; };
190 : 16817 : Init__T1 a;
191 : :
192 : 16817 : SymbolKey_InitTree (&NameTotok);
193 : 16817 : SymbolKey_InitTree (&tokToName);
194 : 16817 : M2Reserved_NulTok = NameKey_NulName;
195 : 16817 : M2Reserved_PlusTok = NameKey_MakeKey ((const char *) "+", 1);
196 : 16817 : AddKeyword (M2Reserved_PlusTok, M2Reserved_plustok);
197 : 16817 : M2Reserved_MinusTok = NameKey_MakeKey ((const char *) "-", 1);
198 : 16817 : AddKeyword (M2Reserved_MinusTok, M2Reserved_minustok);
199 : 16817 : M2Reserved_TimesTok = NameKey_MakeKey ((const char *) "*", 1);
200 : 16817 : AddKeyword (M2Reserved_TimesTok, M2Reserved_timestok);
201 : 16817 : M2Reserved_DivideTok = NameKey_MakeKey ((const char *) "/", 1);
202 : 16817 : AddKeyword (M2Reserved_DivideTok, M2Reserved_dividetok);
203 : 16817 : M2Reserved_BecomesTok = NameKey_MakeKey ((const char *) ":=", 2);
204 : 16817 : AddKeyword (M2Reserved_BecomesTok, M2Reserved_becomestok);
205 : 16817 : M2Reserved_AmbersandTok = NameKey_MakeKey ((const char *) "&", 1);
206 : 16817 : AddKeyword (M2Reserved_AmbersandTok, M2Reserved_ambersandtok);
207 : 16817 : M2Reserved_PeriodTok = NameKey_MakeKey ((const char *) ".", 1);
208 : 16817 : AddKeyword (M2Reserved_PeriodTok, M2Reserved_periodtok);
209 : 16817 : M2Reserved_CommaTok = NameKey_MakeKey ((const char *) ",", 1);
210 : 16817 : AddKeyword (M2Reserved_CommaTok, M2Reserved_commatok);
211 : 16817 : M2Reserved_SemiColonTok = NameKey_MakeKey ((const char *) ";", 1);
212 : 16817 : AddKeyword (M2Reserved_SemiColonTok, M2Reserved_semicolontok);
213 : 16817 : M2Reserved_LParaTok = NameKey_MakeKey ((const char *) "(", 1);
214 : 16817 : AddKeyword (M2Reserved_LParaTok, M2Reserved_lparatok);
215 : 16817 : M2Reserved_LSBraTok = NameKey_MakeKey ((const char *) "[", 1);
216 : 16817 : AddKeyword (M2Reserved_LSBraTok, M2Reserved_lsbratok);
217 : 16817 : M2Reserved_LCBraTok = NameKey_MakeKey ((const char *) "{", 1);
218 : 16817 : AddKeyword (M2Reserved_LCBraTok, M2Reserved_lcbratok);
219 : 16817 : M2Reserved_UpArrowTok = NameKey_MakeKey ((const char *) "^", 1);
220 : 16817 : AddKeyword (M2Reserved_UpArrowTok, M2Reserved_uparrowtok);
221 : 16817 : M2Reserved_SingleQuoteTok = NameKey_MakeKey ((const char *) "'", 1);
222 : 16817 : AddKeyword (M2Reserved_SingleQuoteTok, M2Reserved_singlequotetok);
223 : 16817 : M2Reserved_EqualTok = NameKey_MakeKey ((const char *) "=", 1);
224 : 16817 : AddKeyword (M2Reserved_EqualTok, M2Reserved_equaltok);
225 : 16817 : M2Reserved_HashTok = NameKey_MakeKey ((const char *) "#", 1);
226 : 16817 : AddKeyword (M2Reserved_HashTok, M2Reserved_hashtok);
227 : 16817 : M2Reserved_LessTok = NameKey_MakeKey ((const char *) "<", 1);
228 : 16817 : AddKeyword (M2Reserved_LessTok, M2Reserved_lesstok);
229 : 16817 : M2Reserved_GreaterTok = NameKey_MakeKey ((const char *) ">", 1);
230 : 16817 : AddKeyword (M2Reserved_GreaterTok, M2Reserved_greatertok);
231 : 16817 : M2Reserved_LessGreaterTok = NameKey_MakeKey ((const char *) "<>", 2);
232 : 16817 : AddKeyword (M2Reserved_LessGreaterTok, M2Reserved_lessgreatertok);
233 : 16817 : M2Reserved_LessEqualTok = NameKey_MakeKey ((const char *) "<=", 2);
234 : 16817 : AddKeyword (M2Reserved_LessEqualTok, M2Reserved_lessequaltok);
235 : 16817 : M2Reserved_GreaterEqualTok = NameKey_MakeKey ((const char *) ">=", 2);
236 : 16817 : AddKeyword (M2Reserved_GreaterEqualTok, M2Reserved_greaterequaltok);
237 : 16817 : M2Reserved_LDirectiveTok = NameKey_MakeKey ((const char *) "<*", 2);
238 : 16817 : AddKeyword (M2Reserved_LDirectiveTok, M2Reserved_ldirectivetok);
239 : 16817 : M2Reserved_RDirectiveTok = NameKey_MakeKey ((const char *) "*>", 2);
240 : 16817 : AddKeyword (M2Reserved_RDirectiveTok, M2Reserved_rdirectivetok);
241 : 16817 : M2Reserved_PeriodPeriodTok = NameKey_MakeKey ((const char *) "..", 2);
242 : 16817 : AddKeyword (M2Reserved_PeriodPeriodTok, M2Reserved_periodperiodtok);
243 : 16817 : M2Reserved_ColonTok = NameKey_MakeKey ((const char *) ":", 1);
244 : 16817 : AddKeyword (M2Reserved_ColonTok, M2Reserved_colontok);
245 : 16817 : M2Reserved_RParaTok = NameKey_MakeKey ((const char *) ")", 1);
246 : 16817 : AddKeyword (M2Reserved_RParaTok, M2Reserved_rparatok);
247 : 16817 : M2Reserved_RSBraTok = NameKey_MakeKey ((const char *) "]", 1);
248 : 16817 : AddKeyword (M2Reserved_RSBraTok, M2Reserved_rsbratok);
249 : 16817 : M2Reserved_RCBraTok = NameKey_MakeKey ((const char *) "}", 1);
250 : 16817 : AddKeyword (M2Reserved_RCBraTok, M2Reserved_rcbratok);
251 : 16817 : M2Reserved_BarTok = NameKey_MakeKey ((const char *) "|", 1);
252 : 16817 : AddKeyword (M2Reserved_BarTok, M2Reserved_bartok);
253 : 16817 : M2Reserved_DoubleQuotesTok = NameKey_MakeKey ((const char *) "\"", 1);
254 : 16817 : AddKeyword (M2Reserved_DoubleQuotesTok, M2Reserved_doublequotestok);
255 : 16817 : M2Reserved_AndTok = NameKey_MakeKey ((const char *) "AND", 3);
256 : 16817 : AddKeyword (M2Reserved_AndTok, M2Reserved_andtok);
257 : 16817 : M2Reserved_ArrayTok = NameKey_MakeKey ((const char *) "ARRAY", 5);
258 : 16817 : AddKeyword (M2Reserved_ArrayTok, M2Reserved_arraytok);
259 : 16817 : M2Reserved_BeginTok = NameKey_MakeKey ((const char *) "BEGIN", 5);
260 : 16817 : AddKeyword (M2Reserved_BeginTok, M2Reserved_begintok);
261 : 16817 : M2Reserved_ByTok = NameKey_MakeKey ((const char *) "BY", 2);
262 : 16817 : AddKeyword (M2Reserved_ByTok, M2Reserved_bytok);
263 : 16817 : M2Reserved_CaseTok = NameKey_MakeKey ((const char *) "CASE", 4);
264 : 16817 : AddKeyword (M2Reserved_CaseTok, M2Reserved_casetok);
265 : 16817 : M2Reserved_ConstTok = NameKey_MakeKey ((const char *) "CONST", 5);
266 : 16817 : AddKeyword (M2Reserved_ConstTok, M2Reserved_consttok);
267 : 16817 : M2Reserved_DefinitionTok = NameKey_MakeKey ((const char *) "DEFINITION", 10);
268 : 16817 : AddKeyword (M2Reserved_DefinitionTok, M2Reserved_definitiontok);
269 : 16817 : M2Reserved_DivTok = NameKey_MakeKey ((const char *) "DIV", 3);
270 : 16817 : AddKeyword (M2Reserved_DivTok, M2Reserved_divtok);
271 : 16817 : M2Reserved_DoTok = NameKey_MakeKey ((const char *) "DO", 2);
272 : 16817 : AddKeyword (M2Reserved_DoTok, M2Reserved_dotok);
273 : 16817 : M2Reserved_ElseTok = NameKey_MakeKey ((const char *) "ELSE", 4);
274 : 16817 : AddKeyword (M2Reserved_ElseTok, M2Reserved_elsetok);
275 : 16817 : M2Reserved_ElsifTok = NameKey_MakeKey ((const char *) "ELSIF", 5);
276 : 16817 : AddKeyword (M2Reserved_ElsifTok, M2Reserved_elsiftok);
277 : 16817 : M2Reserved_EndTok = NameKey_MakeKey ((const char *) "END", 3);
278 : 16817 : AddKeyword (M2Reserved_EndTok, M2Reserved_endtok);
279 : 16817 : M2Reserved_ExitTok = NameKey_MakeKey ((const char *) "EXIT", 4);
280 : 16817 : AddKeyword (M2Reserved_ExitTok, M2Reserved_exittok);
281 : 16817 : M2Reserved_ExceptTok = NameKey_MakeKey ((const char *) "EXCEPT", 6);
282 : 16817 : AddKeyword (M2Reserved_ExceptTok, M2Reserved_excepttok);
283 : 16817 : M2Reserved_ExportTok = NameKey_MakeKey ((const char *) "EXPORT", 6);
284 : 16817 : AddKeyword (M2Reserved_ExportTok, M2Reserved_exporttok);
285 : 16817 : M2Reserved_FinallyTok = NameKey_MakeKey ((const char *) "FINALLY", 7);
286 : 16817 : AddKeyword (M2Reserved_FinallyTok, M2Reserved_finallytok);
287 : 16817 : M2Reserved_ForTok = NameKey_MakeKey ((const char *) "FOR", 3);
288 : 16817 : AddKeyword (M2Reserved_ForTok, M2Reserved_fortok);
289 : 16817 : M2Reserved_FromTok = NameKey_MakeKey ((const char *) "FROM", 4);
290 : 16817 : AddKeyword (M2Reserved_FromTok, M2Reserved_fromtok);
291 : 16817 : M2Reserved_IfTok = NameKey_MakeKey ((const char *) "IF", 2);
292 : 16817 : AddKeyword (M2Reserved_IfTok, M2Reserved_iftok);
293 : 16817 : M2Reserved_ImplementationTok = NameKey_MakeKey ((const char *) "IMPLEMENTATION", 14);
294 : 16817 : AddKeyword (M2Reserved_ImplementationTok, M2Reserved_implementationtok);
295 : 16817 : M2Reserved_ImportTok = NameKey_MakeKey ((const char *) "IMPORT", 6);
296 : 16817 : AddKeyword (M2Reserved_ImportTok, M2Reserved_importtok);
297 : 16817 : M2Reserved_InTok = NameKey_MakeKey ((const char *) "IN", 2);
298 : 16817 : AddKeyword (M2Reserved_InTok, M2Reserved_intok);
299 : 16817 : M2Reserved_LoopTok = NameKey_MakeKey ((const char *) "LOOP", 4);
300 : 16817 : AddKeyword (M2Reserved_LoopTok, M2Reserved_looptok);
301 : 16817 : M2Reserved_ModTok = NameKey_MakeKey ((const char *) "MOD", 3);
302 : 16817 : AddKeyword (M2Reserved_ModTok, M2Reserved_modtok);
303 : 16817 : M2Reserved_ModuleTok = NameKey_MakeKey ((const char *) "MODULE", 6);
304 : 16817 : AddKeyword (M2Reserved_ModuleTok, M2Reserved_moduletok);
305 : 16817 : M2Reserved_NotTok = NameKey_MakeKey ((const char *) "NOT", 3);
306 : 16817 : AddKeyword (M2Reserved_NotTok, M2Reserved_nottok);
307 : 16817 : M2Reserved_OfTok = NameKey_MakeKey ((const char *) "OF", 2);
308 : 16817 : AddKeyword (M2Reserved_OfTok, M2Reserved_oftok);
309 : 16817 : M2Reserved_OrTok = NameKey_MakeKey ((const char *) "OR", 2);
310 : 16817 : AddKeyword (M2Reserved_OrTok, M2Reserved_ortok);
311 : : /*
312 : : PackedTok := MakeKey('PACKED') ;
313 : : AddKeyword(PackedTok, packedtok) ;
314 : : */
315 : 16817 : M2Reserved_PackedSetTok = NameKey_MakeKey ((const char *) "PACKEDSET", 9);
316 : 16817 : AddKeyword (M2Reserved_PackedSetTok, M2Reserved_packedsettok);
317 : 16817 : M2Reserved_PointerTok = NameKey_MakeKey ((const char *) "POINTER", 7);
318 : 16817 : AddKeyword (M2Reserved_PointerTok, M2Reserved_pointertok);
319 : 16817 : M2Reserved_ProcedureTok = NameKey_MakeKey ((const char *) "PROCEDURE", 9);
320 : 16817 : AddKeyword (M2Reserved_ProcedureTok, M2Reserved_proceduretok);
321 : 16817 : M2Reserved_QualifiedTok = NameKey_MakeKey ((const char *) "QUALIFIED", 9);
322 : 16817 : AddKeyword (M2Reserved_QualifiedTok, M2Reserved_qualifiedtok);
323 : 16817 : M2Reserved_UnQualifiedTok = NameKey_MakeKey ((const char *) "UNQUALIFIED", 11);
324 : 16817 : AddKeyword (M2Reserved_UnQualifiedTok, M2Reserved_unqualifiedtok);
325 : 16817 : M2Reserved_RecordTok = NameKey_MakeKey ((const char *) "RECORD", 6);
326 : 16817 : AddKeyword (M2Reserved_RecordTok, M2Reserved_recordtok);
327 : 16817 : M2Reserved_RemTok = NameKey_MakeKey ((const char *) "REM", 3);
328 : 16817 : AddKeyword (M2Reserved_RemTok, M2Reserved_remtok);
329 : 16817 : M2Reserved_RepeatTok = NameKey_MakeKey ((const char *) "REPEAT", 6);
330 : 16817 : AddKeyword (M2Reserved_RepeatTok, M2Reserved_repeattok);
331 : 16817 : M2Reserved_RetryTok = NameKey_MakeKey ((const char *) "RETRY", 5);
332 : 16817 : AddKeyword (M2Reserved_RetryTok, M2Reserved_retrytok);
333 : 16817 : M2Reserved_ReturnTok = NameKey_MakeKey ((const char *) "RETURN", 6);
334 : 16817 : AddKeyword (M2Reserved_ReturnTok, M2Reserved_returntok);
335 : 16817 : M2Reserved_SetTok = NameKey_MakeKey ((const char *) "SET", 3);
336 : 16817 : AddKeyword (M2Reserved_SetTok, M2Reserved_settok);
337 : 16817 : M2Reserved_ThenTok = NameKey_MakeKey ((const char *) "THEN", 4);
338 : 16817 : AddKeyword (M2Reserved_ThenTok, M2Reserved_thentok);
339 : 16817 : M2Reserved_ToTok = NameKey_MakeKey ((const char *) "TO", 2);
340 : 16817 : AddKeyword (M2Reserved_ToTok, M2Reserved_totok);
341 : 16817 : M2Reserved_TypeTok = NameKey_MakeKey ((const char *) "TYPE", 4);
342 : 16817 : AddKeyword (M2Reserved_TypeTok, M2Reserved_typetok);
343 : 16817 : M2Reserved_UntilTok = NameKey_MakeKey ((const char *) "UNTIL", 5);
344 : 16817 : AddKeyword (M2Reserved_UntilTok, M2Reserved_untiltok);
345 : 16817 : M2Reserved_VarTok = NameKey_MakeKey ((const char *) "VAR", 3);
346 : 16817 : AddKeyword (M2Reserved_VarTok, M2Reserved_vartok);
347 : 16817 : M2Reserved_WhileTok = NameKey_MakeKey ((const char *) "WHILE", 5);
348 : 16817 : AddKeyword (M2Reserved_WhileTok, M2Reserved_whiletok);
349 : 16817 : M2Reserved_WithTok = NameKey_MakeKey ((const char *) "WITH", 4);
350 : 16817 : AddKeyword (M2Reserved_WithTok, M2Reserved_withtok);
351 : 16817 : M2Reserved_AsmTok = NameKey_MakeKey ((const char *) "ASM", 3);
352 : 16817 : AddKeyword (M2Reserved_AsmTok, M2Reserved_asmtok);
353 : 16817 : M2Reserved_VolatileTok = NameKey_MakeKey ((const char *) "VOLATILE", 8);
354 : 16817 : AddKeyword (M2Reserved_VolatileTok, M2Reserved_volatiletok);
355 : 16817 : M2Reserved_DateTok = NameKey_MakeKey ((const char *) "__DATE__", 8); /* C compatible preprocessor primatives */
356 : 16817 : AddKeyword (M2Reserved_DateTok, M2Reserved_datetok); /* C compatible preprocessor primatives */
357 : 16817 : M2Reserved_LineTok = NameKey_MakeKey ((const char *) "__LINE__", 8);
358 : 16817 : AddKeyword (M2Reserved_LineTok, M2Reserved_linetok);
359 : 16817 : M2Reserved_FileTok = NameKey_MakeKey ((const char *) "__FILE__", 8);
360 : 16817 : AddKeyword (M2Reserved_FileTok, M2Reserved_filetok);
361 : 16817 : M2Reserved_AttributeTok = NameKey_MakeKey ((const char *) "__ATTRIBUTE__", 13); /* GCC extension incorporated into gm2 */
362 : 16817 : AddKeyword (M2Reserved_AttributeTok, M2Reserved_attributetok); /* GCC extension incorporated into gm2 */
363 : 16817 : M2Reserved_BuiltinTok = NameKey_MakeKey ((const char *) "__BUILTIN__", 11); /* GCC extension incorporated into gm2 */
364 : 16817 : AddKeyword (M2Reserved_BuiltinTok, M2Reserved_builtintok); /* GCC extension incorporated into gm2 */
365 : 16817 : M2Reserved_InlineTok = NameKey_MakeKey ((const char *) "__INLINE__", 10); /* GCC extension incorporated into gm2 */
366 : 16817 : AddKeyword (M2Reserved_InlineTok, M2Reserved_inlinetok); /* GCC extension incorporated into gm2 */
367 : 16817 : a.array[0] = eof;
368 : 16817 : a.array[1] = ASCII_nul;
369 : 16817 : M2Reserved_EofTok = NameKey_MakeKey ((const char *) &a.array[0], 1); /* Not a reserved token */
370 : 16817 : }
371 : :
372 : :
373 : : /*
374 : : IsReserved - returns TRUE if the symbol, Name, is a reserved word.
375 : : If TRUE it also sets tok to the appropriate enumerated
376 : : value. It will set tok to eoftok if appropriate.
377 : : */
378 : :
379 : 0 : extern "C" bool M2Reserved_IsReserved (NameKey_Name n, M2Reserved_toktype *tok)
380 : : {
381 : 0 : unsigned int t;
382 : :
383 : 0 : t = static_cast<unsigned int> (SymbolKey_GetSymKey (NameTotok, n));
384 : 0 : if (t == 0)
385 : : {
386 : : /* eoftok is not a reserved word */
387 : 0 : if (n == M2Reserved_EofTok)
388 : : {
389 : 0 : (*tok) = M2Reserved_eoftok;
390 : : }
391 : 0 : return false;
392 : : }
393 : : else
394 : : {
395 : 0 : (*tok) = (M2Reserved_toktype) (t);
396 : 0 : return true;
397 : : }
398 : : /* static analysis guarentees a RETURN statement will be used before here. */
399 : : __builtin_unreachable ();
400 : : }
401 : :
402 : :
403 : : /*
404 : : tokToTok - returns a Tok given the enumerated variable, t.
405 : : */
406 : :
407 : 0 : extern "C" NameKey_Name M2Reserved_tokToTok (M2Reserved_toktype t)
408 : : {
409 : 0 : return static_cast<NameKey_Name> (SymbolKey_GetSymKey (tokToName, (NameKey_Name) (t)));
410 : : /* static analysis guarentees a RETURN statement will be used before here. */
411 : : __builtin_unreachable ();
412 : : }
413 : :
414 : 16817 : extern "C" void _M2_M2Reserved_init (__attribute__((unused)) int argc,__attribute__((unused)) char *argv[],__attribute__((unused)) char *envp[])
415 : : {
416 : 16817 : Init ();
417 : 16817 : }
418 : :
419 : 0 : extern "C" void _M2_M2Reserved_fini (__attribute__((unused)) int argc,__attribute__((unused)) char *argv[],__attribute__((unused)) char *envp[])
420 : : {
421 : 0 : }
|