[mono-vb] VB.NET Compiler - Regarding

Jambunathan K Jambunathan K <kjambunathan.devel@gmail.com>
Wed, 5 Jan 2005 17:29:42 +0530

Hello All

As you might be knowing, I had been contributing to mono's VB.NET
compiler for a brief period of time (in my capacity as an employee of

Now that I am no more bound with Novell, I am one among the whole lot
of you involved with Mono.

Over the Christmas week, during some spare time, I had been spending
some time building a VB.NET compiler out from the then mcs-HEAD. I am
calling this new mcs derivative as bmcs ('a pun on gmcs').

I have essentially replaced C#'s tokenizer and parser (cs-tokenizer.cs
& cs-parser.jay) with the mbas' tokenizer and parser (mb-tokenizer.cs
& mb-tokenizer.jay) and I have got to a point where I can compile some
simple, but not so trivial 'VB.NET programs'. I plan to evolve the
current C# core towards a VB.NET core by liberally borrowing from the
curent mbas code.

Here are e a few strong reasons why I indulged in such an experiment:

The current mbas code branched off from mcs sometime in 2001-2002.
This essentially leaves the "compiler core" as an alpha quality one.
Also two years is too much of a time that the code bases have diverged

As I see, during the last two years, the VB.NET compiler code has
essentially evolved on two fronts: 1) Merging patches or features from
the mcs core which was added to mcs since the mbas fork 2) Introducing
VB.NET specific semantics.

With the new approach 1) the effort spent on (1) gets reduced
significantly 2) The trees could be get in sync so that pulling in
partial classes or generics supoort in feature would be relatively a
simple task. 3) It opens up possibility of a single mammoth code base
that can be built to either C# compiler (mcs/gmcs) or VB.NET compiler
(bmcs). Or atleast it will show up avenues for building a reusable
code emission library from the current compiler for building new .NET
langauge compilers.

I would be spending some time pampering this new beast. It is going to
be essentially a night job and develop in bits and pieces.

If the community sees a value in this experiment and (IS interested in
co-operatuing with me) I am willing to get in a new subdir mcs/bmcs in
to svn.

Otherwise I can privately nurture my efforts and release it to the
community once it is a sufficiently evolved.

I invite views from the community. (I would be particularly happy to
hear from anyone who is willing to co-opearte with this effort of

With best wishes for the new year 2005,
Jambunathan K.