Version 25 (modified by archibald, 8 years ago) (diff)

--

(1) Namespaces

We need to create name spaces.

Namespaces are

  • commonly structured as hierarchies to allow reuse of names in different contexts.
  • typically employed for the purpose of grouping symbols and identifiers around a particular functionality and to avoid name collisions between multiple identifiers that share the same name.
  • hierarchical, ie sets of namespaces can be nested within another namespace

To store namespaces we need a structure similar to that detailed below ... explaination of the notation

Namespace DATA DEFINITION ( .tdx )

NAMESPACE $project:tdx - $system:lang    // however $project is implied and not really needed

  SINGLETON design
    namespace ourNameSpaces = NEW namespace("system")

    SYNTAX
      textualDesignClause := ( designClause )+;
      designClause := namespaceClause ( designComponentClause )+;
      designComponentClause := ... ;

  CLASS namespace(ubyte$ name)
    namespace{} subSpaces
    
    namespace(namespace) addNamespace(newNameSpace) =
    {
      subSpaces->add(newNameSpace)
      RETURN newNameSpace
    }

    SYNTAX
        namespaceClause := "NAMESPACE" newNameSpaceClause ( "-" ( existingNameClause )+ );
        newNameSpaceClause := ( "$" ident ( ":" ident )* | ident ( ":" ident )+ );
        existingNameClause := ( "$" ident ( ":" ident )* | ident ( ":" ident )+ );

Namespace DATA DEFINITION ( .vdx )

INFORMATION MODEL

PROCEDURAL MODEL

(2) Types

(3) Enums

(4) Signals

(5) Singletons

(6) Classes

Attachments