Files
noom/src/lexer.h
2026-04-21 22:57:49 +02:00

46 lines
1.1 KiB
C

#include "types.h"
#include "noom.h"
typedef enum noomL_TokenType {
NOOML_TOKEN_EOF = 0,
NOOML_TOKEN_KEYWORD,
NOOML_TOKEN_WHITESPACE,
NOOML_TOKEN_IDENTIFIER,
NOOML_TOKEN_STRING,
NOOML_TOKEN_SYMBOL,
NOOML_TOKEN_NUMBER,
NOOML_TOKEN_COMMENT,
NOOML_TOKEN_TCOUNT,
} noomL_TokenType;
typedef enum noomL_ErrorType {
NOOML_ERROR_NONE = 0,
NOOML_ERROR_UNKNOWN,
NOOML_ERROR_MALFORMED_NUM,
NOOML_ERROR_UNFINISHED_COMMENT
} noomL_ErrorType;
typedef struct noomL_Token {
noomL_TokenType type;
noom_uint_t offset;
noom_uint_t length;
} noomL_Token;
int noomL_isalpha(char c);
int noomL_isnumber(char c);
int noomL_isalphanum(char c);
int noomL_iswhitespace(char c);
int noomL_lower(char c);
int noomL_ishex(char c);
noom_uint_t noomL_getsymbol(const char* s, noom_LuaVersion version);
noom_uint_t noomL_getnumber(const char* s, noomL_ErrorType* error, noom_LuaVersion version);
const char *noomL_formatTokenType(noomL_TokenType token_type);
noomL_ErrorType noomL_lex(const char* s, noom_uint_t start, noomL_Token* token, noom_LuaVersion version); // TODO: add more error data