Literals
Strings
F-strings (interpolated strings)
f"..." with {expr} for interpolation. Double braces {{ and }} produce literal { and }.
Heredocs
<<EOT preserves indentation. <<-EOT strips leading indentation from every line:
Numbers
TokenNumber. The declared type in input determines how the value is parsed.
Booleans
Null
Lists
Objects
= (not :).
Reference expressions
Bare identifier
A bare name resolves to a resource binding or module name in the current stack:Qualified input reference
Qualified locals reference
Member access (dot)
Index access
Cross-stack reference
stack "networking" not found — expected a sibling directory named "networking""endpoint" is not an output of stack "networking" — declared outputs are: [vpc_id, subnet_ids]
Arithmetic operators
| Operator | Example |
|---|---|
+ | input.count + 1 |
- | input.max - input.min |
* | input.size * 1024 |
/ | input.total / 2 |
% | input.count % 3 |
Comparison operators
| Operator | Example |
|---|---|
== | input.env == "prod" |
!= | input.env != "test" |
< | input.count < 10 |
> | input.count > 0 |
<= | input.size <= 100 |
>= | input.version >= 2 |
Logical operators
Null coalescing
null, otherwise the right operand.
Ternary expression
locals block.
Match expression
default arm is optional but recommended. Arms are evaluated in order; the first match wins. Generated Python uses nested ternaries.
Match expressions are not allowed in resource properties. Move them to a locals block.

