Made traversal free

This commit is contained in:
petermlm
2016-05-31 22:32:24 +01:00
parent 38764e5ecb
commit 913cc58824
3 changed files with 33 additions and 1 deletions

View File

@@ -8,7 +8,7 @@ int main(int argc, char *argv[]) {
mpc_ast_t *ast, *tree, *child, *child_sub, *ast_next;
mpc_ast_trav_t *trav;
mpc_result_t r;
int index, lb;
int index, lb, i;
mpca_lang(MPCA_LANG_PREDICTIVE,
" node : '(' <node> ',' /foo/ ',' <node> ')' | <leaf>;"
@@ -79,6 +79,8 @@ int main(int argc, char *argv[]) {
ast_next = mpc_ast_traverse_next(&trav);
}
mpc_ast_traverse_free(&trav);
printf("Post order tree traversal.\n");
trav = mpc_ast_traverse_start(ast, mpc_ast_trav_order_post);
@@ -92,6 +94,23 @@ int main(int argc, char *argv[]) {
ast_next = mpc_ast_traverse_next(&trav);
}
mpc_ast_traverse_free(&trav);
printf("Partial traversal.\n");
trav = mpc_ast_traverse_start(ast, mpc_ast_trav_order_post);
ast_next = mpc_ast_traverse_next(&trav);
for(i=0; i<2 && ast_next != NULL; i++) {
printf("Tag: %s; Contents: %s\n",
ast_next->tag,
ast_next->contents);
ast_next = mpc_ast_traverse_next(&trav);
}
mpc_ast_traverse_free(&trav);
/* Clean up and return */
mpc_cleanup(3, Node, Leaf, Input);
mpc_ast_delete(ast);