logo

About the grinj

"The grinj" started as a project at the FHSG in switzerland, a school for IT-engineers. The main goal was to produce a new computer language with a compiler, a virtual machine and a graphical IDE.

Our main intention was it to give other developers that want to implement their own language/VM/IDE some code that can be used as base for their own work - or, at last, to give some ideas how some of the problems can be solved. We think that our documentation is good enough to give starters some ideas. We would have been happy if we could have find something like this ;) .

The compiler was built with the common-known tool Coco/R.
Right now, the language itself is able to deal with integers, boolean values and strings. All common constructs as declaration of variables, arithmetics, in- and output, loops, comparisons, methods etc. are included.
The compiler writes the program into a special binary file that can be read and executed by our virtual machine.

The VM has an internal debugger and can execute the code as well as set breakpoints, start and continue the execution, show the content of the stack etc. . The debugger and the VM itself can be accessed via socket-interface and its own protocol.

Compiler and VM have been written in C++; the GUI for the IDE has been written in JAVA with the inclusion of eclipse-code. The GUI is not implemented as Eclipse-Plugin but as a stand-alone-application. It communicates with the compiler via CLI and with the VM via network-sockets.

All code has been written on linux- and OSX-machines. The client wanted the software to run on windows - this is no problem, too. Our software can be compiled and executed on every POSIX-system.

Since the initial release 1.0 that has only been available to our teachers at the FH, we have implemented a variable-type "device" and a driver-system that allows us to load a given device-driver into a running app. This helps us to use the grinj as a small, expandable system to control our robot-hardware in the labs. There are already some drivers for timing, random numbers and network, but it is possible to write very quickly new ones for console-IO as well as interfaces to the hardware and the guest OS, ie. serial interfaces, advanced networking etc. .

the grinj.

the GRinj Is Not Java...