# PTCommand

The generic representation for every other control-block statement ([the parser](dflparser.md)'s `command` rule): a name, an optional bareword `keywords` list, an optional expression list *or* a [`PTSaves`](ptload.md) (a `save` statement folded into a `PTCommand` using the shared static `saveCmd` identifier - see [Parser](dflparser.md) and [Identifiers](identifier.md)), and an optional [parameter list](ptparameters.md). `ControlEntry` is `std::variant<PTAnalysis, PTCommand>`, and `PTControl` (`std::vector<ControlEntry>`) is what the whole control block is stored as, in source order. [`PTAnalysis`](ptanalysis.md) statements keep their own richer type rather than being flattened into a generic `PTCommand`, since analyses need a name-uniqueness check across the whole control block (see [`ParserTables::verifyWorker()`](parsertables.md)) and carry sweeps as first-class data other control-block code inspects directly.
