Skip to content

HellOwhatAs/brainfuck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BrainFuck compiler using Rust proc macro

More precisely, the BrainFuck-to-Rust transpiler using Rust proc macro

Crates.io License: MIT docs.rs

Installation

Cargo.toml

[dependencies]
bflib = "0.1.9"

Examples:

use bflib::brain_fuck;
  1. Hello World (run on dropping)
    brain_fuck!(
                [>    [>  >   >   > <<<<-]> > >->> [<]<-]>>.
        >---.       ..   .>>.<-.<.   .------.--------.>> .>  .
    );
  2. using into method to obtain (pc: usize, mem: Vec<u8>) after running (run on into calling)
    let (pc, mem) = brain_fuck!(
                [> >    <<-]>  >> <[-[>> <<-] >>]> [
            -<<<[
                ->[ [-] >  >>>-<<]<[<]>>      [<<     >>-] <<  .[-]<<
            ]>.> [>>]> 
        ]
    ).into();
    println!("{:?}", (pc, mem));
  3. use env method to set Program Counter pc and Memory mem for brainfuck codeblock (run on dropping)
    brain_fuck!(
        [.>]
    ).env(0, vec![79, 75, 10]);
  4. Altogether (run on into calling)
    let (pc, mem) = brain_fuck!(
        [.>]
    ).env(0, vec![72, 101, 108, 108, 79, 119, 104, 97, 116, 65, 115, 10]).into();
    println!("{:?}", (pc, mem));

About

the BrainFuck-to-Rust transpiler using Rust proc macro

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages