brainhug
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
:
[dependencies]
brainhug = "0.2.1"
and this to your crate root:
extern crate brainhug;
use brainhug::Lang;
Example
extern crate brainhug;
use brainhug::Lang;
fn main() {
let input = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.";
println!("{}", brainhug::generate(Lang::C, input));
}
It will produce
#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