> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Keywords

> Reference for all ArcScript keywords, including conditionals, loops, flow control, and feed manipulation commands.

export const siteNameShort = "Arc";

Statements in {siteNameShort}Script are defined using *keywords*, which are XML elements prefixed with `arc:`. Keywords include the usual features of a programming or scripting language, such as conditionals, loops, and flow control. However, {siteNameShort}Script also includes special keywords tailored specifically for feed manipulation and generation: for example, [arc:call](./op-arc-call), [arc:enum](./op-arc-enum), and [arc:set](./op-arc-set).

Most keywords take parameters that define or affect their behavior. Parameters are specified as XML attributes of the keyword element. The required and optional parameters, along with code examples, for each keyword are explained in this section.

## Keyword Scope

In {siteNameShort}Script, some keywords introduce scope; that is, some keywords can be nested inside the bodies of other keywords, and how they are nested is meaningful to the language:

* You can define instructions for an iteration within a keyword's scope: For example, the body of an [arc:call](./op-arc-call) keyword is executed for each item in the feed produced by the operation invoked by [arc:call](./op-arc-call). Because of this, keywords nested inside [arc:call](./op-arc-call) are executed for each iteration to produce each item in the feed.
* Scope associates matching pairs of keywords: for example, the [arc:else](./op-arc-else) keyword defines an alternate execution path for a conditional keyword like [arc:equals](./op-arc-equals) or [arc:check](./op-arc-check). In ArcScript, a certain [arc:else](./op-arc-else) keyword is associated with a conditional statement when it is nested as a direct child of the conditional statement. This means the [arc:else](./op-arc-else) keyword must not be defined outside of the scope introduced by a conditional keyword.
* Keywords can introduce new items (variables) within their scope. For example, the [arc:call](./op-arc-call) keyword introduces a default output item representing the item being iterated over in the feed being generated.
* Keywords can inject additional attributes into the default item that provide more information within their scope. These attributes are called *control attributes* in this documentation. They all start with an underscore (`_`): for example, `_attr`, `_index`, and `_value` are control attributes.
