# A The Used Notation

This appendix describes the notation used to specify the syntax of the Gump specification language as an extension of the Oz language. It is an extended Backus-Naur-Formalism built from the following parts:

- terminals and nonterminals are enclosed in angle brackets <...>;

- the left side is separated from the right side by either ::= or +=, where += adds productions to an existing nonterminal;

- the vertical bar separates alternatives;

- square brackets denote optional phrases;

- curly braces enclose phrases that may be repeated 0 to n times;

- curly braces with a suffixed + enclose phrases that may be repeated 1 to n times;

- literal strings are typeset in `this way`.

## A.1 Elements from the Oz Syntax

Lexical Conventions

Since the tool's specification language is embedded into Oz, the same lexical conventions apply as for Oz. The only additional terminal type is <regex>, described in Section 2.2.1.

Terminals

The following named terminals from the Oz syntax are used:

<atom>

  stands for an Oz atom (quoted or not).

<variable>

  denotes an Oz variable (backquoted or not).

<atom label>

  is an Oz atom that is immediately followed by a left parenthesis.

<variable label>

  is an Oz variable that is immediately followed by a left parenthesis.

See ``The Oz Notation'' for the exact definitions.

Nonterminals

Furthermore, the following nonterminals from the Oz syntax are used:

<statement>

  is an Oz statement.

<expression>

  is an Oz expression.

<in statement>

  is an Oz statement with optional preceding variable declaration.

<in expression>

  is an Oz expression with optional preceding variable declaration.

<class descriptor>

  stands for a class descriptor, i. e., one of `from`, `prop`, `attr` or `feat`.

<method>

  stands for a `meth` ...`end` definition.

See ``The Oz Notation'' for the exact definitions.