def AaParse.expand0
bend-osdev-apparmor@0.1.0.0 · parse.bend:404
import bend-osdev-apparmor@0.1.0.0/parse.bend as Parse
import Base
import bend-osdev-apparmor@0.1.0.0/error.bend as E
404
405def AaParse.expand0(items: List<&2, AaItem>, +scopes: List<&2, List<&2, List<&2, U32>>>, +acc: List<&2, AaItem>) -> AaExpOut:
406 match items:
407 case Nil{}:
408 AaExpOut{AaItem.rev_onto(acc, Nil{}), scopes}
409 case Con{it, rest}:
410 match it:
411 case AaIOpen{ts, src}:
412 AaParse.expand0(rest, Con{Nil{}, scopes}, Con{AaIOpen{ts, src}, acc})
413 case AaIClose{src}:
414 AaParse.expand0(rest, AaParse.pop(scopes), Con{AaIClose{src}, acc})
415 case AaIInclude{+name, opt, src}:
416 AaParse.expand0(rest, scopes, Bool.pick(List<&2, AaItem>, AaParse.seen(scopes, name), acc, Con{AaIError{E.AaSrc.include_depth(src)}, acc}))
417 case AaIStmt{ts, src}:
418 AaParse.expand0(rest, scopes, Con{AaIStmt{ts, src}, acc})
419 case AaIVar{ts, src}:
420 AaParse.expand0(rest, scopes, Con{AaIVar{ts, src}, acc})
421 case AaIError{e}:
422 AaParse.expand0(rest, scopes, Con{AaIError{e}, acc})