54 lines
1.3 KiB
C
54 lines
1.3 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_ERROR_UNFINISHED_STRING,
|
|
NOOML_ERROR_UNFINISHED_LONG_STRING,
|
|
|
|
NOOML_ERROR_DECIMAL_ESCAPE_TOO_BIG,
|
|
NOOML_ERROR_HEX_ESCAPE_INVALID,
|
|
NOOML_ERROR_UNICODE_ESCAPE_UNOPENED,
|
|
NOOML_ERROR_UNICODE_ESCAPE_UNCLOSED,
|
|
NOOML_ERROR_UNICODE_ESCAPE_TOO_BIG,
|
|
} 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
|
|
|