cyclang-parser 0.1.19

Cyclang is a toy language built in LLVM.
Documentation
# Cyclang

A programming language I built in Rust - mainly for fun and my own learning! Uses PEG Parser in Rust for parsing and LLVM (llvm-sys) as the backend to compile to machine code binary. Check the [user guide](https://lyledean1.github.io/cyclang/overview.html) for a detailed overview of the language.

Try the Fibonacci example in `/examples/fib.cyc`

```rust
fn fib(i32 n) -> i32 {
    if (n < 2) {
        return n;
    }
    return fib(n - 1) + fib(n - 2);
}
print(fib(20));
```

You will need [Rust](https://www.rust-lang.org/tools/install) installed to run the below command.

```
cyclang --file ./examples/fib.cyc
```

This should output `6765`! 

##  Installing and Running 

You will need LLVM 17 installed before you install cyclang, 

For MacOS run the following command

```
brew install llvm@17
```

For Ubuntu install the following packages

```
  llvm-17 
  llvm-17-tools 
  llvm-17-dev 
  clang-17 
  libpolly-17-dev
```

And run `make set-llvm-sys-ffi-workaround`

Then the easiest way to install the binary currently is through the Rust package manager Cargo - see [Install Rust](https://www.rust-lang.org/tools/install). Once the step above is done, then run 
```
cargo install cyclang
```

See the [book](https://lyledean1.github.io/cyclang/setup.html) for a more detailed guide on setup.