Action semantics aim to be pragmatic, and action-semantic descriptions (ASDs) are designed to scale up to handle realistic programming languages.
This is in contrast to the typical case when extending denotational or operational semantics, which may require reformulation of the entire description.
The central semantic entity in this framework is actions, with data and yielders occupying supplementary roles.
Transient information corresponds to intermediate results and is accessible for immediate use by the action.
[1] Stable information corresponds to values assigned to variables and can be modified in the action performance.
The basic facet, an example of which would be control flows, is not tied to information of any kind.
The functional facet deals with the processing of transient information and is characterized by actions giving and accepting data.
The declarative facet deals with the processing of scoped information and is characterized by actions creating and receiving bindings.
The imperative facet deals with the processing of stable information and is characterized by actions allocating and freeing storage cells, and fetching and modifying the data stored in them.
The communicative facet deals with processing permanent information and is characterized by actions sending and receiving messages and “offer[ing] contracts to agents.”[2] There are two different kinds of actions in terms of their effect on the information in each facet.
Examples of data entities can include concrete elements like maps, lists, sets, strings, characters, numbers, and truth values, more abstract elements used solely for the purpose of some computational operation, namely data access, like agents, cells corresponding to memory locations, and tokens, or elements like contracts and messages that are a composite of data components.
Yielders draw on transient data, bindings, and storage to select the information to be processed by actions.
Action notation is designed to simulate natural language, which is illustrated in the parts of speech used to denote semantic entities.