27 lines
639 B
C
27 lines
639 B
C
#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);
|
|
struct node* parser_try_new_expr(struct parser* self);
|
|
struct node* parser_try_new_call(struct parser* self);
|
|
struct node* parser_try_new_atom(struct parser* self);
|
|
|
|
#endif
|