10 个版本 (6 个重大更新)

0.7.0 2022 年 9 月 12 日
0.6.1 2021 年 4 月 19 日
0.6.0 2020 年 9 月 16 日
0.5.0 2020 年 2 月 18 日
0.2.2 2019 年 2 月 19 日

#50 in 模拟器

每月 26 次下载

MIT 许可证

46KB
938

brainhug

Build Status Build status Crates.io Download crate Documentation

brainhug 是一个用于将 brainfuck 代码解释为其他任何语言的 crate

当前支持的编程语言包括

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

为什么叫 brainhug?

灵感来源于 链接

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
brainhug = "*"

并添加到您的 crate 根目录

extern crate brainhug;

use brainhug::Lang;

贡献

阅读 贡献指南 获取详细信息

示例

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));
}

它将生成

#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);
}

许可证

许可协议

无运行时依赖