| /* Automatically generated from ./asm/pptok.dat by ./asm/pptok.pl */ |
| /* Do not edit */ |
| |
| #include "compiler.h" |
| #include <ctype.h> |
| #include "nasmlib.h" |
| #include "hashtbl.h" |
| #include "preproc.h" |
| |
| const char * const pp_directives[109] = { |
| "%elif", |
| "%elifn", |
| "%elifctx", |
| "%elifnctx", |
| "%elifdef", |
| "%elifndef", |
| "%elifempty", |
| "%elifnempty", |
| "%elifenv", |
| "%elifnenv", |
| "%elifid", |
| "%elifnid", |
| "%elifidn", |
| "%elifnidn", |
| "%elifidni", |
| "%elifnidni", |
| "%elifmacro", |
| "%elifnmacro", |
| "%elifnum", |
| "%elifnnum", |
| "%elifstr", |
| "%elifnstr", |
| "%eliftoken", |
| "%elifntoken", |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| "%if", |
| "%ifn", |
| "%ifctx", |
| "%ifnctx", |
| "%ifdef", |
| "%ifndef", |
| "%ifempty", |
| "%ifnempty", |
| "%ifenv", |
| "%ifnenv", |
| "%ifid", |
| "%ifnid", |
| "%ifidn", |
| "%ifnidn", |
| "%ifidni", |
| "%ifnidni", |
| "%ifmacro", |
| "%ifnmacro", |
| "%ifnum", |
| "%ifnnum", |
| "%ifstr", |
| "%ifnstr", |
| "%iftoken", |
| "%ifntoken", |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| "%arg", |
| "%assign", |
| "%clear", |
| "%define", |
| "%defstr", |
| "%deftok", |
| "%depend", |
| "%else", |
| "%endif", |
| "%endm", |
| "%endmacro", |
| "%endrep", |
| "%error", |
| "%exitmacro", |
| "%exitrep", |
| "%fatal", |
| "%iassign", |
| "%idefine", |
| "%idefstr", |
| "%ideftok", |
| "%imacro", |
| "%include", |
| "%irmacro", |
| "%ixdefine", |
| "%line", |
| "%local", |
| "%macro", |
| "%pathsearch", |
| "%pop", |
| "%pragma", |
| "%push", |
| "%rep", |
| "%repl", |
| "%rmacro", |
| "%rotate", |
| "%stacksize", |
| "%strcat", |
| "%strlen", |
| "%substr", |
| "%undef", |
| "%unimacro", |
| "%unmacro", |
| "%use", |
| "%warning", |
| "%xdefine", |
| }; |
| const uint8_t pp_directives_len[109] = { |
| 5, |
| 6, |
| 8, |
| 9, |
| 8, |
| 9, |
| 10, |
| 11, |
| 8, |
| 9, |
| 7, |
| 8, |
| 8, |
| 9, |
| 9, |
| 10, |
| 10, |
| 11, |
| 8, |
| 9, |
| 8, |
| 9, |
| 10, |
| 11, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 3, |
| 4, |
| 6, |
| 7, |
| 6, |
| 7, |
| 8, |
| 9, |
| 6, |
| 7, |
| 5, |
| 6, |
| 6, |
| 7, |
| 7, |
| 8, |
| 8, |
| 9, |
| 6, |
| 7, |
| 6, |
| 7, |
| 8, |
| 9, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 4, |
| 7, |
| 6, |
| 7, |
| 7, |
| 7, |
| 7, |
| 5, |
| 6, |
| 5, |
| 9, |
| 7, |
| 6, |
| 10, |
| 8, |
| 6, |
| 8, |
| 8, |
| 8, |
| 8, |
| 7, |
| 8, |
| 8, |
| 9, |
| 5, |
| 6, |
| 6, |
| 11, |
| 4, |
| 7, |
| 5, |
| 4, |
| 5, |
| 7, |
| 7, |
| 10, |
| 7, |
| 7, |
| 7, |
| 6, |
| 9, |
| 8, |
| 4, |
| 8, |
| 8, |
| }; |
| enum preproc_token pp_token_hash(const char *token) |
| { |
| #define UNUSED (65535/3) |
| static const int16_t hash1[128] = { |
| UNUSED, |
| UNUSED, |
| 0, |
| 0, |
| 0, |
| 0, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| 0, |
| 0, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 0, |
| -45, |
| UNUSED, |
| 0, |
| UNUSED, |
| -60, |
| 0, |
| UNUSED, |
| UNUSED, |
| -42, |
| UNUSED, |
| UNUSED, |
| -49, |
| UNUSED, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 48, |
| UNUSED, |
| UNUSED, |
| 49, |
| 5, |
| UNUSED, |
| -53, |
| 65, |
| UNUSED, |
| UNUSED, |
| 0, |
| 0, |
| UNUSED, |
| 38, |
| UNUSED, |
| 31, |
| 0, |
| UNUSED, |
| 6, |
| 35, |
| UNUSED, |
| UNUSED, |
| 60, |
| 33, |
| UNUSED, |
| 136, |
| UNUSED, |
| -87, |
| -12, |
| 42, |
| 17, |
| 0, |
| 130, |
| -85, |
| UNUSED, |
| UNUSED, |
| 82, |
| 0, |
| UNUSED, |
| 16, |
| 98, |
| -66, |
| -100, |
| 0, |
| -10, |
| -76, |
| UNUSED, |
| 84, |
| UNUSED, |
| 1, |
| UNUSED, |
| 0, |
| 12, |
| UNUSED, |
| -145, |
| 41, |
| 106, |
| UNUSED, |
| 85, |
| UNUSED, |
| 43, |
| 85, |
| UNUSED, |
| 23, |
| 0, |
| -14, |
| UNUSED, |
| UNUSED, |
| 77, |
| -2, |
| UNUSED, |
| UNUSED, |
| 11, |
| 91, |
| -7, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 107, |
| 44, |
| UNUSED, |
| }; |
| static const int16_t hash2[128] = { |
| UNUSED, |
| 0, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 0, |
| 80, |
| 0, |
| 64, |
| UNUSED, |
| 0, |
| 0, |
| 0, |
| 0, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 64, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 0, |
| 121, |
| 0, |
| UNUSED, |
| 22, |
| 100, |
| 63, |
| UNUSED, |
| 114, |
| UNUSED, |
| 178, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 0, |
| UNUSED, |
| -40, |
| UNUSED, |
| 88, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 87, |
| UNUSED, |
| 42, |
| UNUSED, |
| UNUSED, |
| 141, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 103, |
| UNUSED, |
| 46, |
| 106, |
| 149, |
| UNUSED, |
| 23, |
| 53, |
| 0, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 0, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 33, |
| 0, |
| 0, |
| 92, |
| UNUSED, |
| 50, |
| 72, |
| UNUSED, |
| 7, |
| 43, |
| 66, |
| UNUSED, |
| UNUSED, |
| 113, |
| 52, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 99, |
| 101, |
| 71, |
| UNUSED, |
| 20, |
| 63, |
| 32, |
| UNUSED, |
| UNUSED, |
| UNUSED, |
| 97, |
| 18, |
| 84, |
| 132, |
| UNUSED, |
| 37, |
| UNUSED, |
| 9, |
| 20, |
| UNUSED, |
| UNUSED, |
| 75, |
| 98, |
| UNUSED, |
| }; |
| uint32_t k1, k2; |
| uint64_t crc; |
| uint16_t ix; |
| |
| crc = crc64i(UINT64_C(0xaee7ac5ccabdec91), token); |
| k1 = (uint32_t)crc; |
| k2 = (uint32_t)(crc >> 32); |
| |
| ix = hash1[k1 & 0x7f] + hash2[k2 & 0x7f]; |
| if (ix >= 109) |
| return PP_INVALID; |
| |
| if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix], token)) |
| return PP_INVALID; |
| |
| return ix; |
| } |