2023-12-09 17:24:41 +00:00
|
|
|
#ifndef RZ_PARSER_H
|
|
|
|
#define RZ_PARSER_H
|
|
|
|
|
|
|
|
#include "commons.h"
|
|
|
|
#include "err.h"
|
|
|
|
#include "lexer.h"
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
lexer_t* lexer;
|
|
|
|
err_t* err;
|
|
|
|
} parser_t;
|
|
|
|
|
|
|
|
void parser_init(parser_t* parser, lexer_t* lexer, err_t* err);
|
|
|
|
void parser_free(parser_t* parser);
|
|
|
|
|
|
|
|
node_t* parser_try_new_tree(parser_t* parser);
|
|
|
|
node_t* parser_try_new_mod(parser_t* parser);
|
|
|
|
node_t* parser_try_new_expr(parser_t* parser);
|
2023-12-11 17:01:22 +00:00
|
|
|
node_t* parser_try_new_assert(parser_t* parser);
|
2023-12-16 18:12:20 +00:00
|
|
|
node_t* parser_try_new_or(parser_t* parser);
|
|
|
|
node_t* parser_try_new_and(parser_t* parser);
|
2023-12-15 18:30:20 +00:00
|
|
|
node_t* parser_try_new_eqne(parser_t* parser);
|
2023-12-15 20:32:17 +00:00
|
|
|
node_t* parser_try_new_cmp(parser_t* parser);
|
2023-12-15 21:31:01 +00:00
|
|
|
node_t* parser_try_new_term(parser_t* parser);
|
|
|
|
node_t* parser_try_new_factor(parser_t* parser);
|
|
|
|
node_t* parser_try_new_power(parser_t* parser);
|
|
|
|
node_t* parser_try_new_unary(parser_t* parser);
|
|
|
|
node_t* parser_try_new_group(parser_t* parser);
|
2023-12-09 21:59:24 +00:00
|
|
|
node_t* parser_try_new_builtin(parser_t* parser);
|
2023-12-09 17:24:41 +00:00
|
|
|
|
|
|
|
node_t* parser_try_new_consume(parser_t* parser, NodeType type);
|
|
|
|
|
|
|
|
#endif
|