blob: 4a6172ad1c5af7edf732397054f702b211574be7 [file]
/* Automatically generated from ./asm/pptok.dat by ./asm/pptok.pl */
/* Do not edit */
#include "compiler.h"
#include "nctype.h"
#include "nasmlib.h"
#include "hashtbl.h"
#include "preproc.h"
const char * const pp_directives[120] = {
"%if",
"%ifctx",
"%ifdef",
"%ifdefalias",
"%ifdifi",
"%ifempty",
"%ifenv",
"%ifid",
"%ifidn",
"%ifidni",
"%ifmacro",
"%ifnum",
"%ifstr",
"%iftoken",
"%ifusable",
"%ifusing",
"%ifn",
"%ifnctx",
"%ifndef",
"%ifndefalias",
"%ifndifi",
"%ifnempty",
"%ifnenv",
"%ifnid",
"%ifnidn",
"%ifnidni",
"%ifnmacro",
"%ifnnum",
"%ifnstr",
"%ifntoken",
"%ifnusable",
"%ifnusing",
"%elif",
"%elifctx",
"%elifdef",
"%elifdefalias",
"%elifdifi",
"%elifempty",
"%elifenv",
"%elifid",
"%elifidn",
"%elifidni",
"%elifmacro",
"%elifnum",
"%elifstr",
"%eliftoken",
"%elifusable",
"%elifusing",
"%elifn",
"%elifnctx",
"%elifndef",
"%elifndefalias",
"%elifndifi",
"%elifnempty",
"%elifnenv",
"%elifnid",
"%elifnidn",
"%elifnidni",
"%elifnmacro",
"%elifnnum",
"%elifnstr",
"%elifntoken",
"%elifnusable",
"%elifnusing",
"%aliases",
"%arg",
"%clear",
"%depend",
"%else",
"%endif",
"%endm",
"%endmacro",
"%endrep",
"%error",
"%exitmacro",
"%exitrep",
"%fatal",
"%include",
"%line",
"%local",
"%note",
"%null",
"%pop",
"%pragma",
"%push",
"%rep",
"%repl",
"%require",
"%rotate",
"%stacksize",
"%undef",
"%undefalias",
"%use",
"%warning",
"%assign",
"%iassign",
"%defalias",
"%idefalias",
"%define",
"%idefine",
"%defstr",
"%idefstr",
"%deftok",
"%ideftok",
"%macro",
"%imacro",
"%pathsearch",
"%ipathsearch",
"%rmacro",
"%irmacro",
"%strcat",
"%istrcat",
"%strlen",
"%istrlen",
"%substr",
"%isubstr",
"%xdefine",
"%ixdefine",
"%unmacro",
"%unimacro",
};
const uint8_t pp_directives_len[120] = {
3,
6,
6,
11,
7,
8,
6,
5,
6,
7,
8,
6,
6,
8,
9,
8,
4,
7,
7,
12,
8,
9,
7,
6,
7,
8,
9,
7,
7,
9,
10,
9,
5,
8,
8,
13,
9,
10,
8,
7,
8,
9,
10,
8,
8,
10,
11,
10,
6,
9,
9,
14,
10,
11,
9,
8,
9,
10,
11,
9,
9,
11,
12,
11,
8,
4,
6,
7,
5,
6,
5,
9,
7,
6,
10,
8,
6,
8,
5,
6,
5,
5,
4,
7,
5,
4,
5,
8,
7,
10,
6,
11,
4,
8,
7,
8,
9,
10,
7,
8,
7,
8,
7,
8,
6,
7,
11,
12,
7,
8,
7,
8,
7,
8,
7,
8,
8,
9,
8,
9,
};
#define INVALID_HASH_ENTRY (65535/3)
/* Primary preprocessor token hash */
enum preproc_token pp_token_hash(const char *token)
{
static const int16_t hashdata[512] = {
0,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
0,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
107,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
73,
0,
0,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
67,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
65,
-65,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
94,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
31,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
38,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
78,
0,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
0,
54,
70,
INVALID_HASH_ENTRY,
13,
21,
0,
0,
3,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
81,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
49,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
-78,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
32,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
56,
INVALID_HASH_ENTRY,
47,
INVALID_HASH_ENTRY,
37,
0,
INVALID_HASH_ENTRY,
37,
0,
INVALID_HASH_ENTRY,
-20,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
7,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
116,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
-31,
39,
INVALID_HASH_ENTRY,
72,
INVALID_HASH_ENTRY,
0,
0,
180,
-72,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
26,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
-40,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
25,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
98,
0,
71,
INVALID_HASH_ENTRY,
53,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
76,
INVALID_HASH_ENTRY,
63,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
20,
INVALID_HASH_ENTRY,
99,
INVALID_HASH_ENTRY,
14,
0,
-5,
91,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
164,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
37,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
59,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
117,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
19,
INVALID_HASH_ENTRY,
16,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
105,
INVALID_HASH_ENTRY,
18,
-47,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
105,
8,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
109,
INVALID_HASH_ENTRY,
4,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
100,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
-53,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
86,
INVALID_HASH_ENTRY,
87,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
32,
0,
60,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
29,
0,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
-12,
104,
63,
INVALID_HASH_ENTRY,
113,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
28,
112,
60,
INVALID_HASH_ENTRY,
-5,
62,
INVALID_HASH_ENTRY,
50,
24,
44,
INVALID_HASH_ENTRY,
46,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
91,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
51,
-14,
84,
58,
INVALID_HASH_ENTRY,
40,
INVALID_HASH_ENTRY,
97,
0,
INVALID_HASH_ENTRY,
103,
22,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
69,
INVALID_HASH_ENTRY,
-61,
INVALID_HASH_ENTRY,
79,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
33,
INVALID_HASH_ENTRY,
52,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
45,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
88,
17,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
111,
-97,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
108,
43,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
87,
118,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
-23,
66,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
90,
INVALID_HASH_ENTRY,
69,
INVALID_HASH_ENTRY,
41,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
75,
16,
-90,
4,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
9,
INVALID_HASH_ENTRY,
75,
INVALID_HASH_ENTRY,
48,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
67,
-9,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
11,
-32,
INVALID_HASH_ENTRY,
73,
INVALID_HASH_ENTRY,
119,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
110,
INVALID_HASH_ENTRY,
93,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
};
uint32_t k1, k2;
uint64_t crc;
uint16_t ix;
crc = crc64i(UINT64_C(0x076259c3e291c26c), token);
k1 = ((uint32_t)crc & 0x1fe) + 0;
k2 = ((uint32_t)(crc >> 32) & 0x1fe) + 1;
ix = hashdata[k1] + hashdata[k2];
if (ix >= 120)
return PP_invalid;
if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix], token))
return PP_invalid;
return ix;
}
/* TASM compatibility preprocessor token hash */
enum preproc_token pp_tasm_token_hash(const char *token)
{
static const int16_t hashdata[32] = {
INVALID_HASH_ENTRY,
0,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
69,
0,
83,
32,
2,
0,
0,
77,
INVALID_HASH_ENTRY,
0,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
79,
68,
INVALID_HASH_ENTRY,
63,
INVALID_HASH_ENTRY,
-65,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
INVALID_HASH_ENTRY,
};
uint32_t k1, k2;
uint64_t crc;
uint16_t ix;
crc = crc64i(UINT64_C(0x076259c3e291c26c), token);
k1 = ((uint32_t)crc & 0x1e) + 0;
k2 = ((uint32_t)(crc >> 32) & 0x1e) + 1;
ix = hashdata[k1] + hashdata[k2];
if (ix >= 120)
return PP_invalid;
if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix]+1, token))
return PP_invalid;
return ix;
}