diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-05-06 11:58:47 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-05-06 13:00:06 +0300 |
commit | 52c12573a505bf29a0301a1c9553e88c3270713e (patch) | |
tree | 642047e5b3de469199b68a76064f756990a3b249 /src/lookup.c | |
parent | 8465fa7066d3c922b738346335f801cf9ea2243f (diff) | |
download | grecs-52c12573a505bf29a0301a1c9553e88c3270713e.tar.gz grecs-52c12573a505bf29a0301a1c9553e88c3270713e.tar.bz2 |
Rewrite list support to keep doubly-linked lists. Implement tree reduction.
* src/format.c (grecs_format_node)
(grecs_format_node_path): Handle grecs_node_root.
* src/grecs-gram.y (input production): Create root node.
* src/grecs.h (grecs_list_entry)<prev>: New member.
(grecs_node_root): New node type.
(grecs_node_eq): New proto.
(grecs_list_add,grecs_tree_reduce): New protos.
* src/list.c: Rewrite as a doubly-linked list.
* src/tree.c (grecs_node_bind): Bugfix.
(grecs_node_unlink): New function.
(_tree_recurse): Allow for removal of the current node.
(grecs_node_eq): New function.
(grecs_tree_reduce): New function.
(grecs_tree_process): Descend into the first subnode at once.
* src/lookup.c (node_finder): Handle grecs_node_root.
* tests/reduce00.at: New testcase.
* tests/reduce01.at: New testcase.
* tests/reduce02.at: New testcase.
* tests/testsuite.at (GRECS_TEST): New macro.
Include reduce0[0-2].at.
* tests/gcffmt.c: New option -reduce.
* tests/gcfpeek.c: Likewise.
* tests/gcfset.c: Likewise.
Diffstat (limited to 'src/lookup.c')
-rw-r--r-- | src/lookup.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lookup.c b/src/lookup.c index 7795274..b2621da 100644 --- a/src/lookup.c +++ b/src/lookup.c @@ -231,7 +231,7 @@ node_finder(enum grecs_tree_recurse_op op, struct grecs_node *node, void *data) { struct find_closure *fdptr = data; - if (op == grecs_tree_recurse_post) + if (op == grecs_tree_recurse_post || node->type == grecs_node_root) return grecs_tree_recurse_ok; if (strcmp(fdptr->argv[fdptr->tag], node->ident) == 0 |