void r3_tree_compile(node *n) { bool use_slug = r3_node_has_slug_edges(n); if ( use_slug ) { r3_tree_compile_patterns(n); } else { // use normal text matching... n->combined_pattern = NULL; } for (int i = 0 ; i < n->edge_len ; i++ ) { r3_tree_compile(n->edges[i]->child); } }
int r3_tree_compile(node *n, char **errstr) { int ret = 0; bool use_slug = r3_node_has_slug_edges(n); if ( use_slug ) { if ( (ret = r3_tree_compile_patterns(n, errstr)) ) { return ret; } } else { // use normal text matching... n->combined_pattern = NULL; } for (int i = 0 ; i < n->edge_len ; i++ ) { if ( (ret = r3_tree_compile(n->edges[i]->child, errstr)) ) { return ret; // stop here if error occurs } } return 0; }