The version written in XL has been bootstrapped around November 2003, and
new development is now being made in XL. This
is a dirty bootstrap, but it is
a practical solution to the severe resource constraints this project
has to live with. The status of this compiler is shown below:
| Bootstrap library |
Basic runtime functions needed by bootstrap compilers (very crude) |
Done |
| Scanner |
Scan input text and generate XL tokens |
Done |
| Scanner |
Scannner configuration file (xl.syntax) |
Done |
| Parser |
Generate a parse tree from a stream of tokens |
Done |
| Dirty Bootstrap |
Transform the parse tree into C++ for
bootstrap purpose. |
Done |
| Translation |
General mechanisms for translating XL trees. |
Done |
| Named symbols |
Storing and retrieving XL declarations by name. |
Done |
| Tree symbols |
Storing and retrieving XL trees by shape. |
Done |
| Compiler symbols |
Storing and retrieving compiler-private information in symbol tables |
Done |
| Type system |
Type system, comparing types, entering types in the symbol table. |
Done |
| Bytecode interface |
Interface used to generate "low-level" code (bytecode). |
Done |
| Declarations |
Entering declarations in the symbol table. |
Done |
| Functions semantics |
Performing basic semantics on functions. |
Done |
| Default arguments |
Default arguments for functions. |
Done |
| Overloading |
Overload resolution for function calls. |
Done |
| Expression reduction |
Rewriting expression trees to function calls |
Done |
| Basic statements |
Core XL statements (if, while, loop, etc) |
Done |
| Automatic type deduction |
Deducing the type of a variable from the initialization in code
like K : variable := 0
| Done |
| For loops |
Extensible for loops, where for Iterator loop Body expands
the Iterator expression according to written form rules |
Done |
| Enumerations and sets |
Enumerations and sets ("flags") |
To-Do |
| Generic declarations |
Parameterized types and functions |
Done |
| Implicit generics |
Functions using generic types in arguments become themselves generic. |
Done |
| Generic specialization |
Specialization of generics for specific instances of the generic |
To-Do |
| Generic written forms |
Written forms to denote generic types |
Done |
| Compile-time variadics |
Compile-time, type-safe variable argument lists. |
Done |
| Case statements |
Extensible case statement. |
Done |
| Pragmas |
Compile-time instructions for the compiler. |
Done |
| Plug-in architecture |
Compiler plug-ins to deal with
language extensions. |
Done |
| Preprocessor |
Preprocessor based on tree rewrite rules. |
Done |
| Library |
XL runtime library. |
In progress |
| Basic operators |
XL basic operators (arithmetic, bitwise, bitshifts, etc). |
Done |
| Object model |
XL default object models (classes,
dynamic dispatch, memory management) |
To-Do |
| Error handling |
XL default error handling mechanisms. |
To-Do |
| Generic algorithms |
XL basic STL-style algorithms (sorting, finding, iterating). |
To-Do |
| Generic containers |
XL basic STL-style containers (arrays, strings, maps, sets). |
To-Do |
| Math libraries |
XL basic numeric algorithms (matrix and
complex arithmetic, transcendental). |
To-Do |
| Text libraries |
XL basic text manipulation library. |
To-Do |
| Binary I/O |
XL basic binary I/O library. |
To-Do |
| Text I/O |
XL basic text I/O library. |
In progress |
| Final Bootstrap |
Final bootstrap of the compiler, where the compiler generates
low-level code that does not rely on C++ semantics ("not dirty" bootstrap). |
To-Do |