The abstract syntax is central to the definition of a formal language. It stands between the concrete representations of documents, such as marks on paper or images on screens, and the abstract entities, semantic relations, and semantic functions used for defining their meaning.
The abstract syntax has the following objectives:
The abstract syntax is presented as a set of production rules in which each entity is defined in terms of its constituent parts. The productions form a context-free grammar. The notation X*, X+, X? indicates the repetition of X any number of times, at least once, and at most once, respectively. The context conditions for well-formedness of specifications are not determined by the grammar (these are to be defined separately).
For each of the entities defined in the abstract syntax, there will eventually be a subsection in the reference manual describing its representation and meaning. To obtain a clear relationship with the concrete representation, the constructors used to distinguish the alternatives may later be replaced by more suggestive symbols. The order in which components of constructs are currently listed does not necessarily correspond to that to be used in the concrete representation.
The current emphasis of the abstract syntax is on documenting the individual constructs, and on fixing terminology. The internal organization of the abstract syntax will almost certainly need adjusting before it is optimal for use in connection with semantics or tools. Note that an abstract syntax is provided for the entire language, not just for a semantic kernel (but the semantics of constructs that are essentially just abbreviations or `syntactic sugar' may still be defined by expansion).