valkyrie-ast 0.1.12

Strong typed abstract syntax tree of valkyrie language
Documentation


```scala
function fname(a, ...kws) {

}
```

```scala


for pattern in iterator if condition {
    run1
}
otherwise {
    run2
}


let iter = iterator.into_iterator();
let mut no_run = true;
@1
loop {
    @2
    
    @5
    if iter.next().is_none() {
        @6
        goto @4
        @7
    }
    @8
    no_run = false;
    run1
    @3
}
@4

@9
if no_run {
    @10
    run2
    @11
}
@12


```



```scala
'outer: for va in &a {
    for vb in &b {
        if va == vb {
            continue 'outer;
        }
    }
    print("{va}");
}
print("end");


let ret = ();
let mut iter_a = a.into_iter();
loop {
    @1
    let va = iter_a.next();
    if va.is_none() {
        goto @4;
    }
    let va = va.unwrap();
    let mut iter_b = b.into_iter();
    
    loop {
        @2
        let vb = iter_b.next();
        if vb.is_none() {
            goto @3
        }
        let vb = vb.unwrap();
        if va == vb {
            goto @1
        }
        goto @2
    }
    @3
    print("{va}");
    goto @1
}
@4
print("end");
@5
// do drops here
ret


// alloc ret and locals
    let ret = ();
.L0:
    let mut iter_a = a.into_iter();
.L1:
    let va = iter_a.next();
    @JUMP_IF_NONE(va, .L4);
    let va = va.unwrap();
    let mut iter_b = b.into_iter();
.L2:
    let vb = iter_b.next();
    @JUMP_IF_NONE(vb, 3);
    let vb = vb.unwrap();
    @JUMP_IF_EQ(va, vb, .L1);
    @JUMP(.L2);
.L3:
    print("{va}");
    @JUMP(.L1);
.L4:
    print("end");
.L5: 
    // do drops here
    ret


```