summaryrefslogtreecommitdiff
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2020-12-22 15:24:51 -0800
committerAdrian Thurston <thurston@colm.net>2020-12-23 08:25:28 -0800
commitb8827e38f676a9eb45a1120ecd0b0d7d7e454e57 (patch)
treecfc30685ca51a7b98b8c90fe9d49b9d8408310af /src/bytecode.c
parente2408c401b3f82742f7b7c03ff1ef5f461081e22 (diff)
downloadcolm-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/bytecode.c')
-rw-r--r--src/bytecode.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 39aee070..f9a90d4f 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -2155,7 +2155,19 @@ again:
debug( prg, REALM_BYTECODE, "IN_TRITER_ADVANCE\n" );
tree_iter_t *iter = (tree_iter_t*) vm_get_plocal(exec, field);
- tree_t *res = tree_iter_advance( prg, &sp, iter );
+ tree_t *res = tree_iter_advance( prg, &sp, iter, false );
+ //colm_tree_upref( prg, res );
+ vm_push_tree( res );
+ break;
+ }
+ case IN_TRITER_WIG_ADVANCE: {
+ short field;
+ read_half( field );
+
+ debug( prg, REALM_BYTECODE, "IN_TRITER_WIG_ADVANCE\n" );
+
+ tree_iter_t *iter = (tree_iter_t*) vm_get_plocal(exec, field);
+ tree_t *res = tree_iter_advance( prg, &sp, iter, true );
//colm_tree_upref( prg, res );
vm_push_tree( res );
break;