* MCS: The Ximian C# compiler
- MCS began as an experiment to learn the features of C# by
- writing a large C# program. MCS is currently able to parse C#
- programs and create an internal tree representation of the
- program. MCS can parse itself.
+ MCS is currently able to compile small C# programs (there is
+ a test suite included that you can use).
+
+ All type, field, method, delegates definitions are now emitted
+ and the body of constructors and methods is being generated
+ for a subset of the language. Although MCS can parse itself,
+ it cant not yet compile itself. Most statements are generated
+ correctly and about 80% of the C# expressions are supported.
Work is progressing quickly on various fronts in the C#
- compiler. Recently I started using the System.Reflection API
- to load system type definitions and avoid self-population of
- types in the compiler and dropped my internal Type
- representation in favor of using the CLI's System.Type.
+ compiler.
+
+ A test suite is being built currently to track the progress of
+ the compiler.
** Phases of the compiler
have to postpone this decision until the above steps
are finished.
- * Code generation: nothing done so far, but I do not
- expect this to be hard, as I will just use
- System.Reflection.Emit to generate the code.
-
+ * Code generation: The code generation is done through
+ the System.Reflection.Emit API.
+
</ul>
<a name="tasks">
Simple tasks:
<ul>
- * Array declarations are currently being ignored,
-
* PInvoke declarations are not supported.
- * Pre-processing is not supported.
-
- * Attribute declarations and passing currently ignored.
+ * Extern declarations are missing.
- * Compiler does not pass around line/col information from tokenizer for error reporting.
+ * Pre-processing is not supported.
* Jay does not work correctly with `error'
productions, making parser errors hard to point. It
would be best to port the Bison-To-Java compiler to
- become Bison-to-C# compiler (bjepson@oreilly.com
- might have more information)
+ become Bison-to-C# compiler.
+
+ Nick Drochak has started a project on SourceForge for this.
+ You can find the project at: <a href="http://sourceforge.net/projects/jb2csharp/">
+ http://sourceforge.net/projects/jb2csharp/</a>
+ </ul>
+
+ Larger tasks:
+
+ <ul>
+ * Implement constant expression evaluator.
+
+ * Implement constant declarations.
</ul>
Interesting and Fun hacks to the compiler:
<ul>
* Finishing the JB port from Java to C#. If you are
- interested in working on this, please contact Brian
- Jepson (bjepson at oreilly d-o-t com).
+ interested in working on this, please contact the project admin on SourceForge:
+ <a href="http://sourceforge.net/projects/jb2csharp/">
+ http://sourceforge.net/projects/jb2csharp/</a>
More on JB at: <a href="http://www.cs.colorado.edu/~dennis/software/jb.html">
http://www.cs.colorado.edu/~dennis/software/jb.html</a>
features of C# that help reduce the number of bugs
in applications. It is one interesting hack.
- * TypeRefManager. This exists currently in its infancy only.
-
- * Enum resolutions: it is another fun hack, as enums can be defined
- in terms of themselves (<tt>enum X { a = b + 1, b = 5 }</tt>).
-
</ul>
** Questions and Answers
A: The JIT engine and runtime engine will be able to execute CIL
executables generated on Windows.
-
You might also want to look at the <a href="faq.html#gcc">GCC</a>
section on the main FAQ