diff options
author | Adrian Thurston <thurston@colm.net> | 2020-12-22 15:24:51 -0800 |
---|---|---|
committer | Adrian Thurston <thurston@colm.net> | 2020-12-23 08:25:28 -0800 |
commit | b8827e38f676a9eb45a1120ecd0b0d7d7e454e57 (patch) | |
tree | cfc30685ca51a7b98b8c90fe9d49b9d8408310af /src/tree.h | |
parent | e2408c401b3f82742f7b7c03ff1ef5f461081e22 (diff) | |
download | colm-b8827e38f676a9eb45a1120ecd0b0d7d7e454e57.tar.gz |
added with_ignore(tree) iterator
This is identical to the basic tree iterator, except it visits ignore tokens.
This makes it possible to rewrite comments, albeit, primitively. Constructors
for tokens don't work right. Though we can set the data field.
The following code can be used to turn comments into newlines:
for I1: comment in with_ignore(Flux) {
I1.data = "\n"
}
Diffstat (limited to 'src/tree.h')
-rw-r--r-- | src/tree.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -234,6 +234,7 @@ tree_t *tree_right_ignore( struct colm_program *prg, tree_t *tree ); kid_t *tree_left_ignore_kid( struct colm_program *prg, tree_t *tree ); kid_t *tree_right_ignore_kid( struct colm_program *prg, tree_t *tree ); kid_t *tree_child( struct colm_program *prg, const tree_t *tree ); +kid_t *tree_child_maybe_ignore( struct colm_program *prg, const tree_t *tree, int with_ignore ); kid_t *tree_attr( struct colm_program *prg, const tree_t *tree ); kid_t *kid_list_concat( kid_t *list1, kid_t *list2 ); kid_t *tree_extract_child( struct colm_program *prg, tree_t *tree ); @@ -292,7 +293,7 @@ tree_t *list_remove_head( struct colm_program *prg, list_t *list ); tree_t *get_list_mem_split( struct colm_program *prg, list_t *list, word_t field ); tree_t *get_parser_mem( parser_t *parser, word_t field ); -tree_t *tree_iter_advance( struct colm_program *prg, tree_t ***psp, tree_iter_t *iter ); +tree_t *tree_iter_advance( struct colm_program *prg, tree_t ***psp, tree_iter_t *iter, int with_ignore ); tree_t *tree_iter_next_child( struct colm_program *prg, tree_t ***psp, tree_iter_t *iter ); tree_t *tree_rev_iter_prev_child( struct colm_program *prg, tree_t ***psp, rev_tree_iter_t *iter ); tree_t *tree_iter_next_repeat( struct colm_program *prg, tree_t ***psp, tree_iter_t *iter ); |