====== Access types ====== ===== Definitions ===== ==== access_type_definition ==== ''access [[.:bnf#subtype_indication]]'' By declaring an access type an access type is declared which can later be used for declaring an index variable. ==== incomplete_type_declaration ==== ''type [[.:bnf#identifier]]'' By giving an incomplete type declaration it is possible to model recursive structures. The complete type declaration has to be made in the same declarative range. ===== Examples ===== Access types //address// and //buffer_ptr// are declared. //memory// and //buffer// are target //types// . TYPE address IS ACCESS memory ; TYPE buffer_ptr IS ACCESS buffer ; ---- A recursive structure is created. At first type //cell// is declared incompletely. As a consequence the access type //link// is declared on the type //cell// . Afterwards type //cell// is declared completely as Record. The elements //succ// and //pred// are declared as index types. By doing so an interlinked list can be created in which every element receives an index to both its predecessor and its successor. TYPE cell ; TYPE link IS ACCESS cell ; TYPE cell IS RECORD value : integer ; succ : link ; pred : link ; END RECORD ;