Expand description
Abstract syntax tree for the Polydat DSL.
Structs§
- Binding
- A name-to-expression binding (per-cycle by default;
const/shared/volatilemodifier changes the lifecycle). Replaces the formerCycleBindingandInitBindingAST variants — the surface unified to one shapename := expr(or(a, b, c) := exprfor tuple destructuring), with the modifier driving runtime lifecycle. - Binding
Modifier - Set of wire modifiers carried by one binding declaration.
Stored as a bitset under the hood; consumers use
Self::hasto test for individual modifiers andSelf::insert/Self::from_iterto build instances. - Call
Expr - A function call expression.
- Cursor
Decl - A cursor declaration:
cursor name = Cursor() [over partition_source] - Extern
Port - An external input port declaration.
- ForSource
- What a
foriterates: inline comprehension text, or the name of a bound producer wire. - ForStmt
- A traversal statement:
for <source> { statements }. - Input
Decl - One per-cycle kernel input slot.
- Module
Def - A formal module definition with typed interface.
- Polydat
File - A complete
.polydatfile. - TileDef
- A tile definition: its header, its raw body, and the parsed template.
- Tile
Hole - A hole: an expression with an optional declared type, format spec, and raw flag.
- Tile
Options - Per-tile template options (SRD 114 §2.3): the hole delimiters, the directive sigil, and strictness.
- Typed
Param - A typed parameter in a module signature.
Enums§
- Arg
- A function argument: positional or named.
- BinOp
Kind - Binary arithmetic operator kind.
- Expr
- An expression (right-hand side of a binding).
- ForSource
Kind - The parsed form of a
forsource. - Statement
- A top-level statement.
- Tile
Body Kind - How a tile body was written, so the printer can reproduce it.
- Tile
Piece - One element of a parsed template.
- Wire
Modifier - One wire-coloring keyword. The single enum that names every modifier the grammar recognises before a binding name. Future modifiers are new variants here.