brainhug

Build Status Build status Dependabot Status Crates.io Download crate Documentation

brainhug is a crate that is used to interpret brainf*ck code to any other language

Current languages covered are :

Why the name brainhug ?

Inspired from link

Usage

Add this to your Cargo.toml:

toml [dependencies] brainhug = "*"

and this to your crate root:

rust extern crate brainhug; use brainhug::Lang;

Contributing

Read contributing for Details

Example

```rust extern crate brainhug; use brainhug::Lang;

fn main() { // will print Hello World! let input = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.";

// `brainhug::generate` will generate a `String`
println!("{}", brainhug::generate(Lang::C, input));

} ```

It will produce

```c

include "stdio.h"

int main() { char tape[20000] = {0}; char ptr = tape; *ptr += 8; while (ptr) { ptr += 1; ptr += 4; while (ptr) { ptr += 1; ptr += 2; ptr += 1; *ptr += 3; ptr += 1; *ptr += 3; ptr += 1; *ptr += 1; ptr -= 4; *ptr -= 1; } ptr += 1; *ptr += 1; ptr += 1; *ptr += 1; ptr += 1; *ptr -= 1; ptr += 2; *ptr += 1; while (ptr) { ptr -= 1; } ptr -= 1; ptr -= 1; } ptr += 2; putchar(ptr); ptr += 1; ptr -= 3; putchar(ptr); ptr += 7; putchar(ptr); putchar(ptr); *ptr += 3; putchar(ptr); ptr += 2; putchar(ptr); ptr -= 1; *ptr -= 1; putchar(ptr); ptr -= 1; putchar(ptr); *ptr += 3; putchar(ptr); ptr -= 6; putchar(ptr); ptr -= 8; putchar(ptr); ptr += 2; ptr += 1; putchar(ptr); ptr += 1; ptr += 2; putchar(ptr); } ```

License

Licensed under