Skip to main content

Brainfuck interpreter in python.

Project description

Brainfucky is a brainfuck interpreter written in python.

About Brainfuck

Brainfuck is an esoteric programming language. The language has only 8 symbols, each performing certain functions, see below.

+

Increment the value of current cell by 1.

-

Decrement the value of current cell by 1.

>

Move the current cell pointer to right, increment the pointer by 1.

<

Move the current cell pointer to left, decrement the pointer by 1.

.

Print the ascii character corresponding to the value of current cell.

,

Take an ascii input from user, and store its ascii value in current cell

[

if the byte at the data pointer is zero, then instead of moving the instruction pointer forward to the next command, jump it forward to the command after the matching ] command.

]

if the byte at the data pointer is nonzero, then instead of moving the instruction pointer forward to the next command, jump it back to the command after the matching [ command.

About Implementation

  • The memory element, the tape is emulated using the python list.

  • Value of ith element in the list corresponds to the value of cell i.

  • A cell pointer is used to point towards the current cell.

  • + and - increments the value of cell pointed by the cell pointer.

  • > and < increments and decrements the cell pointer effectively, moving the tape right or left.

  • Instructions in a block are executed and at the end of the execution of last instruction, value of current cell is checked, if it is 0, move on, else execute the block again.

Install

$ pip install brainfucky

Run

To run your brainfuck program do the following

$ brainfucky --file examples/hello_world.bf
executing file examples/hello_world.bf
Hello World!

$ brainfucky --file examples/triangle.bf
executing file examples/triangle.bf
                               *
                              * *
                             *   *
                            * * * *
                           *       *
                          * *     * *
                         *   *   *   *
                        * * * * * * * *
                       *               *
                      * *             * *
                     *   *           *   *
                    * * * *         * * * *
                   *       *       *       *
                  * *     * *     * *     * *
                 *   *   *   *   *   *   *   *
                * * * * * * * * * * * * * * * *
               *                               *
              * *                             * *
             *   *                           *   *
            * * * *                         * * * *
           *       *                       *       *
          * *     * *                     * *     * *
         *   *   *   *                   *   *   *   *
        * * * * * * * *                 * * * * * * * *
       *               *               *               *
      * *             * *             * *             * *
     *   *           *   *           *   *           *   *
    * * * *         * * * *         * * * *         * * * *
   *       *       *       *       *       *       *       *
  * *     * *     * *     * *     * *     * *     * *     * *
 *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

brainfucky-0.1.dev1.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

brainfucky-0.1.dev1-py2.py3-none-any.whl (6.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file brainfucky-0.1.dev1.tar.gz.

File metadata

File hashes

Hashes for brainfucky-0.1.dev1.tar.gz
Algorithm Hash digest
SHA256 9f2404d4fa257a9c667016086751c6e19ed5357f9c596ff448a438f9f816bc1a
MD5 c3b13827d15cb4b7d36259045f311d95
BLAKE2b-256 2678588f4a254a5267a7d64938cba7f2691cf656f0d31c314760cac78dca67bd

See more details on using hashes here.

File details

Details for the file brainfucky-0.1.dev1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for brainfucky-0.1.dev1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 bcdcad3c6bca3890adde204b18bf7927855f55eb48caea972080ce470a61657a
MD5 b72d065d1ce8716acc387454829b2994
BLAKE2b-256 95a56ac16ee906f6d099a3921d1a2dd10b3485ccd93ff8750b7c239e2d2557a0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page