Initial commit for recording parse state in ast
This commit is contained in:
7
mpc.h
7
mpc.h
@@ -243,6 +243,7 @@ mpc_parser_t *mpc_re(const char *re);
|
||||
typedef struct mpc_ast_t {
|
||||
char *tag;
|
||||
char *contents;
|
||||
mpc_state_t state;
|
||||
int children_num;
|
||||
struct mpc_ast_t** children;
|
||||
} mpc_ast_t;
|
||||
@@ -253,18 +254,24 @@ mpc_ast_t *mpc_ast_add_root(mpc_ast_t *a);
|
||||
mpc_ast_t *mpc_ast_add_child(mpc_ast_t *r, mpc_ast_t *a);
|
||||
mpc_ast_t *mpc_ast_add_tag(mpc_ast_t *a, const char *t);
|
||||
mpc_ast_t *mpc_ast_tag(mpc_ast_t *a, const char *t);
|
||||
mpc_ast_t *mpc_ast_state(mpc_ast_t *a, mpc_state_t s);
|
||||
|
||||
void mpc_ast_delete(mpc_ast_t *a);
|
||||
void mpc_ast_print(mpc_ast_t *a);
|
||||
|
||||
/*
|
||||
** Warning: This function currently doesn't test for equality of the `state` member!
|
||||
*/
|
||||
int mpc_ast_eq(mpc_ast_t *a, mpc_ast_t *b);
|
||||
|
||||
mpc_val_t *mpcf_fold_ast(int n, mpc_val_t **as);
|
||||
mpc_val_t *mpcf_str_ast(mpc_val_t *c);
|
||||
mpc_val_t *mpcf_state_ast(int n, mpc_val_t **xs);
|
||||
|
||||
mpc_parser_t *mpca_tag(mpc_parser_t *a, const char *t);
|
||||
mpc_parser_t *mpca_add_tag(mpc_parser_t *a, const char *t);
|
||||
mpc_parser_t *mpca_root(mpc_parser_t *a);
|
||||
mpc_parser_t *mpca_state(mpc_parser_t *a);
|
||||
mpc_parser_t *mpca_total(mpc_parser_t *a);
|
||||
|
||||
mpc_parser_t *mpca_not(mpc_parser_t *a);
|
||||
|
Reference in New Issue
Block a user