Renderingla

sin

Adds an else-if branch after a previous si branch.

Aliases: else if

Syntax: sin <condition> <block>

Category

control-flow

Related

Examples

examples/corpus/si/sin.fab (canonical · keyword)

Adds an else-if branch after a previous si branch.

# si-sin-secus (poetic if-else-if chain)
#
# si <cond> { }
# sin <cond> { }
# secus { }
#
# GRAMMAR:
#   ifStmt :← 'si' expr block ('sin' expr block)* ('secus' block)?
#
# EXPECTED OUTPUT:
#   Afternoon (hour=14 matches first sin branch).

incipit {
    fixum _ hour ← 14

    si hour < 6 {
        nota "Late night"
    }
    sin hour < 12 {
        nota "Morning"
    }
    sin hour < 18 {
        # 14 ≥ 12 and 14 < 18
        nota "Afternoon"
    }
    sin hour < 22 {
        nota "Evening"
    }
    secus {
        nota "Night"
    }
}

Expected output:

Afternoon

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

Adds an else-if branch after a previous si branch.

# sin — else-if branch
#
# GRAMMAR:
#   elseIfClause :← 'sin' expr block
#
# EXPECTED OUTPUT:
#   Scalar stdout smoke (see body).
#
# BACKEND:
#   Cross-ref: si/sin.fab.
#

incipit {
    fixum _ score ← 85
    si score ≥ 90 {
        nota "excellent"
    }
    sin score ≥ 80 {
        nota "good"
    }
    secus {
        nota "needs work"
    }
}

Expected output:

good