Namespaces in lestes

Each namespace resides in a directory of its own, unless stated otherwise.

There are two main namespaces in project lestes:

For declaring namespaces use package(name); and end_package(name);.

  1. namespace build;
  2. namespace lestes;

The entire suggested tree so far:

  1. namespace build; Things used in building the compiler.
    1. namespace config; Configuration. Generated by "configure".
  2. namespace lestes; The compiler proper.
    1. namespace std; Standard part of the compiler -- algorithms and data structures usable everywhere.
      1. namespace mem_mgmt; Memory management.
        1. namespace gc; Garbage collector.
      2. namespace messages;* Subsystem for sending messages to objects.
      3. namespace graph; Representation of graphs.
        1. namespace algo; Graph algorithms. DFS (and DFS preorder/postorder iterator); BFS (and iterators); Dijkstra; Topological ordering; Vishv Mohan Malhotra, M. Pramodh Kumar, S. N. Maheshvari -- O(|V|^3) algorithm ((aka. 3 Indians)); Dinic; Floyd-Warshal; Kruskal; Graph coloring; ...
      4. namespace tree; Representation of trees. B+-trees, Red-Black-trees, parse trees...
      5. namespace algo; Generic (templatized) algorithms. Bucket sort, Radix sort, Heap sort, and the like...
    2. namespace generic;** Routines and structures for language independent passes (eg. generation of intercode from standardized set of high-level intercode). This could contain tree-wise optimizations like CSE (in sub namespace, of course).
    3. namespace lang;
      1. namespace cplus; Parts specific for C++ (ANSI/ISO/IEC 14882:1998)
        1. namespace preproc; The preprocessor.
        2. namespace syn; The syntactic analysis.
          1. namespace cplussyn; The syntactic analyzer itself (bison). This does not comprise a separate directory.
        3. namespace lex; The lexical analysis.
          1. namespace cpluslex; The lexical analyzer itself (flex). This does not comprise a separate directory.
        4. namespace sem; The semantical analysis.
          1. namespace tab; The tables.
      2. namespace cee; The same as namespace cplus; except for C (ANSI/ISO/IEC 9899:1999)
      3. namespace simula67;*** The same as namespace cplus; except for Simula 67
      4. namespace algol60;*** The same as namespace cplus; except for Algol 60
      5. namespace ada;*** The same as namespace cplus; except for Ada
    4. namespace debug; Routines and structures for debugging information.
      1. namespace dwarf3; Dwarf 3 debugging information.
      2. namespace stabs; Stabs debugging information. (see “info stabs”)
    5. namespace opt;** **** Intermediate code optimizations.
    6. namespace intercode;**** Intermediate code specific code.
    7. namespace codegen; Machine code generator.
      1. namespace reg_alloc; Register allocation.
      2. namespace insn_sel; Instruction selection.
      3. namespace sched; Scheduler.

The algorithms mentioned are examples only. It is likely, that many of them will not be needed, while other not mentioned will.


* Maybe not necessary.

** Needs reformulation.

*** No need to bother with. (for future expansion only)

**** Further elaboration needed.