#ifndef PORYGONLANG_TOKENKIND_HPP
#define PORYGONLANG_TOKENKIND_HPP

namespace Porygon::Parser {
    enum class TokenKind : uint8_t {
        EndOfFile,
        BadToken,
        WhiteSpace,

        PlusToken,
        MinusToken,
        SlashToken,
        StarToken,
        AssignmentToken,
        EqualityToken,
        InequalityToken,
        Less,
        LessEquals,
        Greater,
        GreaterEquals,

        OpenParenthesis,
        CloseParenthesis,
        OpenSquareBracket,
        CloseSquareBracket,
        OpenCurlyBracket,
        CloseCurlyBracket,

        PeriodToken,
        CommaToken,

        Identifier,

        Integer,
        Float,
        String,

        AndKeyword,
        BreakKeyword,
        DoKeyword,
        ElseKeyword,
        ElseIfKeyword,
        EndKeyword,
        FalseKeyword,
        ForKeyword,
        FunctionKeyword,
        IfKeyword,
        InKeyword,
        LocalKeyword,
        NilKeyword,
        NotKeyword,
        OrKeyword,
        ReturnKeyword,
        ThenKeyword,
        TrueKeyword,
        WhileKeyword,
    };
}

#endif //PORYGONLANG_TOKENKIND_HPP
