Hexagora RSS Feed
Keep in touch with us:
See in English Vedi in Italiano
DC3 Compiler - Interpreter DC3 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
Download Dynamic HTML Editor
Home | Products | Contacts | Forum | Site Map | Purchase | Partners | Search | Privacy
Copyright © 2002-12 by Lorenzi Davide. All rights reserved. Part. IVA IT03553990239