Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yurafx/pyfuck
Интерпретатор языка Brainfuck, написанный на Python.
https://github.com/yurafx/pyfuck
Last synced: about 1 month ago
JSON representation
Интерпретатор языка Brainfuck, написанный на Python.
- Host: GitHub
- URL: https://github.com/yurafx/pyfuck
- Owner: YuraFX
- License: gpl-3.0
- Created: 2023-11-27T13:07:01.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-02T08:49:39.000Z (about 1 year ago)
- Last Synced: 2023-12-02T13:33:09.674Z (about 1 year ago)
- Language: Python
- Size: 1.26 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Интерпретатор языка Brainfuck
![donate](images/donation_alerts.png) [Финансовая поддержка](https://www.donationalerts.com/r/yura_fx)
## Вступление
Сидел я тут как-то вечером и думал, что можно такое интересное написать на Python’е и тут я вспомнил, что когда-то давно, ещё на C#,
пытался написать интерпретатор какого-нибудь простого языка, того же BASIC например, но особо ничего не получалось. В момент этих попыток
я наткнулся на такой язык, как [Brainfuck](https://ru.wikipedia.org/wiki/Brainfuck) – по истине мозговыносящий эзотерический язык программирования (нестандартный язык, который
создаётся с целью развлечения или исследования особенностей программирования. Он обычно имеет необычный синтаксис и принципы работы,
что делает его сложным для понимания и использования в реальных проектах). Я начал смотреть видеоролики, просматривал статью на Википедии,
чтобы понять, что это за язык и с чем его едят)) Итогом этого стало написание интерпретатора, который я назвал Pyfuck. Как-то так)## О самом интерпретаторе
Интерпретатор имеет память под 30.000 однобайтовых ячеек с нулевыми начальными значениями (всё, как в оригинальном Brainfuck).
Имеется указатель текущей ячейки памяти и результирующая строка.
Интерпретатор также имеет функцию сохранения и загрузки написанной программы в формате `.bf`.
Важное примечание: Путём сохранения и открытия написанных программ является папка с exe-шником интерпретатора.
Он имеет все 8 команд Brainfuck:
|Команда |Описание |
|--------|---------------------------------------------------|
|`>` |Следующая ячейка |
|`<` |Предыдущая ячейка |
|`+` |Значение текущей ячейки увеличивает на 1 |
|`-` |Значение текущей ячейки уменьшают на 1 |
|`.` |Напечатать значение из текущей ячейки |
|`,` |Ввести извне значение и сохранить в текущей ячейке |
|`[` |Начало цикла |
|`]` |Конец цикла |### Как составляется программа?
Тут всё довольно интересно) Для составления программ удобно использовать таблицу символов ASCII:
![ASCII](images/ASCII_table.jpg)
Мы должны обратить внимание на Decimal (это число, которое соответствует определённому символу. Это десятичное
представление числа символа в таблице ASCII. Например, символ «A» имеет значение 65 в ASCII). В Brainfuck это
будет выглядеть, как 65 команд «+».Вот пример программы, печатающая «Hello World!»:
```++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.>++++++++++++++++++++++++++++++++.<------------------------.++++++++++++++++++++++++.+++.------.--------.>+.```![hello](images/program_result.png)
## Варианты установки
* [Скачать](https://github.com/YuraFX/pyfuck/releases/tag/1.0) ![windows](images/windows.png)Windows-версию в релизах.
* Офлайн установка на ![haiku](images/haiku.png)[Haiku R1/beta 4](https://www.haiku-os.org/) (проверено на [Oracle VM VirtualBox](https://www.virtualbox.org/) 5.2.44):
- Переходим в Deskbar -> Приложения -> Терминал
- Проверяем версию Python:
```python3 --version``` (в версии R1/beta 4 предустановлен Python 3.9.14)- Затем вставляем [диск](https://github.com/YuraFX/pyfuck/blob/main/ISO/pyfuck.iso) с pyfuck
- Копируем содержимое диска на Рабочий стол
- Возвращаемся к Терминалу и вводим команду: ```cd /boot/home/Desktop/pyfuck```
- И наконец вводим команду для запуска файла main.py: ```python3 main.py```
Результат:
![test](images/pyfuck_haiku_test.png)* Офлайн установка на ![linux](images/bodhi_linux.png)[Bodhi Linux](https://www.bodhilinux.com/) 5.1.0 (проверено на [Oracle VM VirtualBox](https://www.virtualbox.org/) 5.2.44):
- Открываем Терминал
- Проверяем версию Python: ```python3 --version``` (в версии 5.1.0 предустановлен Python 3.6.9)
- Затем вставляем [диск](https://github.com/YuraFX/pyfuck/blob/main/ISO/pyfuck.iso) с pyfuck
- Копируем содержимое диска в Places -> Desktop
- Возвращаемся к Терминалу и вводим команду: ```cd Desktop/pyfuck```
- И наконец вводим команду для запуска файла main.py: ```python3 main.py```Результат:
![linux_test](images/pyfuck_linux_test.png.png)## О лицензии
Это [свободная программа](https://www.gnu.org/philosophy/free-sw.html): вы можете перераспространять ее и/или изменять ее на
условиях [Стандартной общественной лицензии GNU](https://www.gnu.org/licenses/gpl-3.0.html) в том виде,
в каком она была опубликована [Фондом свободного программного обеспечения](https://www.fsf.org/); либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.Эта программа распространяется в надежде, что она будет полезной, но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии
ТОВАРНОГО ВИДА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Стандартной общественной лицензии GNU.Вы должны были получить [копию](https://github.com/YuraFX/pyfuck/blob/main/LICENSE) Стандартной общественной лицензии GNU вместе с этой программой. Если это не так, см. .