[Mono-list] Current state of MonoBasic (mBas)

Marco Ridoni marco.ridoni@virgilio.it
Sat, 1 Feb 2003 14:29:31 +0100

In the last few weeks I added several features to mBas. While several things
(actually just a few) are still missing and horrid bugs are likely to lay
dormant in the code, just waiting to be awakened and unleashed on anybody
daring to test the compiler, mBas is at a level of being almost useable (not
bad as a mix of a disclaimer and an understament, huh? :-) )

Type declaration : ok
Classes and Modules can be declared
Classes can inherit from other classes or Interfaces
Methods, Properties, Events, Fields work
Methods support ByRef and Optional parameters
Properties support parameters, accessors, etc.
Constructors work and are correctly called
Interfaces : ok
Delegates : ok
Attributes : ok
Events : ok (only 1 of the 2 possible forms of event declaration, for now)
Structures: ok
Operators: math operators, concat operator (&), relational operators work
Namespaces : ok
Arrays: so-so (they basically work, but need a lot of fixes and tidying up)
Local variables: ok (for now they cannot be declared in the middle of a
block, but it's just a grammar thing)
Try..Catch and Exceptions : ok
AddHandler : ok
Cast functions (CType, CStr, CBool, CInt, etc.) : ok

Still Missing:
All Date functions
Many string functions (Mid, Left, etc.)
On Error
Like operator
Stop, End
Option <whatever>
For Each
Code to automatically add implicit conversions between different types (with
support from the runtime)

Present but not working correctly:
Exit (works like 'break' in C#; you can't specify 'Exit Do' or 'Exit For'
even if the grammar does not complain about it)

Moreover there are a few quirks in the grammar which need to be solved (e.g.
calls like MySub(p)(0), where p is a parameter and MySub returns an array)

Rafael added parsing for all the command-line options that were missing. We
need to write code to enforce and use them.

A couple of notes:
If is something is listed under 'Working', it doesn't mean it's perfect: a
lot (actually the most part) of mBas code is built directly upon mcs; this
means that some assumptions we make cannot be verified until more severe
tests are carried on. The problem is that VB.NET is not part of the ECMA
specification, so we don't have even a semi-official test suite. Scode to be
used as a test-bed and regression test is probably needed at this point.
If something is missing from this list, it doesn't mean it hasn't been
implemented, I'm likely to have forgotten to explicitly put it there (or
maybe to put it in the grammar :-) )

All the best and happy coding

Marco Ridoni