---
audience: engineers
summary: Characters, tokens, identifiers, literals, comments, and the rules the lexer
  enforces.
title: Lexical rules
path: reference/language/lexical-rules
status: published
---

### 1.1 Identifiers

```
IDENTIFIER      = [a-z_][a-zA-Z0-9_]*       // variables, fields, flow names
TYPE_IDENTIFIER = [A-Z][a-zA-Z0-9_]*         // types, enums, Core names
CORE_URI        = "core://" PATH             // Core-to-Core addressing
PLUGIN_URI      = IDENTIFIER "://" PATH      // Plugin addressing
```

### 1.2 Literals

| Literal | Syntax | Examples |
|---------|--------|---------|
| String | `"..."` | `"hello world"` |
| Multi-line string | `"""..."""` | `"""multi\nline"""` |
| Integer | `-?[0-9]+` | `42`, `-7`, `1_000_000` |
| Float | `-?[0-9]+\.[0-9]+` | `3.14`, `-0.5` |
| Boolean | `true \| false` | `true` |
| Null | `null` | `null` |
| Duration | `INTEGER UNIT` | `30s`, `5m`, `1h`, `7d`, `2w` |
| Date | `YYYY-MM-DD` | `2026-01-15` |
| DateTime | ISO 8601 | `2026-01-15T10:30:00Z` |
| Money | `FLOAT` with money type | `1500.00` (type provides currency) |
| Semver | `"MAJOR.MINOR.PATCH"` | `"1.2.3"` |

### 1.3 Comments

```scaicore
// Single-line comment

/* Multi-line
   comment */
```

### 1.4 Keywords (Reserved)

**Active in v0.1:**
```scaicore
@core @flow @transformer @evaluator @pipeline @types @test
@plugin_interface @core_interface @config @debug @budget
@rigid @guarded @flexible @parallel @foreach @match @while
@checkpoint @core_call @await_responses @try @mock
@conversation_policy @plugins @memory @llm @models @constraints
@reference @triggers @webhook @schedule @api @on @internal
@param @hot_reload @runtime_configurable @secret @model_call
@given @when @then @property
if else match return yield break continue emit
true false null
import from as pub type enum async instance
```

**Reserved for future versions:**
```
@adaptive @recipe @stream @cache @version goto
```

---