Renderingla

dum

Repeats a block while a condition remains true.

Aliases: while

Syntax: dum <condition> <block|ergo statement>

Category

control-flow

Related

Examples

examples/corpus/dum/dum.fab (canonical · keyword)

Repeats a block while a condition remains true.

# dum — while loop
#
# dum <condition> { <body> }
#
# GRAMMAR:
#   loopStmt :← 'dum' expr '{' stmt* '}'
#
# EXPECTED OUTPUT:
#   dum.expected

incipit {
    # Ascending counter: varia so the loop variable can mutate
    varia numerus computus ← 0

    dum computus < 5 {
        nota computus
        computus ← computus + 1
    }

    # Descending loop: condition becomes falsum at 0
    varia numerus reliquum ← 3

    dum reliquum > 0 {
        nota "reliquum: §"(reliquum)
        reliquum ← reliquum - 1
    }

    nota "perfectum!"
}

Expected output:

0
1
2
3
4
reliquum: 3
reliquum: 2
reliquum: 1
perfectum!