The project is in an early stage and is not ready for practical usage.
The runtime is almost ready. Objects and types work as expected, operators work and objects can be invoked as well.
In the runtime is also present a Garbage Collector. I also expect to implement a cache for objects, in order to ease the weight on both processor and RAM.
Math expressions are addressed in the Statement Parser.
The statement parser is currently undergoing thinking process and is being structured.
It will support variable, function and type declarations as well as math expressions and operations between constants.
The project is divided into three main sections:
Section | Working Status |
---|---|
Runtime | 📍 Milestone 2 |
Statement Parser | ⚒️ Work in Progress |
Parser | ⌚ Planned |
This is currently the only options to try out the runtime.
First install these dependencies:
Dependency | Required | Link |
---|---|---|
build-essentials | YES | |
gcc, g++ compilers | YES | |
VS Code | NO | here |
make | YES | |
git | NO |
Next, build one of the tests as follows:
make tests/<test name>
For instance, consider the test named "union" under tests/union.cpp, I'd run it like this:
make tests/union
and that's it
Here are some code samples I've been desingin for a while now:
message: string = "Hello, World!";
main(args: [string]): void {
sys.println("message:", message);
}
The output to this code should be:
message: Hello, World!
-> console;
main(args: [string]): void {
console.writeln("Hello!");
}
The ->
symbol works as an import
keyword
<- test;
^fn(): string {
return "Hello!";
}
^variable: Const<integer> = 5;
The symbol <-
is used to declare the export name of a certain module.
The prefix ^
exports the related object.
Please feel free to report issues and post PRs if anything looks off to you, and don't hesitate contacting me if you want to contribute to the project at any time.