roza/lib/lexer.h

33 lines
760 B
C
Raw Permalink Normal View History

2023-12-09 17:24:41 +00:00
#ifndef RZ_LEXER_H
#define RZ_LEXER_H
#include "commons.h"
#include "node.h"
#include "err.h"
typedef struct {
err_t* err;
char* source;
size_t cursor;
int line;
} lexer_t;
void lexer_init(lexer_t* lexer, char const* source, err_t* err);
void lexer_free(lexer_t* lexer);
node_t* lexer_try_new_next(lexer_t* lexer);
2023-12-09 21:59:24 +00:00
NodeType lexer_peek(lexer_t* lexer, int lookahead);
2023-12-11 17:01:22 +00:00
void lexer_skip_spaces(lexer_t* lexer);
2023-12-15 21:31:01 +00:00
void lexer_skip_next(lexer_t* lexer);
2023-12-09 21:59:24 +00:00
node_t* lexer_try_new_keyword(lexer_t* lexer, char* kw,
NodeType type, int has_value,
int is_kw);
2023-12-09 17:24:41 +00:00
2023-12-10 03:49:28 +00:00
node_t* lexer_try_new_str(lexer_t* lexer);
node_t* lexer_try_new_ident(lexer_t* lexer);
2023-12-10 03:49:28 +00:00
int lexer_is_sep(lexer_t* lexer, size_t idx);
2023-12-09 17:24:41 +00:00
#endif