44 lines
1.1 KiB
Markdown
44 lines
1.1 KiB
Markdown
## Monna Programming Language
|
|
This project is a result of learning the innards of compilers. Among other compiler books that I learned from, this was the most influential, especially in making this project: [Writing an Interpreter In Go](https://interpreterbook.com/).
|
|
|
|
![Demo of Monna working](/doc/demo.png)
|
|
|
|
### Using
|
|
To use the Monna interpreter, simply run `go run main.go` in the project directory.To get an executable, run `go build` in the project directory.
|
|
|
|
### Features
|
|
#### Variables:
|
|
let x = 5;
|
|
|
|
#### Return Statements:
|
|
return 5;
|
|
return false;
|
|
|
|
#### Expressions:
|
|
if (x < y) { x }
|
|
|
|
if (x > y) { y } else { x }
|
|
|
|
#### Functions:
|
|
fn(x, y) { x + y; }
|
|
|
|
#### String Literals:
|
|
"Hello World"
|
|
|
|
#### Built-in Functions:
|
|
- **len()**: Returns the number of characters in a string.
|
|
```
|
|
len("Dexter's Laboratory");
|
|
19
|
|
```
|
|
- **puts()**: Prints the given arguments to STDOUT. It return a null. It only cares about printing not returning a value.
|
|
```
|
|
puts("Sugar, spice, and everything nice!");
|
|
Sugar, spice, and everything nice!
|
|
|
|
```
|
|
|
|
#### Error Handling:
|
|
The Monna programming language also responds accordingly to errors:
|
|
![Error Handling](/doc/error_handling.png)
|