Merge branch 'master' of git://github.com/mono/mono
[mono.git] / web / mbas
1 * mbas: Mono's VisualBasic.NET Compiler.\r
2 \r
3         MonoBASIC (mbas) is a CIL compiler for the VisualBasic.NET language, \r
4         an extended version of Visual Basic. It's based on the MCS compiler\r
5         and still in heavy development, though many language features are\r
6         already supported. See mcs/mbas/\r
7 \r
8 ** What works\r
9 \r
10         <ul>\r
11 \r
12                 * Classes, Fields and Methods. Properties are still\r
13                   being worked on.\r
14 \r
15                 * Module definition and Sub/Function functionality\r
16 \r
17                 * Namespace Import, so can you reference, instantiate\r
18                   and call external assemblies\r
19 \r
20                 * Parameter passing between Sub's. ByVal and ByRef\r
21                   parameters are being worked on.\r
22 \r
23                 * Delegates\r
24 \r
25                 * Object creation\r
26 \r
27                 * Events - to a limited extent. You can declare a\r
28                   Class-Field as 'WithEvents' and dynamic events (i.e\r
29                   AddHandler MyButton.Click, Button1_OnClick).  Please\r
30                   beware: just after committing the code, I discovered\r
31                   that the handler field in the AddHandler call is\r
32                   case-sensitive, a remnant of mBas' mcs heritage)\r
33 \r
34                 * Statements supported are 'If..Then..Else' ,\r
35                   'While..End While' and assignment statements. Simple\r
36                   operators (+, -, *, /, >, <, =) should also\r
37                   work. Other statements (For..Next, etc.) should be\r
38                   quite trivial to implement.\r
39         </ul>\r
40         \r
41         A lot of this stuff is implemented rebuilding proper expressions and \r
42         statements on top of the classes based on those of mcs (look at the grammar - \r
43         mb-parser.jay - and compare it with cs-parser.jay, if interested), but some \r
44         are getting deeply changed, to better conform to VB.NET semantics.\r
45         \r
46 ** TODO-list\r
47 \r
48         At this stage almost every element of the language must be still checked for \r
49         conformance to MS' implementation. \r
50         We'd like to implement the missing statements, exception handling, \r
51         structures and actual event support (not necessarily in this order). Once we \r
52         have all this stuff set up and reasonably bug-free, more work could be done \r
53         on helper functions and Object-vars handling.\r
54 \r
55         Also work on the supporting library (we don't currently depend on it as much\r
56         as MS vbc-compiled programs, but especially for late-binding scenarios we will)\r
57         is surely needed: it's in mcs/class/Microsoft.VisualBasic/\r