74 lines
1.3 KiB
C
74 lines
1.3 KiB
C
#ifndef UNDAR_LEXER_H
|
|
#define UNDAR_LEXER_H
|
|
|
|
typedef enum {
|
|
TOKEN_EOF,
|
|
TOKEN_IDENTIFIER,
|
|
TOKEN_INT_LITERAL,
|
|
TOKEN_UINT_LITERAL,
|
|
TOKEN_FLOAT_LITERAL,
|
|
TOKEN_STRING_LITERAL,
|
|
TOKEN_TYPE_INT,
|
|
TOKEN_TYPE_NAT,
|
|
TOKEN_TYPE_REAL,
|
|
TOKEN_TYPE_STR,
|
|
TOKEN_KEYWORD_PLEX,
|
|
TOKEN_KEYWORD_FN,
|
|
TOKEN_KEYWORD_CONST,
|
|
TOKEN_KEYWORD_IF,
|
|
TOKEN_KEYWORD_ELSE,
|
|
TOKEN_KEYWORD_WHILE,
|
|
TOKEN_KEYWORD_FOR,
|
|
TOKEN_KEYWORD_RETURN,
|
|
TOKEN_KEYWORD_USE,
|
|
TOKEN_KEYWORD_INIT,
|
|
TOKEN_KEYWORD_THIS,
|
|
TOKEN_KEYWORD_OPEN,
|
|
TOKEN_KEYWORD_READ,
|
|
TOKEN_KEYWORD_WRITE,
|
|
TOKEN_KEYWORD_REFRESH,
|
|
TOKEN_KEYWORD_CLOSE,
|
|
TOKEN_KEYWORD_NIL,
|
|
TOKEN_KEYWORD_TRUE,
|
|
TOKEN_KEYWORD_FALSE,
|
|
TOKEN_OPERATOR_IS,
|
|
TOKEN_OPERATOR_NOT,
|
|
TOKEN_OPERATOR_AND,
|
|
TOKEN_OPERATOR_OR,
|
|
TOKEN_BANG,
|
|
TOKEN_BANG_EQ,
|
|
TOKEN_EQ,
|
|
TOKEN_EQ_EQ,
|
|
TOKEN_GT,
|
|
TOKEN_LT,
|
|
TOKEN_GTE,
|
|
TOKEN_LTE,
|
|
TOKEN_DOT,
|
|
TOKEN_COMMA,
|
|
TOKEN_COLON,
|
|
TOKEN_SEMICOLON,
|
|
TOKEN_PLUS,
|
|
TOKEN_MINUS,
|
|
TOKEN_STAR,
|
|
TOKEN_SLASH,
|
|
TOKEN_LPAREN,
|
|
TOKEN_RPAREN,
|
|
TOKEN_LBRACE,
|
|
TOKEN_RBRACE,
|
|
TOKEN_LBRACKET,
|
|
TOKEN_RBRACKET,
|
|
TOKEN_ERROR
|
|
} TokenType;
|
|
|
|
typedef struct {
|
|
TokenType type;
|
|
const char *start;
|
|
int length;
|
|
int line;
|
|
} Token;
|
|
|
|
void initLexer(const char *source);
|
|
Token nextToken();
|
|
const char* tokenTypeToString(TokenType type);
|
|
|
|
#endif |