Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gsingh93/lang

An imperative programming language written in Rust
https://github.com/gsingh93/lang

Last synced: 8 days ago
JSON representation

An imperative programming language written in Rust

Awesome Lists containing this project

README

        

# lang (to be renamed)

`lang` is a C-like programming language designed for the purpose of learning about compiler construction. Examples can be found in the `examples` folder.

## Usage

```
$ cargo run -- -h

Usage: target/debug/lang [options]

Options:
-h --help print this help menu
-t --type TYPE output type (llvm (default), asm, or obj)
-o --output FILE output file name
```

Note that the compiler doesn't automatically link object files (yet), so after generating an object file with the `-t` flag, you can link by running `gcc` on the object file.

## Features

`lang` supports basic variable assignment, function calls, conditionals, loops, arithmetic, and relational operations. The three main types are `int` (a signed 32-bit integer), `string` (a null terminated string), and `bool`. `lang` also supports calling C functions as long as the necessary types are supported.

### In progress features

- Semantic analysis currently reports errors without reporting the location of the error, this will be fixed
- Add floating point and unsigned integer types of different widths
- Allow function definitions in any order
- Scope (currently everything inside a function is in the same scope)
- Arrays
- For loops (only while loops are supported at the moment)
- Allow parenthesis in expressions

### Long term features

- Dynamic memory
- Optional garbage collections
- Algebraic data types and pattern matching