def scan_ph

cli@0.2.0.0 · cli.bend:1283

import cli@0.2.0.0/cli.bend as Cli
import Base

1283# The placeholder name in s up to close, reversed in rev. A name holds no
1284# space, '<', '>', '[', ']' or '=', and close is one of them.
1285def scan_ph(s: String, +pos: Nat, rev: String, +close: Char) -> PhScan:
1286  match s:
1287    case SNil{}: PhBad{pos}
1288    case SCon{Chr{32}, tail}: ph_stop(Char.is_eq(' ', close), rev, tail, pos)
1289    case SCon{Chr{60}, tail}: ph_stop(Char.is_eq('<', close), rev, tail, pos)
1290    case SCon{Chr{62}, tail}: ph_stop(Char.is_eq('>', close), rev, tail, pos)
1291    case SCon{Chr{91}, tail}: ph_stop(Char.is_eq('[', close), rev, tail, pos)
1292    case SCon{Chr{93}, tail}: ph_stop(Char.is_eq(']', close), rev, tail, pos)
1293    case SCon{Chr{61}, tail}: ph_stop(Char.is_eq('=', close), rev, tail, pos)
1294    case SCon{h, tail}: scan_ph(tail, Nat.add(pos, 1n), SCon{h, rev}, close)

Uses (11)

Used by (3)