2024-03-26 18:31:33 +00:00
|
|
|
#ifndef MK_PARSER_H
|
|
|
|
#define MK_PARSER_H
|
|
|
|
|
|
|
|
#include "commons.h"
|
|
|
|
#include "node.h"
|
|
|
|
#include "lexer.h"
|
|
|
|
|
|
|
|
struct parser
|
|
|
|
{
|
|
|
|
struct lexer* lexer;
|
|
|
|
};
|
|
|
|
|
|
|
|
void parser_init(struct parser* self, struct lexer* lexer);
|
|
|
|
void parser_free(struct parser* self);
|
|
|
|
|
|
|
|
struct node* parser_try_new_parse(struct parser* self);
|
|
|
|
|
|
|
|
struct node* parser_try(struct parser* self,
|
|
|
|
struct node* (*rule)(struct parser*));
|
|
|
|
|
|
|
|
struct node* parser_try_new_root(struct parser* self);
|
2024-03-27 10:49:10 +00:00
|
|
|
struct node* parser_try_new_expr(struct parser* self);
|
|
|
|
struct node* parser_try_new_call(struct parser* self);
|
2024-03-26 18:31:33 +00:00
|
|
|
struct node* parser_try_new_atom(struct parser* self);
|
|
|
|
|
|
|
|
#endif
|