Home PageDownload our ProgramsContact UsSee the Site MapGo to the Users Forum
Vedi in ItalianoSee in English
DC3 Compiler - InterpreterDC3 Compiler - Interpreter (for developers)
Version 1.0 for All Windows Platforms
DC3 Compiler - Interpreter
  DC3 is a complete but limited (because I've neither the time nor the will to enhance it) VB like compiler/interpreter that can be used for learning how to create a complete and fully functional compiler. It comes with its complete source code in Visual Basic 6.
It compiles simple VB like programs and creates a byte code executed by a Virtual Machine, like Java and .NET languages.
DC3 Compiler version 1.0
Freeware

Source Code (300 Kb)
Features

You can find some features by watching directly the BNF definition file.

it supports:
- only simple VB types like string, integer (hexadecimal, octal), float, boolean
- global and local variables
- functions and subs
- operators like +,-,*,/,\,imp,eqv,xor,or,and,not,>=,<=,>,<,<>,=,&,mod,^ with the VB6 precedence 
order.
- the 'if' and 'while' statements
- VB functions like 'print', 'msgbox', 'clng', 'cstr', 'inputbox', 'rnd', 'exit'
- recursion

Differences from VB6
- operators like +=,-=,*=,/=,++,--
- variable declaration with direct assignment
- operators only work with the same types (use conversions functions like clng, cstr to switch types)
- parenthesis is always required when calling functions or subs

The language

DC3 language is very similar to VB script; variables have no type and the type is implicit. It 
recognizes some internal functions: print, msgbox, inputbox, clng, cstr, exit, rnd
You can define variables, functions, variables in the order you want and the compiler is not case 
sensitive.

dim a="",b,c=&h10

You have declared a string variable 'a', a generic variable 'b' and a numeric variable 'c'.

sub message(a)
    msgbox (a)
end sub
message ("bye bye!")

this small program shows a message box with the "bye bye!" string.

function sum(a,b)
    sum=a+b
end function
msgbox (sum(10,10)+sum(20,20))

msgbox (sum("a","b"))

this program returns 60 -> 10+10+20+20 and "ab" --> "a" + "b"

dim a="hello "
msgbox (a+"world")

this sample shows "hello world" on the screen

dim a=10
a++
msgbox (a)

this sample returns 11

sub writenum(n)
    if n>0 then
        writenum(n-1)
    end if
    print(n)
end sub
writenum(10)

this program writes 0,1,2,3,4,5,6,7,8,9,10 to the console using recursion.

dim s
s=inputbox ("Write your name")
msgbox ("Your name is  " + s)

this program writes your name

dim a=0,c=0
while (a<10)
    c+=a
    a++
wend
msgbox (c)

this program repeat a sum for 10 times returning 45 as result
Home | Products | Contacts | Site Map | Forum | Purchase | Partners | Search

Copyright © 2003-08 by Lorenzi Davide. All rights reserved. Part. IVA IT03553990239
Download Dynamic HTML Editor