def AaFile.parse
bend-osdev-apparmor@0.1.0.0 · rule_file.bend:422
import bend-osdev-apparmor@0.1.0.0/rule_file.bend as RuleFile
import Base
import bend-osdev-apparmor@0.1.0.0/perm.bend as P
import bend-osdev-apparmor@0.1.0.0/token.bend as T
import bend-osdev-apparmor@0.1.0.0/error.bend as E
422
423def AaFile.parse(ts: List<&2, T.AaTerm>, +q: P.AaQual, +src: E.AaSrc) -> Result<&2, &2, E.AaError, AaFileRule>:
424 match ts:
425 case Nil{}:
426 Done{AaFile.all(q)}
427 case Con{a, r1}:
428 match r1:
429 case Nil{}:
430 Fail{E.AaSrc.syntax(src)}
431 case Con{b, r2}:
432 match r2:
433 case Nil{}:
434 AaFile.pair(q, a, b, None{}, src)
435 case Con{arrow, r3}:
436 match r3:
437 case Nil{}:
438 Fail{E.AaSrc.syntax(src)}
439 case Con{tgt, r4}:
440 match r4:
441 case Nil{}:
442 AaFile.parse.arrow(T.AaTerm.is_arrow(arrow), q, a, b, tgt, src)
443 case Con{x, r5}:
444 Fail{E.AaSrc.syntax(src)}