def AaParse.head

bend-osdev-apparmor@0.1.0.0 · parse.bend:1425

import bend-osdev-apparmor@0.1.0.0/parse.bend as Parse
import Base
import bend-osdev-apparmor@0.1.0.0/token.bend as T
import bend-osdev-apparmor@0.1.0.0/error.bend as E

1425# the head of a block, at the top level or inside a profile
1426def AaParse.head(ts: List<&2, T.AaTerm>, +top: Bool, +src: E.AaSrc) -> Result<&2, &2, E.AaError, AaHead>:
1427  match ts:
1428    case Nil{}:
1429      Fail{E.AaSrc.syntax(src)}
1430    case Con{t, rest}:
1431      match t:
1432        case T.AaTmWord{+w}:
1433          AaParse.head.word(w, T.AaTmWord{w}, rest, top, src)
1434        case T.AaTmQuoted{+q}:
1435          Bool.pick(Result<&2, &2, E.AaError, AaHead>, top, AaParse.head.path(T.AaTmQuoted{q}, rest, src), Fail{E.AaSrc.syntax(src)})
1436        case _:
1437          Fail{E.AaSrc.syntax(src)}

Uses (11)

Used by (1)