2 space indentation

This commit is contained in:
petermlm
2016-04-17 18:51:04 +01:00
parent af6489125f
commit aa17e0723e
2 changed files with 67 additions and 67 deletions

View File

@@ -2,72 +2,72 @@
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
mpc_parser_t *Input = mpc_new("input"); mpc_parser_t *Input = mpc_new("input");
mpc_parser_t *Node = mpc_new("node"); mpc_parser_t *Node = mpc_new("node");
mpc_parser_t *Leaf = mpc_new("leaf"); mpc_parser_t *Leaf = mpc_new("leaf");
mpc_ast_t *ast, *tree, *child, *child_sub; mpc_ast_t *ast, *tree, *child, *child_sub;
mpc_result_t r; mpc_result_t r;
int index, lb; int index, lb;
mpca_lang(MPCA_LANG_PREDICTIVE, mpca_lang(MPCA_LANG_PREDICTIVE,
" node : '(' <node> ',' /foo/ ',' <node> ')' | <leaf>;" " node : '(' <node> ',' /foo/ ',' <node> ')' | <leaf>;"
" leaf : /bar/;" " leaf : /bar/;"
" input : /^/ <node> /$/;", " input : /^/ <node> /$/;",
Node, Leaf, Input, NULL); Node, Leaf, Input, NULL);
if (argc > 1) { if (argc > 1) {
if (mpc_parse_contents(argv[1], Input, &r)) {
ast = r.output;
} else {
mpc_err_print(r.error);
mpc_err_delete(r.error);
mpc_cleanup(3, Node, Leaf, Input);
return EXIT_FAILURE;
}
if (mpc_parse_contents(argv[1], Input, &r)) {
ast = r.output;
} else { } else {
mpc_err_print(r.error);
if (mpc_parse_pipe("<stdin>", stdin, Input, &r)) { mpc_err_delete(r.error);
ast = r.output; mpc_cleanup(3, Node, Leaf, Input);
} else { return EXIT_FAILURE;
mpc_err_print(r.error);
mpc_err_delete(r.error);
mpc_cleanup(3, Node, Leaf, Input);
return EXIT_FAILURE;
}
} }
/* Get index or child of tree */ } else {
tree = ast->children[1];
index = mpc_ast_get_index(tree, "node|>"); if (mpc_parse_pipe("<stdin>", stdin, Input, &r)) {
child = mpc_ast_get_child(tree, "node|>"); ast = r.output;
} else {
if(child == NULL) { mpc_err_print(r.error);
mpc_cleanup(3, Node, Leaf, Input); mpc_err_delete(r.error);
mpc_ast_delete(ast); mpc_cleanup(3, Node, Leaf, Input);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
printf("Index: %d; Child: \"%s\"\n", index, child->tag); }
/* Get multiple indexes or children of trees */ /* Get index or child of tree */
index = mpc_ast_get_index_lb(child, "node|leaf|regex", 0); tree = ast->children[1];
child_sub = mpc_ast_get_child_lb(child, "node|leaf|regex", 0);
while(index != -1) { index = mpc_ast_get_index(tree, "node|>");
printf("-- Index: %d; Child: \"%s\"\n", index, child_sub->tag); child = mpc_ast_get_child(tree, "node|>");
lb = index + 1; if(child == NULL) {
index = mpc_ast_get_index_lb(child, "node|leaf|regex", lb);
child_sub = mpc_ast_get_child_lb(child, "node|leaf|regex", lb);
}
/* Clean up and return */
mpc_cleanup(3, Node, Leaf, Input); mpc_cleanup(3, Node, Leaf, Input);
mpc_ast_delete(ast); mpc_ast_delete(ast);
return EXIT_FAILURE;
}
return EXIT_SUCCESS; printf("Index: %d; Child: \"%s\"\n", index, child->tag);
/* Get multiple indexes or children of trees */
index = mpc_ast_get_index_lb(child, "node|leaf|regex", 0);
child_sub = mpc_ast_get_child_lb(child, "node|leaf|regex", 0);
while(index != -1) {
printf("-- Index: %d; Child: \"%s\"\n", index, child_sub->tag);
lb = index + 1;
index = mpc_ast_get_index_lb(child, "node|leaf|regex", lb);
child_sub = mpc_ast_get_child_lb(child, "node|leaf|regex", lb);
}
/* Clean up and return */
mpc_cleanup(3, Node, Leaf, Input);
mpc_ast_delete(ast);
return EXIT_SUCCESS;
} }

28
mpc.c
View File

@@ -2777,35 +2777,35 @@ void mpc_ast_print_to(mpc_ast_t *a, FILE *fp) {
} }
int mpc_ast_get_index(mpc_ast_t *ast, const char *tag) { int mpc_ast_get_index(mpc_ast_t *ast, const char *tag) {
return mpc_ast_get_index_lb(ast, tag, 0); return mpc_ast_get_index_lb(ast, tag, 0);
} }
int mpc_ast_get_index_lb(mpc_ast_t *ast, const char *tag, int lb) { int mpc_ast_get_index_lb(mpc_ast_t *ast, const char *tag, int lb) {
int i; int i;
for(i=lb; i<ast->children_num; i++) { for(i=lb; i<ast->children_num; i++) {
if(strcmp(ast->children[i]->tag, tag) == 0) { if(strcmp(ast->children[i]->tag, tag) == 0) {
return i; return i;
}
} }
}
return -1; return -1;
} }
mpc_ast_t *mpc_ast_get_child(mpc_ast_t *ast, const char *tag) { mpc_ast_t *mpc_ast_get_child(mpc_ast_t *ast, const char *tag) {
return mpc_ast_get_child_lb(ast, tag, 0); return mpc_ast_get_child_lb(ast, tag, 0);
} }
mpc_ast_t *mpc_ast_get_child_lb(mpc_ast_t *ast, const char *tag, int lb) { mpc_ast_t *mpc_ast_get_child_lb(mpc_ast_t *ast, const char *tag, int lb) {
int i; int i;
for(i=lb; i<ast->children_num; i++) { for(i=lb; i<ast->children_num; i++) {
if(strcmp(ast->children[i]->tag, tag) == 0) { if(strcmp(ast->children[i]->tag, tag) == 0) {
return ast->children[i]; return ast->children[i];
}
} }
}
return NULL; return NULL;
} }
mpc_val_t *mpcf_fold_ast(int n, mpc_val_t **xs) { mpc_val_t *mpcf_fold_ast(int n, mpc_val_t **xs) {