Created
April 29, 2022 20:49
-
-
Save UplinkCoder/4b51580fafb78d1df0132f2d3fd4071d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #define struct_key 0x6e9213 | |
| #define union_key 0x5a08cc | |
| #define enum_key 0x42259d | |
| #define auto_key 0x447fd2 | |
| #define void_key 0x4c07ce | |
| #define char_key 0x44aaee | |
| #define short_key 0x5ca984 | |
| #define int_key 0x3fff6d | |
| #define long_key 0x46cc25 | |
| #define float_key 0x5a71a0 | |
| #define double_key 0x636b8e | |
| #define unsigned_key 0x8265da | |
| #define const_key 0x5d7a94 | |
| #define volatile_key 0x8a95c7 | |
| #define extern_key 0x6569e1 | |
| #define for_key 0x3dda5e | |
| #define sizeof_key 0x6222dd | |
| #define return_key 0x6363a6 | |
| #define switch_key 0x63e3c4 | |
| #define while_key 0x53c644 | |
| #define do_key 0x2d63b1 | |
| #define typeof_key 0x6affc4 | |
| #define inject_key 0x6d00ba | |
| #define eject_key 0x578f00 | |
| #define assert_key 0x68b26e | |
| #define typedef_key 0x7f3981 | |
| #define case_key 0x4064be | |
| #define goto_key 0x4d7ce2 | |
| #define static_key 0x6c68bb | |
| #define inline_key 0x6ef668 | |
| #define if_key 0x23826e | |
| #define else_key 0x4b7e6d | |
| #define break_key 0x59983a | |
| #define continue_key 0x83f482 | |
| #define until_key 0x525c22 | |
| #define yield_key 0x521f59 | |
| #define scope_key 0x5a37d9 | |
| #define __LINE___key 0x87077a | |
| #define __FUNCTION___key 0xc171a8 | |
| #define __METAC___key 0x9f0dd9 | |
| #if !defined(__TINYC__) && !defined(_MSC_VER) | |
| # define memcmp __builtin_memcmp | |
| #endif | |
| // void MetaCLexerMatchKeywordIdentifier(metac_token_t* tok, const char* identifier) | |
| { | |
| assert(tok->TokenType == tok_identifier); | |
| switch (tok->IdentifierKey) | |
| { | |
| case struct_key : | |
| if(!memcmp(identifier, "struct", 6)) | |
| tok->TokenType = tok_kw_struct; | |
| break; | |
| case union_key : | |
| if(!memcmp(identifier, "union", 5)) | |
| tok->TokenType = tok_kw_union; | |
| break; | |
| case enum_key : | |
| if(!memcmp(identifier, "enum", 4)) | |
| tok->TokenType = tok_kw_enum; | |
| break; | |
| case auto_key : | |
| if(!memcmp(identifier, "auto", 4)) | |
| tok->TokenType = tok_kw_auto; | |
| break; | |
| case void_key : | |
| if(!memcmp(identifier, "void", 4)) | |
| tok->TokenType = tok_kw_void; | |
| break; | |
| case char_key : | |
| if(!memcmp(identifier, "char", 4)) | |
| tok->TokenType = tok_kw_char; | |
| break; | |
| case short_key : | |
| if(!memcmp(identifier, "short", 5)) | |
| tok->TokenType = tok_kw_short; | |
| break; | |
| case int_key : | |
| if(!memcmp(identifier, "int", 3)) | |
| tok->TokenType = tok_kw_int; | |
| break; | |
| case long_key : | |
| if(!memcmp(identifier, "long", 4)) | |
| tok->TokenType = tok_kw_long; | |
| break; | |
| case float_key : | |
| if(!memcmp(identifier, "float", 5)) | |
| tok->TokenType = tok_kw_float; | |
| break; | |
| case double_key : | |
| if(!memcmp(identifier, "double", 6)) | |
| tok->TokenType = tok_kw_double; | |
| break; | |
| case unsigned_key : | |
| if(!memcmp(identifier, "unsigned", 8)) | |
| tok->TokenType = tok_kw_unsigned; | |
| break; | |
| case const_key : | |
| if(!memcmp(identifier, "const", 5)) | |
| tok->TokenType = tok_kw_const; | |
| break; | |
| case volatile_key : | |
| if(!memcmp(identifier, "volatile", 8)) | |
| tok->TokenType = tok_kw_volatile; | |
| break; | |
| case extern_key : | |
| if(!memcmp(identifier, "extern", 6)) | |
| tok->TokenType = tok_kw_extern; | |
| break; | |
| case for_key : | |
| if(!memcmp(identifier, "for", 3)) | |
| tok->TokenType = tok_kw_for; | |
| break; | |
| case sizeof_key : | |
| if(!memcmp(identifier, "sizeof", 6)) | |
| tok->TokenType = tok_kw_sizeof; | |
| break; | |
| case return_key : | |
| if(!memcmp(identifier, "return", 6)) | |
| tok->TokenType = tok_kw_return; | |
| break; | |
| case switch_key : | |
| if(!memcmp(identifier, "switch", 6)) | |
| tok->TokenType = tok_kw_switch; | |
| break; | |
| case while_key : | |
| if(!memcmp(identifier, "while", 5)) | |
| tok->TokenType = tok_kw_while; | |
| break; | |
| case do_key : | |
| if(!memcmp(identifier, "do", 2)) | |
| tok->TokenType = tok_kw_do; | |
| break; | |
| case typeof_key : | |
| if(!memcmp(identifier, "typeof", 6)) | |
| tok->TokenType = tok_kw_typeof; | |
| break; | |
| case inject_key : | |
| if(!memcmp(identifier, "inject", 6)) | |
| tok->TokenType = tok_kw_inject; | |
| break; | |
| case eject_key : | |
| if(!memcmp(identifier, "eject", 5)) | |
| tok->TokenType = tok_kw_eject; | |
| break; | |
| case assert_key : | |
| if(!memcmp(identifier, "assert", 6)) | |
| tok->TokenType = tok_kw_assert; | |
| break; | |
| case typedef_key : | |
| if(!memcmp(identifier, "typedef", 7)) | |
| tok->TokenType = tok_kw_typedef; | |
| break; | |
| case case_key : | |
| if(!memcmp(identifier, "case", 4)) | |
| tok->TokenType = tok_kw_case; | |
| break; | |
| case goto_key : | |
| if(!memcmp(identifier, "goto", 4)) | |
| tok->TokenType = tok_kw_goto; | |
| break; | |
| case static_key : | |
| if(!memcmp(identifier, "static", 6)) | |
| tok->TokenType = tok_kw_static; | |
| break; | |
| case inline_key : | |
| if(!memcmp(identifier, "inline", 6)) | |
| tok->TokenType = tok_kw_inline; | |
| break; | |
| case if_key : | |
| if(!memcmp(identifier, "if", 2)) | |
| tok->TokenType = tok_kw_if; | |
| break; | |
| case else_key : | |
| if(!memcmp(identifier, "else", 4)) | |
| tok->TokenType = tok_kw_else; | |
| break; | |
| case break_key : | |
| if(!memcmp(identifier, "break", 5)) | |
| tok->TokenType = tok_kw_break; | |
| break; | |
| case continue_key : | |
| if(!memcmp(identifier, "continue", 8)) | |
| tok->TokenType = tok_kw_continue; | |
| break; | |
| case until_key : | |
| if(!memcmp(identifier, "until", 5)) | |
| tok->TokenType = tok_kw_until; | |
| break; | |
| case yield_key : | |
| if(!memcmp(identifier, "yield", 5)) | |
| tok->TokenType = tok_kw_yield; | |
| break; | |
| case scope_key : | |
| if(!memcmp(identifier, "scope", 5)) | |
| tok->TokenType = tok_kw_scope; | |
| break; | |
| case __LINE___key : | |
| if(!memcmp(identifier, "__LINE__", 8)) | |
| tok->TokenType = tok_kw___LINE__; | |
| break; | |
| case __FUNCTION___key : | |
| if(!memcmp(identifier, "__FUNCTION__", 12)) | |
| tok->TokenType = tok_kw___FUNCTION__; | |
| break; | |
| case __METAC___key : | |
| if(!memcmp(identifier, "__METAC__", 9)) | |
| tok->TokenType = tok_kw___METAC__; | |
| break; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment