module ymir.syntax.Keys;
import ymir.syntax.Tokens;
import std.typecons;

enum Keys  {
    IMPORT = Token ("import", 1),
    STRUCT = Token ("struct", 3),
    DEF = Token ("def", 4),
    IF = Token ("if", 7),
    RETURN = Token ("return", 8),
    FOR = Token ("for", 9),
    WHILE = Token ("while", 11),
    BREAK = Token ("break", 12),
    MATCH = Token ("match", 15),
    IN = Token ("in", 17),
    ELSE = Token ("else", 18),
    TRUE = Token ("true", 20),
    FALSE = Token ("false", 21),
    NULL = Token ("null", 22),
    CAST = Token ("cast", 23),
    FUNCTION = Token ("fn", 24),
    LET = Token ("let", 25),
    IS = Token ("is", 26),
    NOT_IS = Tokens ("!is", 27),
    ANTI = Token ("\\", 28),
    LX = Token ("x", 29),
    EXTERN = Token ("extern", 31),
    MAIN = Token ("main", 32),
    PUBLIC = Token ("public", 33),
    PRIVATE = Token ("private", 34),
    EXPAND = Token ("expand", 35),
    ENUM = Token ("enum", 36),
    UNDER = Token ("_", 37),
    OPBINARY = Token ("opBinary", 38),
    OPBINARYR = Token ("opBinaryRight", 39),
    ASSERT = Token ("assert", 40),
    STATIC = Token ("static", 41),
    OPACCESS = Token ("opIndex", 42),
    OPRANGE = Token ("opRange", 43),
    OPTEST = Token ("opTest", 44),
    OPUNARY = Token ("opUnary", 45),
    OPEQUAL = Token ("opEquals", 46),
    OPCALL = Token ("opCall", 47),
    TYPEOF = Token ("typeof", 48),
    CONST = Token ("const", 49),
    IMMUTABLE = Token ("imut", 50),
    REF = Token ("ref", 51),
    PROTECTED = Token ("protected", 53),
    MIXIN = Token ("mixin", 54),
    OF = Token ("of", 55),
    SELF = Token ("self", 56),
    OPASSIGN = Token ("opAssign", 57),
    TRAIT = Token ("trait", 58),
    IMPL = Token ("impl", 59),
    TUPLE = Token ("tuple", 60),
    OVER = Token ("over", 61),
    FROM = Token ("from", 62),
    DLANG = Token ("D", 63)
}
