brainhug

Build Status 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 = "0.2.1"

and this to your crate root:

rust extern crate brainhug; use brainhug::Lang;

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;
++*ptr;
++*ptr;
++*ptr;
++*ptr;
++*ptr;
++*ptr;
++*ptr;
while (*ptr) {
    ++ptr;
    ++*ptr;
    ++*ptr;
    ++*ptr;
    ++*ptr;
    while (*ptr) {
        ++ptr;
        ++*ptr;
        ++*ptr;
        ++ptr;
        ++*ptr;
        ++*ptr;
        ++*ptr;
        ++ptr;
        ++*ptr;
        ++*ptr;
        ++*ptr;
        ++ptr;
        ++*ptr;
        --ptr;
        --ptr;
        --ptr;
        --ptr;
        --*ptr;
    }
    ++ptr;
    ++*ptr;
    ++ptr;
    ++*ptr;
    ++ptr;
    --*ptr;
    ++ptr;
    ++ptr;
    ++*ptr;
    while (*ptr) {
        --ptr;
    }
    --ptr;
    --*ptr;
}
++ptr;
++ptr;
putchar(*ptr);
++ptr;
--*ptr;
--*ptr;
--*ptr;
putchar(*ptr);
++*ptr;
++*ptr;
++*ptr;
++*ptr;
++*ptr;
++*ptr;
++*ptr;
putchar(*ptr);
putchar(*ptr);
++*ptr;
++*ptr;
++*ptr;
putchar(*ptr);
++ptr;
++ptr;
putchar(*ptr);
--ptr;
--*ptr;
putchar(*ptr);
--ptr;
putchar(*ptr);
++*ptr;
++*ptr;
++*ptr;
putchar(*ptr);
--*ptr;
--*ptr;
--*ptr;
--*ptr;
--*ptr;
--*ptr;
putchar(*ptr);
--*ptr;
--*ptr;
--*ptr;
--*ptr;
--*ptr;
--*ptr;
--*ptr;
--*ptr;
putchar(*ptr);
++ptr;
++ptr;
++*ptr;
putchar(*ptr);
++ptr;
++*ptr;
++*ptr;
putchar(*ptr);

} ```

License

Licensed under