skopy/lib/include/token.h

41 lines
1.0 KiB
C
Raw Permalink Normal View History

2024-03-31 21:10:56 +00:00
#ifndef SK_TOKEN_H
#define SK_TOKEN_H
#include "commons.h"
#define TOKEN_KIND(G) \
G(TOKEN_ROOT), \
2024-03-31 23:32:47 +00:00
G(TOKEN_INT), \
G(TOKEN_ADD), G(TOKEN_SUB), \
G(TOKEN_MUL), G(TOKEN_DIV), G(TOKEN_MOD), \
G(TOKEN_POW), G(TOKEN_OPAR), G(TOKEN_CPAR), \
2024-04-01 12:00:06 +00:00
G(TOKEN_ASSERT), G(TOKEN_ASSERT_EQ), \
G(TOKEN_BOOL), G(TOKEN_AND), G(TOKEN_OR), \
2024-04-01 21:33:43 +00:00
G(TOKEN_NOT), G(TOKEN_FLOAT), G(TOKEN_STRING), \
G(TOKEN_LT), G(TOKEN_LE), G(TOKEN_GT), G(TOKEN_GE), \
2024-04-02 15:33:31 +00:00
G(TOKEN_EQUAL), G(TOKEN_NOT_EQUAL), G(TOKEN_VAR), \
G(TOKEN_CONST), G(TOKEN_ASSIGN), G(TOKEN_IDENT), \
G(TOKEN_BEGIN), G(TOKEN_END), G(TOKEN_IF), G(TOKEN_ELSE), \
2024-04-07 18:43:13 +00:00
G(TOKEN_FUN), G(TOKEN_RETURN), G(TOKEN_COMMA), G(TOKEN_MODULE), \
G(TOKEN_MOD_ACCESS), G(TOKEN_IMPORT)
2024-03-31 21:10:56 +00:00
SK_ENUM_H(TokenKind, TOKEN_KIND);
struct token
{
TokenKind kind;
char* value;
int line;
};
2024-04-02 15:33:31 +00:00
void token_init(struct token* self,
TokenKind kind,
char const* value,
2024-03-31 21:10:56 +00:00
int line);
2024-03-31 23:32:47 +00:00
2024-03-31 21:10:56 +00:00
void token_free(struct token* self);
void token_str(struct token* self, struct str* dest);
#endif