Skip to content

Compiler / Interpreter for the Golem programming language

License

Notifications You must be signed in to change notification settings

alexander-koch/golem

Repository files navigation

Golem

Golem is a statically typed, object-oriented programming language.

Example

using core

func fib(n: int) -> int {
	if n < 2 {
		return n
	}
	return fib(n-2) + fib(n-1)
}

let t0 = clock()
let mut i = 0
while i < 5 {
	println(fib(28))
	i := i + 1
}
let elapsed = clock() - t0
println("Elapsed: $elapsed")

Features

  • Easily readable and learnable
  • Normal object-oriented features (classes, method calls, etc.)
  • Immutablitiy of everything by default
  • Explicit mutable declaration
  • Statically, strong-typed
  • Automatic type inference
  • NULL is not possible to create or use
  • Option types
  • Fast, garbage collected bytecode VM

Installing

Golem is written in C99, and has been tested to run on Linux and Windows. A Makefile is used to build the compiler.

$ make
$ golem your/file/here.gs

Use make DEBUG=1 to generate the debugger. To generate the immediate representation tool, run make ir. More features can be enabled/disabled in the Makefile.

Info

For more information about the syntax see Syntax. This project was used in the german science competition "Jugend forscht" 2016.

Licence

Licensed under GNU GPLv3. Copyright (c) Alexander Koch 2017

About

Compiler / Interpreter for the Golem programming language

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published