Blue
A managed C#
compiler written in C#.
By Mike Stall
(http://blogs.msdn.com/jmstall )
Feb 4, 2005
------------------------
Blue is a C# compiler written
entirely in C# using the .NET. It tagets the V1.0/v1.1
runtimes. The current version does not yet support v2.0 (and is actually
very confused when it tries to import generics in v2.0 mscorlib).
It uses Reflection-emit to produce
the IL.
Blue is primarily a sample of
reflection-emit and not intended as a production compiler.
*** Usage ***
You can build Blue.exe via the
following command line:
csc /out:blue.exe @blue_source_core
build_all.bat will build Blue.exe from CSC.exe,
and then
turn around and use blue.exe to compile
itself to produce dogfood.exe
Use blue /? for
usage details.
*** Help ***
bluehelp.xml is the xml-help produced by the
/doc csc option.
BlueHelp.chm is a compiled version
of bluehelp.xml using the NDoc
utility. These help files mostly document
implementation details.
NDoc is available at http://ndoc.sourceforge.net/
Use blue /? for
usage details.
*** Missing features ***
Blue is reasonably complete (it can
compile itself), but is
still missing some features. This is a
partial list of missing features:
- Custom attributes
- unsafe
code
- checked/unchecked,
locked keyword, using keyword
- floating point, decimal types.
- Multi dimensional arrays. (note that it can handle jagged arrays)
- Some operator overloading. (Allows
binary operators like + to
be overloaded, doesn't yet handle
overloaded type casts, unary ops, or ++/--.)
- Still may assert when compiling an
illegal program.
To see further limitations, look at
which command line parameters are
present in CSC but missing in Blue.