{"id":21652138,"url":"https://github.com/andcool-systems/brainfuck","last_synced_at":"2025-03-20T04:07:40.625Z","repository":{"id":188286986,"uuid":"678455381","full_name":"Andcool-Systems/brainfuck","owner":"Andcool-Systems","description":"Brainfuck language python interpreter","archived":false,"fork":false,"pushed_at":"2025-01-05T10:19:02.000Z","size":53,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-25T05:43:53.372Z","etag":null,"topics":["brainfuck-interpreter","interpreter","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Andcool-Systems.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-08-14T15:38:08.000Z","updated_at":"2025-01-05T10:19:05.000Z","dependencies_parsed_at":"2024-05-12T17:47:04.111Z","dependency_job_id":"5fcaf0a4-bb49-45be-a790-926f6edbefd3","html_url":"https://github.com/Andcool-Systems/brainfuck","commit_stats":null,"previous_names":["andcoolsystems7/brainfuck","andcool-systems/brainfuck"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andcool-Systems%2Fbrainfuck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andcool-Systems%2Fbrainfuck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andcool-Systems%2Fbrainfuck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andcool-Systems%2Fbrainfuck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Andcool-Systems","download_url":"https://codeload.github.com/Andcool-Systems/brainfuck/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244547604,"owners_count":20470103,"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","interpreter","python3"],"created_at":"2024-11-25T07:51:22.323Z","updated_at":"2025-03-20T04:07:40.605Z","avatar_url":"https://github.com/Andcool-Systems.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python BrainFuckA interpreter\n[![wakatime](https://wakatime.com/badge/user/391a38bf-e366-4a08-8107-7e6a23ad440a/project/b974b541-44fa-4d2d-b985-85a73db7f627.svg)](https://wakatime.com/badge/user/391a38bf-e366-4a08-8107-7e6a23ad440a/project/b974b541-44fa-4d2d-b985-85a73db7f627)\n\u003cbr\u003eИнтерпретатор языка BrainFuckA, написанный на языке Python.\n\u003cbr\u003eBrainFuckA - это brainfuck-подобный язык программирования с дополнениями для удобства (см. список команд).\n\u003cbr\u003eКод, написанный на оригинальном BrainFuck так же будет корректно работать.\n\n## Использование\nДля запуска вам не нужны сторонние модули, что бы запустить .bf скрипт просто выполните в консоли следующую команду:\n```bash\npython interpreter.py main.bf\n```\n\nДля запуска уже собранного интерпретатора просто укажите имя файла интерпретатора, а после имя файла со скриптом BrainFuckA:\n\n- В Windows:\n```bash\n./interpreter.exe main.bf\n```\n\n- В Linux/Unix:\n```bash\n./interpreter main.bf\n```\n\n\u003e Если вы видите ошибку `permission denied: ./interpreter` при запуске в Linux, то назначьте файл исполняемым командой `sudo chmod +x interpreter`\n\nПосле названия скрипта интерпретатора идёт название файла со скриптом brainfuck.\nПоддерживаемые расширения файлов: \n- .bf \n- .b\n\n\u003cbr\u003eПосле имени файла, в команде запуска скрипта, можно указать параметр `format`, тогда исходный файл со скриптом будет перезаписан на отформатированный скрипт.\n## Параметры интерпретатора\nПосле первого запуска скрипта в папке с интерпретатором создастся файл **params.json**, открыв его Вы сможете найти в нём следующие параметры:\n\n|Параметр        |Значение по умолчанию          |Возможные значения | Описание|\n|----------------|-------------------------------|-------------------|---------|\n|`memorySize`    |30.000            \t\t\t |Любое числовое значение. |Количество ячеек памяти, выделенных под программу    |\n|`memoryManagement` |OFF            |`OFF`/`AUTO`/`JUMP` | `OFF` — строгое выделение памяти, при вводе некорректного индекса ячейки вызывает ошибку.\u003cbr\u003e `AUTO` — 1 ячейка по умолчанию, при использовании оператора `\u003e` при несуществующем индексе ячейки памяти добавляется новая со значением, равным 0.\u003cbr\u003e `JUMP` — При выборе ячейки памяти менее 0 или более выделенного размера происходит перенос выбора ячейки с нулевой на последнюю, с последней на нулевую.\n|`type`       |CLASSIC                          |`CLASSIC`/`ADVANCED`|`CLASSIC` — Классический интерпретатор, имеет размер ячеек 8 бит может быть переполнен.\u003cbr\u003e`ADVANCED` — Стандартный размер переменных Python, не может быть переполнен.\n\n\u003e В режиме управления памятью AUTO, параметр memorySize отвечает за ограничение размера выделяемой памяти, ограничение можно отключить, установив параметр в значение -1\n## Cписок команд\n|Оператор| Описание|\n|-- |--|\n|+  |Прибавление единицы к текущей ячейке на 1|\n|\\- |Уменьшение значения текущей ячейки на 1|\n|\u003e  |Сдвиг выбранной ячейки вправо|\n|\u003c  |Сдвиг выбранной ячейки влево|\n|.\t|Вывести значение текущей ячейки в кодировке ASCII(может быть применён декоратор `*`, см. ниже)|\n|,  |Ввести числовое значение в текущую ячейку (может быть применён декоратор `*`, см. ниже)|\n|[  |Начать цикл, пока значение текущей ячейки не равно нулю|\n|]  |Конец цикла (см. выше)|\n|GH |Создать портал с именем `H` (имена по аналогии)|\n|gH |Перейти к порталу с именем `H` и продолжить выполнение после него|\n|c  |Копировать значение из текущей ячейки|\n|p  |Вставить ранее скопированное значение в текущую ячейку|\n|'  |Напечатать символ табуляции|\n|\"  |Напечатать символ переноса строки|\n|#  |Комментарий, пример: `#Это комментарий!#`|\n|0  |Обнуление текущей ячейки|\n\n\u003cbr\u003eДекоратор `*` применяется к операторам `.` и `,` для изменения типа ввода, ставиться перед нужным оператором, примеры: `*. *,`.\n\u003cbr\u003eПри применении декоратора к оператору `.` он начинает выводить сырые значения из ячейки (то-есть числовое значение), в ином случае выводит символ, соответствующий таблице ASCII.\n\u003cbr\u003eПри применении декоратора к оператору `,` будет происходить конвертация введённого символа в код ASCII, иначе происходит ввод сырого числового значения, без конвертации.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandcool-systems%2Fbrainfuck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandcool-systems%2Fbrainfuck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandcool-systems%2Fbrainfuck/lists"}