Update README.md

This commit is contained in:
Marvin Kaiser
2020-03-10 11:04:03 +01:00
parent e05ca07d23
commit f288d5585f

View File

@@ -5,11 +5,10 @@ This is the project for Klang - the Kaiser language.
This code was in equal parts developed by `Dennis Kaiser` and `Marvin Kaiser` at the RheinMain University of Applied Sciences for the Compilers course. This code was in equal parts developed by `Dennis Kaiser` and `Marvin Kaiser` at the RheinMain University of Applied Sciences for the Compilers course.
# Usage # Usage
Pass source code via stdin
example call to print help `java -cp target/klang-1.0-jar-with-dependencies.jar de.hsrm.compiler.Klang.Klang -h` example call to print help `java -cp target/klang-1.0-jar-with-dependencies.jar de.hsrm.compiler.Klang.Klang -h`
example call: `java -cp <jar> <cp> -out <input> <output>`
Arguments: Arguments:
- -out <file> File to write to
- -h Print this help - -h Print this help
- --evaluate: Evaluates the given source code - --evaluate: Evaluates the given source code
- --pretty: Pretty print the given source code - --pretty: Pretty print the given source code
@@ -23,8 +22,47 @@ The makefile can be used to perform various functions more easily:
- `make pretty` prettifies code.k and writes to pretty.k - `make pretty` prettifies code.k and writes to pretty.k
- `make eval` evaluates code.k - `make eval` evaluates code.k
- `make test` runs tests from src/test/ - `make test` runs tests from src/test/
- `make testJava` runs JUnit tests
- `make cleanTests` cleans files generated from tests - `make cleanTests` cleans files generated from tests
# Boilerplate Example
A simple program in the KLang Language consits of some struct definitions and some function definition and a single expression that is used as the start for the compilation
```
struct node {
value: int;
tail: node;
}
function makeList(anz: int): node {
if (anz == 0) {
return naught;
}
return create node(anz - 1, makeList(anz - 1));
}
function get(ll: node, index: int): int {
if (index == 0 || ll == naught) {
return ll.value;
} else {
return get(ll.tail, index - 1);
}
}
function sum(list: node, length: int): int {
if (length == 0) {
return list.value;
}
return list.value + sum(list.tail, length -1);
}
function init(pos: int): int {
let n: node = makeList(5);
return sum(n, pos);
}
init(0);
```
# Functionality # Functionality
The KLang compiler supports generation of AMD64 assembly code, as well as prettifying and evaluating the KLang code. The KLang compiler supports generation of AMD64 assembly code, as well as prettifying and evaluating the KLang code.
@@ -44,9 +82,9 @@ The following simple expressions are supported. Expressions need to be put in pa
### Examples: ### Examples:
``` ```
(5 + 4) 5 + 4
(8 % 2) 8 % 2
(8 == 0) 8 == 0
``` ```
## Functions ## Functions