{"id":25345708,"url":"https://github.com/jibstack64/brainfuckpp","last_synced_at":"2025-04-08T16:26:40.326Z","repository":{"id":233504112,"uuid":"787325752","full_name":"jibstack64/brainfuckpp","owner":"jibstack64","description":"brainfuck++","archived":false,"fork":false,"pushed_at":"2024-04-17T08:05:03.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T12:55:28.637Z","etag":null,"topics":["brainfuck","interpreter","upgrade"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jibstack64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-16T10:05:27.000Z","updated_at":"2024-04-16T10:06:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa1d8b32-4e4f-4e39-8c96-0b65eaa12ae9","html_url":"https://github.com/jibstack64/brainfuckpp","commit_stats":null,"previous_names":["jibstack64/brainfuckpp"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fbrainfuckpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fbrainfuckpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fbrainfuckpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fbrainfuckpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jibstack64","download_url":"https://codeload.github.com/jibstack64/brainfuckpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247880323,"owners_count":21011637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brainfuck","interpreter","upgrade"],"created_at":"2025-02-14T12:50:21.869Z","updated_at":"2025-04-08T16:26:40.314Z","avatar_url":"https://github.com/jibstack64.png","language":"C","readme":"# brainfuck++\n\n![GitHub Release](https://img.shields.io/github/v/release/jibstack64/brainfuckpp)\n\nAn extension of the `brainfuck` programming language.\n\n## Usage\n\nReleases of both the compiler and interpreter can be found on the Releases page.\n\n### Compiler\n\nThe `brainfuck++` compiler essentially packages the interpreter with your code so that you do not have to distribute the two separately.\n\nIt is written in Python and such you must have Python (3.10\u003e) installed to use it.\n\n`python compiler.py \"+++\u003e\u003e+...`\n\n### Interpreter\n\nThe interpreter parses `brainfuck`/`brainfuck++` code and runs it.\n\n`./brainfuck++ \"+++\u003e\u003e+...`\n\n## Logic\n\n### Changes\n\nIn regular `brainfuck`, the size of the array that you operate within is 30kb, where each cell is a single byte. In `brainfuck++`, the array has been made 2-dimensional - each cell is 8 bytes to allow for a wider range of numbers and the \"width\" and \"height\" of the array is 255 cells.\n\n### Operators\n\n#### Comments\nAny text wrapped in `#`s is ignored by the interpreter.\n\n#### Movement\n- `\u003e` move the x pointer right.\n- `\u003c` move the x pointer left.\n- `^` move the y pointer up.\n- `v` move the y pointer down.\n\n#### Loops\n- `[...]` runs the code within the square brackets until the value of the current cell is 0. In C this would look like:\n    ```c\n    while (*current_cell != 0)\n        run(code);\n    ```\n- `(...)` essentially the same as `[]`, but instead of waiting for the current cell to be 0, it binds to the cell the loop is constructed at and decrements one from it every loop. Again, a simple C representation:\n    ```c\n    long *bound = current_cell;\n    while (*bound != 0) {\n        run(code);\n        (*bound)--;\n    }\n    ```\nIf the value of the bound cell is under 0, then its value will be *incremented* until 0 is reached.\n\n#### I/O\n- `.` prints the value of the current cell.\n- `~` prints the value of every cell on the current x line.\n- `|` prints the value of every cell across the current y line.\n- `,` gets a character from the user and stores it in the current cell.\n\n#### Memory\nA separate cell is allocated for storing temporary memory. `$` sets the value of the memory to that of the current cell. Using `$` when the value stored within the memory is not 0 sets the value of the current cell to that of the memory and resets the memory to 0.\n\n#### Functions\n`{...}` defines a function. There are 10 function slots - each function can be called by its identifier (`0-9`).\nOnce 10 functions have been defined, trying to create a new one generates errors. A basic example:\n```bf\n{++++++++++} # Function '0', adds 10 to current cell. #\n0\n. # Should print a '\\n' as '\\n' = 0. #\n```\n\n#### Maths\n- `+` increments the value of the current cell by 1.\n- `-` decrements the value of the current cell by 1.\n- `*` doubles the value of the current cell.\n- `/` halves the value of the current cell.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjibstack64%2Fbrainfuckpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjibstack64%2Fbrainfuckpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjibstack64%2Fbrainfuckpp/lists"}