[[TOC]][[BackLinksMenu]] = Namespaces = We need to create name spaces.[[BR]][[BR]] 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 ... [wiki:NotationExplaination explaination of the notation] == DATA DEFINITION == {{{ NAMESPACE $project:tdx - $system:lang // however $project is implied and not really needed SINGLETON design namespace ourNameSpaces = NEW namespace("system") CLASS namespace(ubyte$ name) namespace{} subSpaces namespace(namespace) addNamespace(newNameSpace) = { subSpaces->add(newNameSpace) RETURN newNameSpace } }}} == SYNTAX DEFINITION == {{{#!div style="background: #ffd; border: 3px ridge" namespaceClause := "NAMESPACE" newNameSpaceClause { "-" { existingNameSpaceClause }+ }; newNameSpaceClause := { "$" ident { ":" ident }* | ident { ":" ident }* }; existingNameSpaceClause := { "$" ident { ":" ident }* | ident { ":" ident }* }; }}}