Renderingla

si

Starts a conditional branch that runs when its condition is true.

Aliases: if

Syntax: si <condition> <block>

Category

control-flow

Related

Examples

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

Starts a conditional branch that runs when its condition is true.

# Nested si (if) conditionals
#
# si <cond> { <body> }                    -- inner branch inside outer arm
# secus { <body> }
#
# GRAMMAR:
#   ifStmt :← 'si' expr block ('secus' block)?
#
# EXPECTED OUTPUT:
#   Access granted when intravit and licet are both verum.

incipit {
    # logged in
    fixum _ intravit ← verum
    # has permission
    fixum _ licet ← verum

    si intravit {
        # Inner branch: permission check after login succeeds
        si licet {
            nota "Access granted"
        }
        secus {
            nota "Permission denied"
        }
    }
    secus {
        # outer else: not logged in
        nota "Please log in"
    }
}

Expected output:

Access granted

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

Starts a conditional branch that runs when its condition is true.

# Basic si (if) conditionals
#
# si <condition> { <body> }   -- truthy branch
#
# GRAMMAR:
#   ifStmt :← 'si' expr block
#
# EXPECTED OUTPUT:
#   x maior quam 5, Adult, Can vote (si.expected).

incipit {
    # Simple truthy branch — only the first condition matches
    fixum _ x ← 10

    si x > 5 {
        nota "x maior quam 5"
    }

    si x > 20 {
        # skipped: 10 ≯ 20
        nota "x maior quam 20"
    }

    # Block body: multiple statements run together when condition holds
    fixum _ aetas ← 25

    si aetas ≥ 18 {
        nota "Adult"
        nota "Can vote"
    }
}

Expected output:

x maior quam 5
Adult
Can vote