Skip to content

esovm/BFFuck

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BFFuck

Makes brainfucking easier

The tools is an esoteric language that compiles to brainfuck, using algorithms in brainfuck algorithms.

Usage:

Run this in Python:

from bffuck import BFFuck
bff=BFFuck()
bf=bff.compile('Your code')

Note that if a BFFuck object is created and used, its status will change and therefore cannot compile another program.

Syntax

BFFuck currently supports the following syntax:

Comment:

# Comment

Variable definition:

<variable 1>=<variable 2>
or
<variable>=<number>

Addition:

add(x,<number>)
or
add(x,<variable>)

Subtraction:

sub(x,<number>)
or
sub(x,<variable>)

Multiplication:

mul(x,<number>)
or
mul(x,<variable>)

Modulo:

mod(x,<number>)
or
mod(x,<variable>)

While loop:

while(<variable or number>)
CODE
endwhile

I/O:

<variable>=in # Reads <variable> as decimal integer
<variable>=inc # Reads <variable> as ASCII character
out(<variable or number>) # Outputs <variable> as decimal integer
outc(<variable or number>) # Outputs <variable> as ASCII character

String output shortcut:

print(STRING) # Without quotes
# For instance
print(Hello World!)

If statement:

if(<variable or number>)
CODE
endif

if(<variable or number>)
CODE1
else
CODE2
endif

Comparison:

lt(x,<number>) # Compares x and the variable or number, if x is less than the variable or number, set x to 1, otherwise 0
or
lt(x,<variable>)

eq(x,<number>) # Compares x and the variable or number, if x is equal to the variable or number, set x to 1, otherwise 0
or
eq(x,<variable>)

Platform

BFFuck is in pure Python and therefore it supports any platform.

Constraints

Programs compiled from BFFuck needs you to have 8 bit cells that wrap.

Disadvantages

BFFuck currently has these disadvantages:

  1. It's numbers are 8 bit numbers.
  2. It has some bugs.

The repository contains some examples, including a Hello World program, a cat program and an A+B program.