All Projects → sn99 → brainhug

sn99 / brainhug

Licence: MIT License
A simple brainfuck translator crate in Rust

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language
haskell
3896 projects
HTML
75241 projects
shell
77523 projects
go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to brainhug

uwuscript
World's first uwu-oriented language.
Stars: ✭ 75 (+435.71%)
Mutual labels:  brainfuck
exrs
100% Safe Rust OpenEXR file library
Stars: ✭ 79 (+464.29%)
Mutual labels:  crate
rathilang
A small gift for someone who did big things (Python Package)
Stars: ✭ 14 (+0%)
Mutual labels:  brainfuck
yams
YAMS: Awesome MIPS Server
Stars: ✭ 17 (+21.43%)
Mutual labels:  brainfuck
bfloader
🧠 Brainfuck IDE and interpreter in 512 bytes. (boot sector)
Stars: ✭ 41 (+192.86%)
Mutual labels:  brainfuck
pipe-trait
Make it possible to chain regular functions
Stars: ✭ 22 (+57.14%)
Mutual labels:  crate
asmbf
The only true brainfuck-targetting assembler.
Stars: ✭ 81 (+478.57%)
Mutual labels:  brainfuck
Headache
Programming Language that compiles to 8 Bit Brainfuck
Stars: ✭ 59 (+321.43%)
Mutual labels:  brainfuck
emuStudio
Universal emulation platform and framework.
Stars: ✭ 28 (+100%)
Mutual labels:  brainfuck
brainfuck
Brainfuck interpreter companion to the brain programming language
Stars: ✭ 32 (+128.57%)
Mutual labels:  brainfuck
brainfuck-game-engine
A brainfuck game engine -- because life wasn't hard enough before
Stars: ✭ 22 (+57.14%)
Mutual labels:  brainfuck
twitch-irc-rs
Twitch IRC library for the Rust programming language
Stars: ✭ 58 (+314.29%)
Mutual labels:  crate
libsodium-sys-stable
Sodiumoxide's libsodium-sys crate, but that installs stable versions of libsodium.
Stars: ✭ 16 (+14.29%)
Mutual labels:  crate
flufflepuff
Fluffle Puff Programming Language
Stars: ✭ 23 (+64.29%)
Mutual labels:  brainfuck
bfpy
Python to Brainfuck transpiler
Stars: ✭ 39 (+178.57%)
Mutual labels:  brainfuck
png pong
A pure Rust PNG image decoder and encoder based on lodepng.
Stars: ✭ 21 (+50%)
Mutual labels:  crate
worker-kv
Rust bindings to Cloudflare Worker KV Stores
Stars: ✭ 36 (+157.14%)
Mutual labels:  crate
Brainfuck
A flexible Brainfuck / Brainloller / Braincopter interpreter in Swift 3.1.
Stars: ✭ 13 (-7.14%)
Mutual labels:  brainfuck
BrainfuckIDE
A Brainfuck IDE/debugger designed to be intuitive, featureful and visually appealing
Stars: ✭ 77 (+450%)
Mutual labels:  brainfuck
cargo-esr
Extended Search & Ranking tool for crates.
Stars: ✭ 23 (+64.29%)
Mutual labels:  crate

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 :

  • C
  • C++
  • C#
  • Python
  • Golang
  • Haskell
  • Lua
  • JavaScript

Why the name brainhug ?

Inspired from link

Usage

Add this to your Cargo.toml:

[dependencies]
brainhug = "*"

and this to your crate root:

extern crate brainhug;
use brainhug::Lang;

Contributing

Read contributing for Details

Example

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

#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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].