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# the terms after the qualifiers (and after `file`, if present)
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)}

Uses (13)

Used by (1)