---
audience: engineers
summary: 'Statements available inside @rigid and @debug blocks: assignment, return,
  yield, emit, log, conditional, calls, memory ops.'
title: Statements
path: reference/language/statements
status: published
---

| Statement | Syntax | Context |
|-----------|--------|---------|
| Assignment | `x = expression` | Everywhere |
| Return | `return expression` | Flows, transformers, evaluators |
| Yield | `yield expression` | `@parallel`, `@foreach` |
| Break | `break` | `@while`, `@foreach` |
| Continue | `continue` | `@while`, `@foreach` |
| If/Else | `if cond { ... } else { ... }` | Inside blocks |
| Match | `match expr { pattern => expr }` | Everywhere |
| Emit | `emit event_name { fields }` | Inside flows |

### 8.1 `emit` — Fire Event

Emits an asynchronous event. Fire-and-forget — does not wait for delivery.
Any Core subscribed via `@on` will receive the event.

```scaicore
// Emit a simple event
emit invoice_processed {
    invoice_id = result.invoice_id
    vendor = result.vendor
    total = result.total
    processed_at = now()
}

// Emit conditionally
if escalated {
    emit escalation_triggered {
        customer_id = customer.id
        reason = escalation_reason
        severity = :high
    }
}
```

**Properties:**
- Fire-and-forget (no return value, no delivery confirmation)
- At-least-once delivery (events may be delivered more than once)
- Per-source ordering (events from same Core arrive in order)
- Transport handled by Host's EventBus implementation

---